Pruned defunct and unused contributions from Huawei

Change-Id: I8f1c611682e0f282bc41eb7a4ff4ff23b91a48e5
diff --git a/apps/cip/BUILD b/apps/cip/BUILD
deleted file mode 100644
index 2e5780e..0000000
--- a/apps/cip/BUILD
+++ /dev/null
@@ -1,10 +0,0 @@
-osgi_jar_with_tests(
-    deps = CORE_DEPS,
-)
-
-onos_app(
-    category = "Utility",
-    description = "ONOS Cluster IP alias application.",
-    title = "Cluster IP Alias",
-    url = "http://onosproject.org",
-)
diff --git a/apps/cip/src/main/java/org/onosproject/cip/ClusterIpManager.java b/apps/cip/src/main/java/org/onosproject/cip/ClusterIpManager.java
deleted file mode 100644
index fd8bb40..0000000
--- a/apps/cip/src/main/java/org/onosproject/cip/ClusterIpManager.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.cip;
-
-import com.google.common.io.ByteStreams;
-import org.onosproject.cfg.ComponentConfigService;
-import org.onosproject.cluster.ClusterService;
-import org.onosproject.cluster.LeadershipEvent;
-import org.onosproject.cluster.LeadershipEventListener;
-import org.onosproject.cluster.LeadershipService;
-import org.onosproject.cluster.NodeId;
-import org.osgi.service.component.ComponentContext;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Modified;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.Dictionary;
-import java.util.Objects;
-import java.util.Properties;
-
-import static com.google.common.base.Strings.isNullOrEmpty;
-import static org.onlab.util.Tools.get;
-import static org.onosproject.cip.OsgiPropertyConstants.ALIAS_ADAPTER;
-import static org.onosproject.cip.OsgiPropertyConstants.ALIAS_ADAPTER_DEFAULT;
-import static org.onosproject.cip.OsgiPropertyConstants.ALIAS_IP;
-import static org.onosproject.cip.OsgiPropertyConstants.ALIAS_IP_DEFAULT;
-import static org.onosproject.cip.OsgiPropertyConstants.ALIAS_MASK;
-import static org.onosproject.cip.OsgiPropertyConstants.ALIAS_MASK_DEFAULT;
-
-/**
- * Manages cluster IP address alias.
- *
- * To use the application, simply install it on ONOS and then configure it
- * with the desired alias IP/mask/adapter configuration.
- *
- * If you are running it using upstart, you can also add the following
- * command to the /opt/onos/options file:
- *
- * sudo ifconfig eth0:0 down       # use the desired alias adapter
- *
- * This will make sure that if the process is killed abruptly, the IP alias
- * will be dropped upon respawn.
- */
-@Component(
-    immediate = true,
-    property = {
-        ALIAS_IP + "=" + ALIAS_IP_DEFAULT,
-        ALIAS_MASK + "=" + ALIAS_MASK_DEFAULT,
-        ALIAS_ADAPTER + "=" + ALIAS_ADAPTER_DEFAULT
-    }
-)
-public class ClusterIpManager {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private static final String CLUSTER_IP = "cluster/ip";
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected ClusterService clusterService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LeadershipService leadershipService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected ComponentConfigService cfgService;
-
-    private final LeadershipEventListener listener = new InternalLeadershipListener();
-
-    private NodeId localId;
-    private boolean wasLeader = false;
-
-    /** Alias IP address. */
-    private String aliasIp = ALIAS_IP_DEFAULT;
-
-    /** Alias IP mask. */
-    private String aliasMask = ALIAS_MASK_DEFAULT;
-
-    /** Alias IP adapter. */
-    private String aliasAdapter = ALIAS_ADAPTER_DEFAULT;
-
-    @Activate
-    protected void activate(ComponentContext context) {
-        cfgService.registerProperties(getClass());
-
-        localId = clusterService.getLocalNode().id();
-        processLeaderChange(leadershipService.getLeader(CLUSTER_IP));
-
-        leadershipService.addListener(listener);
-        leadershipService.runForLeadership(CLUSTER_IP);
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate(ComponentContext context) {
-        cfgService.unregisterProperties(getClass(), false);
-
-        removeIpAlias(aliasIp, aliasMask, aliasAdapter);
-
-        leadershipService.removeListener(listener);
-        leadershipService.withdraw(CLUSTER_IP);
-        log.info("Stopped");
-    }
-
-    @Modified
-    protected void modified(ComponentContext context) {
-        log.info("Received configuration change...");
-        Dictionary<?, ?> properties = context != null ? context.getProperties() : new Properties();
-        String newIp = get(properties, ALIAS_IP);
-        String newMask = get(properties, ALIAS_MASK);
-        String newAdapter = get(properties, ALIAS_ADAPTER);
-
-        // Process any changes in the parameters...
-        if (!Objects.equals(newIp, aliasIp) ||
-                !Objects.equals(newMask, aliasMask) ||
-                !Objects.equals(newAdapter, aliasAdapter)) {
-            synchronized (this) {
-                log.info("Reconfiguring with aliasIp={}, aliasMask={}, aliasAdapter={}, wasLeader={}",
-                         newIp, newMask, newAdapter, wasLeader);
-                if (wasLeader) {
-                    removeIpAlias(aliasIp, aliasMask, aliasAdapter);
-                    addIpAlias(newIp, newMask, newAdapter);
-                }
-                aliasIp = newIp;
-                aliasMask = newMask;
-                aliasAdapter = newAdapter;
-            }
-        }
-    }
-
-    private synchronized void processLeaderChange(NodeId newLeader) {
-        boolean isLeader = Objects.equals(newLeader, localId);
-        log.info("Processing leadership change; wasLeader={}, isLeader={}", wasLeader, isLeader);
-        if (!wasLeader && isLeader) {
-            // Gaining leadership, so setup the IP alias
-            addIpAlias(aliasIp, aliasMask, aliasAdapter);
-            wasLeader = true;
-        } else if (wasLeader && !isLeader) {
-            // Losing leadership, so drop the IP alias
-            removeIpAlias(aliasIp, aliasMask, aliasAdapter);
-            wasLeader = false;
-        }
-    }
-
-    private synchronized void addIpAlias(String ip, String mask, String adapter) {
-        if (!isNullOrEmpty(ip) && !isNullOrEmpty(mask) && !isNullOrEmpty(adapter)) {
-            log.info("Adding IP alias {}/{} to {}", ip, mask, adapter);
-            execute("sudo ifconfig " + adapter + " " + ip + " netmask " + mask + " up", false);
-            execute("sudo /usr/sbin/arping -c 1 -I " + adapter + " " + ip, true);
-        }
-    }
-
-    private synchronized void removeIpAlias(String ip, String mask, String adapter) {
-        if (!isNullOrEmpty(ip) && !isNullOrEmpty(mask) && !isNullOrEmpty(adapter)) {
-            log.info("Removing IP alias from {}", adapter, false);
-            execute("sudo ifconfig " + adapter + " down", true);
-        }
-    }
-
-    private void execute(String command, boolean ignoreCode) {
-        try {
-            log.info("Executing [{}]", command);
-            Process process = Runtime.getRuntime().exec(command);
-            byte[] output = ByteStreams.toByteArray(process.getInputStream());
-            byte[] error = ByteStreams.toByteArray(process.getErrorStream());
-            int code = process.waitFor();
-            if (code != 0 && !ignoreCode) {
-                log.info("Command failed: status={}, output={}, error={}",
-                         code, new String(output), new String(error));
-            }
-        } catch (IOException e) {
-            log.error("Unable to execute command {}", command, e);
-        } catch (InterruptedException e) {
-            log.error("Interrupted executing command {}", command, e);
-            Thread.currentThread().interrupt();
-        }
-    }
-
-    // Listens for leadership changes.
-    private class InternalLeadershipListener implements LeadershipEventListener {
-
-        @Override
-        public boolean isRelevant(LeadershipEvent event) {
-            return CLUSTER_IP.equals(event.subject().topic());
-        }
-
-        @Override
-        public void event(LeadershipEvent event) {
-             processLeaderChange(event.subject().leaderNodeId());
-        }
-    }
-
-}
diff --git a/apps/cip/src/main/java/org/onosproject/cip/OsgiPropertyConstants.java b/apps/cip/src/main/java/org/onosproject/cip/OsgiPropertyConstants.java
deleted file mode 100644
index c6bcb52..0000000
--- a/apps/cip/src/main/java/org/onosproject/cip/OsgiPropertyConstants.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2018-present Open Networking Foundation
- *
- * 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.cip;
-
-public final class OsgiPropertyConstants {
-    private OsgiPropertyConstants() {
-    }
-
-    static final String ALIAS_IP = "aliasIp";
-    static final String ALIAS_IP_DEFAULT = "";
-
-    static final String ALIAS_MASK = "aliasMask";
-    static final String ALIAS_MASK_DEFAULT = "255.255.0.0";
-
-    static final String ALIAS_ADAPTER = "aliasAdapter";
-    static final String ALIAS_ADAPTER_DEFAULT = "eth0:0";
-}
diff --git a/apps/cip/src/main/java/org/onosproject/cip/package-info.java b/apps/cip/src/main/java/org/onosproject/cip/package-info.java
deleted file mode 100644
index fbc9ae9..0000000
--- a/apps/cip/src/main/java/org/onosproject/cip/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Cluster IP Manager, which is responsible for managing the cluster IP
- * address alias.
- */
-package org.onosproject.cip;
diff --git a/apps/configsync-netconf/BUILD b/apps/configsync-netconf/BUILD
deleted file mode 100644
index 63c06c1..0000000
--- a/apps/configsync-netconf/BUILD
+++ /dev/null
@@ -1,26 +0,0 @@
-APPS = [
-    "org.onosproject.configsync",
-    "org.onosproject.yang",
-    "org.onosproject.netconf",
-]
-
-COMPILE_DEPS = CORE_DEPS + [
-    "@onos_yang_model//jar",
-    "@onos_yang_runtime//jar",
-    "//protocols/netconf/api:onos-protocols-netconf-api",
-    "//apps/config:onos-apps-config",
-    "//apps/configsync:onos-apps-configsync",
-]
-
-osgi_jar_with_tests(
-    test_deps = TEST_ADAPTERS,
-    deps = COMPILE_DEPS,
-)
-
-onos_app(
-    category = "Utility",
-    description = "Application to support the Dynamic configuration service.",
-    required_apps = APPS,
-    title = "Dynamic Configuration Synchronizer for NETCONF",
-    url = "http://onosproject.org",
-)
diff --git a/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerComponent.java b/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerComponent.java
deleted file mode 100644
index d107da7..0000000
--- a/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerComponent.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.d.config.sync.impl.netconf;
-
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.d.config.sync.DeviceConfigSynchronizationProviderRegistry;
-import org.onosproject.d.config.sync.DeviceConfigSynchronizationProviderService;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.netconf.NetconfController;
-import org.onosproject.yang.model.SchemaContextProvider;
-import org.onosproject.yang.runtime.YangRuntimeService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.annotations.Beta;
-
-/**
- * Main component of Dynamic config synchronizer for NETCONF.
- *
- * <ul>
- * <li> bootstrap Active and Passive synchronization modules
- * <li> start background anti-entropy mechanism for offline device configuration
- * </ul>
- */
-@Component(immediate = true)
-public class NetconfDeviceConfigSynchronizerComponent {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    /**
-     * NETCONF dynamic config synchronizer provider ID.
-     */
-    public static final ProviderId PID =
-            new ProviderId("netconf", "org.onosproject.d.config.sync.netconf");
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceConfigSynchronizationProviderRegistry registry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetconfController netconfController;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected YangRuntimeService yangRuntimeService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected SchemaContextProvider schemaContextProvider;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceService deviceService;
-
-    private NetconfDeviceConfigSynchronizerProvider provider;
-
-    private DeviceConfigSynchronizationProviderService providerService;
-
-
-    @Activate
-    protected void activate() {
-        provider = new NetconfDeviceConfigSynchronizerProvider(PID, new InnerNetconfContext());
-        providerService = registry.register(provider);
-
-        // TODO (Phase 2 or later)
-        //      listen to NETCONF events (new Device appeared, etc.)
-        //      for PASSIVE "state" synchronization upward
-
-        // TODO listen to DeviceEvents (Offline pre-configuration scenario)
-
-        // TODO background anti-entropy mechanism
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        registry.unregister(provider);
-        log.info("Stopped");
-    }
-
-    /**
-     * Context object to provide reference to OSGi services, etc.
-     */
-    @Beta
-    public static interface NetconfContext {
-
-        /**
-         * Returns DeviceConfigSynchronizationProviderService interface.
-         *
-         * @return DeviceConfigSynchronizationProviderService
-         */
-        DeviceConfigSynchronizationProviderService providerService();
-
-        SchemaContextProvider schemaContextProvider();
-
-        YangRuntimeService yangRuntime();
-
-        NetconfController netconfController();
-
-    }
-
-    class InnerNetconfContext implements NetconfContext {
-
-        @Override
-        public NetconfController netconfController() {
-            return netconfController;
-        }
-
-        @Override
-        public YangRuntimeService yangRuntime() {
-            return yangRuntimeService;
-        }
-
-        @Override
-        public SchemaContextProvider schemaContextProvider() {
-            return schemaContextProvider;
-        }
-
-        @Override
-        public DeviceConfigSynchronizationProviderService providerService() {
-            return providerService;
-        }
-    }
-}
diff --git a/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerProvider.java b/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerProvider.java
deleted file mode 100644
index 2ab2bbc..0000000
--- a/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerProvider.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.d.config.sync.impl.netconf;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static java.nio.charset.StandardCharsets.UTF_8;
-import static java.util.concurrent.CompletableFuture.completedFuture;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.concurrent.CompletableFuture;
-import org.onlab.util.XmlString;
-import org.onosproject.d.config.ResourceIds;
-import org.onosproject.d.config.sync.DeviceConfigSynchronizationProvider;
-import org.onosproject.d.config.sync.impl.netconf.NetconfDeviceConfigSynchronizerComponent.NetconfContext;
-import org.onosproject.d.config.sync.operation.SetRequest;
-import org.onosproject.d.config.sync.operation.SetRequest.Change;
-import org.onosproject.d.config.sync.operation.SetRequest.Change.Operation;
-import org.onosproject.d.config.sync.operation.SetResponse;
-import org.onosproject.d.config.sync.operation.SetResponse.Code;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.netconf.NetconfDevice;
-import org.onosproject.netconf.NetconfException;
-import org.onosproject.netconf.NetconfSession;
-import org.onosproject.yang.model.DataNode;
-import org.onosproject.yang.model.DefaultResourceData;
-import org.onosproject.yang.model.InnerNode;
-import org.onosproject.yang.model.ResourceData;
-import org.onosproject.yang.model.ResourceId;
-import org.onosproject.yang.runtime.AnnotatedNodeInfo;
-import org.onosproject.yang.runtime.Annotation;
-import org.onosproject.yang.runtime.CompositeData;
-import org.onosproject.yang.runtime.CompositeStream;
-import org.onosproject.yang.runtime.DefaultAnnotatedNodeInfo;
-import org.onosproject.yang.runtime.DefaultAnnotation;
-import org.onosproject.yang.runtime.DefaultCompositeData;
-import org.onosproject.yang.runtime.DefaultRuntimeContext;
-import org.onosproject.yang.runtime.RuntimeContext;
-import org.slf4j.Logger;
-import com.google.common.io.CharStreams;
-
-/**
- * Dynamic config synchronizer provider for NETCONF.
- *
- * <ul>
- * <li> Converts POJO YANG into XML.
- * <li> Adds NETCONF envelope around it.
- * <li> Send request down to the device over NETCONF
- * </ul>
- */
-public class NetconfDeviceConfigSynchronizerProvider
-        extends AbstractProvider
-        implements DeviceConfigSynchronizationProvider {
-
-    private static final Logger log = getLogger(NetconfDeviceConfigSynchronizerProvider.class);
-
-    // TODO this should probably be defined on YRT Serializer side
-    /**
-     * {@link RuntimeContext} parameter Dataformat specifying XML.
-     */
-    private static final String DATAFORMAT_XML = "xml";
-
-    private static final String XMLNS_XC = "xmlns:xc";
-    private static final String NETCONF_1_0_BASE_NAMESPACE =
-                                    "urn:ietf:params:xml:ns:netconf:base:1.0";
-
-    /**
-     * Annotation to add xc namespace declaration.
-     * {@value #XMLNS_XC}={@value #NETCONF_1_0_BASE_NAMESPACE}
-     */
-    private static final DefaultAnnotation XMLNS_XC_ANNOTATION =
-                    new DefaultAnnotation(XMLNS_XC, NETCONF_1_0_BASE_NAMESPACE);
-
-    private static final String XC_OPERATION = "xc:operation";
-
-
-    private NetconfContext context;
-
-    protected NetconfDeviceConfigSynchronizerProvider(ProviderId id,
-                                                      NetconfContext context) {
-        super(id);
-        this.context = checkNotNull(context);
-    }
-
-    @Override
-    public CompletableFuture<SetResponse> setConfiguration(DeviceId deviceId,
-                                                           SetRequest request) {
-        // sanity check and handle empty change?
-
-        // TODOs:
-        // - Construct convert request object into XML
-        // --  [FutureWork] may need to introduce behaviour for Device specific
-        //     workaround insertion
-
-        StringBuilder rpc = new StringBuilder();
-
-        // - Add NETCONF envelope
-        rpc.append("<rpc xmlns=\"").append(NETCONF_1_0_BASE_NAMESPACE).append('"')
-            .append(">");
-
-        rpc.append("<edit-config>");
-        rpc.append("<target>");
-        // TODO directly writing to running for now
-        rpc.append("<running/>");
-        rpc.append("</target>\n");
-        rpc.append("<config ")
-            .append(XMLNS_XC).append("=\"").append(NETCONF_1_0_BASE_NAMESPACE).append("\">");
-        // TODO netconf SBI should probably be adding these envelopes once
-        // netconf SBI is in better shape
-        // TODO In such case netconf sbi need to define namespace externally visible.
-        // ("xc" in above instance)
-        // to be used to add operations on config tree nodes
-
-
-        // Convert change(s) into a DataNode tree
-        for (Change change : request.changes()) {
-            log.trace("change={}", change);
-
-            // TODO switch statement can probably be removed
-            switch (change.op()) {
-            case REPLACE:
-            case UPDATE:
-            case DELETE:
-                // convert DataNode -> ResourceData
-                ResourceData data = toResourceData(change);
-
-                // build CompositeData
-                DefaultCompositeData.Builder compositeData =
-                                        DefaultCompositeData.builder();
-
-                // add ResourceData
-                compositeData.resourceData(data);
-
-                // add AnnotatedNodeInfo operation
-                compositeData.addAnnotatedNodeInfo(toAnnotatedNodeInfo(change.op(), change.path()));
-
-                RuntimeContext yrtContext = new DefaultRuntimeContext.Builder()
-                                           .setDataFormat(DATAFORMAT_XML)
-                                           .addAnnotation(XMLNS_XC_ANNOTATION)
-                                           .build();
-                CompositeData cdata = compositeData.build();
-                log.trace("CompositeData:{}", cdata);
-                CompositeStream xml = context.yangRuntime().encode(cdata,
-                                                                   yrtContext);
-                try {
-                    CharStreams.copy(new InputStreamReader(xml.resourceData(), UTF_8), rpc);
-                } catch (IOException e) {
-                    log.error("IOException thrown", e);
-                    // FIXME handle error
-                }
-                break;
-
-            default:
-                log.error("Should never reach here. {}", change);
-                break;
-            }
-        }
-
-        // - close NETCONF envelope
-        // TODO eventually these should be handled by NETCONF SBI side
-        rpc.append('\n');
-        rpc.append("</config>");
-        rpc.append("</edit-config>");
-        rpc.append("</rpc>");
-
-        // - send requests down to the device
-        NetconfSession session = getNetconfSession(deviceId);
-        if (session == null) {
-            log.error("No session available for {}", deviceId);
-            return completedFuture(SetResponse.response(request,
-                                                        Code.FAILED_PRECONDITION,
-                                                        "No session for " + deviceId));
-        }
-        try {
-            // FIXME Netconf async API is currently screwed up, need to fix
-            // NetconfSession, etc.
-            CompletableFuture<String> response = session.rpc(rpc.toString());
-            log.trace("raw request:\n{}", rpc);
-            log.trace("prettified request:\n{}", XmlString.prettifyXml(rpc));
-            return response.handle((resp, err) -> {
-                if (err == null) {
-                    log.trace("reply:\n{}", XmlString.prettifyXml(resp));
-                    // FIXME check response properly
-                    return SetResponse.ok(request);
-                } else {
-                    return SetResponse.response(request, Code.UNKNOWN, err.getMessage());
-                }
-            });
-        } catch (NetconfException e) {
-            // TODO Handle error
-            log.error("NetconfException thrown", e);
-            return completedFuture(SetResponse.response(request, Code.UNKNOWN, e.getMessage()));
-
-        }
-    }
-
-    // overridable for ease of testing
-    /**
-     * Returns a session for the specified deviceId.
-     *
-     * @param deviceId for which we wish to retrieve a session
-     * @return a NetconfSession with the specified node
-     * or null if this node does not have the session to the specified Device.
-     */
-    protected NetconfSession getNetconfSession(DeviceId deviceId) {
-        NetconfDevice device = context.netconfController().getNetconfDevice(deviceId);
-        checkNotNull(device, "The specified deviceId could not be found by the NETCONF controller.");
-        NetconfSession session = device.getSession();
-        checkNotNull(session, "A session could not be retrieved for the specified deviceId.");
-        return session;
-    }
-
-    /**
-     * Creates AnnotatedNodeInfo for {@code node}.
-     *
-     * @param op operation
-     * @param parent resourceId
-     * @param node the node
-     * @return AnnotatedNodeInfo
-     */
-    static AnnotatedNodeInfo annotatedNodeInfo(Operation op,
-                                               ResourceId parent,
-                                               DataNode node) {
-        return DefaultAnnotatedNodeInfo.builder()
-                .resourceId(ResourceIds.resourceId(parent, node))
-                .addAnnotation(toAnnotation(op))
-                .build();
-    }
-
-    /**
-     * Creates AnnotatedNodeInfo for specified resource path.
-     *
-     * @param op operation
-     * @param path resourceId
-     * @return AnnotatedNodeInfo
-     */
-    static AnnotatedNodeInfo toAnnotatedNodeInfo(Operation op,
-                                               ResourceId path) {
-        return DefaultAnnotatedNodeInfo.builder()
-                .resourceId(path)
-                .addAnnotation(toAnnotation(op))
-                .build();
-    }
-
-    /**
-     * Transform DataNode into a ResourceData.
-     *
-     * @param change object
-     * @return ResourceData
-     */
-    static ResourceData toResourceData(Change change) {
-        DefaultResourceData.Builder builder = DefaultResourceData.builder();
-        builder.resourceId(change.path());
-        if (change.op() != Change.Operation.DELETE) {
-            DataNode dataNode = change.val();
-            if (dataNode instanceof InnerNode) {
-                ((InnerNode) dataNode).childNodes().values().forEach(builder::addDataNode);
-            } else {
-                log.error("Unexpected DataNode encountered", change);
-            }
-        }
-
-        return builder.build();
-    }
-
-    static Annotation toAnnotation(Operation op) {
-        switch (op) {
-        case DELETE:
-            return new DefaultAnnotation(XC_OPERATION, "remove");
-        case REPLACE:
-            return new DefaultAnnotation(XC_OPERATION, "replace");
-        case UPDATE:
-            return new DefaultAnnotation(XC_OPERATION, "merge");
-        default:
-            throw new IllegalArgumentException("Unknown operation " + op);
-        }
-    }
-
-}
diff --git a/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/package-info.java b/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/package-info.java
deleted file mode 100644
index bc3c75a..0000000
--- a/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of NETCONF dynamic config synchronizer provider.
- */
-package org.onosproject.d.config.sync.impl.netconf;
diff --git a/apps/configsync-netconf/src/test/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerProviderTest.java b/apps/configsync-netconf/src/test/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerProviderTest.java
deleted file mode 100644
index 28fad43..0000000
--- a/apps/configsync-netconf/src/test/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerProviderTest.java
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.d.config.sync.impl.netconf;
-
-import static org.hamcrest.Matchers.hasItem;
-import static org.hamcrest.Matchers.hasSize;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.stringContainsInOrder;
-import static org.junit.Assert.*;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URI;
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-import java.util.function.BiFunction;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.commons.io.input.ReaderInputStream;
-import org.hamcrest.Matchers;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.util.XmlString;
-import org.onosproject.d.config.sync.DeviceConfigSynchronizationProviderService;
-import org.onosproject.d.config.sync.impl.netconf.NetconfDeviceConfigSynchronizerComponent.NetconfContext;
-import org.onosproject.d.config.sync.operation.SetRequest;
-import org.onosproject.d.config.sync.operation.SetResponse;
-import org.onosproject.d.config.sync.operation.SetResponse.Code;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.netconf.NetconfController;
-import org.onosproject.netconf.NetconfException;
-import org.onosproject.netconf.NetconfSession;
-import org.onosproject.netconf.NetconfSessionAdapter;
-import org.onosproject.yang.model.DataNode;
-import org.onosproject.yang.model.DataNode.Type;
-import org.onosproject.yang.model.InnerNode;
-import org.onosproject.yang.model.LeafNode;
-import org.onosproject.yang.model.ResourceData;
-import org.onosproject.yang.model.ResourceId;
-import org.onosproject.yang.model.SchemaContextProvider;
-import org.onosproject.yang.runtime.AnnotatedNodeInfo;
-import org.onosproject.yang.runtime.CompositeData;
-import org.onosproject.yang.runtime.CompositeStream;
-import org.onosproject.yang.runtime.DefaultAnnotatedNodeInfo;
-import org.onosproject.yang.runtime.DefaultAnnotation;
-import org.onosproject.yang.runtime.DefaultCompositeStream;
-import org.onosproject.yang.runtime.RuntimeContext;
-import org.onosproject.yang.runtime.YangRuntimeService;
-import com.google.common.io.CharSource;
-
-public class NetconfDeviceConfigSynchronizerProviderTest {
-
-    private static final ProviderId PID = new ProviderId("netconf", "test");
-    private static final DeviceId DID = DeviceId.deviceId("netconf:testDevice");
-
-    private static final String XMLNS_XC = "xmlns:xc";
-    private static final String NETCONF_1_0_BASE_NAMESPACE =
-                                    "urn:ietf:params:xml:ns:netconf:base:1.0";
-
-    private static final DefaultAnnotation XC_ANNOTATION =
-            new DefaultAnnotation(XMLNS_XC, NETCONF_1_0_BASE_NAMESPACE);
-
-    private static final DefaultAnnotation AN_XC_REPLACE_OPERATION =
-                        new DefaultAnnotation("xc:operation", "replace");
-
-    private static final DefaultAnnotation AN_XC_REMOVE_OPERATION =
-            new DefaultAnnotation("xc:operation", "remove");
-
-    /**
-     *  Yang namespace for test config data.
-     */
-    private static final String TEST_NS = "testNS";
-
-    private static final ResourceId RID_INTERFACES =
-            ResourceId.builder().addBranchPointSchema("interfaces", TEST_NS).build();
-
-    private NetconfDeviceConfigSynchronizerProvider sut;
-
-    private NetconfContext ncCtx;
-
-
-    // Set following accordingly to suite test scenario
-    NetconfSession testNcSession;
-    YangRuntimeService testYangRuntime;
-
-
-    @Before
-    public void setUp() throws Exception {
-
-        ncCtx = new TestNetconfContext();
-
-        sut = new NetconfDeviceConfigSynchronizerProvider(PID, ncCtx) {
-            // overriding to avoid mocking whole NetconController and all that.
-            @Override
-            protected NetconfSession getNetconfSession(DeviceId deviceId) {
-                assertEquals(DID, deviceId);
-                return testNcSession;
-            }
-        };
-    }
-
-    @Test
-    public void testReplaceOperation() throws Exception {
-        // plug drivers with assertions
-        testYangRuntime = onEncode((data, context) -> {
-            assertEquals("xml", context.getDataFormat());
-            assertThat(context.getProtocolAnnotations(), hasItem(XC_ANNOTATION));
-
-            //  assert CompositeData
-            ResourceData rData = data.resourceData();
-            List<AnnotatedNodeInfo> infos = data.annotatedNodesInfo();
-
-            ResourceId interfacesRid = RID_INTERFACES;
-            AnnotatedNodeInfo intfsAnnot = DefaultAnnotatedNodeInfo.builder()
-                    .resourceId(interfacesRid)
-                    .addAnnotation(AN_XC_REPLACE_OPERATION)
-                    .build();
-            assertThat("interfaces has replace operation", infos, hasItem(intfsAnnot));
-
-            // assertion for ResourceData.
-            assertEquals(RID_INTERFACES, rData.resourceId());
-            assertThat("has 1 child", rData.dataNodes(), hasSize(1));
-            assertThat("which is interface",
-                           rData.dataNodes().get(0).key().schemaId().name(),
-                           is("interface"));
-            // todo: assert the rest of the tree if it make sense.
-
-            // FIXME it's unclear what URI is expected here
-            String id = URI.create("netconf:testDevice").toString();
-
-            String inXml = deviceConfigAsXml("replace");
-
-            return toCompositeStream(id, inXml);
-        });
-        testNcSession = new TestEditNetconfSession();
-
-
-        // building test data
-        ResourceId interfacesId = RID_INTERFACES;
-        DataNode interfaces = deviceConfigNode();
-        SetRequest request = SetRequest.builder()
-                .replace(interfacesId, interfaces)
-                .build();
-
-        // test start
-        CompletableFuture<SetResponse> f = sut.setConfiguration(DID, request);
-        SetResponse response = f.get(5, TimeUnit.MINUTES);
-
-        assertEquals(Code.OK, response.code());
-        assertEquals(request.subjects(), response.subjects());
-    }
-
-
-    @Test
-    public void testDeleteOperation() throws Exception {
-        // plug drivers with assertions
-        testYangRuntime = onEncode((data, context) -> {
-            assertEquals("xml", context.getDataFormat());
-            assertThat(context.getProtocolAnnotations(), hasItem(XC_ANNOTATION));
-
-            //  assert CompositeData
-            ResourceData rData = data.resourceData();
-            List<AnnotatedNodeInfo> infos = data.annotatedNodesInfo();
-
-            ResourceId interfacesRid = RID_INTERFACES;
-            AnnotatedNodeInfo intfsAnnot = DefaultAnnotatedNodeInfo.builder()
-                    .resourceId(interfacesRid)
-                    .addAnnotation(AN_XC_REMOVE_OPERATION)
-                    .build();
-            assertThat("interfaces has replace operation", infos, hasItem(intfsAnnot));
-
-            // assertion for ResourceData.
-            assertEquals(RID_INTERFACES, rData.resourceId());
-            assertThat("has no child", rData.dataNodes(), hasSize(0));
-
-            // FIXME it's unclear what URI is expected here
-            String id = URI.create("netconf:testDevice").toString();
-
-            String inXml = deviceConfigAsXml("remove");
-
-            return toCompositeStream(id, inXml);
-        });
-        testNcSession = new TestEditNetconfSession();
-
-        // building test data
-        ResourceId interfacesId = RID_INTERFACES;
-        SetRequest request = SetRequest.builder()
-                .delete(interfacesId)
-                .build();
-
-        // test start
-        CompletableFuture<SetResponse> f = sut.setConfiguration(DID, request);
-
-        SetResponse response = f.get(5, TimeUnit.MINUTES);
-        assertEquals(Code.OK, response.code());
-        assertEquals(request.subjects(), response.subjects());
-    }
-
-    /**
-     * DataNode for testing.
-     *
-     * <pre>
-     *   +-interfaces
-     *      |
-     *      +- interface{intf-name="en0"}
-     *           |
-     *           +- speed = "10G"
-     *           +- state = "up"
-     *
-     * </pre>
-     * @return DataNode
-     */
-    private DataNode deviceConfigNode() {
-        InnerNode.Builder intfs = InnerNode.builder("interfaces", TEST_NS);
-        intfs.type(Type.SINGLE_INSTANCE_NODE);
-        InnerNode.Builder intf = intfs.createChildBuilder("interface", TEST_NS);
-        intf.type(Type.SINGLE_INSTANCE_LEAF_VALUE_NODE);
-        intf.addKeyLeaf("name", TEST_NS, "Ethernet0/0");
-        LeafNode.Builder speed = intf.createChildBuilder("mtu", TEST_NS, "1500");
-        speed.type(Type.SINGLE_INSTANCE_LEAF_VALUE_NODE);
-
-        intf.addNode(speed.build());
-        intfs.addNode(intf.build());
-        return intfs.build();
-    }
-
-    /**
-     * {@link #deviceConfigNode()} as XML.
-     *
-     * @param operation xc:operation value on {@code interfaces} node
-     * @return XML
-     */
-    private String deviceConfigAsXml(String operation) {
-        return  "<interfaces xmlns=\"http://example.com/schema/1.2/config\""
-                + " xc:operation=\"" + operation + "\">\n" +
-                "  <interface>\n" +
-                "    <name>Ethernet0/0</name>\n" +
-                "    <mtu>1500</mtu>\n" +
-                "  </interface>\n" +
-                "</interfaces>";
-    }
-
-    private String rpcReplyOk(int messageid) {
-        return "<rpc-reply message-id=\"" + messageid + "\"\n" +
-               "      xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">\n" +
-               "   <ok/>\n" +
-               "</rpc-reply>";
-    }
-
-    private int fetchMessageId(String request) {
-        int messageid;
-        Pattern msgId = Pattern.compile("message-id=['\"]([0-9]+)['\"]");
-        Matcher matcher = msgId.matcher(request);
-        if (matcher.find()) {
-            messageid = Integer.parseInt(matcher.group(1));
-        } else {
-            messageid = -1;
-        }
-        return messageid;
-    }
-
-
-    protected CompositeStream toCompositeStream(String id, String inXml) {
-        try {
-            InputStream xml = new ReaderInputStream(
-                         CharSource.wrap(inXml)
-                             .openStream());
-
-            return new DefaultCompositeStream(id, xml);
-        } catch (IOException e) {
-            throw new IllegalStateException(e);
-        }
-    }
-
-    /**
-     * Asserts that it received edit-config message and reply Ok.
-     */
-    private class TestEditNetconfSession extends NetconfSessionAdapter {
-        @Override
-        public CompletableFuture<String> rpc(String request)
-                throws NetconfException {
-            System.out.println("TestEditNetconfSession received:");
-            System.out.println(XmlString.prettifyXml(request));
-
-            // Extremely naive request rpc message check
-            assertThat(request, stringContainsInOrder(Arrays.asList(
-                                  "<rpc",
-                                  "<edit-config",
-                                  "<target",
-                                  "<config",
-
-                                  "</config>",
-                                  "</edit-config>",
-                                  "</rpc>")));
-
-            assertThat("XML namespace decl exists",
-                       request, Matchers.containsString("xmlns:xc"));
-
-            assertThat("netconf operation exists",
-                       request, Matchers.containsString("xc:operation"));
-
-            return CompletableFuture.completedFuture(rpcReplyOk(fetchMessageId(request)));
-        }
-    }
-
-    /**
-     * Creates mock YangRuntimeService.
-     *
-     * @param body to execute when {@link YangRuntimeService#encode(CompositeData, RuntimeContext)} was called.
-     * @return YangRuntimeService instance
-     */
-    TestYangRuntimeService onEncode(BiFunction<CompositeData, RuntimeContext, CompositeStream> body) {
-        return new TestYangRuntimeService() {
-            @Override
-            public CompositeStream encode(CompositeData internal,
-                                          RuntimeContext context) {
-                return body.apply(internal, context);
-            }
-        };
-    }
-
-    private abstract class TestYangRuntimeService implements YangRuntimeService {
-
-        @Override
-        public CompositeStream encode(CompositeData internal,
-                                      RuntimeContext context) {
-            fail("stub not implemented");
-            return null;
-        }
-        @Override
-        public CompositeData decode(CompositeStream external,
-                                    RuntimeContext context) {
-            fail("stub not implemented");
-            return null;
-        }
-    }
-
-    private final class TestNetconfContext implements NetconfContext {
-        @Override
-        public DeviceConfigSynchronizationProviderService providerService() {
-            fail("Add stub driver as necessary");
-            return null;
-        }
-
-        @Override
-        public SchemaContextProvider schemaContextProvider() {
-            fail("Add stub driver as necessary");
-            return null;
-        }
-
-        @Override
-        public YangRuntimeService yangRuntime() {
-            return testYangRuntime;
-        }
-
-        @Override
-        public NetconfController netconfController() {
-            fail("Add stub driver as necessary");
-            return null;
-        }
-    }
-
-}
diff --git a/apps/configsync/BUILD b/apps/configsync/BUILD
deleted file mode 100644
index 38b4fe7..0000000
--- a/apps/configsync/BUILD
+++ /dev/null
@@ -1,20 +0,0 @@
-APPS = [
-    # dynamic config
-    "org.onosproject.config",
-]
-
-COMPILE_DEPS = CORE_DEPS + ONOS_YANG + [
-    "//apps/config:onos-apps-config",
-]
-
-osgi_jar_with_tests(
-    deps = COMPILE_DEPS,
-)
-
-onos_app(
-    category = "Utility",
-    description = "Application to support the Dynamic configuration service.",
-    required_apps = APPS,
-    title = "Dynamic Configuration Synchronizer",
-    url = "http://onosproject.org",
-)
diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProvider.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProvider.java
deleted file mode 100644
index eed008f..0000000
--- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProvider.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.d.config.sync;
-
-import java.util.concurrent.CompletableFuture;
-
-import org.onosproject.d.config.sync.operation.SetRequest;
-import org.onosproject.d.config.sync.operation.SetResponse;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.provider.Provider;
-
-import com.google.common.annotations.Beta;
-
-// TODO might want to remove Device~ prefix, class name too long.
-/**
- * Abstraction of a device config synchronization provider.
- * <p>
- * Provides a mean for propagating dynamic config triggered change down to
- * the device.
- */
-@Beta
-public interface DeviceConfigSynchronizationProvider extends Provider {
-
-    // TODO API to propagate dynamic config subsystem side change down to the
-    // device
-
-    /**
-     * Requests a device to set configuration as specified.
-     *
-     * @param deviceId target Device identifier
-     * @param request configuration requests
-     * @return result
-     */
-    CompletableFuture<SetResponse> setConfiguration(DeviceId deviceId, SetRequest request);
-
-    // TODO API for Get from Device
-    // CompletableFuture<GetResponse> getConfiguration(DeviceId deviceId, GetRequest request);
-
-}
diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProviderRegistry.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProviderRegistry.java
deleted file mode 100644
index edf1eba..0000000
--- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProviderRegistry.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.d.config.sync;
-
-import org.onosproject.net.provider.ProviderRegistry;
-
-/**
- * Abstraction of a device config synchronization provider registry.
- */
-public interface DeviceConfigSynchronizationProviderRegistry
-        extends ProviderRegistry<DeviceConfigSynchronizationProvider,
-                                 DeviceConfigSynchronizationProviderService> {
-
-}
diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProviderService.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProviderService.java
deleted file mode 100644
index 8fa0ee3..0000000
--- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProviderService.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.d.config.sync;
-
-import org.onosproject.net.provider.ProviderService;
-
-import com.google.common.annotations.Beta;
-
-/**
- * Service which configuration synchronization provider can interact
- * with the service.
- * <p>
- * Provides a mean to propagate device triggered change event upward to
- * dynamic config subsystem.
- */
-@Beta
-public interface DeviceConfigSynchronizationProviderService
-    extends ProviderService<DeviceConfigSynchronizationProvider> {
-
-    // TODO API to propagate device detected change upwards
-    // e.g., in reaction to NETCONF async notification,
-    //       report polling result up to DynConfig subsystem
-}
diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/impl/DynamicDeviceConfigSynchronizer.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/impl/DynamicDeviceConfigSynchronizer.java
deleted file mode 100644
index 1236364..0000000
--- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/impl/DynamicDeviceConfigSynchronizer.java
+++ /dev/null
@@ -1,397 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.d.config.sync.impl;
-
-import com.google.common.annotations.Beta;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import org.onlab.util.Tools;
-import org.onosproject.config.DynamicConfigEvent;
-import org.onosproject.config.DynamicConfigEvent.Type;
-import org.onosproject.config.DynamicConfigListener;
-import org.onosproject.config.DynamicConfigService;
-import org.onosproject.config.Filter;
-import org.onosproject.d.config.DataNodes;
-import org.onosproject.d.config.DeviceResourceIds;
-import org.onosproject.d.config.ResourceIds;
-import org.onosproject.d.config.sync.DeviceConfigSynchronizationProvider;
-import org.onosproject.d.config.sync.DeviceConfigSynchronizationProviderRegistry;
-import org.onosproject.d.config.sync.DeviceConfigSynchronizationProviderService;
-import org.onosproject.d.config.sync.operation.SetRequest;
-import org.onosproject.d.config.sync.operation.SetResponse;
-import org.onosproject.d.config.sync.operation.SetResponse.Code;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.config.NetworkConfigService;
-import org.onosproject.net.provider.AbstractProviderRegistry;
-import org.onosproject.net.provider.AbstractProviderService;
-import org.onosproject.store.primitives.TransactionId;
-import org.onosproject.yang.model.DataNode;
-import org.onosproject.yang.model.ResourceId;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.time.Duration;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-import java.util.stream.Collectors;
-
-import static java.util.concurrent.CompletableFuture.completedFuture;
-import static org.onosproject.d.config.DeviceResourceIds.isUnderDeviceRootNode;
-import static org.onosproject.d.config.DeviceResourceIds.toDeviceId;
-import static org.onosproject.d.config.DeviceResourceIds.toResourceId;
-import static org.onosproject.d.config.sync.operation.SetResponse.response;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Component to bridge Dynamic Config store and the Device configuration state.
- *
- * <ul>
- * <li> Propagate DynamicConfig service change downward to Device side via provider.
- * <li> Propagate Device triggered change event upward to DyamicConfig service.
- * </ul>
- */
-@Beta
-@Component(immediate = true, service = DeviceConfigSynchronizationProviderRegistry.class)
-public class DynamicDeviceConfigSynchronizer
-    extends AbstractProviderRegistry<DeviceConfigSynchronizationProvider,
-                                     DeviceConfigSynchronizationProviderService>
-    implements DeviceConfigSynchronizationProviderRegistry {
-
-    private static final Logger log = getLogger(DynamicDeviceConfigSynchronizer.class);
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DynamicConfigService dynConfigService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigService netcfgService;
-
-    private DynamicConfigListener listener = new InnerDyConListener();
-
-    // FIXME hack for unconsolidated event bug
-    private Duration quietPeriod = Duration.ofSeconds(2);
-    private long quietUntil = 0;
-
-    @Activate
-    public void activate() {
-        // TODO start background task to sync Controller and Device?
-        dynConfigService.addListener(listener);
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        dynConfigService.removeListener(listener);
-        log.info("Stopped");
-    }
-
-
-    @Override
-    protected DeviceConfigSynchronizationProviderService createProviderService(
-                                 DeviceConfigSynchronizationProvider provider) {
-        return new InternalConfigSynchronizationServiceProvider(provider);
-    }
-
-    @Override
-    protected DeviceConfigSynchronizationProvider defaultProvider() {
-        // TODO return provider instance which can deal with "general" provider?
-        return super.defaultProvider();
-    }
-
-    /**
-     * Proxy to relay Device change event for propagating running "state"
-     * information up to dynamic configuration service.
-     */
-    class InternalConfigSynchronizationServiceProvider
-        extends AbstractProviderService<DeviceConfigSynchronizationProvider>
-        implements DeviceConfigSynchronizationProviderService {
-
-        protected InternalConfigSynchronizationServiceProvider(DeviceConfigSynchronizationProvider provider) {
-            super(provider);
-        }
-
-        // TODO API for passive information propagation to be added later on
-    }
-
-    /**
-     * DynamicConfigListener to trigger active synchronization toward the device.
-     */
-    class InnerDyConListener implements DynamicConfigListener {
-
-        @Override
-        public boolean isRelevant(DynamicConfigEvent event) {
-            // TODO NetconfActiveComponent.isRelevant(DynamicConfigEvent)
-            // seems to be doing some filtering
-            // Logic filtering for L3VPN is probably a demo hack,
-            // but is there any portion of it which is really needed?
-            // e.g., listen only for device tree events?
-
-            ResourceId path = event.subject();
-            // TODO only device tree related event is relevant.
-            // 1) path is under device tree
-            // 2) path is root, and DataNode contains element under node
-            // ...
-            return true;
-        }
-
-        @Override
-        public void event(DynamicConfigEvent event) {
-            // Note: removed accumulator in the old code assuming,
-            // event accumulation will happen on Device Config Event level.
-
-            // TODO execute off event dispatch thread
-            processEventNonBatch(event);
-        }
-
-    }
-
-    void processEventNonBatch(DynamicConfigEvent event) {
-        if (System.currentTimeMillis() < quietUntil) {
-            log.trace("Ignoring {}. Quiet period until {}",
-                      event, Tools.defaultOffsetDataTime(quietUntil));
-            return;
-        }
-
-        ResourceId path = event.subject();
-        if (isUnderDeviceRootNode(path)) {
-            log.trace("processing event:{}", event);
-
-            DeviceId deviceId = DeviceResourceIds.toDeviceId(path);
-            ResourceId deviceRootPath = DeviceResourceIds.toResourceId(deviceId);
-
-            ResourceId absPath = ResourceIds.concat(ResourceIds.ROOT_ID, path);
-            ResourceId relPath = ResourceIds.relativize(deviceRootPath, absPath);
-            // give me everything Filter
-            Filter giveMeEverything = Filter.builder().build();
-
-            DataNode node = dynConfigService.readNode(path, giveMeEverything);
-            SetRequest request;
-            switch (event.type()) {
-
-            case NODE_ADDED:
-            case NODE_REPLACED:
-                request = SetRequest.builder().replace(relPath, node).build();
-                break;
-            case NODE_UPDATED:
-                // Event has no pay load, only thing we can do is replace.
-                request = SetRequest.builder().replace(relPath, node).build();
-                break;
-            case NODE_DELETED:
-                request = SetRequest.builder().delete(relPath).build();
-                break;
-            case UNKNOWN_OPRN:
-            default:
-                log.error("Unexpected event {}, aborting", event);
-                return;
-            }
-
-            log.info("Dispatching {} request {}", deviceId, request);
-            CompletableFuture<SetResponse> response = dispatchRequest(deviceId, request);
-            response.whenComplete((resp, e) -> {
-                if (e == null) {
-                    if (resp.code() == Code.OK) {
-                        log.info("{} for {} complete", resp, deviceId);
-                    } else {
-                        log.warn("{} for {} had problem", resp, deviceId);
-                    }
-                } else {
-                    log.error("Request to {} failed {}", deviceId, response, e);
-                }
-            });
-
-            // FIXME hack for unconsolidated event bug
-            quietUntil = System.currentTimeMillis() + quietPeriod.toMillis();
-        } else {
-            log.debug("Ignored event's ResourceId: {}", event.subject());
-        }
-    }
-
-
-    // was sketch to handle case, where event could contain batch of things...
-    private void processEvent(DynamicConfigEvent event) {
-        // TODO assuming event object will contain batch of (atomic) change event
-
-        // What the new event will contain:
-        Type evtType = event.type();
-
-        // Transaction ID, can be null
-        TransactionId txId = null;
-
-        // TODO this might change into collection of (path, val_before, val_after)
-
-        ResourceId path = event.subject();
-        // data node (can be tree) representing change, it could be incremental update
-        DataNode val = null;
-
-        // build per-Device SetRequest
-        // val could be a tree, containing multiple Device tree,
-        // break them down into per-Device sub-tree
-        Map<DeviceId, SetRequest.Builder> requests = new HashMap<>();
-
-        if (isUnderDeviceRootNode(path)) {
-            // about single device
-            buildDeviceRequest(requests, evtType, path, toDeviceId(path), val);
-
-        } else if (DeviceResourceIds.isRootOrDevicesNode(path)) {
-            //  => potentially contain changes spanning multiple Devices
-            Map<DeviceId, DataNode> perDevices = perDevices(path, val);
-
-            perDevices.forEach((did, dataNode) -> {
-                buildDeviceRequest(requests, evtType, toResourceId(did), did, dataNode);
-            });
-
-            // TODO special care is probably required for delete cases
-            // especially delete all under devices
-
-        } else {
-            log.warn("Event not related to a Device?");
-        }
-
-
-        // TODO assuming event is a batch,
-        // potentially containing changes for multiple devices,
-        // who will process/coordinate the batch event?
-
-
-        // TODO loop through per-Device change set
-        List<CompletableFuture<SetResponse>> responses =
-                requests.entrySet().stream()
-                .map(entry -> dispatchRequest(entry.getKey(), entry.getValue().build()))
-                .collect(Collectors.toList());
-
-        // wait for all responses
-        List<SetResponse> allResults = Tools.allOf(responses).join();
-        // TODO deal with partial failure case (multi-device coordination)
-        log.info("DEBUG: results: {}", allResults);
-    }
-
-    // might make sense to make this public
-    CompletableFuture<SetResponse> dispatchRequest(DeviceId devId, SetRequest req) {
-
-        // determine appropriate provider for this Device
-        DeviceConfigSynchronizationProvider provider = this.getProvider(devId);
-
-        if (provider == null) {
-            // no appropriate provider found
-            // return completed future with failed SetResponse
-            return completedFuture(response(req,
-                                            SetResponse.Code.FAILED_PRECONDITION,
-                                            "no provider found for " + devId));
-        }
-
-        // dispatch request
-        return provider.setConfiguration(devId, req)
-                .handle((resp, err) -> {
-                    if (err == null) {
-                        // set complete
-                        log.info("DEBUG: Req:{}, Resp:{}", req, resp);
-                        return resp;
-                    } else {
-                        // fatal error
-                        log.error("Fatal error on {}", req, err);
-                        return response(req,
-                                        SetResponse.Code.UNKNOWN,
-                                        "Unknown error " + err);
-                    }
-                });
-    }
-
-
-    // may eventually reuse with batch event
-    /**
-     * Build device request about a Device.
-     *
-     * @param requests map containing request builder to populate
-     * @param evtType change request type
-     * @param path to {@code val}
-     * @param did DeviceId which {@code path} is about
-     * @param val changed node to write
-     */
-    private void buildDeviceRequest(Map<DeviceId, SetRequest.Builder> requests,
-                            Type evtType,
-                            ResourceId path,
-                            DeviceId did,
-                            DataNode val) {
-
-        SetRequest.Builder request =
-                requests.computeIfAbsent(did, d -> SetRequest.builder());
-
-        switch (evtType) {
-        case NODE_ADDED:
-        case NODE_REPLACED:
-            request.replace(path, val);
-            break;
-
-        case NODE_UPDATED:
-            // TODO Auto-generated method stub
-            request.update(path, val);
-            break;
-
-        case NODE_DELETED:
-            // TODO Auto-generated method stub
-            request.delete(path);
-            break;
-
-        case UNKNOWN_OPRN:
-        default:
-            log.warn("Ignoring unexpected {}", evtType);
-            break;
-        }
-    }
-
-    /**
-     * Breaks down tree {@code val} into per Device subtree.
-     *
-     * @param path pointing to {@code val}
-     * @param val tree which contains only 1 Device.
-     * @return Device node relative DataNode for each DeviceId
-     * @throws IllegalArgumentException
-     */
-    private static Map<DeviceId, DataNode> perDevices(ResourceId path, DataNode val) {
-        if (DeviceResourceIds.isUnderDeviceRootNode(path)) {
-            // - if path is device root or it's subtree, path alone is sufficient
-            return ImmutableMap.of(DeviceResourceIds.toDeviceId(path), val);
-
-        } else if (DeviceResourceIds.isRootOrDevicesNode(path)) {
-            // - if path is "/" or devices, it might be constructible from val tree
-            final Collection<DataNode> devicesChildren;
-            if (DeviceResourceIds.isRootNode(path)) {
-                // root
-                devicesChildren = DataNodes.childOnlyByName(val, DeviceResourceIds.DEVICES_NAME)
-                            .map(dn -> DataNodes.children(dn))
-                            .orElse(ImmutableList.of());
-            } else {
-                // devices
-                devicesChildren = DataNodes.children(val);
-            }
-
-            return devicesChildren.stream()
-                    // TODO use full schemaId for filtering when ready
-                    .filter(dn -> dn.key().schemaId().name().equals(DeviceResourceIds.DEVICE_NAME))
-                    .collect(Collectors.toMap(dn -> DeviceResourceIds.toDeviceId(dn.key()),
-                                              dn -> dn));
-
-        }
-        throw new IllegalArgumentException(path + " not related to Device");
-    }
-
-}
diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/impl/package-info.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/impl/package-info.java
deleted file mode 100644
index 23fa201..0000000
--- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/impl/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-/**
- * Implementation of dynamic config synchronizer.
- */
-package org.onosproject.d.config.sync.impl;
diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/SetRequest.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/SetRequest.java
deleted file mode 100644
index d4d3254..0000000
--- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/SetRequest.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.d.config.sync.operation;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Objects;
-import java.util.Optional;
-
-import org.apache.commons.lang3.tuple.Pair;
-import org.onosproject.d.config.sync.operation.SetRequest.Change.Operation;
-import org.onosproject.yang.model.DataNode;
-import org.onosproject.yang.model.ResourceId;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.MoreObjects;
-import com.google.common.collect.ImmutableList;
-
-// One SetRequest is expected to be a transaction, all-or-nothing
-/**
- * Collection of changes about a single Device,
- * intended to be applied to the Device transactionally.
- */
-@Beta
-public final class SetRequest {
-
-    private final Collection<Change> changes;
-
-    SetRequest(Collection<Change> changes) {
-        this.changes = ImmutableList.copyOf(changes);
-    }
-
-    public Collection<Change> changes() {
-        return changes;
-    }
-
-    public Collection<Pair<Operation, ResourceId>> subjects() {
-        return changes.stream()
-                    .map(c -> Pair.of(c.op(), c.path()))
-                    .collect(ImmutableList.toImmutableList());
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof SetRequest) {
-            SetRequest that = (SetRequest) obj;
-            return Objects.equals(this.changes, that.changes);
-        }
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(changes);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("changes", changes)
-                .toString();
-    }
-    public static SetRequest.Builder builder() {
-        return new Builder();
-    }
-
-    public static class Builder {
-        private final List<Change> changes = new ArrayList<>();
-
-        /**
-         * Returns changes contained in this builder.
-         *
-         * @return unmodifiable list view of Changes
-         */
-        public List<Change> changes() {
-            return Collections.unmodifiableList(changes);
-        }
-
-        /**
-         * Adds request to remove specified {@code path}.
-         *
-         * @param path resource path relative to device root node
-         * @return self
-         */
-        public SetRequest.Builder delete(ResourceId path) {
-            changes.add(Change.delete(path));
-            return this;
-        }
-
-        /**
-         * Adds request to replace specified {@code path} with specified {@code val}.
-         *
-         * @param path resource path relative to device root node
-         * @param val  resource value
-         * @return self
-         */
-        public SetRequest.Builder replace(ResourceId path, DataNode val) {
-            changes.add(Change.replace(path, val));
-            return this;
-        }
-
-        /**
-         * Adds request to update/merge specified {@code val} to the {@code path}.
-         *
-         * @param path resource path relative to device root node
-         * @param val  resource value
-         * @return self
-         */
-        public SetRequest.Builder update(ResourceId path, DataNode val) {
-            changes.add(Change.update(path, val));
-            return this;
-        }
-
-        public SetRequest build() {
-            return new SetRequest(changes);
-        }
-    }
-
-    public static final class Change {
-
-        public enum Operation {
-
-            // Note: equivalent to remove in netconf
-            /**
-             * Request to delete specified {@code path}.
-             * If path does not exist, it is silently ignored.
-             */
-            DELETE,
-            // Note: equivalent to replace in netconf
-            /**
-             * Request to replace specified {@code path} with specified {@code val}.
-             */
-            REPLACE,
-            // Note: equivalent to merge in netconf
-            /**
-             * Request to update/merge specified {@code val} to the {@code path}.
-             */
-            UPDATE
-        }
-
-        private final Operation op;
-        private final ResourceId path;
-        private final Optional<DataNode> val;
-
-        public static Change delete(ResourceId path) {
-            return new Change(Operation.DELETE, path, Optional.empty());
-        }
-
-        public static Change replace(ResourceId path, DataNode val) {
-            return new Change(Operation.REPLACE, path, Optional.of(val));
-        }
-
-        public static Change update(ResourceId path, DataNode val) {
-            return new Change(Operation.UPDATE, path, Optional.of(val));
-        }
-
-        Change(Operation op, ResourceId path, Optional<DataNode> val) {
-            this.op = checkNotNull(op);
-            this.path = checkNotNull(path);
-            this.val = checkNotNull(val);
-        }
-
-        /**
-         * Returns type of change operation.
-         *
-         * @return Operation
-         */
-        public Operation op() {
-            return op;
-        }
-
-        /**
-         * Returns resource path to be changed.
-         *
-         * @return resource path relative to device root node
-         */
-        public ResourceId path() {
-            return path;
-        }
-
-        /**
-         * Returns the {@code val} specified.
-         *
-         * @return {@code val}
-         * @throws NoSuchElementException if this object represent {@code DELETE} op.
-         */
-        public DataNode val() {
-            return val.get();
-        }
-
-        @Override
-        public boolean equals(Object obj) {
-            if (this == obj) {
-                return true;
-            }
-            if (obj instanceof Change) {
-                Change that = (Change) obj;
-                return Objects.equals(this.op, that.op) &&
-                       Objects.equals(this.path, that.path) &&
-                       Objects.equals(this.val, that.val);
-            }
-            return false;
-        }
-
-        @Override
-        public int hashCode() {
-            return Objects.hash(op, path, val);
-        }
-
-        @Override
-        public String toString() {
-            return MoreObjects.toStringHelper(getClass())
-                    .add("op", op)
-                    .add("path", path)
-                    .add("val", val)
-                    .toString();
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/SetResponse.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/SetResponse.java
deleted file mode 100644
index 0bc9502..0000000
--- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/SetResponse.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.d.config.sync.operation;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Collection;
-import java.util.Objects;
-
-import org.apache.commons.lang3.tuple.Pair;
-import org.onosproject.d.config.sync.operation.SetRequest.Change.Operation;
-import org.onosproject.yang.model.ResourceId;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.MoreObjects;
-import com.google.common.collect.ImmutableList;
-
-
-@Beta
-public final class SetResponse {
-
-    // partially borrowed from io.grpc.Status.Code,
-    // might want to borrow all of them
-    public enum Code {
-        OK,
-        CANCELLED,
-
-        UNKNOWN,
-
-        INVALID_ARGUMENT,
-
-        NOT_FOUND,
-        ALREADY_EXISTS,
-
-        FAILED_PRECONDITION,
-        ABORTED,
-        UNAVAILABLE,
-    }
-
-    private final Collection<Pair<Operation, ResourceId>> subjects;
-
-    private final SetResponse.Code code;
-
-    // human readable error message for logging purpose
-    private final String message;
-
-    SetResponse(Collection<Pair<Operation, ResourceId>> subjects,
-                SetResponse.Code code,
-                String message) {
-        this.subjects = ImmutableList.copyOf(subjects);
-        this.code = checkNotNull(code);
-        this.message = checkNotNull(message);
-    }
-
-    public Collection<Pair<Operation, ResourceId>> subjects() {
-        return subjects;
-    }
-
-    public Code code() {
-        return code;
-    }
-
-    public String message() {
-        return message;
-    }
-
-
-    /**
-     * Creates SetResponse instance from request.
-     *
-     * @param request original request this response corresponds to
-     * @param code response status code
-     * @param message human readable error message for logging purpose.
-     *        can be left empty string on OK response.
-     * @return SetResponse instance
-     */
-    public static SetResponse response(SetRequest request,
-                                       Code code,
-                                       String message) {
-        return new SetResponse(request.subjects(), code, checkNotNull(message));
-    }
-
-    /**
-     * Creates successful SetResponce instance from request.
-     *
-     * @param request original request this response corresponds to
-     * @return SetResponse instance
-     */
-    public static SetResponse ok(SetRequest request) {
-        return new SetResponse(request.subjects(), Code.OK, "");
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(subjects, code, message);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof SetResponse) {
-            SetResponse that = (SetResponse) obj;
-            return Objects.equals(this.subjects, that.subjects) &&
-                    Objects.equals(this.code, that.code) &&
-                    Objects.equals(this.message, that.message);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("code", code)
-                .add("subjects", subjects)
-                .add("message", message)
-                .toString();
-    }
-
-
-
-}
\ No newline at end of file
diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/package-info.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/package-info.java
deleted file mode 100644
index d7612e9..0000000
--- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-/**
- * Dynamic config synchronizer API related value objects.
- */
-package org.onosproject.d.config.sync.operation;
diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/package-info.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/package-info.java
deleted file mode 100644
index 8da2769..0000000
--- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-/**
- * Dynamic config synchronizer API.
- */
-package org.onosproject.d.config.sync;
diff --git a/apps/configsync/src/test/java/org/onosproject/d/config/sync/impl/DynamicDeviceConfigSynchronizerTest.java b/apps/configsync/src/test/java/org/onosproject/d/config/sync/impl/DynamicDeviceConfigSynchronizerTest.java
deleted file mode 100644
index bfdead6..0000000
--- a/apps/configsync/src/test/java/org/onosproject/d/config/sync/impl/DynamicDeviceConfigSynchronizerTest.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.d.config.sync.impl;
-
-import static org.junit.Assert.*;
-import static org.onosproject.d.config.ResourceIds.ROOT_ID;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-import java.util.function.BiFunction;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.config.DynamicConfigEvent;
-import org.onosproject.config.DynamicConfigServiceAdapter;
-import org.onosproject.config.Filter;
-import org.onosproject.d.config.DeviceResourceIds;
-import org.onosproject.d.config.ResourceIds;
-import org.onosproject.d.config.sync.DeviceConfigSynchronizationProvider;
-import org.onosproject.d.config.sync.operation.SetRequest;
-import org.onosproject.d.config.sync.operation.SetRequest.Change;
-import org.onosproject.d.config.sync.operation.SetRequest.Change.Operation;
-import org.onosproject.d.config.sync.operation.SetResponse;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.config.NetworkConfigServiceAdapter;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.yang.model.DataNode;
-import org.onosproject.yang.model.InnerNode;
-import org.onosproject.yang.model.LeafNode;
-import org.onosproject.yang.model.ResourceId;
-
-import com.google.common.collect.Iterables;
-
-public class DynamicDeviceConfigSynchronizerTest {
-
-    static final String TEST_NS = "testNS";
-
-    static final ResourceId REL_INTERFACES = ResourceId.builder()
-                .addBranchPointSchema("interfaces", TEST_NS)
-                .build();
-
-    static final DeviceId DID = DeviceId.deviceId("test:device1");
-
-    DynamicDeviceConfigSynchronizer sut;
-
-    TestDynamicConfigService dyConService;
-
-    CountDownLatch providerCalled = new CountDownLatch(1);
-
-    /**
-     * DynamicConfigService.readNode(ResourceId, Filter) stub.
-     */
-    BiFunction<ResourceId, Filter, DataNode> onDcsRead;
-
-    BiFunction<DeviceId, SetRequest, CompletableFuture<SetResponse>> onSetConfiguration;
-
-    @Before
-    public void setUp() throws Exception {
-
-        sut = new DynamicDeviceConfigSynchronizer();
-        dyConService = new TestDynamicConfigService();
-        sut.dynConfigService = dyConService;
-        sut.netcfgService = new NetworkConfigServiceAdapter();
-
-        sut.activate();
-
-        sut.register(new MockDeviceConfigSynchronizerProvider());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        sut.deactivate();
-    }
-
-    @Test
-    public void testDispatchRequest() throws Exception {
-
-        ResourceId devicePath = DeviceResourceIds.toResourceId(DID);
-        ResourceId cfgPath = REL_INTERFACES;
-        ResourceId absPath = ResourceIds.concat(devicePath, cfgPath);
-        ResourceId evtPath = ResourceIds.relativize(ROOT_ID, absPath);
-        DynamicConfigEvent event = new DynamicConfigEvent(DynamicConfigEvent.Type.NODE_REPLACED, evtPath);
-
-        // assertions
-        onDcsRead = (path, filter) -> {
-            assertTrue(filter.isEmptyFilter());
-            assertEquals("DCService get access by root relative RID", evtPath, path);
-            return deviceConfigNode();
-        };
-
-        onSetConfiguration = (deviceId, request) -> {
-            assertEquals(DID, deviceId);
-            assertEquals(1, request.changes().size());
-            Change change = Iterables.get(request.changes(), 0);
-            assertEquals("Provider get access by rel RID", REL_INTERFACES, change.path());
-            assertEquals(Operation.REPLACE, change.op());
-            assertEquals("interfaces", change.val().key().schemaId().name());
-            // walk and test children if it adds value
-
-            providerCalled.countDown();
-            return CompletableFuture.completedFuture(SetResponse.ok(request));
-        };
-
-        // start test run
-
-        // imitate event from DCS
-        dyConService.postEvent(event);
-
-        // assert that it reached the provider
-        providerCalled.await(5, TimeUnit.HOURS);
-    }
-
-    /**
-     * DataNode for testing.
-     *
-     * <pre>
-     *   +-interfaces
-     *      |
-     *      +- interface{intf-name="en0"}
-     *           |
-     *           +- speed = "10G"
-     *           +- state = "up"
-     *
-     * </pre>
-     * @return DataNode
-     */
-    private DataNode deviceConfigNode() {
-        InnerNode.Builder intfs = InnerNode.builder("interfaces", TEST_NS);
-        intfs.type(DataNode.Type.SINGLE_INSTANCE_NODE);
-        InnerNode.Builder intf = intfs.createChildBuilder("interface", TEST_NS);
-        intf.type(DataNode.Type.SINGLE_INSTANCE_LEAF_VALUE_NODE);
-        intf.addKeyLeaf("name", TEST_NS, "Ethernet0/0");
-        LeafNode.Builder speed = intf.createChildBuilder("mtu", TEST_NS, "1500");
-        speed.type(DataNode.Type.SINGLE_INSTANCE_LEAF_VALUE_NODE);
-
-        intf.addNode(speed.build());
-        intfs.addNode(intf.build());
-        return intfs.build();
-    }
-
-    private class TestDynamicConfigService extends DynamicConfigServiceAdapter {
-
-        public void postEvent(DynamicConfigEvent event) {
-            listenerRegistry.process(event);
-        }
-
-        @Override
-        public DataNode readNode(ResourceId path, Filter filter) {
-            return onDcsRead.apply(path, filter);
-        }
-    }
-
-    private class MockDeviceConfigSynchronizerProvider
-            implements DeviceConfigSynchronizationProvider {
-
-        @Override
-        public ProviderId id() {
-            return new ProviderId(DID.uri().getScheme(), "test-provider");
-        }
-
-        @Override
-        public CompletableFuture<SetResponse> setConfiguration(DeviceId deviceId,
-                                                               SetRequest request) {
-            return onSetConfiguration.apply(deviceId, request);
-        }
-    }
-
-}
diff --git a/apps/evpn-route-service/BUILD b/apps/evpn-route-service/BUILD
deleted file mode 100644
index d099839..0000000
--- a/apps/evpn-route-service/BUILD
+++ /dev/null
@@ -1,11 +0,0 @@
-BUNDLES = [
-    "//apps/evpn-route-service/api:onos-apps-evpn-route-service-api",
-    "//apps/evpn-route-service/app:onos-apps-evpn-route-service-app",
-]
-
-onos_app(
-    category = "Traffic Engineering",
-    included_bundles = BUNDLES,
-    title = "EVPN Routing",
-    url = "http://onosproject.org",
-)
diff --git a/apps/evpn-route-service/api/BUILD b/apps/evpn-route-service/api/BUILD
deleted file mode 100644
index f72e3bc..0000000
--- a/apps/evpn-route-service/api/BUILD
+++ /dev/null
@@ -1,3 +0,0 @@
-osgi_jar_with_tests(
-    deps = CORE_DEPS,
-)
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstance.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstance.java
deleted file mode 100644
index 5288db7..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstance.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.List;
-import java.util.Objects;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Represents a evpn instance.
- */
-public final class EvpnInstance {
-
-    private final RouteDistinguisher rd;
-    private final List<VpnRouteTarget> importRtList;
-    private final List<VpnRouteTarget> exportRtList;
-    private final EvpnInstanceName evpnName;
-
-    /**
-     * Constructor to initialize the parameters.
-     *
-     * @param rd           route distinguisher
-     * @param importRtList import rotue targets
-     * @param exportRtList export rotue targets
-     * @param evpnName     vpn instance name
-     */
-    private EvpnInstance(RouteDistinguisher rd,
-                         List<VpnRouteTarget> importRtList,
-                         List<VpnRouteTarget> exportRtList,
-                         EvpnInstanceName evpnName) {
-        checkNotNull(rd);
-        //checkNotNull(rt);
-        checkNotNull(evpnName);
-        this.rd = rd;
-        this.importRtList = importRtList;
-        this.exportRtList = exportRtList;
-        this.evpnName = evpnName;
-    }
-
-    /**
-     * Creats the instance of EvpnInstance.
-     *
-     * @param rd           route distinguisher
-     * @param importRtList import rotue targets
-     * @param exportRtList export rotue targets
-     * @param evpnName     vpn instance name
-     * @return EvpnInstance
-     */
-    public static EvpnInstance evpnInstance(RouteDistinguisher rd,
-                                            List<VpnRouteTarget> importRtList,
-                                            List<VpnRouteTarget> exportRtList,
-                                            EvpnInstanceName evpnName) {
-        return new EvpnInstance(rd, importRtList, exportRtList, evpnName);
-    }
-
-    /**
-     * Getter of RouteDistinguisher.
-     *
-     * @return RouteDistinguisher
-     */
-    public RouteDistinguisher routeDistinguisher() {
-        return rd;
-    }
-
-    /**
-     * Returns the Route targets.
-     *
-     * @return RouteTarget List
-     */
-
-    public List<VpnRouteTarget> importRouteTarget() {
-        return importRtList;
-    }
-
-    /**
-     * Returns the Route targets.
-     *
-     * @return RouteTarget List
-     */
-    public List<VpnRouteTarget> exportRouteTarget() {
-        return exportRtList;
-    }
-
-    /**
-     * Getter of vpn instance name.
-     *
-     * @return evpnName
-     */
-    public EvpnInstanceName evpnName() {
-        return evpnName;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rd, importRtList, exportRtList, evpnName);
-    }
-
-    @Override
-    public boolean equals(Object other) {
-        if (this == other) {
-            return true;
-        }
-
-        if (!(other instanceof EvpnInstance)) {
-            return false;
-        }
-
-        EvpnInstance that = (EvpnInstance) other;
-
-        return Objects.equals(this.evpnName, that.evpnName)
-                && Objects.equals(this.rd, that.rd)
-                && Objects.equals(this.importRtList, that.importRtList)
-                && Objects.equals(this.exportRtList, that.exportRtList);
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("evpnName", this.evpnName)
-                .add("rd", this.rd).add("import rt", this.importRtList)
-                .add("export rt", this.exportRtList).toString();
-    }
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceName.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceName.java
deleted file mode 100644
index f1ea22a..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceName.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.Objects;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-/**
- * Represents the EvpnInstanceName.
- */
-public final class EvpnInstanceName {
-    private final String evpnName;
-
-    /**
-     * Constructor to initialize the parameters.
-     *
-     * @param evpnName EvpnInstanceName
-     */
-    private EvpnInstanceName(String evpnName) {
-        this.evpnName = evpnName;
-    }
-
-    /**
-     * Creates instance of EvpnInstanceName.
-     *
-     * @param evpnName evpnName
-     * @return evpnInstanceName
-     */
-    public static EvpnInstanceName evpnName(String evpnName) {
-        return new EvpnInstanceName(evpnName);
-    }
-
-    /**
-     * Get vpn instance name.
-     *
-     * @return evpnName
-     */
-    public String getEvpnName() {
-        return evpnName;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(evpnName);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj instanceof EvpnInstanceName) {
-            EvpnInstanceName other = (EvpnInstanceName) obj;
-            return Objects.equals(this.evpnName, other.evpnName);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("evpnName", evpnName).toString();
-    }
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceNextHop.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceNextHop.java
deleted file mode 100644
index 49ad2c5..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceNextHop.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.Objects;
-
-import org.onlab.packet.IpAddress;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-/**
- * Represents a evpn instance nexthop.
- */
-public final class EvpnInstanceNextHop {
-
-    private final IpAddress nextHop;
-    private final Label label;
-
-    /**
-     * Constructor to initialize the parameters.
-     *
-     * @param nextHop nexthop
-     * @param label   label
-     */
-    private EvpnInstanceNextHop(IpAddress nextHop, Label label) {
-        this.nextHop = nextHop;
-        this.label = label;
-    }
-
-    /**
-     * creates instance of EvpnInstanceNextHop.
-     *
-     * @param nextHop nexthop
-     * @param label   label
-     * @return evpnInstanceNexthop
-     */
-    public static EvpnInstanceNextHop evpnNextHop(IpAddress nextHop,
-                                                  Label label) {
-        return new EvpnInstanceNextHop(nextHop, label);
-    }
-
-    /**
-     * Returns the next hop IP address.
-     *
-     * @return next hop
-     */
-    public IpAddress nextHop() {
-        return nextHop;
-    }
-
-    /**
-     * Returns the label.
-     *
-     * @return Label
-     */
-    public Label label() {
-        return label;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(nextHop, label);
-    }
-
-    @Override
-    public boolean equals(Object other) {
-        if (this == other) {
-            return true;
-        }
-
-        if (!(other instanceof EvpnInstanceNextHop)) {
-            return false;
-        }
-
-        EvpnInstanceNextHop that = (EvpnInstanceNextHop) other;
-
-        return Objects.equals(this.nextHop(), that.nextHop())
-                && Objects.equals(this.label, that.label);
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("nextHop", this.nextHop())
-                .add("label", this.label).toString();
-    }
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstancePrefix.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstancePrefix.java
deleted file mode 100644
index 2f30538..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstancePrefix.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.Objects;
-
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Represents a evpn instance prefix.
- */
-public final class EvpnInstancePrefix {
-
-    private final MacAddress macAddress;
-    private final IpPrefix ipPrefix;
-
-    /**
-     * Constructor to initialize the parameters.
-     *
-     * @param macAddress Mac address
-     * @param ipPrefix   IP address
-     */
-    private EvpnInstancePrefix(MacAddress macAddress,
-                               IpPrefix ipPrefix) {
-        checkNotNull(macAddress);
-        this.macAddress = macAddress;
-        this.ipPrefix = ipPrefix;
-    }
-
-    /**
-     * Creates the instance of EvpnInstancePrefix.
-     *
-     * @param macAddress Mac address
-     * @param ipPrefix   IP address
-     * @return Evpn instance prefix
-     */
-    public static EvpnInstancePrefix evpnPrefix(MacAddress macAddress,
-                                                IpPrefix ipPrefix) {
-        return new EvpnInstancePrefix(macAddress, ipPrefix);
-    }
-
-    /**
-     * Returns the MAC of the route.
-     *
-     * @return MAC address
-     */
-    public MacAddress macAddress() {
-        return macAddress;
-    }
-
-    /**
-     * Returns the IP prefix of the route.
-     *
-     * @return IP prefix
-     */
-    public IpPrefix ipPrefix() {
-        return ipPrefix;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(macAddress);
-    }
-
-    @Override
-    public boolean equals(Object other) {
-        if (this == other) {
-            return true;
-        }
-
-        if (!(other instanceof EvpnInstancePrefix)) {
-            return false;
-        }
-
-        EvpnInstancePrefix that = (EvpnInstancePrefix) other;
-
-        return Objects.equals(this.macAddress, that.macAddress)
-                && Objects.equals(this.ipPrefix, that.ipPrefix);
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("macAddress", this.macAddress)
-                .add("ipAddress", this.ipPrefix).toString();
-    }
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceRoute.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceRoute.java
deleted file mode 100644
index ca0c8bd8..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceRoute.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.List;
-import java.util.Objects;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Represents a evpn instance route.
- */
-public class EvpnInstanceRoute {
-
-    private final EvpnInstanceName evpnName;
-    private final RouteDistinguisher rd;
-    private List<VpnRouteTarget> importRtList;
-    private List<VpnRouteTarget> exportRtList;
-    private final EvpnInstancePrefix evpnInstancePrefix;
-    private final EvpnInstanceNextHop evpnInstanceNextHop;
-    private final IpPrefix prefix;
-    private final IpAddress nextHop;
-    private final Label label;
-
-    /**
-     * Constructor to initialize the parameters.
-     *
-     * @param evpnName            vpn instance name
-     * @param rd                  route distinguisher
-     * @param importRtList        import route targets
-     * @param exportRtList        export route targets
-     * @param evpnInstancePrefix  evpn intance prefix
-     * @param evpnInstanceNextHop evpn instance nexthop
-     * @param prefix              evpn prefix
-     * @param nextHop             evpn nexthop
-     * @param label               label
-     */
-    public EvpnInstanceRoute(EvpnInstanceName evpnName,
-                             RouteDistinguisher rd,
-                             List<VpnRouteTarget> importRtList,
-                             List<VpnRouteTarget> exportRtList,
-                             EvpnInstancePrefix evpnInstancePrefix,
-                             EvpnInstanceNextHop evpnInstanceNextHop,
-                             IpPrefix prefix,
-                             IpAddress nextHop,
-                             Label label) {
-        checkNotNull(evpnName);
-        checkNotNull(prefix);
-        //checkNotNull(nextHop); //can be NULL in MP un reach
-        checkNotNull(rd);
-
-        this.evpnName = evpnName;
-        this.rd = rd;
-        this.importRtList = importRtList;
-        this.exportRtList = exportRtList;
-        this.prefix = prefix;
-        this.nextHop = nextHop;
-        this.evpnInstancePrefix = evpnInstancePrefix;
-        this.evpnInstanceNextHop = evpnInstanceNextHop;
-        this.label = label;
-    }
-
-    /**
-     * Returns the evpnName.
-     *
-     * @return EvpnInstanceName
-     */
-    public EvpnInstanceName evpnInstanceName() {
-        return evpnName;
-    }
-
-    /**
-     * Returns the route distinguisher.
-     *
-     * @return RouteDistinguisher
-     */
-    public RouteDistinguisher routeDistinguisher() {
-        return rd;
-    }
-
-    /**
-     * Returns the Route targets.
-     *
-     * @return RouteTarget List
-     */
-
-    public List<VpnRouteTarget> importRouteTarget() {
-        return importRtList;
-    }
-
-    /**
-     * Returns the Route targets.
-     *
-     * @return RouteTarget List
-     */
-    public List<VpnRouteTarget> exportRouteTarget() {
-        return exportRtList;
-    }
-
-    /**
-     * Set import list.
-     *
-     * @param importRtList import list
-     */
-    public void setImportRtList(List<VpnRouteTarget> importRtList) {
-        this.importRtList = importRtList;
-    }
-
-    /**
-     * Set export list.
-     *
-     * @param exportRtList export list
-     */
-    public void setExportRtList(List<VpnRouteTarget> exportRtList) {
-        this.exportRtList = exportRtList;
-    }
-
-    /**
-     * Returns EvpnInstancePrefix of the evpn private route.
-     *
-     * @return EvpnInstancePrefix
-     */
-
-    public EvpnInstancePrefix getevpnInstancePrefix() {
-        return evpnInstancePrefix;
-    }
-
-    /**
-     * Returns EvpnInstanceNextHop of the evpn private route.
-     *
-     * @return EvpnInstancePrefix
-     */
-
-    public EvpnInstanceNextHop getEvpnInstanceNextHop() {
-        return evpnInstanceNextHop;
-    }
-
-    /**
-     * Returns prefix of the evpn private route.
-     *
-     * @return EvpnInstancePrefix
-     */
-    public IpPrefix prefix() {
-        return prefix;
-    }
-
-    /**
-     * Returns the label.
-     *
-     * @return EvpnInstanceName
-     */
-    public Label getLabel() {
-        return label;
-    }
-
-    /**
-     * Returns the label.
-     *
-     * @return EvpnInstanceName
-     */
-    public IpAddress getNextHopl() {
-        return nextHop;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(evpnName, prefix, nextHop,
-                            rd, importRtList, exportRtList);
-    }
-
-    @Override
-    public boolean equals(Object other) {
-        if (this == other) {
-            return true;
-        }
-
-        if (!(other instanceof EvpnInstanceRoute)) {
-            return false;
-        }
-
-        EvpnInstanceRoute that = (EvpnInstanceRoute) other;
-
-        return Objects.equals(prefix, that.prefix)
-                && Objects.equals(nextHop, that.nextHop)
-                && Objects.equals(evpnName, that.evpnName)
-                && Objects.equals(rd, that.rd)
-                && Objects.equals(importRtList, that.importRtList)
-                && Objects.equals(exportRtList, that.exportRtList);
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("prefix", prefix)
-                .add("nextHop", nextHop)
-                .add("rd", rd)
-                .add("import rt", importRtList)
-                .add("export rt", exportRtList)
-                .add("evpnName", evpnName)
-                .toString();
-    }
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInternalRouteEvent.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInternalRouteEvent.java
deleted file mode 100644
index 7a71875..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInternalRouteEvent.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import org.onosproject.event.AbstractEvent;
-
-/**
- * Route event for signalling between the store and the manager.
- */
-public class EvpnInternalRouteEvent extends
-        AbstractEvent<EvpnInternalRouteEvent.Type, EvpnRouteSet> {
-
-    /**
-     * Internal route event type.
-     */
-    public enum Type {
-        /**
-         * Indicates a route was added to the store.
-         */
-        ROUTE_ADDED,
-
-        /**
-         * Indicates a route was removed from the store.
-         */
-        ROUTE_REMOVED
-    }
-
-    /**
-     * Creates a new internal route event.
-     *
-     * @param type    route event type
-     * @param subject route set
-     */
-    public EvpnInternalRouteEvent(Type type, EvpnRouteSet subject) {
-        super(type, subject);
-    }
-
-    public EvpnInternalRouteEvent(Type type, EvpnRouteSet subject, long time) {
-        super(type, subject, time);
-    }
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnNextHop.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnNextHop.java
deleted file mode 100644
index ac1e06b..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnNextHop.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.List;
-import java.util.Objects;
-
-import org.onlab.packet.IpAddress;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-/**
- * Represents a evpn next hop.
- */
-public final class EvpnNextHop {
-
-    private final IpAddress nextHop;
-    private final List<VpnRouteTarget> importRtList;
-    private final List<VpnRouteTarget> exportRtList;
-    private final Label label;
-
-    /**
-     * Constructor to initialize the parameters.
-     *
-     * @param nextHop      evpn next hop
-     * @param importRtList import route targets
-     * @param importRtList export route targets
-     * @param label        label
-     */
-    private EvpnNextHop(IpAddress nextHop, List<VpnRouteTarget> importRtList, List<VpnRouteTarget> exportRtList,
-                        Label label) {
-        this.nextHop = nextHop;
-        this.importRtList = importRtList;
-        this.exportRtList = exportRtList;
-        this.label = label;
-    }
-
-    /**
-     * Creates the Evpn Next hop with given parameters.
-     *
-     * @param nextHop      Next  hop of the route
-     * @param importRtList route target import list
-     * @param exportRtList route target export list
-     * @param label        label of evpn route
-     * @return EvpnNextHop
-     */
-    public static EvpnNextHop evpnNextHop(IpAddress nextHop, List<VpnRouteTarget> importRtList,
-                                          List<VpnRouteTarget> exportRtList,
-                                          Label label) {
-        return new EvpnNextHop(nextHop, importRtList, exportRtList, label);
-    }
-
-    /**
-     * Returns the next hop IP address.
-     *
-     * @return next hop
-     */
-    public IpAddress nextHop() {
-        return nextHop;
-    }
-
-    /**
-     * Returns the Route targets.
-     *
-     * @return RouteTarget List
-     */
-
-    public List<VpnRouteTarget> importRouteTarget() {
-        return importRtList;
-    }
-
-    /**
-     * Returns the Route targets.
-     *
-     * @return RouteTarget List
-     */
-    public List<VpnRouteTarget> exportRouteTarget() {
-        return exportRtList;
-    }
-
-    /**
-     * Returns the label of evpn route.
-     *
-     * @return Label
-     */
-    public Label label() {
-        return label;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(nextHop, importRtList, exportRtList, label);
-    }
-
-    @Override
-    public boolean equals(Object other) {
-        if (this == other) {
-            return true;
-        }
-
-        if (!(other instanceof EvpnNextHop)) {
-            return false;
-        }
-
-        EvpnNextHop that = (EvpnNextHop) other;
-
-        return Objects.equals(this.nextHop(), that.nextHop())
-                && Objects.equals(this.importRtList, that.importRtList)
-                && Objects.equals(this.exportRtList, that.exportRtList)
-                && Objects.equals(this.label, that.label);
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("nextHop", this.nextHop())
-                .add("import rt list", this.importRtList).add("export rt list", this.exportRtList)
-                .add("label", this.label).toString();
-    }
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnPrefix.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnPrefix.java
deleted file mode 100644
index 3f70ef5..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnPrefix.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.Objects;
-
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Represents a evpn prefix.
- */
-public final class EvpnPrefix {
-
-    private final RouteDistinguisher rd;
-    private final MacAddress macAddress;
-    private final IpPrefix ipAddress;
-
-    /**
-     * Constructor to initialize the parameters.
-     *
-     * @param rd         route distinguisher
-     * @param macAddress mac address
-     * @param ipAddress  IP address
-     */
-    public EvpnPrefix(RouteDistinguisher rd, MacAddress macAddress,
-                      IpPrefix ipAddress) {
-        checkNotNull(rd);
-        checkNotNull(macAddress);
-        checkNotNull(ipAddress);
-        this.rd = rd;
-        this.macAddress = macAddress;
-        this.ipAddress = ipAddress;
-    }
-
-    /**
-     * Creates the evpn prefix by given parameters.
-     *
-     * @param rd         route distinguisher
-     * @param macAddress mac address
-     * @param ipAddress  ip address
-     * @return EvpnPrefix
-     */
-    public static EvpnPrefix evpnPrefix(RouteDistinguisher rd,
-                                        MacAddress macAddress,
-                                        IpPrefix ipAddress) {
-        return new EvpnPrefix(rd, macAddress, ipAddress);
-    }
-
-    /**
-     * Returns the route distinguisher.
-     *
-     * @return RouteDistinguisher
-     */
-    public RouteDistinguisher routeDistinguisher() {
-        return rd;
-    }
-
-    /**
-     * Returns the mac address.
-     *
-     * @return MacAddress
-     */
-    public MacAddress macAddress() {
-        return macAddress;
-    }
-
-    /**
-     * Returns the IP address.
-     *
-     * @return Ip4Address
-     */
-    public IpPrefix ipAddress() {
-        return ipAddress;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rd, macAddress, ipAddress);
-    }
-
-    @Override
-    public boolean equals(Object other) {
-        if (this == other) {
-            return true;
-        }
-
-        if (!(other instanceof EvpnPrefix)) {
-            return false;
-        }
-
-        EvpnPrefix that = (EvpnPrefix) other;
-
-        return Objects.equals(this.macAddress(), that.macAddress())
-                && Objects.equals(this.ipAddress, that.ipAddress)
-                && Objects.equals(this.rd, that.rd);
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("macAddress", this.macAddress())
-                .add("ipAddress", this.ipAddress()).add("rd", this.rd)
-                .toString();
-    }
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRoute.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRoute.java
deleted file mode 100644
index 0f025d3..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRoute.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.List;
-import java.util.Objects;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Represents a evpn route.
- */
-public class EvpnRoute {
-
-
-    /**
-     * Source of the route.
-     */
-    public enum Source {
-        /**
-         * Route came from app source.
-         */
-        LOCAL,
-
-        /**
-         * Route came from remote bgp peer source.
-         */
-        REMOTE,
-    }
-
-    private final Source source;
-    private final MacAddress prefixMac;
-    private final IpPrefix prefix;
-    private final IpAddress nextHop;
-    private final RouteDistinguisher rd;
-    private List<VpnRouteTarget> importRtList;
-    private List<VpnRouteTarget> exportRtList;
-    private final Label label;
-
-    /**
-     * Constructor to initialize the parameters.
-     *
-     * @param source       route source
-     * @param prefixMac    mac address
-     * @param prefix       ip address
-     * @param nextHop      evpn nexthop
-     * @param rd           route distinguisher
-     * @param importRtList import route targets
-     * @param exportRtList export route targets
-     * @param label        evpn route label
-     */
-    public EvpnRoute(Source source,
-                     MacAddress prefixMac,
-                     IpPrefix prefix,
-                     IpAddress nextHop,
-                     RouteDistinguisher rd,
-                     List<VpnRouteTarget> importRtList,
-                     List<VpnRouteTarget> exportRtList,
-                     Label label) {
-
-        checkNotNull(prefixMac);
-        checkNotNull(prefix);
-        //checkNotNull(nextHop);//next hop can be null in case of MP un reach.
-        checkNotNull(rd);
-        checkNotNull(label);
-        this.source = checkNotNull(source);
-        this.prefix = prefix;
-        this.prefixMac = prefixMac;
-        this.nextHop = nextHop;
-        this.rd = rd;
-        this.importRtList = importRtList;
-        this.exportRtList = exportRtList;
-        this.label = label;
-    }
-
-    /**
-     * Constructor to initialize the parameters.
-     *
-     * @param source       route source
-     * @param prefixMac    mac address
-     * @param prefix       ip address
-     * @param nextHop      evpn nexthop
-     * @param rdToString   route distinguisher
-     * @param importRtList import route targets
-     * @param exportRtList export route targets
-     * @param labelToInt   evpn route label
-     */
-    public EvpnRoute(Source source,
-                     MacAddress prefixMac,
-                     IpPrefix prefix,
-                     IpAddress nextHop,
-                     String rdToString,
-                     List<VpnRouteTarget> importRtList,
-                     List<VpnRouteTarget> exportRtList,
-                     int labelToInt) {
-        checkNotNull(prefixMac);
-        checkNotNull(prefix);
-        //checkNotNull(nextHop); //next hop can be null in case of MP un reach.
-        this.source = checkNotNull(source);
-        this.prefix = prefix;
-        this.prefixMac = prefixMac;
-        this.nextHop = nextHop;
-        this.rd = RouteDistinguisher.routeDistinguisher(rdToString);
-        this.importRtList = importRtList;
-        this.exportRtList = exportRtList;
-        this.label = Label.label(labelToInt);
-    }
-
-    /**
-     * Returns the route source.
-     *
-     * @return route source
-     */
-    public Source source() {
-        return source;
-    }
-
-    /**
-     * Returns the address.
-     *
-     * @return MacAddress
-     */
-    public MacAddress prefixMac() {
-        return prefixMac;
-    }
-
-    /**
-     * Returns the IPv4 address.
-     *
-     * @return Ip4Address
-     */
-    public IpPrefix prefixIp() {
-        return prefix;
-    }
-
-    /**
-     * Returns the IPv4 address.
-     *
-     * @return Ip4Address
-     */
-    public EvpnPrefix evpnPrefix() {
-        return new EvpnPrefix(rd, prefixMac,
-                              prefix);
-    }
-
-
-    /**
-     * Returns the next hop IP address.
-     *
-     * @return Ip4Address
-     */
-    public IpAddress ipNextHop() {
-        return nextHop;
-    }
-
-    public EvpnNextHop nextHop() {
-        return EvpnNextHop.evpnNextHop(nextHop,
-                                       importRtList,
-                                       exportRtList,
-                                       label);
-    }
-
-    /**
-     * Returns the routeDistinguisher.
-     *
-     * @return RouteDistinguisher
-     */
-    public RouteDistinguisher routeDistinguisher() {
-        return rd;
-    }
-
-    /**
-     * Returns the Route targets.
-     *
-     * @return RouteTarget List
-     */
-
-    public List<VpnRouteTarget> importRouteTarget() {
-        return importRtList;
-    }
-
-    /**
-     * Returns the Route targets.
-     *
-     * @return RouteTarget List
-     */
-    public List<VpnRouteTarget> exportRouteTarget() {
-        return exportRtList;
-    }
-
-    /**
-     * Set import list.
-     *
-     * @param importRtList import list
-     */
-    public void setImportRtList(List<VpnRouteTarget> importRtList) {
-        this.importRtList = importRtList;
-    }
-
-    /**
-     * Set export list.
-     *
-     * @param exportRtList export list
-     */
-    public void setExportRtList(List<VpnRouteTarget> exportRtList) {
-        this.exportRtList = exportRtList;
-    }
-
-    /**
-     * Returns the label.
-     *
-     * @return Label
-     */
-    public Label label() {
-        return label;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(prefixMac,
-                            prefix,
-                            nextHop,
-                            rd,
-                            importRtList,
-                            exportRtList,
-                            label);
-    }
-
-    @Override
-    public boolean equals(Object other) {
-        if (this == other) {
-            return true;
-        }
-
-        if (!(other instanceof EvpnRoute)) {
-            return false;
-        }
-
-        EvpnRoute that = (EvpnRoute) other;
-
-        return Objects.equals(prefixMac, that.prefixMac)
-                && Objects.equals(prefix, that.prefix)
-                && Objects.equals(nextHop, that.nextHop)
-                && Objects.equals(this.rd, that.rd)
-                && Objects.equals(this.importRtList, that.importRtList)
-                && Objects.equals(this.exportRtList, that.exportRtList)
-                && Objects.equals(this.label, that.label);
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("prefixMac", prefixMac)
-                .add("prefix", prefix)
-                .add("nextHop", nextHop)
-                .add("rd", this.rd)
-                .add("import rt", this.importRtList)
-                .add("export rt", this.exportRtList)
-                .add("label", this.label)
-                .toString();
-    }
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteAdminService.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteAdminService.java
deleted file mode 100644
index cc9e200..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteAdminService.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.Collection;
-
-/**
- * Service allowing mutation of EVPN routing state.
- */
-public interface EvpnRouteAdminService extends EvpnRouteService {
-
-    /**
-     * Updates the given routes in the route service.
-     *
-     * @param routes collection of routes to update
-     */
-    void update(Collection<EvpnRoute> routes);
-
-    /**
-     * Withdraws the given routes from the route service.
-     *
-     * @param routes collection of routes to withdraw
-     */
-    void withdraw(Collection<EvpnRoute> routes);
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteEvent.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteEvent.java
deleted file mode 100644
index 5e7f83a..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteEvent.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Objects;
-
-import org.onlab.util.Tools;
-import org.onosproject.event.AbstractEvent;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-/**
- * Describes an event about a route.
- */
-public class EvpnRouteEvent extends AbstractEvent<EvpnRouteEvent.Type,
-        EvpnRoute> {
-
-    private final EvpnRoute prevSubject;
-    private final Collection<EvpnRoute> alternativeRoutes;
-
-    /**
-     * Route event type.
-     */
-    public enum Type {
-
-        /**
-         * Route is new and the next hop is resolved.
-         * <p>
-         * The subject of this event should be the route being added.
-         * The prevSubject of this event should be null.
-         * </p>
-         */
-        ROUTE_ADDED,
-
-        /**
-         * Route has updated information.
-         * <p>
-         * The subject of this event should be the new route.
-         * The prevSubject of this event should be the old route.
-         * </p>
-         */
-        ROUTE_UPDATED,
-
-        /**
-         * Route was removed or the next hop becomes unresolved.
-         * <p>
-         * The subject of this event should be the route being removed.
-         * The prevSubject of this event should be null.
-         * </p>
-         */
-        ROUTE_REMOVED,
-
-        /**
-         * The set of alternative routes for the subject's prefix has changed,
-         * but the best route is still the same.
-         * <p>
-         * The subject is the best route for the prefix (which has already been
-         * notified in a previous event).
-         * The prevSubject of this event is null.
-         * The alternatives contains the new set of alternative routes.
-         * </p>
-         */
-        ALTERNATIVE_ROUTES_CHANGED
-    }
-
-    /**
-     * Creates a new route event without specifying previous subject.
-     *
-     * @param type    event type
-     * @param subject event subject
-     */
-    public EvpnRouteEvent(Type type, EvpnRoute subject) {
-        this(type, subject, null, Collections.emptySet());
-    }
-
-    /**
-     * Creates a new route event without specifying previous subject.
-     *
-     * @param type         event type
-     * @param subject      event subject
-     * @param alternatives alternative routes for subject's prefix
-     */
-    public EvpnRouteEvent(Type type, EvpnRoute subject,
-                          Collection<EvpnRoute> alternatives) {
-        this(type, subject, null, alternatives);
-    }
-
-    /**
-     * Creates a new route event.
-     *
-     * @param type    event type
-     * @param subject event subject
-     * @param time    event time
-     */
-    protected EvpnRouteEvent(Type type, EvpnRoute subject, long time) {
-        super(type, subject, time);
-        this.prevSubject = null;
-
-        this.alternativeRoutes = Collections.emptySet();
-    }
-
-    /**
-     * Creates a new route event with previous subject.
-     *
-     * @param type        event type
-     * @param subject     event subject
-     * @param prevSubject previous subject
-     */
-    public EvpnRouteEvent(Type type, EvpnRoute subject, EvpnRoute prevSubject) {
-        this(type, subject, prevSubject, Collections.emptySet());
-    }
-
-    /**
-     * Creates a new route event with a previous subject and alternative routes.
-     *
-     * @param type         event type
-     * @param subject      event subject
-     * @param prevSubject  previous subject
-     * @param alternatives alternative routes for subject's prefix
-     */
-    public EvpnRouteEvent(Type type, EvpnRoute subject, EvpnRoute prevSubject,
-                          Collection<EvpnRoute> alternatives) {
-        super(type, subject);
-        this.prevSubject = prevSubject;
-        this.alternativeRoutes = alternatives;
-    }
-
-    /**
-     * Returns the previous subject of the event.
-     *
-     * @return previous subject to which this event pertains
-     */
-    public EvpnRoute prevSubject() {
-        return prevSubject;
-    }
-
-    /**
-     * Returns the set of alternative routes for the subject's prefix.
-     *
-     * @return alternative routes
-     */
-    public Collection<EvpnRoute> alternatives() {
-        return alternativeRoutes;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(subject(), type(), prevSubject(), alternativeRoutes);
-    }
-
-    @Override
-    public boolean equals(Object other) {
-        if (this == other) {
-            return true;
-        }
-
-        if (!(other instanceof EvpnRouteEvent)) {
-            return false;
-        }
-
-        EvpnRouteEvent that = (EvpnRouteEvent) other;
-
-        return Objects.equals(this.subject(), that.subject()) &&
-                Objects.equals(this.type(), that.type()) &&
-                Objects.equals(this.prevSubject, that.prevSubject) &&
-                Objects.equals(this.alternativeRoutes, that.alternativeRoutes);
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("time", Tools.defaultOffsetDataTime(time()))
-                .add("type", type())
-                .add("subject", subject())
-                .add("prevSubject", prevSubject)
-                .add("alternatives", alternativeRoutes)
-                .toString();
-    }
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteListener.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteListener.java
deleted file mode 100644
index 32a35c2..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import org.onosproject.event.EventListener;
-
-/**
- * Listener for route events.
- */
-public interface EvpnRouteListener extends EventListener<EvpnRouteEvent> {
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteService.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteService.java
deleted file mode 100644
index ca9c031..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteService.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.Collection;
-
-import org.onosproject.event.ListenerService;
-
-/**
- * EVPN route service.
- */
-public interface EvpnRouteService extends ListenerService<EvpnRouteEvent,
-        EvpnRouteListener> {
-
-
-    /**
-     * Returns the set of route tables in the system.
-     *
-     * @return collection of route table IDs.
-     */
-    Collection<EvpnRouteTableId> getRouteTables();
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteSet.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteSet.java
deleted file mode 100644
index 707df22..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteSet.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.Objects;
-import java.util.Set;
-
-import com.google.common.collect.ImmutableSet;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * A set of routes for a particular prefix in a route table.
- */
-public class EvpnRouteSet {
-    private final EvpnRouteTableId tableId;
-
-    private final EvpnPrefix prefix;
-    private final Set<EvpnRoute> routes;
-
-    /**
-     * Creates a new route set.
-     *
-     * @param tableId route table ID
-     * @param prefix  IP prefix
-     * @param routes  routes for the given prefix
-     */
-    public EvpnRouteSet(EvpnRouteTableId tableId, EvpnPrefix prefix, Set<EvpnRoute>
-            routes) {
-        this.tableId = checkNotNull(tableId);
-        this.prefix = checkNotNull(prefix);
-        this.routes = ImmutableSet.copyOf(checkNotNull(routes));
-    }
-
-    /**
-     * Returns the route table ID.
-     *
-     * @return route table ID
-     */
-    public EvpnRouteTableId tableId() {
-        return tableId;
-    }
-
-    /**
-     * Returns the IP prefix.
-     *
-     * @return IP prefix
-     */
-    public EvpnPrefix prefix() {
-        return prefix;
-    }
-
-    /**
-     * Returns the set of routes.
-     *
-     * @return routes
-     */
-    public Set<EvpnRoute> routes() {
-        return routes;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(tableId, prefix, routes);
-    }
-
-    @Override
-    public boolean equals(Object other) {
-        if (this == other) {
-            return true;
-        }
-
-        if (!(other instanceof EvpnRouteSet)) {
-            return false;
-        }
-
-        EvpnRouteSet that = (EvpnRouteSet) other;
-
-        return Objects.equals(this.tableId, that.tableId) &&
-                Objects.equals(this.prefix, that.prefix) &&
-                Objects.equals(this.routes, that.routes);
-    }
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStore.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStore.java
deleted file mode 100644
index c06704f..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStore.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.Collection;
-import java.util.Set;
-
-import org.onlab.packet.IpAddress;
-import org.onosproject.store.Store;
-
-/**
- * EVPN route store.
- */
-public interface EvpnRouteStore extends Store<EvpnInternalRouteEvent,
-        EvpnRouteStoreDelegate> {
-
-    /**
-     * Adds or updates the given route in the store.
-     *
-     * @param route route to add or update
-     */
-    void updateRoute(EvpnRoute route);
-
-    /**
-     * Removes the given route from the store.
-     *
-     * @param route route to remove
-     */
-    void removeRoute(EvpnRoute route);
-
-    /**
-     * Returns the IDs for all route tables in the store.
-     *
-     * @return route table IDs
-     */
-    Set<EvpnRouteTableId> getRouteTables();
-
-    /**
-     * Returns the routes in the given route table, grouped by prefix.
-     *
-     * @param table route table ID
-     * @return routes
-     */
-    Collection<EvpnRouteSet> getRoutes(EvpnRouteTableId table);
-
-    /**
-     * Returns the routes that point to the given next hop IP address.
-     *
-     * @param ip IP address of the next hop
-     * @return routes for the given next hop
-     */
-    // TODO think about including route table info
-    Collection<EvpnRoute> getRoutesForNextHop(IpAddress ip);
-
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStoreDelegate.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStoreDelegate.java
deleted file mode 100644
index d714adc..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStoreDelegate.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import org.onosproject.store.StoreDelegate;
-
-/**
- * Route store delegate abstraction.
- */
-public interface EvpnRouteStoreDelegate extends
-        StoreDelegate<EvpnInternalRouteEvent> {
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteTableId.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteTableId.java
deleted file mode 100644
index 846a8d1..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteTableId.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.Objects;
-
-/**
- * Identifier for an EVPN routing table.
- */
-public class EvpnRouteTableId {
-    private final String name;
-
-    /**
-     * Creates a new route table ID.
-     *
-     * @param name unique name for the route table
-     */
-    public EvpnRouteTableId(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Returns the name of the route table.
-     *
-     * @return table name
-     */
-    public String name() {
-        return name;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj instanceof EvpnRouteTableId) {
-            EvpnRouteTableId that = (EvpnRouteTableId) obj;
-
-            return Objects.equals(this.name, that.name);
-        }
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(name);
-    }
-
-    @Override
-    public String toString() {
-        return name;
-    }
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnTable.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnTable.java
deleted file mode 100755
index 0b3379f..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnTable.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.Collection;
-
-import org.onlab.packet.IpAddress;
-
-/**
- * Represents a route table that stores routes.
- */
-public interface EvpnTable {
-
-    /**
-     * Adds a route to the route table.
-     *
-     * @param route route
-     */
-    void update(EvpnRoute route);
-
-    /**
-     * Removes a route from the route table.
-     *
-     * @param route route
-     */
-    void remove(EvpnRoute route);
-
-    /**
-     * Returns the route table ID.
-     *
-     * @return route table ID
-     */
-    EvpnRouteTableId id();
-
-    /**
-     * Returns all routes in the route table.
-     *
-     * @return collection of routes, grouped by prefix
-     */
-    Collection<EvpnRouteSet> getRoutes();
-
-    /**
-     * Returns the routes in this table pertaining to a given prefix.
-     *
-     * @param prefix IP prefix
-     * @return routes for the prefix
-     */
-    EvpnRouteSet getRoutes(EvpnPrefix prefix);
-
-    /**
-     * Returns all routes that have the given next hop.
-     *
-     * @param nextHop next hop IP address
-     * @return collection of routes
-     */
-    Collection<EvpnRoute> getRoutesForNextHop(IpAddress nextHop);
-
-    /**
-     * Releases route table resources held locally.
-     */
-    void shutdown();
-
-    /**
-     * Releases route table resources across the entire cluster.
-     */
-    void destroy();
-
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/Label.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/Label.java
deleted file mode 100644
index 8d90611..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/Label.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.Objects;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-/**
- * Represents label of the route.
- */
-public final class Label {
-    private final int label;
-
-    /**
-     * Constructor to initialize parameters.
-     *
-     * @param label route label
-     */
-    private Label(int label) {
-        this.label = label;
-    }
-
-    /**
-     * Creates the label for evpn route.
-     *
-     * @param label label of evpn route
-     * @return Label
-     */
-    public static Label label(int label) {
-        return new Label(label);
-    }
-
-    /**
-     * Returns the label.
-     *
-     * @return label
-     */
-    public int getLabel() {
-        return label;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(label);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj instanceof Label) {
-            Label other = (Label) obj;
-            return Objects.equals(label, other.label);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("label", label).toString();
-    }
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/RouteDistinguisher.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/RouteDistinguisher.java
deleted file mode 100644
index ca217b6..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/RouteDistinguisher.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.Objects;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Represents Route Distinguisher of device in the network.
- */
-public final class RouteDistinguisher {
-    private final String routeDistinguisher;
-
-    /**
-     * Constructor to initialize parameters.
-     *
-     * @param routeDistinguisher route distinguisher
-     */
-    private RouteDistinguisher(String routeDistinguisher) {
-        this.routeDistinguisher = routeDistinguisher;
-    }
-
-    /**
-     * Creates the route distinguisher.
-     *
-     * @param routeDistinguisher route distinguisher
-     * @return RouteDistinguisher
-     */
-    public static RouteDistinguisher routeDistinguisher(String routeDistinguisher) {
-        checkNotNull(routeDistinguisher);
-        return new RouteDistinguisher(routeDistinguisher);
-    }
-
-    /**
-     * get route distinguisher.
-     *
-     * @return distinguisher
-     */
-    public String getRouteDistinguisher() {
-        return routeDistinguisher;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(routeDistinguisher);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj instanceof RouteDistinguisher) {
-            RouteDistinguisher other = (RouteDistinguisher) obj;
-            return Objects.equals(this.routeDistinguisher, other.routeDistinguisher);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("routeDistinguisher", this.routeDistinguisher).toString();
-    }
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/VpnRouteTarget.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/VpnRouteTarget.java
deleted file mode 100644
index 51a9a59..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/VpnRouteTarget.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice;
-
-import java.util.Objects;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-/**
- * Represents Route target of vpn instance.
- */
-public final class VpnRouteTarget {
-    private final String routeTarget;
-
-    /**
-     * Constructor to initialize parameters.
-     *
-     * @param routeTarget route target
-     */
-    private VpnRouteTarget(String routeTarget) {
-        this.routeTarget = routeTarget;
-    }
-
-    /**
-     * Creates the vpn route target.
-     *
-     * @param routeTarget route target
-     * @return route target
-     */
-    public static VpnRouteTarget routeTarget(String routeTarget) {
-        return new VpnRouteTarget(routeTarget);
-    }
-
-    /**
-     * get the route target.
-     *
-     * @return route target
-     */
-    public String getRouteTarget() {
-        return routeTarget;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(routeTarget);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj instanceof VpnRouteTarget) {
-            VpnRouteTarget other = (VpnRouteTarget) obj;
-            return Objects.equals(routeTarget, other.routeTarget);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("routeTarget", routeTarget).toString();
-    }
-}
diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/package-info.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/package-info.java
deleted file mode 100644
index 3514c80..0000000
--- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Unicast routing service.
- */
-package org.onosproject.evpnrouteservice;
diff --git a/apps/evpn-route-service/app/BUILD b/apps/evpn-route-service/app/BUILD
deleted file mode 100644
index 6786730..0000000
--- a/apps/evpn-route-service/app/BUILD
+++ /dev/null
@@ -1,8 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + KRYO + [
-    "//core/store/serializers:onos-core-serializers",
-    "//apps/evpn-route-service/api:onos-apps-evpn-route-service-api",
-]
-
-osgi_jar_with_tests(
-    deps = COMPILE_DEPS,
-)
diff --git a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnListenerQueue.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnListenerQueue.java
deleted file mode 100644
index ce3d012..0000000
--- a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnListenerQueue.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice.impl;
-
-import org.onosproject.evpnrouteservice.EvpnRouteEvent;
-
-/**
- * Queues updates for a route listener to ensure they are received in the
- * correct order.
- */
-interface EvpnListenerQueue {
-
-    /**
-     * Posts an event to the listener.
-     *
-     * @param event event
-     */
-    void post(EvpnRouteEvent event);
-
-    /**
-     * Initiates event delivery to the listener.
-     */
-    void start();
-
-    /**
-     * Halts event delivery to the listener.
-     */
-    void stop();
-}
diff --git a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnRouteManager.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnRouteManager.java
deleted file mode 100644
index f13b89a..0000000
--- a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnRouteManager.java
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice.impl;
-
-import org.onosproject.evpnrouteservice.EvpnInternalRouteEvent;
-import org.onosproject.evpnrouteservice.EvpnRoute;
-import org.onosproject.evpnrouteservice.EvpnRouteAdminService;
-import org.onosproject.evpnrouteservice.EvpnRouteEvent;
-import org.onosproject.evpnrouteservice.EvpnRouteListener;
-import org.onosproject.evpnrouteservice.EvpnRouteService;
-import org.onosproject.evpnrouteservice.EvpnRouteSet;
-import org.onosproject.evpnrouteservice.EvpnRouteStore;
-import org.onosproject.evpnrouteservice.EvpnRouteStoreDelegate;
-import org.onosproject.evpnrouteservice.EvpnRouteTableId;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.annotation.concurrent.GuardedBy;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadFactory;
-
-import static java.util.concurrent.Executors.newSingleThreadExecutor;
-import static org.onlab.util.Tools.groupedThreads;
-
-/**
- * Implementation of the EVPN route service.
- */
-@Component(service = { EvpnRouteService.class, EvpnRouteAdminService.class })
-public class EvpnRouteManager implements EvpnRouteService,
-        EvpnRouteAdminService {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected EvpnRouteStore evpnRouteStore;
-
-    @GuardedBy(value = "this")
-    private Map<EvpnRouteListener, EvpnListenerQueue> listeners = new
-            HashMap<>();
-
-    private ThreadFactory threadFactory;
-
-    private EvpnRouteStoreDelegate evpnRouteStoreDelegate = new
-            InternalEvpnRouteStoreDelegate();
-
-    @Activate
-    protected void activate() {
-        threadFactory = groupedThreads("onos/route", "listener-%d", log);
-        evpnRouteStore.setDelegate(evpnRouteStoreDelegate);
-
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        evpnRouteStore.unsetDelegate(evpnRouteStoreDelegate);
-        synchronized (this) {
-            listeners.values().forEach(EvpnListenerQueue::stop);
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     * <p>
-     * In a departure from other services in ONOS, calling addListener will
-     * cause all current routes to be pushed to the listener before any new
-     * events are sent. This allows a listener to easily get the exact set of
-     * routes without worrying about missing any.
-     *
-     * @param listener listener to be added
-     */
-    @Override
-    public void addListener(EvpnRouteListener listener) {
-        synchronized (this) {
-            EvpnListenerQueue l = createListenerQueue(listener);
-
-            evpnRouteStore.getRouteTables().forEach(routeTableId
-                                                            -> {
-                Collection<EvpnRouteSet> routes
-                        = evpnRouteStore.getRoutes(routeTableId);
-                if (routes != null) {
-                    routes.forEach(route -> {
-                        Collection<EvpnRoute> evpnRoutes = route.routes();
-                        for (EvpnRoute evpnRoute : evpnRoutes) {
-                            l.post(new EvpnRouteEvent(
-                                    EvpnRouteEvent.Type.ROUTE_ADDED,
-                                    evpnRoute,
-                                    route.routes()));
-                        }
-                    });
-                }
-            });
-            listeners.put(listener, l);
-
-            l.start();
-            log.debug("Route synchronization complete");
-        }
-    }
-
-    @Override
-    public void removeListener(EvpnRouteListener listener) {
-        synchronized (this) {
-            EvpnListenerQueue l = listeners.remove(listener);
-            if (l != null) {
-                l.stop();
-            }
-        }
-    }
-
-    /**
-     * Posts an event to all listeners.
-     *
-     * @param event event
-     */
-
-    private void post(EvpnRouteEvent event) {
-        if (event != null) {
-            log.debug("Sending event {}", event);
-            synchronized (this) {
-                listeners.values().forEach(l -> l.post(event));
-            }
-        }
-    }
-
-
-    @Override
-    public Collection<EvpnRouteTableId> getRouteTables() {
-        return evpnRouteStore.getRouteTables();
-    }
-
-    @Override
-    public void update(Collection<EvpnRoute> routes) {
-        synchronized (this) {
-            routes.forEach(route -> {
-                log.debug("Received update {}", route);
-                evpnRouteStore.updateRoute(route);
-            });
-        }
-    }
-
-    @Override
-    public void withdraw(Collection<EvpnRoute> routes) {
-        synchronized (this) {
-            routes.forEach(route -> {
-                log.debug("Received withdraw {}", route);
-                evpnRouteStore.removeRoute(route);
-            });
-        }
-    }
-
-    /**
-     * Creates a new listener queue.
-     *
-     * @param listener route listener
-     * @return listener queue
-     */
-    DefaultListenerQueue createListenerQueue(EvpnRouteListener listener) {
-        return new DefaultListenerQueue(listener);
-    }
-
-    /**
-     * Default route listener queue.
-     */
-    private class DefaultListenerQueue implements EvpnListenerQueue {
-
-        private final ExecutorService executorService;
-        private final BlockingQueue<EvpnRouteEvent> queue;
-        private final EvpnRouteListener listener;
-
-        /**
-         * Creates a new listener queue.
-         *
-         * @param listener route listener to queue updates for
-         */
-        public DefaultListenerQueue(EvpnRouteListener listener) {
-            this.listener = listener;
-            queue = new LinkedBlockingQueue<>();
-            executorService = newSingleThreadExecutor(threadFactory);
-        }
-
-        @Override
-        public void post(EvpnRouteEvent event) {
-            queue.add(event);
-        }
-
-        @Override
-        public void start() {
-            executorService.execute(this::poll);
-        }
-
-        @Override
-        public void stop() {
-            executorService.shutdown();
-        }
-
-        private void poll() {
-            while (true) {
-                try {
-                    listener.event(queue.take());
-                } catch (InterruptedException e) {
-                    log.info("Route listener event thread shutting down: {}", e.getMessage());
-                    Thread.currentThread().interrupt();
-                    break;
-                } catch (Exception e) {
-                    log.warn("Exception during route event handler", e);
-                }
-            }
-        }
-    }
-
-    /**
-     * Delegate to receive events from the route store.
-     */
-    private class InternalEvpnRouteStoreDelegate implements
-            EvpnRouteStoreDelegate {
-        EvpnRouteSet routes;
-
-        @Override
-        public void notify(EvpnInternalRouteEvent event) {
-            switch (event.type()) {
-                case ROUTE_ADDED:
-                    routes = event.subject();
-                    if (routes != null) {
-                        Collection<EvpnRoute> evpnRoutes = routes.routes();
-                        for (EvpnRoute evpnRoute : evpnRoutes) {
-                            post(new EvpnRouteEvent(
-                                    EvpnRouteEvent.Type.ROUTE_ADDED,
-                                    evpnRoute,
-                                    routes.routes()));
-                        }
-                    }
-                    break;
-                case ROUTE_REMOVED:
-                    routes = event.subject();
-                    if (routes != null) {
-                        Collection<EvpnRoute> evpnRoutes = routes.routes();
-                        for (EvpnRoute evpnRoute : evpnRoutes) {
-                            post(new EvpnRouteEvent(
-                                    EvpnRouteEvent.Type.ROUTE_REMOVED,
-                                    evpnRoute,
-                                    routes.routes()));
-                        }
-                    }
-                    break;
-                default:
-                    break;
-            }
-        }
-    }
-
-}
diff --git a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/package-info.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/package-info.java
deleted file mode 100644
index 80892c9..0000000
--- a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of route service.
- */
-package org.onosproject.evpnrouteservice.impl;
diff --git a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/DistributedEvpnRouteStore.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/DistributedEvpnRouteStore.java
deleted file mode 100644
index 8917325..0000000
--- a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/DistributedEvpnRouteStore.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice.store;
-
-import com.google.common.collect.ImmutableSet;
-import org.onlab.packet.IpAddress;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.evpnrouteservice.EvpnInternalRouteEvent;
-import org.onosproject.evpnrouteservice.EvpnRoute;
-import org.onosproject.evpnrouteservice.EvpnRouteSet;
-import org.onosproject.evpnrouteservice.EvpnRouteStore;
-import org.onosproject.evpnrouteservice.EvpnRouteStoreDelegate;
-import org.onosproject.evpnrouteservice.EvpnRouteTableId;
-import org.onosproject.evpnrouteservice.EvpnTable;
-import org.onosproject.store.AbstractStore;
-import org.onosproject.store.service.DistributedSet;
-import org.onosproject.store.service.Serializer;
-import org.onosproject.store.service.SetEvent;
-import org.onosproject.store.service.SetEventListener;
-import org.onosproject.store.service.StorageService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import static org.onlab.util.Tools.groupedThreads;
-
-/**
- * Route store based on distributed storage.
- */
-@Component(service = EvpnRouteStore.class)
-public class DistributedEvpnRouteStore extends
-        AbstractStore<EvpnInternalRouteEvent,
-                EvpnRouteStoreDelegate>
-        implements EvpnRouteStore {
-
-    private static final Logger log = LoggerFactory
-            .getLogger(DistributedEvpnRouteStore.class);
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    public StorageService storageService;
-
-    private static final EvpnRouteTableId EVPN_IPV4 = new EvpnRouteTableId("evpn_ipv4");
-    private static final EvpnRouteTableId EVPN_IPV6 = new EvpnRouteTableId("evpn_ipv6");
-
-    private final SetEventListener<EvpnRouteTableId> masterRouteTableListener =
-            new MasterRouteTableListener();
-    private final EvpnRouteStoreDelegate ourDelegate = new
-            InternalEvpnRouteStoreDelegate();
-
-    // Stores the route tables that have been created
-    public DistributedSet<EvpnRouteTableId> masterRouteTable;
-    // Local memory map to store route table object
-    public Map<EvpnRouteTableId, EvpnTable> routeTables;
-
-    private ExecutorService executor;
-
-
-    /**
-     * Sets up distributed route store.
-     */
-    @Activate
-    public void activate() {
-        routeTables = new ConcurrentHashMap<>();
-        executor = Executors.newSingleThreadExecutor(groupedThreads("onos/route", "store", log));
-
-        KryoNamespace masterRouteTableSerializer = KryoNamespace.newBuilder()
-                .register(EvpnRouteTableId.class)
-                .build();
-
-        masterRouteTable = storageService.<EvpnRouteTableId>setBuilder()
-                .withName("onos-master-route-table")
-                .withSerializer(Serializer.using(masterRouteTableSerializer))
-                .build()
-                .asDistributedSet();
-
-        masterRouteTable.forEach(this::createRouteTable);
-
-        masterRouteTable.addListener(masterRouteTableListener);
-
-        // Add default tables (add is idempotent)
-        masterRouteTable.add(EVPN_IPV4);
-        masterRouteTable.add(EVPN_IPV6);
-
-        log.info("Started");
-    }
-
-    /**
-     * Cleans up distributed route store.
-     */
-    @Deactivate
-    public void deactivate() {
-        masterRouteTable.removeListener(masterRouteTableListener);
-
-        routeTables.values().forEach(EvpnTable::shutdown);
-
-        log.info("Stopped");
-    }
-
-    @Override
-    public void updateRoute(EvpnRoute route) {
-        getDefaultRouteTable(route).update(route);
-    }
-
-    @Override
-    public void removeRoute(EvpnRoute route) {
-        getDefaultRouteTable(route).remove(route);
-    }
-
-    @Override
-    public Set<EvpnRouteTableId> getRouteTables() {
-        return ImmutableSet.copyOf(masterRouteTable);
-    }
-
-    @Override
-    public Collection<EvpnRouteSet> getRoutes(EvpnRouteTableId table) {
-        EvpnTable routeTable = routeTables.get(table);
-        if (routeTable == null) {
-            return Collections.emptySet();
-        } else {
-            return ImmutableSet.copyOf(routeTable.getRoutes());
-        }
-    }
-
-    @Override
-    public Collection<EvpnRoute> getRoutesForNextHop(IpAddress ip) {
-        return getDefaultRouteTable(ip).getRoutesForNextHop(ip);
-    }
-
-    private void createRouteTable(EvpnRouteTableId tableId) {
-        routeTables.computeIfAbsent(tableId, id -> new EvpnRouteTable(id,
-                                                                      ourDelegate, storageService, executor));
-    }
-
-    private void destroyRouteTable(EvpnRouteTableId tableId) {
-        EvpnTable table = routeTables.remove(tableId);
-        if (table != null) {
-            table.destroy();
-        }
-    }
-
-    private EvpnTable getDefaultRouteTable(EvpnRoute route) {
-        return getDefaultRouteTable(route.prefixIp().address());
-    }
-
-    private EvpnTable getDefaultRouteTable(IpAddress ip) {
-        EvpnRouteTableId routeTableId = (ip.isIp4()) ? EVPN_IPV4 : EVPN_IPV6;
-        return routeTables.getOrDefault(routeTableId, EmptyEvpnRouteTable
-                .instance());
-    }
-
-    private class InternalEvpnRouteStoreDelegate implements
-            EvpnRouteStoreDelegate {
-        @Override
-        public void notify(EvpnInternalRouteEvent event) {
-            executor.execute(() -> DistributedEvpnRouteStore
-                    .this.notifyDelegate(event));
-        }
-    }
-
-    private class MasterRouteTableListener implements SetEventListener<EvpnRouteTableId> {
-        @Override
-        public void event(SetEvent<EvpnRouteTableId> event) {
-            switch (event.type()) {
-                case ADD:
-                    executor.execute(() -> createRouteTable(event.entry()));
-                    break;
-                case REMOVE:
-                    executor.execute(() -> destroyRouteTable(event.entry()));
-                    break;
-                default:
-                    break;
-            }
-        }
-    }
-}
diff --git a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EmptyEvpnRouteTable.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EmptyEvpnRouteTable.java
deleted file mode 100644
index f49a174..0000000
--- a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EmptyEvpnRouteTable.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice.store;
-
-import org.onlab.packet.IpAddress;
-import org.onosproject.evpnrouteservice.EvpnPrefix;
-import org.onosproject.evpnrouteservice.EvpnRoute;
-import org.onosproject.evpnrouteservice.EvpnRouteSet;
-import org.onosproject.evpnrouteservice.EvpnRouteTableId;
-import org.onosproject.evpnrouteservice.EvpnTable;
-
-import java.util.Collection;
-import java.util.Collections;
-
-/**
- * Route table that contains no routes.
- */
-public final class EmptyEvpnRouteTable implements EvpnTable {
-
-    private final EvpnRouteTableId id = new EvpnRouteTableId("empty");
-
-    private static final EmptyEvpnRouteTable INSTANCE = new EmptyEvpnRouteTable();
-
-    /**
-     * Returns the instance of the empty route table.
-     *
-     * @return empty route table
-     */
-    public static EmptyEvpnRouteTable instance() {
-        return INSTANCE;
-    }
-
-    private EmptyEvpnRouteTable() {
-    }
-
-    @Override
-    public void update(EvpnRoute route) {
-
-    }
-
-    @Override
-    public void remove(EvpnRoute route) {
-
-    }
-
-    @Override
-    public EvpnRouteTableId id() {
-        return id;
-    }
-
-    @Override
-    public Collection<EvpnRouteSet> getRoutes() {
-        return Collections.emptyList();
-    }
-
-    @Override
-    public EvpnRouteSet getRoutes(EvpnPrefix prefix) {
-        return null;
-    }
-
-    @Override
-    public Collection<EvpnRoute> getRoutesForNextHop(IpAddress nextHop) {
-        return Collections.emptyList();
-    }
-
-    @Override
-    public void shutdown() {
-
-    }
-
-    @Override
-    public void destroy() {
-
-    }
-}
diff --git a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EvpnRouteTable.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EvpnRouteTable.java
deleted file mode 100644
index 2c3e07b..0000000
--- a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EvpnRouteTable.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnrouteservice.store;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.evpnrouteservice.EvpnInternalRouteEvent;
-import org.onosproject.evpnrouteservice.EvpnPrefix;
-import org.onosproject.evpnrouteservice.EvpnRoute;
-import org.onosproject.evpnrouteservice.EvpnRouteSet;
-import org.onosproject.evpnrouteservice.EvpnRouteStoreDelegate;
-import org.onosproject.evpnrouteservice.EvpnRouteTableId;
-import org.onosproject.evpnrouteservice.EvpnTable;
-import org.onosproject.evpnrouteservice.Label;
-import org.onosproject.evpnrouteservice.RouteDistinguisher;
-import org.onosproject.evpnrouteservice.VpnRouteTarget;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.ConsistentMap;
-import org.onosproject.store.service.DistributedPrimitive;
-import org.onosproject.store.service.MapEvent;
-import org.onosproject.store.service.MapEventListener;
-import org.onosproject.store.service.Serializer;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.Versioned;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.function.Consumer;
-import java.util.stream.Collectors;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Default implementation of a route table based on a consistent map.
- */
-public class EvpnRouteTable implements EvpnTable {
-
-    private final EvpnRouteTableId id;
-    private final ConsistentMap<EvpnPrefix, Set<EvpnRoute>> routes;
-    private final EvpnRouteStoreDelegate delegate;
-    private final ExecutorService executor;
-    private final RouteTableListener listener = new RouteTableListener();
-
-    private final Consumer<DistributedPrimitive.Status> statusChangeListener;
-
-    /**
-     * Creates a new route table.
-     *
-     * @param id             route table ID
-     * @param delegate       route store delegate to notify of events
-     * @param storageService storage service
-     * @param executor       executor service
-     */
-    public EvpnRouteTable(EvpnRouteTableId id, EvpnRouteStoreDelegate delegate,
-                          StorageService storageService, ExecutorService executor) {
-        this.delegate = checkNotNull(delegate);
-        this.id = checkNotNull(id);
-        this.routes = buildRouteMap(checkNotNull(storageService));
-        this.executor = checkNotNull(executor);
-
-        statusChangeListener = status -> {
-            if (status.equals(DistributedPrimitive.Status.ACTIVE)) {
-                executor.execute(this::notifyExistingRoutes);
-            }
-        };
-        routes.addStatusChangeListener(statusChangeListener);
-
-        notifyExistingRoutes();
-
-        routes.addListener(listener);
-    }
-
-    private void notifyExistingRoutes() {
-        routes.entrySet().stream()
-                .map(e -> new EvpnInternalRouteEvent(
-                        EvpnInternalRouteEvent.Type.ROUTE_ADDED,
-                        new EvpnRouteSet(id, e.getKey(), e.getValue().value())))
-                .forEach(delegate::notify);
-    }
-
-    private ConsistentMap<EvpnPrefix, Set<EvpnRoute>> buildRouteMap(StorageService
-                                                                            storageService) {
-        KryoNamespace routeTableSerializer = KryoNamespace.newBuilder()
-                .register(KryoNamespaces.API)
-                .register(KryoNamespaces.MISC)
-                .register(EvpnRoute.class)
-                .register(EvpnPrefix.class)
-                .register(RouteDistinguisher.class)
-                .register(MacAddress.class)
-                .register(IpPrefix.class)
-                .register(EvpnRoute.Source.class)
-                .register(IpAddress.class)
-                .register(VpnRouteTarget.class)
-                .register(Label.class)
-                .register(EvpnRouteTableId.class)
-                .build();
-        return storageService.<EvpnPrefix, Set<EvpnRoute>>consistentMapBuilder()
-                .withName("onos-evpn-routes-" + id.name())
-                .withRelaxedReadConsistency()
-                .withSerializer(Serializer.using(routeTableSerializer))
-                .build();
-    }
-
-    @Override
-    public EvpnRouteTableId id() {
-        return id;
-    }
-
-    @Override
-    public void shutdown() {
-        routes.removeStatusChangeListener(statusChangeListener);
-        routes.removeListener(listener);
-    }
-
-    @Override
-    public void destroy() {
-        shutdown();
-        routes.destroy();
-    }
-
-    @Override
-    public void update(EvpnRoute route) {
-        routes.compute(route.evpnPrefix(), (prefix, set) -> {
-            if (set == null) {
-                set = new HashSet<>();
-            }
-            set.add(route);
-            return set;
-        });
-    }
-
-    @Override
-    public void remove(EvpnRoute route) {
-        routes.compute(route.evpnPrefix(), (prefix, set) -> {
-            if (set != null) {
-                set.remove(route);
-                if (set.isEmpty()) {
-                    return null;
-                }
-                return set;
-            }
-            return null;
-        });
-    }
-
-    @Override
-    public Collection<EvpnRouteSet> getRoutes() {
-        return routes.entrySet().stream()
-                .map(e -> new EvpnRouteSet(id, e.getKey(), e.getValue().value()))
-                .collect(Collectors.toSet());
-    }
-
-    @Override
-    public EvpnRouteSet getRoutes(EvpnPrefix prefix) {
-        Versioned<Set<EvpnRoute>> routeSet = routes.get(prefix);
-
-        if (routeSet != null) {
-            return new EvpnRouteSet(id, prefix, routeSet.value());
-        }
-        return null;
-    }
-
-    @Override
-    public Collection<EvpnRoute> getRoutesForNextHop(IpAddress nextHop) {
-        // TODO index
-        return routes.values().stream()
-                .flatMap(v -> v.value().stream())
-                .filter(r -> r.nextHop().equals(nextHop))
-                .collect(Collectors.toSet());
-    }
-
-    private class RouteTableListener
-            implements MapEventListener<EvpnPrefix, Set<EvpnRoute>> {
-
-        private EvpnInternalRouteEvent createRouteEvent(
-                EvpnInternalRouteEvent.Type type, MapEvent<EvpnPrefix, Set<EvpnRoute>>
-                event) {
-            Set<EvpnRoute> currentRoutes =
-                    (event.newValue() == null) ? Collections.emptySet() : event.newValue().value();
-            return new EvpnInternalRouteEvent(type, new EvpnRouteSet(id, event
-                    .key(), currentRoutes));
-        }
-
-        @Override
-        public void event(MapEvent<EvpnPrefix, Set<EvpnRoute>> event) {
-            EvpnInternalRouteEvent ire = null;
-            switch (event.type()) {
-                case INSERT:
-                    ire = createRouteEvent(EvpnInternalRouteEvent.Type.ROUTE_ADDED, event);
-                    break;
-                case UPDATE:
-                    if (event.newValue().value().size() > event.oldValue().value().size()) {
-                        ire = createRouteEvent(EvpnInternalRouteEvent.Type.ROUTE_ADDED, event);
-                    } else {
-                        ire = createRouteEvent(EvpnInternalRouteEvent.Type.ROUTE_REMOVED, event);
-                    }
-                    break;
-                case REMOVE:
-                    ire = createRouteEvent(EvpnInternalRouteEvent.Type.ROUTE_REMOVED, event);
-                    break;
-                default:
-                    break;
-            }
-            if (ire != null) {
-                delegate.notify(ire);
-            }
-        }
-    }
-
-}
-
diff --git a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/package-info.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/package-info.java
deleted file mode 100644
index 52e9d6c..0000000
--- a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the unicast routing service.
- */
-package org.onosproject.evpnrouteservice.store;
diff --git a/apps/evpnopenflow/BUILD b/apps/evpnopenflow/BUILD
deleted file mode 100644
index 9e83f90..0000000
--- a/apps/evpnopenflow/BUILD
+++ /dev/null
@@ -1,28 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + JACKSON + KRYO + CLI + [
-    "//apps/tunnel/api:onos-apps-tunnel-api",
-    "//core/store/serializers:onos-core-serializers",
-    "//apps/gluon:onos-apps-gluon",
-    "//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc",
-    "//apps/route-service/api:onos-apps-route-service-api",
-    "//apps/evpn-route-service/api:onos-apps-evpn-route-service-api",
-]
-
-osgi_jar_with_tests(
-    karaf_command_packages = ["org.onosproject.evpnopenflow.rsc.cli"],
-    deps = COMPILE_DEPS,
-)
-
-onos_app(
-    category = "Traffic Engineering",
-    description = "Ethernet VPN (EVPN) introduces a new model for Ethernet services delivery." +
-                  "It enables integrated Layer 2 service over Ethernet with multihoming.",
-    required_apps = [
-        "org.onosproject.route-service",
-        "org.onosproject.evpn-route-service",
-        "org.onosproject.gluon",
-        "org.onosproject.tunnel",
-        "org.onosproject.vtn",
-    ],
-    title = "EVPN OpenFlow",
-    url = "http://onosproject.org",
-)
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/EvpnService.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/EvpnService.java
deleted file mode 100644
index 5a41454..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/EvpnService.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.manager;
-
-import org.onosproject.evpnopenflow.rsc.VpnPort;
-import org.onosproject.evpnrouteservice.EvpnRoute;
-import org.onosproject.net.Host;
-
-/**
- * Service for interacting with the route and host events.
- */
-public interface EvpnService {
-    /**
-     * Transfer remote route to private route and set mpls flows out when
-     * BgpRoute update.
-     *
-     * @param route evpn route
-     */
-    void onBgpEvpnRouteUpdate(EvpnRoute route);
-
-    /**
-     * Transfer remote route to private route and delete mpls flows out when
-     * BgpRoute delete.
-     *
-     * @param route evpn route
-     */
-    void onBgpEvpnRouteDelete(EvpnRoute route);
-
-    /**
-     * Get VPN info from EVPN app store and create route, set flows when host
-     * detected.
-     *
-     * @param host host information
-     */
-    void onHostDetected(Host host);
-
-    /**
-     * Get VPN info from EVPN app store and delete route, set flows when
-     * host
-     * vanished.
-     *
-     * @param host host information
-     */
-    void onHostVanished(Host host);
-
-    /**
-     * Get VPN info from EVPN app store and create route, set flows when
-     * host
-     * detected.
-     *
-     * @param vpnPort vpnPort information
-     */
-    void onVpnPortSet(VpnPort vpnPort);
-
-    /**
-     * Get VPN info from EVPN app store and delete route, set flows when host
-     * vanished.
-     *
-     * @param vpnPort vpnPort information
-     */
-    void onVpnPortDelete(VpnPort vpnPort);
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/impl/EvpnManager.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/impl/EvpnManager.java
deleted file mode 100644
index edfbfd0..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/impl/EvpnManager.java
+++ /dev/null
@@ -1,1130 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.manager.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.google.common.collect.Sets;
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.packet.EthType;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MplsLabel;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.evpnopenflow.manager.EvpnService;
-import org.onosproject.evpnopenflow.rsc.VpnAfConfig;
-import org.onosproject.evpnopenflow.rsc.VpnInstance;
-import org.onosproject.evpnopenflow.rsc.VpnInstanceId;
-import org.onosproject.evpnopenflow.rsc.VpnPort;
-import org.onosproject.evpnopenflow.rsc.VpnPortId;
-import org.onosproject.evpnopenflow.rsc.baseport.BasePortService;
-import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigEvent;
-import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigListener;
-import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigService;
-import org.onosproject.evpnopenflow.rsc.vpninstance.VpnInstanceService;
-import org.onosproject.evpnopenflow.rsc.vpnport.VpnPortEvent;
-import org.onosproject.evpnopenflow.rsc.vpnport.VpnPortListener;
-import org.onosproject.evpnopenflow.rsc.vpnport.VpnPortService;
-import org.onosproject.evpnrouteservice.EvpnInstanceName;
-import org.onosproject.evpnrouteservice.EvpnInstanceNextHop;
-import org.onosproject.evpnrouteservice.EvpnInstancePrefix;
-import org.onosproject.evpnrouteservice.EvpnInstanceRoute;
-import org.onosproject.evpnrouteservice.EvpnNextHop;
-import org.onosproject.evpnrouteservice.EvpnRoute;
-import org.onosproject.evpnrouteservice.EvpnRoute.Source;
-import org.onosproject.evpnrouteservice.EvpnRouteAdminService;
-import org.onosproject.evpnrouteservice.EvpnRouteEvent;
-import org.onosproject.evpnrouteservice.EvpnRouteListener;
-import org.onosproject.evpnrouteservice.EvpnRouteService;
-import org.onosproject.evpnrouteservice.EvpnRouteSet;
-import org.onosproject.evpnrouteservice.EvpnRouteStore;
-import org.onosproject.evpnrouteservice.Label;
-import org.onosproject.evpnrouteservice.RouteDistinguisher;
-import org.onosproject.evpnrouteservice.VpnRouteTarget;
-import org.onosproject.gluon.rsc.GluonConfig;
-import org.onosproject.incubator.net.resource.label.LabelResource;
-import org.onosproject.incubator.net.resource.label.LabelResourceAdminService;
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.incubator.net.resource.label.LabelResourceService;
-import org.onosproject.mastership.MastershipService;
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Host;
-import org.onosproject.net.Port;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.behaviour.ExtensionTreatmentResolver;
-import org.onosproject.net.config.NetworkConfigEvent;
-import org.onosproject.net.config.NetworkConfigListener;
-import org.onosproject.net.config.NetworkConfigService;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.driver.DriverHandler;
-import org.onosproject.net.driver.DriverService;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flow.instructions.ExtensionTreatment;
-import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
-import org.onosproject.net.flowobjective.DefaultForwardingObjective;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
-import org.onosproject.net.flowobjective.ForwardingObjective;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.net.flowobjective.Objective.Operation;
-import org.onosproject.net.host.HostEvent;
-import org.onosproject.net.host.HostListener;
-import org.onosproject.net.host.HostService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.APP_ID;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ARP_PRIORITY;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ARP_RESPONSE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.BASEPORT;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.BGP_EVPN_ROUTE_DELETE_START;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.BGP_EVPN_ROUTE_UPDATE_START;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.BOTH;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.CANNOT_FIND_TUNNEL_PORT_DEVICE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.CANT_FIND_CONTROLLER_DEVICE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.CANT_FIND_VPN_INSTANCE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.CANT_FIND_VPN_PORT;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.DELETE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVPN_OPENFLOW_START;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVPN_OPENFLOW_STOP;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EXPORT_EXTCOMMUNITY;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.FAILED_TO_SET_TUNNEL_DST;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.GET_PRIVATE_LABEL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.HOST_DETECT;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.HOST_VANISHED;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.IFACEID;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.IFACEID_OF_HOST_IS_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.IMPORT_EXTCOMMUNITY;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.INVALID_EVENT_RECEIVED;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.INVALID_ROUTE_TARGET_TYPE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.INVALID_TARGET_RECEIVED;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.MPLS_OUT_FLOWS;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.NETWORK_CONFIG_EVENT_IS_RECEIVED;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.NOT_MASTER_FOR_SPECIFIC_DEVICE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.RELEASE_LABEL_FAILED;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ROUTE_ADD_ARP_RULES;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ROUTE_REMOVE_ARP_RULES;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SET;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SLASH;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SWITCH_CHANNEL_ID;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.TUNNEL_DST;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.UPDATE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_AF_TARGET;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_TARGET;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_BIND;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_TARGET;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_UNBIND;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VXLAN;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_TUNNEL_DST;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Implementation of the EVPN service.
- */
-@Component(immediate = true, service = EvpnService.class)
-public class EvpnManager implements EvpnService {
-    private final Logger log = getLogger(getClass());
-    private static final EthType.EtherType ARP_TYPE = EthType.EtherType.ARP;
-
-    protected ApplicationId appId;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected HostService hostService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected EvpnRouteService evpnRouteService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected EvpnRouteStore evpnRouteStore;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceService deviceService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected EvpnRouteAdminService evpnRouteAdminService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected MastershipService mastershipService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LabelResourceAdminService labelAdminService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LabelResourceService labelService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected VpnInstanceService vpnInstanceService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected FlowObjectiveService flowObjectiveService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DriverService driverService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected VpnPortService vpnPortService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected VpnAfConfigService vpnAfConfigService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigService configService;
-
-    public Set<EvpnInstanceRoute> evpnInstanceRoutes = new HashSet<>();
-    private final HostListener hostListener = new InnerHostListener();
-    private final VpnPortListener vpnPortListner = new InnerVpnPortListener();
-    private final VpnAfConfigListener vpnAfConfigListener = new
-            InnerVpnAfConfigListener();
-    private final InternalRouteEventListener routeListener = new
-            InternalRouteEventListener();
-
-    private final NetworkConfigListener configListener = new
-            InternalNetworkConfigListener();
-
-    @Activate
-    public void activate() {
-        appId = coreService.registerApplication(APP_ID);
-        hostService.addListener(hostListener);
-        vpnPortService.addListener(vpnPortListner);
-        vpnAfConfigService.addListener(vpnAfConfigListener);
-        configService.addListener(configListener);
-        evpnRouteService.addListener(routeListener);
-
-        labelAdminService
-                .createGlobalPool(LabelResourceId.labelResourceId(1),
-                                  LabelResourceId.labelResourceId(1000));
-        log.info(EVPN_OPENFLOW_START);
-    }
-
-    @Deactivate
-    public void deactivate() {
-        hostService.removeListener(hostListener);
-        vpnPortService.removeListener(vpnPortListner);
-        vpnAfConfigService.removeListener(vpnAfConfigListener);
-        configService.removeListener(configListener);
-        log.info(EVPN_OPENFLOW_STOP);
-    }
-
-    @Override
-    public void onBgpEvpnRouteUpdate(EvpnRoute route) {
-        if (EvpnRoute.Source.LOCAL.equals(route.source())) {
-            return;
-        }
-        log.info(BGP_EVPN_ROUTE_UPDATE_START, route);
-        // deal with public route and transfer to private route
-        if (vpnInstanceService.getInstances().isEmpty()) {
-            log.info("unable to get instnaces from vpninstance");
-            return;
-        }
-
-        vpnInstanceService.getInstances().forEach(vpnInstance -> {
-            log.info("got instnaces from vpninstance but not entered here");
-            List<VpnRouteTarget> vpnImportRouteRt = new
-                    LinkedList<>(vpnInstance.getImportRouteTargets());
-            List<VpnRouteTarget> expRt = route.exportRouteTarget();
-            List<VpnRouteTarget> similar = new LinkedList<>(expRt);
-            similar.retainAll(vpnImportRouteRt);
-
-            if (!similar.isEmpty()) {
-                EvpnInstancePrefix evpnPrefix = EvpnInstancePrefix
-                        .evpnPrefix(route.prefixMac(), route.prefixIp());
-
-                EvpnInstanceNextHop evpnNextHop = EvpnInstanceNextHop
-                        .evpnNextHop(route.ipNextHop(), route.label());
-
-                EvpnInstanceRoute evpnPrivateRoute = new
-                        EvpnInstanceRoute(vpnInstance.vpnInstanceName(),
-                                          route.routeDistinguisher(),
-                                          vpnImportRouteRt,
-                                          route.exportRouteTarget(),
-                                          evpnPrefix,
-                                          evpnNextHop,
-                                          route.prefixIp(),
-                                          route.ipNextHop(),
-                                          route.label());
-
-                //update route in route subsystem
-                //TODO: added by shahid
-                evpnInstanceRoutes.add(evpnPrivateRoute);
-
-            }
-        });
-
-        deviceService.getAvailableDevices(Device.Type.SWITCH)
-                .forEach(device -> {
-                    log.info("switch device is found");
-                    Set<Host> hosts = getHostsByVpn(device, route);
-                    for (Host h : hosts) {
-                        addArpFlows(device.id(),
-                                    route,
-                                    Objective.Operation.ADD,
-                                    h);
-                        ForwardingObjective.Builder objective =
-                                getMplsOutBuilder(device.id(),
-                                                  route,
-                                                  h);
-                        log.info(MPLS_OUT_FLOWS, h);
-                        flowObjectiveService.forward(device.id(),
-                                                     objective.add());
-                    }
-                });
-        log.info("no switch device is found");
-    }
-
-    @Override
-    public void onBgpEvpnRouteDelete(EvpnRoute route) {
-        if (EvpnRoute.Source.LOCAL.equals(route.source())) {
-            return;
-        }
-        log.info(BGP_EVPN_ROUTE_DELETE_START, route);
-        // deal with public route deleted and transfer to private route
-        vpnInstanceService.getInstances().forEach(vpnInstance -> {
-            List<VpnRouteTarget> vpnRouteRt = new
-                    LinkedList<>(vpnInstance.getImportRouteTargets());
-            List<VpnRouteTarget> localRt = route.exportRouteTarget();
-            List<VpnRouteTarget> similar = new LinkedList<>(localRt);
-            similar.retainAll(vpnRouteRt);
-
-            if (!similar.isEmpty()) {
-                EvpnInstancePrefix evpnPrefix = EvpnInstancePrefix
-                        .evpnPrefix(route.prefixMac(), route.prefixIp());
-
-                EvpnInstanceNextHop evpnNextHop = EvpnInstanceNextHop
-                        .evpnNextHop(route.ipNextHop(), route.label());
-
-                EvpnInstanceRoute evpnPrivateRoute = new
-                        EvpnInstanceRoute(vpnInstance.vpnInstanceName(),
-                                          route.routeDistinguisher(),
-                                          vpnRouteRt,
-                                          route.exportRouteTarget(),
-                                          evpnPrefix,
-                                          evpnNextHop,
-                                          route.prefixIp(),
-                                          route.ipNextHop(),
-                                          route.label());
-                //TODO: Added by Shahid
-                //evpnRouteAdminService.withdraw(Sets.newHashSet
-                //       (evpnPrivateRoute));
-
-            }
-        });
-        deviceService.getAvailableDevices(Device.Type.SWITCH)
-                .forEach(device -> {
-                    Set<Host> hosts = getHostsByVpn(device, route);
-                    for (Host h : hosts) {
-                        addArpFlows(device.id(),
-                                    route,
-                                    Objective.Operation.REMOVE,
-                                    h);
-                        ForwardingObjective.Builder objective
-                                = getMplsOutBuilder(device.id(),
-                                                    route,
-                                                    h);
-                        flowObjectiveService.forward(device.id(),
-                                                     objective.remove());
-                    }
-                });
-    }
-
-    private void addArpFlows(DeviceId deviceId,
-                             EvpnRoute route,
-                             Operation type,
-                             Host host) {
-        DriverHandler handler = driverService.createHandler(deviceId);
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchEthType(ARP_TYPE.ethType().toShort())
-                .matchArpTpa(route.prefixIp().address().getIp4Address())
-                .matchInPort(host.location().port()).build();
-
-        ExtensionTreatmentResolver resolver = handler
-                .behaviour(ExtensionTreatmentResolver.class);
-        ExtensionTreatment ethSrcToDst = resolver
-                .getExtensionInstruction(ExtensionTreatmentType
-                                                 .ExtensionTreatmentTypes
-                                                 .NICIRA_MOV_ETH_SRC_TO_DST
-                                                 .type());
-        ExtensionTreatment arpShaToTha = resolver
-                .getExtensionInstruction(ExtensionTreatmentType
-                                                 .ExtensionTreatmentTypes
-                                                 .NICIRA_MOV_ARP_SHA_TO_THA
-                                                 .type());
-        ExtensionTreatment arpSpaToTpa = resolver
-                .getExtensionInstruction(ExtensionTreatmentType
-                                                 .ExtensionTreatmentTypes
-                                                 .NICIRA_MOV_ARP_SPA_TO_TPA
-                                                 .type());
-        TrafficTreatment treatment = DefaultTrafficTreatment.builder()
-                .extension(ethSrcToDst, deviceId).setEthSrc(route.prefixMac())
-                .setArpOp(ARP_RESPONSE).extension(arpShaToTha, deviceId)
-                .extension(arpSpaToTpa, deviceId).setArpSha(route.prefixMac())
-                .setArpSpa(route.prefixIp().address().getIp4Address())
-                .setOutput(PortNumber.IN_PORT)
-                .build();
-
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment).withSelector(selector)
-                .fromApp(appId).withFlag(ForwardingObjective.Flag.SPECIFIC)
-                .withPriority(ARP_PRIORITY);
-        if (type.equals(Objective.Operation.ADD)) {
-            log.info(ROUTE_ADD_ARP_RULES);
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            log.info(ROUTE_REMOVE_ARP_RULES);
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-    }
-
-    private Set<Host> getHostsByVpn(Device device, EvpnRoute route) {
-        Set<Host> vpnHosts = Sets.newHashSet();
-        Set<Host> hosts = hostService.getConnectedHosts(device.id());
-        for (Host h : hosts) {
-            String ifaceId = h.annotations().value(IFACEID);
-            if (!vpnPortService.exists(VpnPortId.vpnPortId(ifaceId))) {
-                continue;
-            }
-
-            VpnPort vpnPort = vpnPortService
-                    .getPort(VpnPortId.vpnPortId(ifaceId));
-            VpnInstanceId vpnInstanceId = vpnPort.vpnInstanceId();
-
-            VpnInstance vpnInstance = vpnInstanceService
-                    .getInstance(vpnInstanceId);
-
-            List<VpnRouteTarget> expRt = route.exportRouteTarget();
-            List<VpnRouteTarget> similar = new LinkedList<>(expRt);
-            similar.retainAll(vpnInstance.getImportRouteTargets());
-            //TODO: currently checking for RT comparison.
-            //TODO: Need to check about RD comparison is really required.
-            //if (route.routeDistinguisher()
-            //.equals(vpnInstance.routeDistinguisher())) {
-            if (!similar.isEmpty()) {
-                vpnHosts.add(h);
-            }
-        }
-        return vpnHosts;
-    }
-
-    private ForwardingObjective.Builder getMplsOutBuilder(DeviceId deviceId,
-                                                          EvpnRoute route,
-                                                          Host h) {
-        DriverHandler handler = driverService.createHandler(deviceId);
-        ExtensionTreatmentResolver resolver = handler
-                .behaviour(ExtensionTreatmentResolver.class);
-        ExtensionTreatment treatment = resolver
-                .getExtensionInstruction(NICIRA_SET_TUNNEL_DST.type());
-        try {
-            treatment.setPropertyValue(TUNNEL_DST, route.ipNextHop());
-        } catch (Exception e) {
-            log.error(FAILED_TO_SET_TUNNEL_DST, deviceId);
-        }
-        TrafficTreatment.Builder builder = DefaultTrafficTreatment.builder();
-        builder.extension(treatment, deviceId);
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchInPort(h.location().port()).matchEthSrc(h.mac())
-                .matchEthDst(route.prefixMac()).build();
-
-        TrafficTreatment build = builder.pushMpls()
-                .setMpls(MplsLabel.mplsLabel(route.label().getLabel()))
-                .setOutput(getTunnlePort(deviceId)).build();
-
-        return DefaultForwardingObjective
-                .builder().withTreatment(build).withSelector(selector)
-                .fromApp(appId).withFlag(ForwardingObjective.Flag.SPECIFIC)
-                .withPriority(60000);
-
-    }
-
-    private ForwardingObjective.Builder getMplsInBuilder(DeviceId deviceId,
-                                                         Host host,
-                                                         Label label) {
-        TrafficTreatment.Builder builder = DefaultTrafficTreatment.builder();
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchInPort(getTunnlePort(deviceId))
-                .matchEthType(EthType.EtherType.MPLS_UNICAST.ethType()
-                                      .toShort())
-                .matchMplsBos(true)
-                .matchMplsLabel(MplsLabel.mplsLabel(label.getLabel())).build();
-        TrafficTreatment treatment = builder.popMpls(EthType
-                                                             .EtherType
-                                                             .IPV4.ethType())
-                .setOutput(host.location().port()).build();
-        return DefaultForwardingObjective
-                .builder().withTreatment(treatment).withSelector(selector)
-                .fromApp(appId).withFlag(ForwardingObjective.Flag.SPECIFIC)
-                .withPriority(60000);
-    }
-
-    /**
-     * Get local tunnel ports.
-     *
-     * @param ports Iterable of Port
-     * @return Collection of PortNumber
-     */
-    private Collection<PortNumber> getLocalTunnelPorts(Iterable<Port>
-                                                               ports) {
-        Collection<PortNumber> localTunnelPorts = new ArrayList<>();
-        if (ports != null) {
-            log.info("port value is not null {}", ports);
-            Sets.newHashSet(ports).stream()
-                    .filter(p -> !p.number().equals(PortNumber.LOCAL))
-                    .forEach(p -> {
-                        log.info("number is not matched but no vxlan port");
-                        if (p.annotations().value(AnnotationKeys.PORT_NAME)
-                                .startsWith(VXLAN)) {
-                            localTunnelPorts.add(p.number());
-                        }
-                    });
-        }
-        return localTunnelPorts;
-    }
-
-    private PortNumber getTunnlePort(DeviceId deviceId) {
-        Iterable<Port> ports = deviceService.getPorts(deviceId);
-        Collection<PortNumber> localTunnelPorts = getLocalTunnelPorts(ports);
-        if (localTunnelPorts.isEmpty()) {
-            log.error(CANNOT_FIND_TUNNEL_PORT_DEVICE, deviceId);
-            return null;
-        }
-        return localTunnelPorts.iterator().next();
-    }
-
-    private void setFlows(DeviceId deviceId, Host host, Label label,
-                          List<VpnRouteTarget> rtImport,
-                          Operation type) {
-        log.info("Set the flows to OVS");
-        ForwardingObjective.Builder objective = getMplsInBuilder(deviceId,
-                                                                 host,
-                                                                 label);
-        if (type.equals(Objective.Operation.ADD)) {
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-
-        // download remote flows if and only routes are present.
-        evpnRouteStore.getRouteTables().forEach(routeTableId -> {
-            Collection<EvpnRouteSet> routes
-                    = evpnRouteStore.getRoutes(routeTableId);
-            if (routes != null) {
-                routes.forEach(route -> {
-                    Collection<EvpnRoute> evpnRoutes = route.routes();
-                    for (EvpnRoute evpnRoute : evpnRoutes) {
-                        EvpnRoute evpnRouteTem = evpnRoute;
-                        Set<Host> hostByMac = hostService
-                                .getHostsByMac(evpnRouteTem
-                                                       .prefixMac());
-
-                        if (!hostByMac.isEmpty()
-                                || (!(compareLists(rtImport, evpnRouteTem
-                                .exportRouteTarget())))) {
-                            log.info("Route target import/export is not matched");
-                            continue;
-                        }
-                        log.info("Set the ARP flows");
-                        addArpFlows(deviceId, evpnRouteTem, type, host);
-                        ForwardingObjective.Builder build = getMplsOutBuilder(deviceId,
-                                                                              evpnRouteTem,
-                                                                              host);
-                        log.info("Set the MPLS  flows");
-                        if (type.equals(Objective.Operation.ADD)) {
-                            flowObjectiveService.forward(deviceId, build.add());
-                        } else {
-                            flowObjectiveService.forward(deviceId, build.remove());
-                        }
-                    }
-                });
-            }
-        });
-    }
-
-    /**
-     * comparison for tow lists.
-     *
-     * @param list1 import list
-     * @param list2 export list
-     * @return true or false
-     */
-    public static boolean compareLists(List<VpnRouteTarget> list1,
-                                       List<VpnRouteTarget> list2) {
-        if (list1 == null && list2 == null) {
-            return true;
-        }
-
-        if (list1 != null && list2 != null) {
-            if (list1.size() == list2.size()) {
-                for (VpnRouteTarget li1Long : list1) {
-                    boolean isEqual = false;
-                    for (VpnRouteTarget li2Long : list2) {
-                        if (li1Long.equals(li2Long)) {
-                            isEqual = true;
-                            break;
-                        }
-                    }
-                    if (!isEqual) {
-                        return false;
-                    }
-                }
-            } else {
-                return false;
-            }
-        } else {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public void onHostDetected(Host host) {
-        log.info(HOST_DETECT, host);
-        DeviceId deviceId = host.location().deviceId();
-        if (!mastershipService.isLocalMaster(deviceId)) {
-            log.info(NOT_MASTER_FOR_SPECIFIC_DEVICE);
-            return;
-        }
-
-        String ifaceId = host.annotations().value(IFACEID);
-        if (ifaceId == null) {
-            log.error(IFACEID_OF_HOST_IS_NULL);
-            return;
-        }
-        VpnPortId vpnPortId = VpnPortId.vpnPortId(ifaceId);
-        // Get VPN port id from EVPN app store
-        if (!vpnPortService.exists(vpnPortId)) {
-            log.info(CANT_FIND_VPN_PORT, ifaceId);
-            return;
-        }
-
-        VpnPort vpnPort = vpnPortService.getPort(vpnPortId);
-        VpnInstanceId vpnInstanceId = vpnPort.vpnInstanceId();
-        if (!vpnInstanceService.exists(vpnInstanceId)) {
-            log.info(CANT_FIND_VPN_INSTANCE, vpnInstanceId);
-            return;
-        }
-
-        Label privateLabel = applyLabel();
-        // create private route and get label
-        setPrivateRoute(host, vpnInstanceId, privateLabel,
-                        Objective.Operation.ADD);
-        VpnInstance vpnInstance = vpnInstanceService.getInstance(vpnInstanceId);
-
-        List<VpnRouteTarget> rtImport
-                = new LinkedList<>(vpnInstance.getImportRouteTargets());
-        List<VpnRouteTarget> rtExport
-                = new LinkedList<>(vpnInstance.getExportRouteTargets());
-        //download flows
-        setFlows(deviceId, host, privateLabel, rtImport,
-                 Objective.Operation.ADD);
-    }
-
-    /**
-     * update or withdraw evpn route from route admin service.
-     *
-     * @param host          host
-     * @param vpnInstanceId vpn instance id
-     * @param privateLabel  private label
-     * @param type          operation type
-     */
-    private void setPrivateRoute(Host host, VpnInstanceId vpnInstanceId,
-                                 Label privateLabel,
-                                 Operation type) {
-        DeviceId deviceId = host.location().deviceId();
-        Device device = deviceService.getDevice(deviceId);
-        VpnInstance vpnInstance = vpnInstanceService.getInstance(vpnInstanceId);
-        RouteDistinguisher rd = vpnInstance.routeDistinguisher();
-        Set<VpnRouteTarget> importRouteTargets
-                = vpnInstance.getImportRouteTargets();
-        Set<VpnRouteTarget> exportRouteTargets
-                = vpnInstance.getExportRouteTargets();
-        EvpnInstanceName instanceName = vpnInstance.vpnInstanceName();
-        String url = device.annotations().value(SWITCH_CHANNEL_ID);
-        String controllerIp = url.substring(0, url.lastIndexOf(":"));
-
-        if (controllerIp == null) {
-            log.error(CANT_FIND_CONTROLLER_DEVICE, device.id().toString());
-            return;
-        }
-        IpAddress ipAddress = IpAddress.valueOf(controllerIp);
-        // create private route
-        EvpnInstanceNextHop evpnNextHop = EvpnInstanceNextHop
-                .evpnNextHop(ipAddress, privateLabel);
-        EvpnInstancePrefix evpnPrefix = EvpnInstancePrefix
-                .evpnPrefix(host.mac(), IpPrefix.valueOf(host.ipAddresses()
-                                                                 .iterator()
-                                                                 .next()
-                                                                 .getIp4Address(), 32));
-        EvpnInstanceRoute evpnPrivateRoute
-                = new EvpnInstanceRoute(instanceName,
-                                        rd,
-                                        new LinkedList<>(importRouteTargets),
-                                        new LinkedList<>(exportRouteTargets),
-                                        evpnPrefix,
-                                        evpnNextHop,
-                                        IpPrefix.valueOf(host.ipAddresses()
-                                                                 .iterator()
-                                                                 .next()
-                                                                 .getIp4Address(), 32),
-                                        ipAddress,
-                                        privateLabel);
-
-        // change to public route
-        EvpnRoute evpnRoute
-                = new EvpnRoute(Source.LOCAL,
-                                host.mac(),
-                                IpPrefix.valueOf(host.ipAddresses()
-                                                         .iterator()
-                                                         .next()
-                                                         .getIp4Address(), 32),
-                                ipAddress,
-                                rd,
-                                new LinkedList<>(importRouteTargets),
-                                new LinkedList<>(exportRouteTargets),
-                                privateLabel);
-        if (type.equals(Objective.Operation.ADD)) {
-            //evpnRouteAdminService.update(Sets.newHashSet(evpnPrivateRoute));
-            evpnInstanceRoutes.add(evpnPrivateRoute);
-            evpnRouteAdminService.update(Sets.newHashSet(evpnRoute));
-
-        } else {
-            //evpnRouteAdminService.withdraw(Sets.newHashSet(evpnPrivateRoute));
-            evpnInstanceRoutes.remove(evpnPrivateRoute);
-            evpnRouteAdminService.withdraw(Sets.newHashSet(evpnRoute));
-        }
-    }
-
-    /**
-     * Generate the label for evpn route from global pool.
-     */
-    private Label applyLabel() {
-        Collection<LabelResource> privateLabels = labelService
-                .applyFromGlobalPool(1);
-        Label privateLabel = Label.label(0);
-        if (!privateLabels.isEmpty()) {
-            privateLabel = Label.label(Integer.parseInt(
-                    privateLabels.iterator().next()
-                            .labelResourceId().toString()));
-        }
-        log.info(GET_PRIVATE_LABEL, privateLabel);
-        return privateLabel;
-    }
-
-    @Override
-    public void onHostVanished(Host host) {
-        log.info(HOST_VANISHED, host);
-        DeviceId deviceId = host.location().deviceId();
-        if (!mastershipService.isLocalMaster(deviceId)) {
-            return;
-        }
-        String ifaceId = host.annotations().value(IFACEID);
-        if (ifaceId == null) {
-            log.error(IFACEID_OF_HOST_IS_NULL);
-            return;
-        }
-        // Get info from Gluon Shim
-        VpnPort vpnPort = vpnPortService.getPort(VpnPortId.vpnPortId(ifaceId));
-        VpnInstanceId vpnInstanceId = vpnPort.vpnInstanceId();
-        if (!vpnInstanceService.exists(vpnInstanceId)) {
-            log.info(CANT_FIND_VPN_INSTANCE, vpnInstanceId);
-            return;
-        }
-        VpnInstance vpnInstance = vpnInstanceService.getInstance(vpnInstanceId);
-
-        Label label = releaseLabel(vpnInstance, host);
-        // create private route and get label
-        setPrivateRoute(host, vpnInstanceId, label, Objective.Operation.REMOVE);
-        // download flows
-        List<VpnRouteTarget> rtImport
-                = new LinkedList<>(vpnInstance.getImportRouteTargets());
-        List<VpnRouteTarget> rtExport
-                = new LinkedList<>(vpnInstance.getExportRouteTargets());
-        setFlows(deviceId, host, label, rtImport,
-                 Objective.Operation.REMOVE);
-    }
-
-    /**
-     * Release the label from the evpn route.
-     *
-     * @param vpnInstance vpn instance
-     * @param host        host
-     */
-    private Label releaseLabel(VpnInstance vpnInstance, Host host) {
-        EvpnInstanceName instanceName = vpnInstance.vpnInstanceName();
-
-        //Get all vpn-instance routes and check for label.
-        Label label = null;
-        for (EvpnInstanceRoute evpnInstanceRoute : evpnInstanceRoutes) {
-            if (evpnInstanceRoute.evpnInstanceName().equals(instanceName)) {
-                label = evpnInstanceRoute.getLabel();
-                // delete private route and get label ,change to public route
-                boolean isRelease
-                        = labelService
-                        .releaseToGlobalPool(
-                                Sets.newHashSet(
-                                        LabelResourceId
-                                                .labelResourceId(label.getLabel())));
-                if (!isRelease) {
-                    log.error(RELEASE_LABEL_FAILED, label.getLabel());
-                }
-                break;
-            }
-        }
-        return label;
-    }
-
-    private class InternalRouteEventListener implements EvpnRouteListener {
-
-        @Override
-        public void event(EvpnRouteEvent event) {
-            if (event.subject() != null) {
-                EvpnRoute route = (EvpnRoute) event.subject();
-                if (EvpnRouteEvent.Type.ROUTE_ADDED == event.type()) {
-                    onBgpEvpnRouteUpdate(route);
-                } else if (EvpnRouteEvent.Type.ROUTE_REMOVED == event.type()) {
-                    onBgpEvpnRouteDelete(route);
-                }
-            } else {
-                return;
-            }
-        }
-    }
-
-    private class InnerHostListener implements HostListener {
-
-        @Override
-        public void event(HostEvent event) {
-            Host host = event.subject();
-            if (HostEvent.Type.HOST_ADDED == event.type()) {
-                onHostDetected(host);
-            } else if (HostEvent.Type.HOST_REMOVED == event.type()) {
-                onHostVanished(host);
-            }
-        }
-
-    }
-
-    private class InnerVpnPortListener implements VpnPortListener {
-
-        @Override
-        public void event(VpnPortEvent event) {
-            VpnPort vpnPort = event.subject();
-            if (VpnPortEvent.Type.VPN_PORT_DELETE == event.type()) {
-                onVpnPortDelete(vpnPort);
-            } else if (VpnPortEvent.Type.VPN_PORT_SET == event.type()) {
-                onVpnPortSet(vpnPort);
-            }
-        }
-    }
-
-    @Override
-    public void onVpnPortDelete(VpnPort vpnPort) {
-        // delete the flows of this vpn
-        hostService.getHosts().forEach(host -> {
-            VpnPortId vpnPortId = vpnPort.id();
-            VpnInstanceId vpnInstanceId = vpnPort.vpnInstanceId();
-            if (!vpnInstanceService.exists(vpnInstanceId)) {
-                log.error(CANT_FIND_VPN_INSTANCE, vpnInstanceId);
-                return;
-            }
-            VpnInstance vpnInstance = vpnInstanceService
-                    .getInstance(vpnInstanceId);
-            List<VpnRouteTarget> rtImport
-                    = new LinkedList<>(vpnInstance.getImportRouteTargets());
-            List<VpnRouteTarget> rtExport
-                    = new LinkedList<>(vpnInstance.getExportRouteTargets());
-
-            if (vpnPortId.vpnPortId()
-                    .equals(host.annotations().value(IFACEID))) {
-                log.info(VPN_PORT_UNBIND);
-                Label label = releaseLabel(vpnInstance, host);
-                // create private route and get label
-                DeviceId deviceId = host.location().deviceId();
-                setPrivateRoute(host, vpnInstanceId, label,
-                                Objective.Operation.REMOVE);
-                // download flows
-                setFlows(deviceId, host, label, rtImport,
-                         Objective.Operation.REMOVE);
-            }
-        });
-    }
-
-    @Override
-    public void onVpnPortSet(VpnPort vpnPort) {
-        // delete the flows of this vpn
-        hostService.getHosts().forEach(host -> {
-            VpnPortId vpnPortId = vpnPort.id();
-            VpnInstanceId vpnInstanceId = vpnPort.vpnInstanceId();
-            VpnInstance vpnInstance = vpnInstanceService
-                    .getInstance(vpnInstanceId);
-            if (vpnInstance == null) {
-                log.info("why vpn instance is null");
-                return;
-            }
-            List<VpnRouteTarget> rtImport
-                    = new LinkedList<>(vpnInstance.getImportRouteTargets());
-/*            List<VpnRouteTarget> rtExport
-                    = new LinkedList<>(vpnInstance.getExportRouteTargets());*/
-
-            if (!vpnInstanceService.exists(vpnInstanceId)) {
-                log.error(CANT_FIND_VPN_INSTANCE, vpnInstanceId);
-                return;
-            }
-
-            if (vpnPortId.vpnPortId()
-                    .equals(host.annotations().value(IFACEID))) {
-                log.info(VPN_PORT_BIND);
-                Label label = applyLabel();
-                // create private route and get label
-                DeviceId deviceId = host.location().deviceId();
-                setPrivateRoute(host, vpnInstanceId, label,
-                                Objective.Operation.ADD);
-                // download flows
-                setFlows(deviceId, host, label, rtImport,
-                         Objective.Operation.ADD);
-            }
-        });
-    }
-
-    /**
-     * process the gluon configuration and will update the configuration into
-     * vpn port service.
-     *
-     * @param action action
-     * @param key    key
-     * @param value  json node
-     */
-    private void processEtcdResponse(String action, String key, JsonNode
-            value) {
-        String[] list = key.split(SLASH);
-        String target = list[list.length - 2];
-        switch (target) {
-            case VPN_INSTANCE_TARGET:
-                VpnInstanceService vpnInstanceService
-                        = DefaultServiceDirectory
-                        .getService(VpnInstanceService.class);
-                vpnInstanceService.processGluonConfig(action, key, value);
-                break;
-            case VPN_PORT_TARGET:
-                VpnPortService vpnPortService = DefaultServiceDirectory
-                        .getService(VpnPortService.class);
-                vpnPortService.processGluonConfig(action, key, value);
-                break;
-            case VPN_AF_TARGET:
-                VpnAfConfigService vpnAfConfigService =
-                        DefaultServiceDirectory.getService(VpnAfConfigService
-                                                                   .class);
-                vpnAfConfigService.processGluonConfig(action, key, value);
-                break;
-            case BASEPORT:
-                BasePortService basePortService =
-                        DefaultServiceDirectory.getService(BasePortService
-                                                                   .class);
-                basePortService.processGluonConfig(action, key, value);
-                break;
-            default:
-                log.info("why target type is invalid {}", target);
-                log.info(INVALID_TARGET_RECEIVED);
-                break;
-        }
-    }
-
-    /**
-     * parse the gluon configuration received from network config system.
-     *
-     * @param jsonNode json node
-     * @param key      key
-     * @param action   action
-     */
-    private void parseEtcdResponse(JsonNode jsonNode,
-                                   String key,
-                                   String action) {
-        JsonNode modifyValue = null;
-        if (action.equals(SET)) {
-            modifyValue = jsonNode.get(key);
-        }
-        processEtcdResponse(action, key, modifyValue);
-    }
-
-    /**
-     * Listener for network config events.
-     */
-    private class InternalNetworkConfigListener implements
-            NetworkConfigListener {
-
-        @Override
-        public void event(NetworkConfigEvent event) {
-            String subject;
-            log.info(NETWORK_CONFIG_EVENT_IS_RECEIVED, event.type());
-            if (!event.configClass().equals(GluonConfig.class)) {
-                return;
-            }
-            log.info("Event is received from network configuration {}", event
-                    .type());
-            switch (event.type()) {
-                case CONFIG_UPDATED:
-                    subject = (String) event.subject();
-                    GluonConfig gluonConfig = configService
-                            .getConfig(subject, GluonConfig.class);
-                    JsonNode jsonNode = gluonConfig.node();
-                    parseEtcdResponse(jsonNode, subject, SET);
-                    break;
-                case CONFIG_REMOVED:
-                    subject = (String) event.subject();
-                    parseEtcdResponse(null, subject, DELETE);
-                    break;
-                default:
-                    log.info(INVALID_EVENT_RECEIVED);
-                    break;
-            }
-        }
-    }
-
-    /**
-     * update import and export route target information in route admin service.
-     *
-     * @param evpnInstanceName   evpn instance name
-     * @param exportRouteTargets export route targets
-     * @param importRouteTargets import route targets
-     * @param action             action holds update or delete
-     */
-    private void updateImpExpRtInRoute(EvpnInstanceName evpnInstanceName,
-                                       Set<VpnRouteTarget> exportRouteTargets,
-                                       Set<VpnRouteTarget> importRouteTargets,
-                                       String action) {
-
-        for (EvpnInstanceRoute evpnInstanceRoute : evpnInstanceRoutes) {
-            if (evpnInstanceRoute.evpnInstanceName().equals(evpnInstanceName)) {
-                evpnInstanceRoute
-                        .setExportRtList(new LinkedList<>(exportRouteTargets));
-                evpnInstanceRoute
-                        .setImportRtList(new LinkedList<>(importRouteTargets));
-                if (action.equals(UPDATE)) {
-                    evpnInstanceRoutes.add(evpnInstanceRoute);
-                } else if (action.equals(DELETE)) {
-                    evpnInstanceRoutes.remove(evpnInstanceRoute);
-                }
-                //Get the public route and update route targets.
-                EvpnNextHop evpnNextHop = EvpnNextHop
-                        .evpnNextHop(evpnInstanceRoute.getNextHopl(),
-                                     evpnInstanceRoute.importRouteTarget(),
-                                     evpnInstanceRoute.exportRouteTarget(),
-                                     evpnInstanceRoute.getLabel());
-                Collection<EvpnRoute> evpnPublicRoutes
-                        = evpnRouteStore.getRoutesForNextHop(evpnNextHop.nextHop());
-                for (EvpnRoute pubRoute : evpnPublicRoutes) {
-                    EvpnRoute evpnPubRoute = pubRoute;
-                    if (evpnPubRoute.label().equals(evpnInstanceRoute
-                                                            .getLabel())) {
-                        evpnPubRoute
-                                .setExportRtList(new LinkedList<>(exportRouteTargets));
-                        evpnPubRoute
-                                .setImportRtList(new LinkedList<>(importRouteTargets));
-                        if (action.equals(UPDATE)) {
-                            evpnRouteAdminService.update(Sets.newHashSet(evpnPubRoute));
-                        } else if (action.equals(DELETE)) {
-                            evpnRouteAdminService
-                                    .withdraw(Sets.newHashSet(evpnPubRoute));
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * update or withdraw evpn route based on vpn af configuration.
-     *
-     * @param vpnAfConfig vpn af configuration
-     * @param action      action holds update or delete
-     */
-
-    private void processEvpnRouteUpdate(VpnAfConfig vpnAfConfig,
-                                        String action) {
-        Collection<VpnInstance> instances
-                = vpnInstanceService.getInstances();
-        for (VpnInstance vpnInstance : instances) {
-            Set<VpnRouteTarget> configRouteTargets
-                    = vpnInstance.getConfigRouteTargets();
-            for (VpnRouteTarget vpnRouteTarget : configRouteTargets) {
-                if (vpnRouteTarget.equals(vpnAfConfig.routeTarget())) {
-                    Set<VpnRouteTarget> exportRouteTargets
-                            = vpnInstance.getExportRouteTargets();
-                    Set<VpnRouteTarget> importRouteTargets
-                            = vpnInstance.getImportRouteTargets();
-                    String routeTargetType = vpnAfConfig.routeTargetType();
-                    if (action.equals(UPDATE)) {
-                        vpnInstanceService
-                                .updateImpExpRouteTargets(routeTargetType,
-                                                          exportRouteTargets,
-                                                          importRouteTargets,
-                                                          vpnRouteTarget);
-                    } else if (action.equals(DELETE)) {
-                        switch (routeTargetType) {
-                            case EXPORT_EXTCOMMUNITY:
-                                exportRouteTargets.remove(vpnRouteTarget);
-                                break;
-                            case IMPORT_EXTCOMMUNITY:
-                                importRouteTargets.remove(vpnRouteTarget);
-                                break;
-                            case BOTH:
-                                exportRouteTargets.remove(vpnRouteTarget);
-                                importRouteTargets.remove(vpnRouteTarget);
-                                break;
-                            default:
-                                log.info(INVALID_ROUTE_TARGET_TYPE);
-                                break;
-                        }
-                    }
-                    updateImpExpRtInRoute(vpnInstance.vpnInstanceName(),
-                                          exportRouteTargets,
-                                          importRouteTargets,
-                                          action);
-                }
-            }
-        }
-    }
-
-    private class InnerVpnAfConfigListener implements VpnAfConfigListener {
-
-        @Override
-        public void event(VpnAfConfigEvent event) {
-            VpnAfConfig vpnAfConfig = event.subject();
-            if (VpnAfConfigEvent.Type.VPN_AF_CONFIG_DELETE == event.type()) {
-                processEvpnRouteUpdate(vpnAfConfig, DELETE);
-            } else if (VpnAfConfigEvent.Type.VPN_AF_CONFIG_SET
-                    == event.type() || VpnAfConfigEvent.Type
-                    .VPN_AF_CONFIG_UPDATE == event.type()) {
-                processEvpnRouteUpdate(vpnAfConfig, UPDATE);
-            }
-        }
-    }
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/impl/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/impl/package-info.java
deleted file mode 100644
index 8f83161..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/impl/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * EVPN application that process configuration and host, vpn-port, route
- * events.
- */
-package org.onosproject.evpnopenflow.manager.impl;
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/package-info.java
deleted file mode 100644
index d93de24..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * EVPN application that process configuration and host, vpn-port, route
- * events.
- */
-package org.onosproject.evpnopenflow.manager;
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/BasePort.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/BasePort.java
deleted file mode 100644
index 1b2455a..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/BasePort.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc;
-
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.DeviceId;
-import org.onosproject.vtnrsc.AllowedAddressPair;
-import org.onosproject.vtnrsc.BindingHostId;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.SecurityGroup;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-
-import java.util.Collection;
-import java.util.Set;
-
-/**
- * Representation of a Base port.
- */
-public interface BasePort {
-    /**
-     * Coarse classification of the type of the virtual port.
-     */
-    enum State {
-        /**
-         * Signifies that a basePort is currently active,This state mean that
-         * this basePort is available.
-         */
-        ACTIVE,
-        /**
-         * Signifies that a basePort is currently unavailable.
-         */
-        DOWN;
-    }
-
-    /**
-     * Returns the basePort identifier.
-     *
-     * @return basePort identifier
-     */
-    BasePortId portId();
-
-    /**
-     * Returns the network identifier.
-     *
-     * @return tenantNetwork identifier
-     */
-    TenantNetworkId networkId();
-
-    /**
-     * Returns the symbolic name for the basePort.
-     *
-     * @return basePort name
-     */
-    String name();
-
-    /**
-     * Returns the administrative status of the port,which is up(true) or
-     * down(false).
-     *
-     * @return true if the administrative status of the port is up
-     */
-    boolean adminStateUp();
-
-    /**
-     * Returns the state.
-     *
-     * @return state
-     */
-    String state();
-
-    /**
-     * Returns the MAC address.
-     *
-     * @return MAC Address
-     */
-    MacAddress macAddress();
-
-    /**
-     * Returns the port tenantId.
-     *
-     * @return port tenantId
-     */
-    TenantId tenantId();
-
-    /**
-     * Returns the device identifier.
-     *
-     * @return deviceId
-     */
-    DeviceId deviceId();
-
-    /**
-     * Returns the identifier of the entity that uses this port.
-     *
-     * @return deviceOwner
-     */
-    String deviceOwner();
-
-    /**
-     * Returns the basePort allowedAddressPairs.
-     *
-     * @return basePort allowedAddressPairs
-     */
-    Collection<AllowedAddressPair> allowedAddressPairs();
-
-    /**
-     * Returns set of IP addresses for the port, include the IP addresses and subnet
-     * identity.
-     *
-     * @return FixedIps Set of fixedIp
-     */
-    Set<FixedIp> fixedIps();
-
-    /**
-     * Returns the basePort bindinghostId.
-     *
-     * @return basePort bindinghostId
-     */
-    BindingHostId bindingHostId();
-
-    /**
-     * Returns the basePort bindingVnicType.
-     *
-     * @return basePort bindingVnicType
-     */
-    String bindingVnicType();
-
-    /**
-     * Returns the basePort bindingVifType.
-     *
-     * @return basePort bindingVifType
-     */
-    String bindingVifType();
-
-    /**
-     * Returns the basePort bindingvifDetail.
-     *
-     * @return basePort bindingvifDetail
-     */
-    String bindingVifDetails();
-
-    /**
-     * Returns the security groups.
-     *
-     * @return port security groups
-     */
-    Iterable<SecurityGroup> securityGroups();
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/BasePortId.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/BasePortId.java
deleted file mode 100644
index 4eb120a..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/BasePortId.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc;
-
-import org.onlab.util.Identifier;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Immutable representation of a base port identifier.
- */
-public final class BasePortId extends Identifier<String> {
-    // Public construction is prohibited
-    private BasePortId(String basePortId) {
-        super(checkNotNull(basePortId, "BasePortId cannot be null"));
-    }
-
-    public String portId() {
-        return identifier;
-    }
-
-    /**
-     * Creates a virtualPort id using the supplied portId.
-     *
-     * @param portId baseport identifier
-     * @return BasePortId
-     */
-    public static BasePortId portId(String portId) {
-        return new BasePortId(portId);
-    }
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultBasePort.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultBasePort.java
deleted file mode 100644
index ec9e59e..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultBasePort.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc;
-
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.DeviceId;
-import org.onosproject.vtnrsc.AllowedAddressPair;
-import org.onosproject.vtnrsc.BindingHostId;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.SecurityGroup;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-/**
- * Default implementation of Base port.
- */
-public final class DefaultBasePort implements BasePort {
-    private final BasePortId id;
-    private final TenantNetworkId networkId;
-    private final Boolean adminStateUp;
-    private final String name;
-    private final String state;
-    private final MacAddress macAddress;
-    private final TenantId tenantId;
-    private final String deviceOwner;
-    private final DeviceId deviceId;
-    private final Set<FixedIp> fixedIps;
-    private final BindingHostId bindingHostId;
-    private final String bindingVnicType;
-    private final String bindingVifType;
-    private final String bindingVifDetails;
-    private final Set<AllowedAddressPair> allowedAddressPairs;
-    private final Set<SecurityGroup> securityGroups;
-
-    /**
-     * Creates a BasePort object.
-     *
-     * @param id                  the base port identifier
-     * @param networkId           the network identifier
-     * @param adminStateUp        adminStateup true or false
-     * @param strMap              the map of properties of base port
-     * @param state               base port state
-     * @param macAddress          the MAC address
-     * @param tenantId            the tenant identifier
-     * @param deviceId            the device identifier
-     * @param fixedIps            set of fixed IP
-     * @param bindingHostId       the binding host identifier
-     * @param allowedAddressPairs the collection of allowdeAddressPairs
-     * @param securityGroups      the collection of securityGroups
-     */
-    public DefaultBasePort(BasePortId id,
-                           TenantNetworkId networkId,
-                           Boolean adminStateUp,
-                           Map<String, String> strMap,
-                           String state,
-                           MacAddress macAddress,
-                           TenantId tenantId,
-                           DeviceId deviceId,
-                           Set<FixedIp> fixedIps,
-                           BindingHostId bindingHostId,
-                           Set<AllowedAddressPair> allowedAddressPairs,
-                           Set<SecurityGroup> securityGroups) {
-        this.id = id;
-        this.networkId = networkId;
-        this.adminStateUp = adminStateUp;
-        this.name = strMap.get("name");
-        this.state = state;
-        this.macAddress = macAddress;
-        this.tenantId = tenantId;
-        this.deviceOwner = strMap.get("deviceOwner");
-        this.deviceId = deviceId;
-        this.fixedIps = fixedIps;
-        this.bindingHostId = bindingHostId;
-        this.bindingVnicType = strMap.get("bindingVnicType");
-        this.bindingVifType = strMap.get("bindingVifType");
-        this.bindingVifDetails = strMap.get("bindingVifDetails");
-        this.allowedAddressPairs = allowedAddressPairs;
-        this.securityGroups = securityGroups;
-    }
-
-    @Override
-    public BasePortId portId() {
-        return id;
-    }
-
-    @Override
-    public TenantNetworkId networkId() {
-        return networkId;
-    }
-
-    @Override
-    public String name() {
-        return name;
-    }
-
-    @Override
-    public boolean adminStateUp() {
-        return adminStateUp;
-    }
-
-    @Override
-    public String state() {
-        return state;
-    }
-
-    @Override
-    public MacAddress macAddress() {
-        return macAddress;
-    }
-
-    @Override
-    public TenantId tenantId() {
-        return tenantId;
-    }
-
-    @Override
-    public DeviceId deviceId() {
-        return deviceId;
-    }
-
-    @Override
-    public String deviceOwner() {
-        return deviceOwner;
-    }
-
-    @Override
-    public Collection<AllowedAddressPair> allowedAddressPairs() {
-        return allowedAddressPairs;
-    }
-
-    @Override
-    public Set<FixedIp> fixedIps() {
-        return fixedIps;
-    }
-
-    @Override
-    public BindingHostId bindingHostId() {
-        return bindingHostId;
-    }
-
-    @Override
-    public String bindingVnicType() {
-        return bindingVifType;
-    }
-
-    @Override
-    public String bindingVifType() {
-        return bindingVifType;
-    }
-
-    @Override
-    public String bindingVifDetails() {
-        return bindingVifDetails;
-    }
-
-    @Override
-    public Collection<SecurityGroup> securityGroups() {
-        return securityGroups;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(id, networkId, adminStateUp, name, state,
-                            macAddress, tenantId, deviceId, deviceOwner,
-                            allowedAddressPairs, fixedIps, bindingHostId,
-                            bindingVnicType, bindingVifType, bindingVifDetails,
-                            securityGroups);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultBasePort) {
-            final DefaultBasePort that = (DefaultBasePort) obj;
-            return Objects.equals(this.id, that.id)
-                    && Objects.equals(this.networkId, that.networkId)
-                    && Objects.equals(this.adminStateUp, that.adminStateUp)
-                    && Objects.equals(this.state, that.state)
-                    && Objects.equals(this.name, that.name)
-                    && Objects.equals(this.tenantId, that.tenantId)
-                    && Objects.equals(this.macAddress, that.macAddress)
-                    && Objects.equals(this.deviceId, that.deviceId)
-                    && Objects.equals(this.deviceOwner, that.deviceOwner)
-                    && Objects.equals(this.allowedAddressPairs,
-                                      that.allowedAddressPairs)
-                    && Objects.equals(this.fixedIps, that.fixedIps)
-                    && Objects.equals(this.bindingHostId, that.bindingHostId)
-                    && Objects.equals(this.bindingVifDetails,
-                                      that.bindingVifDetails)
-                    && Objects.equals(this.bindingVifType, that.bindingVifType)
-                    && Objects.equals(this.bindingVnicType,
-                                      that.bindingVnicType)
-                    && Objects.equals(this.securityGroups, that.securityGroups);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("id", id).add("network_id", networkId)
-                .add("adminStateUp", adminStateUp).add("state", state)
-                .add("name", name).add("state", state)
-                .add("macAddress", macAddress).add("tenantId", tenantId)
-                .add("deviced", deviceId).add("deviceOwner", deviceOwner)
-                .add("allowedAddressPairs", allowedAddressPairs)
-                .add("fixedIp", fixedIps).add("bindingHostId", bindingHostId)
-                .add("bindingVnicType", bindingVnicType)
-                .add("bindingVifDetails", bindingVifDetails)
-                .add("bindingVifType", bindingVifType)
-                .add("securityGroups", securityGroups).toString();
-    }
-
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnAfConfig.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnAfConfig.java
deleted file mode 100644
index afa32a0..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnAfConfig.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc;
-
-import org.onosproject.evpnrouteservice.VpnRouteTarget;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ID_CANNOT_BE_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.RT_CANNOT_BE_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.RT_TYPE_CANNOT_BE_NULL;
-
-/**
- * Default implementation of VPN AF configuration.
- */
-public class DefaultVpnAfConfig implements VpnAfConfig {
-
-    private final String exportRoutePolicy;
-    private final String importRoutePolicy;
-    private final VpnRouteTarget routeTarget;
-    private final String routeTargetType;
-
-    /**
-     * creates vpn af configuration object.
-     *
-     * @param exportRoutePolicy export route policy
-     * @param importRoutePolicy import route policy
-     * @param routeTarget       route target value
-     * @param routeTargetType   route target type
-     */
-    public DefaultVpnAfConfig(String exportRoutePolicy,
-                              String importRoutePolicy,
-                              VpnRouteTarget routeTarget,
-                              String routeTargetType) {
-        this.exportRoutePolicy = checkNotNull(exportRoutePolicy,
-                                              ID_CANNOT_BE_NULL);
-        this.importRoutePolicy = checkNotNull(importRoutePolicy,
-                                              ID_CANNOT_BE_NULL);
-        this.routeTarget = checkNotNull(routeTarget, RT_CANNOT_BE_NULL);
-        this.routeTargetType = checkNotNull(routeTargetType,
-                                            RT_TYPE_CANNOT_BE_NULL);
-    }
-
-    @Override
-    public String exportRoutePolicy() {
-        return exportRoutePolicy;
-    }
-
-    @Override
-    public String importRoutePolicy() {
-        return importRoutePolicy;
-    }
-
-    @Override
-    public VpnRouteTarget routeTarget() {
-        return routeTarget;
-    }
-
-    @Override
-    public String routeTargetType() {
-        return routeTargetType;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("exportRoutePolicy", exportRoutePolicy)
-                .add("importRoutePolicy", importRoutePolicy)
-                .add("routeTarget", routeTarget)
-                .add("routeTargetType", routeTargetType)
-                .toString();
-    }
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnInstance.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnInstance.java
deleted file mode 100644
index 62b1a70..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnInstance.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc;
-
-import org.onosproject.evpnrouteservice.EvpnInstanceName;
-import org.onosproject.evpnrouteservice.RouteDistinguisher;
-import org.onosproject.evpnrouteservice.VpnRouteTarget;
-
-import java.util.Objects;
-import java.util.Set;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.CONFIG_RT_CANNOT_BE_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.DESCRIPTION;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.DESCRIPTION_CANNOT_BE_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EXPORT_RT_CANNOT_BE_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ID;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ID_CANNOT_BE_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.IMPORT_RT_CANNOT_BE_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.INSTANCE_NAME_CANNOT_BE_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.RD_CANNOT_BE_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ROUTE_DISTINGUISHER;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPNINSTANCE_NAME;
-
-/**
- * Default implementation of VPN instance.
- */
-public class DefaultVpnInstance implements VpnInstance {
-    private final VpnInstanceId id;
-    private final String description;
-    private final EvpnInstanceName name;
-    private final RouteDistinguisher routeDistinguisher;
-    private final Set<VpnRouteTarget> exportRtSet;
-    private final Set<VpnRouteTarget> importRtSet;
-    private final Set<VpnRouteTarget> configRtSet;
-
-
-    /**
-     * creates vpn instance object.
-     *
-     * @param id                 vpn instance identifier
-     * @param instanceName       the name of vpn instance
-     * @param description        the description of vpn instance
-     * @param routeDistinguisher the routeDistinguisher of vpn instance
-     * @param exportRtSet        the export route target information
-     * @param importRtSet        the import route target information
-     * @param configRtSet        the config route target information
-     */
-    public DefaultVpnInstance(VpnInstanceId id, EvpnInstanceName instanceName,
-                              String description,
-                              RouteDistinguisher routeDistinguisher,
-                              Set<VpnRouteTarget> exportRtSet,
-                              Set<VpnRouteTarget> importRtSet,
-                              Set<VpnRouteTarget> configRtSet) {
-        this.id = checkNotNull(id, ID_CANNOT_BE_NULL);
-        this.name = checkNotNull(instanceName, INSTANCE_NAME_CANNOT_BE_NULL);
-        this.description = checkNotNull(description,
-                                        DESCRIPTION_CANNOT_BE_NULL);
-        this.routeDistinguisher = checkNotNull(routeDistinguisher,
-                                               RD_CANNOT_BE_NULL);
-        this.exportRtSet = checkNotNull(exportRtSet, EXPORT_RT_CANNOT_BE_NULL);
-        this.importRtSet = checkNotNull(importRtSet, IMPORT_RT_CANNOT_BE_NULL);
-        this.configRtSet = checkNotNull(configRtSet, CONFIG_RT_CANNOT_BE_NULL);
-    }
-
-    @Override
-    public VpnInstanceId id() {
-        return id;
-    }
-
-    @Override
-    public String description() {
-        return description;
-    }
-
-    @Override
-    public RouteDistinguisher routeDistinguisher() {
-        return routeDistinguisher;
-    }
-
-    @Override
-    public EvpnInstanceName vpnInstanceName() {
-        return name;
-    }
-
-    @Override
-    public Set<VpnRouteTarget> getExportRouteTargets() {
-        return exportRtSet;
-    }
-
-    @Override
-    public Set<VpnRouteTarget> getImportRouteTargets() {
-        return importRtSet;
-    }
-
-    @Override
-    public Set<VpnRouteTarget> getConfigRouteTargets() {
-        return configRtSet;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(id, name, description, routeDistinguisher,
-                            exportRtSet, importRtSet, configRtSet);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultVpnInstance) {
-            final DefaultVpnInstance that = (DefaultVpnInstance) obj;
-            return Objects.equals(this.id, that.id)
-                    && Objects.equals(this.name, that.name)
-                    && Objects.equals(this.description, that.description)
-                    && Objects.equals(this.routeDistinguisher,
-                                      that.routeDistinguisher)
-                    && Objects.equals(this.exportRtSet, that.exportRtSet)
-                    && Objects.equals(this.importRtSet, that.importRtSet)
-                    && Objects.equals(this.configRtSet, that.configRtSet);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add(ID, id)
-                .add(DESCRIPTION, description)
-                .add(VPNINSTANCE_NAME, name)
-                .add(ROUTE_DISTINGUISHER, routeDistinguisher)
-                .add("exportRtSet", exportRtSet)
-                .add("importRtSet", importRtSet)
-                .add("configRtSet", configRtSet)
-                .toString();
-    }
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnPort.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnPort.java
deleted file mode 100644
index c036a5f..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnPort.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc;
-
-import java.util.Objects;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ID;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ID_CANNOT_BE_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_ID;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_ID_CANNOT_BE_NULL;
-
-/**
- * Default implementation of VPN port.
- */
-public class DefaultVpnPort implements VpnPort {
-
-    private final VpnPortId id;
-    private final VpnInstanceId vpnInstanceId;
-
-    /**
-     * creates vpn port object.
-     *
-     * @param id            vpn port id
-     * @param vpnInstanceId vpn instance id
-     */
-    public DefaultVpnPort(VpnPortId id, VpnInstanceId vpnInstanceId) {
-        this.id = checkNotNull(id, ID_CANNOT_BE_NULL);
-        this.vpnInstanceId = checkNotNull(vpnInstanceId,
-                                          VPN_INSTANCE_ID_CANNOT_BE_NULL);
-    }
-
-    @Override
-    public VpnPortId id() {
-        return id;
-    }
-
-    @Override
-    public VpnInstanceId vpnInstanceId() {
-        return vpnInstanceId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(id, vpnInstanceId);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultVpnPort) {
-            final DefaultVpnPort that = (DefaultVpnPort) obj;
-            return Objects.equals(this.id, that.id)
-                    && Objects.equals(this.vpnInstanceId, that.vpnInstanceId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add(ID, id)
-                .add(VPN_INSTANCE_ID, vpnInstanceId).toString();
-    }
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/EvpnConstants.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/EvpnConstants.java
deleted file mode 100644
index 3bb692c..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/EvpnConstants.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc;
-
-/**
- * Provides constants used in EVPN openflow application.
- */
-public final class EvpnConstants {
-    private EvpnConstants() {
-    }
-
-    public static final String APP_ID = "org.onosproject.evpnopenflow";
-    public static final String EVPN_OPENFLOW_START = "evpn-openflow app is " +
-            "started";
-    public static final String EVPN_OPENFLOW_STOP = "evpn-openflow app is " +
-            "stopped";
-    public static final String EVPN_VPN_PORT_START = "EVPN port started";
-    public static final String EVPN_VPN_PORT_STOP = "EVPN port stopped";
-    public static final String EVPN_VPN_INSTANCE_START = "EVPN instance " +
-            "started";
-    public static final String EVPN_VPN_INSTANCE_STOP = "EVPN instance " +
-            "stopped";
-    public static final String HOST_DETECT = "Host detected {}";
-    public static final String HOST_VANISHED = "Host vanished {}";
-    public static final String IFACEID = "ifaceid";
-    public static final String IFACEID_OF_HOST_IS_NULL =
-            "The ifaceId of host is null";
-    public static final String CANT_FIND_VPN_PORT = "Can't find vpnport {}";
-    public static final String CANT_FIND_VPN_INSTANCE = "EVPN instance {} is " +
-            "not exist";
-    public static final String CANT_FIND_CONTROLLER_DEVICE = "Can't find " +
-            "controller of device: {}";
-    public static final String GET_PRIVATE_LABEL = "Get private label {}";
-    public static final String RELEASE_LABEL_FAILED = "Release resoure label " +
-            "{} failed";
-    public static final String VPN_PORT_UNBIND = "On EVPN port unbind";
-    public static final String VPN_PORT_BIND = "On EVPN port bind";
-    public static final String SLASH = "/";
-    public static final String COMMA = ",";
-    public static final String VPN_INSTANCE_TARGET = "VpnService";
-    public static final String VPN_PORT_TARGET = "VpnBinding";
-    public static final String BASEPORT = "Port";
-    public static final String VPN_AF_TARGET = "VpnAfConfig";
-    public static final String BGP_PEERING = "BGPPeering";
-    public static final String DATA_PLANE_TUNNEL = "DataplaneTunnel";
-    public static final String VPN_PORT_STORE = "evpn-port-store";
-    public static final String BASE_PORT_STORE = "evpn-baseport-store";
-    public static final String VPN_INSTANCE_STORE =
-            "evpn-instance-store";
-    public static final String VPN_PORT_ID_NOT_NULL = "EVPN port ID cannot be" +
-            " null";
-    public static final String VPN_PORT_NOT_NULL = "EVPN port cannot be null";
-    public static final String RESPONSE_NOT_NULL = "JsonNode can not be null";
-    public static final String LISTENER_NOT_NULL = "Listener cannot be null";
-    public static final String EVENT_NOT_NULL = "Event cannot be null";
-    public static final String DELETE = "delete";
-    public static final String SET = "set";
-    public static final String UPDATE = "update";
-    public static final String VPN_PORT_ID = "EVPN port ID is  {} ";
-    public static final String VPN_PORT_CREATION_FAILED = "The EVPN port " +
-            "creation is failed whose identifier is {} ";
-    public static final String VPN_PORT_IS_NOT_EXIST = "The EVPN port is not " +
-            "exist whose identifier is {}";
-    public static final String VPN_PORT_UPDATE_FAILED = "The EVPN port update" +
-            " is failed whose identifier is {}";
-    public static final String VPN_PORT_DELETE_FAILED =
-            "The EVPN port delete is failed whose identifier is {}";
-    public static final String INTERFACE_ID = "interface_id";
-    public static final String ID = "id";
-    public static final String VPN_INSTANCE = "service_id";
-    public static final String VPN_INSTANCE_ID_NOT_NULL = "EVPN instance ID " +
-            "cannot be null";
-    public static final String VPN_INSTANCE_NOT_NULL = "EVPN instance cannot " +
-            "be null";
-    public static final String JSON_NOT_NULL = "JsonNode can not be null";
-    public static final String INSTANCE_ID = "EVPN instance ID is  {} ";
-    public static final String VPN_INSTANCE_CREATION_FAILED = "The " +
-            "EVPN instance creation is failed whose identifier is {} ";
-    public static final String VPN_INSTANCE_IS_NOT_EXIST = "The EVPN instance" +
-            " is not exist whose identifier is {}";
-    public static final String VPN_INSTANCE_UPDATE_FAILED = "The EVPN " +
-            "instance update is failed whose identifier is {}";
-    public static final String VPN_INSTANCE_DELETE_FAILED = "The EVPN " +
-            "instance delete is failed whose identifier is {}";
-    public static final String VPN_INSTANCE_NAME = "name";
-    public static final String DESCRIPTION = "description";
-    public static final String ROUTE_DISTINGUISHERS = "route_distinguishers";
-    public static final String IPV4_FAMILY = "ipv4_family";
-    static final String ID_CANNOT_BE_NULL = "ID cannot be null";
-    static final String INSTANCE_NAME_CANNOT_BE_NULL = "Instance name cannot " +
-            "be null";
-    static final String DESCRIPTION_CANNOT_BE_NULL = "Description cannot be " +
-            "null";
-    static final String RD_CANNOT_BE_NULL = "RouteDistinguisher cannot be null";
-    static final String RT_CANNOT_BE_NULL = "RouteTarget cannot be null";
-    static final String VPNINSTANCE_NAME = "vpnInstanceName";
-    static final String ROUTE_DISTINGUISHER = "routeDistinguisher";
-    static final String VPN_INSTANCE_ID_CANNOT_BE_NULL = "EVPN instance ID " +
-            "cannot be null";
-    static final String VPN_INSTANCE_ID = "vpnInstanceId";
-    public static final String FORMAT_VPN_INSTANCE = "Id=%s, description=%s,"
-            + " name=%s, routeDistinguisher=%s, routeTarget=%s";
-    public static final String FORMAT_VPN_PORT = "   EVPN port id=%-32s, " +
-            "EVPN instance id=%-18s";
-    public static final String FORMAT_PRIVATE_ROUTE = "   %-18s %-15s %-10s";
-    public static final String FORMAT_PUBLIC_ROUTE = "   %-18s %-18s %-10s";
-    public static final String SWITCH_CHANNEL_ID = "channelId";
-    public static final String NOT_MASTER_FOR_SPECIFIC_DEVICE = "The local " +
-            "controller is not master for the specified deviceId";
-    public static final String VPN_AF_CONFIG_STORE =
-            "evpn-vpn-af-config-store";
-    public static final String EVPN_VPN_AF_CONFIG_START = "EVPN af config" +
-            " started";
-    public static final String EVPN_VPN_AF_CONFIG_STOP = "EVPN af config" +
-            " stopped";
-    static final String RT_TYPE_CANNOT_BE_NULL = "Route target type " +
-            "cannot be null";
-    public static final String VPN_AF_CONFIG_NOT_NULL = "EVPN af config be " +
-            "null";
-    public static final String ROUTE_TARGET_VALUE = "Route target value is {} ";
-    public static final String VPN_AF_CONFIG_CREATION_FAILED = "The " +
-            "EVPN af config creation is failed whose route target is {} ";
-    public static final String VPN_AF_CONFIG_UPDATE_FAILED = "The EVPN af " +
-            "config update is failed whose identifier is {}";
-    public static final String VPN_AF_CONFIG_IS_NOT_EXIST = "The EVPN AF " +
-            "config is not exist whose identifier is {}";
-    public static final String ROUTE_TARGET_CANNOT_NOT_NULL = "Route target " +
-            "value cannot be null";
-    public static final String ROUTE_TARGET_DELETE_FAILED = "The route target" +
-            " delete is failed whose route target value is {}";
-    static final String EXPORT_RT_CANNOT_BE_NULL = "export route " +
-            "target set cannot be null";
-    static final String IMPORT_RT_CANNOT_BE_NULL = "import route " +
-            "target set cannot be null";
-    static final String CONFIG_RT_CANNOT_BE_NULL = "import route " +
-            "target set cannot be null";
-    public static final String EXPORT_EXTCOMMUNITY = "export_extcommunity";
-    public static final String IMPORT_EXTCOMMUNITY = "import_extcommunity";
-    public static final String BOTH = "both";
-    public static final String INVALID_ROUTE_TARGET_TYPE
-            = "Invalid route target type has received";
-    public static final String INVALID_EVENT_RECEIVED
-            = "Invalid event is received while processing network " +
-            "configuration event";
-    public static final String NETWORK_CONFIG_EVENT_IS_RECEIVED
-            = "Event is received from network configuration {}";
-    public static final int ARP_PRIORITY = 0xffff;
-    public static final short ARP_RESPONSE = 0x2;
-    public static final String INVALID_TARGET_RECEIVED
-            = "Invalid target type has received";
-    public static final String INVALID_ACTION_VPN_AF_CONFIG
-            = "Invalid action is received while processing VPN af" +
-            " configuration";
-    public static final String EXPORT_ROUTE_POLICY = "export_route_policy";
-    public static final String IMPORT_ROUTE_POLICY = "import_route_policy";
-    public static final String VRF_RT_TYPE = "vrf_rt_type";
-    public static final String VRF_RT_VALUE = "vrf_rt_value";
-    public static final String BGP_EVPN_ROUTE_UPDATE_START
-            = "bgp evpn route update start {}";
-    public static final String MPLS_OUT_FLOWS = "mpls out flows --> {}";
-    public static final String BGP_EVPN_ROUTE_DELETE_START
-            = "bgp route delete start {}";
-    public static final String ROUTE_ADD_ARP_RULES = "Route ARP Rules-->ADD";
-    public static final String ROUTE_REMOVE_ARP_RULES
-            = "Route ARP Rules-->REMOVE";
-    public static final String TUNNEL_DST = "tunnelDst";
-    public static final String FAILED_TO_SET_TUNNEL_DST
-            = "Failed to get extension instruction to set tunnel dst {}";
-    public static final String VXLAN = "vxlan";
-    public static final String CANNOT_FIND_TUNNEL_PORT_DEVICE =
-            "Can't find tunnel port in device {}";
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnAfConfig.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnAfConfig.java
deleted file mode 100644
index 83d5686..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnAfConfig.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc;
-
-import org.onosproject.evpnrouteservice.VpnRouteTarget;
-
-/**
- * Representation of a VPN af configuration.
- */
-public interface VpnAfConfig {
-
-    /**
-     * Returns the export route policy information.
-     *
-     * @return export route policy
-     */
-    String exportRoutePolicy();
-
-    /**
-     * Returns the import route policy information.
-     *
-     * @return export route policy
-     */
-    String importRoutePolicy();
-
-    /**
-     * Returns the route target value.
-     *
-     * @return route target value
-     */
-    VpnRouteTarget routeTarget();
-
-    /**
-     * Returns the route target type.
-     *
-     * @return route target type
-     */
-    String routeTargetType();
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnInstance.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnInstance.java
deleted file mode 100644
index 3c2d062..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnInstance.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc;
-
-import org.onosproject.evpnrouteservice.EvpnInstanceName;
-import org.onosproject.evpnrouteservice.RouteDistinguisher;
-import org.onosproject.evpnrouteservice.VpnRouteTarget;
-
-import java.util.Set;
-
-/**
- * Representation of a VPN instance.
- */
-public interface VpnInstance {
-
-    /**
-     * Returns the VPN instance identifier.
-     *
-     * @return VPN instance identifier
-     */
-    VpnInstanceId id();
-
-    /**
-     * Returns the VPN instance description.
-     *
-     * @return VPN instance description
-     */
-    String description();
-
-    /**
-     * Returns the VPN instance route distinguishes.
-     *
-     * @return VPN instance route distinguishes
-     */
-    RouteDistinguisher routeDistinguisher();
-
-    /**
-     * Returns the VPN instance name.
-     *
-     * @return VPN instance name
-     */
-    EvpnInstanceName vpnInstanceName();
-
-    /**
-     * Returns the export route target information.
-     *
-     * @return export route target information
-     */
-    Set<VpnRouteTarget> getExportRouteTargets();
-
-    /**
-     * Returns the import route target information.
-     *
-     * @return VPN instance ipv4 family
-     */
-    Set<VpnRouteTarget> getImportRouteTargets();
-
-    /**
-     * Returns the config route target information.
-     *
-     * @return config route target information.
-     */
-    Set<VpnRouteTarget> getConfigRouteTargets();
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnInstanceId.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnInstanceId.java
deleted file mode 100644
index 03399ed..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnInstanceId.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc;
-
-import org.onlab.util.Identifier;
-
-/**
- * Immutable representation of a VPN instance identity.
- */
-public final class VpnInstanceId extends Identifier<String> {
-    // Public construction is prohibited
-    private VpnInstanceId(String vpnInstanceId) {
-        super(vpnInstanceId);
-    }
-
-    /**
-     * Creates a VPN instance identifier.
-     *
-     * @param vpnInstanceId VPN instance identify string
-     * @return VPN instance identifier
-     */
-    public static VpnInstanceId vpnInstanceId(String vpnInstanceId) {
-        return new VpnInstanceId(vpnInstanceId);
-    }
-
-    /**
-     * Returns VPN instance identifier.
-     *
-     * @return the VPN instance identifier
-     */
-    public String vpnInstanceId() {
-        return identifier;
-    }
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnPort.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnPort.java
deleted file mode 100644
index 82f5336..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnPort.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc;
-
-/**
- * Representation of a VPN port.
- */
-public interface VpnPort {
-
-    /**
-     * Returns the VPN port identifier.
-     *
-     * @return VPN port identifier
-     */
-    VpnPortId id();
-
-    /**
-     * Returns the VPN instance identifier.
-     *
-     * @return VPN instance identifier
-     */
-    VpnInstanceId vpnInstanceId();
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnPortId.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnPortId.java
deleted file mode 100644
index f900830..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnPortId.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc;
-
-import org.onlab.util.Identifier;
-
-/**
- * Immutable representation of a VPN port identity.
- */
-public final class VpnPortId extends Identifier<String> {
-    // Public construction is prohibited
-    private VpnPortId(String vpnPortId) {
-        super(vpnPortId);
-    }
-
-    /**
-     * Creates a VPN port identifier.
-     *
-     * @param vpnPortId VPN port identifier
-     * @return VPN port identifier
-     */
-    public static VpnPortId vpnPortId(String vpnPortId) {
-        return new VpnPortId(vpnPortId);
-    }
-
-    /**
-     * Returns VPN port identifier.
-     *
-     * @return the VPN port identifier
-     */
-    public String vpnPortId() {
-        return identifier;
-    }
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortEvent.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortEvent.java
deleted file mode 100644
index acb762a..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortEvent.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.baseport;
-
-import org.onosproject.event.AbstractEvent;
-import org.onosproject.evpnopenflow.rsc.BasePort;
-
-/**
- * Describes base port event.
- */
-public class BasePortEvent extends AbstractEvent<BasePortEvent.Type,
-        BasePort> {
-    /**
-     * Type of base port events.
-     */
-    public enum Type {
-        /**
-         * Signifies that base port has been created.
-         */
-        BASE_PORT_PUT,
-        /**
-         * Signifies that base port has been deleted.
-         */
-        BASE_PORT_DELETE,
-        /**
-         * Signifies that base port has been updated.
-         */
-        BASE_PORT_UPDATE
-    }
-
-    /**
-     * Creates an event of a given type and for the specified base port.
-     *
-     * @param type     base port event type
-     * @param basePort base port subject
-     */
-    public BasePortEvent(Type type, BasePort basePort) {
-        super(type, basePort);
-    }
-
-    /**
-     * Creates an event of a given type and for the specified base port.
-     *
-     * @param type     base port event type
-     * @param basePort base port subject
-     * @param time     occurrence time
-     */
-    public BasePortEvent(Type type, BasePort basePort, long time) {
-        super(type, basePort, time);
-    }
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortListener.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortListener.java
deleted file mode 100644
index 2822bb3..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortListener.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.baseport;
-
-import org.onosproject.event.EventListener;
-
-/**
- * Entity capable of base port related events.
- */
-public interface BasePortListener extends EventListener<BasePortEvent> {
-
-}
\ No newline at end of file
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortService.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortService.java
deleted file mode 100644
index c3bdb2b..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortService.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.baseport;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.evpnopenflow.rsc.BasePort;
-import org.onosproject.evpnopenflow.rsc.BasePortId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-
-import java.util.Collection;
-
-
-/**
- * Service for interacting with the inventory of basePort.
- */
-public interface BasePortService {
-    /**
-     * Returns if the basePort is existed.
-     *
-     * @param basePortId basePort identifier
-     * @return true or false if one with the given identifier is not existed.
-     */
-    boolean exists(BasePortId basePortId);
-
-    /**
-     * Returns the basePort with the identifier.
-     *
-     * @param basePortId basePort ID
-     * @return BasePort or null if one with the given ID is not know.
-     */
-    BasePort getPort(BasePortId basePortId);
-
-    /**
-     * Returns the basePort associated with the fixedIP.
-     *
-     * @param fixedIP the fixedIP identifier
-     * @return basePort.
-     */
-    BasePort getPort(FixedIp fixedIP);
-
-    /**
-     * Returns the basePort associated with the mac address.
-     *
-     * @param mac the mac address
-     * @return basePort.
-     */
-    BasePort getPort(MacAddress mac);
-
-    /**
-     * Returns the basePort associated with the networkId and ip.
-     *
-     * @param networkId the TenantNetworkId identifier
-     * @param ip        the ip identifier
-     * @return basePort.
-     */
-    BasePort getPort(TenantNetworkId networkId, IpAddress ip);
-
-    /**
-     * Returns the collection of the currently known basePort.
-     *
-     * @return collection of BasePort.
-     */
-    Collection<BasePort> getPorts();
-
-    /**
-     * Returns the collection of the basePorts associated with the networkId.
-     *
-     * @param networkId the network identifer
-     * @return collection of basePort.
-     */
-    Collection<BasePort> getPorts(TenantNetworkId networkId);
-
-    /**
-     * Returns the collection of the basePorts associated with the tenantId.
-     *
-     * @param tenantId the tenant identifier
-     * @return collection of basePorts.
-     */
-    Collection<BasePort> getPorts(TenantId tenantId);
-
-    /**
-     * Returns the collection of the basePorts associated with the deviceId.
-     *
-     * @param deviceId the device identifier
-     * @return collection of basePort.
-     */
-    Collection<BasePort> getPorts(DeviceId deviceId);
-
-    /**
-     * Creates basePorts by basePorts.
-     *
-     * @param basePorts the iterable collection of basePorts
-     * @return true if all given identifiers created successfully.
-     */
-    boolean createPorts(Iterable<BasePort> basePorts);
-
-    /**
-     * Updates basePorts by basePorts.
-     *
-     * @param basePorts the iterable  collection of basePorts
-     * @return true if all given identifiers updated successfully.
-     */
-    boolean updatePorts(Iterable<BasePort> basePorts);
-
-    /**
-     * Deletes basePortIds by basePortIds.
-     *
-     * @param basePortIds the iterable collection of basePort identifiers
-     * @return true or false if one with the given identifier to delete is
-     * successfully.
-     */
-    boolean removePorts(Iterable<BasePortId> basePortIds);
-
-    /**
-     * process gluon config for vpn port information.
-     *
-     * @param action can be either update or delete
-     * @param key    can contain the id and also target information
-     * @param value  content of the vpn port configuration
-     */
-    void processGluonConfig(String action, String key, JsonNode value);
-
-    /**
-     * Adds the specified listener to Vpn Port manager.
-     *
-     * @param listener Vpn Port listener
-     */
-    void addListener(BasePortListener listener);
-
-    /**
-     * Removes the specified listener to Vpn Port manager.
-     *
-     * @param listener Vpn Port listener
-     */
-    void removeListener(BasePortListener listener);
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/impl/BasePortManager.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/impl/BasePortManager.java
deleted file mode 100644
index 27f9fd7..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/impl/BasePortManager.java
+++ /dev/null
@@ -1,437 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.baseport.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.google.common.collect.Sets;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.evpnopenflow.rsc.BasePort;
-import org.onosproject.evpnopenflow.rsc.BasePortId;
-import org.onosproject.evpnopenflow.rsc.DefaultBasePort;
-import org.onosproject.evpnopenflow.rsc.baseport.BasePortEvent;
-import org.onosproject.evpnopenflow.rsc.baseport.BasePortListener;
-import org.onosproject.evpnopenflow.rsc.baseport.BasePortService;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Host;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.MultiValuedTimestamp;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.WallClockTimestamp;
-import org.onosproject.vtnrsc.AllowedAddressPair;
-import org.onosproject.vtnrsc.BindingHostId;
-import org.onosproject.vtnrsc.DefaultFloatingIp;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.FloatingIp;
-import org.onosproject.vtnrsc.FloatingIpId;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.SecurityGroup;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetwork;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.TenantRouter;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-import java.util.stream.Collectors;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.APP_ID;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.BASE_PORT_STORE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.LISTENER_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.RESPONSE_NOT_NULL;
-
-/**
- * Provides implementation of the BasePort APIs.
- */
-@Component(immediate = true, service = BasePortService.class)
-public class BasePortManager implements BasePortService {
-
-    private final Set<BasePortListener> listeners = Sets
-            .newCopyOnWriteArraySet();
-    private final Logger log = LoggerFactory.getLogger(getClass());
-    private static final String BASEPORT_ID_NULL = "BasePort ID cannot be " +
-            "null";
-    private static final String BASEPORT_NOT_NULL = "BasePort  cannot be " +
-            "null";
-    private static final String TENANTID_NOT_NULL = "TenantId  cannot be null";
-    private static final String NETWORKID_NOT_NULL = "NetworkId  cannot be null";
-    private static final String DEVICEID_NOT_NULL = "DeviceId  cannot be null";
-    private static final String FIXEDIP_NOT_NULL = "FixedIp  cannot be null";
-    private static final String MAC_NOT_NULL = "Mac address  cannot be null";
-    private static final String IP_NOT_NULL = "Ip  cannot be null";
-    private static final String EVENT_NOT_NULL = "event cannot be null";
-    private static final String SET = "set";
-    private static final String UPDATE = "update";
-    private static final String DELETE = "delete";
-    private static final String SLASH = "/";
-    private static final String PROTON_BASE_PORT = "Port";
-    private static final String JSON_NOT_NULL = "JsonNode can not be null";
-
-    protected EventuallyConsistentMap<BasePortId, BasePort> vPortStore;
-    protected ApplicationId appId;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Activate
-    public void activate() {
-
-        appId = coreService.registerApplication(APP_ID);
-
-        KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
-                .register(KryoNamespaces.API)
-                .register(MultiValuedTimestamp.class)
-                .register(TenantNetworkId.class)
-                .register(Host.class)
-                .register(TenantNetwork.class)
-                .register(TenantNetworkId.class)
-                .register(TenantId.class)
-                .register(SubnetId.class)
-                .register(BasePortId.class)
-                .register(BasePort.State.class)
-                .register(AllowedAddressPair.class)
-                .register(FixedIp.class)
-                .register(FloatingIp.class)
-                .register(FloatingIpId.class)
-                .register(FloatingIp.Status.class)
-                .register(UUID.class)
-                .register(DefaultFloatingIp.class)
-                .register(BindingHostId.class)
-                .register(SecurityGroup.class)
-                .register(IpAddress.class)
-                .register(DefaultBasePort.class)
-                .register(RouterId.class)
-                .register(TenantRouter.class)
-                .register(BasePort.class);
-        vPortStore = storageService
-                .<BasePortId, BasePort>eventuallyConsistentMapBuilder()
-                .withName(BASE_PORT_STORE).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> new WallClockTimestamp())
-                .build();
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        vPortStore.destroy();
-        log.info("Stoppped");
-    }
-
-    @Override
-    public boolean exists(BasePortId vPortId) {
-        checkNotNull(vPortId, BASEPORT_ID_NULL);
-        return vPortStore.containsKey(vPortId);
-    }
-
-    @Override
-    public BasePort getPort(BasePortId vPortId) {
-        checkNotNull(vPortId, BASEPORT_ID_NULL);
-        return vPortStore.get(vPortId);
-    }
-
-    @Override
-    public BasePort getPort(FixedIp fixedIP) {
-        checkNotNull(fixedIP, FIXEDIP_NOT_NULL);
-        List<BasePort> vPorts = new ArrayList<>();
-        vPortStore.values().forEach(p -> {
-            for (FixedIp fixedIp : p.fixedIps()) {
-                if (fixedIp.equals(fixedIP)) {
-                    vPorts.add(p);
-                    break;
-                }
-            }
-        });
-        if (vPorts.size() == 0) {
-            return null;
-        }
-        return vPorts.get(0);
-    }
-
-    @Override
-    public BasePort getPort(MacAddress mac) {
-        checkNotNull(mac, MAC_NOT_NULL);
-        List<BasePort> vPorts = new ArrayList<>();
-        vPortStore.values().forEach(p -> {
-            if (p.macAddress().equals(mac)) {
-                vPorts.add(p);
-            }
-        });
-        if (vPorts.size() == 0) {
-            return null;
-        }
-        return vPorts.get(0);
-    }
-
-    @Override
-    public BasePort getPort(TenantNetworkId networkId, IpAddress ip) {
-        checkNotNull(networkId, NETWORKID_NOT_NULL);
-        checkNotNull(ip, IP_NOT_NULL);
-        List<BasePort> vPorts = new ArrayList<>();
-        vPortStore.values().stream().filter(p -> p.networkId().equals(networkId))
-                .forEach(p -> {
-                    for (FixedIp fixedIp : p.fixedIps()) {
-                        if (fixedIp.ip().equals(ip)) {
-                            vPorts.add(p);
-                            break;
-                        }
-                    }
-                });
-        if (vPorts.size() == 0) {
-            return null;
-        }
-        return vPorts.get(0);
-    }
-
-    @Override
-    public Collection<BasePort> getPorts() {
-        return Collections.unmodifiableCollection(vPortStore.values());
-    }
-
-    @Override
-    public Collection<BasePort> getPorts(TenantNetworkId networkId) {
-        checkNotNull(networkId, NETWORKID_NOT_NULL);
-        return vPortStore.values().stream().filter(d -> d.networkId().equals(networkId))
-                .collect(Collectors.toList());
-    }
-
-    @Override
-    public Collection<BasePort> getPorts(TenantId tenantId) {
-        checkNotNull(tenantId, TENANTID_NOT_NULL);
-        return vPortStore.values().stream().filter(d -> d.tenantId().equals(tenantId))
-                .collect(Collectors.toList());
-    }
-
-    @Override
-    public Collection<BasePort> getPorts(DeviceId deviceId) {
-        checkNotNull(deviceId, DEVICEID_NOT_NULL);
-        return vPortStore.values().stream().filter(d -> d.deviceId().equals(deviceId))
-                .collect(Collectors.toList());
-    }
-
-    @Override
-    public boolean createPorts(Iterable<BasePort> vPorts) {
-        checkNotNull(vPorts, BASEPORT_NOT_NULL);
-        for (BasePort vPort : vPorts) {
-            log.info("vPortId is  {} ", vPort.portId().toString());
-            vPortStore.put(vPort.portId(), vPort);
-            if (!vPortStore.containsKey(vPort.portId())) {
-                log.info("The basePort is created failed whose identifier is" +
-                                 " {} ",
-                         vPort.portId().toString());
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updatePorts(Iterable<BasePort> vPorts) {
-        checkNotNull(vPorts, BASEPORT_NOT_NULL);
-        for (BasePort vPort : vPorts) {
-            vPortStore.put(vPort.portId(), vPort);
-            if (!vPortStore.containsKey(vPort.portId())) {
-                log.info("The basePort is not exist whose identifier is {}",
-                         vPort.portId().toString());
-                return false;
-            }
-
-            vPortStore.put(vPort.portId(), vPort);
-
-            if (!vPort.equals(vPortStore.get(vPort.portId()))) {
-                log.info("The basePort is updated failed whose  identifier " +
-                                 "is {}",
-                         vPort.portId().toString());
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removePorts(Iterable<BasePortId> vPortIds) {
-        checkNotNull(vPortIds, BASEPORT_ID_NULL);
-        for (BasePortId vPortId : vPortIds) {
-            vPortStore.remove(vPortId);
-            if (vPortStore.containsKey(vPortId)) {
-                log.info("The basePort is removed failed whose identifier is" +
-                                 " {}",
-                         vPortId.toString());
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Returns a collection of basePorts from subnetNodes.
-     *
-     * @param vPortNodes the basePort json node
-     * @return BasePort collection of vpn ports
-     */
-    private Collection<BasePort> changeJsonToSub(JsonNode vPortNodes) {
-        checkNotNull(vPortNodes, JSON_NOT_NULL);
-        Set<FixedIp> fixedIps = null;
-        TenantNetworkId tenantNetworkId = null;
-        Map<BasePortId, BasePort> vportMap = new HashMap<>();
-        Map<String, String> strMap = new HashMap<>();
-        BasePortId basePortId = BasePortId.portId(vPortNodes.get("id").asText());
-        String name = vPortNodes.get("name").asText();
-        TenantId tenantId = TenantId
-                .tenantId(vPortNodes.get("tenant_id").asText());
-        Boolean adminStateUp = vPortNodes.get("admin_state_up").asBoolean();
-        String state = vPortNodes.get("status").asText();
-        MacAddress macAddress = MacAddress
-                .valueOf(vPortNodes.get("mac_address").asText());
-        DeviceId deviceId = DeviceId
-                .deviceId(vPortNodes.get("device_id").asText());
-        String deviceOwner = vPortNodes.get("device_owner").asText();
-        BindingHostId bindingHostId = BindingHostId
-                .bindingHostId(vPortNodes.get("host_id").asText());
-        String bindingVnicType = vPortNodes.get("vnic_type").asText();
-        String bindingVifType = vPortNodes.get("vif_type").asText();
-        String bindingVifDetails = vPortNodes.get("vif_details").asText();
-        strMap.put("name", name);
-        strMap.put("deviceOwner", deviceOwner);
-        strMap.put("bindingVnicType", bindingVnicType);
-        strMap.put("bindingVifType", bindingVifType);
-        strMap.put("bindingVifDetails", bindingVifDetails);
-        BasePort prevBasePort = getPort(basePortId);
-        if (prevBasePort != null) {
-            fixedIps = prevBasePort.fixedIps();
-            tenantNetworkId = prevBasePort.networkId();
-        }
-        BasePort vPort = new DefaultBasePort(basePortId,
-                                             tenantNetworkId,
-                                             adminStateUp,
-                                             strMap, state,
-                                             macAddress, tenantId,
-                                             deviceId, fixedIps,
-                                             bindingHostId,
-                                             null,
-                                             null);
-        vportMap.put(basePortId, vPort);
-
-        return Collections.unmodifiableCollection(vportMap.values());
-    }
-
-    /**
-     * Returns BasePort State.
-     *
-     * @param state the base port state
-     * @return the basePort state
-     */
-    private BasePort.State isState(String state) {
-        if (state.equals("ACTIVE")) {
-            return BasePort.State.ACTIVE;
-        } else {
-            return BasePort.State.DOWN;
-        }
-
-    }
-
-    /**
-     * process Etcd response for port information.
-     *
-     * @param action can be either update or delete
-     * @param key    can contain the id and also target information
-     * @param value  content of the port configuration
-     */
-    @Override
-    public void processGluonConfig(String action, String key, JsonNode value) {
-        Collection<BasePort> basePorts;
-        switch (action) {
-            case DELETE:
-                String[] list = key.split(SLASH);
-                BasePortId basePortId
-                        = BasePortId.portId(list[list.length - 1]);
-                Set<BasePortId> basePortIds = Sets.newHashSet(basePortId);
-                removePorts(basePortIds);
-                break;
-            case SET:
-                checkNotNull(value, RESPONSE_NOT_NULL);
-                basePorts = changeJsonToSub(value);
-                createPorts(basePorts);
-                break;
-            case UPDATE:
-                checkNotNull(value, RESPONSE_NOT_NULL);
-                basePorts = changeJsonToSub(value);
-                updatePorts(basePorts);
-                break;
-            default:
-                log.info("Invalid action is received while processing VPN " +
-                                 "port configuration");
-        }
-    }
-
-    private void parseEtcdResponse(JsonNode jsonNode,
-                                   String key,
-                                   String action) {
-        JsonNode modifyValue = null;
-        if (action.equals(SET)) {
-            modifyValue = jsonNode.get(key);
-        }
-        String[] list = key.split(SLASH);
-        String target = list[list.length - 2];
-        if (target.equals(PROTON_BASE_PORT)) {
-            processGluonConfig(action, key, modifyValue);
-        }
-    }
-
-    @Override
-    public void addListener(BasePortListener listener) {
-        checkNotNull(listener, LISTENER_NOT_NULL);
-        listeners.add(listener);
-    }
-
-    @Override
-    public void removeListener(BasePortListener listener) {
-        checkNotNull(listener, LISTENER_NOT_NULL);
-        listeners.remove(listener);
-    }
-
-    /**
-     * Notifies specify event to all listeners.
-     *
-     * @param event vpn af config event
-     */
-    private void notifyListeners(BasePortEvent event) {
-        checkNotNull(event, EVENT_NOT_NULL);
-        listeners.forEach(listener -> listener.event(event));
-    }
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/impl/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/impl/package-info.java
deleted file mode 100644
index 366dc00..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * VPN resources that used by l3vpn.
- */
-package org.onosproject.evpnopenflow.rsc.baseport.impl;
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/package-info.java
deleted file mode 100644
index 52f5d0c..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * VPN resources that used by l3vpn.
- */
-package org.onosproject.evpnopenflow.rsc.baseport;
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPrivateRouteListCommand.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPrivateRouteListCommand.java
deleted file mode 100644
index d069bc3..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPrivateRouteListCommand.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.cli;
-
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.evpnopenflow.manager.EvpnService;
-import org.onosproject.evpnopenflow.manager.impl.EvpnManager;
-import org.onosproject.evpnrouteservice.EvpnInstanceRoute;
-
-import java.util.Collection;
-
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.FORMAT_PRIVATE_ROUTE;
-
-/**
- * Support for displaying EVPN private routes.
- */
-@Service
-@Command(scope = "onos", name = "evpn-private-routes", description = "Lists" +
-        " all EVPN private routes")
-public class EvpnPrivateRouteListCommand extends AbstractShellCommand {
-    private static final String FORMAT_HEADER =
-            "   VPN name            Prefix         Next Hop";
-
-    @Override
-    protected void doExecute() {
-        EvpnService service = AbstractShellCommand.get(EvpnService.class);
-        EvpnManager evpnManager = (EvpnManager) service;
-        Collection<EvpnInstanceRoute> evpnRoutes = evpnManager.evpnInstanceRoutes;
-        if (evpnRoutes != null) {
-            print(FORMAT_HEADER);
-            evpnRoutes.forEach(evpnInstanceRoute -> {
-                print(FORMAT_PRIVATE_ROUTE, evpnInstanceRoute.evpnInstanceName(),
-                      evpnInstanceRoute.prefix().address().getIp4Address(), evpnInstanceRoute
-                              .getNextHopl());
-            });
-        }
-    }
-
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPublicRouteListCommand.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPublicRouteListCommand.java
deleted file mode 100644
index 809090d..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPublicRouteListCommand.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.cli;
-
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.evpnrouteservice.EvpnRoute;
-import org.onosproject.evpnrouteservice.EvpnRouteSet;
-import org.onosproject.evpnrouteservice.EvpnRouteStore;
-
-import java.util.Collection;
-
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.FORMAT_PUBLIC_ROUTE;
-
-/**
- * Support for displaying EVPN public routes.
- */
-@Service
-@Command(scope = "onos", name = "evpn-public-routes", description = "Lists" +
-        " all EVPN public routes")
-public class EvpnPublicRouteListCommand extends AbstractShellCommand {
-    private static final String FORMAT_HEADER =
-            "   MAC                  Prefix          Next Hop";
-
-    @Override
-    protected void doExecute() {
-        EvpnRouteStore evpnRouteStore = AbstractShellCommand.get(EvpnRouteStore.class);
-
-        evpnRouteStore.getRouteTables().forEach(routeTableId -> {
-            Collection<EvpnRouteSet> routes
-                    = evpnRouteStore.getRoutes(routeTableId);
-            if (routes != null) {
-                routes.forEach(route -> {
-                    Collection<EvpnRoute> evpnRoutes = route.routes();
-                    print(FORMAT_HEADER);
-                    evpnRoutes.forEach(evpnRoute -> {
-                        print(FORMAT_PUBLIC_ROUTE, evpnRoute.prefixMac(),
-                              evpnRoute.prefixIp().address().getIp4Address(),
-                              evpnRoute.ipNextHop());
-                    });
-                });
-            }
-        });
-    }
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnInstListCommand.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnInstListCommand.java
deleted file mode 100644
index 33074f7..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnInstListCommand.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.cli;
-
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.evpnopenflow.rsc.EvpnConstants;
-import org.onosproject.evpnopenflow.rsc.VpnInstance;
-import org.onosproject.evpnopenflow.rsc.vpninstance.VpnInstanceService;
-
-import java.util.Collection;
-
-/**
- * Support for displaying EVPN VPN instances.
- */
-@Service
-@Command(scope = "onos", name = "evpn-instance-list", description = "Lists " +
-        "all EVPN instances")
-public class VpnInstListCommand extends AbstractShellCommand {
-
-    @Override
-    protected void doExecute() {
-        VpnInstanceService service = get(VpnInstanceService.class);
-        Collection<VpnInstance> vpnInstances = service
-                .getInstances();
-        vpnInstances.forEach(vpnInstance -> {
-            print(EvpnConstants.FORMAT_VPN_INSTANCE, vpnInstance.id(),
-                  vpnInstance.description(),
-                  vpnInstance.vpnInstanceName(),
-                  vpnInstance.routeDistinguisher(),
-                  vpnInstance.getExportRouteTargets(),
-                  vpnInstance.getImportRouteTargets());
-        });
-    }
-
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnPortListCommand.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnPortListCommand.java
deleted file mode 100644
index a4c7da8..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnPortListCommand.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.cli;
-
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.evpnopenflow.rsc.VpnPort;
-import org.onosproject.evpnopenflow.rsc.vpnport.VpnPortService;
-
-import java.util.Collection;
-
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.FORMAT_VPN_PORT;
-
-/**
- * Support for displaying EVPN VPN ports.
- */
-@Service
-@Command(scope = "onos", name = "evpn-port-list", description = "Lists all" +
-        "EVPN ports")
-public class VpnPortListCommand extends AbstractShellCommand {
-
-    @Override
-    protected void doExecute() {
-        VpnPortService portService = get(VpnPortService.class);
-        Collection<VpnPort> ports = portService.getPorts();
-        ports.forEach(port -> {
-            print(FORMAT_VPN_PORT, port.id(), port.vpnInstanceId());
-        });
-    }
-
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/package-info.java
deleted file mode 100644
index 3bc47c8..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation CLI for EVPN services.
- */
-package org.onosproject.evpnopenflow.rsc.cli;
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/package-info.java
deleted file mode 100644
index c37dc81..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * EVPN resource package.
- */
-package org.onosproject.evpnopenflow.rsc;
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigEvent.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigEvent.java
deleted file mode 100644
index 944698c..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigEvent.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.vpnafconfig;
-
-import org.onosproject.event.AbstractEvent;
-import org.onosproject.evpnopenflow.rsc.VpnAfConfig;
-
-/**
- * Describes network VPN af config event.
- */
-public class VpnAfConfigEvent extends AbstractEvent<VpnAfConfigEvent.Type, VpnAfConfig> {
-
-    /**
-     * Type of VPN port events.
-     */
-    public enum Type {
-        /**
-         * Signifies that VPN af config has been set.
-         */
-        VPN_AF_CONFIG_SET,
-        /**
-         * Signifies that VPN af config has been deleted.
-         */
-        VPN_AF_CONFIG_DELETE,
-        /**
-         * Signifies that VPN af config has been updated.
-         */
-        VPN_AF_CONFIG_UPDATE
-    }
-
-    /**
-     * Creates an event of a given type and for the specified VPN af config.
-     *
-     * @param type        VPN af config type
-     * @param vpnAfConfig VPN af config subject
-     */
-    public VpnAfConfigEvent(Type type, VpnAfConfig vpnAfConfig) {
-        super(type, vpnAfConfig);
-    }
-
-    /**
-     * Creates an event of a given type and for the specified VPN af config.
-     *
-     * @param type        VPN af config type
-     * @param vpnAfConfig VPN af config subject
-     * @param time        occurrence time
-     */
-    public VpnAfConfigEvent(Type type, VpnAfConfig vpnAfConfig, long time) {
-        super(type, vpnAfConfig, time);
-    }
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigListener.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigListener.java
deleted file mode 100644
index 42db841..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.vpnafconfig;
-
-import org.onosproject.event.EventListener;
-
-/**
- * Entity capable of VPN af config related events.
- */
-public interface VpnAfConfigListener extends EventListener<VpnAfConfigEvent> {
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigService.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigService.java
deleted file mode 100644
index ecde40d..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigService.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.vpnafconfig;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.onosproject.evpnopenflow.rsc.VpnAfConfig;
-import org.onosproject.evpnrouteservice.VpnRouteTarget;
-
-import java.util.Collection;
-
-/**
- * Service for interacting with the inventory of VPN af config instance.
- */
-public interface VpnAfConfigService {
-    /**
-     * Returns if the route target is existed.
-     *
-     * @param routeTarget route target
-     * @return true or false if one with the given route target is not existed.
-     */
-    boolean exists(VpnRouteTarget routeTarget);
-
-    /**
-     * Returns the VPN af config with the route target.
-     *
-     * @param routeTarget route target
-     * @return VPN af config or null if one with the given route target is not
-     * know.
-     */
-    VpnAfConfig getVpnAfConfig(VpnRouteTarget routeTarget);
-
-    /**
-     * Returns the collection of the currently known VPN af configurations.
-     *
-     * @return collection of VPN af configurations.
-     */
-    Collection<VpnAfConfig> getVpnAfConfigs();
-
-    /**
-     * Creates VPN af configurations by vpnAfConfigs.
-     *
-     * @param vpnAfConfigs the iterable collection of vpnAfConfigs
-     * @return true if all given VPN af configs created successfully
-     */
-    boolean createVpnAfConfigs(Iterable<VpnAfConfig> vpnAfConfigs);
-
-    /**
-     * Updates VPN af configurations by vpnAfConfigs.
-     *
-     * @param vpnAfConfigs the iterable collection of vpnAfConfigs
-     * @return true if all given VPN af configs created successfully.
-     */
-    boolean updateVpnAfConfigs(Iterable<VpnAfConfig> vpnAfConfigs);
-
-    /**
-     * Deletes vpnAfConfigs by route target.
-     *
-     * @param routeTarget the iterable collection of vpnAFConfigs
-     * @return true or false if one with the given route target to delete is
-     * successfully
-     */
-    boolean removeVpnAfConfigs(Iterable<VpnRouteTarget> routeTarget);
-
-    /**
-     * process gluon config for vpn af configuration.
-     *
-     * @param action can be either update or delete
-     * @param key    can contain the id and also target information
-     * @param value  content of the route targets configuration
-     */
-    void processGluonConfig(String action, String key, JsonNode value);
-
-    /**
-     * Adds the specified listener to Vpn Port manager.
-     *
-     * @param listener vpn af config listener
-     */
-    void addListener(VpnAfConfigListener listener);
-
-    /**
-     * Removes the specified listener to vpn af config manager.
-     *
-     * @param listener vpn af config listener
-     */
-    void removeListener(VpnAfConfigListener listener);
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/impl/VpnAfConfigManager.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/impl/VpnAfConfigManager.java
deleted file mode 100644
index a2ee02c..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/impl/VpnAfConfigManager.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.vpnafconfig.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.google.common.collect.Sets;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.core.CoreService;
-import org.onosproject.evpnopenflow.rsc.DefaultVpnAfConfig;
-import org.onosproject.evpnopenflow.rsc.VpnAfConfig;
-import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigEvent;
-import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigListener;
-import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigService;
-import org.onosproject.evpnrouteservice.VpnRouteTarget;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.WallClockTimestamp;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.APP_ID;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.DELETE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVENT_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVPN_VPN_AF_CONFIG_START;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVPN_VPN_AF_CONFIG_STOP;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EXPORT_ROUTE_POLICY;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.IMPORT_ROUTE_POLICY;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.INVALID_ACTION_VPN_AF_CONFIG;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.JSON_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.LISTENER_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.RESPONSE_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ROUTE_TARGET_CANNOT_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ROUTE_TARGET_DELETE_FAILED;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ROUTE_TARGET_VALUE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SET;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SLASH;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.UPDATE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_AF_CONFIG_CREATION_FAILED;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_AF_CONFIG_IS_NOT_EXIST;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_AF_CONFIG_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_AF_CONFIG_STORE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_AF_CONFIG_UPDATE_FAILED;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_ID_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VRF_RT_TYPE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VRF_RT_VALUE;
-
-/**
- * Provides implementation of the VPN af config APIs.
- */
-@Component(immediate = true, service = VpnAfConfigService.class)
-public class VpnAfConfigManager implements VpnAfConfigService {
-    private final Logger log = LoggerFactory.getLogger(getClass());
-    private final Set<VpnAfConfigListener> listeners = Sets
-            .newCopyOnWriteArraySet();
-
-    protected EventuallyConsistentMap<VpnRouteTarget, VpnAfConfig>
-            vpnAfConfigStore;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Activate
-    public void activate() {
-        coreService.registerApplication(APP_ID);
-        KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
-                .register(KryoNamespaces.API).register(VpnAfConfig.class)
-                .register(VpnRouteTarget.class);
-        vpnAfConfigStore = storageService
-                .<VpnRouteTarget, VpnAfConfig>eventuallyConsistentMapBuilder()
-                .withName(VPN_AF_CONFIG_STORE).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> new WallClockTimestamp())
-                .build();
-        log.info(EVPN_VPN_AF_CONFIG_START);
-    }
-
-    @Deactivate
-    public void deactivate() {
-        vpnAfConfigStore.destroy();
-        log.info(EVPN_VPN_AF_CONFIG_STOP);
-    }
-
-    @Override
-    public boolean exists(VpnRouteTarget routeTarget) {
-        checkNotNull(routeTarget, ROUTE_TARGET_CANNOT_NOT_NULL);
-        return vpnAfConfigStore.containsKey(routeTarget);
-    }
-
-    @Override
-    public VpnAfConfig getVpnAfConfig(VpnRouteTarget routeTarget) {
-        checkNotNull(routeTarget, ROUTE_TARGET_CANNOT_NOT_NULL);
-        return vpnAfConfigStore.get(routeTarget);
-    }
-
-    @Override
-    public Collection<VpnAfConfig> getVpnAfConfigs() {
-        return Collections.unmodifiableCollection(vpnAfConfigStore.values());
-    }
-
-    @Override
-    public boolean createVpnAfConfigs(Iterable<VpnAfConfig> vpnAfConfigs) {
-        checkNotNull(vpnAfConfigs, VPN_AF_CONFIG_NOT_NULL);
-        for (VpnAfConfig vpnAfConfig : vpnAfConfigs) {
-            log.info(ROUTE_TARGET_VALUE, vpnAfConfig
-                    .routeTarget().getRouteTarget());
-            vpnAfConfigStore.put(vpnAfConfig.routeTarget(), vpnAfConfig);
-            if (!vpnAfConfigStore.containsKey(vpnAfConfig.routeTarget())) {
-                log.info(VPN_AF_CONFIG_CREATION_FAILED,
-                         vpnAfConfig.routeTarget().getRouteTarget());
-                return false;
-            }
-            notifyListeners(new VpnAfConfigEvent(VpnAfConfigEvent
-                                                         .Type
-                                                         .VPN_AF_CONFIG_SET,
-                                                 vpnAfConfig));
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updateVpnAfConfigs(Iterable<VpnAfConfig> vpnAfConfigs) {
-        checkNotNull(vpnAfConfigs, VPN_AF_CONFIG_NOT_NULL);
-        for (VpnAfConfig vpnAfConfig : vpnAfConfigs) {
-            if (!vpnAfConfigStore.containsKey(vpnAfConfig.routeTarget())) {
-                log.info(VPN_AF_CONFIG_IS_NOT_EXIST,
-                         vpnAfConfig.routeTarget().getRouteTarget());
-                return false;
-            }
-            vpnAfConfigStore.put(vpnAfConfig.routeTarget(), vpnAfConfig);
-            if (!vpnAfConfig.equals(vpnAfConfigStore
-                                            .get(vpnAfConfig.routeTarget()))) {
-                log.info(VPN_AF_CONFIG_UPDATE_FAILED,
-                         vpnAfConfig.routeTarget().getRouteTarget());
-                return false;
-            }
-            notifyListeners(new VpnAfConfigEvent(VpnAfConfigEvent
-                                                         .Type
-                                                         .VPN_AF_CONFIG_UPDATE,
-                                                 vpnAfConfig));
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removeVpnAfConfigs(Iterable<VpnRouteTarget> routeTargets) {
-        checkNotNull(routeTargets, VPN_INSTANCE_ID_NOT_NULL);
-        for (VpnRouteTarget routeTarget : routeTargets) {
-            VpnAfConfig vpnAfConfig = vpnAfConfigStore.get(routeTarget);
-            vpnAfConfigStore.remove(routeTarget);
-            if (vpnAfConfigStore.containsKey(routeTarget)) {
-                log.info(ROUTE_TARGET_DELETE_FAILED,
-                         routeTarget.getRouteTarget());
-                return false;
-            }
-            notifyListeners(new VpnAfConfigEvent(VpnAfConfigEvent
-                                                         .Type
-                                                         .VPN_AF_CONFIG_DELETE,
-                                                 vpnAfConfig));
-        }
-        return true;
-    }
-
-    @Override
-    public void processGluonConfig(String action, String key, JsonNode value) {
-        Collection<VpnAfConfig> vpnAfConfigs;
-        switch (action) {
-            case DELETE:
-                String[] list = key.split(SLASH);
-                VpnRouteTarget routeTarget = VpnRouteTarget
-                        .routeTarget(list[list.length - 1]);
-                Set<VpnRouteTarget> routeTargets
-                        = Sets.newHashSet(routeTarget);
-                removeVpnAfConfigs(routeTargets);
-                break;
-            case SET:
-                checkNotNull(value, RESPONSE_NOT_NULL);
-                vpnAfConfigs = changeJsonToSub(value);
-                createVpnAfConfigs(vpnAfConfigs);
-                break;
-            case UPDATE:
-                checkNotNull(value, RESPONSE_NOT_NULL);
-                vpnAfConfigs = changeJsonToSub(value);
-                updateVpnAfConfigs(vpnAfConfigs);
-                break;
-            default:
-                log.info(INVALID_ACTION_VPN_AF_CONFIG);
-                break;
-        }
-    }
-
-    /**
-     * Returns a collection of vpn af configuration.
-     *
-     * @param vpnAfConfigNode the vpn af configuration json node
-     * @return returns the collection of vpn af configuration
-     */
-    private Collection<VpnAfConfig> changeJsonToSub(JsonNode vpnAfConfigNode) {
-        checkNotNull(vpnAfConfigNode, JSON_NOT_NULL);
-        Map<VpnRouteTarget, VpnAfConfig> vpnAfConfigMap = new HashMap<>();
-        String exportRoutePolicy
-                = vpnAfConfigNode.get(EXPORT_ROUTE_POLICY).asText();
-        String importRoutePolicy
-                = vpnAfConfigNode.get(IMPORT_ROUTE_POLICY).asText();
-        String routeTargetType = vpnAfConfigNode.get(VRF_RT_TYPE).asText();
-        VpnRouteTarget routeTarget = VpnRouteTarget
-                .routeTarget(vpnAfConfigNode.get(VRF_RT_VALUE).asText());
-
-        VpnAfConfig vpnAfConfig = new DefaultVpnAfConfig(exportRoutePolicy,
-                                                         importRoutePolicy,
-                                                         routeTarget,
-                                                         routeTargetType);
-        vpnAfConfigMap.put(routeTarget, vpnAfConfig);
-
-        return Collections.unmodifiableCollection(vpnAfConfigMap.values());
-    }
-
-    @Override
-    public void addListener(VpnAfConfigListener listener) {
-        checkNotNull(listener, LISTENER_NOT_NULL);
-        listeners.add(listener);
-    }
-
-    @Override
-    public void removeListener(VpnAfConfigListener listener) {
-        checkNotNull(listener, LISTENER_NOT_NULL);
-        listeners.remove(listener);
-    }
-
-    /**
-     * Notifies specify event to all listeners.
-     *
-     * @param event vpn af config event
-     */
-    private void notifyListeners(VpnAfConfigEvent event) {
-        checkNotNull(event, EVENT_NOT_NULL);
-        listeners.forEach(listener -> listener.event(event));
-    }
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/impl/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/impl/package-info.java
deleted file mode 100644
index f2dd128..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * VPN af configuration that used by l3vpn.
- */
-package org.onosproject.evpnopenflow.rsc.vpnafconfig.impl;
\ No newline at end of file
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/package-info.java
deleted file mode 100644
index 7c2e4f4..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * VPN resources that used by Evpn.
- */
-package org.onosproject.evpnopenflow.rsc.vpnafconfig;
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/VpnInstanceService.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/VpnInstanceService.java
deleted file mode 100644
index a61a811..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/VpnInstanceService.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.vpninstance;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.onosproject.evpnopenflow.rsc.VpnInstance;
-import org.onosproject.evpnopenflow.rsc.VpnInstanceId;
-import org.onosproject.evpnrouteservice.VpnRouteTarget;
-
-import java.util.Collection;
-import java.util.Set;
-
-/**
- * Service for interacting with the inventory of VPN instance.
- */
-public interface VpnInstanceService {
-    /**
-     * Returns if the vpnInstance is existed.
-     *
-     * @param vpnInstanceId vpnInstance identifier
-     * @return true or false if one with the given identifier is not existed.
-     */
-    boolean exists(VpnInstanceId vpnInstanceId);
-
-    /**
-     * Returns the vpnInstance with the identifier.
-     *
-     * @param vpnInstanceId vpnInstance ID
-     * @return VpnInstance or null if one with the given ID is not know.
-     */
-    VpnInstance getInstance(VpnInstanceId vpnInstanceId);
-
-    /**
-     * Returns the collection of the currently known vpnInstance.
-     *
-     * @return collection of VpnInstance.
-     */
-    Collection<VpnInstance> getInstances();
-
-    /**
-     * Creates vpnInstances by vpnInstances.
-     *
-     * @param vpnInstances the iterable collection of vpnInstances
-     * @return true if all given identifiers created successfully.
-     */
-    boolean createInstances(Iterable<VpnInstance> vpnInstances);
-
-    /**
-     * Updates vpnInstances by vpnInstances.
-     *
-     * @param vpnInstances the iterable  collection of vpnInstances
-     * @return true if all given identifiers updated successfully.
-     */
-    boolean updateInstances(Iterable<VpnInstance> vpnInstances);
-
-    /**
-     * Deletes vpnInstanceIds by vpnInstanceIds.
-     *
-     * @param vpnInstanceIds the iterable collection of vpnInstance identifiers
-     * @return true or false if one with the given identifier to delete is
-     * successfully.
-     */
-    boolean removeInstances(Iterable<VpnInstanceId> vpnInstanceIds);
-
-    /**
-     * process gluon config for vpn instance information.
-     *
-     * @param action can be either update or delete
-     * @param key    can contain the id and also target information
-     * @param value  content of the vpn instance configuration
-     */
-    void processGluonConfig(String action, String key, JsonNode value);
-
-    /**
-     * process Etcd response for vpn instance information.
-     *
-     * @param routeTargetType    route target type
-     * @param exportRouteTargets export route targets
-     * @param importRouteTargets import route targets
-     * @param vpnRouteTarget     vpn route target
-     */
-    void updateImpExpRouteTargets(String routeTargetType,
-                                  Set<VpnRouteTarget> exportRouteTargets,
-                                  Set<VpnRouteTarget> importRouteTargets,
-                                  VpnRouteTarget vpnRouteTarget);
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/impl/VpnInstanceManager.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/impl/VpnInstanceManager.java
deleted file mode 100644
index 91eba1d..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/impl/VpnInstanceManager.java
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.vpninstance.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.google.common.collect.Sets;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.evpnopenflow.rsc.DefaultVpnInstance;
-import org.onosproject.evpnopenflow.rsc.VpnAfConfig;
-import org.onosproject.evpnopenflow.rsc.VpnInstance;
-import org.onosproject.evpnopenflow.rsc.VpnInstanceId;
-import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigService;
-import org.onosproject.evpnopenflow.rsc.vpninstance.VpnInstanceService;
-import org.onosproject.evpnrouteservice.EvpnInstanceName;
-import org.onosproject.evpnrouteservice.RouteDistinguisher;
-import org.onosproject.evpnrouteservice.VpnRouteTarget;
-import org.onosproject.routeservice.RouteAdminService;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.WallClockTimestamp;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.APP_ID;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.COMMA;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.DELETE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.DESCRIPTION;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVPN_VPN_INSTANCE_START;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVPN_VPN_INSTANCE_STOP;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ID;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.INSTANCE_ID;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.IPV4_FAMILY;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.JSON_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.RESPONSE_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ROUTE_DISTINGUISHERS;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SET;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SLASH;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.UPDATE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_CREATION_FAILED;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_DELETE_FAILED;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_ID_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_IS_NOT_EXIST;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_NAME;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_STORE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_UPDATE_FAILED;
-
-
-/**
- * Provides implementation of the VpnInstance APIs.
- */
-@Component(immediate = true, service = VpnInstanceService.class)
-public class VpnInstanceManager implements VpnInstanceService {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    protected EventuallyConsistentMap<VpnInstanceId, VpnInstance> vpnInstanceStore;
-    protected ApplicationId appId;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected RouteAdminService routeService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected VpnAfConfigService vpnAfConfigService;
-
-    @Activate
-    public void activate() {
-        appId = coreService.registerApplication(APP_ID);
-        KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
-                .register(KryoNamespaces.API).register(VpnInstance.class)
-                .register(VpnInstanceId.class);
-        vpnInstanceStore = storageService
-                .<VpnInstanceId, VpnInstance>eventuallyConsistentMapBuilder()
-                .withName(VPN_INSTANCE_STORE).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> new WallClockTimestamp())
-                .build();
-        log.info(EVPN_VPN_INSTANCE_START);
-    }
-
-    @Deactivate
-    public void deactivate() {
-        vpnInstanceStore.destroy();
-        log.info(EVPN_VPN_INSTANCE_STOP);
-    }
-
-    @Override
-    public boolean exists(VpnInstanceId vpnInstanceId) {
-        checkNotNull(vpnInstanceId, VPN_INSTANCE_ID_NOT_NULL);
-        return vpnInstanceStore.containsKey(vpnInstanceId);
-    }
-
-    @Override
-    public VpnInstance getInstance(VpnInstanceId vpnInstanceId) {
-        checkNotNull(vpnInstanceId, VPN_INSTANCE_ID_NOT_NULL);
-        return vpnInstanceStore.get(vpnInstanceId);
-    }
-
-    @Override
-    public Collection<VpnInstance> getInstances() {
-        return Collections.unmodifiableCollection(vpnInstanceStore.values());
-    }
-
-    @Override
-    public boolean createInstances(Iterable<VpnInstance> vpnInstances) {
-        checkNotNull(vpnInstances, VPN_INSTANCE_NOT_NULL);
-        for (VpnInstance vpnInstance : vpnInstances) {
-            log.info(INSTANCE_ID, vpnInstance.id().toString());
-            vpnInstanceStore.put(vpnInstance.id(), vpnInstance);
-            if (!vpnInstanceStore.containsKey(vpnInstance.id())) {
-                log.info(VPN_INSTANCE_CREATION_FAILED,
-                         vpnInstance.id().toString());
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updateInstances(Iterable<VpnInstance> vpnInstances) {
-        checkNotNull(vpnInstances, VPN_INSTANCE_NOT_NULL);
-        for (VpnInstance vpnInstance : vpnInstances) {
-            if (!vpnInstanceStore.containsKey(vpnInstance.id())) {
-                log.info(VPN_INSTANCE_IS_NOT_EXIST,
-                         vpnInstance.id().toString());
-                return false;
-            }
-            vpnInstanceStore.put(vpnInstance.id(), vpnInstance);
-            if (!vpnInstance.equals(vpnInstanceStore.get(vpnInstance.id()))) {
-                log.info(VPN_INSTANCE_UPDATE_FAILED,
-                         vpnInstance.id().toString());
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removeInstances(Iterable<VpnInstanceId> vpnInstanceIds) {
-        checkNotNull(vpnInstanceIds, VPN_INSTANCE_ID_NOT_NULL);
-        for (VpnInstanceId vpnInstanceId : vpnInstanceIds) {
-            vpnInstanceStore.remove(vpnInstanceId);
-            if (vpnInstanceStore.containsKey(vpnInstanceId)) {
-                log.info(VPN_INSTANCE_DELETE_FAILED, vpnInstanceId.toString());
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public void processGluonConfig(String action, String key, JsonNode value) {
-        Collection<VpnInstance> vpnInstances;
-        switch (action) {
-            case DELETE:
-                String[] list = key.split(SLASH);
-                VpnInstanceId vpnInstanceId = VpnInstanceId
-                        .vpnInstanceId(list[list.length - 1]);
-                Set<VpnInstanceId> vpnInstanceIds
-                        = Sets.newHashSet(vpnInstanceId);
-                removeInstances(vpnInstanceIds);
-                break;
-            case SET:
-                checkNotNull(value, RESPONSE_NOT_NULL);
-                vpnInstances = changeJsonToSub(value);
-                createInstances(vpnInstances);
-                break;
-            case UPDATE:
-                checkNotNull(value, RESPONSE_NOT_NULL);
-                vpnInstances = changeJsonToSub(value);
-                updateInstances(vpnInstances);
-                break;
-            default:
-                log.info("Invalid action is received while processing VPN " +
-                                 "instance configuration");
-        }
-    }
-
-    @Override
-    public void updateImpExpRouteTargets(String routeTargetType,
-                                         Set<VpnRouteTarget> exportRouteTargets,
-                                         Set<VpnRouteTarget> importRouteTargets,
-                                         VpnRouteTarget vpnRouteTarget) {
-        switch (routeTargetType) {
-            case "export_extcommunity":
-                exportRouteTargets.add(vpnRouteTarget);
-                break;
-            case "import_extcommunity":
-                importRouteTargets.add(vpnRouteTarget);
-                break;
-            case "both":
-                exportRouteTargets.add(vpnRouteTarget);
-                importRouteTargets.add(vpnRouteTarget);
-                break;
-            default:
-                log.info("Invalid route target type has received");
-                break;
-        }
-    }
-
-    /**
-     * Returns a collection of vpnInstances from subnetNodes.
-     *
-     * @param vpnInstanceNodes the vpnInstance json node
-     * @return returns the collection of vpn instances
-     */
-    private Collection<VpnInstance> changeJsonToSub(JsonNode vpnInstanceNodes) {
-        checkNotNull(vpnInstanceNodes, JSON_NOT_NULL);
-
-        Set<VpnRouteTarget> exportRouteTargets = new HashSet<>();
-        Set<VpnRouteTarget> importRouteTargets = new HashSet<>();
-        Set<VpnRouteTarget> configRouteTargets = new HashSet<>();
-
-        Map<VpnInstanceId, VpnInstance> vpnInstanceMap = new HashMap<>();
-        VpnInstanceId id = VpnInstanceId
-                .vpnInstanceId(vpnInstanceNodes.get(ID).asText());
-        EvpnInstanceName name = EvpnInstanceName
-                .evpnName(vpnInstanceNodes.get(VPN_INSTANCE_NAME).asText());
-        String description = vpnInstanceNodes.get(DESCRIPTION).asText();
-        RouteDistinguisher routeDistinguisher = RouteDistinguisher
-                .routeDistinguisher(vpnInstanceNodes.get(ROUTE_DISTINGUISHERS)
-                                            .asText());
-        String routeTargets = vpnInstanceNodes.get(IPV4_FAMILY).asText();
-        String[] list = routeTargets.split(COMMA);
-
-        for (String routeTarget : list) {
-            // Converting route target string into route target object and
-            // then storing into configuration route target set.
-            VpnRouteTarget vpnRouteTarget
-                    = VpnRouteTarget.routeTarget(routeTarget);
-            configRouteTargets.add(vpnRouteTarget);
-            VpnAfConfig vpnAfConfig
-                    = vpnAfConfigService.getVpnAfConfig(vpnRouteTarget);
-            if (vpnAfConfig == null) {
-                log.info("Not able to find vpn af config for the give vpn " +
-                                 "route target");
-                break;
-            }
-            updateImpExpRouteTargets(vpnAfConfig.routeTargetType(),
-                                     exportRouteTargets,
-                                     importRouteTargets,
-                                     vpnRouteTarget);
-        }
-
-        VpnInstance vpnInstance = new DefaultVpnInstance(id, name, description,
-                                                         routeDistinguisher,
-                                                         exportRouteTargets,
-                                                         importRouteTargets,
-                                                         configRouteTargets);
-        vpnInstanceMap.put(id, vpnInstance);
-        return Collections.unmodifiableCollection(vpnInstanceMap.values());
-    }
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/impl/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/impl/package-info.java
deleted file mode 100644
index 6cfc75e..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * VPN resources that used by l3vpn.
- */
-package org.onosproject.evpnopenflow.rsc.vpninstance.impl;
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/package-info.java
deleted file mode 100644
index b68dbd0..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * EVPN VPN instance implementation.
- */
-package org.onosproject.evpnopenflow.rsc.vpninstance;
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortEvent.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortEvent.java
deleted file mode 100644
index acc28db..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortEvent.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.vpnport;
-
-import org.onosproject.event.AbstractEvent;
-import org.onosproject.evpnopenflow.rsc.VpnPort;
-
-/**
- * Describes network VPN port event.
- */
-public class VpnPortEvent extends AbstractEvent<VpnPortEvent.Type, VpnPort> {
-
-    /**
-     * Type of VPN port events.
-     */
-    public enum Type {
-        /**
-         * Signifies that VPN port has been set.
-         */
-        VPN_PORT_SET,
-        /**
-         * Signifies that VPN port has been deleted.
-         */
-        VPN_PORT_DELETE,
-        /**
-         * Signifies that VPN port has been updated.
-         */
-        VPN_PORT_UPDATE
-    }
-
-    /**
-     * Creates an event of a given type and for the specified VPN port.
-     *
-     * @param type    VPN port type
-     * @param vpnPort VPN port subject
-     */
-    public VpnPortEvent(Type type, VpnPort vpnPort) {
-        super(type, vpnPort);
-    }
-
-    /**
-     * Creates an event of a given type and for the specified VPN port.
-     *
-     * @param type    VPN port type
-     * @param vpnPort VPN port subject
-     * @param time    occurrence time
-     */
-    public VpnPortEvent(Type type, VpnPort vpnPort, long time) {
-        super(type, vpnPort, time);
-    }
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortListener.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortListener.java
deleted file mode 100644
index 95eb797..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.vpnport;
-
-import org.onosproject.event.EventListener;
-
-/**
- * Entity capable of VPN port related events.
- */
-public interface VpnPortListener extends EventListener<VpnPortEvent> {
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortService.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortService.java
deleted file mode 100644
index c7bce1b..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortService.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.vpnport;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.onosproject.evpnopenflow.rsc.VpnPort;
-import org.onosproject.evpnopenflow.rsc.VpnPortId;
-
-import java.util.Collection;
-
-
-/**
- * Service for interacting with the inventory of VPN port.
- */
-public interface VpnPortService {
-    /**
-     * Returns if the vpnPort is existed.
-     *
-     * @param vpnPortId vpnPort identifier
-     * @return true or false if one with the given identifier is not existed.
-     */
-    boolean exists(VpnPortId vpnPortId);
-
-    /**
-     * Returns the vpnPort with the identifier.
-     *
-     * @param vpnPortId vpnPort ID
-     * @return VpnPort or null if one with the given ID is not know.
-     */
-    VpnPort getPort(VpnPortId vpnPortId);
-
-    /**
-     * Returns the collection of the currently known vpnPort.
-     *
-     * @return collection of VpnPort.
-     */
-    Collection<VpnPort> getPorts();
-
-    /**
-     * Creates vpnPorts by vpnPorts.
-     *
-     * @param vpnPorts the iterable collection of vpnPorts
-     * @return true if all given identifiers created successfully.
-     */
-    boolean createPorts(Iterable<VpnPort> vpnPorts);
-
-    /**
-     * Updates vpnPorts by vpnPorts.
-     *
-     * @param vpnPorts the iterable  collection of vpnPorts
-     * @return true if all given identifiers updated successfully.
-     */
-    boolean updatePorts(Iterable<VpnPort> vpnPorts);
-
-    /**
-     * Deletes vpnPortIds by vpnPortIds.
-     *
-     * @param vpnPortIds the iterable collection of vpnPort identifiers
-     * @return true or false if one with the given identifier to delete is
-     * successfully.
-     */
-    boolean removePorts(Iterable<VpnPortId> vpnPortIds);
-
-    /**
-     * process gluon config for vpn port information.
-     *
-     * @param action can be either update or delete
-     * @param key    can contain the id and also target information
-     * @param value  content of the vpn port configuration
-     */
-    void processGluonConfig(String action, String key, JsonNode value);
-
-    /**
-     * Adds the specified listener to Vpn Port manager.
-     *
-     * @param listener Vpn Port listener
-     */
-    void addListener(VpnPortListener listener);
-
-    /**
-     * Removes the specified listener to Vpn Port manager.
-     *
-     * @param listener Vpn Port listener
-     */
-    void removeListener(VpnPortListener listener);
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/impl/VpnPortManager.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/impl/VpnPortManager.java
deleted file mode 100644
index b62d034..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/impl/VpnPortManager.java
+++ /dev/null
@@ -1,427 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.evpnopenflow.rsc.vpnport.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.google.common.collect.Sets;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.evpnopenflow.rsc.BasePort;
-import org.onosproject.evpnopenflow.rsc.BasePortId;
-import org.onosproject.evpnopenflow.rsc.DefaultVpnPort;
-import org.onosproject.evpnopenflow.rsc.VpnInstanceId;
-import org.onosproject.evpnopenflow.rsc.VpnPort;
-import org.onosproject.evpnopenflow.rsc.VpnPortId;
-import org.onosproject.evpnopenflow.rsc.baseport.BasePortService;
-import org.onosproject.evpnopenflow.rsc.vpnport.VpnPortEvent;
-import org.onosproject.evpnopenflow.rsc.vpnport.VpnPortListener;
-import org.onosproject.evpnopenflow.rsc.vpnport.VpnPortService;
-import org.onosproject.net.DeviceId;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.WallClockTimestamp;
-import org.onosproject.vtnrsc.AllocationPool;
-import org.onosproject.vtnrsc.BindingHostId;
-import org.onosproject.vtnrsc.DefaultSubnet;
-import org.onosproject.vtnrsc.DefaultTenantNetwork;
-import org.onosproject.vtnrsc.DefaultVirtualPort;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.HostRoute;
-import org.onosproject.vtnrsc.PhysicalNetwork;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.onosproject.vtnrsc.Subnet;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetwork;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.subnet.SubnetService;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.APP_ID;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.DELETE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVENT_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVPN_VPN_PORT_START;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVPN_VPN_PORT_STOP;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.INTERFACE_ID;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.JSON_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.LISTENER_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.RESPONSE_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SET;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SLASH;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.UPDATE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_CREATION_FAILED;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_DELETE_FAILED;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_ID;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_ID_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_IS_NOT_EXIST;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_NOT_NULL;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_STORE;
-import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_UPDATE_FAILED;
-
-/**
- * Provides implementation of the VpnPort service.
- */
-@Component(immediate = true, service = VpnPortService.class)
-public class VpnPortManager implements VpnPortService {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-    private final Set<VpnPortListener> listeners = Sets
-            .newCopyOnWriteArraySet();
-
-    protected EventuallyConsistentMap<VpnPortId, VpnPort> vpnPortStore;
-    protected ApplicationId appId;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected BasePortService basePortService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected VirtualPortService virtualPortService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TenantNetworkService tenantNetworkService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected SubnetService subnetService;
-
-    @Activate
-
-    public void activate() {
-        appId = coreService.registerApplication(APP_ID);
-        KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
-                .register(KryoNamespaces.API).register(VpnPort.class)
-                .register(VpnPortId.class);
-        vpnPortStore = storageService
-                .<VpnPortId, VpnPort>eventuallyConsistentMapBuilder()
-                .withName(VPN_PORT_STORE).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> new WallClockTimestamp())
-                .build();
-        log.info(EVPN_VPN_PORT_START);
-    }
-
-    @Deactivate
-    public void deactivate() {
-        vpnPortStore.destroy();
-        log.info(EVPN_VPN_PORT_STOP);
-    }
-
-    @Override
-    public boolean exists(VpnPortId vpnPortId) {
-        checkNotNull(vpnPortId, VPN_PORT_ID_NOT_NULL);
-        return vpnPortStore.containsKey(vpnPortId);
-    }
-
-    @Override
-    public VpnPort getPort(VpnPortId vpnPortId) {
-        checkNotNull(vpnPortId, VPN_PORT_ID_NOT_NULL);
-        return vpnPortStore.get(vpnPortId);
-    }
-
-    @Override
-    public Collection<VpnPort> getPorts() {
-        return Collections.unmodifiableCollection(vpnPortStore.values());
-    }
-
-    @Override
-    public boolean createPorts(Iterable<VpnPort> vpnPorts) {
-        checkNotNull(vpnPorts, VPN_PORT_NOT_NULL);
-        for (VpnPort vpnPort : vpnPorts) {
-            log.info(VPN_PORT_ID, vpnPort.id().toString());
-            vpnPortStore.put(vpnPort.id(), vpnPort);
-            if (!vpnPortStore.containsKey(vpnPort.id())) {
-                log.info(VPN_PORT_CREATION_FAILED, vpnPort.id().toString());
-                return false;
-            }
-            notifyListeners(new VpnPortEvent(VpnPortEvent.Type.VPN_PORT_SET,
-                                             vpnPort));
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updatePorts(Iterable<VpnPort> vpnPorts) {
-        checkNotNull(vpnPorts, VPN_PORT_NOT_NULL);
-        for (VpnPort vpnPort : vpnPorts) {
-            if (!vpnPortStore.containsKey(vpnPort.id())) {
-                log.info(VPN_PORT_IS_NOT_EXIST, vpnPort.id().toString());
-                return false;
-            }
-            vpnPortStore.put(vpnPort.id(), vpnPort);
-            if (!vpnPort.equals(vpnPortStore.get(vpnPort.id()))) {
-                log.info(VPN_PORT_UPDATE_FAILED, vpnPort.id().toString());
-                return false;
-            }
-            notifyListeners(new VpnPortEvent(VpnPortEvent.Type.VPN_PORT_UPDATE,
-                                             vpnPort));
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removePorts(Iterable<VpnPortId> vpnPortIds) {
-        checkNotNull(vpnPortIds, VPN_PORT_NOT_NULL);
-        for (VpnPortId vpnPortid : vpnPortIds) {
-            VpnPort vpnPort = vpnPortStore.get(vpnPortid);
-            vpnPortStore.remove(vpnPortid);
-            if (vpnPortStore.containsKey(vpnPortid)) {
-                log.info(VPN_PORT_DELETE_FAILED, vpnPortid.toString());
-                return false;
-            }
-            notifyListeners(new VpnPortEvent(VpnPortEvent.Type.VPN_PORT_DELETE,
-                                             vpnPort));
-        }
-        return true;
-    }
-
-    @Override
-    public void processGluonConfig(String action, String key, JsonNode value) {
-        Collection<VpnPort> vpnPorts;
-        switch (action) {
-            case DELETE:
-                String[] list = key.split(SLASH);
-                VpnPortId vpnPortId
-                        = VpnPortId.vpnPortId(list[list.length - 1]);
-                Set<VpnPortId> vpnPortIds = Sets.newHashSet(vpnPortId);
-                removePorts(vpnPortIds);
-                // After removing vpn port and also remove virtual port from vtn
-                VirtualPortId virtualPortId
-                        = VirtualPortId.portId(list[list.length - 1]);
-                Set<VirtualPortId> virtualPortIds
-                        = Sets.newHashSet(virtualPortId);
-                virtualPortService.removePorts(virtualPortIds);
-                break;
-            case SET:
-                checkNotNull(value, RESPONSE_NOT_NULL);
-                vpnPorts = changeJsonToSub(value);
-                createPorts(vpnPorts);
-                break;
-            case UPDATE:
-                checkNotNull(value, RESPONSE_NOT_NULL);
-                vpnPorts = changeJsonToSub(value);
-                updatePorts(vpnPorts);
-                break;
-            default:
-                log.info("Invalid action is received while processing VPN " +
-                                 "port configuration");
-        }
-    }
-
-    /**
-     * Creates dummy gluon network to the VTN.
-     *
-     * @param state        the base port state
-     * @param adminStateUp the base port admin status
-     * @param tenantID     the base port tenant ID
-     */
-    private void createDummyGluonNetwork(boolean adminStateUp, String state,
-                                         TenantId tenantID) {
-        String id = "11111111-1111-1111-1111-111111111111";
-        String name = "GluonNetwork";
-        String segmentationID = "50";
-        String physicalNetwork = "None";
-
-        TenantNetwork network = new DefaultTenantNetwork(TenantNetworkId.networkId(id), name,
-                                                         adminStateUp,
-                                                         TenantNetwork.State.valueOf(state),
-                                                         false, tenantID,
-                                                         false,
-                                                         TenantNetwork.Type.LOCAL,
-                                                         PhysicalNetwork.physicalNetwork(physicalNetwork),
-                                                         SegmentationId.segmentationId(segmentationID));
-
-        Set<TenantNetwork> networksSet = Sets.newHashSet(network);
-        tenantNetworkService.createNetworks(networksSet);
-    }
-
-
-    /**
-     * Creates dummy gluon subnet to the VTN.
-     *
-     * @param tenantId the base port tenant ID
-     */
-    public void createDummySubnet(TenantId tenantId) {
-        String id = "22222222-2222-2222-2222-222222222222";
-        String subnetName = "GluonSubnet";
-        String cidr = "0.0.0.0/0";
-        String gatewayIp = "0.0.0.0";
-        Set<HostRoute> hostRoutes = Sets.newHashSet();
-        TenantNetworkId tenantNetworkId = null;
-        Set<AllocationPool> allocationPools = Sets.newHashSet();
-        Iterable<TenantNetwork> networks
-                = tenantNetworkService.getNetworks();
-
-        for (TenantNetwork tenantNetwork : networks) {
-            if (tenantNetwork.name().equals("GluonNetwork")) {
-                tenantNetworkId = tenantNetwork.id();
-                break;
-            }
-        }
-        Subnet subnet = new DefaultSubnet(SubnetId.subnetId(id), subnetName,
-                                          tenantNetworkId,
-                                          tenantId, IpAddress.Version.INET,
-                                          IpPrefix.valueOf(cidr),
-                                          IpAddress.valueOf(gatewayIp),
-                                          false, false, hostRoutes,
-                                          null,
-                                          null,
-                                          allocationPools);
-
-        Set<Subnet> subnetsSet = Sets.newHashSet(subnet);
-        subnetService.createSubnets(subnetsSet);
-    }
-
-    /**
-     * Returns a collection of vpnPort from subnetNodes.
-     *
-     * @param vpnPortNodes the vpnPort json node
-     * @return list of vpnports
-     */
-    private Collection<VpnPort> changeJsonToSub(JsonNode vpnPortNodes) {
-        checkNotNull(vpnPortNodes, JSON_NOT_NULL);
-        Map<VpnPortId, VpnPort> vpnPortMap = new HashMap<>();
-        String interfaceId = vpnPortNodes.get(INTERFACE_ID).asText();
-        VpnPortId vpnPortId = VpnPortId.vpnPortId(interfaceId);
-        VpnInstanceId vpnInstanceId = VpnInstanceId
-                .vpnInstanceId(vpnPortNodes.get(VPN_INSTANCE).asText());
-        VpnPort vpnPort = new DefaultVpnPort(vpnPortId, vpnInstanceId);
-        vpnPortMap.put(vpnPortId, vpnPort);
-        // update ip address and tenant network information in vtn
-        TenantNetworkId tenantNetworkId = null;
-        Map<VirtualPortId, VirtualPort> vPortMap = new HashMap<>();
-        BasePortId basePortId = BasePortId.portId(interfaceId);
-        VirtualPortId virtualPortId = VirtualPortId.portId(interfaceId);
-        BasePort bPort = basePortService.getPort(basePortId);
-        if (bPort != null) {
-            FixedIp fixedIp = FixedIp.fixedIp(SubnetId.subnetId(basePortId.toString()),
-                                              IpAddress.valueOf(vpnPortNodes
-                                                                        .get("ipaddress").asText()));
-            Set<FixedIp> fixedIps = new HashSet<>();
-            fixedIps.add(fixedIp);
-            Map<String, String> strMap = new HashMap<>();
-            boolean adminStateUp = bPort.adminStateUp();
-            strMap.put("name", bPort.name());
-            strMap.put("deviceOwner", bPort.deviceOwner());
-            strMap.put("bindingVnicType", bPort.bindingVnicType());
-            strMap.put("bindingVifType", bPort.bindingVifType());
-            strMap.put("bindingVifDetails", bPort.bindingVifDetails());
-            String state = bPort.state();
-            MacAddress macAddress = bPort.macAddress();
-            TenantId tenantId = bPort.tenantId();
-            DeviceId deviceId = bPort.deviceId();
-            BindingHostId bindingHostId = bPort.bindingHostId();
-            // Creates Dummy Gluon Network and Subnet
-            createDummyGluonNetwork(adminStateUp, state, tenantId);
-            createDummySubnet(tenantId);
-
-            Iterable<TenantNetwork> networks
-                    = tenantNetworkService.getNetworks();
-
-            for (TenantNetwork tenantNetwork : networks) {
-                if (tenantNetwork.name().equals("GluonNetwork")) {
-                    tenantNetworkId = tenantNetwork.id();
-                    break;
-                }
-            }
-            if (tenantNetworkId != null) {
-
-                DefaultVirtualPort vPort = new DefaultVirtualPort(virtualPortId,
-                                                                  tenantNetworkId,
-                                                                  adminStateUp,
-                                                                  strMap, isState(state),
-                                                                  macAddress, tenantId,
-                                                                  deviceId, fixedIps,
-                                                                  bindingHostId,
-                                                                  null,
-                                                                  null);
-                vPortMap.put(virtualPortId, vPort);
-                Collection<VirtualPort> virtualPorts
-                        = Collections.unmodifiableCollection(vPortMap.values());
-                virtualPortService.createPorts(virtualPorts);
-            }
-        }
-
-        return Collections.unmodifiableCollection(vpnPortMap.values());
-    }
-
-    /**
-     * Returns BasePort State.
-     *
-     * @param state the base port state
-     * @return the basePort state
-     */
-    private VirtualPort.State isState(String state) {
-        if (state.equals("ACTIVE")) {
-            return VirtualPort.State.ACTIVE;
-        } else {
-            return VirtualPort.State.DOWN;
-        }
-
-    }
-
-    @Override
-    public void addListener(VpnPortListener listener) {
-        checkNotNull(listener, LISTENER_NOT_NULL);
-        listeners.add(listener);
-    }
-
-    @Override
-    public void removeListener(VpnPortListener listener) {
-        checkNotNull(listener, LISTENER_NOT_NULL);
-        listeners.remove(listener);
-    }
-
-    /**
-     * Notifies specify event to all listeners.
-     *
-     * @param event Vpn Port event
-     */
-    private void notifyListeners(VpnPortEvent event) {
-        checkNotNull(event, EVENT_NOT_NULL);
-        listeners.forEach(listener -> {
-            listener.event(event);
-        });
-    }
-}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/impl/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/impl/package-info.java
deleted file mode 100644
index 5dc98e9..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * VPN resources that used by l3vpn.
- */
-package org.onosproject.evpnopenflow.rsc.vpnport.impl;
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/package-info.java
deleted file mode 100644
index aadae58..0000000
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * VPN resources that used by evpn.
- */
-package org.onosproject.evpnopenflow.rsc.vpnport;
diff --git a/apps/l3vpn/BUILD b/apps/l3vpn/BUILD
deleted file mode 100644
index 8e670a4..0000000
--- a/apps/l3vpn/BUILD
+++ /dev/null
@@ -1,43 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + KRYO + ONOS_YANG + [
-    "//models/l3vpn:onos-models-l3vpn",
-    "//apps/config:onos-apps-config",
-    "//core/store/serializers:onos-core-serializers",
-    "//apps/yang:onos-apps-yang",
-    "//apps/pce/app:onos-apps-pce-app",
-    "//apps/tunnel/api:onos-apps-tunnel-api",
-    "//models/common:onos-models-common",
-]
-
-TEST_DEPS = TEST_ADAPTERS + [
-    "//utils/osgi:onlab-osgi-tests",
-]
-
-APPS = [
-    "org.onosproject.yang",
-    "org.onosproject.yang-gui",
-    "org.onosproject.config",
-    "org.onosproject.restconf",
-    "org.onosproject.protocols.restconfserver",
-    "org.onosproject.tunnel",
-    "org.onosproject.netconf",
-    "org.onosproject.netconfsb",
-    "org.onosproject.models.common",
-    "org.onosproject.models.l3vpn",
-    "org.onosproject.bgpcep",
-    "org.onosproject.pcep",
-    "org.onosproject.bgp",
-]
-
-osgi_jar_with_tests(
-    test_deps = TEST_DEPS,
-    deps = COMPILE_DEPS,
-)
-
-onos_app(
-    app_name = "org.onosproject.l3vpn",
-    category = "Traffic Engineering",
-    description = "L3VPN YANG Application",
-    required_apps = APPS,
-    title = "YANG L3VPN",
-    url = "http://onosproject.org",
-)
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/AccessInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/AccessInfo.java
deleted file mode 100644
index 61f5170..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/AccessInfo.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-import com.google.common.base.Objects;
-
-/**
- * Representation of site network access information.
- */
-public class AccessInfo {
-
-    /**
-     * Site id from sites list.
-     */
-    private String siteId;
-
-    /**
-     * Site network access id from site network access list.
-     */
-    private String accessId;
-
-    /**
-     * Constructs access info with site id and access id.
-     *
-     * @param s site id
-     * @param a access id
-     */
-    public AccessInfo(String s, String a) {
-        siteId = s;
-        accessId = a;
-    }
-
-    /**
-     * Returns the site id.
-     *
-     * @return site id
-     */
-    public String siteId() {
-        return siteId;
-    }
-
-    /**
-     * Returns the access id.
-     *
-     * @return access id
-     */
-    public String accessId() {
-        return accessId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(siteId, accessId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof AccessInfo) {
-            AccessInfo that = (AccessInfo) object;
-            return Objects.equal(siteId, that.siteId) &&
-                    Objects.equal(accessId, that.accessId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return "Access id : " + accessId + "\nSite id : " + siteId;
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpDriverInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpDriverInfo.java
deleted file mode 100644
index 54ee93a..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpDriverInfo.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-/**
- * Representation of BGP configuration required for driver to process.
- */
-public class BgpDriverInfo {
-
-    /**
-     * Model id level of the BGP information that needed to be added in store.
-     */
-    private ModelIdLevel modIdLevel;
-
-    /**
-     * Device id required for the creation of driver model object data.
-     */
-    private String devId;
-
-    /**
-     * Constructs BGP driver info.
-     *
-     * @param m model id level for BGP
-     * @param d device id
-     */
-    public BgpDriverInfo(ModelIdLevel m, String d) {
-        modIdLevel = m;
-        devId = d;
-    }
-
-    /**
-     * Returns the model id level of the BGP information to be added.
-     *
-     * @return model id level
-     */
-    public ModelIdLevel modIdLevel() {
-        return modIdLevel;
-    }
-
-    /**
-     * Returns the device id.
-     *
-     * @return device id
-     */
-    public String devId() {
-        return devId;
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpInfo.java
deleted file mode 100644
index a0da969..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpInfo.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Representation of BGP information which contains the protocol info and the
- * VPN name.
- */
-public class BgpInfo {
-
-    /**
-     * Map of route protocol and the protocol info for the BGP info.
-     */
-    private Map<RouteProtocol, ProtocolInfo> protocolInfo;
-
-    /**
-     * VPN name, to which the BGP info belongs.
-     */
-    private String vpnName;
-
-    /**
-     * Constructs BGP info.
-     */
-    public BgpInfo() {
-    }
-
-    /**
-     * Returns the map of protocol info associated with the BGP info.
-     *
-     * @return protocol info map.
-     */
-    public Map<RouteProtocol, ProtocolInfo> protocolInfo() {
-        return protocolInfo;
-    }
-
-    /**
-     * Sets the map of protocol info with route protocol as key value.
-     *
-     * @param protocolInfo protocol info map
-     */
-    public void protocolInfo(Map<RouteProtocol, ProtocolInfo> protocolInfo) {
-        this.protocolInfo = protocolInfo;
-    }
-
-    /**
-     * Adds a protocol info with route protocol as key to the map.
-     *
-     * @param route route protocol
-     * @param info  protocol info
-     */
-    public void addProtocolInfo(RouteProtocol route, ProtocolInfo info) {
-        if (protocolInfo == null) {
-            protocolInfo = new HashMap<>();
-        }
-        protocolInfo.put(route, info);
-    }
-
-    /**
-     * Returns the VPN name of the BGP info.
-     *
-     * @return VPN name
-     */
-    public String vpnName() {
-        return vpnName;
-    }
-
-    /**
-     * Sets the VPN name.
-     *
-     * @param vpnName VPN name
-     */
-    public void vpnName(String vpnName) {
-        this.vpnName = vpnName;
-    }
-
-    @Override
-    public String toString() {
-        return "VPN name : " + vpnName;
-    }
-}
-
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/DeviceInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/DeviceInfo.java
deleted file mode 100644
index 9a2c49a..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/DeviceInfo.java
+++ /dev/null
@@ -1,404 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.driver.DriverHandler;
-import org.onosproject.net.driver.DriverService;
-import org.onosproject.yang.model.ModelObjectData;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Representation of standard device model, with interface, instance and its
- * respective device id.
- */
-public class DeviceInfo {
-
-    /**
-     * Device id of the device.
-     */
-    private final DeviceId deviceId;
-
-    /**
-     * Type of the VPN.
-     */
-    private final VpnType type;
-
-    /**
-     * BGP information of the device.
-     */
-    private BgpInfo bgpInfo;
-
-    /**
-     * List of interface names of the device.
-     */
-    private List<String> ifNames;
-
-    /**
-     * List of network access of the device.
-     */
-    private List<AccessInfo> accesses;
-
-    /**
-     * List of tunnel names belonging to the device.
-     */
-    private List<String> tnlNames;
-
-    /**
-     * Status of tunnel policy being created for this device in this VPN.
-     */
-    private boolean isTnlPolCreated;
-
-    /**
-     * Constructs device info with a device id and VPN type.
-     *
-     * @param d device id
-     * @param t VPN type
-     */
-    public DeviceInfo(DeviceId d, VpnType t) {
-        deviceId = d;
-        type = t;
-    }
-
-    /**
-     * Returns the device id.
-     *
-     * @return device id
-     */
-    public DeviceId deviceId() {
-        return deviceId;
-    }
-
-    /**
-     * Returns the type of the VPN instance.
-     *
-     * @return VPN type
-     */
-    public VpnType type() {
-        return type;
-    }
-
-    /**
-     * Adds a interface name to the list.
-     *
-     * @param ifName interface name
-     */
-    public void addIfName(String ifName) {
-        if (ifNames == null) {
-            ifNames = new LinkedList<>();
-        }
-        ifNames.add(ifName);
-    }
-
-    /**
-     * Returns the list of interface name.
-     *
-     * @return interface names
-     */
-    public List<String> ifNames() {
-        return ifNames;
-    }
-
-    /**
-     * Sets the list of interface name.
-     *
-     * @param ifNames interface names
-     */
-    public void ifNames(List<String> ifNames) {
-        this.ifNames = ifNames;
-    }
-
-    /***
-     * Returns the list of tunnel names.
-     *
-     * @return tunnel names
-     */
-    public List<String> tnlNames() {
-        return tnlNames;
-    }
-
-    /**
-     * Sets the list of tunnel names.
-     *
-     * @param tnlNames tunnel names
-     */
-    public void tnlNames(List<String> tnlNames) {
-        this.tnlNames = tnlNames;
-    }
-
-    /**
-     * Adds a tunnel name to the list.
-     *
-     * @param tnlName tunnel name
-     */
-    public void addTnlName(String tnlName) {
-        if (tnlNames == null) {
-            tnlNames = new LinkedList<>();
-        }
-        tnlNames.add(tnlName);
-    }
-
-    /**
-     * Returns true if tunnel policy is created for this device in this VPN;
-     * false otherwise.
-     *
-     * @return true if tunnel policy is created; false otherwise
-     */
-    public boolean isTnlPolCreated() {
-        return isTnlPolCreated;
-    }
-
-    /**
-     * Sets true if tunnel policy is created for this device in this VPN;
-     * false otherwise.
-     *
-     * @param tnlPolCreated status of tunnel policy creation
-     */
-    public void setTnlPolCreated(boolean tnlPolCreated) {
-        isTnlPolCreated = tnlPolCreated;
-    }
-
-    /**
-     * Returns the BGP information.
-     *
-     * @return BGP info
-     */
-    public BgpInfo bgpInfo() {
-        return bgpInfo;
-    }
-
-    /**
-     * Sets the BGP information.
-     *
-     * @param bgpInfo BGP info
-     */
-    public void bgpInfo(BgpInfo bgpInfo) {
-        this.bgpInfo = bgpInfo;
-    }
-
-    /**
-     * Returns the list of network accesses.
-     *
-     * @return network accesses
-     */
-    public List<AccessInfo> accesses() {
-        return accesses;
-    }
-
-    /**
-     * Sets the list of network accesses.
-     *
-     * @param accesses network accesses
-     */
-    public void accesses(List<AccessInfo> accesses) {
-        this.accesses = accesses;
-    }
-
-    /**
-     * Adds a access info to the network accesses list.
-     *
-     * @param accessInfo access info
-     */
-    public void addAccessInfo(AccessInfo accessInfo) {
-        if (accesses == null) {
-            accesses = new LinkedList<>();
-        }
-        accesses.add(accessInfo);
-    }
-
-    /**
-     * Processes the creation of VPN instance to the driver with the model
-     * object data of standard device model. It returns the VPN instance of
-     * driver constructed model object data.
-     *
-     * @param driverSvc driver service
-     * @param modelData std device model object data
-     * @return driver instance model object data
-     */
-    public ModelObjectData processCreateInstance(DriverService driverSvc,
-                                                 ModelObjectData modelData) {
-        L3VpnConfig config = getL3VpnConfig(driverSvc);
-        return config.createInstance(modelData);
-    }
-
-    /**
-     * Processes the creation of interface to the driver with the model
-     * object data of standard device model. It returns the interface of driver
-     * constructed model object data.
-     *
-     * @param driverSvc driver service
-     * @param modData   std device model object data
-     * @return driver interface model object data
-     */
-    public ModelObjectData processCreateInterface(DriverService driverSvc,
-                                                  ModelObjectData modData) {
-        L3VpnConfig config = getL3VpnConfig(driverSvc);
-        return config.bindInterface(modData);
-    }
-
-    /**
-     * Processes the creation of BGP info to the driver with the BGP info and
-     * the BGP driver configuration. It returns the BGP info of driver
-     * constructed model object data.
-     *
-     * @param driverSvc  driver service
-     * @param bgpInfo    BGP info
-     * @param driverInfo driver config details
-     * @return driver BGP model object data
-     */
-    public ModelObjectData processCreateBgpInfo(DriverService driverSvc,
-                                                BgpInfo bgpInfo,
-                                                BgpDriverInfo driverInfo) {
-        L3VpnConfig config = getL3VpnConfig(driverSvc);
-        return config.createBgpInfo(bgpInfo, driverInfo);
-    }
-
-    /**
-     * Processes the creation of tunnel tree from the devices and device
-     * level. It returns the tunnel info with devices and device of driver
-     * constructed model object data.
-     *
-     * @param driverSvc driver service
-     * @param tnlInfo   tunnel info
-     * @return driver model object data of tunnel info with devices and device
-     */
-    public ModelObjectData processCreateTnlDev(DriverService driverSvc,
-                                               TunnelInfo tnlInfo) {
-        L3VpnConfig config = getL3VpnConfig(driverSvc);
-        return config.createTnlDev(tnlInfo);
-    }
-
-    /**
-     * Processes the creation of tunnel policy in the tree from the tunnel
-     * manager or tunnel policy level. It returns the tunnel info with
-     * tunnel policy level of driver constructed model object data.
-     *
-     * @param driverSvc driver service
-     * @param tnlInfo   tunnel info
-     * @return driver model object data of tunnel info with tunnel policy
-     */
-    public ModelObjectData processCreateTnlPol(DriverService driverSvc,
-                                               TunnelInfo tnlInfo) {
-        L3VpnConfig config = getL3VpnConfig(driverSvc);
-        return config.createTnlPol(tnlInfo);
-    }
-
-    /**
-     * Processes the creation of tunnel in the tree from the tunnel next hops
-     * or only tunnel next hop. It returns the tunnel info with tunnel level
-     * of driver constructed model object data
-     *
-     * @param driverSvc driver service
-     * @param tnlInfo   tunnel info
-     * @return driver model object data of tunnel info with tunnel
-     */
-    public ModelObjectData processCreateTnl(DriverService driverSvc,
-                                            TunnelInfo tnlInfo) {
-        L3VpnConfig config = getL3VpnConfig(driverSvc);
-        return config.createTnl(tnlInfo);
-    }
-
-    /**
-     * Processes the binding of tunnel policy to the VPN instance. It returns
-     * the VPN instance with tunnel policy of driver constructed model object
-     * data.
-     *
-     * @param driverSvc driver service
-     * @param tnlInfo   tunnel info
-     * @return driver model object data of VPN instance with tunnel
-     */
-    public ModelObjectData processBindTnl(DriverService driverSvc,
-                                          TunnelInfo tnlInfo) {
-        L3VpnConfig config = getL3VpnConfig(driverSvc);
-        return config.bindTnl(tnlInfo);
-    }
-
-    /**
-     * Processes the deletion of VPN instance to the driver with the model
-     * object data of standard device model. It returns the VPN instance of
-     * driver constructed model object data.
-     *
-     * @param driverSvc driver service
-     * @param modData   model object data
-     * @return driver instance model object data
-     */
-    public ModelObjectData processDeleteInstance(DriverService driverSvc,
-                                                 ModelObjectData modData) {
-        L3VpnConfig config = getL3VpnConfig(driverSvc);
-        return config.deleteInstance(modData);
-    }
-
-    /**
-     * Processes the deletion of interface to the driver with the model
-     * object data of standard device model. It returns the interface of driver
-     * constructed model object data.
-     *
-     * @param driverSvc  driver service
-     * @param objectData model object data
-     * @return driver interface model object data
-     */
-    public ModelObjectData processDeleteInterface(DriverService driverSvc,
-                                                  ModelObjectData objectData) {
-        // TODO: Need to call the behaviour.
-        return null;
-    }
-
-    /**
-     * Processes the deletion of BGP info to the driver with the BGP info and
-     * the BGP driver configuration. It returns the BGP info of driver
-     * constructed model object data.
-     *
-     * @param driverSvc  driver service
-     * @param bgpInfo    BGP info
-     * @param driverInfo driver config details
-     * @return driver BGP model object data
-     */
-    public ModelObjectData processDeleteBgpInfo(DriverService driverSvc,
-                                                BgpInfo bgpInfo,
-                                                BgpDriverInfo driverInfo) {
-        L3VpnConfig config = getL3VpnConfig(driverSvc);
-        return config.deleteBgpInfo(bgpInfo, driverInfo);
-    }
-
-    /**
-     * Processes the deletion of tunnel info according to the levels it has
-     * to be deleted. It returns the tunnel info of driver constructed model
-     * object data.
-     *
-     * @param driverSvc driver service
-     * @param tnlInfo   tunnel info
-     * @return driver tunnel info model object data
-     */
-    public ModelObjectData processDeleteTnl(DriverService driverSvc,
-                                            TunnelInfo tnlInfo) {
-        L3VpnConfig config = getL3VpnConfig(driverSvc);
-        return config.deleteTnl(tnlInfo);
-    }
-
-    /**
-     * Returns the L3VPN config instance from the behaviour.
-     *
-     * @param driverSvc driver service
-     * @return L3VPN config
-     */
-    private L3VpnConfig getL3VpnConfig(DriverService driverSvc) {
-        DriverHandler handler = driverSvc.createHandler(deviceId);
-        return handler.behaviour(L3VpnConfig.class);
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/FullMeshVpnConfig.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/FullMeshVpnConfig.java
deleted file mode 100644
index ebfe324..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/FullMeshVpnConfig.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-/**
- * Representation of the full mesh VPN configuration containing RT.
- */
-public class FullMeshVpnConfig extends VpnConfig {
-
-    /**
-     * Route target value.
-     */
-    private String rt;
-
-    /** Constructs full mesh VPN config.
-     *
-     * @param r RT value
-     */
-    public FullMeshVpnConfig(String r) {
-        rt = r;
-    }
-
-    /**
-     * Returns the RT value.
-     *
-     * @return RT value
-     */
-    public String rt() {
-        return rt;
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/HubSpokeVpnConfig.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/HubSpokeVpnConfig.java
deleted file mode 100644
index ae92e68..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/HubSpokeVpnConfig.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-/**
- * Representation of the hub and spoke VPN configuration containing import and
- * export RTs.
- */
-public class HubSpokeVpnConfig extends VpnConfig {
-
-    /**
-     * Hub import RT value.
-     */
-    private String hubImpRt;
-
-    /**
-     * Hub export RT value.
-     */
-    private String hubExpRt;
-
-    /**
-     * Spoke import RT value.
-     */
-    private String spokeImpRt;
-
-    /**
-     * Spoke export RT value.
-     */
-    private String spokeExpRt;
-
-    /**
-     * Creates hub and spoke VPN config.
-     */
-    public HubSpokeVpnConfig() {
-    }
-
-    /**
-     * Returns hub import RT value.
-     *
-     * @return RT value
-     */
-    public String hubImpRt() {
-        return hubImpRt;
-    }
-
-    /**
-     * Sets hub import RT value.
-     *
-     * @param hubImpRt RT value
-     */
-    public void hubImpRt(String hubImpRt) {
-        this.hubImpRt = hubImpRt;
-    }
-
-    /**
-     * Returns hub export RT value.
-     *
-     * @return RT value
-     */
-    public String hubExpRt() {
-        return hubExpRt;
-    }
-
-    /**
-     * Sets hub export RT value.
-     *
-     * @param hubExpRt RT value
-     */
-    public void hubExpRt(String hubExpRt) {
-        this.hubExpRt = hubExpRt;
-    }
-
-    /**
-     * Returns spoke import RT value.
-     *
-     * @return RT value
-     */
-    public String spokeImpRt() {
-        return spokeImpRt;
-    }
-
-    /**
-     * Sets spoke import RT value.
-     *
-     * @param spokeImpRt RT value
-     */
-    public void spokeImpRt(String spokeImpRt) {
-        this.spokeImpRt = spokeImpRt;
-    }
-
-    /**
-     * Returns spoke export RT value.
-     *
-     * @return RT value
-     */
-    public String spokeExpRt() {
-        return spokeExpRt;
-    }
-
-    /**
-     * Sets spoke export RT value.
-     *
-     * @param spokeExpRt RT value
-     */
-    public void spokeExpRt(String spokeExpRt) {
-        this.spokeExpRt = spokeExpRt;
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/InterfaceInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/InterfaceInfo.java
deleted file mode 100644
index 25fa56c..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/InterfaceInfo.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-/**
- * Representation of interface information, which has the interface name and
- * its binding VPN name and the device info to which it belongs to.
- */
-public class InterfaceInfo {
-
-    /**
-     * Device info value.
-     */
-    private DeviceInfo devInfo;
-
-    /**
-     * Interface name.
-     */
-    private String intName;
-
-    /**
-     * VPN instance name.
-     */
-    private String vpnName;
-
-    /**
-     * Constructs interface info.
-     *
-     * @param d device info
-     * @param i interface name
-     * @param v VPN name
-     */
-    public InterfaceInfo(DeviceInfo d, String i, String v) {
-        devInfo = d;
-        intName = i;
-        vpnName = v;
-    }
-
-    /**
-     * Returns device info of the interface.
-     *
-     * @return device info
-     */
-    public DeviceInfo devInfo() {
-        return devInfo;
-    }
-
-    /**
-     * Returns the interface name.
-     *
-     * @return interface name
-     */
-    public String intName() {
-        return intName;
-    }
-
-    /**
-     * Returns the VPN name.
-     *
-     * @return VPN name
-     */
-    public String vpnName() {
-        return vpnName;
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/L3VpnConfig.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/L3VpnConfig.java
deleted file mode 100644
index bfc8164..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/L3VpnConfig.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-import org.onosproject.net.driver.HandlerBehaviour;
-import org.onosproject.yang.model.ModelObjectData;
-
-/**
- * Behaviour for handling various drivers for l3vpn configurations.
- */
-public interface L3VpnConfig extends HandlerBehaviour {
-
-    /**
-     * Create virtual routing forwarding instance on requested device with
-     * given standard device model object data.
-     *
-     * @param objectData standard device model object data
-     * @return device model object data
-     */
-    ModelObjectData createInstance(ModelObjectData objectData);
-
-    /**
-     * Binds requested virtual routing forwarding instance to interface on the
-     * requested device with given standard device model object data.
-     *
-     * @param objectData standard device model object data
-     * @return device model object data
-     */
-    ModelObjectData bindInterface(ModelObjectData objectData);
-
-    /**
-     * Deletes virtual routing forwarding instance on requested device with
-     * given standard device model object data.
-     *
-     * @param objectData standard device model object data
-     * @return device model object data
-     */
-    ModelObjectData deleteInstance(ModelObjectData objectData);
-
-    /**
-     * Unbinds requested virtual routing forwarding instance to interface on the
-     * requested device with given standard device model object data.
-     *
-     * @param objectData standard device model object data
-     * @return device model object data
-     */
-    ModelObjectData unbindInterface(ModelObjectData objectData);
-
-    /**
-     * Deletes tunnel on requested device with the given tunnel info.
-     *
-     * @param tnlInfo tunnel info
-     * @return device model object data
-     */
-    ModelObjectData deleteTnl(TunnelInfo tnlInfo);
-
-    /**
-     * Creates BGP routing protocol info on requested device with given
-     * BGP info object.
-     *
-     * @param bgpInfo   BGP info object
-     * @param bgpConfig BGP driver config
-     * @return device model object data
-     */
-    ModelObjectData createBgpInfo(BgpInfo bgpInfo, BgpDriverInfo bgpConfig);
-
-    /**
-     * Deletes BGP routing protocol info on requested device with given
-     * BGP info object.
-     *
-     * @param bgpInfo   BGP info object
-     * @param bgpConfig BGP driver config
-     * @return device model object data
-     */
-    ModelObjectData deleteBgpInfo(BgpInfo bgpInfo, BgpDriverInfo bgpConfig);
-
-    /**
-     * Creates device and devices level on requested device for tunnel creation.
-     *
-     * @param tnlInfo tunnel info
-     * @return device model object data
-     */
-    ModelObjectData createTnlDev(TunnelInfo tnlInfo);
-
-    /**
-     * Creates tunnel policy on requested device with given tunnel info.
-     *
-     * @param tnlInfo tunnel info
-     * @return device model object data
-     */
-    ModelObjectData createTnlPol(TunnelInfo tnlInfo);
-
-    /**
-     * Creates tunnel on requested device with given tunnel info.
-     *
-     * @param tnlInfo tunnel info
-     * @return device model object data
-     */
-    ModelObjectData createTnl(TunnelInfo tnlInfo);
-
-    /**
-     * Binds requested tunnel policy name to the VPN to the requested device
-     * with given tunnel info.
-     *
-     * @param tnlInfo tunnel info
-     * @return device model object data
-     */
-    ModelObjectData bindTnl(TunnelInfo tnlInfo);
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ModelIdLevel.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ModelIdLevel.java
deleted file mode 100644
index 91bf248..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ModelIdLevel.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-/**
- * Represents the model id level to add it in the store.
- * //TODO: Further levels has to be added.
- */
-public enum ModelIdLevel {
-
-    /**
-     * Requested model id level is not present, representing top node.
-     */
-    ROOT,
-
-    /**
-     * Requested model id level is devices container.
-     */
-    DEVICES,
-
-    /**
-     * Requested model id level is device list.
-     */
-    DEVICE,
-
-    /**
-     * Requested model id level is VPN list.
-     */
-    VPN,
-
-    /**
-     * Requested model id level is tunnel manager.
-     */
-    TNL_M,
-
-    /**
-     * Requested model id level is tunnel policy.
-     */
-    TNL_POL,
-
-    /**
-     * Requested model id level is tunnel hop.
-     */
-    TP_HOP
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnException.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnException.java
deleted file mode 100644
index 653fa11..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnException.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-/**
- * Representation of exception that needs to be handled by net l3 VPN.
- */
-public class NetL3VpnException extends RuntimeException {
-
-    /**
-     * Creates net l3 VPN exception with an exception message.
-     *
-     * @param excMsg message
-     */
-    public NetL3VpnException(String excMsg) {
-        super(excMsg);
-    }
-
-    /**
-     * Creates net l3 VPN exception with a cause for it.
-     *
-     * @param cause cause
-     */
-    public NetL3VpnException(Throwable cause) {
-        super(cause);
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnStore.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnStore.java
deleted file mode 100644
index db926a2..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnStore.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-import org.onosproject.net.DeviceId;
-
-import java.util.Map;
-
-/**
- * Abstraction of an entity providing pool of available VPN instances
- * its associated devices and interface information.
- */
-public interface NetL3VpnStore {
-
-    /**
-     * Returns the freed ids that can be re-used for RD and RT generation.
-     *
-     * @return collection of freed ids
-     */
-    Iterable<Long> getFreedIdList();
-
-    /**
-     * Returns the VPN instance map available in the store.
-     *
-     * @return VPN instance map
-     */
-    Map<String, VpnInstance> getVpnInstances();
-
-    /**
-     * Returns the BGP info map available in the store.
-     *
-     * @return BGP info map
-     */
-    Map<BgpInfo, DeviceId> getBgpInfo();
-
-    /**
-     * Returns the interface information map available in the store.
-     *
-     * @return interface info map
-     */
-    Map<AccessInfo, InterfaceInfo> getInterfaceInfo();
-
-    /**
-     * Returns the tunnel information map available in the store, for a device.
-     *
-     * @return tunnel info map
-     */
-    Map<DeviceId, Integer> getTunnelInfo();
-
-    /**
-     * Adds freed id to the freed list in the store.
-     *
-     * @param id id
-     */
-    void addIdToFreeList(Long id);
-
-    /**
-     * Adds the VPN name and the VPN instance, if the map does'nt have the
-     * value with it.
-     *
-     * @param name     VPN name
-     * @param instance VPN instance
-     */
-    void addVpnInsIfAbsent(String name, VpnInstance instance);
-
-    /**
-     * Adds the VPN name and the VPN instance to the map.
-     *
-     * @param name     VPN name
-     * @param instance VPN instance
-     */
-    void addVpnIns(String name, VpnInstance instance);
-
-    /**
-     * Adds the access info and the interface info to the map in store.
-     *
-     * @param accessInfo access info
-     * @param intInfo    interface info
-     */
-    void addInterfaceInfo(AccessInfo accessInfo, InterfaceInfo intInfo);
-
-    /**
-     * Adds the BGP info and the device id to the map in store.
-     *
-     * @param bgpInfo BGP info
-     * @param devId   device id
-     */
-    void addBgpInfo(BgpInfo bgpInfo, DeviceId devId);
-
-    /**
-     * Adds the device id and the number of tunnels created for that device.
-     *
-     * @param devId device id
-     * @param count number of tunnels
-     */
-    void addTunnelInfo(DeviceId devId, Integer count);
-
-    /**
-     * Removes the interface info with the key access info from the store.
-     *
-     * @param accessInfo access info
-     * @return true if removed; false otherwise
-     */
-    boolean removeInterfaceInfo(AccessInfo accessInfo);
-
-    /**
-     * Removes the VPN instance from the store with the key VPN name from the
-     * store.
-     *
-     * @param vpnName VPN name
-     * @return true if removed; false otherwise
-     */
-    boolean removeVpnInstance(String vpnName);
-
-    /**
-     * Removes the mentioned id from the freed list.
-     *
-     * @param id id
-     * @return true if removed; false otherwise
-     */
-    boolean removeIdFromFreeList(Long id);
-
-    /**
-     * Removes the device id from the store with the key BGP info from the
-     * store.
-     *
-     * @param bgpInfo BGP info
-     * @return true if removed; false otherwise
-     */
-    boolean removeBgpInfo(BgpInfo bgpInfo);
-
-    /**
-     * Removes the device id from the store with the value count of number of
-     * tunnels.
-     *
-     * @param id device id
-     * @return true if removed; false otherwise
-     */
-    boolean removeTunnelInfo(DeviceId id);
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ProtocolInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ProtocolInfo.java
deleted file mode 100644
index 0efad33..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ProtocolInfo.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Representation of protocol info of the BGP info. It contains the route
- * protocol and the interfaces which are associated with the information.
- */
-public class ProtocolInfo {
-
-    /**
-     * Route protocol.
-     */
-    private RouteProtocol routeProtocol;
-
-    /**
-     * Interface details which uses this protocol with respect to IPV4 address.
-     */
-    private List<AccessInfo> v4Accesses;
-
-    /**
-     * Interface details which uses this protocol with respect to IPV6 address.
-     */
-    private List<AccessInfo> v6Accesses;
-
-    /**
-     * Status of IPV4 address family available.
-     */
-    private boolean ipv4Af;
-
-    /**
-     * Status of IPV6 address family available.
-     */
-    private boolean ipv6Af;
-
-    /**
-     * Process id of the protocol info.
-     */
-    private String processId;
-
-    /**
-     * Constructs protocol info.
-     */
-    public ProtocolInfo() {
-    }
-
-    /**
-     * Returns the route protocol.
-     *
-     * @return route protocol
-     */
-    public RouteProtocol routeProtocol() {
-        return routeProtocol;
-    }
-
-    /**
-     * Sets the route protocol.
-     *
-     * @param routeProtocol route protocol
-     */
-    public void routeProtocol(RouteProtocol routeProtocol) {
-        this.routeProtocol = routeProtocol;
-    }
-
-    /**
-     * Returns the process id.
-     *
-     * @return process id
-     */
-    public String processId() {
-        return processId;
-    }
-
-    /**
-     * Sets the process id.
-     *
-     * @param processId process id.
-     */
-    public void processId(String processId) {
-        this.processId = processId;
-    }
-
-    /**
-     * Returns true if the IPV4 address family uses the protocol info; false
-     * otherwise.
-     *
-     * @return true if IPV4 address family uses; false otherwise
-     */
-    public boolean isIpv4Af() {
-        return ipv4Af;
-    }
-
-    /**
-     * Sets true if the IPV4 address family uses the protocol info; false
-     * otherwise.
-     *
-     * @param ipv4Af true if IPV4 interface uses; false otherwise
-     */
-    public void ipv4Af(boolean ipv4Af) {
-        this.ipv4Af = ipv4Af;
-    }
-
-    /**
-     * Returns true if the IPV6 address family uses the protocol info; false
-     * otherwise.
-     *
-     * @return true if IPV6 address family uses; false otherwise
-     */
-    public boolean isIpv6Af() {
-        return ipv6Af;
-    }
-
-    /**
-     * Sets true if the IPV6 address family uses the protocol info; false
-     * otherwise.
-     *
-     * @param ipv6Af true if IPV6 interface uses; false otherwise
-     */
-    public void ipv6Af(boolean ipv6Af) {
-        this.ipv6Af = ipv6Af;
-    }
-
-    /**
-     * Returns the list of IPV4 network access information.
-     *
-     * @return IPV4 network accesses
-     */
-    public List<AccessInfo> v4Accesses() {
-        return v4Accesses;
-    }
-
-    /**
-     * Sets the list of IPV4 network access information.
-     *
-     * @param v4Accesses IPV4 network accesses
-     */
-    public void v4Accesses(List<AccessInfo> v4Accesses) {
-        this.v4Accesses = v4Accesses;
-    }
-
-    /**
-     * Adds a access info to the IPV4 network accesses.
-     *
-     * @param info IPV4 network access
-     */
-    public void addV4Access(AccessInfo info) {
-        if (v4Accesses == null) {
-            v4Accesses = new LinkedList<>();
-        }
-        v4Accesses.add(info);
-    }
-
-    /**
-     * Returns the list of IPV6 network access information.
-     *
-     * @return IPV6 network accesses
-     */
-    public List<AccessInfo> v6Accesses() {
-        return v6Accesses;
-    }
-
-    /**
-     * Sets the list of IPV6 network access information.
-     *
-     * @param v6Accesses IPV6 network accesses
-     */
-    public void v6Accesses(List<AccessInfo> v6Accesses) {
-        this.v4Accesses = v6Accesses;
-    }
-
-    /**
-     * Adds a access info to the IPV6 network accesses.
-     * @param info IPV4 network access
-     */
-    public void addV6Access(AccessInfo info) {
-        if (v6Accesses == null) {
-            v6Accesses = new LinkedList<>();
-        }
-        v6Accesses.add(info);
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/RouteProtocol.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/RouteProtocol.java
deleted file mode 100644
index f7c74be..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/RouteProtocol.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-/**
- * Represents the route protocol of BGP info.
- */
-public enum RouteProtocol {
-
-    /**
-     * Requested route protocol type is of BGP.
-     */
-    BGP("bgp"),
-
-    /**
-     * Requested route protocol type is of direct.
-     */
-    DIRECT("direct"),
-
-    /**
-     * Requested route protocol type is of OSPF.
-     */
-    OSPF("ospf"),
-
-    /**
-     * Requested route protocol type is of RIP.
-     */
-    RIP("rip"),
-
-    /**
-     * Requested route protocol type is of RIPNG.
-     */
-    RIP_NG("ripng"),
-
-    /**
-     * Requested route protocol type is of VRRP.
-     */
-    VRRP("vrrp"),
-
-    /**
-     * Requested route protocol type is of static.
-     */
-    STATIC("yangautoprefixstatic");
-
-    /**
-     * Defined protocol type from the enum value.
-     */
-    private final String proType;
-
-    /**
-     * Constructs protocol type value from enum.
-     *
-     * @param proType value of enum
-     */
-    RouteProtocol(String proType) {
-        this.proType = proType;
-    }
-
-    /**
-     * Returns route protocol for corresponding protocol name.
-     *
-     * @param name protocol name
-     * @return route protocol
-     */
-    public static RouteProtocol getProType(String name) {
-        for (RouteProtocol protocol : values()) {
-            if (protocol.proType.equals(name.toLowerCase())) {
-                return protocol;
-            }
-        }
-        throw new NetL3VpnException("There is no protocol type as " + name);
-    }
-
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/TunnelInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/TunnelInfo.java
deleted file mode 100644
index db8c9c6..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/TunnelInfo.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-/**
- * Represents the tunnel information.
- */
-public class TunnelInfo {
-
-    /**
-     * Destination ip address.
-     */
-    private final String desIp;
-
-    /**
-     * Tunnel name.
-     */
-    private final String tnlName;
-
-    /**
-     * Tunnel policy name.
-     */
-    private final String polName;
-
-    /**
-     * Device id.
-     */
-    private final String devId;
-
-    /**
-     * Level of the model.
-     */
-    private ModelIdLevel level;
-
-    /**
-     * Creates tunnel info with destination ip address, tunnel name, tunnel
-     * policy name and device id.
-     *
-     * @param dIp   destination ip
-     * @param tName tunnel name
-     * @param pName tunnel policy name
-     * @param dId   device id
-     */
-    public TunnelInfo(String dIp, String tName, String pName, String dId) {
-        this.desIp = dIp;
-        this.tnlName = tName;
-        this.polName = pName;
-        this.devId = dId;
-    }
-
-    /**
-     * Returns the destination ip-address.
-     *
-     * @return destination ip-address
-     */
-    public String desIp() {
-        return desIp;
-    }
-
-    /**
-     * Returns the tunnel name.
-     *
-     * @return tunnel name
-     */
-    public String tnlName() {
-        return tnlName;
-    }
-
-    /**
-     * Returns the tunnel policy name.
-     *
-     * @return tunnel policy name
-     */
-    public String polName() {
-        return polName;
-    }
-
-    /**
-     * Returns the device id.
-     *
-     * @return device id
-     */
-    public String devId() {
-        return devId;
-    }
-
-    /**
-     * Returns the model id level.
-     *
-     * @return model id level
-     */
-    public ModelIdLevel level() {
-        return level;
-    }
-
-    /**
-     * Sets the model id level.
-     *
-     * @param level model id level
-     */
-    public void level(ModelIdLevel level) {
-        this.level = level;
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnConfig.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnConfig.java
deleted file mode 100644
index 743cffa..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnConfig.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-/**
- * Abstraction of VPN config which contains RD value for the VPN instance.
- */
-public class VpnConfig {
-
-    /**
-     * RD value for VPN instance.
-     */
-    private String rd;
-
-    /**
-     * Created VPN config.
-     */
-    public VpnConfig() {
-    }
-
-    /**
-     * Returns RD value.
-     *
-     * @return RD value
-     */
-    public String rd() {
-        return rd;
-    }
-
-    /**
-     * Sets the RD value.
-     *
-     * @param rd RD value
-     */
-    public void rd(String rd) {
-        this.rd = rd;
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnInstance.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnInstance.java
deleted file mode 100644
index 17a6ee8..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnInstance.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-import org.onosproject.net.DeviceId;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Representation of stored VPN instance, which contains the configuration
- * such as RD and RT, also the device info and the VPN type.
- */
-public class VpnInstance<T extends VpnConfig> {
-
-    /**
-     * VPN instance name.
-     */
-    private String vpnName;
-
-    /**
-     * List of devices for the VPN.
-     */
-    private Map<DeviceId, DeviceInfo> devInfo;
-
-    /**
-     * Type of the VPN.
-     */
-    private VpnType type;
-
-    /**
-     * VPN config information.
-     */
-    private T vpnConfig;
-
-    /**
-     * Creates VPN instance with VPN name.
-     *
-     * @param v VPN name
-     */
-    public VpnInstance(String v) {
-        vpnName = v;
-    }
-
-    /**
-     * Returns the type of the VPN instance.
-     *
-     * @return VPN type
-     */
-    public VpnType type() {
-        return type;
-    }
-
-    /**
-     * Sets the type of the VPN instance.
-     *
-     * @param type VPN type
-     */
-    public void type(VpnType type) {
-        this.type = type;
-    }
-
-    /**
-     * Returns the configuration of VPN instance.
-     *
-     * @return VPN config
-     */
-    public T vpnConfig() {
-        return vpnConfig;
-    }
-
-    /**
-     * Sets the configuration of VPN instance.
-     *
-     * @param vpnConfig VPN config
-     */
-    public void vpnConfig(T vpnConfig) {
-        this.vpnConfig = vpnConfig;
-    }
-
-    /**
-     * Returns the device info map.
-     *
-     * @return device info map
-     */
-    public Map<DeviceId, DeviceInfo> devInfo() {
-        return devInfo;
-    }
-
-    /**
-     * Sets the device info map.
-     *
-     * @param devInfo device info map
-     */
-    public void devInfo(Map<DeviceId, DeviceInfo> devInfo) {
-        this.devInfo = devInfo;
-    }
-
-    /**
-     * Adds the content to device info map.
-     *
-     * @param id   device id
-     * @param info device info
-     */
-    public void addDevInfo(DeviceId id, DeviceInfo info) {
-        if (devInfo == null) {
-            devInfo = new HashMap<>();
-        }
-        devInfo.put(id, info);
-    }
-
-    /**
-     * Returns the VPN instance name.
-     *
-     * @return VPN name
-     */
-    public String vpnName() {
-        return vpnName;
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnSiteRole.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnSiteRole.java
deleted file mode 100644
index d190488..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnSiteRole.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-/**
- * Representation of VPN instance name and its respective site role for each
- * site.
- */
-public class VpnSiteRole {
-
-    /**
-     * VPN instance name of the site.
-     */
-    private String name;
-
-    /**
-     * Site role of the site.
-     */
-    private VpnType role;
-
-    /**
-     * Creates VPN instance site role.
-     *
-     * @param n VPN name
-     * @param r site role
-     */
-    public VpnSiteRole(String n, VpnType r) {
-        name = n;
-        role = r;
-    }
-
-    /**
-     * Returns the VPN instance name of the site.
-     *
-     * @return VPN name
-     */
-    public String name() {
-        return name;
-    }
-
-    /**
-     * Returns the site role.
-     *
-     * @return site role
-     */
-    public VpnType role() {
-        return role;
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnType.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnType.java
deleted file mode 100644
index 78b37e5..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnType.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn;
-
-/**
- * Represents the type of VPN instance.
- */
-public enum VpnType {
-
-    /**
-     * Requested VPN type is of full mesh.
-     */
-    ANY_TO_ANY,
-
-    /**
-     * Requested VPN type is of hub.
-     */
-    HUB,
-
-    /**
-     * Requested VPN type is of spoke.
-     */
-    SPOKE
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/BgpConstructionUtil.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/BgpConstructionUtil.java
deleted file mode 100644
index bedc4a3..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/BgpConstructionUtil.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn.impl;
-
-import org.onosproject.l3vpn.netl3vpn.AccessInfo;
-import org.onosproject.l3vpn.netl3vpn.BgpInfo;
-import org.onosproject.l3vpn.netl3vpn.DeviceInfo;
-import org.onosproject.l3vpn.netl3vpn.NetL3VpnException;
-import org.onosproject.l3vpn.netl3vpn.ProtocolInfo;
-import org.onosproject.l3vpn.netl3vpn.RouteProtocol;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.RoutingProtocolType;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siteattachmentipconnection.IpConnection;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siterouting.routingprotocols.RoutingProtocol;
-
-import java.util.List;
-import java.util.Map;
-
-import static org.onosproject.l3vpn.netl3vpn.RouteProtocol.DIRECT;
-import static org.onosproject.l3vpn.netl3vpn.RouteProtocol.STATIC;
-import static org.onosproject.l3vpn.netl3vpn.RouteProtocol.getProType;
-
-/**
- * Representation of utility for BGP info creation and deletion.
- */
-public final class BgpConstructionUtil {
-
-    private static final String ZERO = "0";
-
-    // No instantiation.
-    private BgpConstructionUtil() {
-    }
-
-    /**
-     * Creates the BGP info instance, from the routing protocols available.
-     * It returns BGP info if for the first time, else returns null.
-     *
-     * @param routes  route protocol
-     * @param info    device info
-     * @param vpnName VPN name
-     * @param connect ip connection
-     * @param access  access info
-     * @return BGP info instance
-     */
-    public static BgpInfo createBgpInfo(List<RoutingProtocol> routes,
-                                        DeviceInfo info, String vpnName,
-                                        IpConnection connect, AccessInfo access) {
-        BgpInfo devBgp = info.bgpInfo();
-        BgpInfo infoBgp = new BgpInfo();
-        infoBgp.vpnName(vpnName);
-        if (devBgp != null) {
-            infoBgp = updateDevBgpInfo(devBgp, infoBgp, connect, routes, access);
-        } else {
-            infoBgp = updateDevBgpInfo(null, infoBgp, connect, routes, access);
-            info.bgpInfo(infoBgp);
-        }
-        if (infoBgp == null || infoBgp.protocolInfo() == null) {
-            return null;
-        }
-        return infoBgp;
-    }
-
-    /**
-     * Updates the device BGP info and also creates the BGP info which has to
-     * be sent to driver, if it is called for the first time.
-     *
-     * @param devBgp  device BGP info
-     * @param driBgp  driver BGP info
-     * @param connect ip connection
-     * @param routes  route protocols
-     * @param access  access info
-     * @return driver BGP info
-     */
-    private static BgpInfo updateDevBgpInfo(BgpInfo devBgp, BgpInfo driBgp,
-                                            IpConnection connect,
-                                            List<RoutingProtocol> routes,
-                                            AccessInfo access) {
-        for (RoutingProtocol route : routes) {
-            ProtocolInfo ifInfo = getRoutePro(route.type(), connect, access);
-            if (ifInfo != null) {
-                if (devBgp != null) {
-                    ProtocolInfo info = addToDevBgp(ifInfo, devBgp, access);
-                    ifInfo = getUpdatedProInfo(info, ifInfo);
-                }
-                if (ifInfo != null) {
-                    driBgp.addProtocolInfo(ifInfo.routeProtocol(), ifInfo);
-                }
-            }
-        }
-        return driBgp;
-    }
-
-    /**
-     * Returns the updated protocol info that has to be sent to driver. If
-     * the protocol info is for the second time or more, the driver info's
-     * protocol info will not be sent. It will return null if no info is
-     * present or nothing to be sent to driver.
-     *
-     * @param devInfo device protocol info
-     * @param driInfo driver protocol info
-     * @return updated driver protocol info
-     */
-    private static ProtocolInfo getUpdatedProInfo(ProtocolInfo devInfo,
-                                                  ProtocolInfo driInfo) {
-        if (driInfo.isIpv4Af() && driInfo.isIpv6Af()) {
-            if ((getV4Size(devInfo) > 1) && (getV6Size(devInfo) > 1)) {
-                return null;
-            }
-            if ((getV4Size(devInfo) > 1) && !(getV6Size(devInfo) > 1)) {
-                driInfo.ipv4Af(false);
-            } else if (!(getV4Size(devInfo) > 1) && (getV6Size(devInfo) > 1)) {
-                driInfo.ipv6Af(false);
-            }
-        }
-        if (driInfo.isIpv4Af() && !driInfo.isIpv6Af()) {
-            if (getV4Size(devInfo) > 1) {
-                return null;
-            }
-        }
-        if (!driInfo.isIpv4Af() && driInfo.isIpv6Af()) {
-            if (getV6Size(devInfo) > 1) {
-                return null;
-            }
-        }
-        return driInfo;
-    }
-
-    private static int getV4Size(ProtocolInfo proInfo) {
-        return proInfo.v4Accesses().size();
-    }
-
-    private static int getV6Size(ProtocolInfo proInfo) {
-        return proInfo.v6Accesses().size();
-    }
-
-    /**
-     * Adds the protocol info to the device BGP info.
-     *
-     * @param proInfo protocol info
-     * @param devBgp  device BGP
-     * @param access  access info
-     * @return protocol info
-     */
-    private static ProtocolInfo addToDevBgp(ProtocolInfo proInfo,
-                                            BgpInfo devBgp, AccessInfo access) {
-        Map<RouteProtocol, ProtocolInfo> devMap = devBgp.protocolInfo();
-        ProtocolInfo devInfo = devMap.get(proInfo.routeProtocol());
-        if (devInfo != null) {
-            if (proInfo.isIpv4Af()) {
-                devInfo.ipv4Af(proInfo.isIpv4Af());
-                devInfo.addV4Access(access);
-            }
-            if (proInfo.isIpv6Af()) {
-                devInfo.ipv6Af(proInfo.isIpv6Af());
-                devInfo.addV6Access(access);
-            }
-        } else {
-            devInfo = proInfo;
-            devBgp.addProtocolInfo(proInfo.routeProtocol(), devInfo);
-        }
-        return devInfo;
-    }
-
-
-    /**
-     * Returns the protocol info of BGP by taking values from the service files.
-     *
-     * @param type    protocol type
-     * @param connect IP connection
-     * @param access  access info
-     * @return protocol info
-     */
-    private static ProtocolInfo getRoutePro(Class<? extends RoutingProtocolType> type,
-                                            IpConnection connect, AccessInfo access) {
-        ProtocolInfo protocolInfo = new ProtocolInfo();
-        RouteProtocol protocol = getProType(type.getSimpleName());
-        switch (protocol) {
-            case DIRECT:
-                protocolInfo.routeProtocol(DIRECT);
-                protocolInfo.processId(ZERO);
-                setAddressFamily(protocolInfo, connect, access);
-                return protocolInfo;
-
-            case STATIC:
-                protocolInfo.routeProtocol(STATIC);
-                protocolInfo.processId(ZERO);
-                setAddressFamily(protocolInfo, connect, access);
-                return protocolInfo;
-
-            case BGP:
-            case OSPF:
-            case RIP:
-            case RIP_NG:
-            case VRRP:
-            default:
-                throw new NetL3VpnException(getRouteProErr(
-                        type.getSimpleName()));
-        }
-    }
-
-    /**
-     * Returns the route protocol error message for unsupported type.
-     *
-     * @param type route protocol type
-     * @return error message
-     */
-    private static String getRouteProErr(String type) {
-        return type + " routing protocol is not supported.";
-    }
-
-    /**
-     * Sets the address family of the protocol info.
-     *
-     * @param proInfo protocol info
-     * @param connect ip connection
-     * @param access  access info
-     */
-    private static void setAddressFamily(ProtocolInfo proInfo,
-                                         IpConnection connect, AccessInfo access) {
-        if (connect.ipv4() != null && connect.ipv4().addresses() != null &&
-                connect.ipv4().addresses().providerAddress() != null) {
-            proInfo.ipv4Af(true);
-            proInfo.addV4Access(access);
-        }
-        if (connect.ipv6() != null && connect.ipv6().addresses() != null &&
-                connect.ipv6().addresses().providerAddress() != null) {
-            proInfo.ipv6Af(true);
-            proInfo.addV6Access(access);
-        }
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java
deleted file mode 100644
index 5178d5e..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn.impl;
-
-import com.google.common.collect.ImmutableSet;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.l3vpn.netl3vpn.AccessInfo;
-import org.onosproject.l3vpn.netl3vpn.BgpInfo;
-import org.onosproject.l3vpn.netl3vpn.DeviceInfo;
-import org.onosproject.l3vpn.netl3vpn.FullMeshVpnConfig;
-import org.onosproject.l3vpn.netl3vpn.HubSpokeVpnConfig;
-import org.onosproject.l3vpn.netl3vpn.InterfaceInfo;
-import org.onosproject.l3vpn.netl3vpn.NetL3VpnStore;
-import org.onosproject.l3vpn.netl3vpn.ProtocolInfo;
-import org.onosproject.l3vpn.netl3vpn.RouteProtocol;
-import org.onosproject.l3vpn.netl3vpn.TunnelInfo;
-import org.onosproject.l3vpn.netl3vpn.VpnConfig;
-import org.onosproject.l3vpn.netl3vpn.VpnInstance;
-import org.onosproject.l3vpn.netl3vpn.VpnType;
-import org.onosproject.net.DeviceId;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.ConsistentMap;
-import org.onosproject.store.service.DistributedSet;
-import org.onosproject.store.service.Serializer;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.yang.model.LeafListKey;
-import org.onosproject.yang.model.ListKey;
-import org.onosproject.yang.model.NodeKey;
-import org.onosproject.yang.model.ResourceId;
-import org.onosproject.yang.model.SchemaId;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Manages the pool of available VPN instances and its associated devices
- * and interface information.
- */
-@Component(immediate = true, service = NetL3VpnStore.class)
-public class DistributedNetL3VpnStore implements NetL3VpnStore {
-
-    private static final Serializer L3VPN_SERIALIZER = Serializer
-            .using(new KryoNamespace.Builder().register(KryoNamespaces.API)
-                           .register(KryoNamespaces.API)
-                           .register(VpnInstance.class)
-                           .register(VpnType.class)
-                           .register(VpnConfig.class)
-                           .register(FullMeshVpnConfig.class)
-                           .register(HubSpokeVpnConfig.class)
-                           .register(DeviceInfo.class)
-                           .register(ResourceId.class)
-                           .register(NodeKey.class)
-                           .register(SchemaId.class)
-                           .register(LeafListKey.class)
-                           .register(ListKey.class)
-                           .register(AccessInfo.class)
-                           .register(InterfaceInfo.class)
-                           .register(BgpInfo.class)
-                           .register(RouteProtocol.class)
-                           .register(ProtocolInfo.class)
-                           .register(TunnelInfo.class)
-                           .build());
-
-    private static final String FREE_ID_NULL = "Free ID cannot be null";
-    private static final String VPN_NAME_NULL = "VPN name cannot be null";
-    private static final String VPN_INS_NULL = "VPN instance cannot be null";
-    private static final String ACCESS_INFO_NULL = "Access info cannot be null";
-    private static final String BGP_INFO_NULL = "BGP info cannot be null";
-    private static final String INT_INFO_NULL = "Interface info cannot be null";
-    private static final String DEV_ID_NULL = "Device Id cannot be null";
-
-    private final Logger log = getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    /**
-     * Freed id list of NET L3VPN.
-     */
-    private DistributedSet<Long> freedIdList;
-
-    /**
-     * Map of interface info with access info as key.
-     */
-    private ConsistentMap<AccessInfo, InterfaceInfo> intInfoMap;
-
-    /**
-     * Map of VPN instance with VPN name as key.
-     */
-    private ConsistentMap<String, VpnInstance> vpnInsMap;
-
-    /**
-     * Map of BGP information and the device id.
-     */
-    private ConsistentMap<BgpInfo, DeviceId> bgpInfoMap;
-
-    /**
-     * Map of device id and tunnel count.
-     */
-    private ConsistentMap<DeviceId, Integer> tunnelInfoMap;
-
-    @Activate
-    protected void activate() {
-        vpnInsMap = storageService.<String, VpnInstance>consistentMapBuilder()
-                .withName("onos-l3vpn-instance-map")
-                .withSerializer(L3VPN_SERIALIZER)
-                .build();
-
-        intInfoMap = storageService
-                .<AccessInfo, InterfaceInfo>consistentMapBuilder()
-                .withName("onos-l3vpn-int-info-map")
-                .withSerializer(L3VPN_SERIALIZER)
-                .build();
-
-        bgpInfoMap = storageService.<BgpInfo, DeviceId>consistentMapBuilder()
-                .withName("onos-l3vpn-bgp-info-map")
-                .withSerializer(L3VPN_SERIALIZER)
-                .build();
-
-        tunnelInfoMap = storageService.<DeviceId, Integer>consistentMapBuilder()
-                .withName("onos-l3vpn-tnl-info-map")
-                .withSerializer(L3VPN_SERIALIZER)
-                .build();
-
-        freedIdList = storageService.<Long>setBuilder()
-                .withName("onos-l3vpn-id-freed-list")
-                .withSerializer(Serializer.using(KryoNamespaces.API))
-                .build()
-                .asDistributedSet();
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        log.info("Stopped");
-    }
-
-    @Override
-    public Iterable<Long> getFreedIdList() {
-        return ImmutableSet.copyOf(freedIdList);
-    }
-
-    @Override
-    public Map<String, VpnInstance> getVpnInstances() {
-        return vpnInsMap.entrySet().stream()
-                .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue()
-                        .value()));
-    }
-
-    @Override
-    public Map<BgpInfo, DeviceId> getBgpInfo() {
-        return bgpInfoMap.entrySet().stream()
-                .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue()
-                        .value()));
-    }
-
-    @Override
-    public Map<AccessInfo, InterfaceInfo> getInterfaceInfo() {
-        return intInfoMap.entrySet().stream()
-                .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue()
-                        .value()));
-    }
-
-    @Override
-    public Map<DeviceId, Integer> getTunnelInfo() {
-        return tunnelInfoMap.entrySet().stream()
-                .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue()
-                        .value()));
-    }
-
-    @Override
-    public void addIdToFreeList(Long id) {
-        checkNotNull(id, FREE_ID_NULL);
-        freedIdList.add(id);
-    }
-
-    @Override
-    public void addVpnInsIfAbsent(String name, VpnInstance instance) {
-        checkNotNull(name, VPN_NAME_NULL);
-        checkNotNull(instance, VPN_INS_NULL);
-        vpnInsMap.putIfAbsent(name, instance);
-    }
-
-    @Override
-    public void addVpnIns(String name, VpnInstance instance) {
-        checkNotNull(name, VPN_NAME_NULL);
-        checkNotNull(instance, VPN_INS_NULL);
-        vpnInsMap.put(name, instance);
-    }
-
-    @Override
-    public void addInterfaceInfo(AccessInfo accessInfo, InterfaceInfo intInfo) {
-        checkNotNull(accessInfo, ACCESS_INFO_NULL);
-        checkNotNull(intInfo, INT_INFO_NULL);
-        intInfoMap.put(accessInfo, intInfo);
-    }
-
-    @Override
-    public void addBgpInfo(BgpInfo bgpInfo, DeviceId devId) {
-        checkNotNull(bgpInfo, BGP_INFO_NULL);
-        checkNotNull(devId, DEV_ID_NULL);
-        bgpInfoMap.put(bgpInfo, devId);
-    }
-
-    @Override
-    public void addTunnelInfo(DeviceId devId, Integer count) {
-        checkNotNull(devId, DEV_ID_NULL);
-        tunnelInfoMap.put(devId, count);
-    }
-
-    @Override
-    public boolean removeInterfaceInfo(AccessInfo accessInfo) {
-        checkNotNull(accessInfo, ACCESS_INFO_NULL);
-
-        if (intInfoMap.remove(accessInfo) == null) {
-            log.error("Interface info deletion for access info {} has failed.",
-                      accessInfo.toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removeVpnInstance(String vpnName) {
-        checkNotNull(vpnName, VPN_NAME_NULL);
-
-        if (vpnInsMap.remove(vpnName) == null) {
-            log.error("Vpn instance deletion for vpn name {} has failed.",
-                      vpnName);
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removeIdFromFreeList(Long id) {
-        checkNotNull(id, FREE_ID_NULL);
-
-        if (!freedIdList.remove(id)) {
-            log.error("Id from free id list {} deletion has failed.",
-                      id.toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removeBgpInfo(BgpInfo bgpInfo) {
-        checkNotNull(bgpInfo, BGP_INFO_NULL);
-
-        if (bgpInfoMap.remove(bgpInfo) == null) {
-            log.error("Device id deletion for BGP info {} has failed.",
-                      bgpInfo.toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removeTunnelInfo(DeviceId id) {
-        checkNotNull(id, DEV_ID_NULL);
-
-        if (tunnelInfoMap.remove(id) == null) {
-            log.error("Device id deletion in tunnel info has failed.");
-            return false;
-        }
-        return true;
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/InsConstructionUtil.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/InsConstructionUtil.java
deleted file mode 100644
index a883ef6..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/InsConstructionUtil.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn.impl;
-
-import org.onosproject.l3vpn.netl3vpn.FullMeshVpnConfig;
-import org.onosproject.l3vpn.netl3vpn.HubSpokeVpnConfig;
-import org.onosproject.l3vpn.netl3vpn.VpnInstance;
-import org.onosproject.l3vpn.netl3vpn.VpnSiteRole;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.devices.device.networkinstances.networkinstance.AugmentedNiNetworkInstance;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.devices.device.networkinstances.networkinstance.DefaultAugmentedNiNetworkInstance;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.devices.device.networkinstances.networkinstance.augmentedninetworkinstance.DefaultL3Vpn;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.devices.device.networkinstances.networkinstance.augmentedninetworkinstance.L3Vpn;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.l3vpnvrfparams.DefaultIpv4;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.l3vpnvrfparams.DefaultIpv6;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.l3vpnvrfparams.Ipv4;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.l3vpnvrfparams.Ipv6;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.l3vpnvrfparams.ipv4.DefaultUnicast;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.l3vpnvrfparams.ipv4.Unicast;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routedistinguisherparams.DefaultRouteDistinguisher;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routedistinguisherparams.RouteDistinguisher;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetparams.DefaultRouteTargets;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetparams.RouteTargets;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetparams.routetargets.Config;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetparams.routetargets.DefaultConfig;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetset.DefaultRts;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetset.Rts;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetset.rts.RtTypeEnum;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siteattachmentipconnection.IpConnection;
-import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.DefaultNetworkInstances;
-import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.NetworkInstances;
-import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.networkinstances.DefaultNetworkInstance;
-import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.networkinstances.NetworkInstance;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import static org.onosproject.l3vpn.netl3vpn.VpnType.ANY_TO_ANY;
-import static org.onosproject.l3vpn.netl3vpn.VpnType.HUB;
-import static org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetset.rts.RtTypeEnum.BOTH;
-import static org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetset.rts.RtTypeEnum.EXPORT;
-import static org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetset.rts.RtTypeEnum.IMPORT;
-
-/**
- * Representation of utility for instance creation and deletion.
- */
-public final class InsConstructionUtil {
-
-    // No instantiation.
-    private InsConstructionUtil() {
-    }
-
-    /**
-     * Creates network instance with augmented info such as RD and RT.
-     *
-     * @param vpnIns  VPN instance
-     * @param role    VPN role
-     * @param connect ip connection
-     * @return network instance
-     */
-    public static NetworkInstances createInstance(VpnInstance vpnIns,
-                                                  VpnSiteRole role,
-                                                  IpConnection connect) {
-        NetworkInstance ins = new DefaultNetworkInstance();
-        NetworkInstances instances = new DefaultNetworkInstances();
-        List<NetworkInstance> insList = new LinkedList<>();
-
-        L3Vpn l3Vpn = buildRd(vpnIns);
-        DefaultAugmentedNiNetworkInstance augIns =
-                buildRt(connect, role, l3Vpn, vpnIns);
-        ins.name(vpnIns.vpnName());
-        insList.add(ins);
-        ((DefaultNetworkInstance) ins).addAugmentation(augIns);
-        instances.networkInstance(insList);
-        return instances;
-    }
-
-    /**
-     * Builds RT from l3 VPN according to the address family VPN belongs to.
-     * It returns built aug network instance from l3 VPN.
-     *
-     * @param con   ip connection
-     * @param role  site VPN role
-     * @param l3Vpn l3 VPN
-     * @param ins   VPN instance
-     * @return aug network instance
-     */
-    private static DefaultAugmentedNiNetworkInstance buildRt(IpConnection con,
-                                                             VpnSiteRole role,
-                                                             L3Vpn l3Vpn,
-                                                             VpnInstance ins) {
-        Ipv4 ipv4 = null;
-        Ipv6 ipv6 = null;
-        if (con.ipv4() != null && con.ipv4().addresses()
-                .providerAddress() != null) {
-            ipv4 = buildIpv4Rt(role, ins);
-        }
-        if (con.ipv6() != null && con.ipv6()
-                .addresses().providerAddress() != null) {
-            ipv6 = buildIpv6Rt(role, ins);
-        }
-        l3Vpn.ipv4(ipv4);
-        l3Vpn.ipv6(ipv6);
-
-        AugmentedNiNetworkInstance augInst =
-                new DefaultAugmentedNiNetworkInstance();
-        augInst.l3Vpn(l3Vpn);
-        return (DefaultAugmentedNiNetworkInstance) augInst;
-    }
-
-    /**
-     * Builds ipv6 RT in the device model.
-     *
-     * @param role   site VPN role
-     * @param vpnIns VPN instance
-     * @return ipv6
-     */
-    private static Ipv6 buildIpv6Rt(VpnSiteRole role, VpnInstance vpnIns) {
-        RouteTargets rts6 = new DefaultRouteTargets();
-        Ipv6 v6 = new DefaultIpv6();
-        org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn
-                .l3vpnvrfparams.ipv6.Unicast uni6 = new org.onosproject.yang
-                .gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.l3vpnvrfparams
-                .ipv6.DefaultUnicast();
-
-        Config configV6 = configRouteTarget(vpnIns, role);
-        rts6.config(configV6);
-        uni6.routeTargets(rts6);
-        v6.unicast(uni6);
-        return v6;
-    }
-
-    /**
-     * Builds ipv4 RT in the device model.
-     *
-     * @param role   site VPN role
-     * @param vpnIns VPN instance
-     * @return ipv4
-     */
-    private static Ipv4 buildIpv4Rt(VpnSiteRole role, VpnInstance vpnIns) {
-        RouteTargets rts4 = new DefaultRouteTargets();
-        Unicast uni4 = new DefaultUnicast();
-        Ipv4 v4 = new DefaultIpv4();
-
-        Config configV4 = configRouteTarget(vpnIns, role);
-        rts4.config(configV4);
-        uni4.routeTargets(rts4);
-        v4.unicast(uni4);
-        return v4;
-    }
-
-    /**
-     * Configures route target according to the site VPN role from the stored
-     * VPN instance.
-     *
-     * @param ins  VPN instance
-     * @param role site VPN role
-     * @return route target config
-     */
-    private static Config configRouteTarget(VpnInstance ins,
-                                            VpnSiteRole role) {
-        Rts rts1;
-        Config config = new DefaultConfig();
-        List<Rts> rtsList = new LinkedList<>();
-
-        if (ins.type() == ANY_TO_ANY) {
-            String rtVal = ((FullMeshVpnConfig) ins.vpnConfig()).rt();
-            rts1 = getRtsVal(rtVal, BOTH);
-        } else {
-            String rtVal1;
-            String rtVal2;
-            HubSpokeVpnConfig conf = (HubSpokeVpnConfig) ins.vpnConfig();
-            if (role.role() == HUB) {
-                rtVal1 = conf.hubImpRt();
-                rtVal2 = conf.hubExpRt();
-            } else {
-                rtVal1 = conf.spokeImpRt();
-                rtVal2 = conf.spokeExpRt();
-            }
-            rts1 = getRtsVal(rtVal1, IMPORT);
-            Rts rts2 = getRtsVal(rtVal2, EXPORT);
-            rtsList.add(rts2);
-        }
-        rtsList.add(rts1);
-        config.rts(rtsList);
-        return config;
-    }
-
-    /**
-     * Returns the device model RT from the RT type and RT value after
-     * building it.
-     *
-     * @param rtVal RT value
-     * @param type  RT type
-     * @return device model RT
-     */
-    private static Rts getRtsVal(String rtVal, RtTypeEnum type) {
-        Rts rts = new DefaultRts();
-        rts.rt(rtVal);
-        rts.rtType(type);
-        return rts;
-    }
-
-    /**
-     * Builds RD from the stored device model VPN instance.
-     *
-     * @param vpn VPN instance
-     * @return l3 VPN object
-     */
-    private static L3Vpn buildRd(VpnInstance vpn) {
-        String rd = vpn.vpnConfig().rd();
-        org.onosproject.yang.gen.v1.ietfbgpl3vpn
-                .rev20160909.ietfbgpl3vpn.routedistinguisherparams
-                .routedistinguisher.Config config = new org.onosproject.yang
-                .gen.v1.ietfbgpl3vpn.rev20160909
-                .ietfbgpl3vpn.routedistinguisherparams.routedistinguisher
-                .DefaultConfig();
-        config.rd(rd);
-        RouteDistinguisher dist = new DefaultRouteDistinguisher();
-        dist.config(config);
-        L3Vpn l3vpn = new DefaultL3Vpn();
-        l3vpn.routeDistinguisher(dist);
-        return l3vpn;
-    }
-
-    /**
-     * Constructs network instance for delete of VPN instance.
-     *
-     * @param vpnName VPN name
-     * @return network instances
-     */
-    static NetworkInstances deleteInstance(String vpnName) {
-        NetworkInstance nwInstance = new DefaultNetworkInstance();
-        List<NetworkInstance> insList = new LinkedList<>();
-        NetworkInstances instances = new DefaultNetworkInstances();
-        nwInstance.name(vpnName);
-        insList.add(nwInstance);
-        instances.networkInstance(insList);
-        return instances;
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/IntConstructionUtil.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/IntConstructionUtil.java
deleted file mode 100644
index 4d1c9d0..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/IntConstructionUtil.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn.impl;
-
-import org.onosproject.l3vpn.netl3vpn.NetL3VpnException;
-import org.onosproject.yang.gen.v1.ietfinettypes.rev20130715.ietfinettypes.Ipv4Address;
-import org.onosproject.yang.gen.v1.ietfinettypes.rev20130715.ietfinettypes.Ipv4AddressNoZone;
-import org.onosproject.yang.gen.v1.ietfinettypes.rev20130715.ietfinettypes.Ipv6Address;
-import org.onosproject.yang.gen.v1.ietfinettypes.rev20130715.ietfinettypes.Ipv6AddressNoZone;
-import org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.ietfinterfaces.devices.device.DefaultInterfaces;
-import org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.ietfinterfaces.devices.device.Interfaces;
-import org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.ietfinterfaces.devices.device.interfaces.DefaultYangAutoPrefixInterface;
-import org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.ietfinterfaces.devices.device.interfaces.YangAutoPrefixInterface;
-import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.AugmentedIfInterface;
-import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.DefaultAugmentedIfInterface;
-import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.augmentedifinterface.DefaultIpv4;
-import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.augmentedifinterface.DefaultIpv6;
-import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.augmentedifinterface.Ipv4;
-import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.augmentedifinterface.Ipv6;
-import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.augmentedifinterface.ipv4.Address;
-import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.augmentedifinterface.ipv4.DefaultAddress;
-import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.augmentedifinterface.ipv4.address.Subnet;
-import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.augmentedifinterface.ipv4.address.subnet.DefaultPrefixLength;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siteattachmentipconnection.IpConnection;
-import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.interfaces.yangautoprefixinterface.ipv4.AugmentedIpIpv4;
-import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.interfaces.yangautoprefixinterface.ipv4.DefaultAugmentedIpIpv4;
-import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.interfaces.yangautoprefixinterface.ipv6.AugmentedIpIpv6;
-import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.interfaces.yangautoprefixinterface.ipv6.DefaultAugmentedIpIpv6;
-import org.onosproject.yang.model.InnerModelObject;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Representation of utility for interface creation and deletion.
- */
-public final class IntConstructionUtil {
-
-    private static final String IP_ADD_NULL = "Vpn binding to an interface " +
-            "requires ip address.";
-
-    // No instantiation.
-    private IntConstructionUtil() {
-    }
-
-    /**
-     * Creates device model interface by building its parameters with port
-     * name, VPN name and ip connection.
-     *
-     * @param pName   port name
-     * @param vpnName VPN name
-     * @param connect ip connection
-     * @return interface device model
-     */
-    public static Interfaces createInterface(String pName, String vpnName,
-                                             IpConnection connect) {
-        Interfaces interfaces = new DefaultInterfaces();
-        List<YangAutoPrefixInterface> intList = new LinkedList<>();
-        YangAutoPrefixInterface inter = buildInterface(vpnName, pName, connect);
-        intList.add(inter);
-        interfaces.yangAutoPrefixInterface(intList);
-        return interfaces;
-    }
-
-    /**
-     * Builds augmented info of ip address to the interface.
-     *
-     * @param vpnName VPN name
-     * @param pName   port name
-     * @param connect ip connection
-     * @return interface
-     */
-    private static YangAutoPrefixInterface buildInterface(String vpnName,
-                                                          String pName,
-                                                          IpConnection connect) {
-        // Bind vpn name in the augmented info of interface.
-        org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623
-                .ietfnetworkinstance.devices.device.interfaces
-                .yangautoprefixinterface.AugmentedIfInterface augIf = new org
-                .onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623
-                .ietfnetworkinstance.devices.device.interfaces
-                .yangautoprefixinterface.DefaultAugmentedIfInterface();
-        augIf.bindNetworkInstanceName(vpnName);
-
-        // Bind ip address to the interface as augmented info.
-        AugmentedIfInterface intAug = buildIpAddress(connect, vpnName);
-        YangAutoPrefixInterface inter = new DefaultYangAutoPrefixInterface();
-        inter.name(pName);
-        ((DefaultYangAutoPrefixInterface) inter).addAugmentation(
-                (InnerModelObject) augIf);
-        ((DefaultYangAutoPrefixInterface) inter).addAugmentation(
-                (InnerModelObject) intAug);
-
-        return inter;
-    }
-
-    /**
-     * Returns ipv6 address filled with attached VPN, ipv6 address and mask.
-     *
-     * @param vpnName VPN name
-     * @param mask    mask
-     * @param ipv6Add ipv6 address
-     * @return device ipv6 address
-     */
-    private static Ipv6 getIpv6Aug(String vpnName, short mask, String ipv6Add) {
-        AugmentedIpIpv6 augIpv6 = new DefaultAugmentedIpIpv6();
-        org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device
-                .interfaces.yangautoprefixinterface.augmentedifinterface.ipv6
-                .Address add = new org.onosproject.yang.gen.v1.ietfip
-                .rev20140616.ietfip.devices.device.interfaces
-                .yangautoprefixinterface.augmentedifinterface.ipv6
-                .DefaultAddress();
-        Ipv6 ipv6 = new DefaultIpv6();
-        List<org.onosproject.yang.gen.v1.ietfip
-                .rev20140616.ietfip.devices.device.interfaces
-                .yangautoprefixinterface.augmentedifinterface.ipv6
-                .Address> addList = new LinkedList<>();
-        add.ip(Ipv6AddressNoZone.of(Ipv6Address.of(ipv6Add)));
-        augIpv6.bindNetworkInstanceName(vpnName);
-        add.prefixLength(mask);
-        addList.add(add);
-        ipv6.address(addList);
-        ((DefaultIpv6) ipv6).addAugmentation((DefaultAugmentedIpIpv6) augIpv6);
-        return ipv6;
-    }
-
-    /**
-     * Returns ipv4 address filled with attached VPN, ipv4 address and mask.
-     *
-     * @param vpnName VPN name
-     * @param mask    mask
-     * @param ipv4Add ipv4 address
-     * @return device ipv4 address
-     */
-    private static Ipv4 getIpv4Aug(String vpnName, short mask, String ipv4Add) {
-        AugmentedIpIpv4 augIpv4 = new DefaultAugmentedIpIpv4();
-        Subnet net = new DefaultPrefixLength();
-        Address add = new DefaultAddress();
-        Ipv4 ipv4 = new DefaultIpv4();
-        List<Address> addList = new LinkedList<>();
-
-        augIpv4.bindNetworkInstanceName(vpnName);
-        ((DefaultPrefixLength) net).prefixLength(mask);
-        add.ip(Ipv4AddressNoZone.of(Ipv4Address.of(ipv4Add)));
-        add.subnet(net);
-        addList.add(add);
-        ipv4.address(addList);
-        ((DefaultIpv4) ipv4).addAugmentation((DefaultAugmentedIpIpv4) augIpv4);
-        return ipv4;
-    }
-
-    /**
-     * Builds ip address according to the existence of ip address in ip
-     * connection of device model.
-     *
-     * @param connect ip connection
-     * @param vpnName VPN name
-     * @return augmented interface
-     */
-    public static AugmentedIfInterface buildIpAddress(IpConnection connect,
-                                                      String vpnName) {
-        if (connect == null || (connect.ipv4() == null
-                && connect.ipv6() == null)) {
-            throw new NetL3VpnException(IP_ADD_NULL);
-        }
-        AugmentedIfInterface intAug = new DefaultAugmentedIfInterface();
-        short mask;
-        if (connect.ipv4() != null) {
-            mask = connect.ipv4().addresses().mask();
-            Ipv4Address peIpv4 = connect.ipv4().addresses().providerAddress();
-            Ipv4 v4 = getIpv4Aug(vpnName, mask, peIpv4.string());
-            intAug.ipv4(v4);
-        }
-
-        if (connect.ipv6() != null) {
-            mask = connect.ipv6().addresses().mask();
-            Ipv6Address peIpv6 = connect.ipv6().addresses().providerAddress();
-            Ipv6 v6 = getIpv6Aug(vpnName, mask, peIpv6.string());
-            intAug.ipv6(v6);
-        }
-        return intAug;
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnManager.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnManager.java
deleted file mode 100644
index 7c1ccf8..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnManager.java
+++ /dev/null
@@ -1,1103 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn.impl;
-
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onlab.util.AbstractAccumulator;
-import org.onlab.util.Accumulator;
-import org.onosproject.cluster.ClusterService;
-import org.onosproject.cluster.LeadershipEvent;
-import org.onosproject.cluster.LeadershipEventListener;
-import org.onosproject.cluster.LeadershipService;
-import org.onosproject.cluster.NodeId;
-import org.onosproject.config.DynamicConfigEvent;
-import org.onosproject.config.DynamicConfigListener;
-import org.onosproject.config.DynamicConfigService;
-import org.onosproject.config.FailedException;
-import org.onosproject.config.Filter;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.core.IdGenerator;
-import org.onosproject.l3vpn.netl3vpn.AccessInfo;
-import org.onosproject.l3vpn.netl3vpn.BgpDriverInfo;
-import org.onosproject.l3vpn.netl3vpn.BgpInfo;
-import org.onosproject.l3vpn.netl3vpn.DeviceInfo;
-import org.onosproject.l3vpn.netl3vpn.FullMeshVpnConfig;
-import org.onosproject.l3vpn.netl3vpn.HubSpokeVpnConfig;
-import org.onosproject.l3vpn.netl3vpn.InterfaceInfo;
-import org.onosproject.l3vpn.netl3vpn.NetL3VpnException;
-import org.onosproject.l3vpn.netl3vpn.NetL3VpnStore;
-import org.onosproject.l3vpn.netl3vpn.VpnConfig;
-import org.onosproject.l3vpn.netl3vpn.VpnInstance;
-import org.onosproject.l3vpn.netl3vpn.VpnSiteRole;
-import org.onosproject.l3vpn.netl3vpn.VpnType;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Port;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.driver.DriverService;
-import org.onosproject.pce.pceservice.api.PceService;
-import org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.ietfinterfaces.devices.device.Interfaces;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.DefaultL3VpnSvc;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.L3VpnSvc;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.accessvpnpolicy.VpnAttachment;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.accessvpnpolicy.vpnattachment.AttachmentFlavor;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.accessvpnpolicy.vpnattachment.attachmentflavor.DefaultVpnId;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.DefaultSites;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.Sites;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.VpnServices;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.sites.Site;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.sites.site.SiteNetworkAccesses;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.sites.site.sitenetworkaccesses.SiteNetworkAccess;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.vpnservices.VpnSvc;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siteattachmentbearer.Bearer;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siteattachmentbearer.bearer.RequestedType;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siteattachmentipconnection.IpConnection;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siterouting.RoutingProtocols;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siterouting.routingprotocols.RoutingProtocol;
-import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.NetworkInstances;
-import org.onosproject.yang.gen.v1.l3vpnsvcext.rev20160730.l3vpnsvcext.l3vpnsvc.sites.site.sitenetworkaccesses.sitenetworkaccess.bearer.DefaultAugmentedL3VpnBearer;
-import org.onosproject.yang.gen.v1.l3vpnsvcext.rev20160730.l3vpnsvcext.l3vpnsvc.sites.site.sitenetworkaccesses.sitenetworkaccess.bearer.requestedtype.DefaultAugmentedL3VpnRequestedType;
-import org.onosproject.yang.gen.v1.l3vpnsvcext.rev20160730.l3vpnsvcext.requestedtypegrouping.requestedtypeprofile.RequestedTypeChoice;
-import org.onosproject.yang.gen.v1.l3vpnsvcext.rev20160730.l3vpnsvcext.requestedtypegrouping.requestedtypeprofile.requestedtypechoice.DefaultDot1Qcase;
-import org.onosproject.yang.gen.v1.l3vpnsvcext.rev20160730.l3vpnsvcext.requestedtypegrouping.requestedtypeprofile.requestedtypechoice.DefaultPhysicalCase;
-import org.onosproject.yang.model.DataNode;
-import org.onosproject.yang.model.DefaultModelObjectData;
-import org.onosproject.yang.model.ModelConverter;
-import org.onosproject.yang.model.ModelObject;
-import org.onosproject.yang.model.ModelObjectData;
-import org.onosproject.yang.model.ModelObjectId;
-import org.onosproject.yang.model.NodeKey;
-import org.onosproject.yang.model.ResourceData;
-import org.onosproject.yang.model.ResourceId;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Timer;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.config.DynamicConfigEvent.Type.NODE_ADDED;
-import static org.onosproject.config.DynamicConfigEvent.Type.NODE_DELETED;
-import static org.onosproject.l3vpn.netl3vpn.VpnType.HUB;
-import static org.onosproject.l3vpn.netl3vpn.impl.BgpConstructionUtil.createBgpInfo;
-import static org.onosproject.l3vpn.netl3vpn.impl.InsConstructionUtil.createInstance;
-import static org.onosproject.l3vpn.netl3vpn.impl.InsConstructionUtil.deleteInstance;
-import static org.onosproject.l3vpn.netl3vpn.impl.IntConstructionUtil.createInterface;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.BEARER_NULL;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.CONS_HUNDRED;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.DEVICE_INFO_NULL;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.EVENT_NULL;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.ID_LIMIT;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.ID_LIMIT_EXCEEDED;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.INT_INFO_NULL;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.IP_INT_INFO_NULL;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.MAX_BATCH_MS;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.MAX_EVENTS;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.MAX_IDLE_MS;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.PORT_NAME;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.SITE_ROLE_NULL;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.SITE_VPN_MISMATCH;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.TIMER;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.UNKNOWN_EVENT;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.VPN_ATTACHMENT_NULL;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.VPN_POLICY_NOT_SUPPORTED;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.VPN_TYPE_UNSUPPORTED;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getBgpCreateConfigObj;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getId;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getIntCreateModObj;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getIntNotAvailable;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getModIdForL3VpnSvc;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getModIdForSites;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getResourceData;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getRole;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getVpnBgpDelModObj;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getVpnCreateModObj;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getVpnDelModObj;
-
-/**
- * The IETF net l3vpn manager implementation.
- */
-@Component(immediate = true)
-public class NetL3VpnManager {
-
-    private static final String APP_ID = "org.onosproject.app.l3vpn";
-    private static final String L3_VPN_ID_TOPIC = "l3vpn-id";
-    private static final String TNL_ID_TOPIC = "l3vpn-tnl-id";
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private final DynamicConfigListener configListener =
-            new InternalConfigListener();
-
-    private final Accumulator<DynamicConfigEvent> accumulator =
-            new InternalEventAccumulator();
-
-    private final InternalLeadershipListener leadershipEventListener =
-            new InternalLeadershipListener();
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DriverService driverService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceService deviceService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected ModelConverter modelConverter;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DynamicConfigService configService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetL3VpnStore l3VpnStore;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LeadershipService leadershipService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected ClusterService clusterService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PceService pceService;
-
-    protected IdGenerator l3VpnIdGen;
-
-    protected IdGenerator tnlIdGen;
-
-    private NodeId localNodeId;
-
-    private ApplicationId appId;
-
-    private ResourceId id;
-
-    private ResourceId module;
-
-    private ResourceId sites;
-
-    private boolean isElectedLeader;
-
-    private NetL3VpnTunnelHandler tnlHandler;
-
-    @Activate
-    protected void activate() {
-        appId = coreService.registerApplication(APP_ID);
-        l3VpnIdGen = coreService.getIdGenerator(L3_VPN_ID_TOPIC);
-        tnlIdGen = coreService.getIdGenerator(TNL_ID_TOPIC);
-        localNodeId = clusterService.getLocalNode().id();
-        leadershipService.addListener(leadershipEventListener);
-        leadershipService.runForLeadership(appId.name());
-        getResourceId();
-        configService.addListener(configListener);
-        tnlHandler = new NetL3VpnTunnelHandler(
-                pceService, driverService, configService, l3VpnStore,
-                deviceService, tnlIdGen, modelConverter);
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        configService.removeListener(configListener);
-        leadershipService.withdraw(appId.name());
-        leadershipService.removeListener(leadershipEventListener);
-        log.info("Stopped");
-    }
-
-    /**
-     * Returns id as string. If the id is not in the freed list a new id is
-     * generated else the id from the freed list is used.
-     *
-     * @return id
-     */
-    private String getIdFromGen() {
-        Long value;
-        Iterable<Long> freeIds = l3VpnStore.getFreedIdList();
-        Iterator<Long> it = freeIds.iterator();
-        if (it.hasNext()) {
-            value = it.next();
-            l3VpnStore.removeIdFromFreeList(value);
-        } else {
-            value = l3VpnIdGen.getNewId();
-        }
-        if (value > ID_LIMIT) {
-            throw new IllegalStateException(ID_LIMIT_EXCEEDED);
-        }
-        return CONS_HUNDRED + String.valueOf(value);
-    }
-
-    /**
-     * Returns the resource id, after constructing model object id and
-     * converting it.
-     */
-    private void getResourceId() {
-
-        ModelObjectId moduleId = ModelObjectId.builder().build();
-        module = getResourceVal(moduleId);
-
-        ModelObjectId svcId = getModIdForL3VpnSvc();
-        id = getResourceVal(svcId);
-
-        ModelObjectId sitesId = getModIdForSites();
-        sites = getResourceVal(sitesId);
-    }
-
-    /**
-     * Returns resource id from model converter.
-     *
-     * @param modelId model object id
-     * @return resource id
-     */
-    private ResourceId getResourceVal(ModelObjectId modelId) {
-        DefaultModelObjectData.Builder data = DefaultModelObjectData.builder()
-                .identifier(modelId);
-        ResourceData resData = modelConverter.createDataNode(data.build());
-        return resData.resourceId();
-    }
-
-    /**
-     * Processes create request from the store, by taking the root object.
-     * The root object is then used for l3VPN processing.
-     *
-     * @param storeId store resource id
-     * @param node    data node
-     */
-    private void processCreateFromStore(ResourceId storeId, DataNode node) {
-        if (isElectedLeader) {
-            List<NodeKey> keys = storeId.nodeKeys();
-            List<ModelObject> objects = null;
-            if (keys.size() == 1) {
-                objects = getModelObjects(node, module);
-            } else if (keys.size() == 2) {
-                objects = getModelObjects(node, id);
-            }
-            if (objects != null) {
-                for (ModelObject obj : objects) {
-                    if (obj instanceof DefaultL3VpnSvc) {
-                        DefaultL3VpnSvc l3VpnSvc = (DefaultL3VpnSvc) obj;
-                        createGlobalConfig(l3VpnSvc);
-                    } else if (obj instanceof DefaultSites) {
-                        DefaultSites sites = (DefaultSites) obj;
-                        createInterfaceConfig(sites);
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Processes delete request from the store, by taking the root object.
-     * The root object would have got deleted from store. So all the
-     * configurations are removed.
-     *
-     * @param dataNode data node
-     */
-    private void processDeleteFromStore(DataNode dataNode) {
-        if (isElectedLeader) {
-            if (dataNode == null) {
-                //TODO: Delete for inner nodes.
-                deleteGlobalConfig(null);
-            }
-        }
-    }
-
-    /**
-     * Returns model objects of the store. The data node read from store
-     * gives the particular node. So the node's parent resource id is taken
-     * and the data node is given to model converter.
-     *
-     * @param dataNode data node from store
-     * @param appId    parent resource id
-     * @return model objects
-     */
-    public List<ModelObject> getModelObjects(DataNode dataNode,
-                                             ResourceId appId) {
-        ResourceData data = getResourceData(dataNode, appId);
-        ModelObjectData modelData = modelConverter.createModel(data);
-        return modelData.modelObjects();
-    }
-
-    /**
-     * Returns true if the event resource id points to the root level node
-     * only and event is for addition and deletion; false otherwise.
-     *
-     * @param event config event
-     * @return true if event is supported; false otherwise
-     */
-    public boolean isSupported(DynamicConfigEvent event) {
-        ResourceId rsId = event.subject();
-        List<NodeKey> storeKeys = rsId.nodeKeys();
-        List<NodeKey> regKeys = id.nodeKeys();
-        List<NodeKey> sitesKeys = sites.nodeKeys();
-        if (storeKeys != null) {
-            int storeSize = storeKeys.size();
-            if (storeSize == 1) {
-                return storeKeys.get(0).equals(regKeys.get(1)) &&
-                        (event.type() == NODE_ADDED ||
-                                event.type() == NODE_DELETED);
-            } else if (storeSize == 2) {
-                return (storeKeys.get(0).equals(sitesKeys.get(1))) &&
-                        storeKeys.get(1).equals(sitesKeys.get(2)) &&
-                        (event.type() == NODE_ADDED ||
-                                event.type() == NODE_DELETED);
-            }
-        }
-        return false;
-    }
-
-    /***
-     * Creates all configuration in the standard device model.
-     *
-     * @param l3VpnSvc l3VPN service object
-     */
-    void createGlobalConfig(L3VpnSvc l3VpnSvc) {
-        if (l3VpnSvc.vpnServices() != null) {
-            createVpnServices(l3VpnSvc.vpnServices());
-        }
-        if (l3VpnSvc.sites() != null) {
-            createInterfaceConfig(l3VpnSvc.sites());
-        }
-    }
-
-    /**
-     * Creates the VPN instances from the VPN services object, if only that
-     * VPN instance is not already created.
-     *
-     * @param vpnSvcs VPN services object
-     */
-    private void createVpnServices(VpnServices vpnSvcs) {
-        if (vpnSvcs != null && vpnSvcs.vpnSvc() != null) {
-            List<VpnSvc> svcList = vpnSvcs.vpnSvc();
-            for (VpnSvc svc : svcList) {
-                String vpnName = svc.vpnId().string();
-                l3VpnStore.addVpnInsIfAbsent(vpnName, new VpnInstance(vpnName));
-            }
-        }
-    }
-
-    /**
-     * Creates interface configuration from the site network access if
-     * available.
-     *
-     * @param sites sites object
-     */
-    private void createInterfaceConfig(Sites sites) {
-        if (sites.site() != null) {
-            List<Site> sitesList = sites.site();
-            for (Site site : sitesList) {
-                if (site.siteNetworkAccesses() != null) {
-                    SiteNetworkAccesses accesses = site.siteNetworkAccesses();
-                    List<SiteNetworkAccess> accessList =
-                            accesses.siteNetworkAccess();
-                    for (SiteNetworkAccess access : accessList) {
-                        createFromAccess(access, site.siteId().string());
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Creates the interface and VPN related configurations from the access
-     * and site id value.
-     *
-     * @param access site network access
-     * @param siteId site id
-     */
-    private void createFromAccess(SiteNetworkAccess access, String siteId) {
-        Map<AccessInfo, InterfaceInfo> intMap = l3VpnStore.getInterfaceInfo();
-        Map<String, VpnInstance> insMap = l3VpnStore.getVpnInstances();
-        String accessId = access.siteNetworkAccessId().string();
-        AccessInfo info = new AccessInfo(siteId, accessId);
-
-        if (intMap.get(info) == null) {
-            VpnSiteRole siteRole = getSiteRole(access.vpnAttachment());
-            VpnInstance instance = insMap.get(siteRole.name());
-            if (instance == null) {
-                throw new NetL3VpnException(SITE_VPN_MISMATCH);
-            }
-            buildFromAccess(instance, info, access, siteRole);
-        }
-    }
-
-    /**
-     * Returns the VPN site role from the VPN attachment.
-     *
-     * @param attach VPN attachment
-     * @return VPN site role
-     */
-    private VpnSiteRole getSiteRole(VpnAttachment attach) {
-        if (attach == null || attach.attachmentFlavor() == null) {
-            throw new NetL3VpnException(VPN_ATTACHMENT_NULL);
-        }
-        AttachmentFlavor flavor = attach.attachmentFlavor();
-        if (!(flavor instanceof DefaultVpnId)) {
-            throw new NetL3VpnException(VPN_POLICY_NOT_SUPPORTED);
-        }
-        DefaultVpnId vpnId = (DefaultVpnId) flavor;
-        if (vpnId.siteRole() == null) {
-            throw new NetL3VpnException(SITE_ROLE_NULL);
-        }
-        VpnType role = getRole(vpnId.siteRole());
-        return new VpnSiteRole(String.valueOf(vpnId.vpnId()), role);
-    }
-
-    /**
-     * Builds the required details for device standard model from the site
-     * network access info available.
-     *
-     * @param instance VPN instance
-     * @param info     access info
-     * @param access   network access
-     * @param role     VPN site role
-     */
-    private void buildFromAccess(VpnInstance instance, AccessInfo info,
-                                 SiteNetworkAccess access, VpnSiteRole role) {
-        Bearer bearer = access.bearer();
-        if (bearer == null) {
-            throw new NetL3VpnException(BEARER_NULL);
-        }
-
-        RequestedType reqType = bearer.requestedType();
-        IpConnection connect = access.ipConnection();
-        RoutingProtocols pro = access.routingProtocols();
-
-        if (reqType == null || connect == null) {
-            throw new NetL3VpnException(IP_INT_INFO_NULL);
-        }
-        buildDeviceDetails(instance, info, role, bearer, connect,
-                           reqType, pro);
-    }
-
-    /**
-     * Builds the device details such as, VPN instance value if it is for
-     * the first time, interface values and BGP info if available in service.
-     *
-     * @param instance VPN instance
-     * @param accInfo  access info
-     * @param role     VPN site role
-     * @param bearer   bearer object
-     * @param connect  ip connect object
-     * @param reqType  requested type
-     * @param pro      routing protocol
-     */
-    private void buildDeviceDetails(VpnInstance instance, AccessInfo accInfo,
-                                    VpnSiteRole role, Bearer bearer,
-                                    IpConnection connect, RequestedType reqType,
-                                    RoutingProtocols pro) {
-        Map<AccessInfo, InterfaceInfo> interMap = l3VpnStore.getInterfaceInfo();
-        InterfaceInfo intInfo = interMap.get(accInfo);
-        if (intInfo != null) {
-            return;
-        }
-
-        DeviceInfo info = buildDevVpnIns(bearer, instance, role, connect);
-        String portName = getInterfaceName(info, reqType);
-        buildDevVpnInt(info, instance, connect, portName, accInfo);
-
-        if (pro != null && pro.routingProtocol() != null) {
-            buildBgpInfo(pro.routingProtocol(), info,
-                         role.name(), connect, accInfo);
-        }
-        InterfaceInfo interInfo = new InterfaceInfo(info, portName,
-                                                    instance.vpnName());
-        l3VpnStore.addInterfaceInfo(accInfo, interInfo);
-        l3VpnStore.addVpnIns(instance.vpnName(), instance);
-    }
-
-    /**
-     * Builds device VPN instance with the service objects. It returns
-     *
-     * @param bearer  bearer object
-     * @param ins     VPN instance
-     * @param role    VPN site role
-     * @param connect ip connection
-     * @return return
-     */
-    private DeviceInfo buildDevVpnIns(Bearer bearer, VpnInstance ins,
-                                      VpnSiteRole role, IpConnection connect) {
-        DefaultAugmentedL3VpnBearer augBearer = bearer.augmentation(
-                DefaultAugmentedL3VpnBearer.class);
-        DeviceId id = getDeviceId(augBearer);
-        Map<DeviceId, DeviceInfo> devices = ins.devInfo();
-        DeviceInfo info = null;
-        if (devices != null) {
-            info = devices.get(id);
-        }
-        if (info == null) {
-            info = createVpnInstance(id, role, ins, connect);
-        }
-        return info;
-    }
-
-    /**
-     * Returns the device id from the bearer augment attachment of service.
-     * If the attachment in augment is not available it throws error.
-     *
-     * @param attach augmented bearer
-     * @return device id
-     */
-    private DeviceId getDeviceId(DefaultAugmentedL3VpnBearer attach) {
-        if (attach == null || attach.bearerAttachment() == null ||
-                attach.bearerAttachment().peMgmtIp() == null ||
-                attach.bearerAttachment().peMgmtIp().string() == null) {
-            throw new NetL3VpnException(DEVICE_INFO_NULL);
-        }
-        String ip = attach.bearerAttachment().peMgmtIp().string();
-        return getId(ip, true, deviceService.getAvailableDevices());
-    }
-
-    /**
-     * Creates the VPN instance by constructing standard device model of
-     * instances. It adds the RD and RT values to the VPN instance.
-     *
-     * @param id   device id
-     * @param role VPN site role
-     * @param inst VPN instance
-     * @param ip   ip connection
-     * @return device info
-     */
-    private DeviceInfo createVpnInstance(DeviceId id, VpnSiteRole role,
-                                         VpnInstance inst, IpConnection ip) {
-        Map<AccessInfo, InterfaceInfo> intMap = l3VpnStore.getInterfaceInfo();
-        generateRdRt(inst, role);
-        DeviceInfo info = new DeviceInfo(id, role.role());
-
-        NetworkInstances instances = createInstance(inst, role, ip);
-        ModelObjectData devMod = getVpnCreateModObj(intMap, instances,
-                                                    id.toString());
-        inst.addDevInfo(id, info);
-        l3VpnStore.addVpnIns(inst.vpnName(), inst);
-
-        ModelObjectData driMod = info.processCreateInstance(driverService,
-                                                            devMod);
-        ResourceData resData = modelConverter.createDataNode(driMod);
-        addToStore(resData);
-        // TODO: Enable tunnel creation on-demand. Uncomment below after
-        // complete validation
-        //checkAndUpdateTunnel(inst, id);
-        return info;
-    }
-
-    /**
-     * Checks if the tunnel can be established and creates the tunnel from
-     * source to destination.
-     *
-     * @param inst VPN instance
-     * @param id   device id
-     */
-    private void checkAndUpdateTunnel(VpnInstance inst, DeviceId id) {
-        Map<DeviceId, DeviceInfo> devInfo = inst.devInfo();
-        int devSize = devInfo.size();
-        String vpnName = inst.vpnName();
-        if (devSize != 1) {
-            DeviceInfo info = devInfo.get(id);
-            tnlHandler.createSrcInfo(vpnName, info);
-            for (Map.Entry<DeviceId, DeviceInfo> device : devInfo.entrySet()) {
-                DeviceInfo val = device.getValue();
-                if (val != info) {
-                    tnlHandler.createSrcDesTunnel(val);
-                }
-            }
-        }
-    }
-
-    /**
-     * Adds the resource data that is received from the driver, after
-     * converting from the model object data.
-     *
-     * @param resData resource data
-     */
-    private void addToStore(ResourceData resData) {
-        if (resData != null && resData.dataNodes() != null) {
-            List<DataNode> dataNodes = resData.dataNodes();
-            for (DataNode node : dataNodes) {
-                configService.createNode(resData.resourceId(), node);
-            }
-        }
-    }
-
-    /**
-     * Generates RD and RT value for the VPN instance for the first time VPN
-     * instance creation.
-     *
-     * @param ins  VPN instance
-     * @param role VPN site role
-     */
-    private void generateRdRt(VpnInstance ins, VpnSiteRole role) {
-        ins.type(role.role());
-        VpnConfig config = ins.vpnConfig();
-        String rd = null;
-        if (config == null) {
-            rd = getIdFromGen();
-        }
-        switch (ins.type()) {
-            case ANY_TO_ANY:
-                if (config == null) {
-                    config = new FullMeshVpnConfig(rd);
-                    config.rd(rd);
-                }
-                break;
-
-            case HUB:
-            case SPOKE:
-                if (config == null) {
-                    config = new HubSpokeVpnConfig();
-                    config.rd(rd);
-                }
-                createImpRtVal((HubSpokeVpnConfig) config, ins.type());
-                createExpRtVal((HubSpokeVpnConfig) config, ins.type());
-                break;
-
-            default:
-                throw new NetL3VpnException(VPN_TYPE_UNSUPPORTED);
-        }
-        ins.vpnConfig(config);
-    }
-
-    /**
-     * Creates import RT value for HUB and SPOKE, according to the type, if
-     * the values are not present.
-     *
-     * @param config VPN config
-     * @param type   VPN type
-     */
-    private void createImpRtVal(HubSpokeVpnConfig config, VpnType type) {
-        if (type == HUB) {
-            if (config.hubImpRt() != null) {
-                return;
-            }
-            setHubImpRt(config);
-        } else {
-            if (config.spokeImpRt() != null) {
-                return;
-            }
-            config.spokeImpRt(config.rd());
-        }
-    }
-
-    /**
-     * Sets the HUB import RT, from the spoke export RT. If it is not
-     * available a new ID is generated.
-     *
-     * @param config VPN config
-     */
-    public void setHubImpRt(HubSpokeVpnConfig config) {
-        String hubImp;
-        if (config.spokeExpRt() != null) {
-            hubImp = config.spokeExpRt();
-        } else {
-            hubImp = getIdFromGen();
-        }
-        config.hubImpRt(hubImp);
-    }
-
-    /**
-     * Creates export RT value for HUB and SPOKE, according to the type, if
-     * the values are not present.
-     *
-     * @param config VPN config
-     * @param type   VPN type
-     */
-    private void createExpRtVal(HubSpokeVpnConfig config, VpnType type) {
-        if (type == HUB) {
-            if (config.hubExpRt() != null) {
-                return;
-            }
-            config.hubExpRt(config.rd());
-        } else {
-            if (config.spokeExpRt() != null) {
-                return;
-            }
-            setSpokeExpRt(config);
-        }
-    }
-
-    /**
-     * Sets the SPOKE export RT, from the hub import RT. If it is not
-     * available a new ID is generated.
-     *
-     * @param config VPN config
-     */
-    public void setSpokeExpRt(HubSpokeVpnConfig config) {
-        String spokeExp;
-        if (config.hubImpRt() != null) {
-            spokeExp = config.hubImpRt();
-        } else {
-            spokeExp = getIdFromGen();
-        }
-        config.spokeExpRt(spokeExp);
-    }
-
-    /**
-     * Returns the interface name from the requested type service object.
-     *
-     * @param info    device info
-     * @param reqType requested type
-     * @return interface name
-     */
-    private String getInterfaceName(DeviceInfo info, RequestedType reqType) {
-        DefaultAugmentedL3VpnRequestedType req = reqType.augmentation(
-                DefaultAugmentedL3VpnRequestedType.class);
-        if (req == null || req.requestedTypeProfile() == null ||
-                req.requestedTypeProfile().requestedTypeChoice() == null) {
-            throw new NetL3VpnException(INT_INFO_NULL);
-        }
-        RequestedTypeChoice reqChoice = req.requestedTypeProfile()
-                .requestedTypeChoice();
-        return getNameFromChoice(reqChoice, info.deviceId());
-    }
-
-    /**
-     * Returns the interface name from the type choice provided.
-     *
-     * @param choice service choice
-     * @param id     device id
-     * @return interface name
-     */
-    private String getNameFromChoice(RequestedTypeChoice choice, DeviceId id) {
-        if (choice == null) {
-            throw new NetL3VpnException(INT_INFO_NULL);
-        }
-        String intName;
-        if (choice instanceof DefaultDot1Qcase) {
-            if (((DefaultDot1Qcase) choice).dot1q() == null ||
-                    ((DefaultDot1Qcase) choice).dot1q()
-                            .physicalIf() == null) {
-                throw new NetL3VpnException(INT_INFO_NULL);
-            }
-            intName = ((DefaultDot1Qcase) choice).dot1q().physicalIf();
-        } else {
-            if (((DefaultPhysicalCase) choice).physical() == null ||
-                    ((DefaultPhysicalCase) choice).physical()
-                            .physicalIf() == null) {
-                throw new NetL3VpnException(INT_INFO_NULL);
-            }
-            intName = ((DefaultPhysicalCase) choice).physical().physicalIf();
-        }
-        return getPortName(intName, id);
-    }
-
-    /**
-     * Returns the port name when it the port is available in the device.
-     *
-     * @param intName interface name
-     * @param id      device id
-     * @return port name
-     */
-    private String getPortName(String intName, DeviceId id) {
-        List<Port> ports = deviceService.getPorts(id);
-        for (Port port : ports) {
-            String pName = port.annotations().value(PORT_NAME);
-            if (pName.equals(intName)) {
-                return intName;
-            }
-        }
-        throw new NetL3VpnException(getIntNotAvailable(intName));
-    }
-
-    /**
-     * Builds the interface for the device binding with the VPN instance.
-     *
-     * @param info    device info
-     * @param ins     VPN instance
-     * @param connect IP connection
-     * @param pName   port name
-     * @param access  access info
-     */
-    private void buildDevVpnInt(DeviceInfo info, VpnInstance ins,
-                                IpConnection connect, String pName,
-                                AccessInfo access) {
-        Map<AccessInfo, InterfaceInfo> intMap = l3VpnStore.getInterfaceInfo();
-        info.addAccessInfo(access);
-        info.addIfName(pName);
-        Interfaces interfaces = createInterface(pName, ins.vpnName(),
-                                                connect);
-        ModelObjectData devMod = getIntCreateModObj(
-                info.ifNames(), interfaces, info.deviceId().toString());
-        ModelObjectData driMod = info.processCreateInterface(driverService,
-                                                             devMod);
-        ResourceData resData = modelConverter.createDataNode(driMod);
-        addToStore(resData);
-    }
-
-    /**
-     * Builds the BGP information from the routes that are given from the
-     * service.
-     *
-     * @param routes  routing protocol
-     * @param info    device info
-     * @param name    VPN name
-     * @param connect IP connection
-     * @param access  access info
-     */
-    private void buildBgpInfo(List<RoutingProtocol> routes, DeviceInfo info,
-                              String name, IpConnection connect,
-                              AccessInfo access) {
-        Map<BgpInfo, DeviceId> bgpMap = l3VpnStore.getBgpInfo();
-        BgpInfo intBgp = createBgpInfo(routes, info, name, connect, access);
-        if (intBgp != null) {
-            intBgp.vpnName(name);
-            BgpDriverInfo config = getBgpCreateConfigObj(
-                    bgpMap, info.deviceId().toString(), info.bgpInfo(), intBgp);
-            ModelObjectData driData = info.processCreateBgpInfo(
-                    driverService, intBgp, config);
-            l3VpnStore.addBgpInfo(info.bgpInfo(), info.deviceId());
-            ResourceData resData = modelConverter.createDataNode(driData);
-            addToStore(resData);
-        }
-    }
-
-    /**
-     * Creates all configuration in the standard device model.
-     *
-     * @param l3VpnSvc l3 VPN service
-     */
-    void deleteGlobalConfig(L3VpnSvc l3VpnSvc) {
-        deleteGlobalVpn(l3VpnSvc);
-        //TODO: Site and access deletion needs to be added.
-    }
-
-    /**
-     * Deletes the global VPN from the device model and delete from the device.
-     *
-     * @param l3VpnSvc L3 VPN service
-     */
-    private void deleteGlobalVpn(L3VpnSvc l3VpnSvc) {
-        Map<String, VpnInstance> insMap = l3VpnStore.getVpnInstances();
-        //TODO: check for VPN delete deleting interface from store.
-        if (l3VpnSvc == null || l3VpnSvc.vpnServices() == null ||
-                l3VpnSvc.vpnServices().vpnSvc() == null) {
-            for (Map.Entry<String, VpnInstance> vpnMap : insMap.entrySet()) {
-                deleteVpnInstance(vpnMap.getValue(), false);
-            }
-            return;
-        }
-        List<VpnSvc> vpnList = l3VpnSvc.vpnServices().vpnSvc();
-        for (Map.Entry<String, VpnInstance> vpnMap : insMap.entrySet()) {
-            boolean isPresent = isVpnPresent(vpnMap.getKey(), vpnList);
-            if (!isPresent) {
-                deleteVpnInstance(vpnMap.getValue(), false);
-            }
-        }
-    }
-
-    /**
-     * Returns true if the VPN in the distributed map is also present in the
-     * service; false otherwise.
-     *
-     * @param vpnName VPN name from store
-     * @param vpnList VPN list from service
-     * @return true if VPN available; false otherwise
-     */
-    private boolean isVpnPresent(String vpnName, List<VpnSvc> vpnList) {
-        for (VpnSvc svc : vpnList) {
-            if (svc.vpnId().string().equals(vpnName)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Deletes the VPN instance by constructing standard device model of
-     * instances.
-     *
-     * @param instance     VPN instance
-     * @param isIntDeleted if interface already removed.
-     */
-    private void deleteVpnInstance(VpnInstance instance, boolean isIntDeleted) {
-        Map<DeviceId, DeviceInfo> devices = instance.devInfo();
-        if (devices != null) {
-            for (Map.Entry<DeviceId, DeviceInfo> device : devices.entrySet()) {
-                NetworkInstances ins = deleteInstance(instance.vpnName());
-                DeviceInfo dev = device.getValue();
-                if (!isIntDeleted) {
-                    remVpnBgp(dev);
-                    remInterfaceFromMap(dev);
-                }
-                Map<AccessInfo, InterfaceInfo> intMap =
-                        l3VpnStore.getInterfaceInfo();
-                String id = dev.deviceId().toString();
-                ModelObjectData devMod = getVpnDelModObj(intMap, ins, id);
-                ModelObjectData driMod = dev.processDeleteInstance(
-                        driverService, devMod);
-                ResourceData resData = modelConverter.createDataNode(driMod);
-                deleteFromStore(resData);
-                // TODO: Enable tunnel creation on-demand. Uncomment below after
-                // complete validation
-                // tnlHandler.deleteTunnel(dev, instance.vpnName());
-            }
-            l3VpnStore.removeVpnInstance(instance.vpnName());
-        }
-    }
-
-    /**
-     * Removes the BGP information for that complete VPN instance.
-     *
-     * @param dev device info
-     */
-    private void remVpnBgp(DeviceInfo dev) {
-        BgpInfo devBgp = dev.bgpInfo();
-        if (devBgp != null) {
-            l3VpnStore.removeBgpInfo(devBgp);
-            BgpInfo delInfo = new BgpInfo();
-            delInfo.vpnName(devBgp.vpnName());
-            String id = dev.deviceId().toString();
-            Map<BgpInfo, DeviceId> bgpMap = l3VpnStore.getBgpInfo();
-            BgpDriverInfo driConfig = getVpnBgpDelModObj(bgpMap, id);
-            ModelObjectData driData = dev.processDeleteBgpInfo(
-                    driverService, delInfo, driConfig);
-            ResourceData resData = modelConverter.createDataNode(driData);
-            deleteFromStore(resData);
-            l3VpnStore.removeBgpInfo(devBgp);
-        }
-    }
-
-    /**
-     * Deletes the resource data that is received from the driver, after
-     * converting from the model object data.
-     *
-     * @param resData resource data
-     */
-    private void deleteFromStore(ResourceData resData) {
-        if (resData != null) {
-            configService.deleteNode(resData.resourceId());
-        }
-    }
-
-    /**
-     * Removes the interface from the app distributed map, if the driver
-     * interfaces are already removed from the store.
-     *
-     * @param deviceInfo device info
-     */
-    private void remInterfaceFromMap(DeviceInfo deviceInfo) {
-        List<AccessInfo> accesses = deviceInfo.accesses();
-        if (accesses != null) {
-            for (AccessInfo access : accesses) {
-                l3VpnStore.removeInterfaceInfo(access);
-            }
-        }
-        deviceInfo.ifNames(null);
-        deviceInfo.accesses(null);
-    }
-
-    /**
-     * Signals that the leadership has changed.
-     *
-     * @param isLeader true if this instance is now the leader, otherwise false
-     */
-    private void leaderChanged(boolean isLeader) {
-        log.debug("Leader changed: {}", isLeader);
-        isElectedLeader = isLeader;
-    }
-
-    /**
-     * Representation of internal listener, listening for dynamic config event.
-     */
-    private class InternalConfigListener implements DynamicConfigListener {
-
-        @Override
-        public boolean isRelevant(DynamicConfigEvent event) {
-            return isSupported(event);
-        }
-
-        @Override
-        public void event(DynamicConfigEvent event) {
-            accumulator.add(event);
-        }
-    }
-
-    /**
-     * Accumulates events to allow processing after a desired number of
-     * events were accumulated.
-     */
-    private class InternalEventAccumulator extends
-            AbstractAccumulator<DynamicConfigEvent> {
-
-        /**
-         * Constructs the event accumulator with timer and event limit.
-         */
-        protected InternalEventAccumulator() {
-            super(new Timer(TIMER), MAX_EVENTS, MAX_BATCH_MS, MAX_IDLE_MS);
-        }
-
-        @Override
-        public void processItems(List<DynamicConfigEvent> events) {
-            for (DynamicConfigEvent event : events) {
-                checkNotNull(event, EVENT_NULL);
-                Filter filter = Filter.builder().build();
-                DataNode node;
-                try {
-                    node = configService.readNode(event.subject(), filter);
-                } catch (FailedException e) {
-                    node = null;
-                }
-                switch (event.type()) {
-                    case NODE_ADDED:
-                        processCreateFromStore(event.subject(), node);
-                        break;
-
-                    case NODE_DELETED:
-                        processDeleteFromStore(node);
-                        break;
-
-                    default:
-                        log.warn(UNKNOWN_EVENT, event.type());
-                        break;
-                }
-            }
-        }
-    }
-
-    /**
-     * A listener for leadership events.
-     */
-    private class InternalLeadershipListener implements LeadershipEventListener {
-
-        @Override
-        public boolean isRelevant(LeadershipEvent event) {
-            return event.subject().topic().equals(appId.name());
-        }
-
-        @Override
-        public void event(LeadershipEvent event) {
-            switch (event.type()) {
-                case LEADER_CHANGED:
-                case LEADER_AND_CANDIDATES_CHANGED:
-                    if (localNodeId.equals(event.subject().leaderNodeId())) {
-                        log.info("Net l3vpn manager gained leadership");
-                        leaderChanged(true);
-                    } else {
-                        log.info("Net l3vpn manager leader changed. New " +
-                                         "leader is {}", event.subject()
-                                         .leaderNodeId());
-                        leaderChanged(false);
-                    }
-                    break;
-                default:
-                    break;
-            }
-        }
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnTunnelHandler.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnTunnelHandler.java
deleted file mode 100644
index edef00a..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnTunnelHandler.java
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn.impl;
-
-import org.onosproject.config.DynamicConfigService;
-import org.onosproject.core.IdGenerator;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.l3vpn.netl3vpn.DeviceInfo;
-import org.onosproject.l3vpn.netl3vpn.ModelIdLevel;
-import org.onosproject.l3vpn.netl3vpn.NetL3VpnException;
-import org.onosproject.l3vpn.netl3vpn.NetL3VpnStore;
-import org.onosproject.l3vpn.netl3vpn.TunnelInfo;
-import org.onosproject.l3vpn.netl3vpn.VpnType;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.driver.DriverService;
-import org.onosproject.pce.pceservice.api.PceService;
-import org.onosproject.yang.model.DataNode;
-import org.onosproject.yang.model.ModelConverter;
-import org.onosproject.yang.model.ModelObjectData;
-import org.onosproject.yang.model.ResourceData;
-
-import java.util.List;
-import java.util.Map;
-
-import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.DEVICE;
-import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.DEVICES;
-import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.TNL_M;
-import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.TNL_POL;
-import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.TP_HOP;
-import static org.onosproject.l3vpn.netl3vpn.VpnType.SPOKE;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.NEW_NAME;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getId;
-import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getIpFromDevId;
-import static org.onosproject.pce.pceservice.LspType.WITH_SIGNALLING;
-
-/**
- * Represents net l3VPN tunnel handler, which handles tunnel operations like
- * creation and deletion and updating it to the driver.
- */
-public class NetL3VpnTunnelHandler {
-
-    private PceService pceSvc;
-    private DriverService driSvc;
-    private DynamicConfigService configSvc;
-    private NetL3VpnStore store;
-    private DeviceService devSvc;
-    private IdGenerator tnlIdGen;
-    private ModelConverter modelCon;
-    private String sIp;
-    private String vpnName;
-    private DeviceInfo sInfo;
-    private VpnType type;
-
-    /**
-     * Constructs net l3VPN tunnel handler with required services.
-     *
-     * @param p   pce service
-     * @param d   driver service
-     * @param c   dynamic config service
-     * @param s   net l3VPN store
-     * @param dev device service
-     * @param id  ID generator
-     * @param m   model converter
-     */
-    public NetL3VpnTunnelHandler(PceService p, DriverService d,
-                                 DynamicConfigService c,
-                                 NetL3VpnStore s, DeviceService dev,
-                                 IdGenerator id, ModelConverter m) {
-        pceSvc = p;
-        driSvc = d;
-        configSvc = c;
-        store = s;
-        devSvc = dev;
-        tnlIdGen = id;
-        modelCon = m;
-    }
-
-    /**
-     * Creates the source information for tunnel creation. It creates from
-     * source device info and VPN name.
-     *
-     * @param vName   VPN name
-     * @param devInfo device info
-     */
-    public void createSrcInfo(String vName, DeviceInfo devInfo) {
-        vpnName = vName;
-        sInfo = devInfo;
-        type = devInfo.type();
-        sIp = getIpFromDevId(sInfo.deviceId());
-    }
-
-    /**
-     * Creates tunnel between source and destination devices.
-     *
-     * @param dInfo destination device
-     */
-    public void createSrcDesTunnel(DeviceInfo dInfo) {
-        VpnType dType = dInfo.type();
-        if (type == SPOKE && dType == SPOKE) {
-            return;
-        }
-        String dIp = getIpFromDevId(dInfo.deviceId());
-        createTunnelInfo(sIp, dIp, sInfo);
-        createTunnelInfo(dIp, sIp, dInfo);
-    }
-
-    /**
-     * Creates tunnel info and tunnel based on source and destination ip
-     * address and configures it in the source device.
-     *
-     * @param sIp   source ip address
-     * @param dIp   destination ip address
-     * @param sInfo source device info
-     */
-    private void createTunnelInfo(String sIp, String dIp, DeviceInfo sInfo) {
-        DeviceId id = sInfo.deviceId();
-        Map<DeviceId, Integer> tnlMap = store.getTunnelInfo();
-        int count = 0;
-        if (tnlMap.containsKey(id)) {
-            count = tnlMap.get(id);
-        }
-        String tnlName = createTunnel(sIp, dIp);
-        sInfo.addTnlName(tnlName);
-        store.addTunnelInfo(id, count + 1);
-        TunnelInfo tnl = new TunnelInfo(dIp, tnlName, vpnName, id.toString());
-        configureDevTnl(sInfo, tnl, tnlMap);
-    }
-
-    /**
-     * Creates tunnel between source ip address and destination ip address
-     * with pce service.
-     *
-     * @param srcIp source ip address
-     * @param desIp destination ip address
-     * @return tunnel name
-     */
-    private String createTunnel(String srcIp, String desIp) {
-        Iterable<Device> devices = devSvc.getAvailableDevices();
-        DeviceId srcDevId = getId(srcIp, false, devices);
-        DeviceId desDevId = getId(desIp, false, devices);
-        String name = getNewName();
-        boolean isCreated = pceSvc.setupPath(srcDevId, desDevId, name,
-                                             null, WITH_SIGNALLING);
-        if (!isCreated) {
-            throw new NetL3VpnException("Tunnel is not created between " +
-                                                srcDevId.toString() + " and " +
-                                                desDevId.toString());
-        }
-        return name;
-    }
-
-    /**
-     * Returns a unique name for tunnel to be created.
-     *
-     * @return unique tunnel name
-     */
-    private String getNewName() {
-        return NEW_NAME + String.valueOf(tnlIdGen.getNewId());
-    }
-
-    /**
-     * Configures the created tunnel to the device by processing it at the
-     * proper level and sending it to the driver.
-     *
-     * @param info    source device info
-     * @param tnlInfo tunnel info
-     * @param tnlMap  store tunnel map
-     */
-    private void configureDevTnl(DeviceInfo info, TunnelInfo tnlInfo,
-                                 Map<DeviceId, Integer> tnlMap) {
-        DeviceId id = info.deviceId();
-        int count = 0;
-        if (tnlMap.containsKey(id)) {
-            count = tnlMap.get(id);
-        }
-        if (tnlMap.size() == 0) {
-            tnlInfo.level(DEVICES);
-        } else if (count == 0) {
-            tnlInfo.level(DEVICE);
-        }
-
-        if (tnlInfo.level() != null) {
-            ModelObjectData mod = info.processCreateTnlDev(driSvc, tnlInfo);
-            addDataNodeToStore(mod);
-            tnlInfo.level(TNL_M);
-            tnlPolToStore(info, tnlInfo);
-        }
-        if (!info.isTnlPolCreated()) {
-            tnlInfo.level(TNL_POL);
-            tnlPolToStore(info, tnlInfo);
-        }
-        if (tnlInfo.level() == null) {
-            tnlInfo.level(TP_HOP);
-        }
-
-        ModelObjectData tnlMod = info.processCreateTnl(driSvc, tnlInfo);
-        addDataNodeToStore(tnlMod);
-        if (tnlInfo.level() != TP_HOP) {
-            ModelObjectData mod = info.processBindTnl(driSvc, tnlInfo);
-            addDataNodeToStore(mod);
-        }
-    }
-
-    /**
-     * Adds data node to the store after converting it to the resource data.
-     *
-     * @param driMod driver model object data
-     */
-    private void addDataNodeToStore(ModelObjectData driMod) {
-        ResourceData resData = modelCon.createDataNode(driMod);
-        addToStore(resData);
-    }
-
-    /**
-     * Adds resource data to the store.
-     *
-     * @param resData resource data
-     */
-    private void addToStore(ResourceData resData) {
-        if (resData != null && resData.dataNodes() != null) {
-            List<DataNode> dataNodes = resData.dataNodes();
-            for (DataNode node : dataNodes) {
-                configSvc.createNode(resData.resourceId(), node);
-            }
-        }
-    }
-
-    /**
-     * Creates tunnel policy from driver and adds it to the store.
-     *
-     * @param info    device info
-     * @param tnlInfo tunnel info
-     */
-    private void tnlPolToStore(DeviceInfo info, TunnelInfo tnlInfo) {
-        ModelObjectData mod = info.processCreateTnlPol(driSvc, tnlInfo);
-        addDataNodeToStore(mod);
-        info.setTnlPolCreated(true);
-    }
-
-    /**
-     * Deletes the tunnel with the source tunnel info and VPN name.
-     * //FIXME: PCE does'nt have api, which can give tunnel by providing the
-     * tunnel name.
-     *
-     * @param info  device info
-     * @param vName VPN name
-     */
-    public void deleteTunnel(DeviceInfo info, String vName) {
-        List<String> tnlNames = info.tnlNames();
-        for (String tnlName : tnlNames) {
-            Iterable<Tunnel> path = pceSvc.queryAllPath();
-            for (Tunnel tnl : path) {
-                if (tnl.tunnelName().toString().equals(tnlName)) {
-                    pceSvc.releasePath(tnl.tunnelId());
-                    break;
-                }
-            }
-        }
-        deleteFromDevice(info, vName);
-    }
-
-    /**
-     * Deletes tunnel configuration from the device by updating various
-     * levels in the store.
-     *
-     * @param info  device info
-     * @param vName VPN name
-     */
-    private void deleteFromDevice(DeviceInfo info, String vName) {
-        Map<DeviceId, Integer> map = store.getTunnelInfo();
-        DeviceId id = info.deviceId();
-        Integer count = map.get(id);
-        int tnlCount = info.tnlNames().size();
-        int upCount = count - tnlCount;
-        ModelIdLevel level;
-        TunnelInfo tnlInfo = new TunnelInfo(null, null, vName, id.toString());
-        if (upCount == 0) {
-            if (map.size() == 1) {
-                level = DEVICES;
-            } else {
-                level = DEVICE;
-            }
-        } else {
-            if (map.size() > 1) {
-                level = TNL_POL;
-            } else {
-                return;
-            }
-        }
-        tnlInfo.level(level);
-        ModelObjectData mod = info.processDeleteTnl(driSvc, tnlInfo);
-        deleteFromStore(mod);
-        info.tnlNames(null);
-        info.setTnlPolCreated(false);
-        if (upCount == 0) {
-            store.removeTunnelInfo(id);
-        } else {
-            store.addTunnelInfo(id, upCount);
-        }
-    }
-
-    /**
-     * Deletes the data node from the store.
-     *
-     * @param mod driver model object data
-     */
-    private void deleteFromStore(ModelObjectData mod) {
-        ResourceData resData = modelCon.createDataNode(mod);
-        if (resData != null) {
-            configSvc.deleteNode(resData.resourceId());
-        }
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnUtil.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnUtil.java
deleted file mode 100644
index 1fd03bd..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnUtil.java
+++ /dev/null
@@ -1,567 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.l3vpn.netl3vpn.impl;
-
-import org.onosproject.l3vpn.netl3vpn.AccessInfo;
-import org.onosproject.l3vpn.netl3vpn.BgpDriverInfo;
-import org.onosproject.l3vpn.netl3vpn.BgpInfo;
-import org.onosproject.l3vpn.netl3vpn.InterfaceInfo;
-import org.onosproject.l3vpn.netl3vpn.NetL3VpnException;
-import org.onosproject.l3vpn.netl3vpn.VpnType;
-import org.onosproject.net.DeviceId;
-import org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.ietfinterfaces.devices.device.Interfaces;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.DefaultL3VpnSvc;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.SiteRole;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.DefaultSites;
-import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.DefaultDevices;
-import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.Devices;
-import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.DefaultDevice;
-import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.Device;
-import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.DeviceKeys;
-import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.NetworkInstances;
-import org.onosproject.yang.model.DataNode;
-import org.onosproject.yang.model.DefaultModelObjectData;
-import org.onosproject.yang.model.DefaultResourceData;
-import org.onosproject.yang.model.InnerModelObject;
-import org.onosproject.yang.model.ModelObjectData;
-import org.onosproject.yang.model.ModelObjectId;
-import org.onosproject.yang.model.ResourceData;
-import org.onosproject.yang.model.ResourceId;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.DEVICE;
-import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.DEVICES;
-import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.ROOT;
-import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.VPN;
-import static org.onosproject.l3vpn.netl3vpn.VpnType.ANY_TO_ANY;
-import static org.onosproject.l3vpn.netl3vpn.VpnType.HUB;
-import static org.onosproject.l3vpn.netl3vpn.VpnType.SPOKE;
-
-/**
- * Representation of utility for YANG tree builder.
- */
-public final class NetL3VpnUtil {
-
-    /**
-     * Error message for site VPN name being not present in global VPN.
-     */
-    static final String SITE_VPN_MISMATCH = "Site VPN instance name did not " +
-            "match any of the global VPN names";
-
-    /**
-     * Error message for VPN attachment object being null.
-     */
-    static final String VPN_ATTACHMENT_NULL = "The VPN attachment information" +
-            " cannot be null";
-
-    /**
-     * Error message for VPN policy being not supported.
-     */
-    static final String VPN_POLICY_NOT_SUPPORTED = "VPN policy implementation" +
-            " is not supported.";
-
-    /**
-     * Static constant value for hundred.
-     */
-    static final String CONS_HUNDRED = "100:";
-
-    /**
-     * Error message for site role being not present in site network access.
-     */
-    static final String SITE_ROLE_NULL = "There must be a site role available" +
-            " for the VPN in site network access.";
-
-    /**
-     * Error message for bearer object information being null.
-     */
-    static final String BEARER_NULL = "The bearer information of the access " +
-            "is not available";
-
-    /**
-     * Error message for requested type or ip connect being null.
-     */
-    static final String IP_INT_INFO_NULL = "The required information of " +
-            "request type or ip connection is not available";
-
-    /**
-     * Error message for device info being not available from augment.
-     */
-    static final String DEVICE_INFO_NULL = "Bearer of site does not have any " +
-            "device information in the augment info.";
-
-    /**
-     * Static constant value for ip address.
-     */
-    static final String IP = "ipaddress";
-
-    /**
-     * Static constant value for lsr id.
-     */
-    static final String LSR_ID = "lsrId";
-
-    /**
-     * Error message for VPN type being not supported.
-     */
-    static final String VPN_TYPE_UNSUPPORTED = "The VPN type is not supported";
-
-    /**
-     * Error message when the generated ID has crossed the limit.
-     */
-    static final String ID_LIMIT_EXCEEDED = "The ID generation has got " +
-            "exceeded";
-
-    /**
-     * Static constant value ID management limit.
-     */
-    static final Long ID_LIMIT = 4294967295L;
-
-    /**
-     * Error message for interface information being not available.
-     */
-    static final String INT_INFO_NULL = "Requested type does not have any " +
-            "interface information in the augment info.";
-
-    /**
-     * Static constant value of port name.
-     */
-    static final String PORT_NAME = "portName";
-
-    /**
-     * Static constants to use with accumulator for maximum number of events.
-     */
-    static final int MAX_EVENTS = 1000;
-
-    /**
-     * Static constants to use with accumulator for maximum number of millis.
-     */
-    static final int MAX_BATCH_MS = 5000;
-
-    /**
-     * Static constants to use with accumulator for maximum number of idle
-     * millis.
-     */
-    static final int MAX_IDLE_MS = 1000;
-
-    /**
-     * Static constants for timer name.
-     */
-    static final String TIMER = "dynamic-config-l3vpn-timer";
-
-    /**
-     * Error message for unknown event being occurred.
-     */
-    static final String UNKNOWN_EVENT = "NetL3VPN listener: unknown event: {}";
-
-    /**
-     * Error message for event being null.
-     */
-    static final String EVENT_NULL = "Event cannot be null";
-
-    /**
-     * Unique tunnel name for net-l3VPN.
-     */
-    static final String NEW_NAME = "onos-netl3vpn";
-
-    private static final String SITE_ROLE_INVALID = "The given site role is " +
-            "invalid";
-    private static final String ANY_TO_ANY_ROLE = "AnyToAnyRole";
-    private static final String HUB_ROLE = "HubRole";
-    private static final String SPOKE_ROLE = "SpokeRole";
-    private static final String COLON = ":";
-
-    // No instantiation.
-    private NetL3VpnUtil() {
-    }
-
-    /**
-     * Returns the model object id for service L3VPN container.
-     *
-     * @return model object id
-     */
-    static ModelObjectId getModIdForL3VpnSvc() {
-        return ModelObjectId.builder().addChild(DefaultL3VpnSvc.class).build();
-    }
-
-    /**
-     * Returns the model object id for service sites container.
-     *
-     * @return model object id
-     */
-    static ModelObjectId getModIdForSites() {
-        return ModelObjectId.builder().addChild(DefaultL3VpnSvc.class)
-                .addChild(DefaultSites.class).build();
-    }
-
-    /**
-     * Returns the resource data from the data node and the resource id.
-     *
-     * @param dataNode data node
-     * @param resId    resource id
-     * @return resource data
-     */
-    static ResourceData getResourceData(DataNode dataNode, ResourceId resId) {
-        return DefaultResourceData.builder().addDataNode(dataNode)
-                .resourceId(resId).build();
-    }
-
-    /**
-     * Returns the VPN role from the service site role.
-     *
-     * @param siteRole service site role
-     * @return VPN type
-     */
-    static VpnType getRole(Class<? extends SiteRole> siteRole) {
-        switch (siteRole.getSimpleName()) {
-            case ANY_TO_ANY_ROLE:
-                return ANY_TO_ANY;
-
-            case HUB_ROLE:
-                return HUB;
-
-            case SPOKE_ROLE:
-                return SPOKE;
-
-            default:
-                throw new NetL3VpnException(SITE_ROLE_INVALID);
-        }
-    }
-
-    /**
-     * Returns error message for management ip being unavailable in device.
-     *
-     * @param ip management ip
-     * @return error message
-     */
-    static String getMgmtIpUnAvailErr(String ip) {
-        return "The device with management ip " + ip + " is not available.";
-    }
-
-    /**
-     * Returns true if device id present in the interface map; false otherwise.
-     *
-     * @param info interface map
-     * @param id   device id
-     * @return true if device id available; false otherwise
-     */
-    private static boolean isDevIdPresent(Map<AccessInfo, InterfaceInfo> info,
-                                          String id) {
-        for (Map.Entry<AccessInfo, InterfaceInfo> inter : info.entrySet()) {
-            InterfaceInfo interfaceInfo = inter.getValue();
-            DeviceId devId = interfaceInfo.devInfo().deviceId();
-            if (devId.toString().equals(id)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Builds the device model VPN instance model object data, with respect to
-     * the device level.
-     *
-     * @param id  device id
-     * @param ins VPN instance
-     * @return model object data, with device level
-     */
-    private static ModelObjectData buildInsModDataDevice(String id,
-                                                         NetworkInstances ins) {
-        DeviceKeys devKeys = new DeviceKeys();
-        devKeys.deviceid(id);
-        ModelObjectId modelId = ModelObjectId.builder()
-                .addChild(DefaultDevices.class)
-                .addChild(DefaultDevice.class, devKeys)
-                .build();
-        return DefaultModelObjectData.builder().identifier(modelId)
-                .addModelObject((InnerModelObject) ins).build();
-    }
-
-    /**
-     * Builds the device model VPN instance model object data, with respect to
-     * the devices level.
-     *
-     * @param id  device id
-     * @param ins VPN instance
-     * @return model object data, with devices level
-     */
-    private static ModelObjectData buildInsModDataDevices(String id,
-                                                          NetworkInstances ins) {
-        ModelObjectId modelId = ModelObjectId.builder()
-                .addChild(DefaultDevices.class).build();
-        Device device = new DefaultDevice();
-        device.deviceid(id);
-        device.networkInstances(ins);
-        return DefaultModelObjectData.builder().identifier(modelId)
-                .addModelObject((InnerModelObject) device).build();
-    }
-
-    /**
-     * Builds the device model VPN instance model object data, with respect to
-     * root level.
-     *
-     * @param id  device id
-     * @param ins VPN instance
-     * @return model object data, with root level
-     */
-    private static ModelObjectData buildInsModDataRoot(String id,
-                                                       NetworkInstances ins) {
-        Devices devices = new DefaultDevices();
-        Device device = new DefaultDevice();
-        List<Device> deviceList = new LinkedList<>();
-        device.deviceid(id);
-        device.networkInstances(ins);
-        deviceList.add(device);
-        devices.device(deviceList);
-        return DefaultModelObjectData.builder()
-                .addModelObject((InnerModelObject) devices).build();
-    }
-
-    /**
-     * Builds the device model interface model object data, with respect to
-     * device level.
-     *
-     * @param id  device id
-     * @param ifs interface object
-     * @return model object data, with device level
-     */
-    private static ModelObjectData buildIntModDataDevice(String id,
-                                                         Interfaces ifs) {
-        org.onosproject.yang.gen.v1.ietfinterfaces
-                .rev20140508.ietfinterfaces.devices.DeviceKeys keys = new org.
-                onosproject.yang.gen.v1.ietfinterfaces.rev20140508
-                .ietfinterfaces.devices.DeviceKeys();
-        keys.deviceid(id);
-        ModelObjectId modelId = ModelObjectId.builder()
-                .addChild(org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508
-                                  .ietfinterfaces.DefaultDevices.class)
-                .addChild(org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508
-                                  .ietfinterfaces.devices.DefaultDevice.class,
-                          keys)
-                .build();
-        return DefaultModelObjectData.builder().identifier(modelId)
-                .addModelObject((InnerModelObject) ifs).build();
-    }
-
-    /**
-     * Returns the VPN instance create model object data.
-     *
-     * @param intMap    interface map
-     * @param instances VPN instances
-     * @param id        device id
-     * @return VPN instance model object data
-     */
-    static ModelObjectData getVpnCreateModObj(Map<AccessInfo, InterfaceInfo> intMap,
-                                              NetworkInstances instances,
-                                              String id) {
-        ModelObjectData modData;
-        boolean devAdded = isDevIdPresent(intMap, id);
-        if (devAdded) {
-            modData = buildInsModDataDevice(id, instances);
-        } else if (intMap.size() != 0) {
-            modData = buildInsModDataDevices(id, instances);
-        } else {
-            modData = buildInsModDataRoot(id, instances);
-        }
-        return modData;
-    }
-
-    /**
-     * Returns error message for interface being unavailable in device.
-     *
-     * @param intName interface name
-     * @return error message
-     */
-    static String getIntNotAvailable(String intName) {
-        return "The interface " + intName + " is not available.";
-    }
-
-    /**
-     * Returns the interface create model object data.
-     *
-     * @param ifNames interfaces
-     * @param ifs     interface instance
-     * @param id      device id
-     * @return interface model object data
-     */
-    static ModelObjectData getIntCreateModObj(List<String> ifNames,
-                                              Interfaces ifs, String id) {
-        ModelObjectData modData;
-        if (ifNames.size() > 1) {
-            modData = buildIntModDataDevice(id, ifs);
-        } else {
-            modData = buildIntModDataRoot(id, ifs);
-        }
-        return modData;
-    }
-
-    /**
-     * Builds the device model interface model object data, with respect to
-     * root level.
-     *
-     * @param id  device id
-     * @param ifs interface object
-     * @return model object data, with root level
-     */
-    private static ModelObjectData buildIntModDataRoot(String id,
-                                                       Interfaces ifs) {
-        org.onosproject.yang.gen.v1.ietfinterfaces
-                .rev20140508.ietfinterfaces.Devices devices = new org
-                .onosproject.yang.gen.v1.ietfinterfaces.rev20140508
-                .ietfinterfaces.DefaultDevices();
-        org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.ietfinterfaces.
-                devices.Device device = new org.onosproject.yang.gen.v1.
-                ietfinterfaces.rev20140508.ietfinterfaces.devices.DefaultDevice();
-        List<org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508
-                .ietfinterfaces.devices.Device> deviceList = new LinkedList<>();
-
-        device.deviceid(id);
-        device.interfaces(ifs);
-        deviceList.add(device);
-        devices.device(deviceList);
-        return DefaultModelObjectData.builder()
-                .addModelObject((InnerModelObject) devices).build();
-    }
-
-    /**
-     * Returns the BGP create driver info.
-     *
-     * @param bgpMap BGP map
-     * @param id     device id
-     * @param devBgp device BGP info
-     * @param intBgp interface BGP info
-     * @return BGP driver config
-     */
-    static BgpDriverInfo getBgpCreateConfigObj(Map<BgpInfo, DeviceId> bgpMap,
-                                               String id, BgpInfo devBgp,
-                                               BgpInfo intBgp) {
-        boolean isDevIdPresent = isDevIdBgpPresent(bgpMap, id);
-        BgpDriverInfo info;
-        if (devBgp != intBgp) {
-            //TODO: With ipv6 BGP it has to be changed
-            info = new BgpDriverInfo(VPN, id);
-        } else if (isDevIdPresent) {
-            info = new BgpDriverInfo(DEVICE, id);
-        } else if (bgpMap.size() != 0) {
-            info = new BgpDriverInfo(DEVICES, id);
-        } else {
-            info = new BgpDriverInfo(ROOT, id);
-        }
-        return info;
-    }
-
-    /**
-     * Returns true if the device is present in the BGP map; false otherwise.
-     *
-     * @param bgpMap BGP map
-     * @param id     device id
-     * @return true if device is present; false otherwise
-     */
-    private static boolean isDevIdBgpPresent(Map<BgpInfo, DeviceId> bgpMap,
-                                             String id) {
-        for (Map.Entry<BgpInfo, DeviceId> info : bgpMap.entrySet()) {
-            DeviceId devId = info.getValue();
-            if (devId.toString().equals(id)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Returns the model object data for VPN instance deletion.
-     *
-     * @param intMap interface map
-     * @param ins    VPN instance
-     * @param id     device id
-     * @return model object data
-     */
-    static ModelObjectData getVpnDelModObj(Map<AccessInfo, InterfaceInfo> intMap,
-                                           NetworkInstances ins,
-                                           String id) {
-        boolean isDevIdPresent = isDevIdPresent(intMap, id);
-        ModelObjectData modData;
-        if (intMap.size() == 0) {
-            modData = buildInsModDataRoot(id, ins);
-        } else if (isDevIdPresent) {
-            modData = buildInsModDataDevice(id, ins);
-        } else {
-            modData = buildInsModDataDevices(id, ins);
-        }
-        return modData;
-    }
-
-    /**
-     * Returns the BGP driver info for VPN BGP instance deletion.
-     *
-     * @param bgpMap BGP map
-     * @param id     device id
-     * @return BGP driver info
-     */
-    static BgpDriverInfo getVpnBgpDelModObj(Map<BgpInfo, DeviceId> bgpMap,
-                                            String id) {
-        boolean isDevIdPresent = isDevIdBgpPresent(bgpMap, id);
-        BgpDriverInfo driInfo;
-        if (bgpMap.size() == 0) {
-            driInfo = new BgpDriverInfo(ROOT, id);
-        } else if (isDevIdPresent) {
-            driInfo = new BgpDriverInfo(DEVICE, id);
-        } else {
-            driInfo = new BgpDriverInfo(DEVICES, id);
-        }
-        return driInfo;
-    }
-
-    /**
-     * Returns the device id whose management ip address or lsr ID matches with
-     * the ip or lsr ID received respectively.
-     *
-     * @param ip      value of ip or lsr id
-     * @param isIp    if ip or lsr id
-     * @param devices available devices
-     * @return device id
-     */
-    static DeviceId getId(String ip, boolean isIp,
-                          Iterable<org.onosproject.net.Device> devices) {
-        for (org.onosproject.net.Device device : devices) {
-            String val;
-            if (isIp) {
-                val = device.annotations().value(IP);
-            } else {
-                val = device.annotations().value(LSR_ID);
-            }
-            if (ip.equals(val)) {
-                return device.id();
-            }
-        }
-        throw new NetL3VpnException(getMgmtIpUnAvailErr(ip));
-    }
-
-    /**
-     * Returns ip address from the device id by parsing.
-     *
-     * @param devId device id
-     * @return ip address
-     */
-    static String getIpFromDevId(DeviceId devId) {
-        String devKey = devId.toString();
-        int firstInd = devKey.indexOf(COLON);
-        int secInd = devKey.indexOf(COLON, firstInd + 1);
-        return devKey.substring(firstInd + 1, secInd);
-    }
-}
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/package-info.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/package-info.java
deleted file mode 100644
index 68e99ec..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * The implementations of IETF NET l3VPN manager and store.
- */
-package org.onosproject.l3vpn.netl3vpn.impl;
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/package-info.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/package-info.java
deleted file mode 100644
index f270fcd..0000000
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * The IETF NET l3VPN YANG application.
- */
-package org.onosproject.l3vpn.netl3vpn;
diff --git a/apps/pce/app/BUILD b/apps/pce/app/BUILD
deleted file mode 100644
index 9c2d107..0000000
--- a/apps/pce/app/BUILD
+++ /dev/null
@@ -1,24 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + JACKSON + KRYO + CLI + REST + [
-    "//core/store/serializers:onos-core-serializers",
-    "//apps/tunnel/api:onos-apps-tunnel-api",
-    "//apps/pcep-api:onos-apps-pcep-api",
-    "//apps/pce/bandwidthmgmt:onos-apps-pce-bandwidthmgmt",
-]
-
-TEST_DEPS = TEST_REST + [
-    "//apps/tunnel/api:onos-apps-tunnel-api-tests",
-]
-
-osgi_jar_with_tests(
-    karaf_command_packages = ["org.onosproject.pce.cli"],
-    test_deps = TEST_DEPS,
-    deps = COMPILE_DEPS,
-)
-
-onos_app(
-    app_name = "org.onosproject.pce.app",
-    category = "default",
-    description = "PCE as centeral controller App.",
-    title = "PCE",
-    url = "http://onosproject.org",
-)
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeleteLoadBalancingPathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeleteLoadBalancingPathCommand.java
deleted file mode 100644
index fd8a3cb..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeleteLoadBalancingPathCommand.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.cli;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.pce.pceservice.api.PceService;
-
-import org.slf4j.Logger;
-
-/**
- * Supports deleting pce load balancing path.
- */
-@Service
-@Command(scope = "onos", name = "pce-delete-load-balancing-path",
-        description = "Supports deleting pce load balancing path.")
-public class PceDeleteLoadBalancingPathCommand extends AbstractShellCommand {
-    private final Logger log = getLogger(getClass());
-
-    @Argument(index = 0, name = "name", description = "load balancing path name", required = true,
-            multiValued = false)
-    String name = null;
-
-    @Override
-    protected void doExecute() {
-        log.info("executing pce-delete-load-balancing-path");
-
-        PceService service = get(PceService.class);
-
-        if (!service.releasePath(name)) {
-            error("Path deletion failed.");
-            return;
-        }
-    }
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeletePathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeletePathCommand.java
deleted file mode 100644
index e4a6ccc..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeletePathCommand.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.cli;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.pce.pceservice.api.PceService;
-
-import org.slf4j.Logger;
-
-/**
- * Supports deleting pce path.
- */
-@Service
-@Command(scope = "onos", name = "pce-delete-path", description = "Supports deleting pce path.")
-public class PceDeletePathCommand extends AbstractShellCommand {
-    private final Logger log = getLogger(getClass());
-
-    @Argument(index = 0, name = "id", description = "Path Id.", required = true, multiValued = false)
-    String id = null;
-
-    @Override
-    protected void doExecute() {
-        log.info("executing pce-delete-path");
-
-        PceService service = get(PceService.class);
-
-        if (!service.releasePath(TunnelId.valueOf(id))) {
-            error("Path deletion failed.");
-            return;
-        }
-    }
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryLoadBalancingPathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryLoadBalancingPathCommand.java
deleted file mode 100644
index 686ea45..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryLoadBalancingPathCommand.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.cli;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.pce.pceservice.api.PceService;
-
-import org.slf4j.Logger;
-
-import java.util.List;
-
-/**
- * Supports quering PCE load balanced path.
- */
-@Service
-@Command(scope = "onos", name = "pce-query-load-balancing-path",
-        description = "Supports querying PCE path.")
-public class PceQueryLoadBalancingPathCommand extends AbstractShellCommand {
-    private final Logger log = getLogger(getClass());
-    public static final String COST_TYPE = "costType";
-
-    @Argument(index = 0, name = "pathName", description = "load balencing path name", required = true,
-            multiValued = false)
-    String name = null;
-
-    @Override
-    protected void doExecute() {
-        log.info("executing pce-query-load-balancing-path");
-
-        PceService service = get(PceService.class);
-
-        if (name == null) {
-            print("Path name is mandatory");
-            return;
-        }
-
-        List<TunnelId> tunnelIds = service.queryLoadBalancingPath(name);
-        if (tunnelIds == null || tunnelIds.isEmpty()) {
-            print("Release path failed");
-            return;
-        }
-
-        for (TunnelId id : tunnelIds) {
-            Tunnel tunnel = service.queryPath(id);
-            if (tunnel == null) {
-                print("Path doesnot exists");
-                return;
-            }
-            display(tunnel);
-        }
-    }
-
-    /**
-     * Display tunnel information on the terminal.
-     *
-     * @param tunnel pce tunnel
-     */
-    void display(Tunnel tunnel) {
-
-        print("\npath-id                  : %s \n" +
-                "source                   : %s \n" +
-                "destination              : %s \n" +
-                "path-type                : %s \n" +
-                "symbolic-path-name       : %s \n" +
-                "constraints:            \n" +
-                "   cost                  : %s \n" +
-                "   bandwidth             : %s",
-                tunnel.tunnelId().id(), tunnel.path().src().deviceId().toString(),
-                tunnel.path().dst().deviceId().toString(),
-                tunnel.type().name(), tunnel.tunnelName(), tunnel.annotations().value(COST_TYPE),
-                tunnel.annotations().value(AnnotationKeys.BANDWIDTH));
-        print("Path                     : %s", tunnel.path().toString());
-    }
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryPathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryPathCommand.java
deleted file mode 100644
index 5edb675..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryPathCommand.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.cli;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
-import org.onosproject.pce.pceservice.api.PceService;
-
-import org.slf4j.Logger;
-
-import java.util.List;
-
-/**
- * Supports quering PCE path.
- */
-@Service
-@Command(scope = "onos", name = "pce-query-path",
-        description = "Supports querying PCE path.")
-public class PceQueryPathCommand extends AbstractShellCommand {
-    private final Logger log = getLogger(getClass());
-    public static final String COST_TYPE = "costType";
-
-    @Option(name = "-i", aliases = "--id", description = "path-id", required = false,
-            multiValued = false)
-    String id = null;
-
-    @Override
-    protected void doExecute() {
-        log.info("executing pce-query-path");
-
-        PceService service = get(PceService.class);
-        if (null == id) {
-            Iterable<Tunnel> tunnels = service.queryAllPath();
-            if (tunnels != null) {
-                for (final Tunnel tunnel : tunnels) {
-                    display(tunnel);
-                }
-            } else {
-                print("No path is found.");
-                return;
-            }
-        } else {
-            Tunnel tunnel = service.queryPath(TunnelId.valueOf(id));
-            if (tunnel == null) {
-                print("Path doesnot exists.");
-                return;
-            }
-            display(tunnel);
-        }
-    }
-
-    /**
-     * Display tunnel information on the terminal.
-     *
-     * @param tunnel pce tunnel
-     */
-    void display(Tunnel tunnel) {
-        List<ExplicitPathInfo> explicitPathInfoList = AbstractShellCommand.get(PceService.class)
-                .explicitPathInfoList(tunnel.tunnelName().value());
-
-        print("\npath-id                  : %s \n" +
-                "source                   : %s \n" +
-                "destination              : %s \n" +
-                "path-type                : %s \n" +
-                "symbolic-path-name       : %s \n" +
-                "constraints:            \n" +
-                "   cost                  : %s \n" +
-                "   bandwidth             : %s",
-                tunnel.tunnelId().id(), tunnel.path().src().deviceId().toString(),
-                tunnel.path().dst().deviceId().toString(),
-                tunnel.type().name(), tunnel.tunnelName(), tunnel.annotations().value(COST_TYPE),
-                tunnel.annotations().value(AnnotationKeys.BANDWIDTH));
-        if (explicitPathInfoList != null) {
-            for (ExplicitPathInfo e : explicitPathInfoList) {
-                print("explicitPathObjects      : \n" +
-                      "    type                 : %s \n" +
-                      "    value                : %s ",
-                      String.valueOf(e.type().type()), e.value().toString());
-            }
-        }
-    }
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceSetupPathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceSetupPathCommand.java
deleted file mode 100644
index 253a166..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceSetupPathCommand.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.cli;
-
-import static org.onosproject.net.Link.State.ACTIVE;
-import static org.onosproject.net.Link.Type.DIRECT;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.LinkedList;
-
-import com.google.common.collect.Lists;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onlab.util.DataRateUnit;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelService;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.NetworkResource;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.intent.Constraint;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
-import org.onosproject.pce.pceservice.constraint.CostConstraint;
-import org.onosproject.pce.pceservice.LspType;
-import org.onosproject.pce.pceservice.api.PceService;
-import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint;
-import org.slf4j.Logger;
-
-/**
- * Supports creating the pce path.
- */
-@Service
-@Command(scope = "onos", name = "pce-setup-path", description = "Supports creating pce path.")
-public class PceSetupPathCommand extends AbstractShellCommand {
-    private final Logger log = getLogger(getClass());
-    public static final byte SUBTYPE_DEVICEID = 0;
-    public static final byte SUBTYPE_LINK = 1;
-    public static final byte SUBTYPE_INDEX = 1;
-    public static final byte TYPE_INDEX = 0;
-
-    public static final byte DEVICEID_INDEX = 2;
-    public static final byte SOURCE_DEVICEID_INDEX = 2;
-    public static final byte SOURCE_PORTNO_INDEX = 3;
-    public static final byte DESTINATION_DEVICEID_INDEX = 4;
-    public static final byte DESTINATION_PORTNO_INDEX = 5;
-
-    @Argument(index = 0, name = "src", description = "source device.", required = true, multiValued = false)
-    String src = null;
-
-    @Argument(index = 1, name = "dst", description = "destination device.", required = true, multiValued = false)
-    String dst = null;
-
-    @Argument(index = 2, name = "type", description = "LSP type:" + " It includes "
-            + "PCE tunnel with signalling in network (0), "
-            + "PCE tunnel without signalling in network with segment routing (1), "
-            + "PCE tunnel without signalling in network (2).",
-            required = true, multiValued = false)
-    int type = 0;
-
-    @Argument(index = 3, name = "name", description = "symbolic-path-name.", required = true, multiValued = false)
-    String name = null;
-
-    @Option(name = "-c", aliases = "--cost", description = "The cost attribute IGP cost(1) or TE cost(2)",
-            required = false, multiValued = false)
-    int cost = 2;
-
-    @Option(name = "-b", aliases = "--bandwidth", description = "The bandwidth attribute of path. "
-            + "Data rate unit is in BPS.", required = false, multiValued = false)
-    double bandwidth = 0.0;
-
-    @Option(name = "-e", aliases = "--explicitPathObjects", description = "List of strict and loose hopes"
-            + " explicitPathInfo format : Type/SubType/Value(DeviceId or Link info)\n" +
-            " If Value is Device : Type/SubType/deviceId\n" +
-            " If Value is Link : Type/SubType/SourceDeviceId/SourcePortNo/DestinationDeviceId/DestinationPortNo" +
-            "Type 0 - strict, 1 - loose \n" + "SubType 0 - deviceId, 1 - link \n",
-            required = false, multiValued = true)
-    String[] explicitPathInfoStrings;
-
-    @Option(name = "-l", aliases = "--loadBalancing", description = "The load balancing option for user. ",
-            required = false, multiValued = false)
-    boolean loadBalancing = false;
-
-    //explicitPathInfo format : Type/SubType/Value(DeviceId or Link info)
-    //If Value is Device : Type/SubType/deviceId
-    //If Value is Link : Type/SubType/SourceDeviceId/SourcePortNo/DestinationDeviceId/DestinationPortNo
-    List<ExplicitPathInfo> explicitPathInfo = Lists.newLinkedList();
-
-    @Override
-    protected void doExecute() {
-        log.info("executing pce-setup-path");
-
-        PceService service = get(PceService.class);
-        TunnelService tunnelService = get(TunnelService.class);
-
-        DeviceId srcDevice = DeviceId.deviceId(src);
-        DeviceId dstDevice = DeviceId.deviceId(dst);
-        List<Constraint> listConstrnt = new LinkedList<>();
-
-        // LSP type validation
-        if ((type < 0) || (type > 2)) {
-           error("The LSP type value can be PCE tunnel with signalling in network (0), " +
-                 "PCE tunnel without signalling in network with segment routing (1), " +
-                 "PCE tunnel without signalling in network (2).");
-           return;
-        }
-        LspType lspType = LspType.values()[type];
-
-        //Validating tunnel name, duplicated tunnel names not allowed
-        Collection<Tunnel> existingTunnels = tunnelService.queryTunnel(Tunnel.Type.MPLS);
-        for (Tunnel t : existingTunnels) {
-            if (t.tunnelName().toString().equals(name)) {
-                error("Path creation failed, Tunnel name already exists");
-                return;
-            }
-        }
-
-        // Add bandwidth
-        // bandwidth default data rate unit is in BPS
-        if (bandwidth != 0.0) {
-            listConstrnt.add(PceBandwidthConstraint.of(bandwidth, DataRateUnit.valueOf("BPS")));
-        }
-
-        // Add cost
-        // Cost validation
-        if ((cost < 1) || (cost > 2)) {
-            error("The cost attribute value either IGP cost(1) or TE cost(2).");
-            return;
-        }
-        // Here 'cost - 1' indicates the index of enum
-        CostConstraint.Type costType = CostConstraint.Type.values()[cost - 1];
-        listConstrnt.add(CostConstraint.of(costType));
-
-        if (explicitPathInfoStrings != null)  {
-            for (String str : explicitPathInfoStrings) {
-                String[] splitted = str.split("/");
-                DeviceId deviceId;
-                NetworkResource res = null;
-                PortNumber portNo;
-                int explicitPathType = Integer.parseInt(splitted[TYPE_INDEX]);
-                if ((explicitPathType < 0) || (explicitPathType > 1)) {
-                    error("Explicit path validation failed");
-                    return;
-                }
-
-                //subtype 0 = deviceId, 1 = link
-                //subtype is required to store either as deviceId or Link
-                if (splitted[DEVICEID_INDEX] != null && Integer.parseInt(splitted[SUBTYPE_INDEX]) == SUBTYPE_DEVICEID) {
-                    res = DeviceId.deviceId(splitted[DEVICEID_INDEX]);
-                } else if (Integer.parseInt(splitted[SUBTYPE_INDEX]) == SUBTYPE_LINK
-                        && splitted[SOURCE_DEVICEID_INDEX] != null
-                        && splitted[SOURCE_PORTNO_INDEX] != null
-                        && splitted[DESTINATION_DEVICEID_INDEX] != null
-                        && splitted[DESTINATION_PORTNO_INDEX] != null) {
-
-                    deviceId = DeviceId.deviceId(splitted[SOURCE_DEVICEID_INDEX]);
-                    portNo = PortNumber.portNumber(splitted[SOURCE_PORTNO_INDEX]);
-                    ConnectPoint cpSrc = new ConnectPoint(deviceId, portNo);
-                    deviceId = DeviceId.deviceId(splitted[DESTINATION_DEVICEID_INDEX]);
-                    portNo = PortNumber.portNumber(splitted[DESTINATION_PORTNO_INDEX]);
-                    ConnectPoint cpDst = new ConnectPoint(deviceId, portNo);
-                    res = DefaultLink.builder()
-                            .providerId(ProviderId.NONE)
-                            .src(cpSrc)
-                            .dst(cpDst)
-                            .type(DIRECT)
-                            .state(ACTIVE)
-                            .build();
-                } else {
-                    error("Explicit path validation failed");
-                    return;
-                }
-                ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.values()[explicitPathType], res);
-                explicitPathInfo.add(obj);
-            }
-        }
-
-        //with load balancing option
-        if (loadBalancing) {
-            if (!service.setupPath(srcDevice, dstDevice, name, listConstrnt, lspType, loadBalancing)) {
-                error("Path creation failed.");
-            }
-            return;
-        }
-
-        if (!service.setupPath(srcDevice, dstDevice, name, listConstrnt, lspType, explicitPathInfo)) {
-            error("Path creation failed.");
-        }
-    }
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceUpdatePathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceUpdatePathCommand.java
deleted file mode 100644
index 96796b5..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceUpdatePathCommand.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.cli;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-import java.util.List;
-import java.util.LinkedList;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onlab.util.DataRateUnit;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint;
-import org.onosproject.net.intent.Constraint;
-import org.onosproject.pce.pceservice.constraint.CostConstraint;
-import org.onosproject.pce.pceservice.api.PceService;
-
-import org.slf4j.Logger;
-
-/**
- * Supports updating the PCE path.
- */
-@Service
-@Command(scope = "onos", name = "pce-update-path",
-        description = "Supports updating PCE path.")
-public class PceUpdatePathCommand extends AbstractShellCommand {
-    private final Logger log = getLogger(getClass());
-
-    @Argument(index = 0, name = "id", description = "Path Id.", required = true, multiValued = false)
-    String id = null;
-
-    @Option(name = "-c", aliases = "--cost", description = "The cost attribute IGP cost (1) or TE cost (2).",
-            required = false, multiValued = false)
-    Integer cost = null;
-
-    @Option(name = "-b", aliases = "--bandwidth", description = "The bandwidth attribute of path. "
-            + "Data rate unit is in Bps.", required = false, multiValued = false)
-    Double bandwidth = null;
-
-    @Override
-    protected void doExecute() {
-        log.info("executing pce-update-path");
-
-        PceService service = get(PceService.class);
-
-        List<Constraint> constrntList = new LinkedList<>();
-        // Assign bandwidth. Data rate unit is in Bps.
-        if (bandwidth != null) {
-            constrntList.add(PceBandwidthConstraint.of(Double.valueOf(bandwidth), DataRateUnit.valueOf("BPS")));
-        }
-
-        // Cost validation
-        if (cost != null) {
-            if ((cost < 1) || (cost > 2)) {
-                error("The cost attribute value is either IGP cost(1) or TE cost(2).");
-                return;
-            }
-            CostConstraint.Type costType = CostConstraint.Type.values()[cost - 1];
-            constrntList.add(CostConstraint.of(costType));
-        }
-
-        if (!service.updatePath(TunnelId.valueOf(id), constrntList)) {
-            error("Path updation failed.");
-            return;
-        }
-    }
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/package-info.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/package-info.java
deleted file mode 100644
index 7054cfa..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * PCE path console command-line extensions.
- */
-package org.onosproject.pce.cli;
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/DefaultPcePath.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/DefaultPcePath.java
deleted file mode 100644
index 404db25..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/DefaultPcePath.java
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pceservice;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Objects;
-
-import org.onlab.rest.BaseResource;
-import org.onlab.util.DataRateUnit;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.net.intent.Constraint;
-import org.onosproject.pce.pceservice.constraint.CostConstraint;
-import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint;
-
-/**
- * Implementation of an entity which provides functionalities of pce path.
- */
-public final class DefaultPcePath implements PcePath {
-
-    private TunnelId id; // path id
-    private String source; // Ingress
-    private String destination; // Egress
-    private LspType lspType; // LSP type
-    private String name; // symbolic-path-name
-    private Constraint costConstraint; // cost constraint
-    private Constraint bandwidthConstraint; // bandwidth constraint
-    private Collection<ExplicitPathInfo> explicitPathInfo; //list of explicit path info
-
-    /**
-     * Initializes PCE path attributes.
-     *
-     * @param id path id
-     * @param src ingress
-     * @param dst egress
-     * @param lspType LSP type
-     * @param name symbolic-path-name
-     * @param costConstrnt cost constraint
-     * @param bandwidthConstrnt bandwidth constraint
-     * @param explicitPathInfo list of explicit path info
-     */
-    private DefaultPcePath(TunnelId id, String src, String dst, LspType lspType,
-                           String name, Constraint costConstrnt, Constraint bandwidthConstrnt,
-                           Collection<ExplicitPathInfo> explicitPathInfo) {
-        this.id = id;
-        this.source = src;
-        this.destination = dst;
-        this.lspType = lspType;
-        this.name = name;
-        this.costConstraint = costConstrnt;
-        this.bandwidthConstraint = bandwidthConstrnt;
-        this.explicitPathInfo = explicitPathInfo;
-    }
-
-    @Override
-    public TunnelId id() {
-        return id;
-    }
-
-    @Override
-    public void id(TunnelId id) {
-        this.id = id;
-    }
-
-    @Override
-    public String source() {
-        return source;
-    }
-
-    @Override
-    public void source(String src) {
-        this.source = src;
-    }
-
-    @Override
-    public String destination() {
-        return destination;
-    }
-
-    @Override
-    public void destination(String dst) {
-        this.destination = dst;
-    }
-
-    @Override
-    public LspType lspType() {
-        return lspType;
-    }
-
-    @Override
-    public String name() {
-        return name;
-    }
-
-    @Override
-    public Constraint costConstraint() {
-        return costConstraint;
-    }
-
-    @Override
-    public Constraint bandwidthConstraint() {
-        return bandwidthConstraint;
-    }
-
-    @Override
-    public Collection<ExplicitPathInfo> explicitPathInfo() {
-        return explicitPathInfo;
-    }
-
-    @Override
-    public PcePath copy(PcePath path) {
-        if (null != path.source()) {
-            this.source = path.source();
-        }
-        if (null != path.destination()) {
-            this.destination = path.destination();
-        }
-
-        this.lspType = path.lspType();
-
-        if (null != path.name()) {
-            this.name = path.name();
-        }
-        if (null != path.costConstraint()) {
-            this.costConstraint = path.costConstraint();
-        }
-        if (null != path.bandwidthConstraint()) {
-            this.bandwidthConstraint = path.bandwidthConstraint();
-        }
-        return this;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(id, source, destination, lspType, name, costConstraint, bandwidthConstraint,
-                explicitPathInfo);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultPcePath) {
-            DefaultPcePath that = (DefaultPcePath) obj;
-            return Objects.equals(id, that.id)
-                    && Objects.equals(source, that.source)
-                    && Objects.equals(destination, that.destination)
-                    && Objects.equals(lspType, that.lspType)
-                    && Objects.equals(name, that.name)
-                    && Objects.equals(costConstraint, that.costConstraint)
-                    && Objects.equals(bandwidthConstraint, that.bandwidthConstraint)
-                    && Objects.equals(explicitPathInfo, that.explicitPathInfo);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .omitNullValues()
-                .add("id", id())
-                .add("source", source)
-                .add("destination", destination)
-                .add("lsptype", lspType)
-                .add("name", name)
-                .add("costConstraint", costConstraint)
-                .add("bandwidthConstraint", bandwidthConstraint)
-                .add("explicitPathInfo", explicitPathInfo)
-                .toString();
-    }
-
-    /**
-     * Creates an instance of the pce path builder.
-     *
-     * @return instance of builder
-     */
-    public static Builder builder() {
-        return new Builder();
-    }
-
-    /**
-     * Builder class for pce path.
-     */
-    public static final class Builder extends BaseResource implements PcePath.Builder {
-        private TunnelId id;
-        private String source;
-        private String destination;
-        private LspType lspType;
-        private String name;
-        private Constraint costConstraint;
-        private Constraint bandwidthConstraint;
-        private Collection<ExplicitPathInfo> explicitPathInfo;
-
-        @Override
-        public Builder id(String id) {
-            this.id = TunnelId.valueOf(id);
-            return this;
-        }
-
-        @Override
-        public Builder source(String source) {
-            this.source = source;
-            return this;
-        }
-
-        @Override
-        public Builder destination(String destination) {
-            this.destination = destination;
-            return this;
-        }
-
-        @Override
-        public Builder lspType(String type) {
-            if (null != type) {
-                this.lspType = LspType.values()[Integer.valueOf(type)];
-            }
-            return this;
-        }
-
-        @Override
-        public Builder name(String name) {
-            this.name = name;
-            return this;
-        }
-
-        @Override
-        public Builder costConstraint(String cost) {
-            this.costConstraint = CostConstraint.of(CostConstraint.Type.values()[Integer.valueOf(cost) - 1]);
-            return this;
-        }
-
-        @Override
-        public Builder bandwidthConstraint(String bandwidth) {
-            this.bandwidthConstraint = PceBandwidthConstraint.of(Double.valueOf(bandwidth), DataRateUnit
-                    .valueOf("BPS"));
-            return this;
-        }
-
-        @Override
-        public Builder explicitPathInfo(Collection<ExplicitPathInfo> explicitPathInfo) {
-            this.explicitPathInfo = explicitPathInfo;
-            return this;
-        }
-
-        @Override
-        public Builder of(Tunnel tunnel, List<ExplicitPathInfo> explicitPathInfoList) {
-            this.id = TunnelId.valueOf(tunnel.tunnelId().id());
-            this.source = tunnel.path().src().deviceId().toString();
-            this.destination = tunnel.path().dst().deviceId().toString();
-            this.name = tunnel.tunnelName().toString();
-            // LSP type
-            String lspType = tunnel.annotations().value(PcepAnnotationKeys.LSP_SIG_TYPE);
-            if (lspType != null) {
-                this.lspType = LspType.values()[LspType.valueOf(lspType).type()];
-            }
-
-            // Cost type
-            String costType = tunnel.annotations().value(PcepAnnotationKeys.COST_TYPE);
-            if (costType != null) {
-                this.costConstraint = CostConstraint.of(CostConstraint.Type.valueOf(costType));
-            }
-
-            // Bandwidth
-            String bandwidth = tunnel.annotations().value(PcepAnnotationKeys.BANDWIDTH);
-            if (bandwidth != null) {
-                this.bandwidthConstraint = PceBandwidthConstraint.of(Double.parseDouble(bandwidth),
-                                                                  DataRateUnit.valueOf("BPS"));
-            }
-
-            // Explicit Path
-            if (explicitPathInfoList != null) {
-                this.explicitPathInfo = explicitPathInfoList;
-            }
-
-            return this;
-        }
-
-        @Override
-        public PcePath build() {
-            return new DefaultPcePath(id, source, destination, lspType, name,
-                                      costConstraint, bandwidthConstraint, explicitPathInfo);
-        }
-    }
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/ExplicitPathInfo.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/ExplicitPathInfo.java
deleted file mode 100644
index fcf5006..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/ExplicitPathInfo.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pceservice;
-
-import org.onosproject.net.NetworkResource;
-
-import com.google.common.annotations.Beta;
-
-import java.util.Objects;
-
-/**
- * Representation of explicit path info consists of contraints (strict / loose) to compute path.
- */
-@Beta
-public final class ExplicitPathInfo {
-
-    private final Type type;
-
-    //Can be Link or DeviceId
-    private final NetworkResource value;
-
-    public enum Type {
-        /**
-         * Signifies that path includes strict node or link.
-         */
-        STRICT(0),
-
-        /**
-         * Signifies that path includes loose node or link.
-         */
-        LOOSE(1);
-
-        int value;
-
-        /**
-         * Assign val with the value as the type.
-         *
-         * @param val type
-         */
-        Type(int val) {
-            value = val;
-        }
-
-        /**
-         * Returns value of type.
-         *
-         * @return type
-         */
-        public byte type() {
-            return (byte) value;
-        }
-    }
-
-    /**
-     * Creates instance of explicit path object.
-     *
-     * @param type specifies whether strict or loose node/link
-     * @param value specifies deviceId or link
-     */
-    public ExplicitPathInfo(Type type, NetworkResource value) {
-        this.type = type;
-        this.value = value;
-    }
-
-    /**
-     * Returns explicit path type.
-     *
-     * @return explicit path type as strict/loose
-     */
-    public Type type() {
-        return type;
-    }
-
-    /**
-     * Returns deviceId or link.
-     *
-     * @return deviceId or link
-     */
-    public NetworkResource value() {
-        return value;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(type, value);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof ExplicitPathInfo) {
-            final ExplicitPathInfo other = (ExplicitPathInfo) obj;
-            return Objects.equals(this.type, other.type)
-                    && Objects.equals(this.value, other.value);
-        }
-        return false;
-    }
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/LspType.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/LspType.java
deleted file mode 100644
index 443e19e..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/LspType.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pceservice;
-
-/**
- * Representation of LSP type.
- */
-public enum LspType {
-    /**
-     * Signifies that path is created via signaling mode.
-     */
-    WITH_SIGNALLING(0),
-
-    /**
-     * Signifies that path is created via SR mode.
-     */
-    SR_WITHOUT_SIGNALLING(1),
-
-    /**
-     * Signifies that path is created via without signaling and without SR mode.
-     */
-    WITHOUT_SIGNALLING_AND_WITHOUT_SR(2);
-
-    int value;
-
-    /**
-     * Assign val with the value as the LSP type.
-     *
-     * @param val LSP type
-     */
-    LspType(int val) {
-        value = val;
-    }
-
-    /**
-     * Returns value of LSP type.
-     *
-     * @return LSP type
-     */
-    public byte type() {
-        return (byte) value;
-    }
-}
\ No newline at end of file
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PceManager.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PceManager.java
deleted file mode 100644
index d9a61f0..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PceManager.java
+++ /dev/null
@@ -1,1323 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pceservice;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
-import org.onlab.graph.ScalarWeight;
-import org.onlab.graph.Weight;
-import org.onlab.packet.IpAddress;
-import org.onlab.util.Bandwidth;
-import org.onosproject.bandwidthmgr.api.BandwidthMgmtService;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.core.IdGenerator;
-import org.onosproject.incubator.net.tunnel.DefaultTunnel;
-import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.TunnelEvent;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelListener;
-import org.onosproject.incubator.net.tunnel.TunnelName;
-import org.onosproject.incubator.net.tunnel.TunnelService;
-import org.onosproject.mastership.MastershipService;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultAnnotations.Builder;
-import org.onosproject.net.DefaultPath;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.DisjointPath;
-import org.onosproject.net.Link;
-import org.onosproject.net.LinkKey;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.NetworkResource;
-import org.onosproject.net.Path;
-import org.onosproject.net.config.ConfigFactory;
-import org.onosproject.net.config.NetworkConfigRegistry;
-import org.onosproject.net.config.NetworkConfigService;
-import org.onosproject.net.config.basics.SubjectFactories;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.intent.Constraint;
-import org.onosproject.net.link.LinkEvent;
-import org.onosproject.net.resource.Resource;
-import org.onosproject.net.resource.ResourceAllocation;
-import org.onosproject.net.topology.LinkWeigher;
-import org.onosproject.net.topology.PathService;
-import org.onosproject.net.topology.TopologyEdge;
-import org.onosproject.net.topology.TopologyEvent;
-import org.onosproject.net.topology.TopologyListener;
-import org.onosproject.net.topology.TopologyService;
-import org.onosproject.pce.pceservice.api.PceService;
-import org.onosproject.pce.pceservice.constraint.CapabilityConstraint;
-import org.onosproject.pce.pceservice.constraint.CapabilityConstraint.CapabilityType;
-import org.onosproject.pce.pceservice.constraint.CostConstraint;
-import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint;
-import org.onosproject.pce.pceservice.constraint.SharedBandwidthConstraint;
-import org.onosproject.pce.pcestore.PcePathInfo;
-import org.onosproject.pce.pcestore.api.PceStore;
-import org.onosproject.pcep.api.DeviceCapability;
-import org.onosproject.pcep.api.TeLinkConfig;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.DistributedSet;
-import org.onosproject.store.service.Serializer;
-import org.onosproject.store.service.StorageService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.incubator.net.tunnel.Tunnel.State.INIT;
-import static org.onosproject.incubator.net.tunnel.Tunnel.State.UNSTABLE;
-import static org.onosproject.incubator.net.tunnel.Tunnel.Type.MPLS;
-import static org.onosproject.pce.pceservice.LspType.WITH_SIGNALLING;
-import static org.onosproject.pce.pceservice.PcepAnnotationKeys.BANDWIDTH;
-import static org.onosproject.pce.pceservice.PcepAnnotationKeys.COST_TYPE;
-import static org.onosproject.pce.pceservice.PcepAnnotationKeys.DELEGATE;
-import static org.onosproject.pce.pceservice.PcepAnnotationKeys.LOCAL_LSP_ID;
-import static org.onosproject.pce.pceservice.PcepAnnotationKeys.LSP_SIG_TYPE;
-import static org.onosproject.pce.pceservice.PcepAnnotationKeys.PCC_TUNNEL_ID;
-import static org.onosproject.pce.pceservice.PcepAnnotationKeys.PCE_INIT;
-import static org.onosproject.pce.pceservice.PcepAnnotationKeys.PLSP_ID;
-
-/**
- * Implementation of PCE service.
- */
-@Component(immediate = true, service = PceManager.class)
-public class PceManager implements PceService {
-    private static final Logger log = LoggerFactory.getLogger(PceManager.class);
-
-    public static final long GLOBAL_LABEL_SPACE_MIN = 4097;
-    public static final long GLOBAL_LABEL_SPACE_MAX = 5121;
-    public static final String PCE_SERVICE_APP = "org.onosproject.pce";
-    private static final String LOCAL_LSP_ID_GEN_TOPIC = "pcep-local-lsp-id";
-    public static final String DEVICE_TYPE = "type";
-    public static final String L3_DEVICE = "L3";
-
-    private static final String LSRID = "lsrId";
-    private static final String TRUE = "true";
-    private static final String FALSE = "false";
-    public static final int PCEP_PORT = 4189;
-
-    private IdGenerator localLspIdIdGen;
-    protected DistributedSet<Short> localLspIdFreeList;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PathService pathService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PceStore pceStore;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TunnelService tunnelService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceService deviceService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigService netCfgService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected MastershipService mastershipService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TopologyService topologyService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected BandwidthMgmtService bandwidthMgmtService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigRegistry netConfigRegistry;
-
-    private TunnelListener listener = new InnerTunnelListener();
-    private ApplicationId appId;
-
-    private final TopologyListener topologyListener = new InternalTopologyListener();
-    public static final String LOAD_BALANCING_PATH_NAME = "loadBalancingPathName";
-
-    private List<TunnelId> rsvpTunnelsWithLocalBw = new ArrayList<>();
-
-    private final ConfigFactory<LinkKey, TeLinkConfig> configFactory =
-            new ConfigFactory<LinkKey, TeLinkConfig>(SubjectFactories.LINK_SUBJECT_FACTORY,
-                    TeLinkConfig.class, "teLinkConfig") {
-                @Override
-                public TeLinkConfig createConfig() {
-                    return new TeLinkConfig();
-                }
-            };
-
-    /**
-     * Creates new instance of PceManager.
-     */
-    public PceManager() {
-    }
-
-    @Activate
-    protected void activate() {
-        appId = coreService.registerApplication(PCE_SERVICE_APP);
-
-        tunnelService.addListener(listener);
-
-        localLspIdIdGen = coreService.getIdGenerator(LOCAL_LSP_ID_GEN_TOPIC);
-        localLspIdIdGen.getNewId(); // To prevent 0, the 1st value generated from being used in protocol.
-        localLspIdFreeList = storageService.<Short>setBuilder()
-                .withName("pcepLocalLspIdDeletedList")
-                .withSerializer(Serializer.using(KryoNamespaces.API))
-                .build()
-                .asDistributedSet();
-
-        topologyService.addListener(topologyListener);
-        netConfigRegistry.registerConfigFactory(configFactory);
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        tunnelService.removeListener(listener);
-        topologyService.removeListener(topologyListener);
-        netConfigRegistry.unregisterConfigFactory(configFactory);
-
-        log.info("Stopped");
-    }
-
-    /**
-     * Returns an edge-weight capable of evaluating links on the basis of the
-     * specified constraints.
-     *
-     * @param constraints path constraints
-     * @return edge-weight function
-     */
-    private LinkWeigher weight(List<Constraint> constraints) {
-        return new TeConstraintBasedLinkWeight(constraints);
-    }
-
-    /**
-     * Computes a path between two devices.
-     *
-     * @param src ingress device
-     * @param dst egress device
-     * @param constraints path constraints
-     * @return computed path based on constraints
-     */
-    protected Set<Path> computePath(DeviceId src, DeviceId dst, List<Constraint> constraints) {
-        if (pathService == null) {
-            return ImmutableSet.of();
-        }
-
-        Set<Path> paths = pathService.getPaths(src, dst, weight(constraints));
-        log.info("paths in computePath ::" + paths);
-        if (!paths.isEmpty()) {
-            return paths;
-        }
-        return ImmutableSet.of();
-    }
-
-    //Computes the partial path from partial computed path to specified dst.
-    private List<Path> computePartialPath(List<Path> computedPath, DeviceId src, DeviceId dst,
-                                    List<Constraint> constraints) {
-        int size = computedPath.size();
-        Path path = null;
-        DeviceId deviceId = size == 0 ? src :
-                computedPath.get(size - 1).dst().deviceId();
-
-        Set<Path> tempComputePath = computePath(deviceId, dst, constraints);
-
-        if (tempComputePath.isEmpty()) {
-            return null;
-        }
-
-        //if path validation fails return null
-        //Validate computed path to avoid loop in the path
-        for (Path p : tempComputePath) {
-            if (pathValidation(computedPath, p)) {
-                path = p;
-                break;
-            }
-        }
-        if (path == null) {
-            return null;
-        }
-
-        //Store the partial path result in a list
-        computedPath.add(path);
-        return computedPath;
-    }
-
-    private List<DeviceId> createListOfDeviceIds(List<? extends NetworkResource> list) {
-        List<Link> links = new LinkedList<>();
-        if (!list.isEmpty() && list.iterator().next() instanceof Path) {
-            for (Path path : (List<Path>) list) {
-                links.addAll(path.links());
-            }
-        } else if (!list.isEmpty() && list.iterator().next() instanceof Link) {
-            links.addAll((List<Link>) list);
-        }
-
-        //List of devices for new path computed
-        DeviceId source = null;
-        DeviceId destination = null;
-        List<DeviceId> devList = new LinkedList<>();
-
-        for (Link l : links) {
-            if (!devList.contains(l.src().deviceId())) {
-                devList.add(l.src().deviceId());
-            }
-            if (!devList.contains(l.dst().deviceId())) {
-                devList.add(l.dst().deviceId());
-            }
-        }
-
-        return devList;
-    }
-
-    //To detect loops in the path i.e if the partial paths has intersection node avoid it.
-    private boolean pathValidation(List<Path> partialPath, Path path) {
-
-        //List of devices in new path computed
-        List<DeviceId> newPartialPathDevList;
-        newPartialPathDevList = createListOfDeviceIds(path.links());
-
-        //List of devices in partial computed path
-        List<DeviceId> partialComputedPathDevList;
-        partialComputedPathDevList = createListOfDeviceIds(partialPath);
-
-        for (DeviceId deviceId : newPartialPathDevList) {
-            for (DeviceId devId : partialComputedPathDevList) {
-                if (!newPartialPathDevList.get(0).equals(deviceId) &&
-                        !partialComputedPathDevList.get(partialComputedPathDevList.size() - 1).equals(devId)
-                        && deviceId.equals(devId)) {
-                    return false;
-                }
-            }
-        }
-        return true;
-    }
-
-    //Returns final computed explicit path (list of partial computed paths).
-    private List<Path> computeExplicitPath(List<ExplicitPathInfo> explicitPathInfo, DeviceId src, DeviceId dst,
-            List<Constraint> constraints) {
-        List<Path> finalComputedPath = new LinkedList<>();
-        for (ExplicitPathInfo info : explicitPathInfo) {
-            /*
-             * If explicit path object is LOOSE,
-             * 1) If specified as DeviceId (node) :
-             * If it is source , compute from source to destination (partial computation not required),
-             * otherwise compute from specified source to specified device
-             * 2) If specified as Link :
-             * Compute partial path from source to link's source , if path exists compute from link's source to dst
-             */
-            if (info.type().equals(ExplicitPathInfo.Type.LOOSE)) {
-                if (info.value() instanceof DeviceId) {
-                    // If deviceId is source no need to compute
-                    if (!(info.value()).equals(src)) {
-                        log.debug("computeExplicitPath :: Loose , device");
-                        finalComputedPath = computePartialPath(finalComputedPath, src, (DeviceId) info.value(),
-                                constraints);
-                        log.debug("finalComputedPath in computeExplicitPath ::" + finalComputedPath);
-                    }
-
-                } else if (info.value() instanceof Link) {
-                    if ((((Link) info.value()).src().deviceId().equals(src))
-                            || (!finalComputedPath.isEmpty()
-                            && finalComputedPath.get(finalComputedPath.size() - 1).dst().deviceId().equals(
-                                    ((Link) info.value()).src().deviceId()))) {
-
-                        finalComputedPath = computePartialPath(finalComputedPath, src, ((Link) info.value()).dst()
-                                .deviceId(), constraints);
-                    } else {
-
-                        finalComputedPath = computePartialPath(finalComputedPath, src, ((Link) info.value()).src()
-                                .deviceId(), constraints) != null ? computePartialPath(finalComputedPath, src,
-                                ((Link) info.value()).dst().deviceId(), constraints) : null;
-                    }
-                }
-                /*
-                 * If explicit path object is STRICT,
-                 * 1) If specified as DeviceId (node) :
-                 * Check whether partial computed path has reachable to strict specified node orde
-                 * strict node is the source, if no set path as null else do nothing
-                 * 2) If specified as Link :
-                 * Check whether partial computed path has reachable to strict link's src, if yes compute
-                 * path from strict link's src to link's dst (to include specified link)
-                 */
-            } else if (info.type().equals(ExplicitPathInfo.Type.STRICT)) {
-                if (info.value() instanceof DeviceId) {
-                    log.debug("computeExplicitPath :: Strict , device");
-                    if (!(!finalComputedPath.isEmpty() && finalComputedPath.get(finalComputedPath.size() - 1).dst()
-                            .deviceId().equals(info.value()))
-                            && !info.value().equals(src)) {
-                        finalComputedPath = null;
-                    }
-
-                } else if (info.value() instanceof Link) {
-                    log.info("computeExplicitPath :: Strict");
-                    finalComputedPath = ((Link) info.value()).src().deviceId().equals(src)
-                            || !finalComputedPath.isEmpty()
-                            && finalComputedPath.get(finalComputedPath.size() - 1).dst().deviceId()
-                                    .equals(((Link) info.value()).src().deviceId()) ? computePartialPath(
-                            finalComputedPath, src, ((Link) info.value()).dst().deviceId(), constraints) : null;
-
-                    //Log.info("computeExplicitPath :: (Link) info.value() " + (Link) info.value());
-                    //Log.info("computeExplicitPath :: finalComputedPath " + finalComputedPath);
-
-                    if (finalComputedPath != null && !finalComputedPath.get(finalComputedPath.size() - 1).links()
-                            .contains(info.value())) {
-                        finalComputedPath = null;
-                    }
-                }
-            }
-            if (finalComputedPath == null) {
-                return null;
-            }
-        }
-        // Destination is not reached in Partial computed path then compute till destination
-        if (finalComputedPath.isEmpty() || !finalComputedPath.isEmpty()
-                && !finalComputedPath.get(finalComputedPath.size() - 1).dst().deviceId().equals(dst)) {
-
-            finalComputedPath = computePartialPath(finalComputedPath, src, dst, constraints);
-            if (finalComputedPath == null) {
-                return null;
-            }
-        }
-
-        return finalComputedPath;
-    }
-
-    @Override
-    public boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List<Constraint> constraints,
-                             LspType lspType) {
-        return setupPath(src, dst, tunnelName, constraints, lspType, null, false);
-    }
-
-    //[TODO:] handle requests in queue
-    @Override
-    public boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List<Constraint> constraints,
-                             LspType lspType, List<ExplicitPathInfo> explicitPathInfo) {
-        return setupPath(src, dst, tunnelName, constraints, lspType, explicitPathInfo, false);
-
-    }
-
-    @Override
-    public boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List<Constraint> constraints,
-                             LspType lspType, boolean loadBalancing) {
-        return setupPath(src, dst, tunnelName, constraints, lspType, null, loadBalancing);
-    }
-
-    @Override
-    public boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List<Constraint> constraints,
-                             LspType lspType, List<ExplicitPathInfo> explicitPathInfo, boolean loadBalancing) {
-        checkNotNull(src);
-        checkNotNull(dst);
-        checkNotNull(tunnelName);
-        checkNotNull(lspType);
-
-        // Convert from DeviceId to TunnelEndPoint
-        Device srcDevice = deviceService.getDevice(src);
-        Device dstDevice = deviceService.getDevice(dst);
-
-        if (srcDevice == null || dstDevice == null) {
-            // Device is not known.
-            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, explicitPathInfo,
-                    loadBalancing));
-            return false;
-        }
-
-        // In future projections instead of annotations will be used to fetch LSR ID.
-        String srcLsrId = srcDevice.annotations().value(LSRID);
-        String dstLsrId = dstDevice.annotations().value(LSRID);
-
-        if (srcLsrId == null || dstLsrId == null) {
-            // LSR id is not known.
-            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, explicitPathInfo,
-                    loadBalancing));
-            return false;
-        }
-
-        // Get device config from netconfig, to ascertain that session with ingress is present.
-        DeviceCapability cfg = netCfgService.getConfig(DeviceId.deviceId(srcLsrId), DeviceCapability.class);
-        if (cfg == null) {
-            log.debug("No session to ingress.");
-            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, explicitPathInfo,
-                    loadBalancing));
-            return false;
-        }
-
-        TunnelEndPoint srcEndPoint = IpTunnelEndPoint.ipTunnelPoint(IpAddress.valueOf(srcLsrId));
-        TunnelEndPoint dstEndPoint = IpTunnelEndPoint.ipTunnelPoint(IpAddress.valueOf(dstLsrId));
-
-        double bwConstraintValue = 0;
-        CostConstraint costConstraint = null;
-        if (constraints != null) {
-            constraints.add(CapabilityConstraint.of(CapabilityType.valueOf(lspType.name())));
-            Iterator<Constraint> iterator = constraints.iterator();
-
-            while (iterator.hasNext()) {
-                Constraint constraint = iterator.next();
-                if (constraint instanceof PceBandwidthConstraint) {
-                    bwConstraintValue = ((PceBandwidthConstraint) constraint).bandwidth().bps();
-                } else if (constraint instanceof CostConstraint) {
-                    costConstraint = (CostConstraint) constraint;
-                }
-            }
-
-            /*
-             * Add cost at the end of the list of constraints. The path computation algorithm also computes cumulative
-             * cost. The function which checks the limiting/capability constraints also returns per link cost. This
-             * function can either return the result of limiting/capability constraint validation or the value of link
-             * cost, depending upon what is the last constraint in the loop.
-             */
-            if (costConstraint != null) {
-                constraints.remove(costConstraint);
-                constraints.add(costConstraint);
-            }
-        } else {
-            constraints = new LinkedList<>();
-            constraints.add(CapabilityConstraint.of(CapabilityType.valueOf(lspType.name())));
-        }
-        Set<Path> computedPathSet = Sets.newLinkedHashSet();
-
-        if (loadBalancing) {
-            return setupDisjointPaths(src, dst, constraints, tunnelName, bwConstraintValue, lspType, costConstraint,
-                    srcEndPoint, dstEndPoint);
-        }
-
-        if (explicitPathInfo != null && !explicitPathInfo.isEmpty()) {
-            List<Path> finalComputedPath = computeExplicitPath(explicitPathInfo, src, dst, constraints);
-            if (finalComputedPath == null) {
-                return false;
-            }
-
-            pceStore.tunnelNameExplicitPathInfoMap(tunnelName, explicitPathInfo);
-            List<Link> links = new LinkedList<>();
-            double totalCost = 0;
-            // Add all partial computed paths
-            for (Path path : finalComputedPath) {
-                links.addAll(path.links());
-                totalCost = totalCost + path.cost();
-            }
-            computedPathSet.add(new DefaultPath(finalComputedPath.iterator().next().providerId(), links,
-                    ScalarWeight.toWeight(totalCost)));
-        } else {
-            computedPathSet = computePath(src, dst, constraints);
-        }
-
-        // NO-PATH
-        if (computedPathSet.isEmpty()) {
-            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, explicitPathInfo,
-                    loadBalancing));
-            return false;
-        }
-
-        Builder annotationBuilder = DefaultAnnotations.builder();
-        if (bwConstraintValue != 0) {
-            annotationBuilder.set(BANDWIDTH, String.valueOf(bwConstraintValue));
-        }
-        if (costConstraint != null) {
-            annotationBuilder.set(COST_TYPE, String.valueOf(costConstraint.type()));
-        }
-        annotationBuilder.set(LSP_SIG_TYPE, lspType.name());
-        annotationBuilder.set(PCE_INIT, TRUE);
-        annotationBuilder.set(DELEGATE, TRUE);
-
-        Path computedPath = computedPathSet.iterator().next();
-
-        if (lspType != WITH_SIGNALLING) {
-            /*
-             * Local LSP id which is assigned by RSVP for RSVP signalled LSPs, will be assigned by
-             * PCE for non-RSVP signalled LSPs.
-             */
-            annotationBuilder.set(LOCAL_LSP_ID, String.valueOf(getNextLocalLspId()));
-        }
-
-        // For SR-TE tunnels, call SR manager for label stack and put it inside tunnel.
-        Tunnel tunnel = new DefaultTunnel(null, srcEndPoint, dstEndPoint, MPLS, INIT, null, null,
-                                          TunnelName.tunnelName(tunnelName), computedPath,
-                                          annotationBuilder.build());
-
-        // Allocate bandwidth for all tunnels.
-        if (bwConstraintValue != 0) {
-            if (!reserveBandwidth(computedPath, bwConstraintValue, null)) {
-                pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints,
-                        lspType, explicitPathInfo, loadBalancing));
-                return false;
-            }
-        }
-
-        TunnelId tunnelId = tunnelService.setupTunnel(appId, src, tunnel, computedPath);
-        if (tunnelId == null) {
-            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, explicitPathInfo,
-                    loadBalancing));
-
-            if (bwConstraintValue != 0) {
-                computedPath.links().forEach(ln -> bandwidthMgmtService.releaseLocalReservedBw(LinkKey.linkKey(ln),
-                        Double.parseDouble(tunnel.annotations().value(BANDWIDTH))));
-            }
-
-            return false;
-        }
-
-        if (bwConstraintValue != 0 && lspType == WITH_SIGNALLING) {
-            rsvpTunnelsWithLocalBw.add(tunnelId);
-        }
-
-        return true;
-    }
-
-    private boolean setupDisjointPaths(DeviceId src, DeviceId dst, List<Constraint> constraints, String tunnelName,
-                                       double bwConstraintValue, LspType lspType, CostConstraint costConstraint,
-                                       TunnelEndPoint srcEndPoint, TunnelEndPoint dstEndPoint) {
-        Set<DisjointPath> paths = pathService.getDisjointPaths(src, dst, weight(constraints));
-
-        // NO-PATH
-        if (paths.isEmpty()) {
-            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, null, true));
-            return false;
-        }
-
-        DisjointPath path = paths.iterator().next();
-
-        Builder annotationBuilder = DefaultAnnotations.builder();
-        double bw = 0;
-        if (bwConstraintValue != 0) {
-            //TODO: BW needs to be divided by 2 :: bwConstraintValue/2
-            bw = bwConstraintValue / 2;
-            annotationBuilder.set(BANDWIDTH, String.valueOf(bw));
-        }
-        if (costConstraint != null) {
-            annotationBuilder.set(COST_TYPE, String.valueOf(costConstraint.type()));
-        }
-        annotationBuilder.set(LSP_SIG_TYPE, lspType.name());
-        annotationBuilder.set(PCE_INIT, TRUE);
-        annotationBuilder.set(DELEGATE, TRUE);
-        annotationBuilder.set(LOAD_BALANCING_PATH_NAME, tunnelName);
-
-        //Path computedPath = computedPathSet.iterator().next();
-
-        if (lspType != WITH_SIGNALLING) {
-            /*
-             * Local LSP id which is assigned by RSVP for RSVP signalled LSPs, will be assigned by
-             * PCE for non-RSVP signalled LSPs.
-             */
-            annotationBuilder.set(LOCAL_LSP_ID, String.valueOf(getNextLocalLspId()));
-        }
-
-        //Generate different tunnel name for disjoint paths
-        String tunnel1 = (new StringBuilder()).append(tunnelName).append("_1").toString();
-        String tunnel2 = (new StringBuilder()).append(tunnelName).append("_2").toString();
-
-        // For SR-TE tunnels, call SR manager for label stack and put it inside tunnel.
-        Tunnel tunnelPrimary = new DefaultTunnel(null, srcEndPoint, dstEndPoint, MPLS, INIT, null, null,
-                TunnelName.tunnelName(tunnel1), path.primary(),
-                annotationBuilder.build());
-
-        Tunnel tunnelBackup = new DefaultTunnel(null, srcEndPoint, dstEndPoint, MPLS, INIT, null, null,
-                TunnelName.tunnelName(tunnel2), path.backup(),
-                annotationBuilder.build());
-
-        // Allocate bandwidth.
-        if (bwConstraintValue != 0) {
-            if (!reserveBandwidth(path.primary(), bw, null)) {
-                pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnel1, constraints,
-                                                           lspType, null, true));
-                return false;
-            }
-
-            if (!reserveBandwidth(path.backup(), bw, null)) {
-                //Release bandwidth resource for tunnel1
-                if (bwConstraintValue != 0) {
-                    path.primary().links().forEach(ln ->
-                                         bandwidthMgmtService.releaseLocalReservedBw(LinkKey.linkKey(ln),
-                                         Double.parseDouble(tunnelPrimary.annotations().value(BANDWIDTH))));
-                }
-
-                pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnel2, constraints,
-                                                           lspType, null, true));
-                return false;
-            }
-        }
-
-        TunnelId tunnelId1 = tunnelService.setupTunnel(appId, src, tunnelPrimary, path.primary());
-        if (tunnelId1 == null) {
-            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, null, true));
-
-            if (bwConstraintValue != 0) {
-                path.primary().links().forEach(ln -> bandwidthMgmtService.releaseLocalReservedBw(LinkKey.linkKey(ln),
-                                                   Double.parseDouble(tunnelPrimary.annotations().value(BANDWIDTH))));
-            }
-
-            return false;
-        }
-
-        TunnelId tunnelId2 = tunnelService.setupTunnel(appId, src, tunnelBackup, path.backup());
-        if (tunnelId2 == null) {
-            //Release 1st tunnel
-            releasePath(tunnelId1);
-
-            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, null, true));
-
-            if (bwConstraintValue != 0) {
-                path.backup().links().forEach(ln -> bandwidthMgmtService.releaseLocalReservedBw(LinkKey.linkKey(ln),
-                                                    Double.parseDouble(tunnelBackup.annotations().value(BANDWIDTH))));
-            }
-
-            return false;
-        }
-
-        pceStore.addLoadBalancingTunnelIdsInfo(tunnelName, tunnelId1, tunnelId2);
-        //pceStore.addDisjointPathInfo(tunnelName, path);
-        return true;
-    }
-
-    @Override
-    public boolean updatePath(TunnelId tunnelId, List<Constraint> constraints) {
-        checkNotNull(tunnelId);
-        Set<Path> computedPathSet = Sets.newLinkedHashSet();
-        Tunnel tunnel = tunnelService.queryTunnel(tunnelId);
-
-        if (tunnel == null) {
-            return false;
-        }
-
-        if (tunnel.type() != MPLS || FALSE.equalsIgnoreCase(tunnel.annotations().value(DELEGATE))) {
-            // Only delegated LSPs can be updated.
-            return false;
-        }
-
-        List<Link> links = tunnel.path().links();
-        String lspSigType = tunnel.annotations().value(LSP_SIG_TYPE);
-        double bwConstraintValue = 0;
-        String costType = null;
-        SharedBandwidthConstraint shBwConstraint = null;
-        PceBandwidthConstraint bwConstraint = null;
-        CostConstraint costConstraint = null;
-
-        if (constraints != null) {
-            // Call path computation in shared bandwidth mode.
-            Iterator<Constraint> iterator = constraints.iterator();
-            while (iterator.hasNext()) {
-                Constraint constraint = iterator.next();
-                if (constraint instanceof PceBandwidthConstraint) {
-                    bwConstraint = (PceBandwidthConstraint) constraint;
-                    bwConstraintValue = bwConstraint.bandwidth().bps();
-                } else if (constraint instanceof CostConstraint) {
-                    costConstraint = (CostConstraint) constraint;
-                    costType = costConstraint.type().name();
-                }
-            }
-
-            // Remove and keep the cost constraint at the end of the list of constraints.
-            if (costConstraint != null) {
-                constraints.remove(costConstraint);
-            }
-
-            Bandwidth existingBwValue = null;
-            String existingBwAnnotation = tunnel.annotations().value(BANDWIDTH);
-            if (existingBwAnnotation != null) {
-                existingBwValue = Bandwidth.bps(Double.parseDouble(existingBwAnnotation));
-
-                /*
-                 * The computation is a shared bandwidth constraint based, so need to remove bandwidth constraint which
-                 * has been utilized to create shared bandwidth constraint.
-                 */
-                if (bwConstraint != null) {
-                    constraints.remove(bwConstraint);
-                }
-            }
-
-            if (existingBwValue != null) {
-                if (bwConstraint == null) {
-                    bwConstraintValue = existingBwValue.bps();
-                }
-                //If bandwidth constraints not specified , take existing bandwidth for shared bandwidth calculation
-                shBwConstraint = bwConstraint != null ? new SharedBandwidthConstraint(links,
-                        existingBwValue, bwConstraint.bandwidth()) : new SharedBandwidthConstraint(links,
-                        existingBwValue, existingBwValue);
-
-                constraints.add(shBwConstraint);
-            }
-        } else {
-            constraints = new LinkedList<>();
-        }
-
-        constraints.add(CapabilityConstraint.of(CapabilityType.valueOf(lspSigType)));
-        if (costConstraint != null) {
-            constraints.add(costConstraint);
-        } else {
-            //Take cost constraint from old tunnel if it is not specified in update flow
-            costType = tunnel.annotations().value(COST_TYPE);
-            costConstraint = CostConstraint.of(CostConstraint.Type.valueOf(costType));
-            constraints.add(costConstraint);
-        }
-
-        List<ExplicitPathInfo> explicitPathInfo = pceStore
-                .getTunnelNameExplicitPathInfoMap(tunnel.tunnelName().value());
-        if (explicitPathInfo != null) {
-            List<Path> finalComputedPath = computeExplicitPath(explicitPathInfo,
-                    tunnel.path().src().deviceId(), tunnel.path().dst().deviceId(),
-                    constraints);
-
-            if (finalComputedPath == null) {
-                return false;
-            }
-
-            List<Link> totalLinks = new LinkedList<>();
-            double totalCost = 0;
-            //Add all partial computed paths
-            for (Path path : finalComputedPath) {
-                totalLinks.addAll(path.links());
-                totalCost = totalCost + path.cost();
-            }
-            computedPathSet.add(new DefaultPath(finalComputedPath.iterator().next().providerId(),
-                    totalLinks, ScalarWeight.toWeight(totalCost)));
-        } else {
-            computedPathSet = computePath(tunnel.path().src().deviceId(), tunnel.path().dst().deviceId(),
-                    constraints);
-        }
-
-        // NO-PATH
-        if (computedPathSet.isEmpty()) {
-            return false;
-        }
-
-        Builder annotationBuilder = DefaultAnnotations.builder();
-        annotationBuilder.set(BANDWIDTH, String.valueOf(bwConstraintValue));
-        if (costType != null) {
-            annotationBuilder.set(COST_TYPE, costType);
-        }
-        annotationBuilder.set(LSP_SIG_TYPE, lspSigType);
-        annotationBuilder.set(PCE_INIT, TRUE);
-        annotationBuilder.set(DELEGATE, TRUE);
-        annotationBuilder.set(PLSP_ID, tunnel.annotations().value(PLSP_ID));
-        annotationBuilder.set(PCC_TUNNEL_ID, tunnel.annotations().value(PCC_TUNNEL_ID));
-
-        Path computedPath = computedPathSet.iterator().next();
-        LspType lspType = LspType.valueOf(lspSigType);
-        long localLspId = 0;
-        if (lspType != WITH_SIGNALLING) {
-            /*
-             * Local LSP id which is assigned by RSVP for RSVP signalled LSPs, will be assigned by
-             * PCE for non-RSVP signalled LSPs.
-             */
-            localLspId = getNextLocalLspId();
-            annotationBuilder.set(LOCAL_LSP_ID, String.valueOf(localLspId));
-        }
-
-        Tunnel updatedTunnel = new DefaultTunnel(null, tunnel.src(), tunnel.dst(), MPLS, INIT, null, null,
-                                                 tunnel.tunnelName(), computedPath,
-                                                 annotationBuilder.build());
-
-        // Allocate shared bandwidth for all tunnels.
-        if (bwConstraintValue != 0) {
-            if (!reserveBandwidth(computedPath, bwConstraintValue, shBwConstraint)) {
-                return false;
-            }
-        }
-
-        TunnelId updatedTunnelId = tunnelService.setupTunnel(appId, links.get(0).src().deviceId(), updatedTunnel,
-                                                             computedPath);
-
-        if (updatedTunnelId == null) {
-            if (bwConstraintValue != 0) {
-                releaseSharedBwForNewTunnel(computedPath, bwConstraintValue, shBwConstraint);
-            }
-            return false;
-        }
-
-        if (bwConstraintValue != 0 && lspType == WITH_SIGNALLING) {
-            rsvpTunnelsWithLocalBw.add(updatedTunnelId);
-        }
-
-        return true;
-    }
-
-    @Override
-    public boolean releasePath(TunnelId tunnelId) {
-        checkNotNull(tunnelId);
-        // 1. Query Tunnel from Tunnel manager.
-        Tunnel tunnel = tunnelService.queryTunnel(tunnelId);
-
-        if (tunnel == null) {
-            return false;
-        }
-
-        // 2. Call tunnel service.
-        return tunnelService.downTunnel(appId, tunnel.tunnelId());
-    }
-
-    @Override
-    public boolean releasePath(String loadBalancingPathName) {
-        checkNotNull(loadBalancingPathName);
-
-        List<TunnelId> tunnelIds = pceStore.getLoadBalancingTunnelIds(loadBalancingPathName);
-        if (tunnelIds != null && !tunnelIds.isEmpty()) {
-            for (TunnelId id : tunnelIds) {
-                if (!tunnelService.downTunnel(appId, id)) {
-                    return false;
-                }
-            }
-
-            //pceStore.removeDisjointPathInfo(loadBalancedPathName);
-            pceStore.removeLoadBalancingTunnelIdsInfo(loadBalancingPathName);
-            return true;
-        }
-
-        return false;
-    }
-
-    @Override
-    public Iterable<Tunnel> queryAllPath() {
-        return tunnelService.queryTunnel(MPLS);
-    }
-
-    @Override
-    public Tunnel queryPath(TunnelId tunnelId) {
-        return tunnelService.queryTunnel(tunnelId);
-    }
-
-    private boolean releaseSharedBwForNewTunnel(Path computedPath, double bandwidthConstraint,
-                                                SharedBandwidthConstraint shBwConstraint) {
-        checkNotNull(computedPath);
-        double bwToAllocate;
-
-        Double additionalBwValue = null;
-        if (shBwConstraint != null) {
-            additionalBwValue = ((bandwidthConstraint - shBwConstraint.sharedBwValue().bps()) <= 0) ? null
-                    : (bandwidthConstraint - shBwConstraint.sharedBwValue().bps());
-        }
-
-        for (Link link : computedPath.links()) {
-            bwToAllocate = 0;
-            if ((shBwConstraint != null) && (shBwConstraint.links().contains(link))) {
-                if (additionalBwValue != null) {
-                    bwToAllocate = additionalBwValue;
-                }
-            } else {
-                bwToAllocate = bandwidthConstraint;
-            }
-
-            if (bwToAllocate != 0) {
-                bandwidthMgmtService.releaseLocalReservedBw(LinkKey.linkKey(link), bwToAllocate);
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Returns the next local LSP identifier to be used either by getting from
-     * freed list if available otherwise generating a new one.
-     *
-     * @return value of local LSP identifier
-     */
-    private synchronized short getNextLocalLspId() {
-        // If there is any free id use it. Otherwise generate new id.
-        if (localLspIdFreeList.isEmpty()) {
-            return (short) localLspIdIdGen.getNewId();
-        }
-        Iterator<Short> it = localLspIdFreeList.iterator();
-        Short value = it.next();
-        localLspIdFreeList.remove(value);
-        return value;
-    }
-
-    protected class TeConstraintBasedLinkWeight implements LinkWeigher {
-
-        private final List<Constraint> constraints;
-
-        /**
-         * Creates a new edge-weight function capable of evaluating links
-         * on the basis of the specified constraints.
-         *
-         * @param constraints path constraints
-         */
-        public TeConstraintBasedLinkWeight(List<Constraint> constraints) {
-            if (constraints == null) {
-                this.constraints = Collections.emptyList();
-            } else {
-                this.constraints = ImmutableList.copyOf(constraints);
-            }
-        }
-
-        @Override
-        public Weight getInitialWeight() {
-            return ScalarWeight.toWeight(0.0);
-        }
-
-        @Override
-        public Weight getNonViableWeight() {
-            return ScalarWeight.toWeight(0.0);
-        }
-
-        @Override
-        public Weight weight(TopologyEdge edge) {
-            if (!constraints.iterator().hasNext()) {
-                //Takes default cost/hopcount as 1 if no constraints specified
-                return ScalarWeight.toWeight(1.0);
-            }
-
-            Iterator<Constraint> it = constraints.iterator();
-            double cost = 1;
-
-            //If any constraint fails return -1 also value of cost returned from cost constraint can't be negative
-            while (it.hasNext() && cost > 0) {
-                Constraint constraint = it.next();
-                if (constraint instanceof CapabilityConstraint) {
-                    cost = ((CapabilityConstraint) constraint).isValidLink(edge.link(), deviceService,
-                                                                           netCfgService) ? 1 : -1;
-                } else if (constraint instanceof PceBandwidthConstraint) {
-                    cost = ((PceBandwidthConstraint) constraint).isValidLink(edge.link(),
-                            bandwidthMgmtService) ? 1 : -1;
-                } else if (constraint instanceof SharedBandwidthConstraint) {
-                    cost = ((SharedBandwidthConstraint) constraint).isValidLink(edge.link(),
-                            bandwidthMgmtService) ? 1 : -1;
-                } else if (constraint instanceof CostConstraint) {
-                    cost = ((CostConstraint) constraint).isValidLink(edge.link(), netCfgService);
-                } else {
-                    cost = constraint.cost(edge.link(), null);
-                }
-            }
-            return ScalarWeight.toWeight(cost);
-        }
-    }
-
-    //TODO: annotations used for temporarily later projection/network config will be used
-    private class InternalTopologyListener implements TopologyListener {
-       @Override
-        public void event(TopologyEvent event) {
-             event.reasons().forEach(e -> {
-                //If event type is link removed, get the impacted tunnel
-                if (e instanceof LinkEvent) {
-                    LinkEvent linkEvent = (LinkEvent) e;
-                    if (linkEvent.type() == LinkEvent.Type.LINK_REMOVED) {
-                        tunnelService.queryTunnel(MPLS).forEach(t -> {
-                                if (t.path().links().contains((e.subject()))) {
-                                    // Check whether this ONOS instance is master for ingress device if yes,
-                                    // recompute and send update
-                                    checkForMasterAndUpdateTunnel(t.path().src().deviceId(), t);
-                                }
-                        });
-                    }
-                }
-                });
-        }
-    }
-
-    private boolean checkForMasterAndUpdateTunnel(DeviceId src, Tunnel tunnel) {
-        /**
-         * Master of ingress node will recompute and also delegation flag must be set.
-         */
-        if (mastershipService.isLocalMaster(src)
-                && Boolean.valueOf(tunnel.annotations().value(DELEGATE)) != null) {
-            LinkedList<Constraint> constraintList = new LinkedList<>();
-
-            if (tunnel.annotations().value(BANDWIDTH) != null) {
-                //Requested bandwidth will be same as previous allocated bandwidth for the tunnel
-                PceBandwidthConstraint localConst = new PceBandwidthConstraint(Bandwidth.bps(Double.parseDouble(tunnel
-                        .annotations().value(BANDWIDTH))));
-                constraintList.add(localConst);
-            }
-            if (tunnel.annotations().value(COST_TYPE) != null) {
-                constraintList.add(CostConstraint.of(CostConstraint.Type.valueOf(tunnel.annotations().value(
-                        COST_TYPE))));
-            }
-
-            /*
-             * If tunnel was UP after recomputation failed then store failed path in PCE store send PCIntiate(remove)
-             * and If tunnel is failed and computation fails nothing to do because tunnel status will be same[Failed]
-             */
-            if (!updatePath(tunnel.tunnelId(), constraintList) && !tunnel.state().equals(Tunnel.State.FAILED)) {
-                // If updation fails store in PCE store as failed path
-                // then PCInitiate (Remove)
-                pceStore.addFailedPathInfo(new PcePathInfo(tunnel.path().src().deviceId(), tunnel
-                        .path().dst().deviceId(), tunnel.tunnelName().value(), constraintList,
-                        LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE)),
-                         pceStore.getTunnelNameExplicitPathInfoMap(tunnel.tunnelName().value()),
-                        tunnel.annotations().value(LOAD_BALANCING_PATH_NAME) != null ? true : false));
-                //Release that tunnel calling PCInitiate
-                releasePath(tunnel.tunnelId());
-            }
-        }
-
-        return false;
-    }
-
-     // Allocates the bandwidth locally for PCECC tunnels.
-    private boolean reserveBandwidth(Path computedPath, double bandwidthConstraint,
-                                  SharedBandwidthConstraint shBwConstraint) {
-        checkNotNull(computedPath);
-        Resource resource = null;
-        double bwToAllocate = 0;
-        Map<Link, Double> linkMap = new HashMap<>();
-
-        /**
-         * Shared bandwidth sub-case : Lesser bandwidth required than original -
-         * No reservation required.
-         */
-        Double additionalBwValue = null;
-        if (shBwConstraint != null) {
-            additionalBwValue = ((bandwidthConstraint - shBwConstraint.sharedBwValue().bps()) <= 0) ? null
-                : (bandwidthConstraint - shBwConstraint.sharedBwValue().bps());
-        }
-
-        Optional<ResourceAllocation> resAlloc = null;
-        for (Link link : computedPath.links()) {
-            bwToAllocate = 0;
-            if ((shBwConstraint != null) && (shBwConstraint.links().contains(link))) {
-                if (additionalBwValue != null) {
-                    bwToAllocate = additionalBwValue;
-                }
-            } else {
-                bwToAllocate = bandwidthConstraint;
-            }
-
-            /**
-             *  In shared bandwidth cases, where new BW is lesser than old BW, it
-             *  is not required to allocate anything.
-             */
-            if (bwToAllocate != 0) {
-                if (!bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link.src(), link.dst()),
-                        bwToAllocate)) {
-                    // If allocation for any link fails, then release the partially allocated bandwidth
-                    // for all links allocated
-                    linkMap.forEach((ln, aDouble) -> bandwidthMgmtService
-                                                     .releaseLocalReservedBw(LinkKey.linkKey(ln), aDouble));
-                    return false;
-                }
-
-                linkMap.put(link, bwToAllocate);
-            }
-        }
-
-        return true;
-    }
-
-    /*
-     * Deallocates the bandwidth which is reserved locally for PCECC tunnels.
-     */
-    private void releaseBandwidth(Tunnel tunnel) {
-        // Between same source and destination, search the tunnel with same symbolic path name.
-        Collection<Tunnel> tunnelQueryResult = tunnelService.queryTunnel(tunnel.src(), tunnel.dst());
-        Tunnel newTunnel = null;
-        for (Tunnel tunnelObj : tunnelQueryResult) {
-            if (tunnel.tunnelName().value().equals(tunnelObj.tunnelName().value())) {
-                newTunnel = tunnelObj;
-                break;
-            }
-        }
-
-        // Even if one link is shared, the bandwidth release should happen based on shared mechanism.
-        boolean isLinkShared = false;
-        if (newTunnel != null) {
-            for (Link link : tunnel.path().links()) {
-                if (newTunnel.path().links().contains(link)) {
-                    isLinkShared = true;
-                    break;
-                }
-            }
-        }
-
-        if (isLinkShared) {
-            releaseSharedBandwidth(newTunnel, tunnel);
-            return;
-        }
-
-        tunnel.path().links().forEach(tn -> bandwidthMgmtService.releaseLocalReservedBw(LinkKey.linkKey(tn),
-                Double.parseDouble(tunnel.annotations().value(BANDWIDTH))));
-    }
-
-    /**
-     *  Re-allocates the bandwidth for the tunnel for which the bandwidth was
-     *  allocated in shared mode initially.
-     */
-    private synchronized void releaseSharedBandwidth(Tunnel newTunnel, Tunnel oldTunnel) {
-
-        boolean isAllocate = false;
-        Double oldTunnelBw = Double.parseDouble(oldTunnel.annotations().value(BANDWIDTH));
-        Double newTunnelBw = Double.parseDouble(newTunnel.annotations().value(BANDWIDTH));
-
-        if (newTunnelBw > oldTunnelBw) {
-            isAllocate = true;
-        }
-
-        for (Link link : newTunnel.path().links()) {
-            if (oldTunnel.path().links().contains(link)) {
-                if (!isAllocate) {
-                    bandwidthMgmtService.releaseLocalReservedBw(LinkKey.linkKey(link),
-                            oldTunnelBw - newTunnelBw);
-                }
-            } else {
-                bandwidthMgmtService.releaseLocalReservedBw(LinkKey.linkKey(link), oldTunnelBw);
-            }
-        }
-    }
-
-    // Listens on tunnel events.
-    private class InnerTunnelListener implements TunnelListener {
-        @Override
-        public void event(TunnelEvent event) {
-            // Event gets generated with old tunnel object.
-            Tunnel tunnel = event.subject();
-            if (tunnel.type() != MPLS) {
-                return;
-            }
-
-            LspType lspType = LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE));
-            String tunnelBandwidth = tunnel.annotations().value(BANDWIDTH);
-            double bwConstraintValue = 0;
-            if (tunnelBandwidth != null) {
-                bwConstraintValue = Double.parseDouble(tunnelBandwidth);
-            }
-
-            switch (event.type()) {
-            case TUNNEL_UPDATED:
-                if (rsvpTunnelsWithLocalBw.contains(tunnel.tunnelId())) {
-                    releaseBandwidth(event.subject());
-                        rsvpTunnelsWithLocalBw.remove(tunnel.tunnelId());
-                }
-
-                if (tunnel.state() == UNSTABLE) {
-                    /*
-                     * During LSP DB sync if PCC doesn't report LSP which was PCE initiated, it's state is turned into
-                     * unstable so that it can be setup again. Add into failed path store so that it can be recomputed
-                     * and setup while global reoptimization.
-                     */
-
-                    List<Constraint> constraints = new LinkedList<>();
-                    String bandwidth = tunnel.annotations().value(BANDWIDTH);
-                    if (bandwidth != null) {
-                        constraints.add(new PceBandwidthConstraint(Bandwidth
-                                .bps(Double.parseDouble(bandwidth))));
-                    }
-
-                    String costType = tunnel.annotations().value(COST_TYPE);
-                    if (costType != null) {
-                        CostConstraint costConstraint = new CostConstraint(CostConstraint.Type.valueOf(costType));
-                        constraints.add(costConstraint);
-                    }
-
-                    constraints.add(CapabilityConstraint
-                            .of(CapabilityType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE))));
-
-                    List<Link> links = tunnel.path().links();
-                    pceStore.addFailedPathInfo(new PcePathInfo(links.get(0).src().deviceId(),
-                                                                  links.get(links.size() - 1).dst().deviceId(),
-                                                                  tunnel.tunnelName().value(), constraints, lspType,
-                                                                  pceStore.getTunnelNameExplicitPathInfoMap(tunnel
-                                                                          .tunnelName().value()), tunnel.annotations()
-                            .value(LOAD_BALANCING_PATH_NAME) != null ? true : false));
-                }
-
-                break;
-
-            case TUNNEL_REMOVED:
-                if (lspType != WITH_SIGNALLING) {
-                    localLspIdFreeList.add(Short.valueOf(tunnel.annotations().value(LOCAL_LSP_ID)));
-                }
-                // If not zero bandwidth, and delegated (initiated LSPs will also be delegated).
-                if (bwConstraintValue != 0 && mastershipService.getLocalRole(tunnel.path().src()
-                        .deviceId()) == MastershipRole.MASTER) {
-                    if (lspType != WITH_SIGNALLING) {
-                        releaseBandwidth(tunnel);
-                    }
-                }
-
-                /*if (pceStore.getTunnelInfo(tunnel.tunnelId()) != null) {
-                    pceStore.removeTunnelInfo(tunnel.tunnelId());
-                }*/
-
-                break;
-
-            default:
-                break;
-
-            }
-            return;
-        }
-    }
-
-    @Override
-    public List<ExplicitPathInfo> explicitPathInfoList(String tunnelName) {
-        return pceStore.getTunnelNameExplicitPathInfoMap(tunnelName);
-    }
-
-    @Override
-    public List<TunnelId> queryLoadBalancingPath(String pathName) {
-        return pceStore.getLoadBalancingTunnelIds(pathName);
-    }
-
-    //Computes path from tunnel store and also path failed to setup.
-    private void callForOptimization() {
-        //Recompute the LSPs which it was delegated [LSPs stored in PCE store (failed paths)]
-        for (PcePathInfo failedPathInfo : pceStore.getFailedPathInfos()) {
-            checkForMasterAndSetupPath(failedPathInfo);
-        }
-
-        //Recompute the LSPs for which it was delegated [LSPs stored in tunnel store]
-        tunnelService.queryTunnel(MPLS).forEach(t -> {
-        checkForMasterAndUpdateTunnel(t.path().src().deviceId(), t);
-        });
-    }
-
-    private boolean checkForMasterAndSetupPath(PcePathInfo failedPathInfo) {
-        /**
-         * Master of ingress node will setup the path failed stored in PCE store.
-         */
-        if (mastershipService.isLocalMaster(failedPathInfo.src())) {
-            if (setupPath(failedPathInfo.src(), failedPathInfo.dst(), failedPathInfo.name(),
-                    failedPathInfo.constraints(), failedPathInfo.lspType(), failedPathInfo.explicitPathInfo())) {
-                // If computation is success remove that path
-                pceStore.removeFailedPathInfo(failedPathInfo);
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    //Timer to call global optimization
-    private class GlobalOptimizationTimer implements Runnable {
-
-        public GlobalOptimizationTimer() {
-        }
-
-        @Override
-        public void run() {
-            callForOptimization();
-        }
-    }
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PcePath.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PcePath.java
deleted file mode 100644
index cfe7e87..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PcePath.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pceservice;
-
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.net.intent.Constraint;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * Abstraction of an entity which provides functionalities of pce path.
- */
-public interface PcePath {
-
-    /**
-     * Returns the attribute path id.
-     *
-     * @return path id
-     */
-    TunnelId id();
-
-    /**
-     * Sets the attribute path id.
-     *
-     * @param id path id
-     */
-    void id(TunnelId id);
-
-    /**
-     * Returns the attribute ingress.
-     *
-     * @return source
-     */
-    String source();
-
-    /**
-     * Sets the attribute ingress.
-     *
-     * @param src pce source
-     */
-    void source(String src);
-
-    /**
-     * Returns the attribute egress.
-     *
-     * @return destination
-     */
-    String destination();
-
-    /**
-     * Sets the attribute egress.
-     *
-     * @param dst pce destination.
-     */
-    void destination(String dst);
-
-    /**
-     * Returns the attribute lspType.
-     *
-     * @return lspType
-     */
-    LspType lspType();
-
-    /**
-     * Returns the attribute symbolic-path-name.
-     *
-     * @return symbolic-path-name
-     */
-    String name();
-
-    /**
-     * Returns the attribute cost constraint.
-     *
-     * @return cost constraint
-     */
-    Constraint costConstraint();
-
-    /**
-     * Returns the attribute bandwidth constraint.
-     *
-     * @return bandwidth constraint
-     */
-    Constraint bandwidthConstraint();
-
-    /**
-     * Returns the list of explicit path objects.
-     *
-     * @return list of explicit path objects
-     */
-    Collection<ExplicitPathInfo> explicitPathInfo();
-
-    /**
-     * Copies only non-null or non-zero member variables.
-     *
-     * @param id path-id
-     * @return pce-path
-     */
-    PcePath copy(PcePath id);
-
-    /**
-     * Builder for pce path.
-     */
-    interface Builder {
-
-        /**
-         * Returns the builder object of path id.
-         *
-         * @param id path id
-         * @return builder object of path id
-         */
-        Builder id(String id);
-
-        /**
-         * Returns the builder object of ingress.
-         *
-         * @param source ingress
-         * @return builder object of ingress
-         */
-        Builder source(String source);
-
-        /**
-         * Returns the builder object of egress.
-         *
-         * @param destination egress
-         * @return builder object of egress
-         */
-        Builder destination(String destination);
-
-        /**
-         * Returns the builder object of lspType.
-         *
-         * @param lspType lsp type
-         * @return builder object of lsp type
-         */
-        Builder lspType(String lspType);
-
-        /**
-         * Returns the builder object of symbolic-path-name.
-         *
-         * @param n symbolic-path-name
-         * @return builder object of symbolic-path-name
-         */
-        Builder name(String n);
-
-        /**
-         * Returns the builder object of cost constraint.
-         *
-         * @param cost constraint
-         * @return builder object of cost constraint
-         */
-        Builder costConstraint(String cost);
-
-        /**
-         * Returns the builder object of bandwidth constraint.
-         *
-         * @param bandwidth constraint
-         * @return builder object of bandwidth constraint
-         */
-        Builder bandwidthConstraint(String bandwidth);
-
-        /**
-         * Copies tunnel information to local.
-         *
-         * @param tunnel pcc tunnel
-         * @param explicitPathInfoList list of explicit path objects info
-         * @return object of pce-path
-         */
-        Builder of(Tunnel tunnel, List<ExplicitPathInfo> explicitPathInfoList);
-
-        /**
-         * Returns the builder object of ExplicitPathInfo.
-         *
-         * @param explicitPathInfo list of explicit path obj
-         * @return builder object of ExplicitPathInfo
-         */
-        Builder explicitPathInfo(Collection<ExplicitPathInfo> explicitPathInfo);
-
-        /**
-         * Builds object of pce path.
-         *
-         * @return object of pce path.
-         */
-        PcePath build();
-    }
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PcepAnnotationKeys.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PcepAnnotationKeys.java
deleted file mode 100644
index 91dca03..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PcepAnnotationKeys.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pceservice;
-
-/**
- * Collection of keys for annotation for PCEP tunnels.
- */
-public final class PcepAnnotationKeys {
-
-    /**
-     *  Prohibits instantiation.
-     */
-    private PcepAnnotationKeys() {
-    }
-
-    /**
-     * Annotation key for bandwidth.
-     * The value for this key is interpreted as Mbps.
-     */
-    public static final String BANDWIDTH = "bandwidth";
-
-    /**
-     * Annotation key for the LSP signaling type.
-     */
-    public static final String LSP_SIG_TYPE = "lspSigType";
-
-    /**
-     * Annotation key for the PCC tunnel id.
-     */
-    public static final String PCC_TUNNEL_ID = "PccTunnelId";
-
-    /**
-     * Annotation key for the LSP id assigned per tunnel per session.
-     */
-    public static final String PLSP_ID = "PLspId";
-
-    /**
-     * Annotation key for the LSP id assigned per tunnel.
-     */
-    public static final String LOCAL_LSP_ID = "localLspId";
-
-    /**
-     * Annotation key for the identification of initiated LSP.
-     */
-    public static final String PCE_INIT = "pceInit";
-
-    /**
-     * Annotation key for the cost type.
-     */
-    public static final String COST_TYPE = "costType";
-
-    /**
-     * Annotation key for the Delegation.
-     * Whether LSPs are delegated or not.
-     */
-    public static final String DELEGATE = "delegate";
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/TunnelConsumerId.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/TunnelConsumerId.java
deleted file mode 100644
index 4474b4c..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/TunnelConsumerId.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pceservice;
-
-import org.onlab.util.Identifier;
-import org.onosproject.net.resource.ResourceConsumer;
-
-import com.google.common.annotations.Beta;
-import org.onosproject.net.resource.ResourceConsumerId;
-
-/**
- * Tunnel resource consumer identifier suitable to be used as a consumer id for
- * resource allocations.
- */
-@Beta
-public final class TunnelConsumerId extends Identifier<Long> implements ResourceConsumer {
-
-    /**
-     * Creates a tunnel resource consumer identifier from the specified long value.
-     *
-     * @param value long value to be used as tunnel resource consumer id
-     * @return tunnel resource consumer identifier
-     */
-    public static TunnelConsumerId valueOf(long value) {
-        return new TunnelConsumerId(value);
-    }
-
-    /**
-     * Initializes object for serializer.
-     */
-    public TunnelConsumerId() {
-        super(0L);
-    }
-
-    /**
-     * Constructs the tunnel resource consumer id corresponding to a given long
-     * value.
-     *
-     * @param value the underlying value in long representation of this tunnel
-     *            resource consumer id
-     */
-    public TunnelConsumerId(long value) {
-        super(value);
-    }
-
-    /**
-     * Returns the backing identifier value.
-     *
-     * @return value backing identifier value
-     */
-    public long value() {
-        return identifier;
-    }
-
-    @Override
-    public String toString() {
-        return "0x" + Long.toHexString(identifier);
-    }
-
-    @Override
-    public ResourceConsumerId consumerId() {
-        return ResourceConsumerId.of(this);
-    }
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/api/PceService.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/api/PceService.java
deleted file mode 100644
index ac0a66c..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/api/PceService.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pceservice.api;
-
-import java.util.List;
-
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.intent.Constraint;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
-import org.onosproject.pce.pceservice.LspType;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-
-/**
- * Service to compute path based on constraints, release path,
- * update path with new constraints and query existing tunnels.
- */
-public interface PceService {
-
-    /**
-     * Creates new path based on constraints and LSP type.
-     *
-     * @param src source device
-     * @param dst destination device
-     * @param tunnelName name of the tunnel
-     * @param constraints list of constraints to be applied on path
-     * @param lspType type of path to be setup
-     * @return false on failure and true on successful path creation
-     */
-    boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List<Constraint> constraints, LspType lspType);
-
-    /**
-     * Creates new path based on constraints and LSP type.
-     *
-     * @param src source device
-     * @param dst destination device
-     * @param tunnelName name of the tunnel
-     * @param constraints list of constraints to be applied on path
-     * @param lspType type of path to be setup
-     * @param explicitPathInfo list of explicit path info
-     * @return false on failure and true on successful path creation
-     */
-    boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List<Constraint> constraints, LspType lspType,
-                      List<ExplicitPathInfo> explicitPathInfo);
-
-    /**
-     * Creates new path based on constraints and LSP type with load balancing option.
-     *
-     * @param src source device
-     * @param dst destination device
-     * @param tunnelName name of the tunnel
-     * @param constraints list of constraints to be applied on path
-     * @param lspType type of path to be setup
-     * @param loadBalancing load balancing option enable or not
-     * @return false on failure and true on successful path creation
-     */
-    boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List<Constraint> constraints, LspType lspType,
-                      boolean loadBalancing);
-
-    /**
-     * Creates new path based on constraints and LSP type with load balancing and explicit path options.
-     *
-     * @param src source device
-     * @param dst destination device
-     * @param tunnelName name of the tunnel
-     * @param constraints list of constraints to be applied on path
-     * @param lspType type of path to be setup
-     * @param explicitPathInfo list of explicit path info
-     * @param loadBalancing load balancing option enable or not
-     * @return false on failure and true on successful path creation
-     */
-    boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List<Constraint> constraints, LspType lspType,
-                      List<ExplicitPathInfo> explicitPathInfo, boolean loadBalancing);
-
-    /**
-     * Updates an existing path.
-     *
-     * @param tunnelId tunnel identifier
-     * @param constraints list of constraints to be applied on path
-     * @return false on failure and true on successful path update
-     */
-    boolean updatePath(TunnelId tunnelId, List<Constraint> constraints);
-
-    /**
-     * Releases an existing path.
-     *
-     * @param tunnelId tunnel identifier
-     * @return false on failure and true on successful path removal
-     */
-    boolean releasePath(TunnelId tunnelId);
-
-    /**
-     * Releases load balancing paths.
-     *
-     * @param loadBalancingPathName load balance path name
-     * @return false on failure and true on successful paths removal
-     */
-    boolean releasePath(String loadBalancingPathName);
-
-    /**
-     * Queries all paths.
-     *
-     * @return iterable of existing tunnels
-     */
-    Iterable<Tunnel> queryAllPath();
-
-    /**
-     * Queries particular path based on tunnel identifier.
-     *
-     * @param tunnelId tunnel identifier
-     * @return tunnel if path exists, otherwise null
-     */
-    Tunnel queryPath(TunnelId tunnelId);
-
-    /**
-     * Returns list of explicit path info.
-     *
-     * @param tunnelName tunnel name
-     * @return list of explicit path info
-     */
-    List<ExplicitPathInfo> explicitPathInfoList(String tunnelName);
-
-    /**
-     * Queries load balancing paths on load balance path name.
-     *
-     * @param pathName load balance path name
-     * @return list of load balancing tunnels
-     */
-    List<TunnelId> queryLoadBalancingPath(String pathName);
-}
\ No newline at end of file
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/api/package-info.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/api/package-info.java
deleted file mode 100644
index bf2225d..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/api/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * PCE service API.
- */
-package org.onosproject.pce.pceservice.api;
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/CapabilityConstraint.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/CapabilityConstraint.java
deleted file mode 100644
index c4630b8..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/CapabilityConstraint.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pceservice.constraint;
-
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.config.NetworkConfigService;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.intent.ResourceContext;
-import org.onosproject.net.intent.constraint.BooleanConstraint;
-import org.onosproject.pcep.api.DeviceCapability;
-
-import java.util.Objects;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-/**
- * Constraint that evaluates whether devices satisfies capability.
- */
-public final class CapabilityConstraint extends BooleanConstraint {
-
-    private final CapabilityType capabilityType;
-    public static final String LSRID = "lsrId";
-    public static final String TRUE = "true";
-
-    /**
-     * Represents about capability type.
-     */
-    public enum CapabilityType {
-        /**
-         * Signifies that path is created via signaling mode.
-         */
-        WITH_SIGNALLING(0),
-
-        /**
-         * Signifies that path is created via SR mode.
-         */
-        SR_WITHOUT_SIGNALLING(1),
-
-        /**
-         * Signifies that path is created via without signaling and without SR mode.
-         */
-        WITHOUT_SIGNALLING_AND_WITHOUT_SR(2);
-
-        int value;
-
-        /**
-         * Assign val with the value as the capability type.
-         *
-         * @param val capability type
-         */
-        CapabilityType(int val) {
-            value = val;
-        }
-
-        /**
-         * Returns value of capability type.
-         *
-         * @return capability type
-         */
-        public byte type() {
-            return (byte) value;
-        }
-    }
-
-    // Constructor for serialization
-    private CapabilityConstraint() {
-        capabilityType = null;
-    }
-
-    /**
-     * Creates a new capability constraint.
-     *
-     * @param capabilityType type of capability device supports
-     */
-    public CapabilityConstraint(CapabilityType capabilityType) {
-        this.capabilityType = capabilityType;
-    }
-
-    /**
-     * Creates a new capability constraint.
-     *
-     * @param capabilityType type of capability device supports
-     * @return instance of CapabilityConstraint for specified capability type
-     */
-    public static CapabilityConstraint of(CapabilityType capabilityType) {
-        return new CapabilityConstraint(capabilityType);
-    }
-
-    /**
-     * Obtains type of capability.
-     *
-     * @return type of capability
-     */
-    public CapabilityType capabilityType() {
-        return capabilityType;
-    }
-
-    /**
-     * Validates the link based on capability constraint.
-     *
-     * @param link to validate source and destination based on capability constraint
-     * @param deviceService instance of DeviceService
-     * @param netCfgService instance of NetworkConfigService
-     * @return true if link satisfies capability constraint otherwise false
-     */
-    public boolean isValidLink(Link link, DeviceService deviceService, NetworkConfigService netCfgService) {
-        if (deviceService == null || netCfgService == null) {
-            return false;
-        }
-
-        Device srcDevice = deviceService.getDevice(link.src().deviceId());
-        Device dstDevice = deviceService.getDevice(link.dst().deviceId());
-
-        //TODO: Usage of annotations are for transient solution. In future will be replaced with the
-        // network config service / Projection model.
-        // L3 device
-        if (srcDevice == null || dstDevice == null) {
-            return false;
-        }
-
-        String srcLsrId = srcDevice.annotations().value(LSRID);
-        String dstLsrId = dstDevice.annotations().value(LSRID);
-
-        DeviceCapability srcDeviceConfig = netCfgService.getConfig(DeviceId.deviceId(srcLsrId),
-                                                                       DeviceCapability.class);
-        DeviceCapability dstDeviceConfig = netCfgService.getConfig(DeviceId.deviceId(dstLsrId),
-                                                                       DeviceCapability.class);
-
-        switch (capabilityType) {
-        case WITH_SIGNALLING:
-            return true;
-        case WITHOUT_SIGNALLING_AND_WITHOUT_SR:
-            return srcDeviceConfig != null && dstDeviceConfig != null
-                    && srcDeviceConfig.localLabelCap() && dstDeviceConfig.localLabelCap();
-        case SR_WITHOUT_SIGNALLING:
-            return srcDeviceConfig != null && dstDeviceConfig != null && srcDeviceConfig.srCap()
-                    && dstDeviceConfig.srCap() && srcDeviceConfig.labelStackCap() && dstDeviceConfig.labelStackCap();
-        default:
-            return false;
-        }
-    }
-
-    @Override
-    public boolean isValid(Link link, ResourceContext context) {
-        return false;
-        //Do nothing instead using isValidLink needs device service to validate link
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(capabilityType);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj instanceof CapabilityConstraint) {
-            CapabilityConstraint other = (CapabilityConstraint) obj;
-            return Objects.equals(this.capabilityType, other.capabilityType);
-        }
-
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("capabilityType", capabilityType)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/CostConstraint.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/CostConstraint.java
deleted file mode 100644
index ce00308..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/CostConstraint.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pceservice.constraint;
-
-import org.onosproject.net.Link;
-import org.onosproject.net.LinkKey;
-import org.onosproject.net.Path;
-import org.onosproject.net.config.NetworkConfigService;
-import org.onosproject.net.intent.Constraint;
-import org.onosproject.net.intent.ResourceContext;
-import org.onosproject.pcep.api.TeLinkConfig;
-
-import java.util.Objects;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Constraint that evaluates whether cost for a link is available, if yes return cost for that link.
- */
-public final class CostConstraint implements Constraint {
-
-    /**
-     * Represents about cost types.
-     */
-    public enum Type {
-        /**
-         * Signifies that cost is IGP cost.
-         */
-        COST(1),
-
-        /**
-         * Signifies that cost is TE cost.
-         */
-        TE_COST(2);
-
-        int value;
-
-        /**
-         * Assign val with the value as the Cost type.
-         *
-         * @param val Cost type
-         */
-        Type(int val) {
-            value = val;
-        }
-
-        /**
-         * Returns value of Cost type.
-         *
-         * @return Cost type
-         */
-        public byte type() {
-            return (byte) value;
-        }
-    }
-
-    private final Type type;
-    public static final String TE_COST = "teCost";
-    public static final String COST = "cost";
-
-    // Constructor for serialization
-    private CostConstraint() {
-        this.type = null;
-    }
-
-    /**
-     * Creates a new cost constraint.
-     *
-     * @param type of a link
-     */
-    public CostConstraint(Type type) {
-        this.type = checkNotNull(type, "Type cannot be null");
-    }
-
-    /**
-     * Creates new CostConstraint with specified cost type.
-     *
-     * @param type of cost
-     * @return instance of CostConstraint
-     */
-    public static CostConstraint of(Type type) {
-        return new CostConstraint(type);
-    }
-
-    /**
-     * Returns the type of a cost specified in a constraint.
-     *
-     * @return required cost type
-     */
-    public Type type() {
-        return type;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(type);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj instanceof CostConstraint) {
-            CostConstraint other = (CostConstraint) obj;
-            return Objects.equals(this.type, other.type);
-        }
-
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("type", type)
-                .toString();
-    }
-
-    @Override
-    public double cost(Link link, ResourceContext context) {
-        return 0;
-    }
-
-    /**
-     * Validates the link based on cost type specified.
-     *
-     * @param link to validate cost type constraint
-     * @param netCfgService instance of netCfgService
-     * @return true if link satisfies cost constraint otherwise false
-     */
-    public double isValidLink(Link link, NetworkConfigService netCfgService) {
-        if (netCfgService == null) {
-            return -1;
-        }
-
-        TeLinkConfig cfg = netCfgService.getConfig(LinkKey.linkKey(link.src(), link.dst()), TeLinkConfig.class);
-        if (cfg == null) {
-            //If cost configuration absent return -1[It is not L3 device]
-            return -1;
-        }
-
-        switch (type) {
-            case COST:
-                //If IGP cost is zero then IGP cost is not assigned for that link
-                return cfg.igpCost() == 0 ? -1 : cfg.igpCost();
-
-            case TE_COST:
-                //If TE cost is zero then TE cost is not assigned for that link
-                return cfg.teCost() == 0 ? -1 : cfg.teCost();
-
-            default:
-                return -1;
-        }
-    }
-
-    @Override
-    public boolean validate(Path path, ResourceContext context) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-}
\ No newline at end of file
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/PceBandwidthConstraint.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/PceBandwidthConstraint.java
deleted file mode 100644
index cff0973..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/PceBandwidthConstraint.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.pce.pceservice.constraint;
-
-import org.onlab.util.Bandwidth;
-import org.onlab.util.DataRateUnit;
-import org.onosproject.net.Link;
-import org.onosproject.net.intent.ResourceContext;
-import org.onosproject.net.intent.constraint.BooleanConstraint;
-import org.onosproject.bandwidthmgr.api.BandwidthMgmtService;
-
-import java.util.Objects;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Constraint that evaluates links based on available pce bandwidths.
- */
-public final class PceBandwidthConstraint extends BooleanConstraint {
-
-    private final Bandwidth bandwidth;
-
-    /**
-     * Creates a new pce bandwidth constraint.
-     *
-     * @param bandwidth required bandwidth
-     */
-    public PceBandwidthConstraint(Bandwidth bandwidth) {
-        this.bandwidth = checkNotNull(bandwidth, "Bandwidth cannot be null");
-    }
-
-    /**
-     * Creates a new pce bandwidth constraint.
-     *
-     * @param v         required amount of bandwidth
-     * @param unit      {@link DataRateUnit} of {@code v}
-     * @return  {@link PceBandwidthConstraint} instance with given bandwidth requirement
-     */
-    public static PceBandwidthConstraint of(double v, DataRateUnit unit) {
-        return new PceBandwidthConstraint(Bandwidth.of(v, unit));
-    }
-
-    // Constructor for serialization
-    private PceBandwidthConstraint() {
-        this.bandwidth = null;
-    }
-
-    @Override
-    public boolean isValid(Link link, ResourceContext context) {
-        return false;
-        //Do nothing instead using isValidLink needs bandwidthMgmtService to validate link
-    }
-
-    /**
-     * Validates the link based on pce bandwidth constraint.
-     *
-     * @param link to validate pce bandwidth constraint
-     * @param bandwidthMgmtService instance of BandwidthMgmtService
-     * @return true if link satisfies pce bandwidth constraint otherwise false
-     */
-    public boolean isValidLink(Link link, BandwidthMgmtService bandwidthMgmtService) {
-        if (bandwidthMgmtService == null) {
-            return false;
-        }
-
-        return bandwidthMgmtService.isBandwidthAvailable(link, bandwidth.bps());
-
-    }
-
-    /**
-     * Returns the bandwidth required by this constraint.
-     *
-     * @return required bandwidth
-     */
-    public Bandwidth bandwidth() {
-        return bandwidth;
-    }
-
-    @Override
-    public int hashCode() {
-        return bandwidth.hashCode();
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null || getClass() != obj.getClass()) {
-            return false;
-        }
-        final PceBandwidthConstraint other = (PceBandwidthConstraint) obj;
-        return Objects.equals(this.bandwidth, other.bandwidth);
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("bandwidth", bandwidth).toString();
-    }
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/SharedBandwidthConstraint.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/SharedBandwidthConstraint.java
deleted file mode 100644
index dcd8285..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/SharedBandwidthConstraint.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pceservice.constraint;
-
-import org.onlab.util.Bandwidth;
-import org.onosproject.net.Link;
-import org.onosproject.net.intent.ResourceContext;
-import org.onosproject.net.intent.constraint.BooleanConstraint;
-import org.onosproject.bandwidthmgr.api.BandwidthMgmtService;
-
-import java.util.List;
-import java.util.Objects;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-/**
- * Constraint that evaluates whether links satisfies sharedbandwidth request.
- */
-public final class SharedBandwidthConstraint extends BooleanConstraint {
-
-    private final List<Link> links;
-    private final Bandwidth sharedBwValue;
-    private final Bandwidth requestBwValue;
-    //temporary variable declared to hold changed bandwidth value
-    private Bandwidth changedBwValue;
-
-    // Constructor for serialization
-    private SharedBandwidthConstraint() {
-        links = null;
-        sharedBwValue = null;
-        requestBwValue = null;
-    }
-
-    /**
-     * Creates a new SharedBandwidth constraint.
-     *
-     * @param links shared links
-     * @param sharedBwValue shared bandwidth of the links
-     * @param requestBwValue requested bandwidth value
-     */
-    public SharedBandwidthConstraint(List<Link> links, Bandwidth sharedBwValue, Bandwidth requestBwValue) {
-        this.links = links;
-        this.sharedBwValue = sharedBwValue;
-        this.requestBwValue = requestBwValue;
-    }
-
-    /**
-     * Creates a new SharedBandwidth constraint.
-     *
-     * @param links shared links
-     * @param sharedBwValue shared bandwidth of the links
-     * @param requestBwValue requested bandwidth value
-     * @return SharedBandwidth instance
-     */
-    public static SharedBandwidthConstraint of(List<Link> links, Bandwidth sharedBwValue, Bandwidth requestBwValue) {
-        return new SharedBandwidthConstraint(links, sharedBwValue, requestBwValue);
-    }
-
-    /**
-     * Obtains shared links.
-     *
-     * @return shared links
-     */
-    public List<Link> links() {
-        return links;
-    }
-
-    /**
-     * Obtains shared bandwidth of the links.
-     *
-     * @return shared bandwidth
-     */
-    public Bandwidth sharedBwValue() {
-        return sharedBwValue;
-    }
-
-    /**
-     * Obtains requested bandwidth value.
-     *
-     * @return requested bandwidth value
-     */
-    public Bandwidth requestBwValue() {
-        return requestBwValue;
-    }
-
-    @Override
-    public boolean isValid(Link link, ResourceContext context) {
-        return false;
-        //Do nothing instead using isValidLink needs pce service to validate link
-    }
-
-    /**
-     * Validates the link based on shared bandwidth constraint.
-     *
-     * @param link to validate shared bandwidth constraint
-     * @param bandwidthMgmtService instance of BandwidthMgmtService
-     * @return true if link satisfies shared bandwidth constraint otherwise false
-     */
-    public boolean isValidLink(Link link, BandwidthMgmtService bandwidthMgmtService) {
-        if (bandwidthMgmtService == null) {
-            return false;
-        }
-        changedBwValue = requestBwValue;
-        if (links.contains(link)) {
-            changedBwValue = requestBwValue.isGreaterThan(sharedBwValue) ? requestBwValue.subtract(sharedBwValue)
-                    : Bandwidth.bps(0);
-        }
-
-        return bandwidthMgmtService.isBandwidthAvailable(link, changedBwValue.bps());
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(requestBwValue, sharedBwValue, links);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj instanceof SharedBandwidthConstraint) {
-            SharedBandwidthConstraint other = (SharedBandwidthConstraint) obj;
-            return Objects.equals(this.requestBwValue, other.requestBwValue)
-                    && Objects.equals(this.sharedBwValue, other.sharedBwValue)
-                    && Objects.equals(this.links, other.links);
-        }
-
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("requestBwValue", requestBwValue)
-                .add("sharedBwValue", sharedBwValue)
-                .add("links", links)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/package-info.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/package-info.java
deleted file mode 100644
index 8e1d934..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Constraints for path computation for PCE service.
- */
-package org.onosproject.pce.pceservice.constraint;
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/package-info.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/package-info.java
deleted file mode 100644
index 07e0269..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * PCE service application.
- */
-package org.onosproject.pce.pceservice;
\ No newline at end of file
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/DistributedPceStore.java b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/DistributedPceStore.java
deleted file mode 100644
index 998f87e..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/DistributedPceStore.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pcestore;
-
-import com.google.common.collect.ImmutableSet;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
-import org.onosproject.pce.pceservice.LspType;
-import org.onosproject.pce.pceservice.constraint.CapabilityConstraint;
-import org.onosproject.pce.pceservice.constraint.CostConstraint;
-import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint;
-import org.onosproject.pce.pceservice.constraint.SharedBandwidthConstraint;
-import org.onosproject.pce.pcestore.api.PceStore;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.ConsistentMap;
-import org.onosproject.store.service.DistributedSet;
-import org.onosproject.store.service.Serializer;
-import org.onosproject.store.service.StorageService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-import java.util.List;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Manages the pool of available labels to devices, links and tunnels.
- */
-@Component(immediate = true, service = PceStore.class)
-public class DistributedPceStore implements PceStore {
-    private static final String PATH_INFO_NULL = "Path Info cannot be null";
-    private static final String PCECC_TUNNEL_INFO_NULL = "PCECC Tunnel Info cannot be null";
-    private static final String TUNNEL_ID_NULL = "Tunnel Id cannot be null";
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    //Mapping tunnel name with Disjoint paths
-    private ConsistentMap<String, List<TunnelId>> tunnelNameDisjoinTunnelIdInfo;
-
-    // List of Failed path info
-    private DistributedSet<PcePathInfo> failedPathSet;
-
-    // Maintains tunnel name mapped to explicit path info
-    private ConsistentMap<String, List<ExplicitPathInfo>> tunnelNameExplicitPathInfoMap;
-
-    private static final Serializer SERIALIZER = Serializer
-            .using(new KryoNamespace.Builder().register(KryoNamespaces.API)
-                    .register(PcePathInfo.class)
-                    .register(ExplicitPathInfo.class)
-                    .register(ExplicitPathInfo.Type.class)
-                    .register(CostConstraint.class)
-                    .register(CostConstraint.Type.class)
-                    .register(PceBandwidthConstraint.class)
-                    .register(SharedBandwidthConstraint.class)
-                    .register(CapabilityConstraint.class)
-                    .register(CapabilityConstraint.CapabilityType.class)
-                    .register(LspType.class)
-                    .build());
-
-    @Activate
-    protected void activate() {
-
-        failedPathSet = storageService.<PcePathInfo>setBuilder()
-                .withName("failed-path-info")
-                .withSerializer(SERIALIZER)
-                .build()
-                .asDistributedSet();
-
-        tunnelNameExplicitPathInfoMap = storageService.<String, List<ExplicitPathInfo>>consistentMapBuilder()
-                .withName("onos-pce-explicitpathinfo")
-                .withSerializer(Serializer.using(
-                        new KryoNamespace.Builder()
-                                .register(KryoNamespaces.API)
-                                .register(ExplicitPathInfo.class)
-                                .register(ExplicitPathInfo.Type.class)
-                                .build()))
-                .build();
-
-        tunnelNameDisjoinTunnelIdInfo = storageService.<String, List<TunnelId>>consistentMapBuilder()
-                .withName("onos-pce-disjointTunnelIds")
-                .withSerializer(Serializer.using(
-                        new KryoNamespace.Builder()
-                                .register(KryoNamespaces.API)
-                                .register(TunnelId.class)
-                                .build()))
-                .build();
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        log.info("Stopped");
-    }
-
-    @Override
-    public boolean existsFailedPathInfo(PcePathInfo failedPathInfo) {
-        checkNotNull(failedPathInfo, PATH_INFO_NULL);
-        return failedPathSet.contains(failedPathInfo);
-    }
-
-
-    @Override
-    public int getFailedPathInfoCount() {
-        return failedPathSet.size();
-    }
-
-    @Override
-    public Iterable<PcePathInfo> getFailedPathInfos() {
-       return ImmutableSet.copyOf(failedPathSet);
-    }
-
-
-
-    @Override
-    public void addFailedPathInfo(PcePathInfo failedPathInfo) {
-        checkNotNull(failedPathInfo, PATH_INFO_NULL);
-        failedPathSet.add(failedPathInfo);
-    }
-
-
-    @Override
-    public boolean removeFailedPathInfo(PcePathInfo failedPathInfo) {
-        checkNotNull(failedPathInfo, PATH_INFO_NULL);
-
-        if (!failedPathSet.remove(failedPathInfo)) {
-            log.error("Failed path info {} deletion has failed.", failedPathInfo.toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean tunnelNameExplicitPathInfoMap(String tunnelName, List<ExplicitPathInfo> explicitPathInfo) {
-        checkNotNull(tunnelName);
-        checkNotNull(explicitPathInfo);
-        return tunnelNameExplicitPathInfoMap.put(tunnelName, explicitPathInfo) != null ? true : false;
-    }
-
-    @Override
-    public List<ExplicitPathInfo> getTunnelNameExplicitPathInfoMap(String tunnelName) {
-        checkNotNull(tunnelName);
-        if (tunnelNameExplicitPathInfoMap.get(tunnelName) != null) {
-            return tunnelNameExplicitPathInfoMap.get(tunnelName).value();
-        }
-        return null;
-    }
-
-/*    @Override
-    public DisjointPath getDisjointPaths(String tunnelName) {
-        if (tunnelNameDisjointPathInfo.get(tunnelName) != null) {
-            return tunnelNameDisjointPathInfo.get(tunnelName).value();
-        }
-        return null;
-    }
-
-    @Override
-    public boolean addDisjointPathInfo(String tunnelName, DisjointPath path) {
-        checkNotNull(tunnelName);
-        checkNotNull(path);
-        return tunnelNameDisjointPathInfo.put(tunnelName, path) != null ? true : false;
-    }*/
-
-    @Override
-    public boolean addLoadBalancingTunnelIdsInfo(String tunnelName, TunnelId... tunnelIds) {
-        checkNotNull(tunnelName);
-        checkNotNull(tunnelIds);
-        return tunnelNameDisjoinTunnelIdInfo.put(tunnelName, Arrays.asList(tunnelIds)) != null ? true : false;
-    }
-
-    @Override
-    public List<TunnelId> getLoadBalancingTunnelIds(String tunnelName) {
-        if (tunnelNameDisjoinTunnelIdInfo.get(tunnelName) != null) {
-            return tunnelNameDisjoinTunnelIdInfo.get(tunnelName).value();
-        }
-        return null;
-    }
-
-    @Override
-    public boolean removeLoadBalancingTunnelIdsInfo(String tunnelName) {
-        if (tunnelNameDisjoinTunnelIdInfo.remove(tunnelName) == null) {
-            log.error("Failed to remove entry {} for this tunnelName in DisjointTunnelIdsInfoMap" + tunnelName);
-            return false;
-        }
-        return true;
-    }
-
- /*   @Override
-    public boolean removeDisjointPathInfo(String tunnelName) {
-        if (tunnelNameDisjointPathInfo.remove(tunnelName) == null) {
-            log.error("Failed to remove entry {} for this tunnelName in DisjointPathInfoMap", tunnelName);
-            return false;
-        }
-        return true;
-    }*/
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/PcePathInfo.java b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/PcePathInfo.java
deleted file mode 100644
index 5772969..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/PcePathInfo.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pcestore;
-
-import com.google.common.base.MoreObjects;
-
-import java.util.List;
-import java.util.Objects;
-
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.intent.Constraint;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
-import org.onosproject.pce.pceservice.LspType;
-
-/**
- * Input path information to compute CSPF path.
- * This path information will be stored in pce store and will be used later to recalculate the path.
- */
-public final class PcePathInfo {
-
-    private DeviceId src; // source path
-
-    private DeviceId dst; // destination path
-
-    private String name; // tunnel name
-
-    private List<Constraint> constraints; // list of constraints (cost, bandwidth, etc.)
-
-    private LspType lspType; // lsp type
-
-    private List<ExplicitPathInfo> explicitPathInfo; //Explicit path info to compute explicit path
-
-    private boolean loadBalancing; //load balancing option
-
-    /**
-     * Initialization of member variables.
-     *
-     * @param src source device id
-     * @param dst destination device id
-     * @param name tunnel name
-     * @param constraints list of constraints
-     * @param lspType lsp type
-     * @param explicitPathInfo explicit path info
-     * @param loadBalancing load balancing option
-     */
-    public PcePathInfo(DeviceId src,
-                    DeviceId dst,
-                    String name,
-                    List<Constraint> constraints,
-                    LspType lspType,
-                    List<ExplicitPathInfo> explicitPathInfo,
-                    boolean loadBalancing) {
-       this.src = src;
-       this.dst = dst;
-       this.name = name;
-       this.constraints = constraints;
-       this.lspType = lspType;
-       this.explicitPathInfo = explicitPathInfo;
-       this.loadBalancing = loadBalancing;
-    }
-
-    /**
-     * Initialization for serialization.
-     */
-    public PcePathInfo() {
-       this.src = null;
-       this.dst = null;
-       this.name = null;
-       this.constraints = null;
-       this.lspType = null;
-       this.explicitPathInfo = null;
-       this.loadBalancing = false;
-    }
-
-    /**
-     * Returns source device id.
-     *
-     * @return source device id
-     */
-    public DeviceId src() {
-       return src;
-    }
-
-    /**
-     * Sets source device id.
-     *
-     * @param id source device id
-     */
-    public void src(DeviceId id) {
-        this.src = id;
-    }
-
-    /**
-     * Returns destination device id.
-     *
-     * @return destination device id
-     */
-    public DeviceId dst() {
-       return dst;
-    }
-
-    /**
-     * Sets destination device id.
-     *
-     * @param id destination device id
-     */
-    public void dst(DeviceId id) {
-        this.dst = id;
-    }
-
-
-    /**
-     * Returns tunnel name.
-     *
-     * @return name
-     */
-    public String name() {
-       return name;
-    }
-
-    /**
-     * Sets tunnel name.
-     *
-     * @param name tunnel name
-     */
-    public void name(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Returns list of constraints including cost, bandwidth, etc.
-     *
-     * @return list of constraints
-     */
-    public List<Constraint> constraints() {
-       return constraints;
-    }
-
-    /**
-     * Sets list of constraints.
-     * @param constraints list of constraints
-     */
-    public void constraints(List<Constraint> constraints) {
-        this.constraints = constraints;
-    }
-
-    /**
-     * Returns lsp type.
-     *
-     * @return lsp type
-     */
-    public LspType lspType() {
-       return lspType;
-    }
-
-    /**
-     * Sets lsp type.
-     *
-     * @param lspType lsp type
-     */
-    public void lspType(LspType lspType) {
-        this.lspType = lspType;
-    }
-
-    /**
-     * Returns list of explicit path info.
-     *
-     * @return list of explicit path info
-     */
-    public List<ExplicitPathInfo> explicitPathInfo() {
-        return explicitPathInfo;
-    }
-
-    /**
-     * Sets list of explicit path info.
-     *
-     * @param explicitPathInfo list of explicit path info
-     */
-    public void explicitPathInfo(List<ExplicitPathInfo> explicitPathInfo) {
-        this.explicitPathInfo = explicitPathInfo;
-    }
-
-    /**
-     * Returns whether stored path has enabled load balancing.
-     *
-     * @return load balancing option is enable
-     */
-    public boolean isLoadBalancing() {
-        return loadBalancing;
-    }
-
-    /**
-     * Sets load balancing option is enable.
-     *
-     * @param loadBalancing load balancing option is enable
-     */
-    public void loadBalancing(boolean loadBalancing) {
-        this.loadBalancing = loadBalancing;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(src, dst, name, constraints, lspType, explicitPathInfo, loadBalancing);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof PcePathInfo) {
-            final PcePathInfo other = (PcePathInfo) obj;
-            return Objects.equals(this.src, other.src) &&
-                    Objects.equals(this.dst, other.dst) &&
-                    Objects.equals(this.name, other.name) &&
-                    Objects.equals(this.constraints, other.constraints) &&
-                    Objects.equals(this.lspType, other.lspType) &&
-                    Objects.equals(this.explicitPathInfo, other.explicitPathInfo) &&
-                    Objects.equals(this.loadBalancing, other.loadBalancing);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("Source", src)
-                .add("Destination", dst)
-                .add("Name", name)
-                .add("Constraints", constraints)
-                .add("explicitPathInfo", explicitPathInfo)
-                .add("LspType", lspType)
-                .add("loadBalancing", loadBalancing)
-                .toString();
-    }
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/api/PceStore.java b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/api/PceStore.java
deleted file mode 100644
index 5ad49999..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/api/PceStore.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pcestore.api;
-
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
-import org.onosproject.pce.pcestore.PcePathInfo;
-
-import java.util.List;
-
-/**
- * Abstraction of an entity providing pool of available labels to devices, links and tunnels.
- */
-public interface PceStore {
-
-    /**
-     * Checks whether path info is present in failed path info list.
-     *
-     * @param failedPathInfo failed path information
-     * @return success or failure
-     */
-    boolean existsFailedPathInfo(PcePathInfo failedPathInfo);
-
-    /**
-     * Retrieves the failed path info count.
-     *
-     * @return failed path info count
-     */
-    int getFailedPathInfoCount();
-
-    /**
-     * Retrieves path info collection from failed path info store.
-     *
-     * @return collection of failed path info
-     */
-    Iterable<PcePathInfo> getFailedPathInfos();
-
-    /**
-     * Stores path information into failed path info store.
-     *
-     * @param failedPathInfo failed path information
-     */
-    void addFailedPathInfo(PcePathInfo failedPathInfo);
-
-
-    /**
-     * Removes path info from failed path info store.
-     *
-     * @param failedPathInfo failed path information
-     * @return success or failure
-     */
-    boolean removeFailedPathInfo(PcePathInfo failedPathInfo);
-
-    /**
-     * Adds explicit path info to the map with corresponding tunnel name.
-     *
-     * @param tunnelName tunnel name as key
-     * @param explicitPathInfo list of explicit path objects
-     * @return whether it is added to map
-     */
-    boolean tunnelNameExplicitPathInfoMap(String tunnelName, List<ExplicitPathInfo> explicitPathInfo);
-
-    /**
-     * Gets explicit path info based on tunnel name.
-     *
-     * @param tunnelName tunnel name as key
-     * @return list of explicit path info
-     */
-    List<ExplicitPathInfo> getTunnelNameExplicitPathInfoMap(String tunnelName);
-
-    //DisjointPath getDisjointPaths(String tunnelName);
-
-    //boolean addDisjointPathInfo(String tunnelName, DisjointPath path);
-
-    /**
-     * Stores load balancing tunnels by load balance path name.
-     *
-     * @param loadBalancingPathName load balancing path name
-     * @param tunnelIds list load balancing tunnels
-     * @return success or failure
-     */
-    boolean addLoadBalancingTunnelIdsInfo(String loadBalancingPathName, TunnelId... tunnelIds);
-
-    /**
-     * Query load balancing tunnels by load balance path name.
-     *
-     * @param loadBalancingPathName load balancing path name
-     * @return list of load balancing tunnels
-     */
-    List<TunnelId> getLoadBalancingTunnelIds(String loadBalancingPathName);
-
-    /**
-     * Removes load balancing tunnel info.
-     *
-     * @param loadBalancingPathName load balancing path name
-     * @return success or failure
-     */
-    boolean removeLoadBalancingTunnelIdsInfo(String loadBalancingPathName);
-
-    //boolean removeDisjointPathInfo(String tunnelName);
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/api/package-info.java b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/api/package-info.java
deleted file mode 100644
index 1acea25..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/api/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * PCE store service API.
- */
-package org.onosproject.pce.pcestore.api;
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/package-info.java b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/package-info.java
deleted file mode 100644
index f7ad0c0..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * PCE store application.
- */
-package org.onosproject.pce.pcestore;
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/BandwidthMgmtServiceAdapter.java b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/BandwidthMgmtServiceAdapter.java
deleted file mode 100644
index 891bb18..0000000
--- a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/BandwidthMgmtServiceAdapter.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.pce.pceservice;
-
-import org.onosproject.net.Link;
-import org.onosproject.net.LinkKey;
-import org.onosproject.bandwidthmgr.api.BandwidthMgmtService;
-
-import java.util.Set;
-
-/**
- * Adapter for Bandwidth Management service.
- */
-public class BandwidthMgmtServiceAdapter implements BandwidthMgmtService {
-    @Override
-    public boolean allocLocalReservedBw(LinkKey linkkey, Double bandwidth) {
-        return false;
-    }
-
-    @Override
-    public boolean releaseLocalReservedBw(LinkKey linkkey, Double bandwidth) {
-        return false;
-    }
-
-    @Override
-    public Double getAllocatedLocalReservedBw(LinkKey linkkey) {
-        return null;
-    }
-
-    @Override
-    public boolean addUnreservedBw(LinkKey linkkey, Set<Double> bandwidth) {
-        return false;
-    }
-
-    @Override
-    public boolean removeUnreservedBw(LinkKey linkkey) {
-        return false;
-    }
-
-    @Override
-    public Set<Double> getUnreservedBw(LinkKey linkkey) {
-        return null;
-    }
-
-    @Override
-    public boolean isBandwidthAvailable(Link link, Double bandwidth) {
-        return false;
-    }
-
-    @Override
-    public Double getTeCost(LinkKey linkKey) {
-        return null;
-    }
-
-    @Override
-    public Double getAvailableBandwidth(LinkKey linkKey) {
-        return null;
-    }
-}
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/DefaultPcePathTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/DefaultPcePathTest.java
deleted file mode 100644
index 9d95e44..0000000
--- a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/DefaultPcePathTest.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pceservice;
-
-import com.google.common.collect.Lists;
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.pce.pceservice.constraint.CostConstraint;
-import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint;
-import org.onosproject.pce.pcestore.api.PceStore;
-
-import java.util.List;
-
-import static org.easymock.EasyMock.createMock;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.onosproject.pce.pceservice.PathComputationTest.D2;
-
-/**
- * Unit tests for DefaultPcePath class.
- */
-public class DefaultPcePathTest {
-    private PceStore pceStore = createMock(PceStore.class);
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        // create same two pce-path objects.
-        final String cost1 = "1";
-        final String bandwidth1 = "200";
-        final String src1 = "foo";
-        final String dst1 = "bee";
-        final String type1 = "1";
-        final String name1 = "pcc";
-        final List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-        ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D2.deviceId());
-        explicitPathInfoList.add(obj);
-        PcePath path1 = DefaultPcePath.builder()
-                .source(src1)
-                .destination(dst1)
-                .lspType(type1)
-                .name(name1)
-                .costConstraint(cost1)
-                .bandwidthConstraint(bandwidth1)
-                .explicitPathInfo(explicitPathInfoList)
-                .build();
-        path1.id(TunnelId.valueOf("1"));
-
-        // create same as above object
-        PcePath samePath1 = DefaultPcePath.builder()
-                .source(src1)
-                .destination(dst1)
-                .lspType(type1)
-                .name(name1)
-                .costConstraint(cost1)
-                .bandwidthConstraint(bandwidth1)
-                .explicitPathInfo(explicitPathInfoList)
-                .build();
-        samePath1.id(TunnelId.valueOf("1"));
-
-        // Create different pce-path object.
-        final String cost2 = "1";
-        final String bandwidth2 = "200";
-        final String src2 = "google";
-        final String dst2 = "yahoo";
-        final String type2 = "2";
-        final String name2 = "pcc2";
-
-        PcePath path2 = DefaultPcePath.builder()
-                .source(src2)
-                .destination(dst2)
-                .lspType(type2)
-                .name(name2)
-                .costConstraint(cost2)
-                .bandwidthConstraint(bandwidth2)
-                .explicitPathInfo(explicitPathInfoList)
-                .build();
-        path2.id(TunnelId.valueOf("2"));
-
-        new EqualsTester().addEqualityGroup(path1, samePath1).addEqualityGroup(path2).testEquals();
-    }
-
-    /**
-     * Checks the construction of a DefaultPcePath object.
-     */
-    @Test
-    public void testConstruction() {
-        final String cost = "1";
-        final String bandwidth = "600";
-        final String src = "indiatimes";
-        final String dst = "deccan";
-        final String type = "2";
-        final String name = "pcc4";
-        final List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-        ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D2.deviceId());
-        explicitPathInfoList.add(obj);
-        PcePath path = DefaultPcePath.builder()
-                .source(src)
-                .destination(dst)
-                .lspType(type)
-                .name(name)
-                .costConstraint(cost)
-                .bandwidthConstraint(bandwidth)
-                .explicitPathInfo(explicitPathInfoList)
-                .build();
-
-        assertThat(path.source(), is(src));
-        assertThat(path.destination(), is(dst));
-        assertThat(path.lspType(), is(LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR));
-        assertThat(path.name(), is(name));
-        CostConstraint costConstExpected = CostConstraint.of(CostConstraint.Type.values()[Integer.valueOf(cost) - 1]);
-        CostConstraint costConstActual = (CostConstraint) path.costConstraint();
-        assertThat(costConstActual.type(), is(costConstExpected.type()));
-        PceBandwidthConstraint bandwidthActual = (PceBandwidthConstraint) path.bandwidthConstraint();
-        assertThat(bandwidthActual.bandwidth().bps(), is(Double.valueOf(bandwidth)));
-    }
-}
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PathComputationTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PathComputationTest.java
deleted file mode 100644
index 2241d6d..0000000
--- a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PathComputationTest.java
+++ /dev/null
@@ -1,1436 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pceservice;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.JsonNodeFactory;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.graph.AbstractGraphPathSearch;
-import org.onlab.graph.AdjacencyListsGraph;
-import org.onlab.graph.DijkstraGraphSearch;
-import org.onlab.graph.Graph;
-import org.onlab.graph.GraphPathSearch;
-import org.onlab.graph.ScalarWeight;
-import org.onlab.graph.Weight;
-import org.onlab.packet.ChassisId;
-import org.onlab.util.Bandwidth;
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultDevice;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.DefaultPath;
-import org.onosproject.net.Device;
-import org.onosproject.net.Device.Type;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.LinkKey;
-import org.onosproject.net.Path;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.config.Config;
-import org.onosproject.net.config.ConfigApplyDelegate;
-import org.onosproject.net.config.ConfigFactory;
-import org.onosproject.net.config.NetworkConfigRegistryAdapter;
-import org.onosproject.net.device.DeviceServiceAdapter;
-import org.onosproject.net.intent.Constraint;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.topology.DefaultTopologyEdge;
-import org.onosproject.net.topology.DefaultTopologyVertex;
-import org.onosproject.net.topology.LinkWeigher;
-import org.onosproject.net.topology.TopologyEdge;
-import org.onosproject.net.topology.TopologyVertex;
-import org.onosproject.pce.pceservice.constraint.CapabilityConstraint;
-import org.onosproject.pce.pceservice.constraint.CostConstraint;
-import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint;
-import org.onosproject.pce.pceservice.constraint.SharedBandwidthConstraint;
-import org.onosproject.pcep.api.DeviceCapability;
-import org.onosproject.pcep.api.TeLinkConfig;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.ImmutableSet.of;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-import static org.onlab.graph.GraphPathSearch.ALL_PATHS;
-import static org.onosproject.core.CoreService.CORE_PROVIDER_ID;
-import static org.onosproject.net.DeviceId.deviceId;
-import static org.onosproject.net.Link.State.ACTIVE;
-import static org.onosproject.net.Link.Type.DIRECT;
-import static org.onosproject.pce.pceservice.constraint.CostConstraint.Type.COST;
-import static org.onosproject.pce.pceservice.constraint.CostConstraint.Type.TE_COST;
-
-/**
- * Test for CSPF path computation.
- */
-public class PathComputationTest {
-
-    private final MockDeviceService deviceService = new MockDeviceService();
-    private final MockNetConfigRegistryAdapter netConfigRegistry = new MockNetConfigRegistryAdapter();
-    private PceManager pceManager = new PceManager();
-    private final MockBandwidthMgmtService bandwidthMgmtService = new MockBandwidthMgmtService();
-    public static ProviderId providerId = new ProviderId("pce", "foo");
-    public static final String DEVICE1 = "D001";
-    public static final String DEVICE2 = "D002";
-    public static final String DEVICE3 = "D003";
-    public static final String DEVICE4 = "D004";
-    public static final String DEVICE5 = "D005";
-    public static final String PCEPDEVICE1 = "PD001";
-    public static final String PCEPDEVICE2 = "PD002";
-    public static final String PCEPDEVICE3 = "PD003";
-    public static final String PCEPDEVICE4 = "PD004";
-    public static final TopologyVertex D1 = new DefaultTopologyVertex(DeviceId.deviceId("D001"));
-    public static final TopologyVertex D2 = new DefaultTopologyVertex(DeviceId.deviceId("D002"));
-    public static final TopologyVertex D3 = new DefaultTopologyVertex(DeviceId.deviceId("D003"));
-    public static final TopologyVertex D4 = new DefaultTopologyVertex(DeviceId.deviceId("D004"));
-    public static final TopologyVertex D5 = new DefaultTopologyVertex(DeviceId.deviceId("D005"));
-    private static final String ANNOTATION_COST = "cost";
-    private static final String ANNOTATION_TE_COST = "teCost";
-    private static final String UNKNOWN = "unknown";
-    public static final String LSRID = "lsrId";
-    public static final String L3 = "L3";
-    public static final String PCECC_CAPABILITY = "pceccCapability";
-    public static final String SR_CAPABILITY = "srCapability";
-    public static final String LABEL_STACK_CAPABILITY = "labelStackCapability";
-
-    @Before
-    public void startUp() {
-        pceManager.deviceService = deviceService;
-        pceManager.netCfgService = netConfigRegistry;
-    }
-
-    /**
-     * Selects path computation algorithm.
-     *
-     * @return graph path search algorithm
-     */
-    public static AbstractGraphPathSearch<TopologyVertex, TopologyEdge> graphSearch() {
-        return new DijkstraGraphSearch<>();
-    }
-
-    /**
-     * Returns link for two devices.
-     *
-     * @param device source device
-     * @param port source port
-     * @param device2 destination device
-     * @param port2 destination port
-     * @return link
-     */
-    public static Link addLink(String device, long port, String device2, long port2, boolean setCost, int value) {
-        ConnectPoint src = new ConnectPoint(DeviceId.deviceId(device), PortNumber.portNumber(port));
-        ConnectPoint dst = new ConnectPoint(DeviceId.deviceId(device2), PortNumber.portNumber(port2));
-        Link curLink;
-        DefaultAnnotations.Builder annotationBuilder = DefaultAnnotations.builder();
-
-        //TODO:If cost not set cost : default value case
-        curLink = DefaultLink.builder().src(src).dst(dst).state(ACTIVE).type(DIRECT)
-                 .providerId(PathComputationTest.providerId).annotations(annotationBuilder.build()).build();
-        return curLink;
-    }
-
-    @After
-    public void tearDown() {
-        pceManager.deviceService = null;
-        pceManager.netCfgService = null;
-    }
-
-    /**
-     * Returns an edge-weight capable of evaluating links on the basis of the
-     * specified constraints.
-     *
-     * @param constraints path constraints
-     * @return edge-weight function
-     */
-    private LinkWeigher weight(List<Constraint> constraints) {
-        return new MockTeConstraintBasedLinkWeight(constraints);
-    }
-
-    private Set<Path> computePath(Link link1, Link link2, Link link3, Link link4, List<Constraint> constraints) {
-        Graph<TopologyVertex, TopologyEdge> graph = new AdjacencyListsGraph<>(of(D1, D2, D3, D4),
-                of(new DefaultTopologyEdge(D1, D2, link1),
-                   new DefaultTopologyEdge(D2, D4, link2),
-                   new DefaultTopologyEdge(D1, D3, link3),
-                   new DefaultTopologyEdge(D3, D4, link4)));
-
-        GraphPathSearch.Result<TopologyVertex, TopologyEdge> result =
-                graphSearch().search(graph, D1, D4, weight(constraints), ALL_PATHS);
-        ImmutableSet.Builder<Path> builder = ImmutableSet.builder();
-        for (org.onlab.graph.Path<TopologyVertex, TopologyEdge> path : result.paths()) {
-            builder.add(networkPath(path));
-        }
-        return builder.build();
-    }
-
-    private class MockDeviceService extends DeviceServiceAdapter {
-        List<Device> devices = new LinkedList<>();
-
-        private void addDevice(Device dev) {
-            devices.add(dev);
-        }
-
-        @Override
-        public Device getDevice(DeviceId deviceId) {
-            for (Device dev : devices) {
-                if (dev.id().equals(deviceId)) {
-                    return dev;
-                }
-            }
-            return null;
-        }
-
-        @Override
-        public Iterable<Device> getAvailableDevices() {
-            return devices;
-        }
-    }
-
-    private class MockTeConstraintBasedLinkWeight implements LinkWeigher {
-
-        private final List<Constraint> constraints;
-
-        /**
-         * Creates a new edge-weight function capable of evaluating links
-         * on the basis of the specified constraints.
-         *
-         * @param constraints path constraints
-         */
-        MockTeConstraintBasedLinkWeight(List<Constraint> constraints) {
-            if (constraints == null) {
-                this.constraints = Collections.emptyList();
-            } else {
-                this.constraints = ImmutableList.copyOf(constraints);
-            }
-        }
-
-        @Override
-        public Weight getInitialWeight() {
-            return ScalarWeight.toWeight(0.0);
-        }
-
-        @Override
-        public Weight getNonViableWeight() {
-            return ScalarWeight.NON_VIABLE_WEIGHT;
-        }
-
-        @Override
-        public Weight weight(TopologyEdge edge) {
-            if (!constraints.iterator().hasNext()) {
-                //Takes default cost/hopcount as 1 if no constraints specified
-                return ScalarWeight.toWeight(1.0);
-            }
-
-            Iterator<Constraint> it = constraints.iterator();
-            double cost = 1;
-
-            //If any constraint fails return -1 also value of cost returned from cost constraint can't be negative
-            while (it.hasNext() && cost > 0) {
-                Constraint constraint = it.next();
-                if (constraint instanceof CapabilityConstraint) {
-                    cost = ((CapabilityConstraint) constraint).isValidLink(edge.link(), deviceService,
-                            netConfigRegistry) ? 1 : -1;
-                } else if (constraint instanceof PceBandwidthConstraint) {
-                    cost = ((PceBandwidthConstraint) constraint).isValidLink(edge.link(),
-                            bandwidthMgmtService) ? 1 : -1;
-
-                } else if (constraint instanceof SharedBandwidthConstraint) {
-                    cost = ((SharedBandwidthConstraint) constraint).isValidLink(edge.link(),
-                            bandwidthMgmtService) ? 1 : -1;
-
-                } else if (constraint instanceof CostConstraint) {
-                    cost = ((CostConstraint) constraint).isValidLink(edge.link(), netConfigRegistry);
-                } else {
-                    cost = constraint.cost(edge.link(), null);
-                }
-            }
-            return ScalarWeight.toWeight(cost);
-        }
-    }
-
-    /**
-     * Returns the path in Path object format.
-     */
-    public static Path networkPath(org.onlab.graph.Path<TopologyVertex, TopologyEdge> path) {
-        List<Link> links = path.edges().stream().map(TopologyEdge::link).collect(Collectors.toList());
-        return new DefaultPath(CORE_PROVIDER_ID, links, path.cost());
-    }
-
-    public static class MockBandwidthMgmtService extends BandwidthMgmtServiceAdapter {
-        private Map<LinkKey, Double> teCost = new HashMap<>();
-        // Locally maintain unreserved bandwidth of each link.
-        private Map<LinkKey, Set<Double>> unResvBw = new HashMap<>();
-
-        // Mapping tunnel with link key with local reserved bandwidth
-        private Map<LinkKey, Double> localReservedBw = new HashMap<>();
-
-        @Override
-        public boolean allocLocalReservedBw(LinkKey linkkey, Double bandwidth) {
-            Double allocatedBw = localReservedBw.get(linkkey);
-            if (allocatedBw != null) {
-                localReservedBw.put(linkkey, (allocatedBw + bandwidth));
-            } else {
-                localReservedBw.put(linkkey, bandwidth);
-            }
-
-            return true;
-        }
-
-        @Override
-        public boolean releaseLocalReservedBw(LinkKey linkkey, Double bandwidth) {
-            Double allocatedBw = localReservedBw.get(linkkey);
-            if (allocatedBw == null || allocatedBw < bandwidth) {
-                return false;
-            }
-
-            Double releasedBw = allocatedBw - bandwidth;
-            if (releasedBw == 0.0) {
-                localReservedBw.remove(linkkey);
-            } else {
-                localReservedBw.put(linkkey, releasedBw);
-            }
-            return true;
-        }
-
-        @Override
-        public Double getAllocatedLocalReservedBw(LinkKey linkkey) {
-            return localReservedBw.get(linkkey);
-        }
-
-        @Override
-        public boolean addUnreservedBw(LinkKey linkkey, Set<Double> bandwidth) {
-            unResvBw.put(linkkey, bandwidth);
-            return true;
-        }
-
-        @Override
-        public boolean removeUnreservedBw(LinkKey linkkey) {
-            unResvBw.remove(linkkey);
-            return true;
-        }
-
-        @Override
-        public Set<Double> getUnreservedBw(LinkKey linkkey) {
-            checkNotNull(linkkey);
-            return unResvBw.get(linkkey);
-        }
-
-        @Override
-        public boolean isBandwidthAvailable(Link link, Double bandwidth) {
-            LinkKey linkKey = LinkKey.linkKey(link);
-            Double localAllocBw = getAllocatedLocalReservedBw(linkKey);
-
-            Set<Double> unResvBw = getUnreservedBw(linkKey);
-
-            Double prirZeroBw = unResvBw.iterator().next();
-            return (bandwidth <= prirZeroBw -  (localAllocBw != null ? localAllocBw : 0));
-        }
-
-        @Override
-        public Double getTeCost(LinkKey linkKey) {
-            if (teCost.get(linkKey) != null) {
-                return teCost.get(linkKey);
-            }
-            return null;
-        }
-
-        @Override
-        public Double getAvailableBandwidth(LinkKey linkKey) {
-            if (unResvBw.get(linkKey) != null && localReservedBw.get(linkKey) != null) {
-
-                return unResvBw.get(linkKey).iterator().next().doubleValue()
-                        - localReservedBw.get(linkKey).doubleValue();
-            }
-            return unResvBw.get(linkKey).iterator().next().doubleValue();
-        }
-    }
-
-    /* Mock test for network config registry. */
-    public static class MockNetConfigRegistryAdapter extends NetworkConfigRegistryAdapter {
-        private ConfigFactory cfgFactory;
-        private Map<DeviceId, DeviceCapability> classConfig = new HashMap<>();
-        private Map<LinkKey, TeLinkConfig> teLinkConfig = new HashMap<>();
-
-        @Override
-        public void registerConfigFactory(ConfigFactory configFactory) {
-            cfgFactory = configFactory;
-        }
-
-        @Override
-        public void unregisterConfigFactory(ConfigFactory configFactory) {
-            cfgFactory = null;
-        }
-
-        @Override
-        public <S, C extends Config<S>> C addConfig(S subject, Class<C> configClass) {
-            if (configClass == DeviceCapability.class) {
-                DeviceCapability devCap = new DeviceCapability();
-                classConfig.put((DeviceId) subject, devCap);
-
-                JsonNode node = new ObjectNode(new MockJsonNode());
-                ObjectMapper mapper = new ObjectMapper();
-                ConfigApplyDelegate delegate = new InternalApplyDelegate();
-                devCap.init((DeviceId) subject, null, node, mapper, delegate);
-                return (C) devCap;
-            } else if (configClass == TeLinkConfig.class) {
-                TeLinkConfig teConfig = new TeLinkConfig();
-                teLinkConfig.put((LinkKey) subject, teConfig);
-
-                JsonNode node = new ObjectNode(new MockJsonNode());
-                ObjectMapper mapper = new ObjectMapper();
-                ConfigApplyDelegate delegate = new InternalApplyDelegate();
-                teConfig.init((LinkKey) subject, null, node, mapper, delegate);
-                return (C) teConfig;
-            }
-
-            return null;
-        }
-
-        @Override
-        public <S, C extends Config<S>> void removeConfig(S subject, Class<C> configClass) {
-            if (configClass == DeviceCapability.class) {
-                classConfig.remove(subject);
-            } else if (configClass == TeLinkConfig.class) {
-                teLinkConfig.remove(subject);
-            }
-        }
-
-        @Override
-        public <S, C extends Config<S>> C getConfig(S subject, Class<C> configClass) {
-            if (configClass == DeviceCapability.class) {
-                return (C) classConfig.get(subject);
-            } else if (configClass == TeLinkConfig.class) {
-                return (C) teLinkConfig.get(subject);
-            }
-            return null;
-        }
-
-        private class MockJsonNode extends JsonNodeFactory {
-        }
-
-        // Auxiliary delegate to receive notifications about changes applied to
-        // the network configuration - by the apps.
-        private class InternalApplyDelegate implements ConfigApplyDelegate {
-            @Override
-            public void onApply(Config config) {
-                //configs.put(config.subject(), config.node());
-            }
-        }
-    }
-
-    /**
-     * All links with different costs with L1-L2 as least cost path.
-     */
-    @Test
-    public void testpathComputationCase1() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 20);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 50);
-
-        CostConstraint costConst = CostConstraint.of(COST);
-        List<Constraint> constraints = new LinkedList<>();
-        constraints.add(costConst);
-
-        TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
-        teLinkConfig.igpCost(50)
-                .apply();
-
-
-        TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
-        teLinkConfig2.igpCost(20)
-                .apply();
-
-        TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
-        teLinkConfig3.igpCost(100)
-                .apply();
-
-        TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
-        teLinkConfig4.igpCost(50)
-                .apply();
-
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-
-        List<Link> links = new LinkedList<>();
-
-        links.add(link1);
-        links.add(link2);
-
-        assertThat(paths.iterator().next().links(), is(links));
-        assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(70.0)));
-    }
-
-    /**
-     * Links with same cost 100 except link3.
-     */
-    @Test
-    public void testpathComputationCase2() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 100);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 100);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 1000);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 100);
-
-        CostConstraint costConst = CostConstraint.of(COST);
-        List<Constraint> constraints = new LinkedList<>();
-        constraints.add(costConst);
-
-        TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
-        teLinkConfig.igpCost(100)
-                .apply();
-
-
-        TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
-        teLinkConfig2.igpCost(100)
-                .apply();
-
-        TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
-        teLinkConfig3.igpCost(1000)
-                .apply();
-
-        TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
-        teLinkConfig4.igpCost(100)
-                .apply();
-
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-
-        List<Link> links = new LinkedList<>();
-        links.add(link1);
-        links.add(link2);
-
-        assertThat(paths.iterator().next().links(), is(links));
-        assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(200.0)));
-    }
-
-    /**
-     * Path which satisfy bandwidth as a constraint with 10bps.
-     */
-    @Test
-    public void testpathComputationCase3() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 20);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 50);
-
-        Set<Double> unreserved = new HashSet<>();
-        unreserved.add(new Double(50));
-
-        bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link1), unreserved);
-        bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link1), new Double(0));
-
-        bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link2), unreserved);
-        bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link2), new Double(0));
-
-        unreserved.remove(new Double(50));
-        unreserved.add(new Double(100));
-        bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link3), unreserved);
-        bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link3), new Double(0));
-
-        bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link4), unreserved);
-        bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link4), new Double(0));
-
-        PceBandwidthConstraint bandwidthConst = new PceBandwidthConstraint(Bandwidth.bps(10.0));
-
-        List<Constraint> constraints = new LinkedList<>();
-        constraints.add(bandwidthConst);
-
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-
-        assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(2.0)));
-    }
-
-    /**
-     * Path which satisfy bandwidth as a constraint with 60bps.
-     */
-    @Test
-    public void testpathComputationCase4() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 50);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 100);
-
-        Set<Double> unreserved = new HashSet<>();
-        unreserved.add(new Double(50));
-
-        bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link1), unreserved);
-        bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link1), new Double(0));
-
-        bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link2), unreserved);
-        bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link2), new Double(0));
-
-        unreserved.remove(new Double(50));
-        unreserved.add(new Double(100));
-        bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link3), unreserved);
-        bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link3), new Double(0));
-
-        bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link4), unreserved);
-        bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link4), new Double(0));
-
-        PceBandwidthConstraint bandwidthConst = new PceBandwidthConstraint(Bandwidth.bps(60.0));
-
-        List<Constraint> constraints = new LinkedList<>();
-        constraints.add(bandwidthConst);
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-
-        assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(2.0)));
-    }
-
-    /**
-     * Shared bandwidth as L1, L2 with its value 10 bps and bandwidth constraint as 20 bps.
-     */
-    @Test
-    public void testpathComputationCase5() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 20);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 80);
-
-        Set<Double> unreserved = new HashSet<>();
-        unreserved.add(new Double(50));
-
-        bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link1), unreserved);
-        bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link1), new Double(0));
-
-        bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link2), unreserved);
-        bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link2), new Double(0));
-
-        unreserved.remove(new Double(50));
-        unreserved.add(new Double(100));
-        bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link3), unreserved);
-        bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link3), new Double(0));
-
-        bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link4), unreserved);
-        bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link4), new Double(0));
-
-        List<Constraint> constraints = new LinkedList<>();
-
-        List<Link> sharedLinks = new LinkedList<>();
-
-        List<Link> links = new LinkedList<>();
-        links.add(link1);
-        links.add(link2);
-
-        CostConstraint costConst = CostConstraint.of(COST);
-
-
-        TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
-        teLinkConfig.igpCost(50)
-                .apply();
-
-
-        TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
-        teLinkConfig2.igpCost(20)
-                .apply();
-
-        TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
-        teLinkConfig3.igpCost(100)
-                .apply();
-
-        TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
-        teLinkConfig4.igpCost(50)
-                .apply();
-
-        sharedLinks.addAll(links);
-        SharedBandwidthConstraint sharedBw = new SharedBandwidthConstraint(sharedLinks, Bandwidth.bps(10),
-                Bandwidth.bps(20.0));
-        constraints.add(sharedBw);
-        constraints.add(costConst);
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-        assertThat(paths.iterator().next().links(), is(links));
-        assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(70.0)));
-    }
-
-    /**
-     * Shared bandwidth as L1, L2 with its value 20 bps and bandwidth constraint as 10 bps.
-     */
-    @Test
-    public void testpathComputationCase6() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 20);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 80);
-
-        Set<Double> unreserved = new HashSet<>();
-        unreserved.add(new Double(50));
-
-        bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link1), unreserved);
-        bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link1), new Double(0));
-
-        bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link2), unreserved);
-        bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link2), new Double(0));
-
-        unreserved.remove(new Double(50));
-        unreserved.add(new Double(100));
-        bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link3), unreserved);
-        bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link3), new Double(0));
-
-        bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link4), unreserved);
-        bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link4), new Double(0));
-
-        List<Constraint> constraints = new LinkedList<>();
-
-        List<Link> sharedLinks = new LinkedList<>();
-
-        List<Link> links = new LinkedList<>();
-        links.add(link1);
-        links.add(link2);
-        CostConstraint costConst = CostConstraint.of(COST);
-
-
-        TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
-        teLinkConfig.igpCost(50)
-                .apply();
-
-
-        TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
-        teLinkConfig2.igpCost(20)
-                .apply();
-
-        TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
-        teLinkConfig3.igpCost(100)
-                .apply();
-
-        TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
-        teLinkConfig4.igpCost(80)
-                .apply();
-
-        sharedLinks.addAll(links);
-        SharedBandwidthConstraint sharedBwConst = new SharedBandwidthConstraint(sharedLinks, Bandwidth.bps(20),
-                Bandwidth.bps(10.0));
-        constraints.add(sharedBwConst);
-        constraints.add(costConst);
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-
-        assertThat(paths.iterator().next().links(), is(links));
-        assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(70.0)));
-    }
-
-    /**
-     * Path without constraints.
-     */
-    @Test
-    public void testpathComputationCase7() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 20);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 80);
-        List<Constraint> constraints = new LinkedList<>();
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-
-        assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(2.0)));
-    }
-
-    /**
-     * With TeCost as a constraints.
-     */
-    @Test
-    public void testpathComputationCase8() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, false, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, false, 20);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, false, 100);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, false, 80);
-
-        CostConstraint tecostConst = CostConstraint.of(TE_COST);
-
-        List<Constraint> constraints = new LinkedList<>();
-        constraints.add(tecostConst);
-
-
-        TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
-        teLinkConfig.teCost(50)
-                .apply();
-
-
-        TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
-        teLinkConfig2.teCost(20)
-                .apply();
-
-        TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
-        teLinkConfig3.teCost(100)
-                .apply();
-
-        TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
-        teLinkConfig4.teCost(80)
-                .apply();
-
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-
-        List<Link> links = new LinkedList<>();
-        links.add(link1);
-        links.add(link2);
-        assertThat(paths.iterator().next().links(), is(links));
-        assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(70.0)));
-    }
-
-    /**
-     * With device supporting RSVP capability as a constraints.
-     */
-    @Test
-    public void testpathComputationCase9() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, false, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, false, 20);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, false, 100);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, false, 80);
-
-        CostConstraint tecostConst = CostConstraint.of(TE_COST);
-
-        TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
-        teLinkConfig.teCost(50)
-                .apply();
-
-
-        TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
-        teLinkConfig2.teCost(20)
-                .apply();
-
-        TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
-        teLinkConfig3.teCost(100)
-                .apply();
-
-        TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
-        teLinkConfig4.teCost(80)
-                .apply();
-
-
-        CapabilityConstraint capabilityConst = CapabilityConstraint
-                .of(CapabilityConstraint.CapabilityType.WITH_SIGNALLING);
-
-        List<Constraint> constraints = new LinkedList<>();
-        constraints.add(capabilityConst);
-        constraints.add(tecostConst);
-        //Device1
-        DefaultAnnotations.Builder builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "1.1.1.1");
-        addDevice(DEVICE1, builder);
-
-        DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
-        device1Cap.setLabelStackCap(false)
-            .setLocalLabelCap(false)
-            .setSrCap(false)
-            .apply();
-
-        //Device2
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "2.2.2.2");
-        addDevice(DEVICE2, builder);
-
-        DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
-        device2Cap.setLabelStackCap(false)
-            .setLocalLabelCap(false)
-            .setSrCap(false)
-            .apply();
-
-        //Device3
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "3.3.3.3");
-        addDevice(DEVICE3, builder);
-
-        DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class);
-        device3Cap.setLabelStackCap(false)
-            .setLocalLabelCap(false)
-            .setSrCap(false)
-            .apply();
-
-        //Device4
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "4.4.4.4");
-        addDevice(DEVICE4, builder);
-
-        DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
-        device4Cap.setLabelStackCap(false)
-            .setLocalLabelCap(false)
-            .setSrCap(false)
-            .apply();
-
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-
-        List<Link> links = new LinkedList<>();
-        links.add(link1);
-        links.add(link2);
-        assertThat(paths.iterator().next().links(), is(links));
-        assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(70.0)));
-    }
-
-    /**
-     * Devices supporting CR capability.
-     */
-    @Test
-    public void testpathComputationCase10() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 20);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 80);
-
-        CapabilityConstraint capabilityConst = CapabilityConstraint
-                .of(CapabilityConstraint.CapabilityType.WITHOUT_SIGNALLING_AND_WITHOUT_SR);
-
-        List<Constraint> constraints = new LinkedList<>();
-        constraints.add(capabilityConst);
-        CostConstraint costConst = CostConstraint.of(COST);
-        constraints.add(costConst);
-        TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
-        teLinkConfig.igpCost(50)
-                .apply();
-
-
-        TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
-        teLinkConfig2.igpCost(20)
-                .apply();
-
-        TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
-        teLinkConfig3.igpCost(100)
-                .apply();
-
-        TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
-        teLinkConfig4.igpCost(80)
-                .apply();
-
-        //Device1
-        DefaultAnnotations.Builder builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "1.1.1.1");
-        addDevice(DEVICE1, builder);
-        DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
-        device1Cap.setLabelStackCap(false)
-            .setLocalLabelCap(true)
-            .setSrCap(false)
-            .apply();
-
-        //Device2
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "2.2.2.2");
-        addDevice(DEVICE2, builder);
-        DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
-        device2Cap.setLabelStackCap(false)
-            .setLocalLabelCap(true)
-            .setSrCap(false)
-            .apply();
-
-        //Device3
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "3.3.3.3");
-        addDevice(DEVICE3, builder);
-        DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class);
-        device3Cap.setLabelStackCap(false)
-            .setLocalLabelCap(true)
-            .setSrCap(false)
-            .apply();
-
-        //Device4
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "4.4.4.4");
-        addDevice(DEVICE4, builder);
-        DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
-        device4Cap.setLabelStackCap(false)
-            .setLocalLabelCap(true)
-            .setSrCap(false)
-            .apply();
-
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-
-        List<Link> links = new LinkedList<>();
-        links.add(link1);
-        links.add(link2);
-        assertThat(paths.iterator().next().links(), is(links));
-        assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(70.0)));
-    }
-
-    /**
-     * Device supporting SR capability.
-     */
-    @Test
-    public void testpathComputationCase11() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 20);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 80);
-
-        CapabilityConstraint capabilityConst = CapabilityConstraint
-                .of(CapabilityConstraint.CapabilityType.SR_WITHOUT_SIGNALLING);
-
-        List<Constraint> constraints = new LinkedList<>();
-        constraints.add(capabilityConst);
-        CostConstraint costConst = CostConstraint.of(COST);
-        constraints.add(costConst);
-
-        TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
-        teLinkConfig.igpCost(50)
-                .apply();
-
-
-        TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
-        teLinkConfig2.igpCost(20)
-                .apply();
-
-        TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
-        teLinkConfig3.igpCost(100)
-                .apply();
-
-        TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
-        teLinkConfig4.igpCost(80)
-                .apply();
-        //Device1
-        DefaultAnnotations.Builder builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "1.1.1.1");
-        addDevice(DEVICE1, builder);
-        DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
-        device1Cap.setLabelStackCap(true)
-            .setLocalLabelCap(false)
-            .setSrCap(true)
-            .apply();
-
-        //Device2
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "2.2.2.2");
-        addDevice(DEVICE2, builder);
-        DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
-        device2Cap.setLabelStackCap(true)
-            .setLocalLabelCap(false)
-            .setSrCap(true)
-            .apply();
-
-        //Device3
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "3.3.3.3");
-        addDevice(DEVICE3, builder);
-        DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class);
-        device3Cap.setLabelStackCap(true)
-            .setLocalLabelCap(false)
-            .setSrCap(true)
-            .apply();
-
-        //Device4
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "4.4.4.4");
-        addDevice(DEVICE4, builder);
-        DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
-        device4Cap.setLabelStackCap(true)
-            .setLocalLabelCap(false)
-            .setSrCap(true)
-            .apply();
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-
-        List<Link> links = new LinkedList<>();
-        links.add(link1);
-        links.add(link2);
-        assertThat(paths.iterator().next().links(), is(links));
-        assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(70.0)));
-    }
-
-    /**
-     * Path with TE and SR capability constraint.
-     */
-    @Test
-    public void testpathComputationCase12() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, false, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, false, 20);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, false, 100);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, false, 80);
-
-        CostConstraint tecostConst = CostConstraint.of(TE_COST);
-        CapabilityConstraint capabilityConst = CapabilityConstraint
-                .of(CapabilityConstraint.CapabilityType.SR_WITHOUT_SIGNALLING);
-
-        List<Constraint> constraints = new LinkedList<>();
-
-        constraints.add(capabilityConst);
-        constraints.add(tecostConst);
-
-        TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
-        teLinkConfig.teCost(50)
-                .apply();
-
-
-        TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
-        teLinkConfig2.teCost(20)
-                .apply();
-
-        TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
-        teLinkConfig3.teCost(100)
-                .apply();
-
-        TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
-        teLinkConfig4.teCost(80)
-                .apply();
-        //Device1
-        DefaultAnnotations.Builder builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "1.1.1.1");
-        addDevice(DEVICE1, builder);
-        DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
-        device1Cap.setLabelStackCap(true)
-            .setLocalLabelCap(false)
-            .setSrCap(true)
-            .apply();
-
-        //Device2
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "2.2.2.2");
-        addDevice(DEVICE2, builder);
-        DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
-        device2Cap.setLabelStackCap(true)
-            .setLocalLabelCap(false)
-            .setSrCap(true)
-            .apply();
-
-        //Device3
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "3.3.3.3");
-        addDevice(DEVICE3, builder);
-        DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class);
-        device3Cap.setLabelStackCap(true)
-            .setLocalLabelCap(false)
-            .setSrCap(true)
-            .apply();
-
-        //Device4
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "4.4.4.4");
-        addDevice(DEVICE4, builder);
-        DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
-        device4Cap.setLabelStackCap(true)
-            .setLocalLabelCap(false)
-            .setSrCap(true)
-            .apply();
-
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-
-        List<Link> links = new LinkedList<>();
-        links.add(link1);
-        links.add(link2);
-        assertThat(paths.iterator().next().links(), is(links));
-        assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(70.0)));
-    }
-
-    /**
-     * Path with capability constraint and with default cost.
-     */
-    @Test
-    public void testpathComputationCase13() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, false, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, false, 20);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, false, 100);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, false, 80);
-
-        CapabilityConstraint capabilityConst = CapabilityConstraint
-                .of(CapabilityConstraint.CapabilityType.SR_WITHOUT_SIGNALLING);
-
-        List<Constraint> constraints = new LinkedList<>();
-        constraints.add(capabilityConst);
-        //Device1
-        DefaultAnnotations.Builder builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "1.1.1.1");
-        addDevice(DEVICE1, builder);
-        DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
-        device1Cap.setLabelStackCap(true)
-            .setLocalLabelCap(false)
-            .setSrCap(true)
-            .apply();
-
-        //Device2
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "2.2.2.2");
-        addDevice(DEVICE2, builder);
-        DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
-        device2Cap.setLabelStackCap(true)
-            .setLocalLabelCap(false)
-            .setSrCap(true)
-            .apply();
-
-        //Device3
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "3.3.3.3");
-        addDevice(DEVICE3, builder);
-        DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class);
-        device3Cap.setLabelStackCap(true)
-            .setLocalLabelCap(false)
-            .setSrCap(true)
-            .apply();
-
-        //Device4
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "4.4.4.4");
-        addDevice(DEVICE4, builder);
-        DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
-        device4Cap.setLabelStackCap(true)
-            .setLocalLabelCap(false)
-            .setSrCap(true)
-            .apply();
-
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-
-        List<Link> links = new LinkedList<>();
-        links.add(link1);
-        links.add(link2);
-        assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(2.0)));
-    }
-
-    /**
-     * Test case with empty constraints.
-     */
-    @Test
-    public void testpathComputationCase14() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, false, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, false, 20);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, false, 100);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, false, 80);
-
-        List<Constraint> constraints = new LinkedList<>();
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-
-        assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(2.0)));
-    }
-
-    /**
-     * Test case with constraints as null.
-     */
-    @Test
-    public void testpathComputationCase15() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, false, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, false, 20);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, false, 100);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, false, 80);
-
-        List<Constraint> constraints = null;
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-
-        assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(2.0)));
-    }
-
-    /**
-     * Path with cost constraint.
-     */
-    @Test
-    public void testpathComputationCase16() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 100);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 10);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 10);
-        Link link5 = addLink(DEVICE4, 90, DEVICE5, 100, true, 20);
-
-        CostConstraint costConst = CostConstraint.of(COST);
-
-        List<Constraint> constraints = new LinkedList<>();
-        constraints.add(costConst);
-
-        TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
-        teLinkConfig.igpCost(50)
-                .apply();
-
-
-        TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
-        teLinkConfig2.igpCost(100)
-                .apply();
-
-        TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
-        teLinkConfig3.igpCost(10)
-                .apply();
-
-        TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
-        teLinkConfig4.igpCost(10)
-                .apply();
-
-        TeLinkConfig teLinkConfig5 = netConfigRegistry.addConfig(LinkKey.linkKey(link5), TeLinkConfig.class);
-        teLinkConfig5.igpCost(20)
-                .apply();
-
-        Graph<TopologyVertex, TopologyEdge> graph = new AdjacencyListsGraph<>(of(D1, D2, D3, D4, D5),
-                of(new DefaultTopologyEdge(D1, D2, link1),
-                   new DefaultTopologyEdge(D2, D4, link2),
-                   new DefaultTopologyEdge(D1, D3, link3),
-                   new DefaultTopologyEdge(D3, D4, link4),
-                   new DefaultTopologyEdge(D4, D5, link5)));
-
-        GraphPathSearch.Result<TopologyVertex, TopologyEdge> result =
-                graphSearch().search(graph, D1, D5, weight(constraints), ALL_PATHS);
-        ImmutableSet.Builder<Path> builder = ImmutableSet.builder();
-        for (org.onlab.graph.Path<TopologyVertex, TopologyEdge> path : result.paths()) {
-            builder.add(networkPath(path));
-        }
-
-        List<Link> links = new LinkedList<>();
-        links.add(link3);
-        links.add(link4);
-        links.add(link5);
-        assertThat(builder.build().iterator().next().links(), is(links));
-        assertThat(builder.build().iterator().next().weight(), is(ScalarWeight.toWeight(40.0)));
-    }
-
-    /**
-     * D3 doesn't support capability constraint, so path is L1-L2.
-     */
-    @Test
-    public void testpathComputationCase17() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, false, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, false, 20);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, false, 100);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, false, 80);
-
-        CapabilityConstraint capabilityConst = CapabilityConstraint
-                .of(CapabilityConstraint.CapabilityType.WITHOUT_SIGNALLING_AND_WITHOUT_SR);
-
-        List<Constraint> constraints = new LinkedList<>();
-        constraints.add(capabilityConst);
-        //Device1
-        DefaultAnnotations.Builder builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "1.1.1.1");
-        addDevice(DEVICE1, builder);
-        DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
-        device1Cap.setLabelStackCap(false)
-            .setLocalLabelCap(true)
-            .setSrCap(false)
-            .apply();
-
-        //Device2
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "2.2.2.2");
-        addDevice(DEVICE2, builder);
-        DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
-        device2Cap.setLabelStackCap(false)
-            .setLocalLabelCap(true)
-            .setSrCap(false)
-            .apply();
-
-        //Device4
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "4.4.4.4");
-        addDevice(DEVICE4, builder);
-        DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
-        device4Cap.setLabelStackCap(false)
-            .setLocalLabelCap(true)
-            .setSrCap(false)
-            .apply();
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-
-        List<Link> links = new LinkedList<>();
-        links.add(link1);
-        links.add(link2);
-
-        assertThat(paths.iterator().next().links(), is(links));
-        assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(2.0)));
-    }
-
-    /**
-     * L2 doesn't support cost constraint and D3 doesn't support capability constraint, both constraint fails hence no
-     * path.
-     */
-    @Test
-    public void testpathComputationCase18() {
-        Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50);
-        Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, false, 20);
-        Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 10);
-        Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 10);
-
-        CapabilityConstraint capabilityConst = CapabilityConstraint
-                .of(CapabilityConstraint.CapabilityType.WITHOUT_SIGNALLING_AND_WITHOUT_SR);
-        CostConstraint costConst = CostConstraint.of(COST);
-
-        TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
-        teLinkConfig.igpCost(50)
-                .apply();
-
-
-        TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
-        teLinkConfig2.igpCost(20)
-                .apply();
-
-        TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
-        teLinkConfig3.igpCost(10)
-                .apply();
-
-        TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
-        teLinkConfig4.igpCost(10)
-                .apply();
-
-        List<Constraint> constraints = new LinkedList<>();
-        constraints.add(capabilityConst);
-        constraints.add(costConst);
-        //Device1
-        DefaultAnnotations.Builder builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "1.1.1.1");
-        addDevice(DEVICE2, builder);
-        DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
-        device1Cap.setLabelStackCap(false)
-            .setLocalLabelCap(true)
-            .setSrCap(false)
-            .apply();
-
-        //Device2
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "2.2.2.2");
-        addDevice(DEVICE2, builder);
-        DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
-        device2Cap.setLabelStackCap(false)
-            .setLocalLabelCap(true)
-            .setSrCap(false)
-            .apply();
-
-        //Device4
-        builder = DefaultAnnotations.builder();
-        builder.set(AnnotationKeys.TYPE, L3);
-        builder.set(LSRID, "4.4.4.4");
-        addDevice(DEVICE4, builder);
-        DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
-        device4Cap.setLabelStackCap(false)
-            .setLocalLabelCap(true)
-            .setSrCap(false)
-            .apply();
-        Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
-
-        assertThat(paths, is(new HashSet<>()));
-    }
-
-    private void addDevice(String device, DefaultAnnotations.Builder builder) {
-        deviceService.addDevice(new DefaultDevice(ProviderId.NONE, deviceId(device), Type.ROUTER,
-        UNKNOWN, UNKNOWN, UNKNOWN,
-        UNKNOWN, new ChassisId(), builder.build()));
-    }
-}
\ No newline at end of file
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PceManagerTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PceManagerTest.java
deleted file mode 100644
index 1449eb0..0000000
--- a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PceManagerTest.java
+++ /dev/null
@@ -1,1688 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pceservice;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.graph.GraphPathSearch;
-import org.onlab.graph.ScalarWeight;
-import org.onlab.junit.TestUtils;
-import org.onlab.junit.TestUtils.TestUtilsException;
-import org.onlab.util.Bandwidth;
-import org.onosproject.common.DefaultTopologyGraph;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreServiceAdapter;
-import org.onosproject.core.DefaultApplicationId;
-import org.onosproject.core.IdGenerator;
-import org.onosproject.event.Event;
-import org.onosproject.incubator.net.tunnel.DefaultTunnel;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.Tunnel.State;
-import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.TunnelEvent;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelListener;
-import org.onosproject.incubator.net.tunnel.TunnelServiceAdapter;
-import org.onosproject.mastership.MastershipServiceAdapter;
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.net.Annotations;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultAnnotations.Builder;
-import org.onosproject.net.DefaultDevice;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.ElementId;
-import org.onosproject.net.Link;
-import org.onosproject.net.LinkKey;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.Path;
-import org.onosproject.net.SparseAnnotations;
-import org.onosproject.net.intent.Constraint;
-import org.onosproject.net.link.LinkEvent;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.topology.DefaultTopologyEdge;
-import org.onosproject.net.topology.DefaultTopologyVertex;
-import org.onosproject.net.topology.LinkWeigher;
-import org.onosproject.net.topology.PathServiceAdapter;
-import org.onosproject.net.topology.Topology;
-import org.onosproject.net.topology.TopologyEdge;
-import org.onosproject.net.topology.TopologyEvent;
-import org.onosproject.net.topology.TopologyGraph;
-import org.onosproject.net.topology.TopologyListener;
-import org.onosproject.net.topology.TopologyServiceAdapter;
-import org.onosproject.net.topology.TopologyVertex;
-import org.onosproject.pce.pceservice.PathComputationTest.MockNetConfigRegistryAdapter;
-import org.onosproject.pce.pceservice.constraint.CostConstraint;
-import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint;
-import org.onosproject.pce.pcestore.api.PceStore;
-import org.onosproject.pce.util.MockDeviceService;
-import org.onosproject.pce.util.PceStoreAdapter;
-import org.onosproject.pcep.api.DeviceCapability;
-import org.onosproject.pcep.api.TeLinkConfig;
-import org.onosproject.store.service.TestStorageService;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.function.Consumer;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-import static org.onlab.graph.GraphPathSearch.ALL_PATHS;
-import static org.onosproject.incubator.net.tunnel.Tunnel.State.ESTABLISHED;
-import static org.onosproject.incubator.net.tunnel.Tunnel.State.UNSTABLE;
-import static org.onosproject.net.MastershipRole.MASTER;
-import static org.onosproject.pce.pceservice.LspType.SR_WITHOUT_SIGNALLING;
-import static org.onosproject.pce.pceservice.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
-import static org.onosproject.pce.pceservice.LspType.WITH_SIGNALLING;
-import static org.onosproject.pce.pceservice.PathComputationTest.D1;
-import static org.onosproject.pce.pceservice.PathComputationTest.D2;
-import static org.onosproject.pce.pceservice.PathComputationTest.D3;
-import static org.onosproject.pce.pceservice.PathComputationTest.D4;
-import static org.onosproject.pce.pceservice.PathComputationTest.D5;
-import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE1;
-import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE2;
-import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE3;
-import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE4;
-import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE5;
-import static org.onosproject.pce.pceservice.PcepAnnotationKeys.LOCAL_LSP_ID;
-import static org.onosproject.pce.pceservice.PcepAnnotationKeys.PLSP_ID;
-import static org.onosproject.pce.pceservice.constraint.CostConstraint.Type.COST;
-import static org.onosproject.pce.pceservice.constraint.CostConstraint.Type.TE_COST;
-
-/**
- * Tests the functions of PceManager.
- */
-public class PceManagerTest {
-
-    private PathComputationTest pathCompTest = new PathComputationTest();
-    private MockTopologyService topologyService = new MockTopologyService();
-    private MockMastershipService mastershipService = new MockMastershipService();
-    private MockPathService pathService = new MockPathService();
-    private PceManager pceManager = new PceManager();
-    private MockCoreService coreService = new MockCoreService();
-    private MockTunnelServiceAdapter tunnelService = new MockTunnelServiceAdapter();
-    private TestStorageService storageService = new TestStorageService();
-    private MockDeviceService deviceService = new MockDeviceService();
-    private MockNetConfigRegistryAdapter netConfigRegistry = new PathComputationTest.MockNetConfigRegistryAdapter();
-    private PceStore pceStore = new PceStoreAdapter();
-    private PathComputationTest.MockBandwidthMgmtService bandwidthMgmtService = new PathComputationTest
-                                                                                            .MockBandwidthMgmtService();
-
-    public static ProviderId providerId = new ProviderId("pce", "foo");
-    private static final String L3 = "L3";
-    private static final String LSRID = "lsrId";
-    private static final String PCECC_CAPABILITY = "pceccCapability";
-    private static final String SR_CAPABILITY = "srCapability";
-    private static final String LABEL_STACK_CAPABILITY = "labelStackCapability";
-
-    private TopologyGraph graph = null;
-    private Device deviceD1, deviceD2, deviceD3, deviceD4, deviceD5;
-    private Device pcepDeviceD1, pcepDeviceD2, pcepDeviceD3, pcepDeviceD4;
-    private Link link1, link2, link3, link4, link5, link6;
-    protected static int flowsDownloaded;
-    private TunnelListener tunnelListener;
-    private TopologyListener listener;
-    private Topology topology;
-    private Set<TopologyEdge> edges;
-    private Set<TopologyVertex> vertexes;
-
-    @Before
-    public void startUp() throws TestUtilsException {
-        listener = TestUtils.getField(pceManager, "topologyListener");
-        pceManager.pathService = pathService;
-        pceManager.topologyService = topologyService;
-        pceManager.tunnelService = tunnelService;
-        pceManager.coreService = coreService;
-        pceManager.storageService = storageService;
-        pceManager.deviceService = deviceService;
-        pceManager.netCfgService = netConfigRegistry;
-        pceManager.netConfigRegistry = netConfigRegistry;
-        pceManager.pceStore = pceStore;
-        pceManager.mastershipService = mastershipService;
-        pceManager.bandwidthMgmtService = bandwidthMgmtService;
-        pceManager.activate();
-    }
-
-    private class MockMastershipService extends MastershipServiceAdapter {
-        @Override
-        public MastershipRole getLocalRole(DeviceId deviceId) {
-            return MASTER;
-        }
-
-        @Override
-        public boolean isLocalMaster(DeviceId deviceId) {
-            return getLocalRole(deviceId) == MASTER;
-        }
-    }
-
-    private void build4RouterTopo(boolean setCost, boolean setPceccCap, boolean setSrCap,
-                                 boolean setLabelStackCap, int bandwidth) {
-        link1 = PathComputationTest.addLink(DEVICE1, 10, DEVICE2, 20, setCost, 50);
-        link2 = PathComputationTest.addLink(DEVICE2, 30, DEVICE4, 40, setCost, 20);
-        link3 = PathComputationTest.addLink(DEVICE1, 80, DEVICE3, 70, setCost, 100);
-        link4 = PathComputationTest.addLink(DEVICE3, 60, DEVICE4, 50, setCost, 80);
-        link5 = PathComputationTest.addLink(DEVICE2, 60, DEVICE5, 50, setCost, 80);
-        link6 = PathComputationTest.addLink(DEVICE4, 60, DEVICE5, 50, setCost, 80);
-
-        if (setCost) {
-            TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
-            teLinkConfig.igpCost(50)
-                    .apply();
-
-            TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
-            teLinkConfig2.igpCost(20)
-                    .apply();
-
-            TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
-            teLinkConfig3.igpCost(100)
-                    .apply();
-
-            TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
-            teLinkConfig4.igpCost(80)
-                    .apply();
-
-            TeLinkConfig teLinkConfig5 = netConfigRegistry.addConfig(LinkKey.linkKey(link5), TeLinkConfig.class);
-            teLinkConfig5.igpCost(80)
-                    .apply();
-
-            TeLinkConfig teLinkConfig6 = netConfigRegistry.addConfig(LinkKey.linkKey(link6), TeLinkConfig.class);
-            teLinkConfig6.igpCost(80)
-                    .apply();
-        } else {
-            TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
-            teLinkConfig.teCost(50)
-                    .apply();
-
-
-            TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
-            teLinkConfig2.teCost(20)
-                    .apply();
-
-            TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
-            teLinkConfig3.teCost(100)
-                    .apply();
-
-            TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
-            teLinkConfig4.teCost(80)
-                    .apply();
-
-            TeLinkConfig teLinkConfig5 = netConfigRegistry.addConfig(LinkKey.linkKey(link5), TeLinkConfig.class);
-            teLinkConfig5.teCost(80)
-                    .apply();
-
-            TeLinkConfig teLinkConfig6 = netConfigRegistry.addConfig(LinkKey.linkKey(link6), TeLinkConfig.class);
-            teLinkConfig6.teCost(80)
-                    .apply();
-        }
-
-
-        Set<TopologyVertex> vertexes = new HashSet<TopologyVertex>();
-        vertexes.add(D1);
-        vertexes.add(D2);
-        vertexes.add(D3);
-        vertexes.add(D4);
-        vertexes.add(D5);
-
-        this.vertexes = vertexes;
-
-        Set<TopologyEdge> edges = new HashSet<TopologyEdge>();
-        TopologyEdge edge1 = new DefaultTopologyEdge(D1, D2, link1);
-        edges.add(edge1);
-
-        TopologyEdge edge2 = new DefaultTopologyEdge(D2, D4, link2);
-        edges.add(edge2);
-
-        TopologyEdge edge3 = new DefaultTopologyEdge(D1, D3, link3);
-        edges.add(edge3);
-
-        TopologyEdge edge4 = new DefaultTopologyEdge(D3, D4, link4);
-        edges.add(edge4);
-
-        TopologyEdge edge5 = new DefaultTopologyEdge(D2, D5, link5);
-        edges.add(edge5);
-
-        TopologyEdge edge6 = new DefaultTopologyEdge(D4, D5, link6);
-        edges.add(edge6);
-
-        this.edges = edges;
-
-        graph = new DefaultTopologyGraph(vertexes, edges);
-
-        DefaultAnnotations.Builder builderDev1 = DefaultAnnotations.builder();
-        DefaultAnnotations.Builder builderDev2 = DefaultAnnotations.builder();
-        DefaultAnnotations.Builder builderDev3 = DefaultAnnotations.builder();
-        DefaultAnnotations.Builder builderDev4 = DefaultAnnotations.builder();
-        DefaultAnnotations.Builder builderDev5 = DefaultAnnotations.builder();
-
-        // Making L3 devices
-        builderDev1.set(AnnotationKeys.TYPE, L3);
-        builderDev1.set(LSRID, "1.1.1.1");
-
-        builderDev2.set(AnnotationKeys.TYPE, L3);
-        builderDev2.set(LSRID, "2.2.2.2");
-
-        builderDev3.set(AnnotationKeys.TYPE, L3);
-        builderDev3.set(LSRID, "3.3.3.3");
-
-        builderDev4.set(AnnotationKeys.TYPE, L3);
-        builderDev4.set(LSRID, "4.4.4.4");
-
-        builderDev5.set(AnnotationKeys.TYPE, L3);
-        builderDev5.set(LSRID, "5.5.5.5");
-
-        deviceD1 = new MockDevice(D1.deviceId(), builderDev1.build());
-        deviceD2 = new MockDevice(D2.deviceId(), builderDev2.build());
-        deviceD3 = new MockDevice(D3.deviceId(), builderDev3.build());
-        deviceD4 = new MockDevice(D4.deviceId(), builderDev4.build());
-        deviceD5 = new MockDevice(D5.deviceId(), builderDev5.build());
-
-        deviceService.addDevice(deviceD1);
-        deviceService.addDevice(deviceD2);
-        deviceService.addDevice(deviceD3);
-        deviceService.addDevice(deviceD4);
-        deviceService.addDevice(deviceD5);
-
-        DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
-        device1Cap.setLabelStackCap(setLabelStackCap)
-        .setLocalLabelCap(setPceccCap)
-        .setSrCap(setSrCap)
-        .apply();
-
-        DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
-        device2Cap.setLabelStackCap(setLabelStackCap)
-        .setLocalLabelCap(setPceccCap)
-        .setSrCap(setSrCap)
-        .apply();
-
-        DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class);
-        device3Cap.setLabelStackCap(setLabelStackCap)
-        .setLocalLabelCap(setPceccCap)
-        .setSrCap(setSrCap)
-        .apply();
-
-        DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
-        device4Cap.setLabelStackCap(setLabelStackCap)
-        .setLocalLabelCap(setPceccCap)
-        .setSrCap(setSrCap)
-        .apply();
-
-        DeviceCapability device5Cap = netConfigRegistry.addConfig(DeviceId.deviceId("5.5.5.5"), DeviceCapability.class);
-        device4Cap.setLabelStackCap(setLabelStackCap)
-                .setLocalLabelCap(setPceccCap)
-                .setSrCap(setSrCap)
-                .apply();
-
-        if (bandwidth != 0) {
-            Set<Double> unreserved = new HashSet<>();
-            unreserved.add(new Double(bandwidth));
-
-            bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link1), unreserved);
-            bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link1), new Double(0));
-
-            bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link2), unreserved);
-            bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link2), new Double(0));
-
-            bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link3), unreserved);
-            bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link3), new Double(0));
-
-            bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link4), unreserved);
-            bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link4), new Double(0));
-
-            bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link5), unreserved);
-            bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link5), new Double(0));
-
-            bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link6), unreserved);
-            bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link6), new Double(0));
-        }
-    }
-
-    /**
-     * Tests path success with (IGP) cost constraint for signalled LSP.
-     */
-    @Test
-    public void setupPathTest1() {
-        build4RouterTopo(true, false, false, false, 0); // IGP cost is set here.
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(COST);
-        constraints.add(costConstraint);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
-        assertThat(result, is(true));
-    }
-
-    /**
-     * Tests path failure with (IGP) cost constraint for signalled LSP.
-     */
-    @Test
-    public void setupPathTest2() {
-        build4RouterTopo(false, false, false, false, 0); // TE cost is set here, not IGP.
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(COST);
-        constraints.add(costConstraint);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
-        assertThat(result, is(false));
-    }
-
-    /**
-     * Tests path success with TE-cost constraint for signalled LSP.
-     */
-    @Test
-    public void setupPathTest3() {
-        build4RouterTopo(false, false, false, false, 0); // TE cost is set here.
-
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-        constraints.add(costConstraint);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
-        assertThat(result, is(true));
-    }
-
-    /**
-     * Tests path failure with TE-cost constraint for signalled LSP.
-     */
-    @Test
-    public void setupPathTest4() {
-        build4RouterTopo(true, false, false, false, 0); // IGP cost is set here, not TE.
-
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-        constraints.add(costConstraint);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
-        assertThat(result, is(false));
-    }
-
-    /**
-     * Tests path success with (IGP) cost constraint for non-SR non-signalled LSP.
-     */
-    @Test
-    public void setupPathTest5() {
-        build4RouterTopo(true, true, false, false, 0);
-
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(COST);
-        constraints.add(costConstraint);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints,
-                                              WITHOUT_SIGNALLING_AND_WITHOUT_SR, null);
-        assertThat(result, is(true));
-    }
-
-    /**
-     * Tests path success with TE-cost constraint for non-SR non-sgnalled LSP.
-     */
-    @Test
-    public void setupPathTest6() {
-        build4RouterTopo(false, true, false, false, 0);
-
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-        constraints.add(costConstraint);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints,
-                                              WITHOUT_SIGNALLING_AND_WITHOUT_SR, null);
-        assertThat(result, is(true));
-    }
-
-    /**
-     * Tests path failure with TE-cost constraint for non-SR non-signalled LSP(CR). Label capability not registered.
-     */
-    @Test
-    public void setupPathTest7() {
-        build4RouterTopo(true, false, false, false, 0);
-
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-        constraints.add(costConstraint);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints,
-                                              WITHOUT_SIGNALLING_AND_WITHOUT_SR, null);
-        assertThat(result, is(false));
-    }
-
-    /**
-     * Tests path failure as bandwidth is requested but is not registered.
-     */
-    @Test
-    public void setupPathTest8() {
-        build4RouterTopo(true, false, false, false, 2);
-
-        List<Constraint> constraints = new LinkedList<>();
-        PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0));
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-
-        constraints.add(costConstraint);
-        constraints.add(bwConstraint);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints,
-                WITH_SIGNALLING, null);
-        assertThat(result, is(false));
-    }
-
-    /**
-     * Tests path failure as bandwidth requested is more than registered.
-     */
-    @Test
-    public void setupPathTest9() {
-        build4RouterTopo(false, false, false, false, 5);
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0));
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-
-        constraints.add(costConstraint);
-        constraints.add(bwConstraint);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
-        assertThat(result, is(false));
-    }
-
-    /**
-     * Tests path setup failure(without signalling). Label capability is not present.
-     */
-    @Test
-    public void setupPathTest10() {
-        build4RouterTopo(false, false, false, false, 0);
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-        constraints.add(costConstraint);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints,
-             SR_WITHOUT_SIGNALLING, null);
-        assertThat(result, is(false));
-    }
-
-    /**
-     * Tests path setup without signalling and with bandwidth reservation.
-     */
-    @Test
-    public void setupPathTest12() {
-        build4RouterTopo(false, true, true, true, 15);
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0));
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-
-        constraints.add(costConstraint);
-        constraints.add(bwConstraint);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123",
-                constraints, SR_WITHOUT_SIGNALLING, null);
-        assertThat(result, is(true));
-    }
-
-    /**
-     * Tests path setup without cost/bandwidth constraints.
-     */
-    @Test
-    public void setupPathTest13() {
-        build4RouterTopo(false, false, false, false, 0);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", null, WITH_SIGNALLING, null);
-        assertThat(result, is(true));
-    }
-
-    /**
-     * Tests path setup with explicit path with loose node D2.
-     */
-   @Test
-    public void setupPathTest14() {
-        build4RouterTopo(false, false, false, false, 0);
-
-        List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-        ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D2.deviceId());
-        explicitPathInfoList.add(obj);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", null, WITH_SIGNALLING,
-                explicitPathInfoList);
-
-        Tunnel tunnel = pceManager.queryAllPath().iterator().next();
-        List<Link> links = new LinkedList<>();
-        links.add(link1);
-        links.add(link2);
-
-        assertThat(result, is(true));
-        assertThat(tunnel.path().links().equals(links), is(true));
-    }
-
-    /**
-     * Tests path setup with explicit path with loose node D3.
-     */
-   @Test
-   public void setupPathTest15() {
-       build4RouterTopo(false, false, false, false, 0);
-
-       List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-       ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D3.deviceId());
-       explicitPathInfoList.add(obj);
-
-       boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING,
-               explicitPathInfoList);
-
-       Tunnel tunnel = pceManager.queryAllPath().iterator().next();
-       List<Link> links = new LinkedList<>();
-       links.add(link3);
-       links.add(link4);
-       links.add(link6);
-
-       assertThat(result, is(true));
-       assertThat(tunnel.path().links().equals(links), is(true));
-   }
-
-    /**
-     * Tests path setup with explicit path with loose node D4 , D3 - path fails.
-     */
-   @Test
-   public void setupPathTest16() {
-       build4RouterTopo(false, false, false, false, 0);
-
-       List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-       ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D4.deviceId());
-       explicitPathInfoList.add(obj);
-       obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D3.deviceId());
-       explicitPathInfoList.add(obj);
-
-       boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING,
-               explicitPathInfoList);
-
-       assertThat(result, is(false));
-   }
-
-    /**
-     * Tests path setup with explicit path with strict node D2 - without reacble to src - path fails.
-     */
-   @Test
-   public void setupPathTest17() {
-       build4RouterTopo(false, false, false, false, 0);
-
-       List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-       ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
-       explicitPathInfoList.add(obj);
-
-       boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING,
-               explicitPathInfoList);
-
-       assertThat(result, is(false));
-   }
-
-    /**
-     * Tests path setup with explicit path with loose node D2, strict D2.
-     */
-   @Test
-   public void setupPathTest18() {
-       build4RouterTopo(false, false, false, false, 0);
-
-       List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-       ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D2.deviceId());
-       explicitPathInfoList.add(obj);
-       obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
-       explicitPathInfoList.add(obj);
-
-       boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING,
-               explicitPathInfoList);
-
-       Tunnel tunnel = pceManager.queryAllPath().iterator().next();
-       List<Link> links = new LinkedList<>();
-       links.add(link1);
-       links.add(link5);
-
-       assertThat(result, is(true));
-       assertThat(tunnel.path().links().equals(links), is(true));
-   }
-
-    /**
-     * Tests path setup with explicit path with loose D1-D2, strict D2.
-     */
-   @Test
-   public void setupPathTest19() {
-       build4RouterTopo(false, false, false, false, 0);
-
-       List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-       ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, link1);
-       explicitPathInfoList.add(obj);
-       obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
-       explicitPathInfoList.add(obj);
-
-       boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING,
-               explicitPathInfoList);
-
-       Tunnel tunnel = pceManager.queryAllPath().iterator().next();
-       List<Link> links = new LinkedList<>();
-       links.add(link1);
-       links.add(link5);
-
-       assertThat(result, is(true));
-       assertThat(tunnel.path().links().equals(links), is(true));
-   }
-
-    /**
-     * Tests path update with increase in bandwidth.
-     */
-    @Test
-    public void updatePathTest1() {
-        build4RouterTopo(false, true, true, true, 100);
-
-        // Setup tunnel.
-        List<Constraint> constraints = new LinkedList<>();
-        PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(60.0));
-        constraints.add(bwConstraint);
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-        constraints.add(costConstraint);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
-        assertThat(result, is(true));
-
-        // Change constraint and update it.
-        constraints = new LinkedList<>();
-        bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(50.0));
-        constraints.add(bwConstraint);
-        constraints.add(costConstraint);
-
-        Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(1));
-
-        Tunnel tunnel = tunnels.iterator().next();
-
-        // Stimulate the effect of LSP ids from protocol msg.
-        tunnelService.updateTunnelWithLspIds(tunnel, "123", "1", State.ACTIVE);
-
-        result = pceManager.updatePath(tunnel.tunnelId(), constraints);
-        assertThat(result, is(true));
-
-        tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(2));
-    }
-
-    /**
-     * Tests path update with decrease in bandwidth.
-     */
-    @Test
-    public void updatePathTest2() {
-        build4RouterTopo(false, true, true, true, 100);
-
-        // Setup tunnel.
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(60.0));
-        constraints.add(bwConstraint);
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-        constraints.add(costConstraint);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123",
-                constraints, SR_WITHOUT_SIGNALLING, null);
-        assertThat(result, is(true));
-
-        // Change constraint and update it.
-        constraints.remove(bwConstraint);
-        bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(70.0));
-        constraints.add(bwConstraint);
-
-        Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(1));
-
-        for (Tunnel tunnel : tunnels) {
-            result = pceManager.updatePath(tunnel.tunnelId(), constraints);
-            assertThat(result, is(true));
-        }
-
-        tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(2));
-    }
-
-    /**
-     * Tests path update without cost/bandwidth constraints.
-     */
-    @Test
-    public void updatePathTest3() {
-        build4RouterTopo(false, true, true, true, 100);
-
-        // Setup tunnel.
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-        constraints.add(costConstraint);
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
-        assertThat(result, is(true));
-
-        Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(1));
-
-        for (Tunnel tunnel : tunnels) {
-            result = pceManager.updatePath(tunnel.tunnelId(), null);
-            assertThat(result, is(true));
-        }
-
-        Iterable<Tunnel> queryTunnelResult = pceManager.queryAllPath();
-        assertThat((int) queryTunnelResult.spliterator().getExactSizeIfKnown(), is(2));
-    }
-
-    /**
-     * Tests path update without cost/bandwidth constraints and with explicit path object.
-     */
-    @Test
-    public void updatePathTest4() {
-        build4RouterTopo(false, true, true, true, 100);
-
-        // Setup tunnel.
-        List<Constraint> constraints = new LinkedList<>();
-        PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(60.0));
-        constraints.add(bwConstraint);
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-        constraints.add(costConstraint);
-
-        List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-        ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, link1);
-        explicitPathInfoList.add(obj);
-        obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
-        explicitPathInfoList.add(obj);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, explicitPathInfoList);
-        assertThat(result, is(true));
-
-        // Change constraint and update it.
-        constraints = new LinkedList<>();
-        bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(50.0));
-        constraints.add(bwConstraint);
-        constraints.add(costConstraint);
-
-        Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(1));
-
-        Tunnel tunnel = tunnels.iterator().next();
-
-        // Stimulate the effect of LSP ids from protocol msg.
-        tunnelService.updateTunnelWithLspIds(tunnel, "123", "1", State.ACTIVE);
-
-        result = pceManager.updatePath(tunnel.tunnelId(), constraints);
-        assertThat(result, is(true));
-
-        tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(2));
-    }
-
-    /**
-     * Tests path release.
-     */
-    @Test
-    public void releasePathTest1() {
-        build4RouterTopo(false, false, false, false, 5);
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-        PceBandwidthConstraint bwConst = new PceBandwidthConstraint(Bandwidth.bps(3));
-        constraints.add(bwConst);
-        constraints.add(costConstraint);
-
-        List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-        ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, link1);
-        explicitPathInfoList.add(obj);
-        obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
-        explicitPathInfoList.add(obj);
-
-        pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, explicitPathInfoList);
-
-        Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(1));
-        boolean result;
-        for (Tunnel tunnel : tunnels) {
-            result = pceManager.releasePath(tunnel.tunnelId());
-            assertThat(result, is(true));
-        }
-        tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(0));
-    }
-
-    /**
-     * Tests path release failure.
-     */
-    @Test
-    public void releasePathTest2() {
-        build4RouterTopo(false, false, false, false, 5);
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-        constraints.add(costConstraint);
-
-        pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
-
-        Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(1));
-
-        // Random tunnel id.
-        boolean result = pceManager.releasePath(TunnelId.valueOf("111"));
-        assertThat(result, is(false));
-
-        tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(1));
-    }
-
-    /**
-     * Tests path release failure.
-     */
-    @Test
-    public void releasePathTest3() {
-        build4RouterTopo(false, false, false, false, 5);
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-        PceBandwidthConstraint bwConst = new PceBandwidthConstraint(Bandwidth.bps(3));
-        constraints.add(bwConst);
-        constraints.add(costConstraint);
-
-        pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
-
-        Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(1));
-        boolean result;
-        for (Tunnel tunnel : tunnels) {
-            result = pceManager.releasePath(tunnel.tunnelId());
-            assertThat(result, is(true));
-        }
-        tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(0));
-    }
-
-    /**
-     * Tests tunnel events added and removed.
-     */
-    @Test
-    public void tunnelEventTest1() {
-        build4RouterTopo(false, true, true, true, 15);
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0));
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-
-        constraints.add(costConstraint);
-        constraints.add(bwConstraint);
-
-        boolean isSuccess = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T1", constraints,
-                SR_WITHOUT_SIGNALLING, null);
-        assertThat(isSuccess, is(true));
-
-        Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-
-        for (Tunnel tunnel : tunnels) {
-            TunnelEvent event = new TunnelEvent(TunnelEvent.Type.TUNNEL_ADDED, tunnel);
-            tunnelListener.event(event);
-
-            isSuccess = pceManager.releasePath(tunnel.tunnelId());
-            assertThat(isSuccess, is(true));
-
-            event = new TunnelEvent(TunnelEvent.Type.TUNNEL_REMOVED, tunnel);
-            tunnelListener.event(event);
-        }
-    }
-
-    /**
-     * Tests label allocation/removal in CR case based on tunnel event.
-     */
-    @Test
-    public void tunnelEventTest2() {
-        build4RouterTopo(false, true, true, true, 15);
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0));
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-
-        constraints.add(costConstraint);
-        constraints.add(bwConstraint);
-
-        boolean isSuccess = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T2", constraints,
-                WITHOUT_SIGNALLING_AND_WITHOUT_SR, null);
-        assertThat(isSuccess, is(true));
-
-        TunnelEvent event;
-        Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        for (Tunnel tunnel : tunnels) {
-            event = new TunnelEvent(TunnelEvent.Type.TUNNEL_ADDED, tunnel);
-            tunnelListener.event(event);
-
-            // Stimulate the effect of LSP ids from protocol msg.
-            tunnelService.updateTunnelWithLspIds(tunnel, "123", "1", ESTABLISHED);
-        }
-
-        tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        for (Tunnel tunnel : tunnels) {
-            event = new TunnelEvent(TunnelEvent.Type.TUNNEL_UPDATED, tunnel);
-            tunnelListener.event(event);
-
-            isSuccess = pceManager.releasePath(tunnel.tunnelId());
-            assertThat(isSuccess, is(true));
-
-            event = new TunnelEvent(TunnelEvent.Type.TUNNEL_REMOVED, tunnel);
-            tunnelListener.event(event);
-        }
-    }
-
-    /**
-     * Tests handling UNSTABLE state based on tunnel event.
-     */
-    @Test
-    public void tunnelEventTest3() {
-        build4RouterTopo(false, true, true, true, 15);
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0));
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-
-        constraints.add(costConstraint);
-        constraints.add(bwConstraint);
-
-        boolean isSuccess = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T2", constraints,
-                WITHOUT_SIGNALLING_AND_WITHOUT_SR, null);
-        assertThat(isSuccess, is(true));
-        assertThat(pceStore.getFailedPathInfoCount(), is(0));
-
-        TunnelEvent event;
-        Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        for (Tunnel tunnel : tunnels) {
-            event = new TunnelEvent(TunnelEvent.Type.TUNNEL_ADDED, tunnel);
-            tunnelListener.event(event);
-
-            // Stimulate the effect of LSP ids from protocol msg.
-            tunnelService.updateTunnelWithLspIds(tunnel, "123", "1", UNSTABLE);
-        }
-
-        tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        for (Tunnel tunnel : tunnels) {
-            event = new TunnelEvent(TunnelEvent.Type.TUNNEL_UPDATED, tunnel);
-            tunnelListener.event(event);
-        }
-
-        assertThat(pceStore.getFailedPathInfoCount(), is(1));
-    }
-
-    /**
-     * Tests resiliency when L2 link is down.
-     */
-    @Test
-    public void resiliencyTest1() {
-        build4RouterTopo(true, false, false, false, 10);
-
-
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(COST);
-        constraints.add(costConstraint);
-        PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
-        constraints.add(localBwConst);
-
-        //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
-        assertThat(result, is(true));
-        assertThat(pceStore.getFailedPathInfoCount(), is(0));
-
-        List<Event> reasons = new LinkedList<>();
-        final LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2);
-        reasons.add(linkEvent);
-        final TopologyEvent event = new TopologyEvent(
-                TopologyEvent.Type.TOPOLOGY_CHANGED,
-                topology,
-                reasons);
-
-        //Change Topology : remove link2
-        Set<TopologyEdge> tempEdges = new HashSet<>();
-        tempEdges.add(new DefaultTopologyEdge(D2, D4, link2));
-        topologyService.changeInTopology(getGraph(null,  tempEdges));
-        listener.event(event);
-
-        List<Link> links = new LinkedList<>();
-        links.add(link3);
-        links.add(link4);
-
-        //Path is D1-D3-D4
-        assertThat(pathService.paths().iterator().next().links(), is(links));
-        assertThat(pathService.paths().iterator().next().weight(), is(ScalarWeight.toWeight(180.0)));
-    }
-
-    /**
-     * Tests resiliency when L2 and L4 link is down.
-     */
-    @Test
-    public void resiliencyTest2() {
-        build4RouterTopo(true, false, false, false, 10);
-
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(COST);
-        constraints.add(costConstraint);
-        PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
-        constraints.add(localBwConst);
-
-        //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
-        assertThat(result, is(true));
-
-        List<Event> reasons = new LinkedList<>();
-        LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2);
-        reasons.add(linkEvent);
-        linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link4);
-        reasons.add(linkEvent);
-        final TopologyEvent event = new TopologyEvent(
-                TopologyEvent.Type.TOPOLOGY_CHANGED,
-                topology,
-                reasons);
-
-        //Change Topology : remove link2 and link4
-        Set<TopologyEdge> tempEdges = new HashSet<>();
-        tempEdges.add(new DefaultTopologyEdge(D2, D4, link2));
-        tempEdges.add(new DefaultTopologyEdge(D3, D4, link4));
-        topologyService.changeInTopology(getGraph(null,  tempEdges));
-        listener.event(event);
-
-        //No Path
-        assertThat(pathService.paths().size(), is(0));
-    }
-
-    /**
-     * Tests resiliency when D2 device is down.
-     */
-    @Test
-    public void resiliencyTest3() {
-        build4RouterTopo(true, false, false, false, 10);
-
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(COST);
-        constraints.add(costConstraint);
-        PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
-        constraints.add(localBwConst);
-
-        //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
-        assertThat(result, is(true));
-
-        List<Event> reasons = new LinkedList<>();
-        LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2);
-        reasons.add(linkEvent);
-        linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link1);
-        reasons.add(linkEvent);
-        final TopologyEvent event = new TopologyEvent(
-                TopologyEvent.Type.TOPOLOGY_CHANGED,
-                topology,
-                reasons);
-
-        //Change Topology : remove link2 and link1
-        Set<TopologyEdge> tempEdges = new HashSet<>();
-        tempEdges.add(new DefaultTopologyEdge(D2, D4, link2));
-        tempEdges.add(new DefaultTopologyEdge(D1, D2, link1));
-        topologyService.changeInTopology(getGraph(null,  tempEdges));
-        listener.event(event);
-
-        List<Link> links = new LinkedList<>();
-        links.add(link3);
-        links.add(link4);
-
-        Path path = tunnelService.queryAllTunnels().iterator().next().path();
-        //Path is D1-D3-D4
-        assertThat(path.links(), is(links));
-        assertThat(path.weight(), is(ScalarWeight.toWeight(180.0)));
-    }
-
-    /**
-     * Tests resiliency when ingress device is down.
-     */
-    @Test
-    public void resiliencyTest4() {
-        build4RouterTopo(true, false, false, false, 10);
-
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(COST);
-        constraints.add(costConstraint);
-        PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
-        constraints.add(localBwConst);
-
-        //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
-        assertThat(result, is(true));
-
-        List<Event> reasons = new LinkedList<>();
-        LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link3);
-        reasons.add(linkEvent);
-        linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link1);
-        reasons.add(linkEvent);
-        final TopologyEvent event = new TopologyEvent(
-                TopologyEvent.Type.TOPOLOGY_CHANGED,
-                topology,
-                reasons);
-
-        //Change Topology : remove link2 and link1
-        Set<TopologyEdge> tempEdges = new HashSet<>();
-        tempEdges.add(new DefaultTopologyEdge(D1, D3, link3));
-        tempEdges.add(new DefaultTopologyEdge(D1, D2, link1));
-        topologyService.changeInTopology(getGraph(null,  tempEdges));
-        listener.event(event);
-
-        //No path
-        assertThat(pathService.paths().size(), is(0));
-    }
-
-    /**
-     * Tests resiliency when D2 and D3 devices are down.
-     */
-    @Test
-    public void resiliencyTest5() {
-        build4RouterTopo(true, false, false, false, 10);
-
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(COST);
-        constraints.add(costConstraint);
-        PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
-        constraints.add(localBwConst);
-
-        //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
-        assertThat(result, is(true));
-
-        List<Event> reasons = new LinkedList<>();
-        LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2);
-        reasons.add(linkEvent);
-        linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link1);
-        reasons.add(linkEvent);
-        linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link3);
-        reasons.add(linkEvent);
-        linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link4);
-        reasons.add(linkEvent);
-
-        final TopologyEvent event = new TopologyEvent(
-                TopologyEvent.Type.TOPOLOGY_CHANGED,
-                topology,
-                reasons);
-
-        //Change Topology : remove device2, device3 and all links
-        Set<TopologyEdge> tempEdges = new HashSet<>();
-        tempEdges.add(new DefaultTopologyEdge(D1, D2, link1));
-        tempEdges.add(new DefaultTopologyEdge(D2, D4, link2));
-        tempEdges.add(new DefaultTopologyEdge(D1, D3, link3));
-        tempEdges.add(new DefaultTopologyEdge(D3, D4, link4));
-        Set<TopologyVertex> tempVertexes = new HashSet<>();
-        tempVertexes.add(D2);
-        tempVertexes.add(D3);
-        topologyService.changeInTopology(getGraph(tempVertexes, tempEdges));
-        listener.event(event);
-
-        //No path
-        assertThat(pathService.paths().size(), is(0));
-    }
-
-    /**
-     * Tests resiliency when egress device is down.
-     */
-    @Test
-    public void resiliencyTest6() {
-        build4RouterTopo(true, false, false, false, 10);
-
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(COST);
-        constraints.add(costConstraint);
-        PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
-        constraints.add(localBwConst);
-
-        //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
-        assertThat(result, is(true));
-
-        List<Event> reasons = new LinkedList<>();
-        LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2);
-        reasons.add(linkEvent);
-        linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link4);
-        reasons.add(linkEvent);
-
-        final TopologyEvent event = new TopologyEvent(
-                TopologyEvent.Type.TOPOLOGY_CHANGED,
-                topology,
-                reasons);
-
-        //Change Topology : remove device4 , link2 and link4
-        Set<TopologyEdge> tempEdges = new HashSet<>();
-        tempEdges.add(new DefaultTopologyEdge(D2, D4, link2));
-        tempEdges.add(new DefaultTopologyEdge(D3, D4, link4));
-        Set<TopologyVertex> tempVertexes = new HashSet<>();
-        tempVertexes.add(D4);
-        topologyService.changeInTopology(getGraph(tempVertexes, tempEdges));
-        listener.event(event);
-
-        //No path
-        assertThat(pathService.paths().size(), is(0));
-    }
-
-    /**
-     * Tests resiliency when egress device is down.
-     */
-    @Test
-    public void resiliencyTest7() {
-        build4RouterTopo(true, false, false, false, 10);
-
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(COST);
-        constraints.add(costConstraint);
-        PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
-        constraints.add(localBwConst);
-
-        //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
-        assertThat(result, is(true));
-
-        List<Event> reasons = new LinkedList<>();
-        LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2);
-        reasons.add(linkEvent);
-        linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link4);
-        reasons.add(linkEvent);
-
-        final TopologyEvent event = new TopologyEvent(
-                TopologyEvent.Type.TOPOLOGY_CHANGED,
-                topology,
-                reasons);
-
-        //Change Topology : remove device4 , link2 and link4
-        Set<TopologyEdge> tempEdges = new HashSet<>();
-        tempEdges.add(new DefaultTopologyEdge(D2, D4, link2));
-        tempEdges.add(new DefaultTopologyEdge(D3, D4, link4));
-        Set<TopologyVertex> tempVertexes = new HashSet<>();
-        tempVertexes.add(D4);
-        topologyService.changeInTopology(getGraph(tempVertexes, tempEdges));
-        listener.event(event);
-
-        //No path
-        assertThat(pathService.paths().size(), is(0));
-    }
-
-    /**
-     * Tests resiliency when D2 device is suspended.
-     */
-    @Test
-    public void resiliencyTest8() {
-        build4RouterTopo(true, false, false, false, 10);
-
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(COST);
-        constraints.add(costConstraint);
-        PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
-        constraints.add(localBwConst);
-
-        //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
-        assertThat(result, is(true));
-
-        List<Event> reasons = new LinkedList<>();
-        LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link1);
-        reasons.add(linkEvent);
-        linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2);
-        reasons.add(linkEvent);
-
-        final TopologyEvent event = new TopologyEvent(
-                TopologyEvent.Type.TOPOLOGY_CHANGED,
-                topology,
-                reasons);
-
-        //Change Topology : remove device2 , link1 and link2
-        Set<TopologyEdge> tempEdges = new HashSet<>();
-        tempEdges.add(new DefaultTopologyEdge(D1, D2, link1));
-        tempEdges.add(new DefaultTopologyEdge(D2, D4, link2));
-        Set<TopologyVertex> tempVertexes = new HashSet<>();
-        tempVertexes.add(D2);
-        topologyService.changeInTopology(getGraph(tempVertexes, tempEdges));
-        listener.event(event);
-
-        List<Link> links = new LinkedList<>();
-        links.add(link3);
-        links.add(link4);
-
-        Path path = tunnelService.queryAllTunnels().iterator().next().path();
-
-        //Path is D1-D3-D4
-        assertThat(path.links(), is(links));
-        assertThat(path.weight(), is(ScalarWeight.toWeight(180.0)));
-    }
-
-    /**
-     * Tests resiliency when D2 device availability is changed.
-     */
-    @Test
-    public void resiliencyTest11() {
-        build4RouterTopo(true, false, false, false, 10);
-
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(COST);
-        constraints.add(costConstraint);
-        PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
-        constraints.add(localBwConst);
-
-        //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
-        assertThat(result, is(true));
-
-        List<Event> reasons = new LinkedList<>();
-        LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link1);
-        reasons.add(linkEvent);
-        linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2);
-        reasons.add(linkEvent);
-
-        final TopologyEvent event = new TopologyEvent(
-                TopologyEvent.Type.TOPOLOGY_CHANGED,
-                topology,
-                reasons);
-
-        //Change Topology : remove device2 , link1 and link2
-        Set<TopologyEdge> tempEdges = new HashSet<>();
-        tempEdges.add(new DefaultTopologyEdge(D1, D2, link1));
-        tempEdges.add(new DefaultTopologyEdge(D2, D4, link2));
-        Set<TopologyVertex> tempVertexes = new HashSet<>();
-        tempVertexes.add(D2);
-        topologyService.changeInTopology(getGraph(tempVertexes, tempEdges));
-        listener.event(event);
-
-        List<Link> links = new LinkedList<>();
-        links.add(link3);
-        links.add(link4);
-
-        Path path = tunnelService.queryAllTunnels().iterator().next().path();
-
-        //Path is D1-D3-D4
-        assertThat(path.links(), is(links));
-        assertThat(path.weight(), is(ScalarWeight.toWeight(180.0)));
-    }
-
-    /**
-     * Tests resiliency when link2 availability is changed.
-     */
-    @Test
-    public void resiliencyTest12() {
-        build4RouterTopo(true, false, false, false, 10);
-
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(COST);
-        constraints.add(costConstraint);
-        PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
-        constraints.add(localBwConst);
-
-        List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-        ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, link1);
-        explicitPathInfoList.add(obj);
-        obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
-        explicitPathInfoList.add(obj);
-
-        //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, explicitPathInfoList);
-        assertThat(result, is(true));
-        assertThat(pceStore.getFailedPathInfoCount(), is(0));
-
-        List<Event> reasons = new LinkedList<>();
-        final LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2);
-        reasons.add(linkEvent);
-        final TopologyEvent event = new TopologyEvent(
-                TopologyEvent.Type.TOPOLOGY_CHANGED,
-                topology,
-                reasons);
-
-        //Change Topology : remove link2
-        Set<TopologyEdge> tempEdges = new HashSet<>();
-        tempEdges.add(new DefaultTopologyEdge(D2, D4, link2));
-        topologyService.changeInTopology(getGraph(null,  tempEdges));
-        listener.event(event);
-
-        List<Link> links = new LinkedList<>();
-        links.add(link3);
-        links.add(link4);
-
-        //Path fails - no alternate path
-        assertThat(pathService.paths().iterator().hasNext(), is(false));
-    }
-
-    @After
-    public void tearDown() {
-        pceManager.deactivate();
-        pceManager.pathService = null;
-        pceManager.tunnelService = null;
-        pceManager.coreService = null;
-        pceManager.storageService = null;
-        pceManager.deviceService = null;
-        pceManager.netCfgService = null;
-        pceManager.pceStore = null;
-        pceManager.topologyService = null;
-        pceManager.mastershipService = null;
-        flowsDownloaded = 0;
-    }
-
-    private class MockTopologyService extends TopologyServiceAdapter {
-        private void changeInTopology(TopologyGraph graphModified) {
-            graph = graphModified;
-        }
-
-        @Override
-        public Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst, LinkWeigher weight) {
-            DefaultTopologyVertex srcV = new DefaultTopologyVertex(src);
-            DefaultTopologyVertex dstV = new DefaultTopologyVertex(dst);
-            Set<TopologyVertex> vertices = graph.getVertexes();
-            if (!vertices.contains(srcV) || !vertices.contains(dstV)) {
-                // src or dst not part of the current graph
-                return ImmutableSet.of();
-            }
-
-            GraphPathSearch.Result<TopologyVertex, TopologyEdge> result = PathComputationTest.graphSearch()
-                    .search(graph, srcV, dstV, weight, ALL_PATHS);
-            ImmutableSet.Builder<Path> builder = ImmutableSet.builder();
-            for (org.onlab.graph.Path<TopologyVertex, TopologyEdge> path : result.paths()) {
-                builder.add(PathComputationTest.networkPath(path));
-            }
-            return builder.build();
-        }
-    }
-
-    private TopologyGraph getGraph(Set<TopologyVertex> removedVertex, Set<TopologyEdge> removedEdges) {
-        if (removedVertex != null) {
-            vertexes.remove(removedVertex);
-            removedVertex.forEach(new Consumer<TopologyVertex>() {
-                @Override
-                public void accept(TopologyVertex v) {
-                    vertexes.remove(v);
-                }
-            });
-        }
-
-        if (removedEdges != null) {
-            removedEdges.forEach(new Consumer<TopologyEdge>() {
-                @Override
-                public void accept(TopologyEdge e) {
-                    edges.remove(e);
-                }
-            });
-        }
-
-        return new DefaultTopologyGraph(vertexes, edges);
-    }
-
-    private class MockPathService extends PathServiceAdapter {
-        Set<Path> computedPaths;
-        @Override
-        public Set<Path> getPaths(ElementId src, ElementId dst, LinkWeigher weight) {
-            // If either edge is null, bail with no paths.
-            if (src == null || dst == null) {
-                return ImmutableSet.of();
-            }
-
-            // Otherwise get all paths between the source and destination edge
-            // devices.
-            computedPaths = topologyService.getPaths(null, (DeviceId) src, (DeviceId) dst, weight);
-            return computedPaths;
-        }
-
-        private Set<Path> paths() {
-            return computedPaths;
-        }
-    }
-
-    private class MockTunnelServiceAdapter extends TunnelServiceAdapter {
-        private HashMap<TunnelId, Tunnel> tunnelIdAsKeyStore = new HashMap<TunnelId, Tunnel>();
-        private int tunnelIdCounter = 0;
-
-        @Override
-        public TunnelId setupTunnel(ApplicationId producerId, ElementId srcElementId, Tunnel tunnel, Path path) {
-            TunnelId tunnelId = TunnelId.valueOf(String.valueOf(++tunnelIdCounter));
-            Tunnel tunnelToInsert = new DefaultTunnel(tunnel.providerId(), tunnel.src(), tunnel.dst(), tunnel.type(),
-                                                      tunnel.state(), tunnel.groupId(), tunnelId, tunnel.tunnelName(),
-                                                      path, tunnel.annotations());
-            tunnelIdAsKeyStore.put(tunnelId, tunnelToInsert);
-            return tunnelId;
-        }
-
-        @Override
-        public void addListener(TunnelListener listener) {
-            tunnelListener = listener;
-        }
-
-        /**
-         * Stimulates the effect of receiving PLSP id and LSP id from protocol PCRpt msg.
-         */
-        public TunnelId updateTunnelWithLspIds(Tunnel tunnel, String pLspId, String localLspId, State state) {
-            TunnelId tunnelId = tunnel.tunnelId();
-            Builder annotationBuilder = DefaultAnnotations.builder();
-            annotationBuilder.putAll(tunnel.annotations());
-
-            // PCRpt in response to PCInitate msg will carry PLSP id allocated by PCC.
-            if (tunnel.annotations().value(PLSP_ID) == null) {
-                annotationBuilder.set(PLSP_ID, pLspId);
-            }
-
-            // Signalled LSPs will carry local LSP id allocated by signalling protocol(PCC).
-            if (tunnel.annotations().value(LOCAL_LSP_ID) == null) {
-                annotationBuilder.set(LOCAL_LSP_ID, localLspId);
-            }
-            SparseAnnotations annotations = annotationBuilder.build();
-            tunnelIdAsKeyStore.remove(tunnelId, tunnel);
-
-            Tunnel tunnelToInsert = new DefaultTunnel(tunnel.providerId(), tunnel.src(), tunnel.dst(), tunnel.type(),
-                                                      state, tunnel.groupId(), tunnelId, tunnel.tunnelName(),
-                                                      tunnel.path(), annotations);
-
-            tunnelIdAsKeyStore.put(tunnelId, tunnelToInsert);
-
-            return tunnelId;
-        }
-
-        @Override
-        public boolean downTunnel(ApplicationId producerId, TunnelId tunnelId) {
-            for (TunnelId tunnelIdKey : tunnelIdAsKeyStore.keySet()) {
-                if (tunnelIdKey.equals(tunnelId)) {
-                    tunnelIdAsKeyStore.remove(tunnelId);
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        @Override
-        public Tunnel queryTunnel(TunnelId tunnelId) {
-            for (TunnelId tunnelIdKey : tunnelIdAsKeyStore.keySet()) {
-                if (tunnelIdKey.equals(tunnelId)) {
-                    return tunnelIdAsKeyStore.get(tunnelId);
-                }
-            }
-            return null;
-        }
-
-        @Override
-        public Collection<Tunnel> queryTunnel(TunnelEndPoint src, TunnelEndPoint dst) {
-            Collection<Tunnel> result = new HashSet<Tunnel>();
-            Tunnel tunnel = null;
-            for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) {
-                tunnel = tunnelIdAsKeyStore.get(tunnelId);
-
-                if ((null != tunnel) && (src.equals(tunnel.src())) && (dst.equals(tunnel.dst()))) {
-                    result.add(tunnel);
-                }
-            }
-
-            return result.size() == 0 ? Collections.emptySet() : ImmutableSet.copyOf(result);
-        }
-
-        @Override
-        public Collection<Tunnel> queryTunnel(Tunnel.Type type) {
-            Collection<Tunnel> result = new HashSet<Tunnel>();
-
-            for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) {
-                result.add(tunnelIdAsKeyStore.get(tunnelId));
-            }
-
-            return result.size() == 0 ? Collections.emptySet() : ImmutableSet.copyOf(result);
-        }
-
-        @Override
-        public Collection<Tunnel> queryAllTunnels() {
-            Collection<Tunnel> result = new HashSet<Tunnel>();
-
-            for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) {
-                result.add(tunnelIdAsKeyStore.get(tunnelId));
-            }
-
-            return result.size() == 0 ? Collections.emptySet() : ImmutableSet.copyOf(result);
-        }
-
-        @Override
-        public Iterable<Tunnel> getTunnels(DeviceId deviceId) {
-            List<Tunnel> tunnelList = new LinkedList<>();
-
-            for (Tunnel t : tunnelIdAsKeyStore.values()) {
-                for (Link l : t.path().links()) {
-                    if (l.src().deviceId().equals(deviceId) || l.dst().deviceId().equals(deviceId)) {
-                        tunnelList.add(t);
-                        break;
-                    }
-                }
-            }
-            return tunnelList;
-        }
-    }
-
-    public static class MockCoreService extends CoreServiceAdapter {
-
-        @Override
-        public ApplicationId registerApplication(String name) {
-            return new DefaultApplicationId(1, name);
-        }
-
-        @Override
-        public IdGenerator getIdGenerator(String topic) {
-            return new IdGenerator() {
-                private AtomicLong counter = new AtomicLong(0);
-
-                @Override
-                public long getNewId() {
-                    return counter.getAndIncrement();
-                }
-            };
-        }
-    }
-
-    private class MockDevice extends DefaultDevice {
-        MockDevice(DeviceId id, Annotations annotations) {
-            super(null, id, null, null, null, null, null, null, annotations);
-        }
-    }
-}
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/ResourceServiceAdapter.java b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/ResourceServiceAdapter.java
deleted file mode 100644
index fb579c9..0000000
--- a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/ResourceServiceAdapter.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pceservice;
-
-import org.onosproject.net.resource.DiscreteResourceId;
-import org.onosproject.net.resource.ResourceAllocation;
-import org.onosproject.net.resource.ResourceConsumer;
-import org.onosproject.net.resource.ResourceId;
-import org.onosproject.net.resource.ResourceListener;
-import org.onosproject.net.resource.Resource;
-import org.onosproject.net.resource.ResourceService;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Adapter for resource service for path computation.
- */
-public class ResourceServiceAdapter implements ResourceService {
-
-    @Override
-    public void addListener(ResourceListener listener) {
-        // TODO Auto-generated method stub
-    }
-
-    @Override
-    public void removeListener(ResourceListener listener) {
-        // TODO Auto-generated method stub
-    }
-
-    @Override
-    public List<ResourceAllocation> allocate(ResourceConsumer consumer, List<? extends Resource> resources) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public boolean release(List<ResourceAllocation> allocations) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
-    public boolean release(ResourceConsumer consumer) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
-    public List<ResourceAllocation> getResourceAllocations(ResourceId id) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public <T> Collection<ResourceAllocation> getResourceAllocations(DiscreteResourceId parent, Class<T> cls) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Collection<ResourceAllocation> getResourceAllocations(ResourceConsumer consumer) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Set<Resource> getAvailableResources(DiscreteResourceId parent) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public <T> Set<Resource> getAvailableResources(DiscreteResourceId parent, Class<T> cls) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public <T> Set<T> getAvailableResourceValues(DiscreteResourceId parent, Class<T> cls) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Set<Resource> getRegisteredResources(DiscreteResourceId parent) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public boolean isAvailable(Resource resource) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-}
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/DistributedPceStoreTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/DistributedPceStoreTest.java
deleted file mode 100644
index ec378c4..0000000
--- a/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/DistributedPceStoreTest.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pcestore;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onlab.util.DataRateUnit;
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.intent.Constraint;
-import org.onosproject.net.intent.constraint.BandwidthConstraint;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.resource.ResourceConsumer;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
-import org.onosproject.pce.pceservice.LspType;
-import org.onosproject.pce.pceservice.TunnelConsumerId;
-import org.onosproject.store.service.TestStorageService;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit tests for DistributedPceStore class.
- */
-public class DistributedPceStoreTest {
-
-    private DistributedPceStore distrPceStore;
-    private DeviceId deviceId1 = DeviceId.deviceId("foo");
-    private DeviceId deviceId2 = DeviceId.deviceId("goo");
-    private DeviceId deviceId3 = DeviceId.deviceId("yaa");
-    private DeviceId deviceId4 = DeviceId.deviceId("zoo");
-    private LabelResourceId labelId1 = LabelResourceId.labelResourceId(1);
-    private LabelResourceId labelId2 = LabelResourceId.labelResourceId(2);
-    private LabelResourceId labelId3 = LabelResourceId.labelResourceId(3);
-    private LabelResourceId labelId4 = LabelResourceId.labelResourceId(4);
-    private PortNumber portNumber1 = PortNumber.portNumber(1);
-    private PortNumber portNumber2 = PortNumber.portNumber(2);
-    private PortNumber portNumber3 = PortNumber.portNumber(3);
-    private PortNumber portNumber4 = PortNumber.portNumber(4);
-    private ConnectPoint srcConnectionPoint1 = new ConnectPoint(deviceId1, portNumber1);
-    private ConnectPoint dstConnectionPoint2 = new ConnectPoint(deviceId2, portNumber2);
-    private ConnectPoint srcConnectionPoint3 = new ConnectPoint(deviceId3, portNumber3);
-    private ConnectPoint dstConnectionPoint4 = new ConnectPoint(deviceId4, portNumber4);
-    private Link link1;
-    private Link link2;
-    private TunnelId tunnelId1 = TunnelId.valueOf("1");
-    private TunnelId tunnelId2 = TunnelId.valueOf("2");
-    private TunnelId tunnelId3 = TunnelId.valueOf("3");
-    private TunnelId tunnelId4 = TunnelId.valueOf("4");
-    private ResourceConsumer tunnelConsumerId1 = TunnelConsumerId.valueOf(10);
-    private ResourceConsumer tunnelConsumerId2 = TunnelConsumerId.valueOf(20);
-    private PcePathInfo failedPathInfo1;
-    private PcePathInfo failedPathInfo2;
-    private PcePathInfo failedPathInfo3;
-    private PcePathInfo failedPathInfo4;
-
-    @BeforeClass
-    public static void setUpBeforeClass() throws Exception {
-    }
-
-    @AfterClass
-    public static void tearDownAfterClass() throws Exception {
-    }
-
-    @Before
-    public void setUp() throws Exception {
-       distrPceStore = new DistributedPceStore();
-
-       // Initialization of member variables
-       link1 = DefaultLink.builder()
-                          .providerId(new ProviderId("eth", "1"))
-                          .annotations(DefaultAnnotations.builder().set("key1", "yahoo").build())
-                          .src(srcConnectionPoint1)
-                          .dst(dstConnectionPoint2)
-                          .type(Link.Type.DIRECT)
-                          .state(Link.State.ACTIVE)
-                          .build();
-       link2 = DefaultLink.builder()
-                          .providerId(new ProviderId("mac", "2"))
-                          .annotations(DefaultAnnotations.builder().set("key2", "google").build())
-                          .src(srcConnectionPoint3)
-                          .dst(dstConnectionPoint4)
-                          .type(Link.Type.DIRECT)
-                          .state(Link.State.ACTIVE)
-                          .build();
-
-       // Creates failedPathInfo1
-       DeviceId src1 = DeviceId.deviceId("foo1");
-       DeviceId dst1 = DeviceId.deviceId("goo1");
-       String name1 = "pcc1";
-       LspType lspType1 = LspType.SR_WITHOUT_SIGNALLING;
-       List<Constraint> constraints1 = new LinkedList<>();
-       Constraint bandwidth1 = BandwidthConstraint.of(200, DataRateUnit.BPS);
-       constraints1.add(bandwidth1);
-
-       failedPathInfo1 = new PcePathInfo(src1, dst1, name1, constraints1, lspType1, null, false);
-
-       // Creates failedPathInfo2
-       DeviceId src2 = DeviceId.deviceId("foo2");
-       DeviceId dst2 = DeviceId.deviceId("goo2");
-       String name2 = "pcc2";
-       LspType lspType2 = LspType.SR_WITHOUT_SIGNALLING;
-       List<Constraint> constraints2 = new LinkedList<>();
-       Constraint bandwidth2 = BandwidthConstraint.of(400, DataRateUnit.BPS);
-       constraints2.add(bandwidth2);
-
-       failedPathInfo2 = new PcePathInfo(src2, dst2, name2, constraints2, lspType2, null, false);
-
-       // Creates failedPathInfo3
-       DeviceId src3 = DeviceId.deviceId("foo3");
-       DeviceId dst3 = DeviceId.deviceId("goo3");
-       String name3 = "pcc3";
-       LspType lspType3 = LspType.SR_WITHOUT_SIGNALLING;
-       List<Constraint> constraints3 = new LinkedList<>();
-       Constraint bandwidth3 = BandwidthConstraint.of(500, DataRateUnit.BPS);
-       constraints3.add(bandwidth3);
-
-       failedPathInfo3 = new PcePathInfo(src3, dst3, name3, constraints3, lspType3, null, false);
-
-       // Creates failedPathInfo4
-       DeviceId src4 = DeviceId.deviceId("foo4");
-       DeviceId dst4 = DeviceId.deviceId("goo4");
-       String name4 = "pcc4";
-       LspType lspType4 = LspType.SR_WITHOUT_SIGNALLING;
-       List<Constraint> constraints4 = new LinkedList<>();
-       Constraint bandwidth4 = BandwidthConstraint.of(600, DataRateUnit.BPS);
-       constraints4.add(bandwidth4);
-
-       failedPathInfo4 = new PcePathInfo(src4, dst4, name4, constraints4, lspType4, null, false);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-    }
-
-    /**
-     * Checks the operation of addTunnelInfo() method.
-     */
-    @Test
-    public void testAddExplicitPathInfo() {
-        // initialization
-        distrPceStore.storageService = new TestStorageService();
-        distrPceStore.activate();
-
-        List<ExplicitPathInfo> infoList = new LinkedList<>();
-        ExplicitPathInfo info1 = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, DeviceId.deviceId("D1"));
-        infoList.add(info1);
-        distrPceStore.tunnelNameExplicitPathInfoMap("Sample1", infoList);
-        assertThat(distrPceStore.getTunnelNameExplicitPathInfoMap("Sample1"), is(infoList));
-    }
-
-    /**
-     * Checks the operation of addFailedPathInfo() method.
-     */
-    @Test
-    public void testAddFailedPathInfo() {
-        // initialization
-        distrPceStore.storageService = new TestStorageService();
-        distrPceStore.activate();
-
-        // PcePathInfo with pce path input information
-        distrPceStore.addFailedPathInfo(failedPathInfo1);
-        assertThat(distrPceStore.existsFailedPathInfo(failedPathInfo1), is(true));
-        distrPceStore.addFailedPathInfo(failedPathInfo2);
-        assertThat(distrPceStore.existsFailedPathInfo(failedPathInfo2), is(true));
-    }
-
-    /**
-     * Checks the operation of existsFailedPathInfo() method.
-     */
-    @Test
-    public void testExistsFailedPathInfo() {
-        testAddFailedPathInfo();
-
-        assertThat(distrPceStore.existsFailedPathInfo(failedPathInfo1), is(true));
-        assertThat(distrPceStore.existsFailedPathInfo(failedPathInfo2), is(true));
-        assertThat(distrPceStore.existsFailedPathInfo(failedPathInfo3), is(false));
-        assertThat(distrPceStore.existsFailedPathInfo(failedPathInfo4), is(false));
-    }
-
-    /**
-     * Checks the operation of getFailedPathInfoCount() method.
-     */
-    @Test
-    public void testGetFailedPathInfoCount() {
-        testAddFailedPathInfo();
-
-        assertThat(distrPceStore.getFailedPathInfoCount(), is(2));
-    }
-
-    /**
-     * Checks the operation of getFailedPathInfos() method.
-     */
-    @Test
-    public void testGetFailedPathInfos() {
-        testAddFailedPathInfo();
-
-        Iterable<PcePathInfo> failedPathInfoSet = distrPceStore.getFailedPathInfos();
-        assertThat(failedPathInfoSet, is(notNullValue()));
-        assertThat(failedPathInfoSet.iterator().hasNext(), is(true));
-    }
-
-    /**
-     * Checks the operation of removeFailedPathInfo() method.
-     */
-    @Test
-    public void testRemoveFailedPathInfo() {
-        testAddFailedPathInfo();
-
-        assertThat(distrPceStore.removeFailedPathInfo(failedPathInfo1), is(true));
-        assertThat(distrPceStore.removeFailedPathInfo(failedPathInfo2), is(true));
-        assertThat(distrPceStore.removeFailedPathInfo(failedPathInfo3), is(false));
-        assertThat(distrPceStore.removeFailedPathInfo(failedPathInfo4), is(false));
-    }
-}
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/PcePathInfoTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/PcePathInfoTest.java
deleted file mode 100644
index 4d31d68..0000000
--- a/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/PcePathInfoTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.pcestore;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-
-import com.google.common.testing.EqualsTester;
-
-import java.util.List;
-import java.util.LinkedList;
-
-import org.junit.Test;
-import org.onlab.util.DataRateUnit;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.intent.Constraint;
-import org.onosproject.net.intent.constraint.BandwidthConstraint;
-import org.onosproject.pce.pceservice.LspType;
-
-/**
- * Unit tests for PcePathInfo class.
- */
-public class PcePathInfoTest {
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        // create same two objects.
-        DeviceId src1 = DeviceId.deviceId("foo1");
-        DeviceId dst1 = DeviceId.deviceId("goo1");
-        String name1 = "pcc1";
-        LspType lspType1 = LspType.WITH_SIGNALLING;
-        List<Constraint> constraints1 = new LinkedList<>();
-        Constraint bandwidth11 = BandwidthConstraint.of(100, DataRateUnit.BPS);
-        constraints1.add(bandwidth11);
-        Constraint bandwidth12 = BandwidthConstraint.of(200, DataRateUnit.BPS);
-        constraints1.add(bandwidth12);
-        Constraint bandwidth13 = BandwidthConstraint.of(300, DataRateUnit.BPS);
-        constraints1.add(bandwidth13);
-
-        PcePathInfo pathInfo1 = new PcePathInfo(src1, dst1, name1, constraints1, lspType1, null, false);
-
-        // create same object as above object
-        PcePathInfo samePathInfo1 = new PcePathInfo(src1, dst1, name1, constraints1, lspType1, null, false);
-
-        // Create different object.
-        DeviceId src2 = DeviceId.deviceId("foo2");
-        DeviceId dst2 = DeviceId.deviceId("goo2");
-        String name2 = "pcc2";
-        LspType lspType2 = LspType.SR_WITHOUT_SIGNALLING;
-        List<Constraint> constraints2 = new LinkedList<>();
-        Constraint bandwidth21 = BandwidthConstraint.of(400, DataRateUnit.BPS);
-        constraints2.add(bandwidth21);
-        Constraint bandwidth22 = BandwidthConstraint.of(800, DataRateUnit.BPS);
-        constraints2.add(bandwidth22);
-
-        PcePathInfo pathInfo2 = new PcePathInfo(src2, dst2, name2, constraints2, lspType2, null, false);
-
-        new EqualsTester().addEqualityGroup(pathInfo1, samePathInfo1)
-                          .addEqualityGroup(pathInfo2)
-                          .testEquals();
-    }
-
-    /**
-     * Checks the construction of a PcePathInfo object.
-     */
-    @Test
-    public void testConstruction() {
-        DeviceId src = DeviceId.deviceId("foo2");
-        DeviceId dst = DeviceId.deviceId("goo2");
-        String name = "pcc2";
-        LspType lspType = LspType.SR_WITHOUT_SIGNALLING;
-        List<Constraint> constraints = new LinkedList<>();
-        Constraint bandwidth1 = BandwidthConstraint.of(100, DataRateUnit.BPS);
-        constraints.add(bandwidth1);
-        Constraint bandwidth2 = BandwidthConstraint.of(200, DataRateUnit.BPS);
-        constraints.add(bandwidth2);
-        Constraint bandwidth3 = BandwidthConstraint.of(300, DataRateUnit.BPS);
-        constraints.add(bandwidth3);
-
-        PcePathInfo pathInfo = new PcePathInfo(src, dst, name, constraints, lspType, null, false);
-
-        assertThat(src, is(pathInfo.src()));
-        assertThat(dst, is(pathInfo.dst()));
-        assertThat(name, is(pathInfo.name()));
-        assertThat(constraints, is(pathInfo.constraints()));
-        assertThat(lspType, is(pathInfo.lspType()));
-    }
-}
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/util/LabelResourceAdapter.java b/apps/pce/app/src/test/java/org/onosproject/pce/util/LabelResourceAdapter.java
deleted file mode 100644
index 3b7195a..0000000
--- a/apps/pce/app/src/test/java/org/onosproject/pce/util/LabelResourceAdapter.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.util;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.Random;
-import java.util.Set;
-
-import org.onosproject.incubator.net.resource.label.DefaultLabelResource;
-import org.onosproject.incubator.net.resource.label.LabelResource;
-import org.onosproject.incubator.net.resource.label.LabelResourceAdminService;
-import org.onosproject.incubator.net.resource.label.LabelResourceDelegate;
-import org.onosproject.incubator.net.resource.label.LabelResourceEvent;
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.incubator.net.resource.label.LabelResourceListener;
-import org.onosproject.incubator.net.resource.label.LabelResourcePool;
-import org.onosproject.incubator.net.resource.label.LabelResourceProvider;
-import org.onosproject.incubator.net.resource.label.LabelResourceProviderRegistry;
-import org.onosproject.incubator.net.resource.label.LabelResourceProviderService;
-import org.onosproject.incubator.net.resource.label.LabelResourceService;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.device.DeviceEvent;
-import org.onosproject.net.device.DeviceEvent.Type;
-import org.onosproject.net.device.DeviceListener;
-import org.onosproject.net.provider.AbstractListenerProviderRegistry;
-import org.onosproject.net.provider.AbstractProviderService;
-
-import com.google.common.collect.Multimap;
-
-/**
- * Provides test implementation of class LabelResourceService.
- */
-public class LabelResourceAdapter
-        extends AbstractListenerProviderRegistry<LabelResourceEvent, LabelResourceListener,
-                                                 LabelResourceProvider, LabelResourceProviderService>
-        implements LabelResourceService, LabelResourceAdminService, LabelResourceProviderRegistry {
-    public static final long GLOBAL_LABEL_SPACE_MIN = 4097;
-    public static final long GLOBAL_LABEL_SPACE_MAX = 5121;
-    public static final long LOCAL_LABEL_SPACE_MIN = 5122;
-    public static final long LOCAL_LABEL_SPACE_MAX = 9217;
-
-    private Random random = new Random();
-
-    @Override
-    public boolean createDevicePool(DeviceId deviceId,
-                                    LabelResourceId beginLabel,
-                                    LabelResourceId endLabel) {
-       return true;
-    }
-
-    @Override
-    public boolean createGlobalPool(LabelResourceId beginLabel,
-                                    LabelResourceId endLabel) {
-       return true;
-    }
-
-    @Override
-    public boolean destroyDevicePool(DeviceId deviceId) {
-       return true;
-    }
-
-    @Override
-    public boolean destroyGlobalPool() {
-       return true;
-    }
-
-    public long getLabelId(long min, long max) {
-      return random.nextInt((int) max - (int) min + 1) + (int) min;
-    }
-
-    public Collection<LabelResource> applyFromDevicePool(DeviceId deviceId,
-                                                  long applyNum) {
-        Collection<LabelResource> labelList = new LinkedList<>();
-        LabelResource label = new DefaultLabelResource(deviceId,
-                                  LabelResourceId.labelResourceId(
-                                  getLabelId(LOCAL_LABEL_SPACE_MIN, LOCAL_LABEL_SPACE_MAX)));
-        labelList.add(label);
-        return labelList;
-    }
-
-    public Collection<LabelResource> applyFromGlobalPool(long applyNum) {
-        Collection<LabelResource> labelList = new LinkedList<>();
-        LabelResource label = new DefaultLabelResource(DeviceId.deviceId("foo"),
-                                  LabelResourceId.labelResourceId(
-                                  getLabelId(GLOBAL_LABEL_SPACE_MIN, GLOBAL_LABEL_SPACE_MAX)));
-        labelList.add(label);
-        return labelList;
-    }
-
-    public boolean releaseToDevicePool(Multimap<DeviceId, LabelResource> release) {
-       return true;
-    }
-
-    public boolean releaseToGlobalPool(Set<LabelResourceId> release) {
-       return true;
-    }
-
-    public boolean isDevicePoolFull(DeviceId deviceId) {
-       return false;
-    }
-
-    public boolean isGlobalPoolFull() {
-       return false;
-    }
-
-    public long getFreeNumOfDevicePool(DeviceId deviceId) {
-       return 4;
-    }
-
-    public long getFreeNumOfGlobalPool() {
-       return 4;
-    }
-
-    @Override
-    public LabelResourcePool getDeviceLabelResourcePool(DeviceId deviceId) {
-       return null;
-    }
-
-    @Override
-    public LabelResourcePool getGlobalLabelResourcePool() {
-       return null;
-    }
-
-    private class InternalLabelResourceDelegate implements LabelResourceDelegate {
-        @Override
-        public void notify(LabelResourceEvent event) {
-            post(event);
-        }
-
-    }
-
-    private class InternalDeviceListener implements DeviceListener {
-        @Override
-        public void event(DeviceEvent event) {
-            Device device = event.subject();
-            if (Type.DEVICE_REMOVED.equals(event.type())) {
-                destroyDevicePool(device.id());
-            }
-        }
-    }
-
-    private class InternalLabelResourceProviderService
-            extends AbstractProviderService<LabelResourceProvider>
-            implements LabelResourceProviderService {
-
-        protected InternalLabelResourceProviderService(LabelResourceProvider provider) {
-            super(provider);
-        }
-
-        @Override
-        public void deviceLabelResourcePoolDetected(DeviceId deviceId,
-                                                    LabelResourceId beginLabel,
-                                                    LabelResourceId endLabel) {
-            checkNotNull(deviceId, "deviceId is not null");
-            checkNotNull(beginLabel, "beginLabel is not null");
-            checkNotNull(endLabel, "endLabel is not null");
-            createDevicePool(deviceId, beginLabel, endLabel);
-        }
-
-        @Override
-        public void deviceLabelResourcePoolDestroyed(DeviceId deviceId) {
-            checkNotNull(deviceId, "deviceId is not null");
-            destroyDevicePool(deviceId);
-        }
-
-    }
-
-    @Override
-    protected LabelResourceProviderService createProviderService(LabelResourceProvider provider) {
-        return null;
-    }
-}
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/util/LinkServiceAdapter.java b/apps/pce/app/src/test/java/org/onosproject/pce/util/LinkServiceAdapter.java
deleted file mode 100644
index a239819..0000000
--- a/apps/pce/app/src/test/java/org/onosproject/pce/util/LinkServiceAdapter.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.util;
-
-import java.util.Set;
-
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.link.LinkListener;
-import org.onosproject.net.link.LinkService;
-import org.onosproject.net.Link.State;
-
-import com.google.common.collect.FluentIterable;
-
-/**
- * Test adapter for link service.
- */
-public class LinkServiceAdapter implements LinkService {
-    @Override
-    public int getLinkCount() {
-        return 0;
-    }
-
-    @Override
-    public Iterable<Link> getLinks() {
-        return null;
-    }
-
-    @Override
-    public Iterable<Link> getActiveLinks() {
-        return FluentIterable.from(getLinks())
-                .filter(input -> input.state() == State.ACTIVE);
-    }
-
-    @Override
-    public Set<Link> getDeviceLinks(DeviceId deviceId) {
-        return null;
-    }
-
-    @Override
-    public Set<Link> getDeviceEgressLinks(DeviceId deviceId) {
-        return null;
-    }
-
-    @Override
-    public Set<Link> getDeviceIngressLinks(DeviceId deviceId) {
-        return null;
-    }
-
-    @Override
-    public Set<Link> getLinks(ConnectPoint connectPoint) {
-        return null;
-    }
-
-    @Override
-    public Set<Link> getEgressLinks(ConnectPoint connectPoint) {
-        return null;
-    }
-
-    @Override
-    public Set<Link> getIngressLinks(ConnectPoint connectPoint) {
-        return null;
-    }
-
-    @Override
-    public Link getLink(ConnectPoint src, ConnectPoint dst) {
-        return null;
-    }
-
-    @Override
-    public void addListener(LinkListener listener) {
-    }
-
-    @Override
-    public void removeListener(LinkListener listener) {
-    }
-}
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/util/MockDeviceService.java b/apps/pce/app/src/test/java/org/onosproject/pce/util/MockDeviceService.java
deleted file mode 100644
index 937c0fa..0000000
--- a/apps/pce/app/src/test/java/org/onosproject/pce/util/MockDeviceService.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.util;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import org.onosproject.net.device.DeviceListener;
-import org.onosproject.net.device.DeviceServiceAdapter;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-
-/**
- * Test fixture for the device service.
- */
-public class MockDeviceService extends DeviceServiceAdapter {
-    private List<Device> devices = new LinkedList<>();
-    private DeviceListener listener;
-
-    public void addDevice(Device dev) {
-        devices.add(dev);
-    }
-
-    public void removeDevice(Device dev) {
-        devices.remove(dev);
-    }
-
-    @Override
-    public Device getDevice(DeviceId deviceId) {
-        for (Device dev : devices) {
-            if (dev.id().equals(deviceId)) {
-                return dev;
-            }
-        }
-        return null;
-    }
-
-    @Override
-    public Iterable<Device> getAvailableDevices() {
-        return devices;
-    }
-
-    @Override
-    public void addListener(DeviceListener listener) {
-        this.listener = listener;
-    }
-
-    /**
-     * Get the listener.
-     */
-    public DeviceListener getListener() {
-        return listener;
-    }
-}
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/util/MockLinkService.java b/apps/pce/app/src/test/java/org/onosproject/pce/util/MockLinkService.java
deleted file mode 100644
index bfca2c4..0000000
--- a/apps/pce/app/src/test/java/org/onosproject/pce/util/MockLinkService.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.util;
-
-import org.onosproject.net.Link;
-import org.onosproject.net.link.LinkServiceAdapter;
-import org.onosproject.net.link.LinkListener;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Test fixture for the link service.
- */
-public class MockLinkService extends LinkServiceAdapter {
-    List<Link> links = new ArrayList<>();
-    LinkListener listener;
-
-    @Override
-    public int getLinkCount() {
-        return links.size();
-    }
-
-    @Override
-    public Iterable<Link> getLinks() {
-        return links;
-    }
-
-    @Override
-    public void addListener(LinkListener listener) {
-        this.listener = listener;
-    }
-
-    /**
-     * Get listener.
-     */
-    public LinkListener getListener() {
-        return listener;
-    }
-
-    /**
-     * Add link.
-     *
-     * @param link needs to be added to list
-     */
-    public void addLink(Link link) {
-        links.add(link);
-    }
-
-    /**
-     * Delete link.
-     *
-     * @param link needs to be deleted from list
-     */
-    public void removeLink(Link link) {
-        links.remove(link);
-    }
-}
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/util/PceStoreAdapter.java b/apps/pce/app/src/test/java/org/onosproject/pce/util/PceStoreAdapter.java
deleted file mode 100644
index 79bb214..0000000
--- a/apps/pce/app/src/test/java/org/onosproject/pce/util/PceStoreAdapter.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pce.util;
-
-import com.google.common.collect.ImmutableSet;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
-import org.onosproject.pce.pcestore.PcePathInfo;
-import org.onosproject.pce.pcestore.api.PceStore;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Arrays;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Provides test implementation of PceStore.
- */
-public class PceStoreAdapter implements PceStore {
-
-    // Mapping tunnel with device local info with tunnel consumer id
-
-    // Set of Path info
-    private Set<PcePathInfo> failedPathInfoSet = new HashSet<>();
-
-    // Locally maintain with tunnel name as key and corresponding list of explicit path object
-    private Map<String, List<ExplicitPathInfo>> tunnelNameExplicitPathInfoMap = new HashMap<>();
-
-    //Mapping tunnel name with Disjoint paths
-    private Map<String, List<TunnelId>> loadBalancingPathNameTunnelIdInfo = new HashMap<>();
-
-    @Override
-    public boolean existsFailedPathInfo(PcePathInfo pathInfo) {
-        return failedPathInfoSet.contains(pathInfo);
-    }
-
-    @Override
-    public int getFailedPathInfoCount() {
-        return failedPathInfoSet.size();
-    }
-
-    @Override
-    public Iterable<PcePathInfo> getFailedPathInfos() {
-       return ImmutableSet.copyOf(failedPathInfoSet);
-    }
-
-    @Override
-    public void addFailedPathInfo(PcePathInfo pathInfo) {
-        failedPathInfoSet.add(pathInfo);
-    }
-
-    @Override
-    public boolean removeFailedPathInfo(PcePathInfo pathInfo) {
-        if (failedPathInfoSet.remove(pathInfo)) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean tunnelNameExplicitPathInfoMap(String tunnelName, List<ExplicitPathInfo> explicitPathInfo) {
-        tunnelNameExplicitPathInfoMap.put(tunnelName, explicitPathInfo);
-        return false;
-    }
-
-    @Override
-    public List<ExplicitPathInfo> getTunnelNameExplicitPathInfoMap(String tunnelName) {
-        return tunnelNameExplicitPathInfoMap.get(tunnelName);
-    }
-
-/*    @Override
-    public DisjointPath getDisjointPaths(String tunnelName) {
-        if (tunnelNameDisjointPathInfo.get(tunnelName) != null) {
-            return tunnelNameDisjointPathInfo.get(tunnelName);
-        }
-        return null;
-    }
-
-    @Override
-    public boolean addDisjointPathInfo(String tunnelName, DisjointPath path) {
-        return tunnelNameDisjointPathInfo.put(tunnelName, path) != null ? true : false;
-    }*/
-
-    @Override
-    public boolean addLoadBalancingTunnelIdsInfo(String loadBalancingPathName, TunnelId... tunnelIds) {
-        return loadBalancingPathNameTunnelIdInfo.put(loadBalancingPathName,
-                Arrays.asList(tunnelIds)) != null ? true : false;
-    }
-
-    @Override
-    public List<TunnelId> getLoadBalancingTunnelIds(String loadBalancingPathName) {
-        if (loadBalancingPathNameTunnelIdInfo.get(loadBalancingPathName) != null) {
-            return loadBalancingPathNameTunnelIdInfo.get(loadBalancingPathName);
-        }
-        return null;
-    }
-
-    @Override
-    public boolean removeLoadBalancingTunnelIdsInfo(String loadBalancingPathName) {
-        if (loadBalancingPathNameTunnelIdInfo.remove(loadBalancingPathName) == null) {
-            return false;
-        }
-        return true;
-    }
-
-/*    @Override
-    public boolean removeDisjointPathInfo(String tunnelName) {
-        if (tunnelNameDisjointPathInfo.remove(tunnelName) == null) {
-            return false;
-        }
-        return true;
-    }*/
-}
diff --git a/apps/pce/bandwidthmgmt/BUILD b/apps/pce/bandwidthmgmt/BUILD
deleted file mode 100644
index 755f9b2..0000000
--- a/apps/pce/bandwidthmgmt/BUILD
+++ /dev/null
@@ -1,16 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + KRYO + [
-    "//core/store/serializers:onos-core-serializers",
-    "//apps/pcep-api:onos-apps-pcep-api",
-]
-
-osgi_jar_with_tests(
-    deps = COMPILE_DEPS,
-)
-
-onos_app(
-    app_name = "org.onosproject.bandwidthmgmt",
-    category = "default",
-    description = "PCE Bandwidth Management.",
-    title = "PCE Bandwidth Management",
-    url = "http://onosproject.org",
-)
diff --git a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/BandwidthManager.java b/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/BandwidthManager.java
deleted file mode 100644
index a23c16e..0000000
--- a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/BandwidthManager.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.bandwidthmgr;
-
-import org.onosproject.bandwidthmgr.api.BandwidthMgmtService;
-import org.onosproject.bandwidthmgr.api.BandwidthMgmtStore;
-import org.onosproject.net.Link;
-import org.onosproject.net.LinkKey;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Implementation of PCE service.
- */
-@Component(immediate = true, service = BandwidthMgmtService.class)
-public class BandwidthManager implements BandwidthMgmtService {
-    private static final Logger log = LoggerFactory.getLogger(BandwidthManager.class);
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected BandwidthMgmtStore store;
-
-    @Activate
-    protected void activate() {
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        log.info("Stopped");
-    }
-
-    @Override
-    public Double getTeCost(LinkKey linkKey) {
-        checkNotNull(linkKey);
-        return store.getTeCost(linkKey);
-    }
-
-    @Override
-    public Double getAvailableBandwidth(LinkKey linkKey) {
-        checkNotNull(linkKey);
-        Set<Double> unResvBw = getUnreservedBw(linkKey);
-        Double localReservedBw = getAllocatedLocalReservedBw(linkKey);
-        if (unResvBw != null && localReservedBw != null) {
-
-            return unResvBw.iterator().next().doubleValue()
-                    - localReservedBw.doubleValue();
-        }
-        if (unResvBw != null) {
-            return unResvBw.iterator().next().doubleValue();
-        } else {
-            return null;
-        }
-    }
-
-    @Override
-    public boolean allocLocalReservedBw(LinkKey linkKey, Double bandwidth) {
-        checkNotNull(linkKey);
-        checkNotNull(bandwidth);
-        return store.allocLocalReservedBw(linkKey, bandwidth);
-    }
-
-    @Override
-    public boolean releaseLocalReservedBw(LinkKey linkkey, Double bandwidth) {
-        checkNotNull(linkkey);
-        checkNotNull(bandwidth);
-        return store.releaseLocalReservedBw(linkkey, bandwidth);
-    }
-
-    @Override
-    public Double getAllocatedLocalReservedBw(LinkKey linkkey) {
-        checkNotNull(linkkey);
-        return store.getAllocatedLocalReservedBw(linkkey);
-    }
-
-    @Override
-    public boolean addUnreservedBw(LinkKey linkKey, Set<Double> bandwidth) {
-        checkNotNull(linkKey);
-        checkNotNull(bandwidth);
-        return store.addUnreservedBw(linkKey, bandwidth);
-    }
-
-    @Override
-    public boolean removeUnreservedBw(LinkKey linkkey) {
-        checkNotNull(linkkey);
-        return store.removeUnreservedBw(linkkey);
-    }
-
-    @Override
-    public Set<Double> getUnreservedBw(LinkKey linkkey) {
-        checkNotNull(linkkey);
-        return store.getUnreservedBw(linkkey);
-    }
-
-    @Override
-    public boolean isBandwidthAvailable(Link link, Double bandwidth) {
-        checkNotNull(link);
-        checkNotNull(bandwidth);
-
-        LinkKey linkKey = LinkKey.linkKey(link);
-        Double localAllocBw = getAllocatedLocalReservedBw(linkKey);
-
-        Set<Double> unResvBw = getUnreservedBw(linkKey);
-        Double prirZeroBw = unResvBw.iterator().next();
-
-        return (bandwidth <= prirZeroBw -  (localAllocBw != null ? localAllocBw : 0));
-    }
-}
diff --git a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/DistributedBandwidthMgmtStore.java b/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/DistributedBandwidthMgmtStore.java
deleted file mode 100644
index 50bad95..0000000
--- a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/DistributedBandwidthMgmtStore.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.bandwidthmgr;
-
-import org.onlab.util.KryoNamespace;
-import org.onosproject.bandwidthmgr.api.BandwidthMgmtStore;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.LinkKey;
-import org.onosproject.net.config.NetworkConfigEvent;
-import org.onosproject.net.config.NetworkConfigListener;
-import org.onosproject.net.config.NetworkConfigService;
-import org.onosproject.pcep.api.TeLinkConfig;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.ConsistentMap;
-import org.onosproject.store.service.Serializer;
-import org.onosproject.store.service.StorageService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_ADDED;
-import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_REMOVED;
-import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_UPDATED;
-
-/**
- * Manages the pool of available labels to devices, links and tunnels.
- */
-@Component(immediate = true, service = BandwidthMgmtStore.class)
-public class DistributedBandwidthMgmtStore implements BandwidthMgmtStore {
-    private static final Logger log = LoggerFactory.getLogger(BandwidthManager.class);
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigService netCfgService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    private InternalConfigListener cfgListener = new InternalConfigListener();
-
-    private ConsistentMap<LinkKey, Double> teCost;
-    // Locally maintain unreserved bandwidth of each link.
-    private ConsistentMap<LinkKey, Set<Double>> unResvBw;
-
-    // Mapping tunnel with link key with local reserved bandwidth
-    private ConsistentMap<LinkKey, Double> localReservedBw;
-
-    private static final Serializer SERIALIZER = Serializer
-            .using(new KryoNamespace.Builder().register(KryoNamespaces.API)
-                    .register(KryoNamespaces.API)
-                    .register(LinkKey.class)
-                    .register(ConnectPoint.class)
-                    .build());
-
-    @Activate
-    protected void activate() {
-        netCfgService.addListener(cfgListener);
-
-        localReservedBw = storageService.<LinkKey, Double>consistentMapBuilder()
-                .withName("local-reserved-bandwith")
-                .withSerializer(SERIALIZER)
-                .build();
-
-        unResvBw = storageService.<LinkKey, Set<Double>>consistentMapBuilder()
-                .withName("onos-unreserved-bandwidth")
-                .withSerializer(SERIALIZER)
-                .build();
-
-        teCost = storageService.<LinkKey, Double>consistentMapBuilder()
-                .withName("onos-tecost")
-                .withSerializer(SERIALIZER)
-                .build();
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        netCfgService.removeListener(cfgListener);
-        log.info("Stopped");
-    }
-
-    @Override
-    public Double getTeCost(LinkKey linkKey) {
-        if (teCost.get(linkKey) != null) {
-            return teCost.get(linkKey).value();
-        }
-        return null;
-    }
-
-    @Override
-    public boolean allocLocalReservedBw(LinkKey linkkey, Double bandwidth) {
-        Double allocatedBw = null;
-
-        if (localReservedBw.get(linkkey) != null) {
-            allocatedBw = localReservedBw.get(linkkey).value();
-        }
-        if (allocatedBw != null) {
-            localReservedBw.put(linkkey, (allocatedBw + bandwidth));
-        } else {
-            localReservedBw.put(linkkey, bandwidth);
-        }
-
-        return true;
-    }
-
-    @Override
-    public boolean releaseLocalReservedBw(LinkKey linkkey, Double bandwidth) {
-
-        Double allocatedBw = null;
-        if (localReservedBw.get(linkkey) != null) {
-            allocatedBw = localReservedBw.get(linkkey).value();
-        }
-
-        if (allocatedBw == null || allocatedBw < bandwidth) {
-            return false;
-        }
-
-        Double releasedBw = allocatedBw - bandwidth;
-        if (releasedBw == 0.0) {
-            localReservedBw.remove(linkkey);
-        } else {
-            localReservedBw.put(linkkey, releasedBw);
-        }
-        return true;
-    }
-
-    @Override
-    public Double getAllocatedLocalReservedBw(LinkKey linkkey) {
-        return localReservedBw.get(linkkey) != null ? localReservedBw.get(linkkey).value() : null;
-    }
-
-    @Override
-    public boolean addUnreservedBw(LinkKey linkkey, Set<Double> bandwidth) {
-        unResvBw.put(linkkey, bandwidth);
-        return true;
-    }
-
-    @Override
-    public boolean removeUnreservedBw(LinkKey linkkey) {
-        unResvBw.remove(linkkey);
-        return true;
-    }
-
-    @Override
-    public Set<Double> getUnreservedBw(LinkKey linkkey) {
-        checkNotNull(linkkey);
-        return unResvBw.get(linkkey) != null ? unResvBw.get(linkkey).value() : null;
-    }
-
-    private class InternalConfigListener implements NetworkConfigListener {
-
-        @Override
-        public void event(NetworkConfigEvent event) {
-
-            if (event.configClass().equals(TeLinkConfig.class)) {
-                if ((event.type() != CONFIG_ADDED) &&  (event.type() != CONFIG_UPDATED)
-                        && (event.type() != CONFIG_REMOVED)) {
-                    return;
-                }
-                LinkKey linkKey = (LinkKey) event.subject();
-                switch (event.type()) {
-                    case  CONFIG_ADDED:
-                    case  CONFIG_UPDATED:
-
-                        TeLinkConfig cfg = netCfgService.getConfig(linkKey, TeLinkConfig.class);
-                        if (cfg == null) {
-                            log.error("Unable to get the configuration of the link.");
-                            return;
-                        }
-                        Set<Double> unresvBw = new LinkedHashSet<>();
-                        unresvBw.add(cfg.unResvBandwidth());
-                        addUnreservedBw(linkKey, unresvBw);
-
-                        if (cfg.teCost() != 0) {
-                            teCost.put(linkKey, (double) cfg.teCost());
-                        }
-
-                        break;
-                    case CONFIG_REMOVED:
-                        removeUnreservedBw(linkKey);
-                        localReservedBw.remove(linkKey);
-                        teCost.remove(linkKey);
-
-                        break;
-                    default:
-                        break;
-                }
-            }
-        }
-    }
-
-}
diff --git a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/BandwidthMgmtService.java b/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/BandwidthMgmtService.java
deleted file mode 100644
index b16287c..0000000
--- a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/BandwidthMgmtService.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.bandwidthmgr.api;
-
-import org.onosproject.net.Link;
-import org.onosproject.net.LinkKey;
-
-import java.util.Set;
-
-public interface BandwidthMgmtService {
-
-
-    /**
-     * Allocate local bandwidth(non rsvp-te) to linkKey mapping.
-     *
-     * @param linkkey link key of the link
-     * @param bandwidth requested local bandwidth
-     * @return success or failure
-     */
-    boolean allocLocalReservedBw(LinkKey linkkey, Double bandwidth);
-
-
-    /**
-     * Release local bandwidth(non rsvp-te) to linkKey mapping.
-     *
-     * @param linkkey link key of the link
-     * @param bandwidth releasing local bandwidth
-     * @return success or failure
-     */
-     boolean releaseLocalReservedBw(LinkKey linkkey, Double bandwidth);
-
-    /**
-     * Get local allocated bandwidth of the link.
-     *
-     * @param linkkey link key of the link
-     * @return allocated bandwidth
-     */
-     Double getAllocatedLocalReservedBw(LinkKey linkkey);
-
-    /**
-     * Add unreserved bandwidth to linkKey mapping.
-     *
-     * @param linkkey link key of the link
-     * @param bandwidth set of unreserved bandwidth
-     * @return success or failure
-     */
-     boolean addUnreservedBw(LinkKey linkkey, Set<Double> bandwidth);
-
-    /**
-     * Remove unreserved bandwidth to linkKey mapping.
-     *
-     * @param linkkey link key of the link
-     * @return success or failure
-     */
-     boolean removeUnreservedBw(LinkKey linkkey);
-
-    /**
-     * Get list of unreserved Bandwidth of the link.
-     *
-     * @param linkkey link key of the link
-     * @return Set of unreserved bandwidth
-     */
-     Set<Double> getUnreservedBw(LinkKey linkkey);
-
-    /**
-     * Returns if the link has the available bandwidth or not.
-     *
-     * @param link link
-     * @param bandwidth required bandwidth
-     * @return true if bandwidth is available else false
-     */
-    boolean isBandwidthAvailable(Link link, Double bandwidth);
-
-    /**
-     * Returns Te cost for the specified link key.
-     *
-     * @param linkKey connect point of source and destination of the link
-     * @return Te cost for the linkKey
-     */
-    Double getTeCost(LinkKey linkKey);
-
-    /**
-     * Returns available bandwidth for the linkKey.
-     *
-     * @param linkKey connect point of source and destination of the link
-     * @return available bandwidth for the linkKey
-     */
-    Double getAvailableBandwidth(LinkKey linkKey);
-}
diff --git a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/BandwidthMgmtStore.java b/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/BandwidthMgmtStore.java
deleted file mode 100644
index 43589c9..0000000
--- a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/BandwidthMgmtStore.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.bandwidthmgr.api;
-
-import org.onosproject.net.LinkKey;
-
-import java.util.Set;
-
-/**
- * Abstraction of an entity providing pool of available labels to devices, links and tunnels.
- */
-public interface BandwidthMgmtStore {
-
-    /**
-     * Allocate local bandwidth(non rsvp-te) to linkKey mapping.
-     *
-     * @param linkkey link key of the link
-     * @param bandwidth requested local bandwidth
-     * @return success or failure
-     */
-    boolean allocLocalReservedBw(LinkKey linkkey, Double bandwidth);
-
-
-    /**
-     * Release local bandwidth(non rsvp-te) to linkKey mapping.
-     *
-     * @param linkkey link key of the link
-     * @param bandwidth releasing local bandwidth
-     * @return success or failure
-     */
-    boolean releaseLocalReservedBw(LinkKey linkkey, Double bandwidth);
-
-    /**
-     * Get local allocated bandwidth of the link.
-     *
-     * @param linkkey link key of the link
-     * @return allocated bandwidth
-     */
-    Double getAllocatedLocalReservedBw(LinkKey linkkey);
-
-    /**
-     * Add unreserved bandwidth to linkKey mapping.
-     *
-     * @param linkkey link key of the link
-     * @param bandwidth set of unreserved bandwidth
-     * @return success or failure
-     */
-    boolean addUnreservedBw(LinkKey linkkey, Set<Double> bandwidth);
-
-    /**
-     * Remove unreserved bandwidth to linkKey mapping.
-     *
-     * @param linkkey link key of the link
-     * @return success or failure
-     */
-    boolean removeUnreservedBw(LinkKey linkkey);
-
-    /**
-     * Get list of unreserved Bandwidth of the link.
-     *
-     * @param linkkey link key of the link
-     * @return Set of unreserved bandwidth
-     */
-    Set<Double> getUnreservedBw(LinkKey linkkey);
-
-    /**
-     * Returns Te cost for the specified link key.
-     *
-     * @param linkKey connect point of source and destination of the link
-     * @return Te cost for the linkKey
-     */
-    Double getTeCost(LinkKey linkKey);
-}
diff --git a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/package-info.java b/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/package-info.java
deleted file mode 100644
index 54b323f..0000000
--- a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Bandwidth management service.
- */
-package org.onosproject.bandwidthmgr.api;
diff --git a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/package-info.java b/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/package-info.java
deleted file mode 100644
index 14fd443..0000000
--- a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * PCE Bandwidth management service implementation.
- */
-package org.onosproject.bandwidthmgr;
\ No newline at end of file
diff --git a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PceCodecRegistrator.java b/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PceCodecRegistrator.java
deleted file mode 100644
index be8686a..0000000
--- a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PceCodecRegistrator.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcerest;
-
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.codec.CodecService;
-import org.onosproject.pce.pceservice.PcePath;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Implementation of the json codec brokering service for pce app.
- */
-@Component(immediate = true)
-public class PceCodecRegistrator {
-
-    private static Logger log = LoggerFactory.getLogger(PceCodecRegistrator.class);
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CodecService codecService;
-
-    @Activate
-    public void activate() {
-        codecService.registerCodec(PcePath.class, new PcePathCodec());
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        log.info("Stopped");
-    }
-}
diff --git a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PcePathCodec.java b/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PcePathCodec.java
deleted file mode 100644
index 20671f7..0000000
--- a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PcePathCodec.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcerest;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.net.Link.State.ACTIVE;
-import static org.onosproject.net.Link.Type.DIRECT;
-
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.NetworkResource;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
-import org.onosproject.pce.pceservice.PcePath;
-import org.onosproject.pce.pceservice.DefaultPcePath;
-import org.onosproject.pce.pceservice.constraint.CostConstraint;
-import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.fasterxml.jackson.databind.JsonNode;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * PCE path json codec.
- */
-public final class PcePathCodec extends JsonCodec<PcePath> {
-    private final Logger log = LoggerFactory.getLogger(PcePathCodec.class);
-    private static final String SOURCE = "source";
-    private static final String DESTINATION = "destination";
-    private static final String LSP_TYPE = "pathType";
-    private static final String SYMBOLIC_PATH_NAME = "name";
-    private static final String CONSTRAINT = "constraint";
-    private static final String COST = "cost";
-    private static final String BANDWIDTH = "bandwidth";
-    private static final String PATH_ID = "pathId";
-    private static final String EXPLICIT_PATH_INFO = "explicitPathInfo";
-    private static final String MISSING_MEMBER_MESSAGE = " member is required in pce-path";
-    public static final String JSON_NOT_NULL = "JsonNode can not be null";
-    public static final byte SOURCE_DEVICEID_INDEX = 0;
-    public static final byte SOURCE_PORTNO_INDEX = 1;
-    public static final byte DESTINATION_DEVICEID_INDEX = 2;
-    public static final byte DESTINATION_PORTNO_INDEX = 3;
-
-    @Override
-    public PcePath decode(ObjectNode json, CodecContext context) {
-        if (json == null || !json.isObject()) {
-            log.error("Empty json input");
-            return null;
-        }
-
-        // build pce-path
-        PcePath.Builder resultBuilder = new DefaultPcePath.Builder();
-
-        // retrieve source
-        JsonNode jNode = json.get(SOURCE);
-        if (jNode != null) {
-            String src = jNode.asText();
-            resultBuilder.source(src);
-        }
-
-        // retrieve destination
-        jNode = json.get(DESTINATION);
-        if (jNode != null) {
-            String dst = jNode.asText();
-            resultBuilder.destination(dst);
-        }
-
-        // retrieve lsp-type
-        jNode = json.get(LSP_TYPE);
-        if (jNode != null) {
-            String lspType = jNode.asText();
-            //Validating LSP type
-            int type = Integer.parseInt(lspType);
-            if ((type < 0) || (type > 2)) {
-                return null;
-            }
-            resultBuilder.lspType(lspType);
-        }
-
-        // retrieve symbolic-path-name
-        jNode = json.get(SYMBOLIC_PATH_NAME);
-        if (jNode != null) {
-            String name = jNode.asText();
-            resultBuilder.name(name);
-        }
-
-        // retrieve constraint
-        JsonNode constraintJNode = (JsonNode) json.path(CONSTRAINT);
-        if ((constraintJNode != null) && (!constraintJNode.isMissingNode())) {
-            // retrieve cost
-            jNode = constraintJNode.get(COST);
-            if (jNode != null) {
-                String cost = jNode.asText();
-                //Validating Cost type
-                int costType = Integer.parseInt(cost);
-                if ((costType < 1) || (costType > 2)) {
-                    return null;
-                }
-                resultBuilder.costConstraint(cost);
-            }
-
-            // retrieve bandwidth
-            jNode = constraintJNode.get(BANDWIDTH);
-            if (jNode != null) {
-                String bandwidth = jNode.asText();
-                double bw = Double.parseDouble(bandwidth);
-                if (bw < 0) {
-                    return null;
-                }
-                resultBuilder.bandwidthConstraint(bandwidth);
-            }
-        }
-
-        // Retrieve explicit path info
-        JsonNode explicitPathInfo = json.get(EXPLICIT_PATH_INFO);
-        if (explicitPathInfo != null) {
-            List<ExplicitPathInfo> explicitPathInfoList =
-                    ImmutableList.copyOf(jsonNodeToExplicitPathInfo(explicitPathInfo));
-            if (explicitPathInfoList != null) {
-                resultBuilder.explicitPathInfo(explicitPathInfoList);
-            }
-        }
-
-        return resultBuilder.build();
-    }
-
-    private ExplicitPathInfo createListOfExplicitPathObj(JsonNode node) {
-        int explicitPathType = Integer.parseInt(node.get("type").asText());
-        DeviceId deviceId;
-        PortNumber portNo;
-        NetworkResource res;
-        LinkedList<ExplicitPathInfo> list = Lists.newLinkedList();
-        if ((explicitPathType < 0) || (explicitPathType > 1)) {
-            return null;
-        }
-        ExplicitPathInfo.Type type = ExplicitPathInfo.Type.values()[explicitPathType];
-        String subType = node.get("subtype").asText();
-        if (Integer.parseInt(subType) == 0) {
-            res = DeviceId.deviceId(node.get("value").asText());
-        } else if (Integer.parseInt(subType) == 1) {
-
-            String[] splitted = node.get("value").asText().split("/");
-
-            if (splitted[SOURCE_DEVICEID_INDEX] != null
-                    && splitted[SOURCE_PORTNO_INDEX] != null
-                    && splitted[DESTINATION_DEVICEID_INDEX] != null
-                    && splitted[DESTINATION_PORTNO_INDEX] != null) {
-                return null;
-            }
-            deviceId = DeviceId.deviceId(splitted[SOURCE_DEVICEID_INDEX]);
-            portNo = PortNumber.portNumber(splitted[SOURCE_PORTNO_INDEX]);
-            ConnectPoint cpSrc = new ConnectPoint(deviceId, portNo);
-            deviceId = DeviceId.deviceId(splitted[DESTINATION_DEVICEID_INDEX]);
-            portNo = PortNumber.portNumber(splitted[DESTINATION_PORTNO_INDEX]);
-            ConnectPoint cpDst = new ConnectPoint(deviceId, portNo);
-            res = DefaultLink.builder()
-                    .providerId(ProviderId.NONE)
-                    .src(cpSrc)
-                    .dst(cpDst)
-                    .type(DIRECT)
-                    .state(ACTIVE)
-                    .build();
-        } else {
-            return null;
-        }
-
-        return new ExplicitPathInfo(type, res);
-    }
-
-    private Collection<ExplicitPathInfo> jsonNodeToExplicitPathInfo(JsonNode explicitPathInfo) {
-        checkNotNull(explicitPathInfo, JSON_NOT_NULL);
-
-        Integer i = 0;
-        NetworkResource res;
-        LinkedList<ExplicitPathInfo> list = Lists.newLinkedList();
-        if (explicitPathInfo.isArray()) {
-            for (JsonNode node : explicitPathInfo) {
-                ExplicitPathInfo obj = createListOfExplicitPathObj(node);
-                if (obj == null) {
-                    return null;
-                }
-                list.add(obj);
-            }
-        } else {
-            ExplicitPathInfo obj = createListOfExplicitPathObj(explicitPathInfo);
-            if (obj == null) {
-                return null;
-            }
-            list.add(obj);
-        }
-
-        return Collections.unmodifiableCollection(list);
-    }
-
-    @Override
-    public ObjectNode encode(PcePath path, CodecContext context) {
-        checkNotNull(path, "path output cannot be null");
-        ObjectNode result = context.mapper()
-                .createObjectNode()
-                .put(PATH_ID, path.id().id())
-                .put(SOURCE, path.source())
-                .put(DESTINATION, path.destination())
-                .put(LSP_TYPE, path.lspType().type())
-                .put(SYMBOLIC_PATH_NAME, path.name());
-
-        ObjectNode constraintNode = context.mapper()
-                .createObjectNode()
-                .put(COST, ((CostConstraint) path.costConstraint()).type().type())
-                .put(BANDWIDTH, ((PceBandwidthConstraint) path.bandwidthConstraint()).bandwidth().bps());
-
-        if (path.explicitPathInfo() != null && !path.explicitPathInfo().isEmpty()) {
-            ArrayNode arrayNode = context.mapper().createArrayNode();
-            for (ExplicitPathInfo e : path.explicitPathInfo()) {
-                ObjectNode node = context.mapper()
-                        .createObjectNode()
-                        .put("type", e.type().toString())
-                        .put("value", e.value().toString());
-                arrayNode.add(node);
-            }
-            result.set(EXPLICIT_PATH_INFO, arrayNode);
-        }
-
-        result.set(CONSTRAINT, constraintNode);
-        return result;
-    }
-}
diff --git a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PcePathWebResource.java b/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PcePathWebResource.java
deleted file mode 100644
index de2e84a..0000000
--- a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PcePathWebResource.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcerest;
-
-import static javax.ws.rs.core.Response.Status.OK;
-import static org.onlab.util.Tools.nullIsNotFound;
-import static org.onlab.util.Tools.readTreeFromStream;
-
-import java.util.Collection;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-import java.util.LinkedList;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import com.google.common.collect.ImmutableList;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelService;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.intent.Constraint;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
-import org.onosproject.pce.pceservice.api.PceService;
-import org.onosproject.pce.pceservice.PcePath;
-import org.onosproject.pce.pceservice.DefaultPcePath;
-import org.onosproject.pce.pceservice.LspType;
-import org.onosproject.rest.AbstractWebResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Query and program pce path.
- */
-@Path("path")
-public class PcePathWebResource extends AbstractWebResource {
-
-    private final Logger log = LoggerFactory.getLogger(PcePathWebResource.class);
-    public static final String PCE_PATH_NOT_FOUND = "Path not found";
-    public static final String PCE_PATH_ID_EXIST = "Path exists";
-    public static final String PCE_PATH_ID_NOT_EXIST = "Path does not exist for the identifier";
-    public static final String PCE_SETUP_PATH_FAILED = "PCE Setup path has failed.";
-
-    /**
-     * Retrieve details of all paths created.
-     *
-     * @return 200 OK
-     */
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response queryAllPath() {
-        log.debug("Query all paths.");
-        PceService pceService = get(PceService.class);
-        Iterable<Tunnel> tunnels = pceService.queryAllPath();
-
-        ObjectNode result = mapper().createObjectNode();
-        ArrayNode pathEntry = result.putArray("paths");
-        if (tunnels != null) {
-            for (final Tunnel tunnel : tunnels) {
-                PcePath path = DefaultPcePath.builder().of(tunnel, pceService.explicitPathInfoList(tunnel
-                        .tunnelName().value()))
-                        .build();
-                pathEntry.add(codec(PcePath.class).encode(path, this));
-            }
-        }
-        return ok(result.toString()).build();
-    }
-
-    /**
-     * Retrieve details of a specified path id.
-     *
-     * @param id path id
-     * @return 200 OK, 404 if given identifier does not exist
-     */
-    @GET
-    @Path("{path_id}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response queryPath(@PathParam("path_id") String id) {
-        log.debug("Query path by identifier {}.", id);
-        PceService pceService = get(PceService.class);
-
-        Tunnel tunnel = nullIsNotFound(pceService.queryPath(TunnelId.valueOf(id)),
-                PCE_PATH_NOT_FOUND);
-        PcePath path = DefaultPcePath.builder().of(tunnel, pceService.explicitPathInfoList(tunnel
-                .tunnelName().value())).build();
-        if (path == null) {
-            return Response.status(OK).entity(PCE_SETUP_PATH_FAILED).build();
-        }
-        ObjectNode result = mapper().createObjectNode();
-        result.set("path", codec(PcePath.class).encode(path, this));
-        return ok(result.toString()).build();
-    }
-
-    /**
-     * Creates a new path.
-     *
-     * @param stream pce path from json
-     * @return status of the request
-     */
-    @POST
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response setupPath(InputStream stream) {
-        log.debug("Setup path.");
-        try {
-            ObjectNode jsonTree = readTreeFromStream(mapper(), stream);
-            JsonNode port = jsonTree.get("path");
-            TunnelService tunnelService = get(TunnelService.class);
-            PcePath path = codec(PcePath.class).decode((ObjectNode) port, this);
-            if (path == null) {
-                return Response.status(OK).entity(PCE_SETUP_PATH_FAILED).build();
-            }
-
-            //Validating tunnel name, duplicated tunnel names not allowed
-            Collection<Tunnel> existingTunnels = tunnelService.queryTunnel(Tunnel.Type.MPLS);
-            if (existingTunnels != null) {
-                for (Tunnel t : existingTunnels) {
-                    if (t.tunnelName().toString().equals(path.name())) {
-                        return Response.status(OK).entity(PCE_SETUP_PATH_FAILED).build();
-                    }
-                }
-            }
-
-            DeviceId srcDevice = DeviceId.deviceId(path.source());
-            DeviceId dstDevice = DeviceId.deviceId(path.destination());
-            LspType lspType = path.lspType();
-            List<Constraint> listConstrnt = new LinkedList<Constraint>();
-
-            // Add bandwidth
-            listConstrnt.add(path.bandwidthConstraint());
-
-            // Add cost
-            listConstrnt.add(path.costConstraint());
-
-            List<ExplicitPathInfo> explicitPathInfoList = null;
-            if (path.explicitPathInfo() != null) {
-                explicitPathInfoList = ImmutableList.copyOf(path.explicitPathInfo());
-            }
-
-            Boolean issuccess = nullIsNotFound(get(PceService.class)
-                                               .setupPath(srcDevice, dstDevice, path.name(), listConstrnt,
-                                                       lspType, explicitPathInfoList),
-                                               PCE_SETUP_PATH_FAILED);
-            return Response.status(OK).entity(issuccess.toString()).build();
-        } catch (IOException e) {
-            log.error("Exception while creating path {}.", e.toString());
-            throw new IllegalArgumentException(e);
-        }
-    }
-
-    /**
-     * Update details of a specified path id.
-     *
-     * @param id path id
-     * @param stream pce path from json
-     * @return 200 OK, 404 if given identifier does not exist
-     */
-    @PUT
-    @Path("{path_id}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response updatePath(@PathParam("path_id") String id,
-            final InputStream stream) {
-        log.debug("Update path by identifier {}.", id);
-        try {
-            ObjectNode jsonTree = readTreeFromStream(mapper(), stream);
-            JsonNode pathNode = jsonTree.get("path");
-            PcePath path = codec(PcePath.class).decode((ObjectNode) pathNode, this);
-            if (path == null) {
-                return Response.status(OK).entity(PCE_SETUP_PATH_FAILED).build();
-            }
-            List<Constraint> constrntList = new LinkedList<Constraint>();
-            // Assign bandwidth
-            if (path.bandwidthConstraint() != null) {
-                constrntList.add(path.bandwidthConstraint());
-            }
-
-            // Assign cost
-            if (path.costConstraint() != null) {
-                constrntList.add(path.costConstraint());
-            }
-
-            Boolean result = nullIsNotFound(get(PceService.class).updatePath(TunnelId.valueOf(id), constrntList),
-                                            PCE_PATH_NOT_FOUND);
-            return Response.status(OK).entity(result.toString()).build();
-        } catch (IOException e) {
-            log.error("Update path failed because of exception {}.", e.toString());
-            throw new IllegalArgumentException(e);
-        }
-    }
-
-    /**
-     * Release a specified path.
-     *
-     * @param id path id
-     * @return 200 OK, 404 if given identifier does not exist
-     */
-    @DELETE
-    @Path("{path_id}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response releasePath(@PathParam("path_id") String id) {
-        log.debug("Deletes path by identifier {}.", id);
-
-        Boolean isSuccess = nullIsNotFound(get(PceService.class).releasePath(TunnelId.valueOf(id)),
-                                           PCE_PATH_NOT_FOUND);
-        if (!isSuccess) {
-            log.debug("Path identifier {} does not exist", id);
-        }
-
-        return Response.status(OK).entity(isSuccess.toString()).build();
-    }
-}
diff --git a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PceWebApplication.java b/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PceWebApplication.java
deleted file mode 100644
index 3413880..0000000
--- a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PceWebApplication.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcerest;
-
-import org.onlab.rest.AbstractWebApplication;
-
-import java.util.Set;
-
-/**
- * PCE rest api web application.
- */
-public class PceWebApplication extends AbstractWebApplication {
-    @Override
-    public Set<Class<?>> getClasses() {
-        return getClasses(PcePathWebResource.class);
-    }
-}
-
diff --git a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/package-info.java b/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/package-info.java
deleted file mode 100644
index 95c5198..0000000
--- a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * PCE rest application.
- */
-
-package org.onosproject.pcerest;
diff --git a/apps/pce/pcerest/src/main/resources/WEB-INF/web.xml b/apps/pce/pcerest/src/main/resources/WEB-INF/web.xml
deleted file mode 100644
index 388044a..0000000
--- a/apps/pce/pcerest/src/main/resources/WEB-INF/web.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Copyright 2016-present Open Networking Foundation
-  ~
-  ~ 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.
-  -->
-<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
-         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
-         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
-         id="ONOS" version="2.5">
-    <display-name>PCE REST API v1.0</display-name>
-
-    <security-constraint>
-        <web-resource-collection>
-            <web-resource-name>Secured</web-resource-name>
-            <url-pattern>/*</url-pattern>
-        </web-resource-collection>
-        <auth-constraint>
-            <role-name>admin</role-name>
-            <role-name>viewer</role-name>
-        </auth-constraint>
-    </security-constraint>
-
-    <security-role>
-        <role-name>admin</role-name>
-        <role-name>viewer</role-name>
-    </security-role>
-
-    <login-config>
-        <auth-method>BASIC</auth-method>
-        <realm-name>karaf</realm-name>
-    </login-config>
-
-    <servlet>
-        <servlet-name>JAX-RS Service</servlet-name>
-        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
-        <init-param>
-            <param-name>javax.ws.rs.Application</param-name>
-            <param-value>org.onosproject.pcerest.PceWebApplication</param-value>
-        </init-param>
-        <load-on-startup>1</load-on-startup>
-    </servlet>
-
-    <servlet-mapping>
-        <servlet-name>JAX-RS Service</servlet-name>
-        <url-pattern>/*</url-pattern>
-    </servlet-mapping>
-</web-app>
diff --git a/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/MockPceCodecContext.java b/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/MockPceCodecContext.java
deleted file mode 100644
index 3c2ae24..0000000
--- a/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/MockPceCodecContext.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcerest;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.CodecService;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.codec.impl.CodecManager;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-/**
- * Mock codec context for use in codec unit tests.
- */
-public class MockPceCodecContext implements CodecContext {
-
-    private final ObjectMapper mapper = new ObjectMapper();
-    private final CodecManager codecManager = new CodecManager();
-    private final PceCodecRegistrator manager = new PceCodecRegistrator();
-
-    /**
-     * Constructs a new mock codec context.
-     */
-    public MockPceCodecContext() {
-        codecManager.activate();
-        manager.codecService = codecManager;
-        manager.activate();
-    }
-
-    @Override
-    public ObjectMapper mapper() {
-        return mapper;
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public <T> T getService(Class<T> serviceClass) {
-        return null;
-    }
-
-    @Override
-    public <T> JsonCodec<T> codec(Class<T> entityClass) {
-        return codecManager.getCodec(entityClass);
-    }
-
-    /**
-     * Get the codec manager.
-     *
-     * @return instance of codec manager
-     */
-    public CodecService codecManager() {
-        return codecManager;
-    }
-}
diff --git a/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PcePathCodecTest.java b/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PcePathCodecTest.java
deleted file mode 100644
index 3826172..0000000
--- a/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PcePathCodecTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcerest;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import org.onlab.util.DataRateUnit;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.pce.pceservice.PcePath;
-import org.onosproject.net.intent.Constraint;
-import org.onosproject.pce.pceservice.constraint.CostConstraint;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint;
-
-/**
- * PCE path codec unit tests.
- */
-public class PcePathCodecTest {
-
-    MockPceCodecContext context;
-    JsonCodec<PcePath> pcePathCodec;
-    /**
-     * Sets up for each test. Creates a context and fetches the PCE path codec.
-     */
-    @Before
-    public void setUp() {
-        context = new MockPceCodecContext();
-        pcePathCodec = context.codec(PcePath.class);
-        assertThat(pcePathCodec, notNullValue());
-    }
-
-    /**
-     * Reads in a pce-path from the given resource and decodes it.
-     *
-     * @param resourceName resource to use to read the json for the pce-path
-     * @return decoded pce-path
-     * @throws IOException if processing the resource fails
-     */
-    private PcePath getPcePath(String resourceName) throws IOException {
-        InputStream jsonStream = PcePathCodecTest.class
-                .getResourceAsStream(resourceName);
-        ObjectMapper mapper = new ObjectMapper();
-        JsonNode json = mapper.readTree(jsonStream);
-        assertThat(json, notNullValue());
-        PcePath pcePath = pcePathCodec.decode((ObjectNode) json, context);
-        assertThat(pcePath, notNullValue());
-        return pcePath;
-    }
-
-    /**
-     * Checks that a simple pce-path is decoded properly.
-     *
-     * @throws IOException if the resource cannot be processed
-     */
-    @Test
-    public void codecPcePathTest() throws IOException {
-
-        PcePath pcePath = getPcePath("pcePath.json");
-
-        assertThat(pcePath, notNullValue());
-
-        assertThat(pcePath.source().toString(), is("11.0.0.1"));
-        assertThat(pcePath.destination(), is("11.0.0.2"));
-        assertThat(pcePath.lspType().toString(), is("WITHOUT_SIGNALLING_AND_WITHOUT_SR"));
-        // testing cost type
-        String cost = "2";
-        Constraint costConstraint = CostConstraint.of(CostConstraint.Type.values()[Integer.valueOf(cost) - 1]);
-        assertThat(pcePath.costConstraint(), is(costConstraint));
-        // testing bandwidth
-        String bandwidth = "200";
-        Constraint bandwidthConstraint = PceBandwidthConstraint.of(Double.valueOf(bandwidth), DataRateUnit
-                    .valueOf("BPS"));
-        assertThat(pcePath.bandwidthConstraint(), is(bandwidthConstraint));
-    }
-}
diff --git a/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PcePathResourceTest.java b/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PcePathResourceTest.java
deleted file mode 100644
index 1e35395..0000000
--- a/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PcePathResourceTest.java
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcerest;
-
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.Matchers.containsString;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
-import static org.onosproject.net.Link.Type.DIRECT;
-
-import com.eclipsesource.json.Json;
-import com.eclipsesource.json.JsonObject;
-
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.util.LinkedList;
-import java.util.List;
-
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.NotFoundException;
-
-import com.google.common.collect.Lists;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.graph.ScalarWeight;
-import org.onlab.junit.TestUtils;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.osgi.TestServiceDirectory;
-import org.onlab.packet.IpAddress;
-import org.onlab.rest.BaseResource;
-import org.onosproject.codec.CodecService;
-// import org.onosproject.core.DefaultGroupId;
-import org.onosproject.incubator.net.tunnel.DefaultTunnel;
-import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.TunnelName;
-import org.onosproject.incubator.net.tunnel.TunnelService;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.DefaultPath;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
-import org.onosproject.pce.pceservice.api.PceService;
-import org.onosproject.pce.pceservice.PcepAnnotationKeys;
-import org.onosproject.pce.pcestore.api.PceStore;
-import org.onosproject.net.Path;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.provider.ProviderId;
-
-/**
- * Unit tests for pce path REST APIs.
- */
-public class PcePathResourceTest extends PceResourceTest {
-    private final PceService pceService = createMock(PceService.class);
-    private final PceStore pceStore = createMock(PceStore.class);
-    private final TunnelService tunnelService = createMock(TunnelService.class);
-    private final TunnelEndPoint src = IpTunnelEndPoint.ipTunnelPoint(IpAddress.valueOf(23423));
-    private final TunnelEndPoint dst = IpTunnelEndPoint.ipTunnelPoint(IpAddress.valueOf(32421));
-    // private final DefaultGroupId groupId = new DefaultGroupId(92034);
-    private final TunnelName tunnelName = TunnelName.tunnelName("TunnelName");
-    private final TunnelId tunnelId = TunnelId.valueOf("41654654");
-    private final ProviderId producerName = new ProviderId("producer1", "13");
-    private Path path;
-    private Tunnel tunnel;
-    private List<ExplicitPathInfo> explicitPathInfoList;
-    private DeviceId deviceId1;
-    private DeviceId deviceId2;
-    private DeviceId deviceId3;
-    private DeviceId deviceId4;
-    private DeviceId deviceId5;
-    private PortNumber port1;
-    private PortNumber port2;
-    private PortNumber port3;
-    private PortNumber port4;
-    private PortNumber port5;
-
-    /**
-     * Sets up the global values for all the tests.
-     */
-    @Before
-    public void setUpTest() {
-       // Mock environment setup
-       MockPceCodecContext context = new MockPceCodecContext();
-       ServiceDirectory testDirectory = new TestServiceDirectory().add(PceService.class, pceService)
-                                                                  .add(TunnelService.class, tunnelService)
-                                                                  .add(PceStore.class, pceStore)
-                                                                  .add(CodecService.class, context.codecManager());
-       TestUtils.setField(BaseResource.class, "services", testDirectory);
-
-       // Tunnel creation
-       // Links
-       ProviderId providerId = new ProviderId("of", "foo");
-       deviceId1 = DeviceId.deviceId("of:A");
-       deviceId2 = DeviceId.deviceId("of:B");
-       deviceId3 = DeviceId.deviceId("of:C");
-       deviceId4 = DeviceId.deviceId("of:D");
-       deviceId5 = DeviceId.deviceId("of:E");
-       port1 = PortNumber.portNumber(1);
-       port2 = PortNumber.portNumber(2);
-       port3 = PortNumber.portNumber(3);
-       port4 = PortNumber.portNumber(4);
-       port5 = PortNumber.portNumber(5);
-       List<Link> linkList = new LinkedList<>();
-
-       Link l1 = DefaultLink.builder()
-                            .providerId(providerId)
-                            .annotations(DefaultAnnotations.builder().set("key1", "yahoo").build())
-                            .src(new ConnectPoint(deviceId1, port1))
-                            .dst(new ConnectPoint(deviceId2, port2))
-                            .type(DIRECT)
-                            .state(Link.State.ACTIVE)
-                            .build();
-       linkList.add(l1);
-       Link l2 = DefaultLink.builder()
-                            .providerId(providerId)
-                            .annotations(DefaultAnnotations.builder().set("key2", "yahoo").build())
-                            .src(new ConnectPoint(deviceId2, port2))
-                            .dst(new ConnectPoint(deviceId3, port3))
-                            .type(DIRECT)
-                            .state(Link.State.ACTIVE)
-                            .build();
-       linkList.add(l2);
-       Link l3 = DefaultLink.builder()
-                            .providerId(providerId)
-                            .annotations(DefaultAnnotations.builder().set("key3", "yahoo").build())
-                            .src(new ConnectPoint(deviceId3, port3))
-                            .dst(new ConnectPoint(deviceId4, port4))
-                            .type(DIRECT)
-                            .state(Link.State.ACTIVE)
-                            .build();
-       linkList.add(l3);
-       Link l4 = DefaultLink.builder()
-                            .providerId(providerId)
-                            .annotations(DefaultAnnotations.builder().set("key4", "yahoo").build())
-                            .src(new ConnectPoint(deviceId4, port4))
-                            .dst(new ConnectPoint(deviceId5, port5))
-                            .type(DIRECT)
-                            .state(Link.State.ACTIVE)
-                            .build();
-       linkList.add(l4);
-
-       // Path
-       path = new DefaultPath(providerId, linkList, ScalarWeight.toWeight(10));
-
-       // Annotations
-       DefaultAnnotations.Builder builderAnn = DefaultAnnotations.builder();
-       builderAnn.set(PcepAnnotationKeys.LSP_SIG_TYPE, "WITH_SIGNALLING");
-       builderAnn.set(PcepAnnotationKeys.COST_TYPE, "COST");
-       builderAnn.set(PcepAnnotationKeys.BANDWIDTH, "200");
-
-       // Tunnel
-       tunnel = new DefaultTunnel(producerName, src, dst, Tunnel.Type.VXLAN,
-                                  Tunnel.State.ACTIVE, null, tunnelId,
-                                  tunnelName, path, builderAnn.build());
-
-        explicitPathInfoList = Lists.newLinkedList();
-        ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, deviceId2);
-        explicitPathInfoList.add(obj);
-
-    }
-
-    /**
-     * Cleans up.
-     */
-    @After
-    public void tearDownTest() {
-    }
-
-    /**
-     * Tests the result of the rest api GET when there are no pce paths.
-     */
-    @Test
-    public void testPcePathsEmpty() {
-        expect(pceService.queryAllPath())
-                         .andReturn(null)
-                         .anyTimes();
-        replay(pceService);
-        WebTarget wt = target();
-        String response = wt.path("path").request().get(String.class);
-        assertThat(response, is("{\"paths\":[]}"));
-    }
-
-    /**
-     * Tests the result of a rest api GET for pce path id.
-     */
-    @Test
-    public void testGetTunnelId() {
-        expect(pceService.queryPath(anyObject()))
-                         .andReturn(tunnel)
-                         .anyTimes();
-
-        expect(pceService.explicitPathInfoList(tunnel.tunnelName().value()))
-                .andReturn(explicitPathInfoList)
-                .anyTimes();
-        replay(pceService);
-
-        WebTarget wt = target();
-        String response = wt.path("path/1").request().get(String.class);
-        JsonObject result = Json.parse(response).asObject();
-        assertThat(result, notNullValue());
-    }
-
-    /**
-     * Tests that a fetch of a non-existent pce path object throws an exception.
-     */
-    @Test
-    public void testBadGet() {
-        expect(pceService.queryPath(anyObject()))
-                         .andReturn(null)
-                         .anyTimes();
-        replay(pceService);
-
-        WebTarget wt = target();
-        try {
-            wt.path("path/1").request().get(String.class);
-            fail("Fetch of non-existent pce path did not throw an exception");
-        } catch (NotFoundException ex) {
-            assertThat(ex.getMessage(), containsString("HTTP 404 Not Found"));
-        }
-    }
-
-    /**
-     * Tests creating a pce path with POST.
-     */
-    @Test
-    public void testPost() {
-        expect(pceService.setupPath(anyObject(), anyObject(), anyObject(), anyObject(), anyObject(), anyObject()))
-                         .andReturn(true)
-                         .anyTimes();
-        replay(pceService);
-
-        WebTarget wt = target();
-        InputStream jsonStream = PcePathResourceTest.class.getResourceAsStream("post-PcePath.json");
-
-        Response response = wt.path("path")
-                              .request(MediaType.APPLICATION_JSON_TYPE)
-                              .post(Entity.json(jsonStream));
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
-    }
-
-    /**
-     * Tests creating a pce path with PUT.
-     */
-    @Test
-    public void testPut() {
-        expect(pceService.updatePath(anyObject(), anyObject()))
-                         .andReturn(true)
-                         .anyTimes();
-        replay(pceService);
-
-        WebTarget wt = target();
-        InputStream jsonStream = PcePathResourceTest.class.getResourceAsStream("post-PcePath.json");
-
-        Response response = wt.path("path/1")
-                              .request(MediaType.APPLICATION_JSON_TYPE)
-                              .put(Entity.json(jsonStream));
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
-    }
-
-    /**
-     * Tests deleting a pce path.
-     */
-    @Test
-    public void testDelete() {
-        expect(pceService.releasePath(TunnelId.valueOf("1")))
-                         .andReturn(true)
-                         .anyTimes();
-        replay(pceService);
-
-        WebTarget wt = target();
-
-        String location = "path/1";
-
-        Response deleteResponse = wt.path(location)
-                                    .request(MediaType.APPLICATION_JSON_TYPE)
-                                    .delete();
-        assertThat(deleteResponse.getStatus(), is(HttpURLConnection.HTTP_OK));
-    }
-}
diff --git a/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PceResourceTest.java b/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PceResourceTest.java
deleted file mode 100644
index a24c874..0000000
--- a/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PceResourceTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcerest;
-
-import org.glassfish.jersey.server.ResourceConfig;
-import org.glassfish.jersey.test.JerseyTest;
-import org.glassfish.jersey.test.TestProperties;
-import org.onlab.rest.AuthorizationFilter;
-
-/**
- * Base class for pce rest api tests.  Performs common configuration operations.
- */
-public class PceResourceTest extends JerseyTest {
-
-    /**
-     * Creates a new web-resource test.
-     */
-    public PceResourceTest() {
-        super(ResourceConfig.forApplicationClass(PceWebApplication.class));
-        AuthorizationFilter.disableForTests();
-        set(TestProperties.CONTAINER_PORT, 0);
-    }
-}
diff --git a/apps/pce/pcerest/src/test/resources/org/onosproject/pcerest/pcePath.json b/apps/pce/pcerest/src/test/resources/org/onosproject/pcerest/pcePath.json
deleted file mode 100644
index a68c4d7..0000000
--- a/apps/pce/pcerest/src/test/resources/org/onosproject/pcerest/pcePath.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-   "source":"11.0.0.1",
-   "destination":"11.0.0.2",
-   "pathType":"2",
-   "name":"pcc2",
-   "description":"path-create",
-   "constraint":
-    {  "cost":2,
-       "bandwidth":200.0
-    },
-   "explicitPathInfo" :
-   {"type":1,
-    "subtype":0,
-    "value":"11.0.0.2"
-   }
-}
diff --git a/apps/pce/pcerest/src/test/resources/org/onosproject/pcerest/post-PcePath.json b/apps/pce/pcerest/src/test/resources/org/onosproject/pcerest/post-PcePath.json
deleted file mode 100644
index 479e4f1..0000000
--- a/apps/pce/pcerest/src/test/resources/org/onosproject/pcerest/post-PcePath.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{"path": {"source":"11.0.0.1",
-          "destination":"11.0.0.2",
-          "pathType":"0",
-          "name":"rsvp11",
-          "constraint":
-            {"cost":1,
-             "bandwidth":300
-            },
-          "explicitPathInfo" :
-            {"type":1,
-             "subtype":0,
-             "value":"11.0.0.2"
-            }
-         }
-}
diff --git a/apps/pce/pceweb/BUILD b/apps/pce/pceweb/BUILD
deleted file mode 100644
index 30f067c..0000000
--- a/apps/pce/pceweb/BUILD
+++ /dev/null
@@ -1,15 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + JACKSON + CLI + [
-    "//apps/pce/app:onos-apps-pce-app",
-    "//apps/tunnel/api:onos-apps-tunnel-api",
-]
-
-osgi_jar_with_tests(
-    deps = COMPILE_DEPS,
-)
-
-onos_app(
-    category = "Utility",
-    description = "Allows the user to visualize different types of paths between network entities",
-    title = "PCE REST API",
-    url = "http://onosproject.org",
-)
diff --git a/apps/pce/pceweb/app.png b/apps/pce/pceweb/app.png
deleted file mode 100644
index abe34eb..0000000
--- a/apps/pce/pceweb/app.png
+++ /dev/null
Binary files differ
diff --git a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebLink.java b/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebLink.java
deleted file mode 100644
index 16a1212..0000000
--- a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebLink.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pceweb;
-
-import org.onosproject.net.Link;
-import org.onosproject.net.LinkKey;
-import org.onosproject.ui.topo.BiLink;
-import org.onosproject.ui.topo.LinkHighlight;
-import org.onosproject.ui.topo.LinkHighlight.Flavor;
-
-import java.util.Set;
-
-/**
- * Provides the link color highlight mechanism for given links.
- */
-public class PceWebLink extends BiLink {
-
-    private boolean primary;
-    private boolean secondary;
-
-    /**
-     * Initialize the Link and key attributes.
-     * @param key the link key identifier
-     * @param link the link to be highlighted.
-     */
-    public PceWebLink(LinkKey key, Link link) {
-        super(key, link);
-    }
-
-     /**
-     * Highlight the color of given selected links.
-     * @param selectedLinks the primary links
-     * @param allLinks the secondary links
-     */
-    public void computeHilight(Set<Link> selectedLinks, Set<Link> allLinks) {
-        primary = selectedLinks.contains(this.one()) ||
-                (two() != null && selectedLinks.contains(two()));
-        secondary = allLinks.contains(this.one()) ||
-                (two() != null && allLinks.contains(two()));
-    }
-
-    @Override
-    public LinkHighlight highlight(Enum<?> anEnum) {
-        Flavor flavor = primary ? Flavor.PRIMARY_HIGHLIGHT :
-                (secondary ? Flavor.SECONDARY_HIGHLIGHT : Flavor.NO_HIGHLIGHT);
-        return new LinkHighlight(this.linkId(), flavor);
-    }
-}
diff --git a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebLinkMap.java b/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebLinkMap.java
deleted file mode 100644
index a78de1b..0000000
--- a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebLinkMap.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pceweb;
-
-import org.onosproject.net.Link;
-import org.onosproject.net.LinkKey;
-import org.onosproject.ui.topo.BiLinkMap;
-
-/**
- * Our concrete link map.
- */
-public class PceWebLinkMap extends BiLinkMap<PceWebLink> {
-
-    @Override
-    protected PceWebLink create(LinkKey linkKey, Link link) {
-        return new PceWebLink(linkKey, link);
-    }
-}
diff --git a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovComponent.java b/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovComponent.java
deleted file mode 100644
index a98e8b0..0000000
--- a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovComponent.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pceweb;
-
-import com.google.common.collect.ImmutableList;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.ui.UiExtension;
-import org.onosproject.ui.UiExtensionService;
-import org.onosproject.ui.UiMessageHandlerFactory;
-import org.onosproject.ui.UiTopoOverlayFactory;
-import org.onosproject.ui.UiView;
-import org.onosproject.ui.UiViewHidden;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-
-/**
- * Skeletal ONOS UI Topology-Overlay application component.
- */
-@Component(immediate = true)
-public class PceWebTopovComponent {
-
-    private static final ClassLoader CL = PceWebTopovComponent.class.getClassLoader();
-    private static final String VIEW_ID = "pcewebTopov";
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected UiExtensionService uiExtensionService;
-
-    // List of application views
-    private final List<UiView> uiViews = ImmutableList.of(
-            new UiViewHidden(VIEW_ID)
-    );
-
-    // Factory for UI message handlers
-    private final UiMessageHandlerFactory messageHandlerFactory =
-            () -> ImmutableList.of(
-                    new PceWebTopovMessageHandler()
-            );
-
-    // Factory for UI topology overlays
-    private final UiTopoOverlayFactory topoOverlayFactory =
-            () -> ImmutableList.of(
-                    new PceWebTopovOverlay()
-            );
-
-    // Application UI extension
-    protected UiExtension extension =
-            new UiExtension.Builder(CL, uiViews)
-                    .resourcePath(VIEW_ID)
-                    .messageHandlerFactory(messageHandlerFactory)
-                    .topoOverlayFactory(topoOverlayFactory)
-                    .build();
-
-    @Activate
-    protected void activate() {
-        uiExtensionService.register(extension);
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        uiExtensionService.unregister(extension);
-        log.info("Stopped");
-    }
-
-}
diff --git a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovMessageHandler.java b/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovMessageHandler.java
deleted file mode 100644
index 4306f61..0000000
--- a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovMessageHandler.java
+++ /dev/null
@@ -1,860 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pceweb;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.packet.IpAddress;
-import org.onlab.util.DataRateUnit;
-import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.TunnelEvent;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelListener;
-import org.onosproject.incubator.net.tunnel.TunnelService;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.ElementId;
-import org.onosproject.net.HostId;
-import org.onosproject.net.Link;
-import org.onosproject.net.Path;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.intent.Constraint;
-import org.onosproject.net.topology.TopologyService;
-import org.onosproject.pce.pceservice.LspType;
-import org.onosproject.pce.pceservice.api.PceService;
-import org.onosproject.pce.pceservice.constraint.CostConstraint;
-import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint;
-import org.onosproject.ui.RequestHandler;
-import org.onosproject.ui.UiConnection;
-import org.onosproject.ui.UiMessageHandler;
-import org.onosproject.ui.topo.DeviceHighlight;
-import org.onosproject.ui.topo.Highlights;
-import org.onosproject.ui.topo.LinkHighlight;
-import org.onosproject.ui.topo.Mod;
-import org.onosproject.ui.topo.NodeBadge;
-import org.onosproject.ui.topo.TopoJson;
-import org.onosproject.ui.topo.TopoUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import static org.onosproject.incubator.net.tunnel.Tunnel.State.ACTIVE;
-import static org.onosproject.incubator.net.tunnel.Tunnel.Type.MPLS;
-import static org.onosproject.ui.topo.LinkHighlight.Flavor.PRIMARY_HIGHLIGHT;
-import static org.onosproject.ui.topo.TopoJson.highlightsMessage;
-
-/**
- * ONOS UI PCE WEB Topology-Overlay message handler.
- */
-public class PceWebTopovMessageHandler extends UiMessageHandler {
-
-    private static final String PCEWEB_CLEAR = "pceTopovClear";
-    private static final String PCEWEB_SET_PATH = "pceTopovSetMode";
-    private static final String PCEWEB_UPDATE_PATH_QUERY = "pceTopovUpdateQuery";
-    private static final String PCEWEB_UPDATE_PATH = "pceTopovUpdate";
-    private static final String PCEWEB_REMOVE_PATH_QUERY = "pceTopovRemQuery";
-    private static final String PCEWEB_REMOVE_PATH = "pceTopovRem";
-    private static final String PCEWEB_QUERY_TUNNELS = "pceTopovTunnelDisplay";
-    private static final String PCEWEB_SHOW_TUNNEL = "pceTopovShowTunnels";
-    private static final String PCEWEB_SHOW_TUNNEL_REMOVE = "pceTopovShowTunnelsRem";
-    private static final String PCEWEB_TUNNEL_UPDATE_INFO = "updatePathmsgInfo";
-    private static final String PCEWEB_TUNNEL_UPDATE_INFO_REPLY = "pceTopovShowTunnelsUpdate";
-    private static final String PCEWEB_TUNNEL_QUERY_INFO = "pceTopovShowTunnelsQuery";
-    private static final String PCEWEB_TUNNEL_QUERY_INFO_SHOW = "pceTopovshowTunnelHighlightMsg";
-    private static final String DST = "DST";
-    private static final String SRC = "SRC";
-    private static final String BANDWIDTH = "bw";
-    private static final String LOADBALANCING = "lb";
-    private static final String BANDWIDTHTYPE = "bwtype";
-    private static final String COSTTYPE = "ctype";
-    private static final String LSPTYPE = "lsptype";
-    private static final String SRCID = "srid";
-    private static final String DSTID = "dsid";
-    private static final String TUNNEL_ID = "tunnelid";
-    private static final String TUNNEL_NAME = "tunnelname";
-    private static final String COST_TYPE_IGP = "igp";
-    private static final String COST_TYPE_TE = "te";
-    private static final String BANDWIDTH_TYPE_KBPS = "kbps";
-    private static final String BANDWIDTH_TYPE_MBPS = "mbps";
-    private static final String BUFFER_ARRAY = "a";
-    private static final String BANDWIDTH_BPS = "BPS";
-    private static final String LSP_TYPE_CR = "cr";
-    private static final String LSP_TYPE_SRBE = "srbe";
-    private static final String LSP_TYPE_SRTE = "srte";
-    private static final String STRING_NULL = "null";
-    // Delay for showHighlights event processing on GUI client side to
-    // account for addLink animation.
-    private static final int DELAY_MS = 1_100;
-    private static final double BANDWIDTH_KBPS = 1_000;
-    private static final double BANDWIDTH_MBPS = 1_000_000;
-    private static final String[] LINK_COLOR = {
-            "pCol1", "pCol2", "pCol3", "pCol4", "pCol5",
-            "pCol6", "pCol7", "pCol8", "pCol9", "pCol10",
-            "pCol11", "pCol12", "pCol13", "pCol14", "pCol15"
-    };
-
-    private static final int LINK_COLOR_MAX = LINK_COLOR.length;
-
-    private Set<Link> allPathLinks;
-    private ElementId src, dst;
-    private List<Path> paths = new LinkedList<>();
-    private int pathIndex;
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-    private final TunnelListener tunnelListener = new InnerPceWebTunnelListener();
-
-    protected TopologyService topologyService;
-    protected TunnelService tunnelService;
-    protected PceService pceService;
-    protected DeviceService deviceService;
-
-    @Override
-    public void init(UiConnection connection, ServiceDirectory directory) {
-        super.init(connection, directory);
-        tunnelService = directory.get(TunnelService.class);
-        pceService = directory.get(PceService.class);
-        deviceService = directory.get(DeviceService.class);
-        tunnelService.addListener(tunnelListener);
-    }
-
-    @Override
-    protected Collection<RequestHandler> createRequestHandlers() {
-        return ImmutableSet.of(
-                new ClearHandler(),
-                new SetPathHandler(),
-                new UpdatePathQueryHandler(),
-                new UpdatePathHandler(),
-                new RemovePathQueryHandler(),
-                new RemovePathHandler(),
-                new UpdatePathInfoHandler(),
-                new ShowTunnelHandler(),
-                new ShowTunnelHighlight());
-    }
-
-    @Override
-    public void destroy() {
-        tunnelService.removeListener(tunnelListener);
-        super.destroy();
-    }
-
-    // Handler classes
-
-    /**
-     * Handles the 'clear' event received from the client.
-     */
-    private final class ClearHandler extends RequestHandler {
-
-        public ClearHandler() {
-            super(PCEWEB_CLEAR);
-        }
-
-        @Override
-        public void process(ObjectNode payload) {
-            src = null;
-            dst = null;
-            sendMessage(highlightsMessage(new Highlights()));
-        }
-    }
-
-    /**
-     * Handles the 'path calculation' event received from the client.
-     */
-    private final class SetPathHandler extends RequestHandler {
-
-        public SetPathHandler() {
-            super(PCEWEB_SET_PATH);
-        }
-
-        @Override
-        public void process(ObjectNode payload) {
-            String srcId = string(payload, SRCID);
-            src = elementId(srcId);
-            String dstId = string(payload, DSTID);
-            dst = elementId(dstId);
-            if (src.equals(dst)) {
-                src = null;
-            }
-
-            String bandWidth = string(payload, BANDWIDTH);
-            String bandWidthType = string(payload, BANDWIDTHTYPE);
-            String costType = string(payload, COSTTYPE);
-            String loadBalancing = string(payload, LOADBALANCING);
-            String lspType = string(payload, LSPTYPE);
-            String tunnelName = string(payload, TUNNEL_NAME);
-
-            if (tunnelName == null || tunnelName.equals(STRING_NULL)) {
-                log.error("tunnel name should not be empty");
-                return;
-            }
-            //Validating tunnel name, duplicated tunnel names not allowed
-            Collection<Tunnel> existingTunnels = tunnelService.queryTunnel(Tunnel.Type.MPLS);
-            if (existingTunnels != null) {
-                for (Tunnel t : existingTunnels) {
-                    if (t.tunnelName().toString().equals(tunnelName)) {
-                        log.error("Path creation failed, Tunnel name already exists");
-                        return;
-                    }
-                }
-            }
-
-            if (pceService == null) {
-                log.error("PCE service is not active");
-                return;
-            }
-
-            if (lspType == null || lspType.equals(STRING_NULL)) {
-                log.error("PCE setup path is failed as LSP type is mandatory");
-            }
-
-            if ((src != null) && (dst != null)) {
-                findAndSendPaths(src, dst, bandWidth, bandWidthType, costType, lspType, tunnelName, loadBalancing);
-            }
-        }
-    }
-
-    /**
-     * Handles the 'update path query' event received from the client.
-     */
-    private final class UpdatePathQueryHandler extends RequestHandler {
-
-        public UpdatePathQueryHandler() {
-            super(PCEWEB_UPDATE_PATH_QUERY);
-        }
-
-        @Override
-        public void process(ObjectNode payload) {
-            String srcId = string(payload, SRCID);
-            ElementId src = elementId(srcId);
-            String dstId = string(payload, DSTID);
-            ElementId dst = elementId(dstId);
-            Device srcDevice = deviceService.getDevice((DeviceId) src);
-            Device dstDevice = deviceService.getDevice((DeviceId) dst);
-
-            TunnelEndPoint tunSrc = IpTunnelEndPoint.ipTunnelPoint(IpAddress
-                    .valueOf(srcDevice.annotations().value("lsrId")));
-            TunnelEndPoint tunDst = IpTunnelEndPoint.ipTunnelPoint(IpAddress
-                    .valueOf(dstDevice.annotations().value("lsrId")));
-
-            Collection<Tunnel> tunnelSet = tunnelService.queryTunnel(tunSrc, tunDst);
-            ObjectNode result = objectNode();
-            ArrayNode arrayNode = arrayNode();
-            for (Tunnel tunnel : tunnelSet) {
-                if (tunnel.type() == MPLS) {
-                    if (tunnel.state().equals(ACTIVE)) {
-                        arrayNode.add(tunnel.tunnelId().toString());
-                        arrayNode.add(tunnel.tunnelName().toString());
-                    }
-                }
-            }
-
-            result.putArray(BUFFER_ARRAY).addAll(arrayNode);
-            sendMessage(PCEWEB_SHOW_TUNNEL, result);
-        }
-    }
-
-    /**
-     * Handles the 'update path' event received from the client.
-     */
-    private final class UpdatePathHandler extends RequestHandler {
-
-        public UpdatePathHandler() {
-            super(PCEWEB_UPDATE_PATH);
-        }
-
-        @Override
-        public void process(ObjectNode payload) {
-            String bandWidth = string(payload, BANDWIDTH);
-            String bandWidthType = string(payload, BANDWIDTHTYPE);
-            String costType = string(payload, COSTTYPE);
-            String tunnelId = string(payload, TUNNEL_ID);
-
-            if (tunnelId == null) {
-                log.error("PCE update path is failed.");
-            }
-
-            findAndSendPathsUpdate(bandWidth, bandWidthType, costType, tunnelId);
-        }
-    }
-
-    /**
-     * Handles the 'update path' event received from the client.
-     */
-    private final class UpdatePathInfoHandler extends RequestHandler {
-
-        public UpdatePathInfoHandler() {
-            super(PCEWEB_TUNNEL_UPDATE_INFO);
-        }
-
-        @Override
-        public void process(ObjectNode payload) {
-            String tunnelIdStr = string(payload, TUNNEL_ID);
-
-            if (tunnelIdStr == null) {
-                log.error("PCE update path is failed.");
-                return;
-            }
-
-            if (tunnelIdStr.equals(STRING_NULL)) {
-                log.error("PCE update path is failed.");
-                return;
-            }
-
-            if (pceService == null) {
-                log.error("PCE service is not active");
-                return;
-            }
-
-            TunnelId tunnelId = TunnelId.valueOf(tunnelIdStr);
-            Tunnel tunnel = tunnelService.queryTunnel(tunnelId);
-            ObjectNode result = objectNode();
-            ArrayNode arrayNode = arrayNode();
-
-            arrayNode.add("Tunnel");
-            arrayNode.add(tunnelIdStr);
-            arrayNode.add("BandWidth");
-            arrayNode.add(tunnel.annotations().value("bandwidth"));
-            arrayNode.add("CostType");
-            arrayNode.add(tunnel.annotations().value("costType"));
-
-            result.putArray(BUFFER_ARRAY).addAll(arrayNode);
-            sendMessage(PCEWEB_TUNNEL_UPDATE_INFO_REPLY, result);
-        }
-    }
-
-    /**
-     * Handles the 'remove path query' event received from the client.
-     */
-    private final class RemovePathQueryHandler extends RequestHandler {
-
-        public RemovePathQueryHandler() {
-            super(PCEWEB_REMOVE_PATH_QUERY);
-        }
-
-        @Override
-        public void process(ObjectNode payload) {
-            String srcId = string(payload, SRCID);
-            ElementId src = elementId(srcId);
-            String dstId = string(payload, DSTID);
-            ElementId dst = elementId(dstId);
-
-            Device srcDevice = deviceService.getDevice((DeviceId) src);
-            Device dstDevice = deviceService.getDevice((DeviceId) dst);
-
-            TunnelEndPoint tunSrc = IpTunnelEndPoint.ipTunnelPoint(IpAddress
-                    .valueOf(srcDevice.annotations().value("lsrId")));
-            TunnelEndPoint tunDst = IpTunnelEndPoint.ipTunnelPoint(IpAddress
-                    .valueOf(dstDevice.annotations().value("lsrId")));
-
-            Collection<Tunnel> tunnelSet = tunnelService.queryTunnel(tunSrc, tunDst);
-            ObjectNode result = objectNode();
-            ArrayNode arrayNode = arrayNode();
-
-            for (Tunnel tunnel : tunnelSet) {
-                if (tunnel.type() == MPLS) {
-                    if (tunnel.state().equals(ACTIVE)) {
-
-                        if (tunnel.annotations().value("loadBalancingPathName") != null) {
-                            boolean present = false;
-                            if (!arrayNode.isNull()) {
-                                for (JsonNode node : arrayNode) {
-                                    if (node.asText().equals(tunnel.annotations().value("loadBalancingPathName"))) {
-                                        present = true;
-                                        break;
-                                    }
-                                }
-                                if (!present) {
-                                    arrayNode.add("");
-                                    arrayNode.add(tunnel.annotations().value("loadBalancingPathName"));
-                                }
-                            }
-
-                        } else {
-                            arrayNode.add(tunnel.tunnelId().toString());
-                            arrayNode.add(tunnel.tunnelName().toString());
-                        }
-                    }
-                }
-            }
-
-            result.putArray(BUFFER_ARRAY).addAll(arrayNode);
-            sendMessage(PCEWEB_SHOW_TUNNEL_REMOVE, result);
-        }
-    }
-
-    /**
-     * Handles the 'remove path' event received from the client.
-     */
-    private final class RemovePathHandler extends RequestHandler {
-
-        public RemovePathHandler() {
-            super(PCEWEB_REMOVE_PATH);
-        }
-
-        @Override
-        public void process(ObjectNode payload) {
-            String tunnelId = string(payload, TUNNEL_ID);
-            String pathName = string(payload, "tunnelname");
-
-            //TODO: if tunnel id null it is load banlanced path
-            if (tunnelId.equals("") && pathName != null) {
-                findAndSendPathsRemove(STRING_NULL, pathName);
-             /*   List<TunnelId> tunnelIds = pceService.getLoadBalancedPath(pathName);
-                for (TunnelId id : tunnelIds) {
-                    Tunnel tunnel = tunnelService.queryTunnel(id);
-                    if (tunnel != null) {
-
-                    }
-                }*/
-            } else {
-                findAndSendPathsRemove(tunnelId, null);
-            }
-
-        }
-    }
-
-    /**
-     * Handles the 'show the existed tunnels' event received from the client.
-     */
-    private final class ShowTunnelHandler extends RequestHandler {
-
-        public ShowTunnelHandler() {
-            super(PCEWEB_QUERY_TUNNELS);
-        }
-
-        @Override
-        public void process(ObjectNode payload) {
-            ObjectNode result = objectNode();
-            ArrayNode arrayNode = arrayNode();
-            Collection<Tunnel> tunnelSet = null;
-
-            tunnelSet = tunnelService.queryTunnel(MPLS);
-            for (Tunnel tunnel : tunnelSet) {
-                if (tunnel.state().equals(ACTIVE)) {
-                    //TODO: if it is load balancing need to check whether to send tunnel ID as null or some negative
-                    //TODO;value
-                    if (tunnel.annotations().value("loadBalancingPathName") != null) {
-                        boolean present = false;
-                        if (!arrayNode.isNull()) {
-                            for (JsonNode node : arrayNode) {
-                                if (node.asText().equals(tunnel.annotations().value("loadBalancingPathName"))) {
-                                    present = true;
-                                    break;
-                                }
-                            }
-                            if (!present) {
-                                arrayNode.add("");
-                                arrayNode.add(tunnel.annotations().value("loadBalancingPathName"));
-                            }
-                        }
-
-                    } else {
-                        arrayNode.add(tunnel.tunnelId().toString());
-                        arrayNode.add(tunnel.tunnelName().toString());
-                    }
-                }
-            }
-
-            result.putArray(BUFFER_ARRAY).addAll(arrayNode);
-            sendMessage(PCEWEB_TUNNEL_QUERY_INFO, result);
-        }
-    }
-
-    /**
-     * Handles the 'show the existed tunnels' event received from the client.
-     */
-    private final class ShowTunnelHighlight extends RequestHandler {
-
-        public ShowTunnelHighlight() {
-            super(PCEWEB_TUNNEL_QUERY_INFO_SHOW);
-        }
-
-        @Override
-        public void process(ObjectNode payload) {
-            String tunnelIdStr = string(payload, TUNNEL_ID);
-            String pathName = string(payload, "tunnelname");
-
-            if (tunnelIdStr.equals("")) {
-                List<Tunnel> tunnels = Lists.newLinkedList();
-                List<TunnelId> tunnelIds = pceService.queryLoadBalancingPath(pathName);
-                for (TunnelId id : tunnelIds) {
-                    Tunnel t = tunnelService.queryTunnel(id);
-                    tunnels.add(t);
-                }
-                if (!tunnels.isEmpty()) {
-                    highlightsForTunnel(tunnels);
-                }
-            } else {
-                TunnelId tunnelId = TunnelId.valueOf(tunnelIdStr);
-                Tunnel t = tunnelService.queryTunnel(tunnelId);
-                if (t != null) {
-                    highlightsForTunnel(t);
-                }
-            }
-        }
-    }
-
-    /**
-     * provides the element id.
-     */
-    private ElementId elementId(String id) {
-        try {
-            return DeviceId.deviceId(id);
-        } catch (IllegalArgumentException e) {
-            return HostId.hostId(id);
-        }
-    }
-
-    /**
-     * Handles the setup path and highlights the path.
-     *
-     * @param src           ID of source
-     * @param dst           ID of destination
-     * @param bandWidth     bandwidth
-     * @param bandWidthType is the kbps or mbps
-     * @param costType      is igp or te
-     * @param lspType       is WITH_SIGNALLING, WITHOUT_SIGNALLING_AND_WITHOUT_SR
-     *                      or SR_WITHOUT_SIGNALLING
-     * @param tunnelName    tunnel id
-     */
-    private void findAndSendPaths(ElementId src, ElementId dst, String bandWidth,
-                                  String bandWidthType, String costType,
-                                  String lspType, String tunnelName, String loadBalancing) {
-        log.debug("src={}; dst={};", src, dst);
-        boolean path;
-        List<Constraint> listConstrnt;
-
-        listConstrnt = addBandwidthCostTypeConstraints(bandWidth, bandWidthType, costType);
-
-        //LSP type
-        LspType lspTypeVal = null;
-        switch (lspType) {
-            case LSP_TYPE_CR:
-                lspTypeVal = LspType.WITH_SIGNALLING;
-                break;
-            case LSP_TYPE_SRBE:
-                lspTypeVal = LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
-                break;
-            case LSP_TYPE_SRTE:
-                lspTypeVal = LspType.SR_WITHOUT_SIGNALLING;
-                break;
-            default:
-                break;
-        }
-
-        boolean loadBalancingOpt = Boolean.parseBoolean(loadBalancing);
-
-        //TODO: need to get explicit paths [temporarily using null as the value]
-
-        if (loadBalancingOpt) {
-            path = pceService.setupPath((DeviceId) src, (DeviceId) dst, tunnelName, listConstrnt, lspTypeVal,
-                    loadBalancingOpt);
-        } else {
-            path = pceService.setupPath((DeviceId) src, (DeviceId) dst, tunnelName, listConstrnt, lspTypeVal,
-                    null);
-        }
-
-        if (!path) {
-            log.error("setup path is failed");
-        }
-    }
-
-    /**
-     * Handles the update path and highlights the path.
-     *
-     * @param bandWidth     bandWidth
-     * @param bandWidthType is the kbps or mbps
-     * @param costType      is igp or te
-     * @param tunnelIdStr   tunnel id
-     */
-    private void findAndSendPathsUpdate(String bandWidth, String bandWidthType,
-                                        String costType, String tunnelIdStr) {
-        if (tunnelIdStr != null) {
-            List<Constraint> listConstrnt;
-
-            if (tunnelIdStr.equals(STRING_NULL)) {
-                log.error("update path is failed");
-                return;
-            }
-
-            if (pceService == null) {
-                log.error("PCE service is not active");
-                return;
-            }
-
-            listConstrnt = addBandwidthCostTypeConstraints(bandWidth, bandWidthType, costType);
-            TunnelId tunnelId = TunnelId.valueOf(tunnelIdStr);
-            boolean path = pceService.updatePath(tunnelId, listConstrnt);
-
-            if (!path) {
-                log.error("update path is failed");
-            }
-        }
-    }
-
-    /**
-     * Handles the remove path and highlights the paths if existed.
-     *
-     * @param tunnelIdStr tunnelId
-     */
-    private void findAndSendPathsRemove(String tunnelIdStr, String pathName) {
-            if (pceService == null) {
-                log.error("PCE service is not active");
-                return;
-            }
-            boolean path;
-
-            if (tunnelIdStr.equals(STRING_NULL) && !pathName.equals(STRING_NULL)) {
-                path = pceService.releasePath(pathName);
-            } else {
-                TunnelId tunnelId = TunnelId.valueOf(tunnelIdStr);
-                path = pceService.releasePath(tunnelId);
-            }
-
-            if (!path) {
-                log.error("remove path is failed");
-            }
-
-    }
-
-    private ImmutableSet.Builder<Link> buildPaths(ImmutableSet.Builder<Link> pathBuilder) {
-        paths.forEach(path -> path.links().forEach(pathBuilder::add));
-        return pathBuilder;
-    }
-
-    /**
-     * Handles the preparation of constraints list with given bandwidth and cost-type.
-     *
-     * @param bandWidth     bandWidth
-     * @param bandWidthType is the kbps or mbps
-     * @param costType      is igp or te
-     * @return
-     */
-    private List<Constraint> addBandwidthCostTypeConstraints(String bandWidth,
-                                                             String bandWidthType,
-                                                             String costType) {
-        List<Constraint> listConstrnt = new LinkedList<>();
-        //bandwidth
-        double bwValue = 0.0;
-        if (!bandWidth.equals(STRING_NULL)) {
-            bwValue = Double.parseDouble(bandWidth);
-        }
-        if (bandWidthType.equals(BANDWIDTH_TYPE_KBPS)) {
-            bwValue = bwValue * BANDWIDTH_KBPS;
-        } else if (bandWidthType.equals(BANDWIDTH_TYPE_MBPS)) {
-            bwValue = bwValue * BANDWIDTH_MBPS;
-        }
-
-        //Cost type
-        CostConstraint.Type costTypeVal = null;
-        switch (costType) {
-            case COST_TYPE_IGP:
-                costTypeVal = CostConstraint.Type.COST;
-                break;
-            case COST_TYPE_TE:
-                costTypeVal = CostConstraint.Type.TE_COST;
-                break;
-            default:
-                break;
-        }
-
-        if (bwValue != 0.0) {
-            listConstrnt.add(PceBandwidthConstraint.of(bwValue, DataRateUnit.valueOf(BANDWIDTH_BPS)));
-        }
-
-        if (costTypeVal != null) {
-            listConstrnt.add(CostConstraint.of(costTypeVal));
-        }
-
-        return listConstrnt;
-    }
-
-    /**
-     * Handles the highlights of selected path.
-     */
-    private void hilightAndSendPaths(Highlights highlights) {
-        LinkHighlight lh;
-        int linkclr = 0;
-        for (Path path : paths) {
-            for (Link link : path.links()) {
-                lh = new LinkHighlight(TopoUtils.compactLinkString(link), PRIMARY_HIGHLIGHT)
-                        .addMod(new Mod(LINK_COLOR[linkclr]));
-                highlights.add(lh);
-            }
-            linkclr = linkclr + 1;
-            if (linkclr == LINK_COLOR_MAX) {
-                linkclr = 0;
-            }
-        }
-
-        sendMessage(highlightsMessage(highlights));
-    }
-
-    /**
-     * Handles the addition of badge and highlights.
-     *
-     * @param highlights highlights
-     * @param elemId     device to be add badge
-     * @param src        device to be add badge
-     * @return
-     */
-    private Highlights addBadge(Highlights highlights,
-                                String elemId, String src) {
-        highlights = addDeviceBadge(highlights, elemId, src);
-        return highlights;
-    }
-
-    /**
-     * Handles the badge add and highlights.
-     *
-     * @param h      highlights
-     * @param elemId device to be add badge
-     * @param type   device badge value
-     * @return highlights
-     */
-    private Highlights addDeviceBadge(Highlights h, String elemId, String type) {
-        DeviceHighlight dh = new DeviceHighlight(elemId);
-        dh.setBadge(createBadge(type));
-        h.add(dh);
-        return h;
-    }
-
-    /**
-     * Handles the node badge add and highlights.
-     *
-     * @param type device badge value
-     * @return badge of given node
-     */
-    private NodeBadge createBadge(String type) {
-        return NodeBadge.text(type);
-    }
-
-    /**
-     * Handles the event of tunnel listeners.
-     */
-    private class InnerPceWebTunnelListener implements TunnelListener {
-        @Override
-        public void event(TunnelEvent event) {
-            Tunnel tunnel = event.subject();
-            if (tunnel.type() == MPLS) {
-                highlightsForTunnel(tunnel);
-            }
-        }
-    }
-
-    /**
-     * Handles the event of topology listeners.
-     */
-    private void findTunnelAndHighlights() {
-        Collection<Tunnel> tunnelSet = null;
-        Highlights highlights = new Highlights();
-        paths.clear();
-        tunnelSet = tunnelService.queryTunnel(MPLS);
-        if (tunnelSet.size() == 0) {
-            log.warn("Tunnel does not exist");
-            sendMessage(highlightsMessage(highlights));
-            return;
-        }
-
-        for (Tunnel tunnel : tunnelSet) {
-            if (tunnel.path() == null) {
-                log.error("path does not exist");
-                sendMessage(highlightsMessage(highlights));
-                return;
-            }
-            if (!tunnel.state().equals(ACTIVE)) {
-                log.debug("Tunnel state is not active");
-                sendMessage(highlightsMessage(highlights));
-                return;
-            }
-            Link firstLink = tunnel.path().links().get(0);
-            if (firstLink != null) {
-                if (firstLink.src() != null) {
-                    highlights = addBadge(highlights, firstLink.src().deviceId().toString(), SRC);
-                }
-            }
-            Link lastLink = tunnel.path().links().get(tunnel.path().links().size() - 1);
-            if (lastLink != null) {
-                if (lastLink.dst() != null) {
-                    highlights = addBadge(highlights, lastLink.dst().deviceId().toString(), DST);
-                }
-            }
-            paths.add(tunnel.path());
-        }
-
-        ImmutableSet.Builder<Link> builder = ImmutableSet.builder();
-        allPathLinks = buildPaths(builder).build();
-        hilightAndSendPaths(highlights);
-    }
-
-    private void highlightsForTunnel(Tunnel... tunnels) {
-        highlightsForTunnel(Arrays.asList(tunnels));
-    }
-    /**
-     * Handles the event of topology listeners.
-     */
-    private void highlightsForTunnel(List<Tunnel> tunnels) {
-        Highlights highlights = new Highlights();
-        paths.clear();
-
-        if (tunnels.isEmpty()) {
-            log.error("path does not exist");
-            sendMessage(TopoJson.highlightsMessage(highlights));
-            return;
-        }
-        for (Tunnel tunnel : tunnels) {
-        if (tunnel.path() == null) {
-            log.error("path does not exist");
-            sendMessage(highlightsMessage(highlights));
-            return;
-        }
-        if (!tunnel.state().equals(ACTIVE)) {
-            log.debug("Tunnel state is not active");
-            sendMessage(highlightsMessage(highlights));
-            return;
-        }
-
-        Link firstLink = tunnel.path().links().get(0);
-        if (firstLink != null) {
-            if (firstLink.src() != null) {
-                highlights = addBadge(highlights, firstLink.src().deviceId().toString(), SRC);
-            }
-        }
-        Link lastLink = tunnel.path().links().get(tunnel.path().links().size() - 1);
-        if (lastLink != null) {
-            if (lastLink.dst() != null) {
-                highlights = addBadge(highlights, lastLink.dst().deviceId().toString(), DST);
-            }
-        }
-        paths.add(tunnel.path());
-        }
-
-        ImmutableSet.Builder<Link> builder = ImmutableSet.builder();
-        allPathLinks = buildPaths(builder).build();
-        hilightAndSendPaths(highlights);
-    }
-}
diff --git a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovOverlay.java b/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovOverlay.java
deleted file mode 100644
index 1a32815..0000000
--- a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovOverlay.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pceweb;
-
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.net.Annotations;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.resource.ContinuousResource;
-import org.onosproject.net.resource.ResourceService;
-import org.onosproject.net.resource.Resource;
-import org.onosproject.net.resource.DiscreteResource;
-import org.onosproject.net.resource.Resources;
-import org.onosproject.ui.UiTopoOverlay;
-import org.onosproject.ui.topo.PropertyPanel;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.link.LinkEvent;
-import org.onosproject.ui.topo.TopoConstants.CoreButtons;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.IpAddress;
-/**
- * PCE WEB topology overlay.
- */
-public class PceWebTopovOverlay extends UiTopoOverlay {
-
-    // NOTE: this must match the ID defined in pcewebTopovOverlay.js
-    private static final String OVERLAY_ID = "PCE-web-overlay";
-    private static final String MY_TITLE = "Device details";
-
-    public static final String AS_NUMBER = "asNumber";
-    public static final String LSR_ID = "lsrId";
-    public static final String ABR_BIT = "abrBit";
-    public static final String ASBR_BIT = "externalBit";
-    public static final String TE_METRIC = "teCost";
-    public static final String ABR = "ABR";
-    public static final String ASBR = "ASBR";
-    public static final String ABR_ASBR = "ABR/ASBR";
-    public static final String INNER = "Inner";
-    public static final long IDENTIFIER_SET = 0x100000000L;
-    public static final long SET = 0xFFFFFFFFL;
-    public static final String TYPE_LABEL = "Type";
-    public static final String AS_NUMBER_LABEL = "AS Number";
-    public static final String LSR_ID_LABEL = "LSR ID";
-    public static final String POSITION_LABEL = "Position";
-
-    /**
-     * Initialize the overlay ID.
-     */
-    public PceWebTopovOverlay() {
-        super(OVERLAY_ID);
-    }
-
-    @Override
-    public void deactivate() {
-        super.deactivate();
-        log.debug("Deactivated");
-    }
-
-    @Override
-    public void modifyDeviceDetails(PropertyPanel pp, DeviceId deviceId) {
-
-         pp.title(MY_TITLE);
-         DeviceService deviceService = AbstractShellCommand.get(DeviceService.class);
-         pp.removeAllProps();
-         pp.removeButtons(CoreButtons.SHOW_PORT_VIEW)
-                .removeButtons(CoreButtons.SHOW_GROUP_VIEW)
-                .removeButtons(CoreButtons.SHOW_METER_VIEW);
-
-         if (deviceService != null) {
-
-            Device device = deviceService.getDevice(deviceId);
-            Annotations annots = device.annotations();
-
-            String type = annots.value(AnnotationKeys.TYPE);
-            String asNumber = annots.value(AS_NUMBER);
-            String lsrId = annots.value(LSR_ID);
-            String abrStatus = annots.value(ABR_BIT);
-            String asbrStatus = annots.value(ASBR_BIT);
-
-            if (type != null) {
-                pp.addProp(TYPE_LABEL, TYPE_LABEL, type);
-            }
-
-            if (asNumber != null) {
-                pp.addProp(AS_NUMBER_LABEL, AS_NUMBER_LABEL, asNumber);
-            }
-
-            if (lsrId != null) {
-                pp.addProp(LSR_ID_LABEL, LSR_ID_LABEL, lsrId);
-            }
-
-            if (Boolean.valueOf(abrStatus).equals(true) && Boolean.valueOf(asbrStatus).equals(true)) {
-                pp.addProp(POSITION_LABEL, POSITION_LABEL, ABR_ASBR);
-            } else if (Boolean.valueOf(abrStatus).equals(true)) {
-                pp.addProp(POSITION_LABEL, POSITION_LABEL, ABR);
-            } else if (Boolean.valueOf(asbrStatus).equals(true)) {
-                pp.addProp(POSITION_LABEL, POSITION_LABEL, ASBR);
-            } else {
-                pp.addProp(POSITION_LABEL, POSITION_LABEL, INNER);
-            }
-        }
-    }
-
-    @Override
-    public Map<String, String> additionalLinkData(LinkEvent event) {
-        Map<String, String> map = new HashMap<>();
-        Link link = event.subject();
-        long srcPortNo;
-        long dstPortNo;
-        IpAddress ipDstAddress = null;
-        IpAddress ipSrcAddress = null;
-        String srcPort;
-        String dstPort;
-        String bandWidth;
-
-        srcPortNo = link.src().port().toLong();
-        if (((srcPortNo & IDENTIFIER_SET) == IDENTIFIER_SET)) {
-            srcPort = String.valueOf(srcPortNo);
-        } else {
-            ipSrcAddress = Ip4Address.valueOf((int) srcPortNo);
-            srcPort = ipSrcAddress.toString();
-        }
-
-        dstPortNo = link.dst().port().toLong();
-        if (((dstPortNo & IDENTIFIER_SET) == IDENTIFIER_SET)) {
-            dstPort = String.valueOf(dstPortNo);
-        } else {
-            ipDstAddress = Ip4Address.valueOf((int) dstPortNo);
-            dstPort = ipDstAddress.toString();
-        }
-
-        map.put("Src Address", srcPort);
-        map.put("Dst Address", dstPort);
-        map.put("Te metric", link.annotations().value(TE_METRIC));
-
-        ResourceService resService = AbstractShellCommand.get(ResourceService.class);
-        DiscreteResource devResource = Resources.discrete(link.src().deviceId(), link.src().port()).resource();
-        if (resService == null) {
-            log.warn("resource service does not exist");
-            return map;
-        }
-
-        if (devResource == null) {
-            log.warn("Device resources does not exist");
-            return map;
-        }
-        double regBandwidth = 0;
-        try {
-            Thread.sleep(100);
-        } catch (InterruptedException e) {
-            log.error("Exception occurred while getting the bandwidth.");
-            Thread.currentThread().interrupt();
-        }
-        Set<Resource> resources = resService.getRegisteredResources(devResource.id());
-        for (Resource res : resources) {
-            if (res instanceof ContinuousResource) {
-                regBandwidth = ((ContinuousResource) res).value();
-                break;
-            }
-        }
-
-        if (regBandwidth != 0) {
-            bandWidth = String.valueOf(regBandwidth);
-            map.put("Bandwidth", bandWidth);
-        }
-
-        return map;
-    }
-}
diff --git a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/package-info.java b/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/package-info.java
deleted file mode 100644
index f0c3ed6..0000000
--- a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * PCE visualization GUI topology view overlay.
- */
-package org.onosproject.pceweb;
diff --git a/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopov.css b/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopov.css
deleted file mode 100644
index 8e414c0..0000000
--- a/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopov.css
+++ /dev/null
@@ -1,154 +0,0 @@
-/* css for PCE web app topology overlay  */

-.radioButtonSpace {

-    margin-left:20px;

-}

-/* color:1 */

-#ov-topo svg .link.primary.pCol1 {

-    stroke-width: 6px;

-}

-.light #ov-topo svg .link.primary.pCol1 {

-    stroke: #FF00CE;

-}

-.dark #ov-topo svg .link.primary.pCol1 {

-    stroke: #FF00CE;

-}

-/* color:2 */

-#ov-topo svg .link.primary.pCol2 {

-    stroke-width: 6px;

-}

-.light #ov-topo svg .link.primary.pCol2 {

-    stroke: #ff4000;

-}

-.dark #ov-topo svg .link.primary.pCol2 {

-    stroke: #ff4000;

-}

-/* color:3 */

-#ov-topo svg .link.primary.pCol3 {

-    stroke-width: 6px;

-}

-.light #ov-topo svg .link.primary.pCol3 {

-    stroke: #ffb400;

-}

-.dark #ov-topo svg .link.primary.pCol3 {

-    stroke: #ffb400;

-}

-/* color:4 */

-#ov-topo svg .link.primary.pCol4 {

-    stroke-width: 6px;

-}

-.light #ov-topo svg .link.primary.pCol4 {

-    stroke: #89ff00;

-}

-.dark #ov-topo svg .link.primary.pCol4 {

-    stroke: #89ff00;

-}

-/* color:5 */

-#ov-topo svg .link.primary.pCol5 {

-    stroke-width: 6px;

-}

-.light #ov-topo svg .link.primary.pCol5 {

-    stroke: #00FF2B;

-}

-.dark #ov-topo svg .link.primary.pCol5 {

-    stroke: #00FF2B;

-}

-/* color:6 */

-#ov-topo svg .link.primary.pCol6 {

-    stroke-width: 6px;

-}

-.light #ov-topo svg .link.primary.pCol6 {

-    stroke: #00ffec;

-}

-.dark #ov-topo svg .link.primary.pCol6 {

-    stroke: #00ffec;

-}

-/* color:7 */

-#ov-topo svg .link.primary.pCol7 {

-    stroke-width: 6px;

-}

-.light #ov-topo svg .link.primary.pCol7 {

-    stroke: #00abff;

-}

-.dark #ov-topo svg .link.primary.pCol7 {

-    stroke: #00abff;

-}

-/* color:8 */

-#ov-topo svg .link.primary.pCol8 {

-    stroke-width: 6px;

-}

-.light #ov-topo svg .link.primary.pCol8 {

-    stroke: #005eff;

-}

-.dark #ov-topo svg .link.primary.pCol8 {

-    stroke: #005eff;

-}

-/* color:9 */

-#ov-topo svg .link.primary.pCol9 {

-    stroke-width: 6px;

-}

-.light #ov-topo svg .link.primary.pCol9 {

-    stroke: #0011ff;

-}

-.dark #ov-topo svg .link.primary.pCol9 {

-    stroke: #0011ff;

-}

-/* color:10 */

-#ov-topo svg .link.primary.pCol10 {

-    stroke-width: 6px;

-}

-.light #ov-topo svg .link.primary.pCol10 {

-    stroke: #7c00ff;

-}

-.dark #ov-topo svg .link.primary.pCol10 {

-    stroke: #7c00ff;

-}

-/* color:11 */

-#ov-topo svg .link.primary.pCol11 {

-    stroke-width: 6px;

-}

-.light #ov-topo svg .link.primary.pCol11 {

-    stroke: #ffe700;

-}

-.dark #ov-topo svg .link.primary.pCol11 {

-    stroke: #ffe700;

-}

-/* color:12 */

-#ov-topo svg .link.primary.pCol12 {

-    stroke-width: 6px;

-}

-.light #ov-topo svg .link.primary.pCol12 {

-    stroke: #00ffec;

-}

-.dark #ov-topo svg .link.primary.pCol12 {

-    stroke: #00ffec;

-}

-/* color:13 */

-#ov-topo svg .link.primary.pCol13 {

-    stroke-width: 6px;

-}

-.light #ov-topo svg .link.primary.pCol13 {

-    stroke: #c900ff;

-}

-.dark #ov-topo svg .link.primary.pCol13 {

-    stroke: #c900ff;

-}

-/* color:14 */

-#ov-topo svg .link.primary.pCol14 {

-    stroke-width: 6px;

-}

-.light #ov-topo svg .link.primary.pCol14 {

-    stroke: #ff00e7;

-}

-.dark #ov-topo svg .link.primary.pCol14 {

-    stroke: #ff00e7;

-}

-/* color:15 */

-#ov-topo svg .link.primary.pCol15 {

-    stroke-width: 6px;

-}

-.light #ov-topo svg .link.primary.pCol15 {

-    stroke: #3c00ff;

-}

-.dark #ov-topo svg .link.primary.pCol15 {

-    stroke: #3c00ff;

-}

diff --git a/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopov.html b/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopov.html
deleted file mode 100644
index 7d02ca9..0000000
--- a/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopov.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<!-- partial HTML -->
-<div id="ov-pceweb-topov">
-    <p>This is a hidden view .. just a placeholder to house the javascript</p>
-</div>
diff --git a/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopovDemo.js b/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopovDemo.js
deleted file mode 100644
index 0523f33..0000000
--- a/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopovDemo.js
+++ /dev/null
@@ -1,600 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/*PCE topology overlay web application implementation.*/
-
-(function () {
-    'use strict';
-
-    // injected refs
-    var $log, fs, flash, wss, tps, ns, tds, ds;
-    var tunnelNameData, tunnelNameDataRemove, tunnelDataUpdateInfo, tunnelIdUpd, tunnelNameDataQuery;
-   // constants
-    var srcMessage = 'pceTopovSetSrc',
-        dstMessage = 'pceTopovSetDst',
-        clearMessage = 'pceTopovClear',
-        setPathmsg =  'pceTopovSetMode',
-        updatePathmsgQuery = 'pceTopovUpdateQuery',
-        remPathmsgQuery = 'pceTopovRemQuery',
-        updatePathmsg = 'pceTopovUpdate',
-        updatePathmsgInfo = 'updatePathmsgInfo',
-        remPathmsg = 'pceTopovRem',
-        showTunnelInfoMsg = 'pceTopovShowTunnels',
-        queryDisplayTunnelMsg = 'pceTopovTunnelDisplay',
-        showTunnelInfoRemoveMsg = 'pceTopovShowTunnelsRem',
-        showTunnelInfoUpdateMsg = 'pceTopovShowTunnelsUpdate',
-        showTunnelInfoQuery = 'pceTopovShowTunnelsQuery',
-        showTunnelHighlightMsg = 'pceTopovshowTunnelHighlightMsg';
-
-    // internal state
-    var currentMode = null;
-    var handlerMap = {},
-        handlerMapRem = {},
-        handlerMapshowQuery = {},
-        handlerMapShowUpdate = {};
-    // === ---------------------------
-    // === Helper functions
-
-    // === ---------------------------
-    // === Main API functions
-
-    function setSrc(node) {
-        wss.sendEvent(srcMessage, {
-            id: node.id,
-            type: node.type
-        });
-        flash.flash('Source node: ' + node.id);
-    }
-
-    function setDst(node) {
-        wss.sendEvent(dstMessage, {
-            id: node.id,
-            type: node.type
-        });
-        flash.flash('Destination node: ' + node.id);
-    }
-
-    function clear() {
-        wss.sendEvent(clearMessage);
-        flash.flash('Cleared source and destination');
-    }
-
-    function dClose() {
-        $log.debug('Dialog Close button clicked (or Esc pressed)');
-    }
-
-    function createUserText() {
-        var content = ds.createDiv('constraints-input'),
-            form = content.append('form'),
-            p = form.append('p');
-
-        function addAttribute(name, id, nameField, type) {
-            if (type == 'radio') {
-                if (id == 'pce-lsp-type-cr') {
-                    p.append('input').attr({
-                        type: type,
-                        name: name,
-                        id: id,
-                        checked: 'checked',
-                        class: 'radioButtonSpace'
-                    });
-                } else {
-                    p.append('input').attr({
-                        type: type,
-                        name: name,
-                        id: id,
-                        class: 'radioButtonSpace'
-                    });
-                }
-            } else {
-                p.append('input').attr({
-                    type: type,
-                    name: name,
-                    id: id
-                });
-            }
-
-            p.append('span').text(nameField);
-            p.append('br');
-        }
-
-        //Add the bandwidth related inputs.
-        addAttribute('band-width-name', 'band-width-box', 'Band Width', 'checkbox');
-        addAttribute('band-width-value-name', 'band-width-value', null, 'number');
-        addAttribute('pce-band-type', 'band-kpbs-val', 'kbps', 'radio');
-        addAttribute('pce-band-type', 'band-mpbs-val', 'mbps', 'radio');
-        addAttribute('pce-band-type', 'band-bps-val', 'bps', 'radio');
-        //Add the cost type related inputs.
-        addAttribute('pce-cost-type-name', 'pce-cost-type', 'Cost Type', 'checkbox');
-        addAttribute('pce-cost-type-valname', 'pce-cost-type-igp', 'IGP', 'radio');
-        addAttribute('pce-cost-type-valname', 'pce-cost-type-te', 'TE', 'radio');
-
-        //Add the load balancing related inputs.
-        addAttribute('pce-load-balancing-option-name', 'pce-load-balance', 'Load balancing', 'checkbox');
-
-        //Add the LSP type related inputs.
-        p.append('span').text("Lsp Type *");
-        p.append('br');
-        addAttribute('pce-lsp-type-valname', 'pce-lsp-type-cr', 'With signalling', 'radio');
-        addAttribute('pce-lsp-type-valname', 'pce-lsp-type-srbe', 'Without SR without signalling', 'radio');
-        addAttribute('pce-lsp-type-valname', 'pce-lsp-type-srte', 'With SR without signalling', 'radio');
-        //Add the tunnel name
-        p.append('span').text("Tunnel Name  *");
-        p.append('br');
-        addAttribute('pce-tunnel-name', 'pce-tunnel-name-id', null, 'text');
-        p.append('span').text("* indicates mandatory fields");
-        return content;
-    }
-
-    function createUserTextUpdate(data) {
-        var content = ds.createDiv(),
-            form = content.append('form'),
-            p = form.append('p');
-
-        p.append('span').text('Tunnel IDs');
-        p.append('br');
-
-        for (var idx = 0; idx < data.a.length; idx++) {
-            p.append('input').attr({
-                id: 'tunnel-id-'+idx,
-                type: 'radio',
-                name: 'tunnel-id-name',
-                value: data.a[idx]
-            });
-            idx++;
-            p.append('span').text(data.a[idx]);
-            p.append('br');
-        }
-        return content;
-    }
-
-    function createUserTextUpdatePathEvent(data) {
-        var content = ds.createDiv(),
-            form = content.append('form'),
-            p = form.append('p');
-        var constType;
-
-        function addAttribute(name, id, nameField, type) {
-            if (type == 'radio') {
-                p.append('input').attr({
-                    type: type,
-                    name: name,
-                    id: id,
-                    class: 'radioButtonSpace'
-                });
-            }
-            else {
-                p.append('input').attr({
-                    type: type,
-                    name: name,
-                    id: id
-                });
-            }
-
-            p.append('span').text(nameField);
-            p.append('br');
-        }
-
-        data.a.forEach( function (val, idx) {
-            if (val == 'Tunnel') {
-                constType = 'TUNNEL';
-                return;
-            }
-
-            if (val == 'BandWidth') {
-                constType = 'BW';
-                return;
-            }
-
-            if (val == 'CostType') {
-                constType = 'CT';
-                return;
-            }
-
-            if (val == 'LoadBalancing') {
-                constType = 'LB';
-                return;
-            }
-
-            if (constType == 'TUNNEL') {
-                p.append('span').text('Tunnel Id: ');
-                p.append('span').text(val);
-                p.append('br');
-                tunnelIdUpd = val;
-            }
-
-            if (constType == 'BW') {
-                //addAttribute('band-width-name', 'update-band-width-box', 'Band Width', 'checkbox');
-                p.append('span').text('Band Width');
-                p.append('br');
-                p.append('input').attr({
-                    id: 'update-band-width-value',
-                    type: 'number',
-                    name: 'band-width-value-name',
-                    value: val
-                });
-                p.append('br');
-                p.append('input').attr({
-                    id: 'update-band-bps-val',
-                    type: 'radio',
-                    name: 'pce-band-type',
-                    checked: 'checked',
-                    class: 'radioButtonSpace'
-                });
-                p.append('span').text('bps');
-                p.append('br');
-                addAttribute('pce-band-type', 'update-band-kbps-val', 'kbps', 'radio');
-                addAttribute('pce-band-type', 'update-band-mbps-val', 'mbps', 'radio');
-                addAttribute('pce-band-type', 'update-band-none-val', 'none', 'radio');
-            }
-
-            if (constType == 'CT') {
-                //addAttribute('pce-cost-type', 'update-pce-cost-type', 'Cost Type', 'checkbox');
-                p.append('span').text('Cost Type');
-                p.append('br');
-                if (val == 'COST') {
-                    p.append('input').attr({
-                        id: 'update-pce-cost-type-igp',
-                        type: 'radio',
-                        name: 'pce-cost-type-value',
-                        checked: 'checked',
-                        class: 'radioButtonSpace'
-                    });
-                    p.append('span').text('IGP');
-                    p.append('br');
-                    addAttribute('pce-cost-type-value', 'update-pce-cost-type-te', 'TE', 'radio');
-                    addAttribute('pce-cost-type-value', 'update-pce-cost-type-none', 'none', 'radio');
- 
-                } else {
-                    addAttribute('pce-cost-type-value', 'update-pce-cost-type-igp', 'IGP', 'radio');
-                    p.append('input').attr({
-                        id: 'update-pce-cost-type-te',
-                        type: 'radio',
-                        name: 'pce-cost-type-value',
-                        checked: 'checked',
-                        class: 'radioButtonSpace'
-                    });
-                    p.append('span').text('TE');
-                    p.append('br');
-                    addAttribute('pce-cost-type-value', 'update-pce-cost-type-none', 'none', 'radio');
-                }
-            }
-        } );
-
-        return content;
-    }
-
-    function createUserTextRemove(data) {
-
-        var content = ds.createDiv(),
-            form = content.append('form'),
-            p = form.append('p');
-
-        p.append('span').text('Tunnels');
-        p.append('br');
-
-        for (var idx = 0; idx < data.a.length; idx++) {
-            p.append('input').attr({
-                id: 'tunnel-id-remove-'+idx,
-                type: 'checkbox',
-                name: 'tunnel-id-name-remove',
-                value: data.a[idx]
-            });
-            idx++;
-            p.append('span').text(data.a[idx]);
-            p.append('br');
-        }
-
-        return content;
-    }
-
-    function createUserTextQuery(data) {
-
-        var content = ds.createDiv(),
-            form = content.append('form'),
-            p = form.append('p');
-
-        p.append('span').text('Tunnels');
-        p.append('br');
-
-        for (var idx =0; idx < data.a.length; idx++) {
-            p.append('input').attr({
-                id: 'tunnel-id-query-'+idx,
-                type: 'radio',
-                name: 'tunnel-id-name-query',
-                value: data.a[idx]
-            });
-            idx++;
-            p.append('span').text(data.a[idx]);
-            p.append('br');
-        }
-        return content;
-    }
-
-    function isChecked(cboxId) {
-        return d3.select('#' + cboxId).property('checked');
-    }
-
-    function getCheckedValue(cboxId) {
-        return d3.select('#' + cboxId).property('value');
-    }
-
-    function showTunnelInformation(data) {
-        wss.unbindHandlers(handlerMap);
-        tunnelNameData = data;
-
-        function dOkUpdate() {
-            var tdString = '' ;
-            for (var idx = 0; idx < tunnelNameData.a.length; idx++) {
-                var tunnelName = isChecked('tunnel-id-'+idx);
-                if (tunnelName) {
-                    tdString = tunnelNameData.a[idx];
-                }
-                idx++;
-            }
-            //send event to server for getting the tunnel information.
-            if (tdString != null) {
-                handlerMapShowUpdate[showTunnelInfoUpdateMsg] = showTunnelInfoUpdateMsgHandle;
-                wss.bindHandlers(handlerMapShowUpdate);
-
-                wss.sendEvent(updatePathmsgInfo, {
-                    tunnelid: tdString
-                });
-            }
-            //constraintsUpdateDialog(tdString);
-            $log.debug('Dialog OK button clicked');
-        }
-
-        tds.openDialog()
-            .setTitle('Available LSPs with selected device')
-            .addContent(createUserTextUpdate(data))
-            .addOk(dOkUpdate, 'OK')
-            .addCancel(dClose, 'Close')
-            .bindKeys();
-    }
-
-    function dOkUpdateEvent() {
-        $log.debug('Select constraints for update path Dialog OK button pressed');
-
-        var bandValue = null,
-            bandType = null;
-
-        bandValue = getCheckedValue('update-band-width-value');
-
-        if (isChecked('update-band-kbps-val')) {
-                    bandType = 'kbps';
-        } else if (isChecked('update-band-mbps-val')) {
-                    bandType = 'mbps';
-        } else if (isChecked('update-band-bps-val')) {
-                    bandType = 'bps';
-        } else if (isChecked('update-band-none-val')) {
-                    bandType = null;
-                    bandValue = null;
-        }
-
-        var costTypeVal = null;
-
-        if (isChecked('update-pce-cost-type-igp')) {
-            costTypeVal = 'igp';
-        } else if (isChecked('update-pce-cost-type-te')) {
-            costTypeVal = 'te';
-        } else if (isChecked('update-pce-cost-type-none')) {
-            costTypeVal = null;
-        }
-
-        wss.sendEvent(updatePathmsg, {
-                bw: bandValue,
-                bwtype: bandType,
-                ctype: costTypeVal,
-                tunnelid: tunnelIdUpd
-        });
-
-        flash.flash('update path message');
-
-    }
-
-    function showTunnelInformationRemove(data) {
-
-        wss.unbindHandlers(handlerMapRem);
-        tunnelNameDataRemove = data;
-        tds.openDialog()
-            .setTitle('Available Tunnels for remove')
-            .addContent(createUserTextRemove(data))
-            .addOk(dOkRemove, 'OK')
-            .addCancel(dClose, 'Close')
-            .bindKeys();
-    }
-
-    function showTunnelInformationQuery(data) {
-
-        wss.unbindHandlers(handlerMapshowQuery);
-        tunnelNameDataQuery = data;
-        tds.openDialog()
-            .setTitle('Available Tunnels for highlight')
-            .addContent(createUserTextQuery(data))
-            .addOk(dOkQuery, 'OK')
-            .addCancel(dClose, 'Close')
-            .bindKeys();
-    }
-
-    function showTunnelInfoUpdateMsgHandle(data) {
-
-        wss.unbindHandlers(handlerMapShowUpdate);
-        tunnelDataUpdateInfo = data;
-        tds.openDialog()
-            .setTitle('Constrainst selection for update')
-            .addContent(createUserTextUpdatePathEvent(data))
-            .addOk(dOkUpdateEvent, 'OK')
-            .addCancel(dClose, 'Close')
-            .bindKeys();
-    }
-
-    //setup path
-    function setMode(node) {
-
-        function dOk() {
-            var bandWidth = isChecked('band-width-box'),
-                bandValue = null,
-                bandType = null;
-
-            if (bandWidth) {
-                bandValue = getCheckedValue('band-width-value');
-
-                if (isChecked('band-kpbs-val')) {
-                    bandType = 'kbps';
-                } else if (isChecked('band-mpbs-val')) {
-                    bandType = 'mbps';
-                } else if (isChecked('band-bps-val')) {
-                    bandType = 'bps';
-                }
-            }
-
-            var costType = isChecked('pce-cost-type'),
-                costTypeVal = null;
-
-            if (costType) {
-                if (isChecked('pce-cost-type-igp')) {
-                    costTypeVal = 'igp';
-                } else if (isChecked('pce-cost-type-te')) {
-                   costTypeVal = 'te';
-                }
-            }
-
-            var loadBalancedOption = isChecked('pce-load-balance');
-
-            var lspTypeVal = null;
-
-            if (isChecked('pce-lsp-type-cr')) {
-                lspTypeVal = 'cr';
-            } else if (isChecked('pce-lsp-type-srbe')) {
-                   lspTypeVal = 'srbe';
-            } else if (isChecked('pce-lsp-type-srte')) {
-                   lspTypeVal = 'srte';
-            }
-
-            wss.sendEvent(setPathmsg, {
-                srid: node[0],
-                dsid: node[1],
-                bw: bandValue,
-                bwtype: bandType,
-                ctype: costTypeVal,
-                lb: loadBalancedOption,
-                lsptype: lspTypeVal,
-                tunnelname: getCheckedValue('pce-tunnel-name-id')
-            });
-
-            flash.flash('create path message');
-            $log.debug('Dialog OK button clicked');
-        }
-
-        tds.openDialog()
-        .setTitle('constraints selection')
-        .addContent(createUserText())
-        .addOk(dOk, 'OK')
-        .addCancel(dClose, 'Close')
-        .bindKeys();
-    }
-
-    function updatePath(node) {
-
-        wss.sendEvent(updatePathmsgQuery, {
-            srid: node[0],
-            dsid: node[1]
-        });
-
-        handlerMap[showTunnelInfoMsg] = showTunnelInformation;
-        wss.bindHandlers(handlerMap);
-
-        flash.flash('update path message');
-    }
-
-    function dOkRemove() {
-
-        for (var idx = 0; idx < tunnelNameDataRemove.a.length; idx++) {
-            var tunnelNameVal = isChecked('tunnel-id-remove-'+idx);
-            if (tunnelNameVal) {
-                wss.sendEvent(remPathmsg, {
-                    tunnelid: tunnelNameDataRemove.a[idx],
-                    tunnelname: tunnelNameDataRemove.a[++idx]
-                });
-            }
-            idx++;
-        }
-
-        flash.flash('remove path message');
-    }
-
-    function dOkQuery() {
-
-        for (var idx = 0; idx < tunnelNameDataQuery.a.length; idx++) {
-            var tunnelNameVal = isChecked('tunnel-id-query-'+idx);
-            if (tunnelNameVal) {
-                wss.sendEvent(showTunnelHighlightMsg, {
-                    tunnelid: tunnelNameDataQuery.a[idx],
-                    tunnelname: tunnelNameDataQuery.a[++idx]
-                });
-            }
-            idx++;
-        }
-
-        flash.flash('query path message');
-    }
-
-    function remPath(node) {
-        wss.sendEvent(remPathmsgQuery, {
-            srid: node[0],
-            dsid: node[1]
-        });
-
-        handlerMapRem[showTunnelInfoRemoveMsg] = showTunnelInformationRemove;
-        wss.bindHandlers(handlerMapRem);
-    }
-
-  function queryTunnelDisplay() {
-        handlerMapshowQuery[showTunnelInfoQuery] = showTunnelInformationQuery;
-        wss.bindHandlers(handlerMapshowQuery);
-
-        wss.sendEvent(queryDisplayTunnelMsg);
-    }
-    // === ---------------------------
-    // === Module Factory Definition
-
-    angular.module('ovPcewebTopov', [])
-        .factory('PcewebTopovDemoService',
-        ['$log', 'FnService', 'FlashService', 'WebSocketService',
-        'TopoPanelService', 'NavService', 'TopoDialogService', 'DialogService',
-
-        function (_$log_, _fs_, _flash_, _wss_, _tps_, _ns_,_tds_, _ds_) {
-            $log = _$log_;
-            fs = _fs_;
-            flash = _flash_;
-            wss = _wss_;
-            tps = _tps_;
-            ns = _ns_;
-            tds = _tds_;
-            ds = _ds_;
-
-            return {
-                setSrc: setSrc,
-                setDst: setDst,
-                clear: clear,
-                setMode: setMode,
-                updatePath: updatePath,
-                remPath: remPath,
-                queryTunnelDisplay: queryTunnelDisplay
-            };
-        }]);
-}());
diff --git a/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopovOverlay.js b/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopovOverlay.js
deleted file mode 100644
index 02320b0..0000000
--- a/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopovOverlay.js
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-// PCE web topology overlay - client side
-//
-// This is the glue that binds our business logic (in pcewebTopovDemo.js)
-// to the overlay framework.
-
-(function () {
-    'use strict';
-
-    // injected refs
-    var $log, tov, pps;
-
-    // internal state should be kept in the service module (not here)
-    var selection;
-    // our overlay definition
-    var overlay = {
-        // NOTE: this must match the ID defined in AppUiTopovOverlay
-        overlayId: 'PCE-web-overlay',
-        glyphId: 'topo',
-        tooltip: 'PCE web Topo Overlay',
-
-        activate: function () {
-            $log.debug("PCE web topology overlay ACTIVATED");
-        },
-        deactivate: function () {
-            pps.clear();
-            $log.debug("PCE web topology overlay DEACTIVATED");
-        },
-
-        // These glyphs get installed using the overlayId as a prefix.
-        // e.g. 'src' is installed as 'PCE-web-overlay-src'
-        // They can be referenced (from this overlay) as '*src'
-        // That is, the '*' prefix stands in for 'PCE-web-overlay-'
-        glyphs: {
-             jp: {
-                vb: '0 0 110 110',
-                d: 'M84.3,89.3L58.9,64.2l-1.4,1.4L83,90.7L84.3,89.3z M27,7.6H7.4v19.2H27V7.6z' +
-                'M59.3,47.1H39.8v19.2h19.5V47.1z M102.1,79.5H82.6v19.2h19.5V79.5z M41.7,47.6L19,25.1l-1.2,1.2l22.7,22.5L41.7,47.6z'
-            },
-        },
-
-       // Key bindings for PCE web overlay buttons
-        // NOTE: fully qual. button ID is derived from overlay-id and key-name
-        keyBindings: {
-            1: {
-                cb: function () {
-                    pps.setMode(selection);
-                },
-                tt: 'Setup path',
-                gid: 'plus'
-            },
-            2: {
-                cb: function () {
-                    pps.updatePath(selection);
-                },
-                tt: 'Update path',
-                gid: '*jp'
-            },
-            3: {
-                cb: function () {
-                    pps.remPath(selection);
-                },
-                tt: 'Remove path',
-                gid: 'minus'
-            },
-            4: {
-                cb: function () {
-                    pps.queryTunnelDisplay();
-                },
-                tt: 'Show Tunnels',
-                gid: 'checkMark'
-            },
-
-            _keyOrder: [
-                '1', '2', '3', '4'
-            ]
-        },
-        hooks: {
-            // hook for handling escape key
-            // Must return true to consume ESC, false otherwise.
-           escape: function () {
-                selectionCallback();
-                pps.setSrc();
-                pps.setDst();
-                return true;
-            },
-
-            // hooks for when the selection changes...
-            empty: function () {
-                selectionCallback();
-            },
-            single: function (data) {
-                selectionCallback(data);
-            },
-            multi: function (selectOrder) {
-                selectionCallback(selectOrder);
-            },
-            modifylinkdata: function (data, extra) {
-                $log.debug("Modify link data", data, extra);
-
-                function sep() {
-                    data.propOrder.push('-');
-                }
-
-                function add(key) {
-                    var val = extra[key];
-                    if (val !== undefined) {
-                        data.propOrder.push(key);
-                        data.props[key] = val;
-                    }
-                }
-
-                sep();
-                add('Src Address');
-                add('Dst Address');
-                add('Te metric');
-                add('Bandwidth');
-
-                return data;
-            }
-        }
-    };
-
-    function selectionCallback(d) {
-        $log.debug('Selection callback', d);
-        selection = d;
-    }
-
-    // invoke code to register with the overlay service
-    angular.module('ovPcewebTopov')
-        .run(['$log', 'TopoOverlayService', 'PcewebTopovDemoService',
-
-        function (_$log_, _tov_, _pps_) {
-            $log = _$log_;
-            tov = _tov_;
-            pps = _pps_;
-            tov.register(overlay);
-        }]);
-
-}());
diff --git a/apps/pce/pceweb/src/main/resources/pcewebTopov/css.html b/apps/pce/pceweb/src/main/resources/pcewebTopov/css.html
deleted file mode 100644
index ea1b11d..0000000
--- a/apps/pce/pceweb/src/main/resources/pcewebTopov/css.html
+++ /dev/null
@@ -1 +0,0 @@
-<link rel="stylesheet" href="app/view/pcewebTopov/pcewebTopov.css">
\ No newline at end of file
diff --git a/apps/pce/pceweb/src/main/resources/pcewebTopov/js.html b/apps/pce/pceweb/src/main/resources/pcewebTopov/js.html
deleted file mode 100644
index 300dd7e..0000000
--- a/apps/pce/pceweb/src/main/resources/pcewebTopov/js.html
+++ /dev/null
@@ -1,2 +0,0 @@
-<script src="app/view/pcewebTopov/pcewebTopovDemo.js"></script>
-<script src="app/view/pcewebTopov/pcewebTopovOverlay.js"></script>
diff --git a/apps/pcep-api/BUILD b/apps/pcep-api/BUILD
deleted file mode 100644
index b759412..0000000
--- a/apps/pcep-api/BUILD
+++ /dev/null
@@ -1,16 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + JACKSON + [
-    "//protocols/ovsdb/api:onos-protocols-ovsdb-api",
-    "//protocols/ovsdb/rfc:onos-protocols-ovsdb-rfc",
-    "@jaxb_api//jar",
-]
-
-osgi_jar_with_tests(
-    deps = COMPILE_DEPS,
-)
-
-onos_app(
-    category = "Protocol",
-    description = "PCEP protocol API.",
-    title = "PCEP Protocol API",
-    url = "http://onosproject.org",
-)
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/DeviceCapability.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/DeviceCapability.java
deleted file mode 100644
index 6acee76..0000000
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/DeviceCapability.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.api;
-
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.config.Config;
-
-/**
- * Configuration to specify device capabilities.
- */
-public class DeviceCapability extends Config<DeviceId> {
-    public static final String SRCAP = "srCapabaility";
-    public static final String LABELSTACKCAP = "labelStackCapability";
-    public static final String LOCALLABELCAP = "localLabelCapability";
-
-    @Override
-    public boolean isValid() {
-        return true;
-    }
-
-    /**
-     * Gets the SR capability of the router.
-     *
-     * @return SR capability
-     */
-    public boolean srCap() {
-        String srCap = get(SRCAP, null);
-        return srCap != null ?
-                Boolean.valueOf(srCap) :
-                false;
-    }
-
-    /**
-     * Gets the label stack capability of the router.
-     *
-     * @return label stack capability
-     */
-    public boolean labelStackCap() {
-        String labelStackCap = get(LABELSTACKCAP, null);
-        return labelStackCap != null ?
-                              Boolean.valueOf(labelStackCap) :
-                              false;
-    }
-
-    /**
-     * Gets the local label capability of the router.
-     *
-     * @return local label capability
-     */
-    public boolean localLabelCap() {
-        String localLabelCap = get(LOCALLABELCAP, null);
-        return localLabelCap != null ?
-                                      Boolean.valueOf(localLabelCap) :
-                                      false;
-    }
-
-    /**
-     * Sets the SR capability of the router.
-     *
-     * @param srCap SR capability of the router.
-     * @return the capability configuration of the device.
-     */
-    public DeviceCapability setSrCap(boolean srCap) {
-        return (DeviceCapability) setOrClear(SRCAP, srCap);
-    }
-
-    /**
-     * Sets the label stack capability of the router.
-     *
-     * @param labelStackCap label stack capability of the router.
-     * @return the capability configuration of the device.
-     */
-    public DeviceCapability setLabelStackCap(boolean labelStackCap) {
-        return (DeviceCapability) setOrClear(LABELSTACKCAP, labelStackCap);
-    }
-
-    /**
-     * Sets the local label capability of the router.
-     *
-     * @param localLabelCap local label capability of the router.
-     * @return the capability configuration of the device.
-     */
-    public DeviceCapability setLocalLabelCap(boolean localLabelCap) {
-        return (DeviceCapability) setOrClear(LOCALLABELCAP, localLabelCap);
-    }
-}
-
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepController.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepController.java
deleted file mode 100644
index 74a2367..0000000
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepController.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.api;
-
-import org.onosproject.net.DeviceId;
-
-/**
- * Abstraction of an PCEP controller. Serves as a one stop shop for obtaining
- * PCEP devices and (un)register listeners on PCEP events
- */
-public interface PcepController {
-
-    /**
-     * Returns all switches known to this PCEP controller.
-     *
-     * @return Iterable of did elements
-     */
-    Iterable<PcepSwitch> getSwitches();
-
-    /**
-     * Return a switch with a specified did.
-     *
-     * @param did of a device
-     * @return a pcep device
-     */
-    PcepSwitch getSwitch(PcepDpid did);
-
-    /**
-     * Register a listener for meta events that occur to PCEP devices.
-     *
-     * @param listener the listener to notify
-     */
-    void addListener(PcepSwitchListener listener);
-
-    /**
-     * Unregister a listener.
-     *
-     * @param listener the listener to unregister
-     */
-    void removeListener(PcepSwitchListener listener);
-
-    /**
-     * Register a listener for meta events that occur to PCEP links.
-     *
-     * @param listener the listener to notify
-     */
-    void addLinkListener(PcepLinkListener listener);
-
-    /**
-     * Unregister a link listener.
-     *
-     * @param listener the listener to unregister
-     */
-    void removeLinkListener(PcepLinkListener listener);
-
-    /**
-     * Register a listener for meta events that occur to PCEP tunnel.
-     *
-     * @param listener the listener to notify
-     */
-    void addTunnelListener(PcepTunnelListener listener);
-
-    /**
-     * Unregister a tunnel listener.
-     *
-     * @param listener the listener to unregister
-     */
-    void removeTunnelListener(PcepTunnelListener listener);
-
-    /**
-     * Setup a tunnel through pcep controller.
-     *
-     * @param srcDid src deviceId of tunnel
-     * @param dstDid dst deviceId of tunnel
-     * @param srcPort src port
-     * @param dstPort dst port
-     * @param bandwidth andwidth of tunnel
-     * @param name tunnel name
-     * @return pcep tunnel
-     */
-    PcepTunnel applyTunnel(DeviceId srcDid, DeviceId dstDid,
-                                  long srcPort, long dstPort, long bandwidth,
-                                  String name);
-
-    /**
-     * Delete tunnel by id.
-     *
-     * @param id pcep tunnel id.
-     * @return true or false
-     */
-    Boolean deleteTunnel(String id);
-
-    /**
-     * Update tunnel bandwidth by tunnel id.
-     *
-     * @param id tunnel id
-     * @param bandwidth bandwidth of a tunnel
-     * @return true or false
-     */
-    Boolean updateTunnelBandwidth(String id, long bandwidth);
-
-    /**
-     * Send statistic request by tunnel id.
-     *
-     * @param pcepTunnelId PCEP tunnel id
-     */
-    void getTunnelStatistics(String pcepTunnelId);
-
-}
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepDpid.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepDpid.java
deleted file mode 100644
index 3ac5269..0000000
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepDpid.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.api;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import org.onosproject.pcep.tools.PcepTools;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * The class representing a network switch PCEPDid. This class is immutable.
- */
-public final class PcepDpid {
-    private static final Logger log = LoggerFactory.getLogger(PcepDpid.class);
-    private static final String SCHEME = "l3";
-    private static final long UNKNOWN = 0;
-    private long nodeId;
-
-    /**
-     * Default constructor.
-     */
-    public PcepDpid() {
-        this.nodeId = PcepDpid.UNKNOWN;
-    }
-
-    /**
-     * Constructor from a long value.
-     *
-     * @param value long value for construct
-     */
-    public PcepDpid(long value) {
-        this.nodeId = value;
-    }
-
-    /**
-     * Constructor from a String.
-     *
-     * @param value string value for construct
-     */
-    public PcepDpid(String value) {
-        this.nodeId = Long.parseLong(value, 16);
-    }
-
-    /**
-     * Produces device URI from the given DPID.
-     *
-     * @param dpid device dpid
-     * @return device URI
-     */
-    public static URI uri(PcepDpid dpid) {
-        return uri(dpid.nodeId);
-    }
-
-    /**
-     * Produces pcep URI.
-     *
-     * @param value string to get URI
-     * @return pcep URI, otherwise null
-     */
-    public static URI uri(String value) {
-        try {
-            return new URI(SCHEME, value, null);
-        } catch (URISyntaxException e) {
-            log.debug("Exception PcepId URI: " + e.toString());
-        }
-        return null;
-    }
-
-    /**
-     * Produces device long from the given string which comes from the uri
-     * method.
-     *
-     * @param value string value which produced by uri method.
-     * @return a long value.
-     */
-    public static long toLong(String value) {
-        return PcepTools.ipToLong(value.replace(SCHEME, ""));
-    }
-
-    /**
-     * Produces device URI from the given DPID long.
-     *
-     * @param value device dpid as long
-     * @return device URI
-     */
-    public static URI uri(long value) {
-        try {
-            return new URI(SCHEME, PcepTools.longToIp(value), null);
-        } catch (URISyntaxException e) {
-            return null;
-        }
-    }
-
-    /**
-     * Return a device id with the form of long.
-     *
-     * @return long value
-     */
-    public long value() {
-        return this.nodeId;
-    }
-
-}
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepHopNodeDescription.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepHopNodeDescription.java
deleted file mode 100644
index 5b58cf2..0000000
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepHopNodeDescription.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.api;
-
-/**
- * Description of a pcep tunnel hop node.a hop list consists of a number of hop
- * node.
- */
-public class PcepHopNodeDescription {
-    private PcepDpid deviceId;
-    private long portNum;
-
-    /**
-     * Get the pcepdpid of a node.
-     *
-     * @return device pcepdpid.
-     */
-    public PcepDpid getDeviceId() {
-        return deviceId;
-    }
-
-    /**
-     * Set the pcepdpid of a node.
-     *
-     * @param deviceId pcep dpid of a node.
-     */
-    public void setDeviceId(PcepDpid deviceId) {
-        this.deviceId = deviceId;
-    }
-
-    /**
-     * Get the port number of a node.
-     *
-     * @return port number.
-     */
-    public long getPortNum() {
-        return portNum;
-    }
-
-    /**
-     * Set the port number of a node.
-     *
-     * @param portNum port number of a node.
-     */
-    public void setPortNum(long portNum) {
-        this.portNum = portNum;
-    }
-
-}
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepLink.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepLink.java
deleted file mode 100644
index a1e683f..0000000
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepLink.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.api;
-
-import org.onosproject.net.Port;
-
-/**
- * Abstraction of a network infrastructure link.
- */
-public interface PcepLink extends PcepOperator {
-
-    enum SubType {
-        /**
-         * Optical Transmission Section Link.
-         */
-        OTS,
-
-        /**
-         * Optical Physical Section Link.
-         */
-        OPS,
-
-        /**
-         * User-to-Network Interface Link.
-         */
-        UNI,
-
-        /**
-         * Optical channel Data Unit-k link.
-         */
-        ODUk,
-
-        /**
-         * Optical Transport Network link.
-         */
-        OTU,
-    }
-
-
-    enum PortType {
-        ODU_PORT, OCH_PORT, OMS_PORT
-    }
-
-    /**
-     * Returns the link endpoint port type.
-     *
-     * @return endpoint port type
-     */
-    PortType portType();
-
-    /**
-     * Returns the link sub type,OTS,OPS,PKT_OPTICAL or ODUK.
-     *
-     * @return link subType
-     */
-
-    SubType linkSubType();
-
-    /**
-     * Returns the link state, up or down.
-     *
-     * @return link state
-     */
-    String linkState();
-
-    /**
-     * Returns the distance of a link.
-     *
-     * @return distance
-     */
-    int linkDistance();
-
-    /**
-     * Returns the capacity type of a link,1: WAVELENGTHNUM, 2:SLOTNUM, 3,
-     * BANDWIDTH.
-     *
-     * @return capacity type
-     */
-    String linkCapacityType();
-
-    /**
-     * Returns the available capacity value ,such as available bandwidth.
-     *
-     * @return availValue
-     */
-    int linkAvailValue();
-
-    /**
-     * Returns the max capacity value ,such as max bandwidth.
-     *
-     * @return maxValue
-     */
-    int linkMaxValue();
-
-    /**
-     * Returns the source device did of a link.
-     *
-     * @return source did
-     */
-    PcepDpid linkSrcDeviceID();
-
-    /**
-     * Returns the destination device did of a link.
-     *
-     * @return destination did
-     */
-    PcepDpid linkDstDeviceId();
-
-    /**
-     * Returns the source port of a link.
-     *
-     * @return port number
-     */
-    Port linkSrcPort();
-
-    /**
-     * Returns the destination port of a link.
-     *
-     * @return port number
-     */
-    Port linkDstPort();
-
-}
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepLinkListener.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepLinkListener.java
deleted file mode 100644
index 6d1c268..0000000
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepLinkListener.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.api;
-
-/**
- * Allows for providers interested in Link events to be notified.
- */
-public interface PcepLinkListener {
-
-    /**
-     * Notify that get a packet of link from network and need do some
-     * processing.
-     *
-     * @param link pcep link
-     */
-    void handlePceplink(PcepLink link);
-}
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepOperator.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepOperator.java
deleted file mode 100644
index ef8d7c3..0000000
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepOperator.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.api;
-
-/**
- * A interface defined operator type, and provide a method to get the operator
- * type.
- */
-public interface PcepOperator {
-
-    enum OperationType {
-
-        ADD, UPDATE, DELETE,
-    }
-
-    /**
-     * Get operate type of a event,such as device add ,device update.
-     *
-     * @return operation type.
-     */
-    OperationType getOperationType();
-}
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepSwitch.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepSwitch.java
deleted file mode 100644
index 19aeff7..0000000
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepSwitch.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.api;
-
-/*
- * Represent to provider facing side of a switch
- */
-public interface PcepSwitch extends PcepOperator {
-
-    enum DeviceType {
-        /* optical device */
-        ROADM,
-
-        /* electronic device */
-        OTN,
-
-        /* router */
-        ROUTER,
-
-        /* unknown type */
-        UNKNOW,
-    }
-
-    /**
-     * Gets a string version of the ID for this switch.
-     * @return string version of the ID
-     */
-    String getStringId();
-
-    /**
-     * Gets the datapathId of the switch.
-     * @return the switch dpid in long format
-     */
-    long getId();
-
-    long getNeId();
-
-    /**
-     * Gets the sub type of the device.
-     * @return the sub type
-     */
-    DeviceType getDeviceType();
-
-    /**
-     * fetch the manufacturer description.
-     * @return the description
-     */
-    String manufacturerDescription();
-
-    /**
-     * fetch the datapath description.
-     * @return the description
-     */
-    String datapathDescription();
-
-    /**
-     * fetch the hardware description.
-     * @return the description
-     */
-    String hardwareDescription();
-
-    /**
-     * fetch the software description.
-     * @return the description
-     */
-    String softwareDescription();
-
-    /**
-     * fetch the serial number.
-     * @return the serial
-     */
-    String serialNumber();
-
-    /**
-     * Indicates if this switch is optical.
-     * @return true if optical
-     */
-    boolean isOptical();
-}
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepSwitchListener.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepSwitchListener.java
deleted file mode 100644
index ebe95dc..0000000
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepSwitchListener.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.api;
-
-/**
- * Notifies providers about switch in events.
- */
-public interface PcepSwitchListener {
-
-    /**
-     * Notify that the switch was added.
-     *
-     * @param dpid the switch where the event occurred
-     */
-    void switchAdded(PcepDpid dpid);
-
-    /**
-     * Notify that the switch was removed.
-     *
-     * @param dpid the switch where the event occurred.
-     */
-    void switchRemoved(PcepDpid dpid);
-
-    /**
-     * Notify that the switch has changed in some way.
-     *
-     * @param dpid the switch that changed
-     */
-    void switchChanged(PcepDpid dpid);
-
-}
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnel.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnel.java
deleted file mode 100644
index 4fc7a4c..0000000
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnel.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.api;
-
-import java.util.List;
-
-/**
- * Abstraction of a generalized PCEP Tunnel entity (bandwidth pipe) for L2
- * networks or L1/L0 networks, representation of e.g., VLAN, L1 ODUk connection,
- * WDM OCH, etc..
- */
-public interface PcepTunnel extends PcepOperator {
-
-    /**
-     * Describe the type of a tunnel.
-     */
-    enum Type {
-
-        /**
-         * Signifies that this is a L0 OCH tunnel.
-         */
-        OCH,
-
-        /**
-         * Signifies that this is a L1 OTN tunnel.
-         */
-        OTN,
-
-        /**
-         * Signifies that this is a L2 tunnel.
-         */
-        UNI,
-    }
-
-    /**
-     * The ability of a tunnel.
-     */
-    enum Ability {
-        /**
-         * no protected tunnel,if the tunnel is broken ,then the user is out of
-         * service.
-         */
-        NOPROTECTED,
-
-        /**
-         * tunnel with rerouter ability.if a tunnel is broken, the tunnel will
-         * try to find another path to provider service.
-         */
-        SILVER,
-
-        /**
-         * tunnel with 1 + 1 rerouter ability.if a tunnel is broken, there'll be
-         * another tunnel providing service at once.
-         */
-        DIAMOND
-    }
-
-    enum PathType {
-
-        /**
-         * Indicates path is the preferred path.
-         */
-        FIRST,
-
-        /**
-         * Indicates path is the alternate path.
-         */
-        SECOND
-    }
-
-    /**
-     * Represents state of the path, work normally or broken down.
-     */
-    enum PathState {
-        NORMAL, BROKEN
-    }
-
-    /**
-     * Returns the type of a tunnel.
-     *
-     * @return tunnel type
-     */
-    Type type();
-
-    /**
-     * Returns the name of a tunnel.
-     *
-     * @return tunnel name
-     */
-    String name();
-
-    /**
-     * Returns the device id of destination endpoint of a tunnel.
-     *
-     * @return device id
-     */
-    PcepDpid srcDeviceID();
-
-    /**
-     * Returns the device id of source endpoint of a tunnel.
-     *
-     * @return device id
-     */
-    PcepDpid dstDeviceId();
-
-    /**
-     * Returns source port of a tunnel.
-     *
-     * @return port number
-     */
-    long srcPort();
-
-    /**
-     * Returns destination port of a tunnel.
-     *
-     * @return port number
-     */
-    long dstPort();
-
-    /**
-     * Returns the bandwidth of a tunnel.
-     *
-     * @return bandwidth
-     */
-    long bandWidth();
-
-    /**
-     * Returns the tunnel id.
-     *
-     * @return id of the PCEP tunnel
-     */
-    long id();
-
-    /**
-     * Returns the detail hop list of a tunnel.
-     *
-     * @return hop list
-     */
-    List<PcepHopNodeDescription> getHopList();
-
-    /**
-     * Returns the instance of a pcep tunnel,a instance is used to mark the times of
-     * a tunnel created. instance and id identify a tunnel together.
-     *
-     * @return the instance of a tunnel.
-     */
-    int getInstance();
-
-    /**
-     * Returns the state of a path.
-     *
-     * @return normal or broken
-     */
-    PathState getPathState();
-
-    /**
-     * Returns the ability of a tunnel.
-     *
-     * @return ability of the tunenl
-     */
-    Ability getSla();
-
-    /**
-     * Returns the path type of a path if the tunnel's ability is diamond .
-     *
-     * @return the type of a path, the preferred or alternate.
-     */
-    PathType getPathType();
-
-    /**
-     * Get the under lay tunnel id of VLAN tunnel.
-     *
-     * @return the tunnel id of a OCH tunnel under lay of a VLAN tunnel.
-     */
-    long underlayTunnelId();
-
-}
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnelListener.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnelListener.java
deleted file mode 100644
index e522c4a..0000000
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnelListener.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.api;
-
-/**
- * Allows for providers interested in tunnel events to be notified.
- */
-public interface PcepTunnelListener {
-
-    /**
-     * Notify that get a packet of tunnel from network and need do some
-     * processing.
-     *
-     * @param tunnel a pceptunnel.
-     */
-    void handlePcepTunnel(PcepTunnel tunnel);
-
-    /**
-     * Notify that get a tunnel statistic data from the network.
-     *
-     * @param tunnelStatistics tunnel statistic information.
-     */
-    void handlePcepTunnelStatistics(PcepTunnelStatistics tunnelStatistics);
-
-
-
-}
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnelStatistics.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnelStatistics.java
deleted file mode 100644
index e02bf03..0000000
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnelStatistics.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.api;
-
-import java.time.Duration;
-import java.util.List;
-
-/**
- * Statistics of a PCEP tunnel.
- */
-public interface PcepTunnelStatistics {
-
-
-    /**
-     * Returns the id of PCEP tunnel.
-     *
-     * @return PCEP tunnel id
-     */
-    long id();
-
-
-    /**
-     * Returns the bandwidth utilization of a PCEP tunnel.
-     *
-     * @return PCEP bandwidth utilization
-     */
-    double bandwidthUtilization();
-
-    /**
-     * Returns the flow loss rate of a tunnel.
-     *
-     * @return tunnel flow loss rate
-     */
-    double packetLossRate();
-
-    /**
-     * Returns the end-to-end traffic flow delay of a tunnel.
-     *
-     * @return tunnel traffic flow delay
-     */
-    Duration flowDelay();
-
-    /**
-     * Returns the alarms on a tunnel.
-     *
-     * @return tunnel alarms
-     */
-    List<String> alarms();
-}
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/TeLinkConfig.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/TeLinkConfig.java
deleted file mode 100644
index d446de1..0000000
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/TeLinkConfig.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.pcep.api;
-
-import org.onosproject.net.LinkKey;
-import org.onosproject.net.config.Config;
-
-/**
- * Configuration to specify traffic engineering parameters of the link.
- */
-public class TeLinkConfig extends Config<LinkKey> {
-    public static final String MAX_RESV_BW = "maxRervableBandwidth";
-    public static final String UNRESV_BWS = "unReservedBandwidths";
-    public static final String IGP_COST = "igpCost";
-    public static final String TE_COST = "teCost";
-
-    @Override
-    public boolean isValid() {
-        return hasOnlyFields(MAX_RESV_BW, UNRESV_BWS, IGP_COST, TE_COST);
-    }
-
-    /**
-     * Gets the maximum reservable bandwidth of the link.
-     *
-     * @return maximum reservable bandwidth
-     */
-    public Double maxResvBandwidth() {
-
-        String resvBw = get(MAX_RESV_BW, null);
-        return resvBw != null ?
-                Double.valueOf(resvBw) :
-                0.0;
-    }
-
-    /**
-     * Gets the set of unreserved bandwidth of the link.
-     *
-     * @return set of unreserved bandwidth
-     */
-    public Double unResvBandwidth() {
-        String unResvBw = get(UNRESV_BWS, null);
-        return unResvBw != null ? Double.valueOf(unResvBw) : 0.0;
-    }
-
-    /**
-     * Gets the igp cost of the link.
-     *
-     * @return igp cost of the link
-     */
-    public int igpCost() {
-        return get(IGP_COST, 0);
-    }
-
-    /**
-     * Gets the te cost of the link.
-     *
-     * @return te cost of the link
-     */
-    public int teCost() {
-        return get(TE_COST, 0);
-    }
-
-    /**
-     * Sets the maximum reservable bandwidth of the link.
-     *
-     * @param maxResvBw maximum reservable bandwidth of link
-     * @return te link configuration
-     */
-    public TeLinkConfig maxResvBandwidth(Double maxResvBw) {
-        return (TeLinkConfig) setOrClear(MAX_RESV_BW, maxResvBw);
-    }
-
-    /**
-     * Sets unreserved bandwidths of the link in priority order.
-     *
-     * @param unResvBw unreserved bandwidths of the link in priority order
-     * @return te link configuration
-     */
-    public TeLinkConfig unResvBandwidth(Double unResvBw) {
-        return (TeLinkConfig) setOrClear(UNRESV_BWS, unResvBw);
-    }
-
-    /**
-     * Sets the igp cost of the link.
-     *
-     * @param igpCost igp cost of link
-     * @return te link configuration
-     */
-    public TeLinkConfig igpCost(int igpCost) {
-        return (TeLinkConfig) setOrClear(IGP_COST, igpCost);
-    }
-
-    /**
-     * Sets the te cost of the link.
-     *
-     * @param teCost te cost of link
-     * @return te link configuration
-     */
-    public TeLinkConfig teCost(int teCost) {
-        return (TeLinkConfig) setOrClear(TE_COST, teCost);
-    }
-
-
-}
-
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/package-info.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/package-info.java
deleted file mode 100644
index 2917bc9..0000000
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * PCEP controller API.
- */
-package org.onosproject.pcep.api;
\ No newline at end of file
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/tools/PcepTools.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/tools/PcepTools.java
deleted file mode 100644
index e123b5c..0000000
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/tools/PcepTools.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.tools;
-
-import javax.xml.bind.DatatypeConverter;
-
-/**
- * tools fo pcep app.
- */
-public abstract class PcepTools {
-
-    private PcepTools() {
-
-    }
-
-    /**
-     * Converts decimal byte array to a hex string.
-     *
-     * @param byteArray byte array
-     * @return a hex string
-     */
-    public static String toHexString(byte[] byteArray) {
-        return DatatypeConverter.printHexBinary(byteArray);
-    }
-
-    /**
-     * Converts a hex string to a decimal byte array.
-     *
-     * @param hexString a hex string
-     * @return byte array
-     */
-    public static byte[] toByteArray(String hexString) {
-        return DatatypeConverter.parseHexBinary(hexString);
-    }
-
-    /**
-     * Converts a byte array to a decimal string.
-     *
-     * @param bytes a byte array
-     * @return a decimal string
-     */
-    public static String toDecimalString(byte[] bytes) {
-        StringBuffer buf = new StringBuffer();
-        for (int i = 0; i < bytes.length; i++) {
-            buf.append(bytes[i]);
-        }
-        return buf.toString();
-    }
-
-    /**
-     * convert a string to the form of ip address.
-     *
-     * @param str a string
-     * @return a string with ip format
-     */
-    public static String stringToIp(String str) {
-        long ipInt = Long.parseLong(str, 16);
-        return longToIp(ipInt);
-    }
-
-    /**
-     * convert a long to ip format.
-     *
-     * @param ipLong a decimal number.
-     * @return a ip format string
-     */
-    public static String longToIp(long ipLong) {
-        StringBuilder sb = new StringBuilder();
-        sb.append((ipLong >> 24) & 0xFF).append(".");
-        sb.append((ipLong >> 16) & 0xFF).append(".");
-        sb.append((ipLong >> 8) & 0xFF).append(".");
-        sb.append(ipLong & 0xFF);
-        return sb.toString();
-    }
-
-    /**
-     * convert a string with ip format to a long.
-     *
-     * @param strIp a string with ip format
-     * @return a long number
-     */
-    public static long ipToLong(String strIp) {
-        long[] ip = new long[4];
-        int position1 = strIp.indexOf(".");
-        int position2 = strIp.indexOf(".", position1 + 1);
-        int position3 = strIp.indexOf(".", position2 + 1);
-        ip[0] = Long.parseLong(strIp.substring(0, position1));
-        ip[1] = Long.parseLong(strIp.substring(position1 + 1, position2));
-        ip[2] = Long.parseLong(strIp.substring(position2 + 1, position3));
-        ip[3] = Long.parseLong(strIp.substring(position3 + 1));
-        return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3];
-    }
-
-    /**
-     * get a integer value from a cut string.
-     *
-     * @param str a whole string
-     * @param base cut the string from this index
-     * @param offset the offset when execute the cut
-     * @return a integer value
-     */
-    public static int tranferHexStringToInt(String str, int base, int offset) {
-        return Integer.parseInt(str.substring(base, offset), 16);
-
-    }
-}
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/tools/package-info.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/tools/package-info.java
deleted file mode 100644
index c3a52fb..0000000
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/tools/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-/**
- * tools for pcep app.
- */
-package org.onosproject.pcep.tools;
\ No newline at end of file
diff --git a/apps/pcep-api/src/test/java/org/onosproject/pcep/api/PcepControllerAdapter.java b/apps/pcep-api/src/test/java/org/onosproject/pcep/api/PcepControllerAdapter.java
deleted file mode 100644
index 8163634..0000000
--- a/apps/pcep-api/src/test/java/org/onosproject/pcep/api/PcepControllerAdapter.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.api;
-
-import org.onosproject.net.DeviceId;
-
-/**
- * Implementation of PCEP controller.
- */
-public class PcepControllerAdapter implements PcepController {
-
-    @Override
-    public Iterable<PcepSwitch> getSwitches() {
-        return null;
-    }
-
-    @Override
-    public PcepSwitch getSwitch(PcepDpid did) {
-        return null;
-    }
-
-    @Override
-    public void addListener(PcepSwitchListener listener) {
-
-    }
-
-    @Override
-    public void removeListener(PcepSwitchListener listener) {
-    }
-
-    @Override
-    public void addLinkListener(PcepLinkListener listener) {
-    }
-
-    @Override
-    public void removeLinkListener(PcepLinkListener listener) {
-    }
-
-    @Override
-    public void addTunnelListener(PcepTunnelListener listener) {
-    }
-
-    @Override
-    public void removeTunnelListener(PcepTunnelListener listener) {
-    }
-
-    @Override
-    public PcepTunnel applyTunnel(DeviceId srcDid, DeviceId dstDid, long srcPort, long dstPort, long bandwidth,
-                                  String name) {
-        return null;
-    }
-
-    @Override
-    public Boolean deleteTunnel(String id) {
-        return null;
-    }
-
-    @Override
-    public Boolean updateTunnelBandwidth(String id, long bandwidth) {
-        return null;
-    }
-
-    @Override
-    public void getTunnelStatistics(String pcepTunnelId) {
-
-    }
-}
diff --git a/apps/tenbi/topology/src/main/java/org/onosproject/tenbi/topology/impl/TeTopologyNbiManager.java b/apps/tenbi/topology/src/main/java/org/onosproject/tenbi/topology/impl/TeTopologyNbiManager.java
deleted file mode 100644
index 4c4d532..0000000
--- a/apps/tenbi/topology/src/main/java/org/onosproject/tenbi/topology/impl/TeTopologyNbiManager.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tenbi.topology.impl;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.event.AbstractListenerManager;
-import org.onosproject.tetopology.management.api.TeTopologyEvent;
-import org.onosproject.tetopology.management.api.TeTopologyListener;
-import org.onosproject.tetopology.management.api.TeTopologyService;
-import org.onosproject.teyang.api.OperationType;
-import org.onosproject.teyang.utils.topology.NetworkConverter;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.IetfNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.IetfNetwork.OnosYangOpType;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.IetfNetworkOpParam;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.IetfNetworkService;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.Networks;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NetworksState;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.IetfNetworkTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology
-        .rev20151208.IetfNetworkTopologyOpParam;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology
-        .rev20151208.IetfNetworkTopologyService;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.IetfTeTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.IetfTeTopologyOpParam;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.IetfTeTopologyService;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology
-        .IetfTeTopologyEvent;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology
-        .IetfTeTopologyEventListener;
-import org.onosproject.yms.ymsm.YmsService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * The IETF TE Topology NBI Manager implementation.
- */
-@Component(immediate = true, service = { IetfNetworkService.class, IetfNetworkTopologyService.class, IetfTeTopologyService.class })
-public class TeTopologyNbiManager
-        extends AbstractListenerManager<IetfTeTopologyEvent, IetfTeTopologyEventListener>
-        implements IetfNetworkService, IetfNetworkTopologyService, IetfTeTopologyService {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TeTopologyService teTopologyService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected YmsService ymsService;
-
-
-    /**
-     * Activation helper function.
-     */
-    private void activateBasics() {
-        eventDispatcher.addSink(IetfTeTopologyEvent.class, listenerRegistry);
-    }
-
-    /**
-     * Deactivation helper function.
-     */
-    private void deactivateBasics() {
-        eventDispatcher.removeSink(IetfTeTopologyEvent.class);
-    }
-
-    @Activate
-    protected void activate() {
-        activateBasics();
-
-        // Register 3 services with YMS.
-        ymsService.registerService(this, IetfNetworkService.class, null);
-        ymsService.registerService(this, IetfNetworkTopologyService.class, null);
-        ymsService.registerService(this, IetfTeTopologyService.class, null);
-
-        // Listens to TE Topology events
-        teTopologyService.addListener(new InternalTeTopologyListener());
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        deactivateBasics();
-
-        // Unregister 3 services.
-        ymsService.unRegisterService(this, IetfNetworkService.class);
-        ymsService.unRegisterService(this, IetfNetworkTopologyService.class);
-        ymsService.unRegisterService(this, IetfTeTopologyService.class);
-
-        teTopologyService.removeListener(new InternalTeTopologyListener());
-        log.info("Stopped");
-    }
-
-    @Override
-    public IetfNetwork getIetfNetwork(IetfNetworkOpParam ietfNetwork) {
-        checkNotNull(ietfNetwork, "getIetfNetwork: ietfNetwork cannot be null");
-
-        // Get the entire data tree from TE Subsystem core.
-        org.onosproject.tetopology.management.api.Networks teNetworks = teTopologyService.networks();
-
-        // Build the sample networks for RESTCONF/YMS integration test
-//        org.onosproject.tetopology.management.api.Networks teNetworks = new DefaultNetworks(DefaultBuilder
-//                .sampleDomain1Networks());
-
-        // Convert the TE Subsystem core data into YANG Objects.
-        Networks networks = NetworkConverter
-                .teSubsystem2YangNetworks(teNetworks, OperationType.QUERY,
-                                          teTopologyService);
-        NetworksState networkStates = NetworkConverter.teSubsystem2YangNetworkStates(teNetworks, OperationType.QUERY);
-
-        IetfNetworkOpParam.IetfNetworkBuilder builder = new IetfNetworkOpParam.IetfNetworkBuilder();
-        IetfNetwork newNetwork = builder.networks(networks)
-                .networksState(networkStates)
-                .yangIetfNetworkOpType(OnosYangOpType.NONE)
-                .build();
-
-        // processSubtreeFiltering() filters the entire data tree based on the
-        // user's query and returns the filtered data.
-        IetfNetwork result = ietfNetwork.processSubtreeFiltering(
-                newNetwork,
-                false);
-        log.debug("result is: {}", result);
-        return result;
-    }
-
-    @Override
-    public void setIetfNetwork(IetfNetworkOpParam ietfNetwork) {
-        // In H release, topology is discovered from south, no NBI Set is supported.
-    }
-
-    @Override
-    public IetfTeTopology getIetfTeTopology(IetfTeTopologyOpParam ietfTeTopology) {
-        // unused method.
-        return ietfTeTopology;
-    }
-
-    @Override
-    public void setIetfTeTopology(IetfTeTopologyOpParam ietfTeTopology) {
-        // unused methods.
-    }
-
-    @Override
-    public IetfTeTopology getAugmentedIetfTeTopologyTeLinkEvent(IetfTeTopologyOpParam ietfTeTopology) {
-        // unused methods.
-        return ietfTeTopology;
-    }
-
-    @Override
-    public void setAugmentedIetfTeTopologyTeLinkEvent(IetfTeTopologyOpParam augmentedIetfTeTopologyTeLinkEvent) {
-        // unused methods.
-    }
-
-    @Override
-    public IetfNetworkTopology getIetfNetworkTopology(IetfNetworkTopologyOpParam ietfNetworkTopology) {
-        // unused methods.
-        return ietfNetworkTopology;
-    }
-
-    @Override
-    public void setIetfNetworkTopology(IetfNetworkTopologyOpParam ietfNetworkTopology) {
-        // unused methods.
-    }
-
-    @Override
-    public IetfNetwork getAugmentedIetfNetworkNetworks(IetfNetworkOpParam ietfNetwork) {
-        // unused methods.
-        return ietfNetwork;
-    }
-
-    @Override
-    public void setAugmentedIetfNetworkNetworks(IetfNetworkOpParam augmentedIetfNetworkNetworks) {
-        // unused methods.
-    }
-
-    private class InternalTeTopologyListener implements TeTopologyListener {
-        @Override
-        public void event(TeTopologyEvent event) {
-            IetfTeTopologyEvent yangEvent = NetworkConverter
-                    .teTopoEvent2YangIetfTeTopoEvent(event, teTopologyService);
-            post(yangEvent);
-        }
-    }
-}
diff --git a/apps/tenbi/topology/src/main/java/org/onosproject/tenbi/topology/impl/package-info.java b/apps/tenbi/topology/src/main/java/org/onosproject/tenbi/topology/impl/package-info.java
deleted file mode 100644
index 87c5e70..0000000
--- a/apps/tenbi/topology/src/main/java/org/onosproject/tenbi/topology/impl/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.
- */
-/**
- * The implementations of IETF TE Topology YANG NBI.
- */
-package org.onosproject.tenbi.topology.impl;
diff --git a/apps/tenbi/tunnel/src/main/java/org/onosproject/tenbi/tunnel/TeTunnelNbiManager.java b/apps/tenbi/tunnel/src/main/java/org/onosproject/tenbi/tunnel/TeTunnelNbiManager.java
deleted file mode 100644
index 4783d4a..0000000
--- a/apps/tenbi/tunnel/src/main/java/org/onosproject/tenbi/tunnel/TeTunnelNbiManager.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tenbi.tunnel;
-
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.event.AbstractListenerManager;
-import org.onosproject.tetopology.management.api.TeTopology;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.TeTopologyService;
-import org.onosproject.tetunnel.api.TeTunnelAdminService;
-import org.onosproject.tetunnel.api.TeTunnelService;
-import org.onosproject.tetunnel.api.tunnel.DefaultTeTunnel;
-import org.onosproject.tetunnel.api.tunnel.TeTunnel;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.IetfTe;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.IetfTeOpParam;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.IetfTeService;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.IetfTeEvent;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.IetfTeEventListener;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.tunnels.Tunnel;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.IetfTeTypes;
-import org.onosproject.yms.ymsm.YmsService;
-import org.slf4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Optional;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.tetopology.management.api.TeTopology.BIT_MERGED;
-import static org.onosproject.teyang.utils.tunnel.TunnelConverter.buildIetfTeWithTunnels;
-import static org.onosproject.teyang.utils.tunnel.TunnelConverter.te2YangTunnelConverter;
-import static org.onosproject.teyang.utils.tunnel.TunnelConverter.yang2TeTunnel;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * The IETF TE Tunnel NBI Manager implementation.
- */
-@Component(immediate = true, service = IetfTeService.class)
-public class TeTunnelNbiManager
-        extends AbstractListenerManager<IetfTeEvent, IetfTeEventListener>
-        implements IetfTeService {
-    private final Logger log = getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected YmsService ymsService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TeTunnelService tunnelService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TeTopologyService toplogyService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TeTunnelAdminService tunnelAdminService;
-
-    @Activate
-    protected void activate() {
-        ymsService.registerService(this, IetfTeService.class, null);
-        ymsService.registerService(null, IetfTeTypes.class, null);
-        log.info("started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        ymsService.unRegisterService(this, IetfTeService.class);
-        ymsService.unRegisterService(null, IetfTeTypes.class);
-        log.info("stopped");
-    }
-
-    @Override
-    public IetfTe getIetfTe(IetfTeOpParam ietfTe) {
-        List<Tunnel> tunnels = new ArrayList<>();
-        Collection<TeTunnel> teTunnels = tunnelService.getTeTunnels();
-        teTunnels.forEach(teTunnel -> {
-            Tunnel tunnel = te2YangTunnelConverter(teTunnel, false);
-            tunnels.add(tunnel);
-        });
-        IetfTe newIetfTe = buildIetfTeWithTunnels(tunnels);
-        return ietfTe.processSubtreeFiltering(newIetfTe, false);
-    }
-
-    @Override
-    public void setIetfTe(IetfTeOpParam ietfTe) {
-        checkNotNull(ietfTe, "Ietf te params should not be null");
-        //FIXME use topology id configured by user
-        // for there is no topology id param in the definition of te tunnel
-        // we use the merged topology id as the default topology where we create
-        // the tunnel, need to talk with the ietf-te draft writer.
-        TeTopologyKey topologyKey = getTopologyKey();
-        if (topologyKey == null) {
-            log.error("No usable topology now!");
-            return;
-        }
-
-        ietfTe.te().tunnels().tunnel().forEach(tunnel -> {
-            DefaultTeTunnel teTunnel = yang2TeTunnel(tunnel, topologyKey);
-            tunnelAdminService.createTeTunnel(teTunnel);
-        });
-    }
-
-    @Override
-    public void globalsRpc() {
-
-    }
-
-    @Override
-    public void interfacesRpc() {
-
-    }
-
-    @Override
-    public void tunnelsRpc() {
-        //TODO add implement for the te tunnel rpc
-    }
-
-    private TeTopologyKey getTopologyKey() {
-        TeTopologyKey key = null;
-        Optional<TeTopology> teTopology = toplogyService
-                .teTopologies()
-                .teTopologies()
-                .values()
-                .stream()
-                .filter(topology -> topology.flags().get(BIT_MERGED))
-                .findFirst();
-        if (teTopology.isPresent()) {
-            TeTopology topology = teTopology.get();
-            key = topology.teTopologyId();
-        }
-        return key;
-    }
-}
diff --git a/apps/tenbi/tunnel/src/main/java/org/onosproject/tenbi/tunnel/package-info.java b/apps/tenbi/tunnel/src/main/java/org/onosproject/tenbi/tunnel/package-info.java
deleted file mode 100644
index ab2e599..0000000
--- a/apps/tenbi/tunnel/src/main/java/org/onosproject/tenbi/tunnel/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * The implementations of IETF TE Tunnel YANG NBI.
- */
-package org.onosproject.tenbi.tunnel;
\ No newline at end of file
diff --git a/apps/tenbi/tunnel/src/test/org/onosproject/tenbi/tunnel/TeTunnelNbiManagerTest.java b/apps/tenbi/tunnel/src/test/org/onosproject/tenbi/tunnel/TeTunnelNbiManagerTest.java
deleted file mode 100644
index 8ad125a..0000000
--- a/apps/tenbi/tunnel/src/test/org/onosproject/tenbi/tunnel/TeTunnelNbiManagerTest.java
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tenbi.tunnel;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-import org.onosproject.tetunnel.api.TeTunnelAdminService;
-import org.onosproject.tetunnel.api.TeTunnelService;
-import org.onosproject.tetunnel.api.lsp.TeLsp;
-import org.onosproject.tetunnel.api.lsp.TeLspKey;
-import org.onosproject.tetunnel.api.tunnel.DefaultTeTunnel;
-import org.onosproject.tetunnel.api.tunnel.TeTunnel;
-import org.onosproject.tetunnel.api.tunnel.TeTunnelKey;
-import org.onosproject.tetunnel.api.tunnel.path.DefaultTePath;
-import org.onosproject.tetunnel.api.tunnel.path.DefaultTeRouteUnnumberedLink;
-import org.onosproject.tetunnel.api.tunnel.path.TePath;
-import org.onosproject.tetunnel.api.tunnel.path.TeRouteSubobject;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ietfinettypes.IpAddress;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.IetfTe;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.IetfTeOpParam;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.DefaultTe;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.Te;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.Type;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.DefaultExplicit;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.explicit.DefaultExplicitRouteObjects;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.explicit.ExplicitRouteObjects;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.Config;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.DefaultConfig;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.DefaultPrimaryPaths;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.PrimaryPaths;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.State;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.DefaultTunnels;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.Tunnels;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.tunnels.DefaultTunnel;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.tunnels.Tunnel;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtUnprotected;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.RouteIncludeEro;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.StateUp;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TunnelP2p;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.DefaultUnnumberedLink;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.onosproject.tetunnel.api.tunnel.TeTunnel.LspProtectionType.LSP_PROT_REROUTE;
-import static org.onosproject.tetunnel.api.tunnel.TeTunnel.Type.P2P;
-import static org.onosproject.tetunnel.api.tunnel.path.TeRouteSubobject.Type.UNNUMBERED_LINK;
-
-/**
- * Unit tests for TeTunnelNbiManager.
- */
-public class TeTunnelNbiManagerTest {
-    private static final String TE_REQ_FAILED = "IETF TE reqeust failed: ";
-    private static final String NAME = "testTunnel";
-    private IpAddress srcIp = IpAddress.fromString("1.1.1.1");
-    private IpAddress dstIp = IpAddress.fromString("2.2.2.2");
-    private byte[] bytes1 = new byte[]{1, 1, 1, 1, 0, 0, 0, 0};
-    private byte[] bytes2 = new byte[]{2, 2, 2, 2, 0, 0, 0, 0};
-    private long id1 = 16843009;
-    private long id2 = 33686018;
-
-
-    private TeTunnelNbiManager manager;
-    private TeTunnel testTeTunnel;
-
-
-    @Before
-    public void setUp() throws Exception {
-        manager = new TeTunnelNbiManager();
-    }
-
-    @Test
-    public void getIetfTe() throws Exception {
-        TeTunnelService tunnelService = createMock(TeTunnelService.class);
-        expect(tunnelService.getTeTunnels())
-                .andReturn(ImmutableList.of(buildTunnel()))
-                .once();
-        replay(tunnelService);
-
-        manager.tunnelService = tunnelService;
-
-        IetfTe ietfTe = manager.getIetfTe((IetfTeOpParam) buildGetIetfTeParams());
-
-        assertNotNull(TE_REQ_FAILED + "te null", ietfTe.te());
-        assertNotNull(TE_REQ_FAILED + "tunnel null", ietfTe.te().tunnels());
-
-        List<Tunnel> tunnelList = ietfTe.te().tunnels().tunnel();
-        assertEquals(TE_REQ_FAILED + "wrong tunnel size", 1, tunnelList.size());
-
-        Tunnel tunnel = tunnelList.get(0);
-        List<PrimaryPaths> pathsList = tunnel.primaryPaths();
-        assertNotNull(TE_REQ_FAILED + "path null", pathsList);
-        assertEquals(TE_REQ_FAILED + "wrong path size", 1, pathsList.size());
-
-        Type type = pathsList.get(0).state().type();
-        assertTrue(TE_REQ_FAILED + "wrong path type",
-                   type instanceof DefaultExplicit);
-        DefaultExplicit explicitPath = (DefaultExplicit) type;
-        List<ExplicitRouteObjects> routeObjectses =
-                explicitPath.explicitRouteObjects();
-        assertEquals(TE_REQ_FAILED + "wrong route size", 2, routeObjectses.size());
-
-        ExplicitRouteObjects routeObjects = routeObjectses.get(1);
-        assertTrue(TE_REQ_FAILED + "wrong route object type",
-                   routeObjects.type() instanceof DefaultUnnumberedLink);
-
-        DefaultUnnumberedLink link = (DefaultUnnumberedLink) routeObjects.type();
-        assertEquals(TE_REQ_FAILED + "wrong route id",
-                     IpAddress.fromString("0.0.0.2"), link.routerId());
-        assertEquals(TE_REQ_FAILED + "wrong interface id", 2, link.interfaceId());
-
-        State state = tunnel.state();
-        assertEquals(TE_REQ_FAILED + "wrong state",
-                     StateUp.class, state.adminStatus());
-        assertEquals(TE_REQ_FAILED + "wrong source",
-                     IpAddress.fromString("0.0.0.1"), state.source());
-    }
-
-    @Test
-    public void setIetfTe() throws Exception {
-        manager.tunnelAdminService = new TestTunnelAdmin();
-        manager.setIetfTe((IetfTeOpParam) buildPostIetfTeParams());
-        assertEquals(NAME, testTeTunnel.name());
-        List<TePath> tePaths = testTeTunnel.primaryPaths();
-        assertEquals(1, tePaths.size());
-        TePath tePath = tePaths.get(0);
-        List<TeRouteSubobject> teRouteSubobjects = tePath.explicitRoute();
-        assertEquals(2, teRouteSubobjects.size());
-        TeRouteSubobject routeSubobject = teRouteSubobjects.get(1);
-        assertEquals(UNNUMBERED_LINK, routeSubobject.type());
-        DefaultTeRouteUnnumberedLink link =
-                (DefaultTeRouteUnnumberedLink) routeSubobject;
-        assertEquals(id2, link.node().teNodeId());
-        assertEquals(id2, link.ttp().ttpId());
-
-    }
-
-    private IetfTe buildGetIetfTeParams() {
-        Te te = new DefaultTe
-                .TeBuilder()
-                .yangTeOpType(IetfTe.OnosYangOpType.NONE)
-                .build();
-        return new IetfTeOpParam
-                .IetfTeBuilder()
-                .te(te)
-                .yangIetfTeOpType(IetfTe.OnosYangOpType.NONE)
-                .build();
-    }
-
-    private IetfTe buildPostIetfTeParams() {
-        Tunnel tunnel = buildYangTunnel();
-        Tunnels teTunnels = new DefaultTunnels
-                .TunnelsBuilder()
-                .tunnel(Lists.newArrayList(tunnel))
-                .build();
-        Te te = new DefaultTe
-                .TeBuilder()
-                .tunnels(teTunnels)
-                .yangTeOpType(IetfTe.OnosYangOpType.NONE)
-                .build();
-        return new IetfTeOpParam
-                .IetfTeBuilder()
-                .te(te)
-                .yangIetfTeOpType(IetfTe.OnosYangOpType.NONE)
-                .build();
-    }
-
-    private Tunnel buildYangTunnel() {
-        TeTunnel teTunnel = buildTunnel();
-        checkNotNull(teTunnel);
-        Config config = new DefaultConfig.ConfigBuilder()
-                .name(NAME)
-                .adminStatus(StateUp.class)
-                .source(srcIp)
-                .destination(dstIp)
-                .srcTpId(bytes1)
-                .dstTpId(bytes2)
-                .type(TunnelP2p.class)
-                .lspProtectionType(LspProtUnprotected.class)
-                .build();
-
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.
-                rev20160705.ietftetypes.explicitroutesubobject.type.
-                UnnumberedLink yangLink1 = DefaultUnnumberedLink.builder()
-                .routerId(srcIp)
-                .interfaceId(id1)
-                .build();
-
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.
-                rev20160705.ietftetypes.explicitroutesubobject.type.
-                UnnumberedLink yangLink2 = DefaultUnnumberedLink.builder()
-                .routerId(dstIp)
-                .interfaceId(id2)
-                .build();
-
-        ExplicitRouteObjects routeObject1 = DefaultExplicitRouteObjects.builder()
-                .type(yangLink1)
-                .explicitRouteUsage(RouteIncludeEro.class)
-                .build();
-
-        ExplicitRouteObjects routeObject2 = DefaultExplicitRouteObjects.builder()
-                .type(yangLink2)
-                .explicitRouteUsage(RouteIncludeEro.class)
-                .build();
-
-
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.
-                rev20160705.ietfte.pathparamsconfig.type.Explicit explicit
-                = DefaultExplicit.builder()
-                .explicitRouteObjects(ImmutableList.of(routeObject1, routeObject2))
-                .build();
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.
-                rev20160705.ietfte.p2pprimarypathparams.Config pathConfig
-                = org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.
-                te.rev20160705.ietfte.p2pprimarypathparams.DefaultConfig.builder()
-                .pathNamedConstraint("onlyPath")
-                .lockdown(true)
-                .noCspf(true)
-                .type(explicit)
-                .build();
-
-        PrimaryPaths primaryPaths = DefaultPrimaryPaths.builder()
-                .config(pathConfig).build();
-
-        return DefaultTunnel.builder()
-                .name(config.name())
-                .type(config.type())
-                .config(config)
-                .primaryPaths(Lists.newArrayList(primaryPaths))
-                .build();
-    }
-
-    private TeTunnel buildTunnel() {
-        TeTopologyKey topologyKey = new TeTopologyKey(1, 2, 3);
-        TeTunnelKey teTunnelKey = new TeTunnelKey(topologyKey, 1);
-
-        TeNodeKey srcNodeKey = new TeNodeKey(topologyKey, 1);
-        TeNodeKey dstNodeKey = new TeNodeKey(topologyKey, 2);
-
-        TtpKey srcTtpKey = new TtpKey(srcNodeKey, 1);
-        TtpKey dstTtpKey = new TtpKey(srcNodeKey, 2);
-
-        TeLspKey lspKey = new TeLspKey(teTunnelKey, 1);
-
-        DefaultTeRouteUnnumberedLink unnumberedLink1 =
-                new DefaultTeRouteUnnumberedLink(srcNodeKey, srcTtpKey);
-        DefaultTeRouteUnnumberedLink unnumberedLink2 =
-                new DefaultTeRouteUnnumberedLink(dstNodeKey, dstTtpKey);
-        List<TeRouteSubobject> explicitRouteList = new ArrayList<>();
-
-        explicitRouteList.add(unnumberedLink1);
-        explicitRouteList.add(unnumberedLink2);
-        TePath tePath = new DefaultTePath(TePath.Type.EXPLICIT,
-                                          Lists.newArrayList(lspKey),
-                                          explicitRouteList,
-                                          Lists.newArrayList());
-
-        return DefaultTeTunnel.builder()
-                .teTunnelKey(teTunnelKey)
-                .name(NAME)
-                .type(P2P)
-                .adminState(TeTunnel.State.UP)
-                .srcNode(srcNodeKey)
-                .dstNode(dstNodeKey)
-                .srcTp(srcTtpKey)
-                .dstTp(dstTtpKey)
-                .lspProtectionType(LSP_PROT_REROUTE)
-                .primaryPaths(Lists.newArrayList(tePath))
-                .build();
-    }
-
-    private class TestTunnelAdmin implements TeTunnelAdminService {
-
-        @Override
-        public TunnelId createTeTunnel(TeTunnel teTunnel) {
-            TunnelId tunnelId = TunnelId.valueOf(teTunnel.teTunnelKey().toString());
-            testTeTunnel = teTunnel;
-            return tunnelId;
-        }
-
-        @Override
-        public void setTunnelId(TeTunnelKey teTunnelKey, TunnelId tunnelId) {
-
-        }
-
-        @Override
-        public void updateTeTunnel(TeTunnel teTunnel) {
-
-        }
-
-        @Override
-        public void updateTunnelState(TeTunnelKey key, org.onosproject.incubator.net.tunnel.Tunnel.State state) {
-
-        }
-
-        @Override
-        public void removeTeTunnel(TeTunnelKey teTunnelKey) {
-
-        }
-
-        @Override
-        public void removeTeTunnels() {
-
-        }
-
-        @Override
-        public void setSegmentTunnel(TeTunnelKey e2eTunnelKey, List<TeTunnelKey> segmentTunnels) {
-
-        }
-
-        @Override
-        public TeTunnel getTeTunnel(TeTunnelKey teTunnelKey) {
-            return null;
-        }
-
-        @Override
-        public TeTunnel getTeTunnel(TunnelId tunnelId) {
-            return null;
-        }
-
-        @Override
-        public TunnelId getTunnelId(TeTunnelKey teTunnelKey) {
-            return null;
-        }
-
-        @Override
-        public Collection<TeTunnel> getTeTunnels() {
-            return null;
-        }
-
-        @Override
-        public Collection<TeTunnel> getTeTunnels(TeTunnel.Type type) {
-            return null;
-        }
-
-        @Override
-        public Collection<TeTunnel> getTeTunnels(TeTopologyKey teTopologyKey) {
-            return null;
-        }
-
-        @Override
-        public TeLsp getTeLsp(TeLspKey key) {
-            return null;
-        }
-
-        @Override
-        public Collection<TeLsp> getTeLsps() {
-            return null;
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/api/OperationType.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/api/OperationType.java
deleted file mode 100644
index 01f938f..0000000
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/api/OperationType.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.teyang.api;
-
-/**
- * The operation type.
- */
-public enum OperationType {
-
-    /**
-     * The configuration data identified by the element
-     * containing this attribute is merged with the configuration
-     * at the corresponding level in the configuration datastore.
-     */
-    MERGE,
-
-    /**
-     * The configuration data identified by the element
-     * containing this attribute replaces any related configuration
-     * in the configuration datastore. If no such configuration
-     * data exists in the configuration datastore, it is created.
-     */
-    REPLACE,
-
-    /**
-     * The configuration data identified by the element
-     * containing this attribute is added to the configuration if
-     * and only if the configuration data does not already exist in
-     * the configuration datastore.  If the configuration data
-     * exists, an error is returned.
-     */
-    CREATE,
-
-    /**
-     * The configuration data identified by the element
-     * containing this attribute is deleted from the configuration
-     * if and only if the configuration data currently exists in
-     * the configuration datastore.  If the configuration data does
-     * not exist, an error is returned".
-     */
-    DELETE,
-
-    /**
-     * The configuration data identified by the element
-     * containing this attribute is deleted from the configuration
-     * if the configuration data currently exists in the
-     * configuration datastore.  If the configuration data does not
-     * exist, the "remove" operation is silently ignored by the
-     * server.
-     */
-    REMOVE,
-
-    /**
-     * The node is used as a containment node to reach the child node,
-     * There is no change in the data store for the values of this node in the
-     * edit request.
-     */
-    NONE,
-
-//    /**
-//     * The YANG based request is to edit a config node / subtree in the data
-//     * store.
-//     */
-//    EDIT_CONFIG,
-//
-//    /**
-//     * The YANG based request is to query a config node / subtree in the data
-//     * store.
-//     */
-//    QUERY_CONFIG,
-//
-    /**
-     * The YANG based request is to query a node / subtree in the data store.
-     */
-    QUERY,
-
-//    /**
-//     * The YANG based request is to execute an RPC defined in YANG.
-//     */
-//    RPC,
-//
-//    /**
-//     * The YANG based request is to execute an RPC defined in YANG.
-//     */
-//    NOTIFICATION
-}
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/api/package-info.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/api/package-info.java
deleted file mode 100644
index 9b1161a..0000000
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/api/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.
- */
-/**
- * The utility APIs.
- */
-package org.onosproject.teyang.api;
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/EnumConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/EnumConverter.java
deleted file mode 100644
index d98cade..0000000
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/EnumConverter.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.teyang.utils.topology;
-
-import org.onosproject.tetopology.management.api.TeStatus;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeAdminStatus;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeOperStatus;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.teadminstatus.TeAdminStatusEnum;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.teoperstatus.TeOperStatusEnum;
-
-/**
- * The Enum conversion functions.
- */
-public final class EnumConverter {
-
-    // no instantiation
-    private EnumConverter() {
-    }
-
-    /**
-     * Converts YANG Operation Status Enum to TE Topology TeStatus Enum.
-     *
-     * @param opStatus YANG Operation Status
-     * @return the equivalent Enum from TE Topology TeStatus or null if not
-     *         found
-     */
-    public static TeStatus yang2TeSubsystemOpStatus(TeOperStatus opStatus) {
-        if (opStatus == null) {
-            return null;
-        }
-
-        switch (opStatus.enumeration()) {
-        case DOWN:
-            return TeStatus.DOWN;
-        case UP:
-            return TeStatus.UP;
-        case MAINTENANCE:
-            return TeStatus.MAINTENANCE;
-        case PREPARING_MAINTENANCE:
-            return TeStatus.PREPARING_MAINTENANCE;
-        case TESTING:
-            return TeStatus.TESTING;
-        case UNKNOWN:
-            return TeStatus.UNKNOWN;
-        default:
-            return null;
-        }
-    }
-
-    /**
-     * Converts YANG TeAdminStatus Enum to TE Topology TeStatus Enum.
-     *
-     * @param adminStatus YANG Admin Status
-     * @return the equivalent Enum from TE Topology TeStatus or null if not
-     *         found
-     */
-    public static TeStatus yang2TeSubsystemAdminStatus(TeAdminStatus adminStatus) {
-        if (adminStatus == null) {
-            return TeStatus.UNKNOWN;
-        }
-
-        switch (adminStatus.enumeration()) {
-        case DOWN:
-            return TeStatus.DOWN;
-        case UP:
-            return TeStatus.UP;
-        case TESTING:
-            return TeStatus.TESTING;
-        case MAINTENANCE:
-            return TeStatus.MAINTENANCE;
-        case PREPARING_MAINTENANCE:
-            return TeStatus.PREPARING_MAINTENANCE;
-        default:
-            return TeStatus.UNKNOWN;
-        }
-    }
-
-    /**
-     * Converts TE Topology TeStatus Enum to YANG TeAdminStatus Enum.
-     *
-     * @param adminStatus TE Topology admin status
-     * @return the equivalent Enum from YANG TeAdminStatus or null if not found
-     */
-    public static TeAdminStatus teSubsystem2YangAdminStatus(TeStatus adminStatus) {
-        if (adminStatus == null) {
-            return null;
-        }
-
-        switch (adminStatus) {
-        case DOWN:
-            return TeAdminStatus.of(TeAdminStatusEnum.DOWN);
-        case UP:
-            return TeAdminStatus.of(TeAdminStatusEnum.UP);
-        case TESTING:
-            return TeAdminStatus.of(TeAdminStatusEnum.TESTING);
-        case MAINTENANCE:
-            return TeAdminStatus.of(TeAdminStatusEnum.MAINTENANCE);
-        case PREPARING_MAINTENANCE:
-            return TeAdminStatus.of(TeAdminStatusEnum.PREPARING_MAINTENANCE);
-        case UNKNOWN:
-            return null;
-        default:
-            return null;
-        }
-    }
-
-    /**
-     * Converts TE Topology TeStatus Enum to YANG TeOperStatus Enum.
-     *
-     * @param opStatus TE Topology operation status
-     * @return the equivalent Enum from YANG TeOperStatus or null if not found
-     */
-    public static TeOperStatus teSubsystem2YangOperStatus(TeStatus opStatus) {
-        if (opStatus == null) {
-            return null;
-        }
-
-        switch (opStatus) {
-        case DOWN:
-            return TeOperStatus.of(TeOperStatusEnum.DOWN);
-        case UP:
-            return TeOperStatus.of(TeOperStatusEnum.UP);
-        case TESTING:
-            return TeOperStatus.of(TeOperStatusEnum.TESTING);
-        case MAINTENANCE:
-            return TeOperStatus.of(TeOperStatusEnum.MAINTENANCE);
-        case PREPARING_MAINTENANCE:
-            return TeOperStatus.of(TeOperStatusEnum.PREPARING_MAINTENANCE);
-        case UNKNOWN:
-            return TeOperStatus.of(TeOperStatusEnum.UNKNOWN);
-        default:
-            return null;
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/LinkConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/LinkConverter.java
deleted file mode 100644
index 31ebaa3..0000000
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/LinkConverter.java
+++ /dev/null
@@ -1,1147 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.teyang.utils.topology;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.tetopology.management.api.TeConstants.MAX_PRIORITY;
-
-import java.math.BigInteger;
-import java.util.BitSet;
-import java.util.List;
-
-import org.onlab.packet.Ip4Address;
-import org.onosproject.tetopology.management.api.KeyId;
-import org.onosproject.tetopology.management.api.TeStatus;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.TeTopologyService;
-import org.onosproject.tetopology.management.api.link.CommonLinkData;
-import org.onosproject.tetopology.management.api.link.DefaultNetworkLink;
-import org.onosproject.tetopology.management.api.link.DefaultTeLink;
-import org.onosproject.tetopology.management.api.link.ElementType;
-import org.onosproject.tetopology.management.api.link.ExternalLink;
-import org.onosproject.tetopology.management.api.link.LinkBandwidth;
-import org.onosproject.tetopology.management.api.link.NetworkLink;
-import org.onosproject.tetopology.management.api.link.NetworkLinkEventSubject;
-import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
-import org.onosproject.tetopology.management.api.link.PathElement;
-import org.onosproject.tetopology.management.api.link.TeLink;
-import org.onosproject.tetopology.management.api.link.TeLinkId;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.link.TeLinkTpKey;
-import org.onosproject.tetopology.management.api.link.TePathAttributes;
-import org.onosproject.tetopology.management.api.link.TeTunnelId;
-import org.onosproject.tetopology.management.api.link.TunnelProtectionType;
-import org.onosproject.tetopology.management.api.link.UnderlayBackupPath;
-import org.onosproject.tetopology.management.api.link.UnderlayPath;
-import org.onosproject.tetopology.management.api.node.NodeTpKey;
-import org.onosproject.tetopology.management.api.node.TeNode;
-import org.onosproject.tetopology.management.api.node.TerminationPointKey;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ietfinettypes.IpAddress;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NetworkId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.Networks;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NodeId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.Network;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network.Node;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.LinkId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.TpId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology.networks.network.AugmentedNdNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.augmentedndnetwork.DefaultLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.augmentedndnetwork.DefaultLink.LinkBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.augmentedndnetwork.Link;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.augmentedndnetwork.link.DefaultDestination;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.augmentedndnetwork.link.DefaultSource;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.augmentedndnetwork.link.DefaultSupportingLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-                .ietfnetworktopology.networks.network.augmentedndnetwork.link.Destination
-                .DestinationBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.augmentedndnetwork.link.Source.SourceBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.augmentedndnetwork.link.SupportingLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.augmentedndnetwork.link.SupportingLink
-               .SupportingLinkBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology.networks.network.node.AugmentedNdNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.DefaultTeLinkEvent;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.TeBandwidth;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.TeLinkEvent;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourceperlinkattributes.DefaultInformationSourceState;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourceperlinkattributes.InformationSourceState;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourceperlinkattributes.informationsourcestate.DefaultTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourceperlinkattributes.informationsourcestate.Topology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks.network.AugmentedNwNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-               .ietftetopology.networks.network.link.AugmentedNtLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-               .ietftetopology.networks.network.link.DefaultAugmentedNtLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-               .ietftetopology.networks.network.link.DefaultAugmentedNtLink.AugmentedNtLinkBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks.network.node.AugmentedNwNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks.network.node.terminationpoint.AugmentedNtTerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkaugment.DefaultTe;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkaugment.DefaultTe.TeBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkaugment.te.Config;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkaugment.te.DefaultConfig;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkaugment.te.DefaultConfig.ConfigBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkaugment.te.DefaultState;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkaugment.te.DefaultState.StateBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkaugment.te.State;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconfigattributes.DefaultTeLinkAttributes;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconfigattributes.DefaultTeLinkAttributes.TeLinkAttributesBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconfigattributes.TeLinkAttributes;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconfigattributes.telinkattributes.DefaultExternalDomain;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconfigattributes.telinkattributes.DefaultExternalDomain.ExternalDomainBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconfigattributes.telinkattributes.DefaultUnderlay;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconfigattributes.telinkattributes.DefaultUnderlay.UnderlayBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconfigattributes.telinkattributes.ExternalDomain;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconnectivityattributes.DefaultTeSrlgs;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconnectivityattributes.DefaultTeSrlgs.TeSrlgsBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconnectivityattributes.DefaultUnreservedBandwidth;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconnectivityattributes.DefaultUnreservedBandwidth.UnreservedBandwidthBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconnectivityattributes.TeSrlgs;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconnectivityattributes.UnreservedBandwidth;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkinfoattributes.LinkProtectionTypeEnum;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.DefaultBackupPath;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.DefaultBackupPath.BackupPathBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.DefaultPrimaryPath;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.DefaultPrimaryPath.PrimaryPathBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.PrimaryPath;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.primarypath.DefaultPathElement;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.Srlg;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeNodeId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeOperStatus;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeTopologyEventType;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeTpId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.DefaultUnnumberedLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.DefaultUnnumberedLink.UnnumberedLinkBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.UnnumberedLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.tetopologyeventtype.TeTopologyEventTypeEnum;
-
-import com.google.common.collect.Lists;
-
-/**
- * The conversion functions.
- */
-public final class LinkConverter {
-    private static final String E_NULL_TELINK_UNDERLAY_PATH =
-            "TeSubsystem link underlayPath object cannot be null";
-    private static final String E_NULL_TELINK_DATA =
-            "TeSubsystem teLinkAttrBuilder data cannot be null";
-    private static final String E_NULL_TELINK =
-            "TeSubsystem teLink object cannot be null";
-    private static final String E_NULL_YANG_TELINK_CONFIG =
-            "YANG telink config object cannot be null";
-    private static final String E_NULL_YANG_TELINK =
-            "YANG Link object cannot be null";
-
-    // no instantiation
-    private LinkConverter() {
-    }
-
-    private static LinkProtectionTypeEnum teSubsystem2YangLinkProtectionType(TunnelProtectionType linkProtectionType) {
-        switch (linkProtectionType) {
-        case ENHANCED:
-            return LinkProtectionTypeEnum.ENHANCED;
-        case EXTRA_TRAFFIC:
-            return LinkProtectionTypeEnum.EXTRA_TRAFFIC;
-        case SHARED:
-            return LinkProtectionTypeEnum.SHARED;
-        case UNPROTECTED:
-            return LinkProtectionTypeEnum.UNPROTECTED;
-        case ONE_FOR_ONE:
-            return LinkProtectionTypeEnum.YANGAUTOPREFIX1_FOR_1;
-        case ONE_PLUS_ONE:
-            return LinkProtectionTypeEnum.YANGAUTOPREFIX1_PLUS_1;
-        default:
-            return null;
-        }
-    }
-    /**
-     * TE Link Config object conversion from TE Topology subsystem to YANG.
-     *
-     * @param teLink TE link object
-     * @return TE Link Config YANG object
-     */
-    private static Config teLink2YangConfig(TeLink teLink, TeTopologyService teTopologyService) {
-        checkNotNull(teLink, E_NULL_TELINK_DATA);
-
-        TeLinkAttributesBuilder attrBuilder = DefaultTeLinkAttributes.builder();
-
-        if (teLink.teLinkKey() != null) {
-            // what is link index? for now I used teLinkTpId
-            attrBuilder = attrBuilder.linkIndex(BigInteger.valueOf(teLink.teLinkKey().teLinkTpId()));
-        }
-
-        if (teLink.adminStatus() != null) {
-            attrBuilder = attrBuilder.adminStatus(EnumConverter.teSubsystem2YangAdminStatus(teLink.adminStatus()));
-        }
-
-        if (teLink.tunnelProtectionType() != null) {
-            attrBuilder = attrBuilder
-                    .linkProtectionType(teSubsystem2YangLinkProtectionType(teLink
-                            .tunnelProtectionType()));
-        }
-
-        attrBuilder = attrBuilder.teDefaultMetric(teLink.cost());
-
-        if (teLink.srlgs() != null) {
-            TeSrlgsBuilder teSrlgsBuilder = DefaultTeSrlgs.builder();
-            for (Long srlgLongVal : teLink.srlgs()) {
-                teSrlgsBuilder = teSrlgsBuilder.addToValue(new Srlg(srlgLongVal));
-            }
-            attrBuilder = attrBuilder.teSrlgs(teSrlgsBuilder.build());
-        }
-        attrBuilder = attrBuilder.isAbstract(teLink.flags().get(TeNode.BIT_ABSTRACT));
-
-        if (teLink.externalLink() != null) {
-            ExternalDomainBuilder edBuilder =
-                    DefaultExternalDomain.builder();
-            if (teLink.externalLink().plugId() != null) {
-                edBuilder.plugId(teLink.externalLink().plugId());
-            }
-            if (teLink.externalLink().externalLinkKey() != null) {
-                edBuilder = edBuilder
-                        .remoteTeLinkTpId(TeTpId.fromString(String.valueOf(teLink
-                                                                        .externalLink()
-                                                                        .externalLinkKey()
-                                                                        .teLinkTpId())))
-                        .remoteTeNodeId(TeNodeId.fromString(String.valueOf(teLink
-                                                                        .externalLink()
-                                                                        .externalLinkKey()
-                                                                        .teNodeId())));
-            }
-            attrBuilder = attrBuilder.externalDomain(edBuilder.build());
-        }
-
-        if (teLink.availBandwidth() != null) {
-            for (short i = 0; i < teLink.availBandwidth().length; i++) {
-                UnreservedBandwidthBuilder urBuilder =
-                        DefaultUnreservedBandwidth.builder()
-                                .bandwidth(TeBandwidth.fromString(String
-                                        .valueOf(teLink.availBandwidth()[i])))
-                                                  .priority(i);
-                attrBuilder = attrBuilder.addToUnreservedBandwidth(urBuilder.build());
-            }
-        }
-
-        if (teLink.maxBandwidth() != null) {
-            // maxBandwidth is an array of float[], but in yang is just a big decimal
-            attrBuilder = attrBuilder.maxLinkBandwidth(TeBandwidth
-                    .fromString(String.valueOf(teLink.maxBandwidth()[0])));
-        }
-        // FIXME: how to retrieve maxResvLinkBandwidth from teLink
-//        if (teLink.maxResvLinkBandwidth() != null) {
-//            attrBuilder = attrBuilder.maxResvLinkBandwidth(teLink.maxResvLinkBandwidth());
-//        }
-
-        if (teLink.primaryPath() != null || teLink.backupPaths() != null) {
-            UnderlayBuilder builder = DefaultUnderlay.builder();
-            if (teLink.primaryPath() != null) {
-                // TODO: what is underlayProtectionType in tePath?
-                // builder =
-                // builder.underlayProtectionType(tePath.protectionType());
-                builder = te2YangConfigUnderlayPrimaryPath(builder, teLink,
-                                                           teTopologyService);
-            }
-
-            if (teLink.backupPaths() != null) {
-                builder = te2YangConfigUnderlayBackupPaths(builder, teLink,
-                                                           teTopologyService);
-            }
-
-            attrBuilder = attrBuilder.underlay(builder.build());
-        }
-
-
-        ConfigBuilder yangConfigBuilder = DefaultConfig.builder()
-                                                       .teLinkAttributes(attrBuilder.build());
-        return yangConfigBuilder.build();
-    }
-
-    /**
-     * TE Link State object conversion from TE Topology subsystem to YANG.
-     *
-     * @param teLink TE link object
-     * @param teTopologyService TE Topology Service object
-     * @return TE Link State YANG object
-     */
-    private static State teLink2YangState(TeLink teLink, TeTopologyService teTopologyService) {
-        TeLinkAttributes
-            .TeLinkAttributesBuilder attrBuilder =
-                        DefaultTeLinkAttributes
-            .builder()
-            .teDefaultMetric(teLink.cost())
-            .isAbstract(teLink.flags().get(TeLink.BIT_ABSTRACT));
-        if (teLink.teLinkKey() != null) {
-            // what is link index? for now I used teLinkTpId
-            attrBuilder = attrBuilder.linkIndex(BigInteger.valueOf(teLink.teLinkKey().teLinkTpId()));
-        }
-
-        if (teLink.adminStatus() != null) {
-            attrBuilder = attrBuilder.adminStatus(EnumConverter.teSubsystem2YangAdminStatus(teLink.adminStatus()));
-        }
-        if (teLink.tunnelProtectionType() != null) {
-            attrBuilder = attrBuilder
-                    .linkProtectionType(teSubsystem2YangLinkProtectionType(teLink
-                            .tunnelProtectionType()));
-        }
-        if (teLink.maxBandwidth() != null) {
-            // maxBandwidth is an array of float[], but in yang is just a big decimal
-            attrBuilder = attrBuilder.maxLinkBandwidth(TeBandwidth
-                    .fromString(String.valueOf(teLink.maxBandwidth()[0])));
-        }
-//        if (teLink.maxResvLinkBandwidth() != null) {
-//            attrBuilder = attrBuilder.maxResvLinkBandwidth(teLink.maxResvLinkBandwidth());
-//        }
-        if (teLink.srlgs() != null) {
-            TeSrlgs.TeSrlgsBuilder srlgsBuilder = DefaultTeSrlgs.builder();
-            for (Long srlgLongVal : teLink.srlgs()) {
-                srlgsBuilder = srlgsBuilder.addToValue(new Srlg(srlgLongVal));
-            }
-            attrBuilder = attrBuilder.teSrlgs(srlgsBuilder.build());
-        }
-
-        if (teLink.externalLink() != null) {
-            ExternalDomain.ExternalDomainBuilder edBuilder = DefaultExternalDomain
-                    .builder();
-            if (teLink.externalLink().plugId() != null) {
-                edBuilder = edBuilder.plugId(teLink.externalLink().plugId());
-            }
-            if (teLink.externalLink().externalLinkKey() != null) {
-                edBuilder = edBuilder
-                        .remoteTeLinkTpId(TeTpId.fromString(String.valueOf(teLink
-                                                                           .externalLink()
-                                                                           .externalLinkKey()
-                                                                           .teLinkTpId())))
-                        .remoteTeNodeId(TeNodeId.fromString(String.valueOf(teLink
-                                                                           .externalLink()
-                                                                           .externalLinkKey()
-                                                                           .teNodeId())));
-            }
-            attrBuilder = attrBuilder.externalDomain(edBuilder.build());
-
-        }
-
-        if (teLink.availBandwidth() != null) {
-            short i = 0;
-            for (float f : teLink.availBandwidth()) {
-                UnreservedBandwidth.UnreservedBandwidthBuilder urBuilder = DefaultUnreservedBandwidth
-                        .builder()
-                        .bandwidth(TeBandwidth.fromString(String.valueOf(f)))
-                        .priority(i);
-                i++;
-                attrBuilder = attrBuilder.addToUnreservedBandwidth(urBuilder.build());
-            }
-        }
-
-        StateBuilder yangStateBuilder = DefaultState.builder()
-                                                    .teLinkAttributes(attrBuilder.build());
-        if (teLink.opStatus() != null) {
-            yangStateBuilder = yangStateBuilder.operStatus(EnumConverter
-                                                           .teSubsystem2YangOperStatus(teLink.opStatus()));
-        }
-
-        if (teLink.sourceTeLinkId() != null) {
-            InformationSourceState.InformationSourceStateBuilder issBuilder = DefaultInformationSourceState.builder();
-
-            Topology.TopologyBuilder topologyBuilder = DefaultTopology.builder();
-            topologyBuilder = topologyBuilder
-                    .linkRef(teTopologyService.linkKey(teLink.sourceTeLinkId())
-                            .linkId())
-                    .networkRef(teTopologyService
-                            .linkKey(teLink.sourceTeLinkId()).networkId());
-
-            issBuilder = issBuilder.topology(topologyBuilder.build());
-            yangStateBuilder.informationSourceState(issBuilder.build());
-        }
-
-        // Once stateDerived underlay is available in yang and core TE Topology
-        // object model, set the value properly
-        // stateDerivedUnderlay = org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology
-        // .rev20170110.ietftetopology.telinkstatederived.Underlay
-        //yangStateBuilder = yangStateBuilder.underlay(stateDerivedUnderlay);
-
-        return yangStateBuilder.build();
-    }
-
-    /**
-     * Link object conversion from TE Topology subsystem to YANG.
-     *
-     * @param teSubsNetworkLink TE subsystem link object
-     * @param teTopologyService TE Topology Service object
-     * @return YANG link object
-     */
-    public static Link teSubsystem2YangLink(
-            org.onosproject.tetopology.management.api.link.NetworkLink teSubsNetworkLink,
-            TeTopologyService teTopologyService) {
-        checkNotNull(teSubsNetworkLink, E_NULL_TELINK);
-
-        LinkId linkId = LinkId.fromString(teSubsNetworkLink.linkId().toString());
-        LinkBuilder builder = DefaultLink.builder().linkId(linkId);
-        if (teSubsNetworkLink.supportingLinkIds() != null) {
-            List<SupportingLink> slinks = Lists.newArrayList();
-            SupportingLinkBuilder spLinkBuilder = DefaultSupportingLink.builder();
-            for (NetworkLinkKey linkKey : teSubsNetworkLink.supportingLinkIds()) {
-                slinks.add(spLinkBuilder.networkRef(NetworkId.fromString(
-                                                    linkKey.networkId().toString()))
-                                        .linkRef(LinkId.fromString(
-                                                    linkKey.linkId().toString()))
-                                        .build());
-            }
-            builder = builder.supportingLink(slinks);
-        }
-        if (teSubsNetworkLink.source() != null) {
-            SourceBuilder sourceBuilder = DefaultSource
-                                              .builder()
-                                              .sourceNode(NodeId.fromString(
-                                                   teSubsNetworkLink.source().nodeId().toString()))
-                                              .sourceTp(TpId.fromString(
-                                                   teSubsNetworkLink.source().tpId().toString()));
-            builder = builder.source(sourceBuilder.build());
-        }
-        if (teSubsNetworkLink.destination() != null) {
-            DestinationBuilder destBuilder = DefaultDestination
-                                                 .builder()
-                                                 .destNode(NodeId.fromString(
-                                                      teSubsNetworkLink.destination().nodeId().toString()))
-                                                 .destTp(TpId.fromString(
-                                                      teSubsNetworkLink.destination().tpId().toString()));
-            builder = builder.destination(destBuilder.build());
-        }
-
-        if (teSubsNetworkLink.teLink() != null) {
-            TeLink teData = teSubsNetworkLink.teLink();
-            TeBuilder yangTeBuilder = DefaultTe.builder()
-                                               .config(teLink2YangConfig(teData, teTopologyService))
-                                               .state(teLink2YangState(teData, teTopologyService));
-
-            AugmentedNtLinkBuilder linkAugmentBuilder =
-                    DefaultAugmentedNtLink.builder()
-                                          .te(yangTeBuilder.build());
-            builder.addYangAugmentedInfo(linkAugmentBuilder.build(), AugmentedNtLink.class);
-        }
-
-        return builder.build();
-    }
-
-    private static UnderlayBuilder te2YangConfigUnderlayPrimaryPath(
-            UnderlayBuilder yangBuilder,
-            TeLink teLink, TeTopologyService teTopologyService) {
-
-        org.onosproject.tetopology.management.api.link.UnderlayPrimaryPath tePath = teLink.primaryPath();
-
-        PrimaryPathBuilder pathBuilder = DefaultPrimaryPath.builder();
-        if (tePath.pathElements() != null) {
-            for (PathElement pathElementTe : tePath.pathElements()) {
-                org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-                .ietftetopology.telinkunderlayattributes.primarypath.PathElement
-                   .PathElementBuilder pathElementYangBuilder = DefaultPathElement.builder();
-
-                pathElementYangBuilder = pathElementYangBuilder.pathElementId(pathElementTe.pathElementId());
-                //TODO: check more types here
-                if (pathElementTe.type() instanceof TeLinkId) {
-                    UnnumberedLinkBuilder unmBuilder = DefaultUnnumberedLink.builder()
-                            .routerId(IpAddress.fromString(
-                                             Ip4Address.valueOf((int) pathElementTe.teNodeId()).toString()))
-                            .interfaceId(((TeLinkId) pathElementTe.type()).value());
-                    pathElementYangBuilder = pathElementYangBuilder.type(unmBuilder.build());
-                }
-
-                pathBuilder = pathBuilder.addToPathElement(pathElementYangBuilder.build());
-            }
-        }
-
-        pathBuilder = pathBuilder.networkRef(teTopologyService
-                .networkId(teLink.underlayTeTopologyId()));
-
-        return yangBuilder.primaryPath(pathBuilder.build());
-    }
-
-    private static UnderlayBuilder te2YangConfigUnderlayBackupPaths(UnderlayBuilder yangBuilder,
-                                                                    TeLink teLink,
-                                                                    TeTopologyService teTopologyService) {
-        List<UnderlayBackupPath> tePaths = teLink.backupPaths();
-
-        for (UnderlayBackupPath tePath : tePaths) {
-            BackupPathBuilder pathBuilder = DefaultBackupPath
-                    .builder();
-            pathBuilder = pathBuilder.index(tePath.index());
-
-            pathBuilder = pathBuilder.networkRef(teTopologyService
-                    .networkId(teLink.underlayTeTopologyId()));
-
-            for (PathElement backupPathElementTe : tePath.pathElements()) {
-                org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-                .ietftetopology.telinkunderlayattributes.backuppath.PathElement
-                .PathElementBuilder elementBuilder =
-                                org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-                .ietftetopology.telinkunderlayattributes.backuppath.DefaultPathElement
-                        .builder();
-
-                elementBuilder = elementBuilder.pathElementId(backupPathElementTe.pathElementId());
-                //TODO: check more types here
-                if (backupPathElementTe.type() instanceof TeLinkId) {
-                    UnnumberedLinkBuilder unmBuilder = DefaultUnnumberedLink.builder()
-                            .routerId(IpAddress.fromString(
-                                             Ip4Address.valueOf((int) backupPathElementTe.teNodeId()).toString()))
-                            .interfaceId(((TeLinkId) backupPathElementTe.type()).value());
-                    elementBuilder = elementBuilder.type(unmBuilder.build());
-                }
-
-                pathBuilder = pathBuilder.addToPathElement(elementBuilder.build());
-            }
-            yangBuilder = yangBuilder.addToBackupPath(pathBuilder.build());
-        }
-
-        return yangBuilder;
-    }
-
-    private static TeLink yang2TeLinkAttributes(TeLinkAttributes yangLinkAttr,
-                                                State opState, Link yangLink,
-                                                Network yangNetwork,
-                                                Networks yangNetworks) {
-        TeNodeId teNodeId = findTeNodeId(yangNetwork,
-                                         yangLink.source().sourceNode());
-        long teNodeIdLong = -1;
-        if (teNodeId != null && teNodeId.dottedQuad() != null) {
-            teNodeIdLong = Ip4Address.valueOf(teNodeId.dottedQuad().string())
-                    .toInt();
-        }
-
-        TeLinkTpKey teLinkKey = new TeLinkTpKey(teNodeIdLong,
-                                                findTeTpId(yangNetwork,
-                                                           yangLink.source().sourceNode(),
-                                                           yangLink.source().sourceTp()));
-
-        TeNodeId teNodeIdDest = null;
-        if (yangLink.destination() != null) {
-            teNodeIdDest = findTeNodeId(yangNetwork,
-                                        yangLink.destination().destNode());
-        }
-        long teNodeIdDestLong = -1;
-        if (teNodeIdDest != null && teNodeIdDest.dottedQuad() != null) {
-            teNodeIdDestLong = Ip4Address.valueOf(teNodeIdDest.dottedQuad().string()).toInt();
-        }
-
-        TeLinkTpKey peerTeLinkKey = null;
-        if (yangLink.destination() != null) {
-            peerTeLinkKey = new TeLinkTpKey(teNodeIdDestLong,
-                                                        findTeTpId(yangNetwork,
-                                                                   yangLink.destination().destNode(),
-                                                                   yangLink.destination().destTp()));
-        }
-
-        TeLinkTpGlobalKey supportTeLinkId = findSupportTeLinkId(yangNetworks, yangLink);
-
-        org.onosproject.tetopology.management.api.TeStatus opStatus = null;
-        if (opState != null && opState.operStatus() != null) {
-            opStatus = EnumConverter.yang2TeSubsystemOpStatus(opState.operStatus());
-        }
-
-        TeTopologyKey underlayTopologyId = null;
-        if (yangLinkAttr != null && yangLinkAttr.underlay() != null && yangLinkAttr.underlay().primaryPath() != null) {
-            underlayTopologyId = findTopologyId(yangNetworks, yangLinkAttr.underlay().primaryPath().networkRef());
-        }
-
-        TeLink teLink = yangLinkAttr2TeLinkAttributes(yangLinkAttr, opStatus,
-                                                      teNodeIdLong,
-                                                      teNodeIdDestLong,
-                                                      teLinkKey,
-                                                      peerTeLinkKey,
-                                                      supportTeLinkId,
-                                                      underlayTopologyId);
-
-        return teLink;
-    }
-
-    /**
-     * Finds the TE TopologyKey from yangNetworks and a networkRef.
-     *
-     * @param yangNetworks YANG networks object
-     * @param networkRef YANG network reference
-     * @return TeTopologyKey the TE TopologyKey
-     */
-    public static TeTopologyKey findTopologyId(Networks yangNetworks, Object networkRef) {
-        if (networkRef == null) {
-            return null;
-        }
-        NetworkId networkId = NetworkId.fromString((String) networkRef);
-
-        TeTopologyKey topologyId = null;
-        Network targetTeNetwork = null;
-        if (yangNetworks.network() != null
-                && !yangNetworks.network().isEmpty() && networkId != null) {
-            for (Network ynetItem : yangNetworks.network()) {
-                if (ynetItem.networkId() != null) {
-                    if (ynetItem.networkId().equals(networkId)) {
-                        targetTeNetwork = ynetItem;
-                        break;
-                    }
-                }
-            }
-        }
-        if (targetTeNetwork != null && targetTeNetwork
-                .yangAugmentedInfo(AugmentedNwNetwork.class) != null) {
-            AugmentedNwNetwork augmentTeIds = (AugmentedNwNetwork) targetTeNetwork
-                    .yangAugmentedInfo(AugmentedNwNetwork.class);
-            topologyId = new TeTopologyKey(augmentTeIds.providerId().uint32(),
-                                                   augmentTeIds.clientId().uint32(),
-                                                   Long.valueOf(augmentTeIds.teTopologyId().string()));
-        }
-        return topologyId;
-    }
-
-    private static TeLink yangLinkAttr2TeLinkAttributes(TeLinkAttributes yangLinkAtrr,
-                                                        org.onosproject.tetopology.management.api.TeStatus opStatus,
-                                                        long teNodeIdLong,
-                                                        long teNodeIdDestLong,
-                                                        TeLinkTpKey teLinkKey,
-                                                        TeLinkTpKey peerTeLinkKey,
-                                                        TeLinkTpGlobalKey supportTeLinkId,
-                                                        TeTopologyKey underlayTopologyId) {
-        org.onosproject.tetopology.management.api.TeStatus adminStatus = null;
-
-        TeLinkTpGlobalKey sourceTeLinkId = null; // from yang to core, we can ignore sourceTeLinkId
-
-        CommonLinkData teData = null;
-
-        if (yangLinkAtrr.adminStatus() != null) {
-            adminStatus = EnumConverter.yang2TeSubsystemAdminStatus(yangLinkAtrr.adminStatus());
-        }
-
-        BitSet flags = new BitSet();
-        if (yangLinkAtrr.isAbstract()) {
-            flags.set(TeLink.BIT_ABSTRACT);
-        }
-
-        ExternalLink externalLink = null;
-        if (yangLinkAtrr != null && yangLinkAtrr.externalDomain() != null) {
-            externalLink = new ExternalLink(null, yangLinkAtrr.externalDomain().plugId());
-        }
-
-        UnderlayPath underlayPath = null;
-        underlayPath = yang2TeSubsystemUnderlayPath(yangLinkAtrr, teNodeIdLong,
-                                                    teNodeIdDestLong);
-        Long adminGroup = null;
-        if (yangLinkAtrr != null && yangLinkAtrr.administrativeGroup() != null) {
-            adminGroup = Long.valueOf(yangLinkAtrr.administrativeGroup().toString());
-        }
-        List<Long> interLayerLocks = null; // FIXME: how to find interLayerLocks?
-
-        List<UnreservedBandwidth> listOfUnreservedBandwidth = yangLinkAtrr.unreservedBandwidth();
-        float[] availBandwidth = new float[MAX_PRIORITY + 1];
-        for (UnreservedBandwidth urbw : listOfUnreservedBandwidth) {
-            availBandwidth[urbw.priority()] = Float.valueOf(urbw.bandwidth().string());
-        }
-
-        float[] maxBandwidth = new float[MAX_PRIORITY + 1];
-        if (yangLinkAtrr.maxLinkBandwidth() != null) {
-            // Core TE has an array, but YANG is an integer
-            for (short p = 0; p <= MAX_PRIORITY; p++) {
-                maxBandwidth[p] = Float.valueOf(yangLinkAtrr.maxLinkBandwidth().string());
-            }
-        }
-
-        float[] maxAvailLspBandwidth = availBandwidth; // FIXME: how to find this?
-        float[] minAvailLspBandwidth = availBandwidth; // FIXME: how to find this?
-        LinkBandwidth bandwidth = new LinkBandwidth(
-                maxBandwidth,
-                availBandwidth,
-                maxAvailLspBandwidth,
-                minAvailLspBandwidth,
-                null); // FIXME: how to find odu resource?
-        List<Long> srlgs = Lists.newArrayList();
-        if (yangLinkAtrr.teSrlgs() != null
-                && yangLinkAtrr.teSrlgs().value() != null
-                && !yangLinkAtrr.teSrlgs().value().isEmpty()) {
-            for (Srlg srlg : yangLinkAtrr.teSrlgs().value()) {
-                srlgs.add(srlg.uint32());
-            }
-        }
-        TePathAttributes teAttributes =
-                new TePathAttributes(yangLinkAtrr.teDefaultMetric(), yangLinkAtrr.teDelayMetric(),
-                                     srlgs);
-        teData = new CommonLinkData(adminStatus,
-                                    opStatus,
-                                    flags,
-                                    null, // switchingLayer
-                                    null, // encodingLayer
-                                    externalLink,
-                                    underlayPath,
-                                    teAttributes,
-                                    adminGroup,
-                                    interLayerLocks,
-                                    bandwidth);
-
-        TeLink te = new DefaultTeLink(teLinkKey, peerTeLinkKey,
-                                      underlayTopologyId, supportTeLinkId,
-                                      sourceTeLinkId, teData);
-        return te;
-    }
-
-    private static TeLinkTpGlobalKey findSupportTeLinkId(Networks yangNetworks,
-                                            Link yangLink) {
-        Network teNetworkFound = null;
-        LinkId teLinkIdFound = null;
-        TeLinkTpGlobalKey supportTeLinkId = null;
-
-        if (yangLink != null && yangLink.supportingLink() != null && !yangLink.supportingLink().isEmpty()) {
-            if (yangNetworks.network() != null && !yangNetworks.network().isEmpty()) {
-                for (Network ynetItem : yangNetworks.network()) {
-                    if (ynetItem.networkId() != null) {
-                        if (ynetItem.networkId().equals(yangLink.supportingLink().get(0).networkRef())) {
-                            teNetworkFound = ynetItem;
-                            teLinkIdFound = yangLink.supportingLink().get(0).linkRef();
-                            break;
-                        }
-                    }
-                }
-            }
-            Link teLinkFound = null;
-            if (teNetworkFound.yangAugmentedInfo(AugmentedNdNetwork.class) != null) {
-                AugmentedNdNetwork augmentLink =
-                        (AugmentedNdNetwork) teNetworkFound.yangAugmentedInfo(AugmentedNdNetwork.class);
-                for (Link link : augmentLink.link()) {
-                    if (link.linkId().equals(teLinkIdFound)) {
-                        teLinkFound = link;
-                        break;
-                    }
-                }
-            }
-
-            if (teLinkFound != null) {
-                TeNodeId teSupportNodeId = findTeNodeId(teNetworkFound,
-                                                    teLinkFound.source().sourceNode());
-                long tenIdLong = -1;
-                if (teSupportNodeId != null) {
-                    tenIdLong = Ip4Address.valueOf(teSupportNodeId.dottedQuad().string()).toInt();
-                }
-                long teSupportLinkTpId = findTeTpId(teNetworkFound,
-                                                    teLinkFound.source().sourceNode(),
-                                                    teLinkFound.source().sourceTp());
-
-                org.onosproject.tetopology.management.api.TeTopologyId teTopologyId = null;
-                if (teNetworkFound.yangAugmentedInfo(AugmentedNwNetwork.class) != null) {
-                    AugmentedNwNetwork augmentTeIds =
-                            (AugmentedNwNetwork) teNetworkFound.yangAugmentedInfo(AugmentedNwNetwork.class);
-                    teTopologyId =
-                            new org.onosproject.tetopology.management.api.TeTopologyId(
-                                    augmentTeIds.clientId().uint32(),
-                                    augmentTeIds.providerId().uint32(),
-                                    augmentTeIds.teTopologyId().string());
-                }
-
-                supportTeLinkId = new TeLinkTpGlobalKey(teTopologyId.providerId(),
-                                                        teTopologyId.clientId(),
-                                                        Long.valueOf(teTopologyId
-                                                                .topologyId()),
-                                                        tenIdLong, teSupportLinkTpId);
-            }
-        }
-
-        return supportTeLinkId;
-    }
-
-    /**
-     * Finds TeNodeId from a yangNetwork and yangNodeId.
-     *
-     * @param yangNetwork YANG network object
-     * @param yangNodeId YANG node Id
-     * @return teNodeId teNodeId
-     */
-    public static TeNodeId findTeNodeId(Network yangNetwork, NodeId yangNodeId) {
-        TeNodeId teNodeId = null;
-        for (Node node : yangNetwork.node()) {
-            if (node.nodeId().equals(yangNodeId)) {
-                if (node.yangAugmentedInfoMap() != null
-                        && !node.yangAugmentedInfoMap().isEmpty()) {
-                    AugmentedNwNode yangNodeAugment = (AugmentedNwNode) node
-                            .yangAugmentedInfo(AugmentedNwNode.class);
-                    if (yangNodeAugment != null
-                            && yangNodeAugment.teNodeId() != null) {
-                        teNodeId = yangNodeAugment.teNodeId();
-                    }
-                }
-            }
-        }
-        return teNodeId;
-    }
-
-    private static long findTeTpId(Network yangNetwork, NodeId yangNodeId, TpId yangTpId) {
-        long teTpId = 0;
-        for (Node node : yangNetwork.node()) {
-            if (node.nodeId().equals(yangNodeId)) {
-                if (node.yangAugmentedInfoMap() != null
-                        && !node.yangAugmentedInfoMap().isEmpty()) {
-
-                    AugmentedNdNode yangTpNodeAugment = (AugmentedNdNode) node
-                            .yangAugmentedInfo(AugmentedNdNode.class);
-                    if (yangTpNodeAugment.terminationPoint() != null) {
-                        for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology
-                                .rev20151208.ietfnetworktopology.networks.network.node.augmentedndnode.TerminationPoint
-                                yangTpnode : yangTpNodeAugment.terminationPoint()) {
-                            if (yangTpnode.tpId().equals(yangTpId)) {
-                                if (yangTpnode.yangAugmentedInfoMap() != null
-                                        && !yangTpnode.yangAugmentedInfoMap()
-                                                .isEmpty()) {
-                                    AugmentedNtTerminationPoint yangTpAugment =
-                                            (AugmentedNtTerminationPoint) yangTpnode
-                                                    .yangAugmentedInfo(AugmentedNtTerminationPoint.class);
-                                    if (yangTpAugment.teTpId() != null) {
-                                        teTpId = Long.valueOf(yangTpAugment.teTpId().toString());
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-        return teTpId;
-    }
-    /**
-     * Link object conversion from YANG to TE Topology subsystem.
-     *
-     * @param yangLink  YANG link
-     * @param yangNetwork YANG network
-     * @param yangNetworks YANG networks
-     * @return TE subsystem link
-     */
-    public static org.onosproject.tetopology.management.api.link.NetworkLink
-            yang2TeSubsystemLink(Link yangLink, Network yangNetwork,
-                                 Networks yangNetworks) {
-        NetworkId networkId = yangNetwork.networkId();
-        checkNotNull(yangLink, E_NULL_YANG_TELINK);
-
-        KeyId linkId = KeyId.keyId(yangLink.linkId().uri().toString());
-        NodeTpKey sourceNodeTpKey = null;
-        NodeTpKey destinationNodeTpKey = null;
-        List<NetworkLinkKey> spLinkIds = null;
-        TeLink te = null;
-
-        if (yangLink.supportingLink() != null) {
-            spLinkIds = Lists.newArrayList();
-            for (SupportingLink yangSpLink : yangLink.supportingLink()) {
-                NetworkLinkKey linkKey = new NetworkLinkKey(KeyId.keyId(yangSpLink.networkRef().uri().toString()),
-                                                            KeyId.keyId(yangSpLink.linkRef().uri().toString()));
-                spLinkIds.add(linkKey);
-            }
-        }
-
-        if (yangLink.source() != null) {
-            TerminationPointKey source = new TerminationPointKey(
-                                                 KeyId.keyId(networkId.uri().toString()),
-                                                 KeyId.keyId(yangLink.source().sourceNode().uri().toString()),
-                                                 KeyId.keyId(yangLink.source().sourceTp().uri().toString()));
-            sourceNodeTpKey = new NodeTpKey(source.nodeId(), source.tpId());
-        }
-
-        if (yangLink.destination() != null) {
-            TerminationPointKey destination = new TerminationPointKey(
-                                                      KeyId.keyId(networkId.uri().toString()),
-                                                      KeyId.keyId(yangLink.destination().destNode().uri().toString()),
-                                                      KeyId.keyId(yangLink.destination().destTp().uri().toString()));
-            destinationNodeTpKey = new NodeTpKey(destination.nodeId(), destination.tpId());
-        }
-
-        if (yangLink.yangAugmentedInfoMap() != null && !yangLink.yangAugmentedInfoMap().isEmpty()) {
-
-            AugmentedNtLink yangLinkAugment =
-                    (AugmentedNtLink) yangLink.yangAugmentedInfo(AugmentedNtLink.class);
-            if (yangLinkAugment != null &&
-                    yangLinkAugment.te() != null &&
-                    yangLinkAugment.te().config() != null) {
-                TeLinkAttributes yangLinkAtrr =
-                        yangLinkAugment.te().config().teLinkAttributes();
-                if (yangLinkAtrr != null && yangLinkAtrr.linkIndex() != null) {
-                    te = yang2TeLinkAttributes(yangLinkAtrr,
-                                               yangLinkAugment.te().state(),
-                                               yangLink, yangNetwork,
-                                               yangNetworks);
-                }
-            }
-        }
-
-        org.onosproject.tetopology.management.api.link.DefaultNetworkLink link =
-                new DefaultNetworkLink(linkId,
-                                       sourceNodeTpKey,
-                                       destinationNodeTpKey,
-                                       spLinkIds,
-                                       te);
-        return link;
-    }
-
-    private static org.onosproject.tetopology.management.api.link.UnderlayPrimaryPath
-                    yang2TeSubsystemUnderlayPrimaryPath(PrimaryPath yangpath,
-                                                        long teNodeId) {
-        org.onosproject.tetopology.management.api.link.UnderlayPrimaryPath teUnderlayPrimaryPath = null;
-
-        List<PathElement> pathElementList = Lists.newArrayList();
-        for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology
-                .telinkunderlayattributes.primarypath.
-                PathElement pathElementYang : yangpath.pathElement()) {
-
-            long nodeId = 0;
-            ElementType type = null;
-            // TODO: check more types
-            if (pathElementYang.type() instanceof UnnumberedLink) {
-                nodeId = Long.valueOf(((UnnumberedLink) pathElementYang.type()).routerId().toString());
-                type = new TeLinkId(((UnnumberedLink) pathElementYang.type()).interfaceId());
-            }
-            PathElement tePathElement = new PathElement(pathElementYang.pathElementId(),
-                                                        nodeId,
-                                                        type,
-                                                        false); // FIXME: how to find the proper value for loose?
-            pathElementList.add(tePathElement);
-        }
-
-        teUnderlayPrimaryPath = new org.onosproject.tetopology.management.api.link.
-                UnderlayPrimaryPath(pathElementList, false); // FIXME: how to find the proper value for loose?
-
-        return teUnderlayPrimaryPath;
-    }
-
-    private static List<UnderlayBackupPath>
-       yang2TeSubsystemUnderlayBackupPaths(
-                List<org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.
-                                                        rev20170110.ietftetopology.telinkunderlayattributes.
-                    BackupPath> yangpaths,
-                long teNodeId) {
-
-        List<UnderlayBackupPath> underlayBackupPathsList = Lists.newArrayList();
-        for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-                .ietftetopology.telinkunderlayattributes.
-                BackupPath yangConfig : yangpaths) {
-            UnderlayBackupPath ubp = null;
-            List<PathElement> backupPathElementList = Lists.newArrayList();
-            long nodeId = 0;
-            ElementType type = null;
-            for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology
-                    .telinkunderlayattributes.backuppath.
-                    PathElement backupYang : yangConfig.pathElement()) {
-                // TODO: check more types
-                if (backupYang.type() instanceof UnnumberedLink) {
-                    nodeId = Long.valueOf(((UnnumberedLink) backupYang.type()).routerId().toString());
-                    type = new TeLinkId(((UnnumberedLink) backupYang.type()).interfaceId());
-                }
-                PathElement tePathElementBackup = new PathElement(backupYang.pathElementId(),
-                                                                  nodeId,
-                                                                  type,
-                                                                  false);
-                backupPathElementList.add(tePathElementBackup);
-            }
-            ubp = new UnderlayBackupPath(yangConfig.index(),
-                                         backupPathElementList,
-                                         null); // FIXME: find the proper value for loose
-            underlayBackupPathsList.add(ubp);
-        }
-
-        return underlayBackupPathsList;
-    }
-
-    /**
-    * TE Link underlay path Config object conversion from YANG to TE Topology subsystem.
-    *
-    * @param yangLinkAtrr YANG link Config YANG object
-    * @return teSubsystem TE underlay path object
-    */
-    private static org.onosproject.tetopology.management.api.link.UnderlayPath
-               yang2TeSubsystemUnderlayPath(TeLinkAttributes yangLinkAtrr, long srcTeNodeId, long dstTeNodeId) {
-
-        checkNotNull(yangLinkAtrr, E_NULL_YANG_TELINK_CONFIG);
-
-        org.onosproject.tetopology.management.api.link.UnderlayPrimaryPath underlayPrimaryPath = null;
-        List<UnderlayBackupPath> underlayBackupPathsList = null;
-        TeTunnelId teTunnelId = new TeTunnelId(srcTeNodeId, dstTeNodeId, 0); // FIXME: how to find teTunnelId?
-
-        if (yangLinkAtrr.underlay() != null && yangLinkAtrr.underlay().primaryPath() != null) {
-            underlayPrimaryPath =
-                    yang2TeSubsystemUnderlayPrimaryPath(yangLinkAtrr.underlay().primaryPath(), srcTeNodeId);
-        }
-
-        if (yangLinkAtrr.underlay() != null && yangLinkAtrr.underlay().backupPath() != null) {
-            underlayBackupPathsList =
-                    yang2TeSubsystemUnderlayBackupPaths(yangLinkAtrr.underlay().backupPath(), srcTeNodeId);
-        }
-
-        org.onosproject.tetopology.management.api.link.UnderlayPath teUnderlay = null;
-        if (yangLinkAtrr.underlay() != null) {
-            teUnderlay = new org.onosproject.tetopology.management.api.link.
-                        UnderlayPath(underlayPrimaryPath,
-                                     underlayBackupPathsList,
-                                     TunnelProtectionType.of(yangLinkAtrr.underlay().protectionType()),
-                                     (Long) yangLinkAtrr.underlay().tunnelSrc().tunnelTpRef(), // null safe?
-                                     (Long) yangLinkAtrr.underlay().tunnelDes().tunnelTpRef(), // null safe?
-                                     teTunnelId);
-        }
-
-        return teUnderlay;
-    }
-
-    /**
-     * Converts a TE Topology link event from the data format used in
-     * the core to its corresponding YANG Object (YO) format.
-     *
-     * @param eventType Link event type
-     * @param linkData  TE Topology link event data
-     * @param teTopologyService TE Topology Service object
-     * @return YANG Object converted from linkData
-     */
-    public static TeLinkEvent teNetworkLink2yangTeLinkEvent(TeTopologyEventTypeEnum eventType,
-                                                            NetworkLinkEventSubject linkData,
-                                                            TeTopologyService teTopologyService) {
-        checkNotNull(linkData);
-        TeLinkEvent.TeLinkEventBuilder teLinkEventBuilder = new DefaultTeLinkEvent.TeLinkEventBuilder();
-
-        TeTopologyEventType yangEventType = new TeTopologyEventType(eventType);
-        teLinkEventBuilder.eventType(yangEventType);
-        NetworkId networkId = NetworkId.fromString(linkData.key().networkId().toString());
-        teLinkEventBuilder.networkRef(networkId);
-        LinkId linkId = LinkId.fromString(linkData.key().linkId().toString());
-        teLinkEventBuilder.linkRef(linkId);
-
-        if (linkData != null && linkData.networkLink() != null) {
-            NetworkLink link = linkData.networkLink();
-            State yangTeLinkState = teLink2YangState(link.teLink(), teTopologyService);
-
-            teLinkEventBuilder.operStatus(yangTeLinkState.operStatus());
-            teLinkEventBuilder.informationSource(yangTeLinkState.informationSource());
-            teLinkEventBuilder.informationSourceEntry(yangTeLinkState.informationSourceEntry());
-            teLinkEventBuilder.informationSourceState(yangTeLinkState.informationSourceState());
-            teLinkEventBuilder.isTransitional(yangTeLinkState.isTransitional());
-            teLinkEventBuilder.recovery(yangTeLinkState.recovery());
-            teLinkEventBuilder.teLinkAttributes(yangTeLinkState.teLinkAttributes());
-            teLinkEventBuilder.underlay(yangTeLinkState.underlay());
-        }
-
-        return teLinkEventBuilder.build();
-    }
-
-    /**
-     * Retrieves the TE network link key from a given YANG network link
-     * notification event.
-     *
-     * @param yangLinkEvent YANG network link notification
-     * @return TE network link key
-     */
-    public static NetworkLinkKey yangLinkEvent2NetworkLinkKey(TeLinkEvent yangLinkEvent) {
-        NetworkId networkRef = NetworkId.fromString(yangLinkEvent.networkRef().toString());
-        LinkId linkRef = LinkId.fromString(yangLinkEvent.linkRef().toString());
-        KeyId networkId = KeyId.keyId(networkRef.uri().toString());
-        KeyId linkId = KeyId.keyId(linkRef.uri().toString());
-
-        NetworkLinkKey networkLinkKey = new NetworkLinkKey(networkId, linkId);
-
-        return networkLinkKey;
-
-    }
-
-    /**
-     * Converts a YANG network link notification event into a TE network link.
-     *
-     * @param yangLinkEvent YANG network link notification
-     * @param teTopologyService TE Topology service used to help the conversion
-     * @return TE network link
-     */
-    public static NetworkLink yangLinkEvent2NetworkLink(TeLinkEvent yangLinkEvent,
-                                                        TeTopologyService teTopologyService) {
-
-        KeyId linkId = yangLinkEvent2NetworkLinkKey(yangLinkEvent).linkId();
-
-        org.onosproject.tetopology.management.api.
-                Network network = teTopologyService.network(
-                yangLinkEvent2NetworkLinkKey(yangLinkEvent).networkId());
-        if (network == null) {
-            return null;
-        }
-
-        NetworkLink networkLink = network.link(linkId);
-        if (networkLink == null) {
-            return null;
-        }
-
-        NodeTpKey sourceTp = networkLink.source();
-        if (sourceTp == null) {
-            return null;
-        }
-        NodeTpKey destTp = networkLink.destination();
-
-        List<NetworkLinkKey> supportingLinkIds = networkLink.supportingLinkIds();
-        TeLink teLink = networkLink.teLink();
-        if (teLink == null) {
-            return null;
-        }
-
-        TeOperStatus opState = yangLinkEvent.operStatus();
-        org.onosproject.tetopology.management.api.
-        TeStatus opStatus = EnumConverter.yang2TeSubsystemOpStatus(opState);
-
-        TeLink updatedTeLink = yangLinkEvent2TeLinkAttributes(yangLinkEvent,
-                                                              teLink, opStatus, teTopologyService);
-
-
-        NetworkLink updatedNetworkLink = new DefaultNetworkLink(linkId, sourceTp, destTp, supportingLinkIds,
-                                                                updatedTeLink);
-
-        return updatedNetworkLink;
-    }
-
-    private static TeLink yangLinkEvent2TeLinkAttributes(TeLinkEvent yangLinkEvent, TeLink oldTeLink, TeStatus
-                                                         opStatus, TeTopologyService teTopologyService) {
-
-        TeLinkAttributes yangTeLinkAttrs = yangLinkEvent.teLinkAttributes();
-
-        TeLinkTpKey teLinkKey = oldTeLink.teLinkKey();
-
-        long teNodeIdDest = 0;
-        long teNodeIdSrc = 0;
-
-        TeLinkTpGlobalKey supportTeLinkId = oldTeLink.supportingTeLinkId();
-        TeLinkTpKey peerTeLinkKey = oldTeLink.peerTeLinkKey();
-
-        TeTopologyKey underlayTopologyId = null;
-        KeyId networkRef = null;
-        if (yangTeLinkAttrs.underlay() != null &&
-                yangTeLinkAttrs.underlay().primaryPath() != null &&
-                yangTeLinkAttrs.underlay().primaryPath().networkRef() != null) {
-            networkRef = (KeyId) yangTeLinkAttrs.underlay().primaryPath().networkRef();
-        }
-
-        if (networkRef != null && teTopologyService.network(networkRef) != null
-                && teTopologyService.network(networkRef).teTopologyId() != null) {
-            long clientId = teTopologyService.network(networkRef).teTopologyId().clientId();
-            long providerId = teTopologyService.network(networkRef).teTopologyId().providerId();
-            long topologyId = Long.valueOf(teTopologyService.network(networkRef).teTopologyId().topologyId());
-            underlayTopologyId = new TeTopologyKey(providerId, clientId, topologyId);
-        }
-
-        TeLink updatedTeLink = yangLinkAttr2TeLinkAttributes(yangTeLinkAttrs, opStatus, teNodeIdSrc, teNodeIdDest,
-                                                             teLinkKey,
-                                                             peerTeLinkKey,
-                                                             supportTeLinkId,
-                                                             underlayTopologyId);
-
-        return updatedTeLink;
-    }
-}
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NetworkConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NetworkConverter.java
deleted file mode 100644
index 86df3ce..0000000
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NetworkConverter.java
+++ /dev/null
@@ -1,645 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.teyang.utils.topology;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-import static org.onosproject.tetopology.management.api.OptimizationType.NOT_OPTIMIZED;
-
-import java.util.List;
-import java.util.Map;
-
-import org.onosproject.net.DeviceId;
-import org.onosproject.tetopology.management.api.KeyId;
-import org.onosproject.tetopology.management.api.TeTopologyEvent;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.TeTopologyService;
-import org.onosproject.tetopology.management.api.link.NetworkLink;
-import org.onosproject.tetopology.management.api.link.NetworkLinkEventSubject;
-import org.onosproject.tetopology.management.api.node.NetworkNode;
-import org.onosproject.tetopology.management.api.node.NetworkNodeEventSubject;
-import org.onosproject.teyang.api.OperationType;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.IetfNetwork.OnosYangOpType;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.DefaultNetworks;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork
-        .DefaultNetworksState;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NetworkId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.Networks;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NetworksState;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks
-        .DefaultNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.Network;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.Network
-        .NetworkBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network
-        .DefaultNetworkTypes;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network
-        .DefaultSupportingNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network
-        .DefaultSupportingNetwork.SupportingNetworkBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network
-        .NetworkTypes;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network
-        .Node;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network
-        .SupportingNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
-        .networks.network.AugmentedNdNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
-        .networks.network.DefaultAugmentedNdNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
-        .networks.network.DefaultAugmentedNdNetwork.AugmentedNdNetworkBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
-        .networks.network.augmentedndnetwork.Link;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology
-        .IetfTeTopologyEvent;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.IetfTeTopologyEventSubject;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.TeLinkEvent;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.TeNodeEvent;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks
-        .network.AugmentedNwNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks
-        .network.DefaultAugmentedNwNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks
-        .network.networktypes.AugmentedNwNetworkTypes;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks
-        .network.networktypes.DefaultAugmentedNwNetworkTypes;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology
-        .tetopologyaugment.DefaultTe;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology
-        .tetopologyaugment.Te;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tetopologyaugment.te.Config;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tetopologyaugment.te.DefaultConfig;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology
-        .tetopologytype.DefaultTeTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology
-        .tetopologytype.TeTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.Cost;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.Delay;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.NotOptimized;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeGlobalId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeOptimizationCriterion;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeTopologyId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.tetopologyeventtype.TeTopologyEventTypeEnum;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-
-/**
- * Networks, Networks State conversion functions.
- */
-public final class NetworkConverter {
-    private static final String
-            E_NULL_TE_NETWORKS = "TeSubsystem networks cannot be null";
-    private static final String
-            E_NULL_TE_NETWORK_LIST = "TeSubsystem network list cannot be null";
-    private static final String
-            E_NULL_TE_NETWORK = "TeSubsystem network cannot be null";
-    private static final String
-            E_NULL_TE_NETWORKID = "TeSubsystem networkId cannot be null";
-    private static final String
-            E_NULL_YANG_NETWORKS = "YANG networks cannot be null";
-    private static final String
-            E_NULL_YANG_NETWORK_LIST = "YANG network list cannot be null";
-    private static final String
-            E_NULL_YANG_NETWORK = "YANG network cannot be null";
-    private static final String
-            E_NULL_YANG_NETWORKID = "YANG networkId cannot be null";
-    private static final String
-            E_NULL_YANG_NETWORKSSTATE = "YANG networksState cannot be null";
-    private static final String
-            E_DIFF_YANG_NETWORKID = "YANG networkId must be same in Network and NetworkState";
-    private static final String
-            E_NULL_YANG_NETWORKSSTATE_NETWORK = "YANG networksState network cannot be null";
-    private static final String
-            E_NULL_YANG_NETWORKSSTATE_NETWORKREF = "YANG networksState networkRef cannot be null";
-
-    private static final Logger log = LoggerFactory.getLogger(NetworkConverter.class);
-
-    // no instantiation
-    private NetworkConverter() {
-    }
-
-    private static OnosYangOpType toNetworksOperationType(OperationType operation) {
-        switch (operation) {
-            case CREATE:
-                return OnosYangOpType.CREATE;
-
-            case DELETE:
-                return OnosYangOpType.DELETE;
-
-            case REMOVE:
-                return OnosYangOpType.REMOVE;
-
-            case MERGE:
-                return OnosYangOpType.MERGE;
-
-            case REPLACE:
-                return OnosYangOpType.REPLACE;
-
-            default:
-                return OnosYangOpType.NONE;
-        }
-    }
-
-    /**
-     * Networks object conversion from TE Topology subsystem to YANG.
-     *
-     * @param teSubsystem TE Topology subsystem networks object
-     * @param operation operation type
-     * @param teTopologyService teTopology core service
-     * @return Networks YANG object
-     */
-    public static Networks teSubsystem2YangNetworks(
-            org.onosproject.tetopology.management.api.Networks teSubsystem,
-                                                    OperationType operation,
-                                                    TeTopologyService teTopologyService) {
-        checkNotNull(teSubsystem, E_NULL_TE_NETWORKS);
-        checkNotNull(teSubsystem.networks(), E_NULL_TE_NETWORK_LIST);
-        Networks.NetworksBuilder builder =
-                DefaultNetworks.builder()
-                        .yangNetworksOpType(toNetworksOperationType(operation));
-        List<Network> networks = Lists.newArrayList();
-        for (org.onosproject.tetopology.management.api.Network teNetwork : teSubsystem.networks()) {
-            networks.add(teSubsystem2YangNetwork(teNetwork, operation,
-                                                 teTopologyService));
-        }
-        builder.network(networks);
-        return builder.build();
-    }
-
-    /**
-     * Network States object conversion from TE Topology subsystem to YANG.
-     *
-     * @param teSubsystem TE Topology subsystem networks object
-     * @param operation   operation type
-     * @return NetworkStates YANG object
-     */
-    public static NetworksState teSubsystem2YangNetworkStates(
-            org.onosproject.tetopology.management.api.Networks teSubsystem,
-            OperationType operation) {
-        checkNotNull(teSubsystem, "teSubsystem object cannot be null");
-        checkNotNull(teSubsystem.networks(), "TeSubsystem Networks object cannot be null");
-        NetworksState.NetworksStateBuilder builder =
-                DefaultNetworksState.builder()
-                        .yangNetworksStateOpType(toNetworksOperationType(operation));
-        List<org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
-                .ietfnetwork.networksstate.Network> networks = Lists.newArrayList();
-        for (org.onosproject.tetopology.management.api.Network teNetwork : teSubsystem.networks()) {
-            networks.add(teSubsystem2YangNetworkState(teNetwork, operation));
-        }
-        builder.network(networks);
-        return builder.build();
-    }
-
-    private static org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
-            .ietfnetwork.networksstate.Network networkStateNetwork(Network network,
-                                                                   NetworksState yangNetworkStates) {
-        checkNotNull(network, "YANG Network object cannot be null");
-        checkNotNull(yangNetworkStates, "YANG NetworksState object cannot be null");
-        if (yangNetworkStates.network() == null) {
-            return null;
-        }
-
-        for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
-                .ietfnetwork.networksstate.Network stateNetwork : yangNetworkStates.network()) {
-            if (stateNetwork.networkRef().equals(network.networkId())) {
-                return stateNetwork;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Networks object conversion from YANG to TE Topology subsystem.
-     *
-     * @param yangNetworks      Networks YANG object
-     * @param yangNetworkStates NetworkStates YANG object
-     * @param deviceId the device Id
-     * @return teSubsystem TE Topology subsystem networks object
-     */
-    public static org.onosproject.tetopology.management.api.Networks yang2TeSubsystemNetworks(
-            Networks yangNetworks, NetworksState yangNetworkStates, DeviceId deviceId) {
-        checkNotNull(yangNetworks, E_NULL_YANG_NETWORKS);
-        checkNotNull(yangNetworks.network(), E_NULL_YANG_NETWORK_LIST);
-        checkNotNull(yangNetworkStates, E_NULL_YANG_NETWORKSSTATE);
-
-        List<org.onosproject.tetopology.management.api.Network> networks = Lists.newArrayList();
-        for (Network network : yangNetworks.network()) {
-            org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
-                    .ietfnetwork.networksstate.Network stateNetwork =
-                    networkStateNetwork(network, yangNetworkStates);
-            org.onosproject.tetopology.management.api.Network teNetwork;
-            if (stateNetwork == null) {
-                log.info("networkId {} can't be found in yangNetworkStates",
-                          network.networkId());
-                teNetwork = yang2TeSubsystemNetwork(network, yangNetworks, deviceId);
-            } else {
-                teNetwork = yang2TeSubsystemNetwork(network, stateNetwork, yangNetworks, deviceId);
-            }
-            networks.add(teNetwork);
-        }
-
-        org.onosproject.tetopology.management.api.DefaultNetworks defaultNetworks =
-                new org.onosproject.tetopology.management.api.DefaultNetworks(networks);
-        return defaultNetworks;
-    }
-
-    private static NetworkBuilder te2YangSupportingNetwork(NetworkBuilder builder,
-                                                           List<KeyId> teSpptNetworkIds) {
-        List<SupportingNetwork> snws = Lists.newArrayList();
-        SupportingNetworkBuilder spNetworkBuilder = DefaultSupportingNetwork.builder();
-        for (KeyId teSpNwKey : teSpptNetworkIds) {
-            snws.add(spNetworkBuilder
-                             .networkRef(NetworkId.fromString(teSpNwKey.toString()))
-                             .build());
-        }
-        return builder.supportingNetwork(snws);
-    }
-
-    private static NetworkBuilder te2YangNodes(NetworkBuilder builder,
-                                               Map<KeyId, NetworkNode> teNodes,
-                                               TeTopologyService teTopologyService,
-                                               TeTopologyKey teTopologyKey) {
-        List<Node> nodeList = Lists.newArrayList();
-
-        for (org.onosproject.tetopology.management.api.node.NetworkNode node : teNodes.values()) {
-            nodeList.add(NodeConverter.teSubsystem2YangNode(node,
-                                                            teTopologyService,
-                                                            teTopologyKey));
-        }
-        return builder.node(nodeList);
-    }
-
-    private static NetworkBuilder te2YangLinks(NetworkBuilder builder,
-                                               Map<KeyId, NetworkLink> teLinks,
-                                               TeTopologyService teTopologyService) {
-        List<Link> linkList = Lists.newArrayList();
-
-        for (org.onosproject.tetopology.management.api.link.NetworkLink link : teLinks.values()) {
-            linkList.add(LinkConverter.teSubsystem2YangLink(link, teTopologyService));
-        }
-        AugmentedNdNetworkBuilder ndAugment = DefaultAugmentedNdNetwork.builder();
-        ndAugment.link(linkList);
-        builder.addYangAugmentedInfo(ndAugment.build(), AugmentedNdNetwork.class);
-        return builder;
-    }
-
-    private static NetworkBuilder te2YangNetworkType(NetworkBuilder builder,
-                                                     org.onosproject.tetopology.management.api.TeTopologyId
-                                                             teTopologyId) {
-        NetworkTypes.NetworkTypesBuilder nwType = DefaultNetworkTypes.builder();
-        if (teTopologyId != null) {
-            // Set "te-topology" network type.
-            TeTopology.TeTopologyBuilder teTopology = DefaultTeTopology.builder();
-            AugmentedNwNetworkTypes.AugmentedNwNetworkTypesBuilder teNwType =
-                    DefaultAugmentedNwNetworkTypes.builder();
-            teNwType.teTopology(teTopology.build());
-            nwType.addYangAugmentedInfo(teNwType.build(), AugmentedNwNetworkTypes.class);
-        }
-        return builder.networkTypes(nwType.build());
-    }
-
-    private static NetworkBuilder te2YangTopologyIds(NetworkBuilder builder,
-                                                     org.onosproject.tetopology.management.api
-                                                             .TeTopologyId teTopologyId,
-                                                     TeTopologyService teTopologyService,
-                                                     KeyId networkKeyId) {
-
-        //teBuilder. //OPTIMIZATIONCRITERION for Config/State
-        Te.TeBuilder teBuilder = DefaultTe.builder();
-        Config.ConfigBuilder configBuilder = DefaultConfig.builder();
-        org.onosproject.tetopology.management.api.Network nt = teTopologyService.network(networkKeyId);
-        TeTopologyKey teTopoKey = new TeTopologyKey(nt.teTopologyId().providerId(),
-                                                    nt.teTopologyId().clientId(),
-                                                    Long.valueOf(nt.teTopologyId().topologyId()));
-        switch (teTopologyService.teTopology(teTopoKey).optimization()) {
-        case LEAST_COST:
-            configBuilder = configBuilder.optimizationCriterion(Cost.class);
-            break;
-        case SHORTEST_DELAY:
-            configBuilder = configBuilder.optimizationCriterion(Delay.class);
-            break;
-        case NOT_OPTIMIZED:
-            configBuilder = configBuilder.optimizationCriterion(NotOptimized.class);
-            break;
-        default:
-            configBuilder = configBuilder.optimizationCriterion(TeOptimizationCriterion.class);
-            break;
-        }
-
-        teBuilder = teBuilder.config(configBuilder.build());
-
-        AugmentedNwNetwork.AugmentedNwNetworkBuilder nwAugment = DefaultAugmentedNwNetwork
-                .builder();
-        nwAugment.clientId(new TeGlobalId(teTopologyId.clientId()));
-        nwAugment.providerId(new TeGlobalId(teTopologyId.providerId()));
-        if (teTopologyId.topologyId() != null) {
-            nwAugment.teTopologyId(new TeTopologyId(teTopologyId.topologyId()));
-        }
-        nwAugment.te(teBuilder.build());
-        builder.addYangAugmentedInfo(nwAugment.build(),
-                                     AugmentedNwNetwork.class);
-        return builder;
-    }
-
-    /**
-     * Network object conversion from TE Topology subsystem to YANG.
-     *
-     * @param teSubsystem TE Topology subsystem network object
-     * @param operation operation type
-     * @param teTopologyService teTopology core service
-     * @return Network YANG object
-     */
-    public static Network teSubsystem2YangNetwork(
-            org.onosproject.tetopology.management.api.Network teSubsystem,
-                                                  OperationType operation,
-                                                  TeTopologyService teTopologyService) {
-        checkNotNull(teSubsystem, E_NULL_TE_NETWORK);
-        checkNotNull(teSubsystem.networkId(), E_NULL_TE_NETWORKID);
-
-        // Generate a network builder with the specific networkId.
-        NetworkId networkId = NetworkId.fromString(teSubsystem.networkId().toString());
-        NetworkBuilder builder = DefaultNetwork.builder()
-                .yangNetworkOpType(
-                        toNetworksOperationType(operation))
-                .networkId(networkId);
-
-        // Supporting networks
-        if (teSubsystem.supportingNetworkIds() != null) {
-            builder = te2YangSupportingNetwork(builder, teSubsystem.supportingNetworkIds());
-        }
-
-        // Nodes
-        if (teSubsystem.nodes() != null) {
-            org.onosproject.tetopology.management.api.Network nt = teTopologyService.network(teSubsystem.networkId());
-            TeTopologyKey teTopoKey = new TeTopologyKey(nt.teTopologyId().providerId(),
-                                                        nt.teTopologyId().clientId(),
-                                                        Long.valueOf(nt.teTopologyId().topologyId()));
-            builder = te2YangNodes(builder, teSubsystem.nodes(),
-                                   teTopologyService,
-                                   teTopoKey);
-        }
-
-        // Network types
-        builder = te2YangNetworkType(builder, teSubsystem.teTopologyId());
-
-        // Add links - link is the augmentation
-        if (teSubsystem.links() != null) {
-            builder = te2YangLinks(builder, teSubsystem.links(), teTopologyService);
-        }
-
-        // TE Topology IDs
-        if (teSubsystem.teTopologyId() != null) {
-            builder = te2YangTopologyIds(builder, teSubsystem.teTopologyId(),
-                                         teTopologyService,
-                                         teSubsystem.networkId());
-        }
-
-        return builder.build();
-    }
-
-    /**
-     * Network State object conversion from TE Topology subsystem to YANG.
-     *
-     * @param teSubsystem TE Topology subsystem network object
-     * @param operation   operation type
-     * @return Network YANG object
-     */
-    public static org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network
-            .rev20151208.ietfnetwork.networksstate.Network
-    teSubsystem2YangNetworkState(
-            org.onosproject.tetopology.management.api.Network teSubsystem,
-            OperationType operation) {
-        checkNotNull(teSubsystem, E_NULL_TE_NETWORK);
-        checkNotNull(teSubsystem.networkId(), E_NULL_TE_NETWORKID);
-
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
-                .ietfnetwork.networksstate.Network.NetworkBuilder stateBuilder =
-                org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
-                        .ietfnetwork.networksstate.DefaultNetwork.builder();
-
-        if (teSubsystem.networkId() != null) {
-            stateBuilder.networkRef(NetworkId.fromString(teSubsystem.networkId().toString()));
-        }
-        stateBuilder.serverProvided(teSubsystem.isServerProvided());
-
-        // Operation type may be required.
-        return stateBuilder.build();
-    }
-
-
-    /**
-     * Network conversion from YANG to TE Topology subsystem.
-     *
-     * @param yangNetwork Network YANG object
-     * @param yangNetworkState NetworkState YANG object
-     * @param yangNetworks Networks YANG object
-     * @return TE Topology subsystem defaultNetwork object
-     */
-    private static org.onosproject.tetopology.management.api.DefaultNetwork yang2TeDefaultNetwork(
-                                                Network yangNetwork,
-                                                org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.
-                                                yang.ietf.network.rev20151208.ietfnetwork.networksstate.
-                                                Network yangNetworkState,
-                                                Networks yangNetworks, DeviceId deviceId) {
-        checkNotNull(yangNetwork, E_NULL_YANG_NETWORK);
-        checkNotNull(yangNetwork.networkId(), E_NULL_YANG_NETWORKID);
-        String networkId = yangNetwork.networkId().uri().string();
-
-        KeyId networkKeyId = KeyId.keyId(networkId);
-        List<KeyId> supportingNetworkIds = null;
-        Map<KeyId, NetworkNode> teNodes = null;
-        Map<KeyId, NetworkLink> teLinks = null;
-        org.onosproject.tetopology.management.api.TeTopologyId teTopologyId = null;
-        boolean serverProvided = false;
-
-        // Supporting networks
-        if (yangNetwork.supportingNetwork() != null) {
-            supportingNetworkIds = Lists.newArrayList();
-            for (SupportingNetwork supportNw : yangNetwork.supportingNetwork()) {
-                supportingNetworkIds.add(
-                        KeyId.keyId(supportNw.networkRef().uri().string()));
-            }
-        }
-
-        // Nodes
-        if (yangNetwork.node() != null) {
-            teNodes = Maps.newHashMap();
-            for (Node node : yangNetwork.node()) {
-                // Convert the Yang Node to a TE node.
-                teNodes.put(KeyId.keyId(node.nodeId().uri().string()),
-                            NodeConverter.yang2TeSubsystemNode(node, yangNetwork, yangNetworks));
-            }
-        }
-
-        // Links
-        if (yangNetwork.yangAugmentedInfo(AugmentedNdNetwork.class) != null) {
-            AugmentedNdNetwork augmentLink =
-                    (AugmentedNdNetwork) yangNetwork.yangAugmentedInfo(AugmentedNdNetwork.class);
-            teLinks = Maps.newHashMap();
-            for (Link link : augmentLink.link()) {
-                // Convert the Yang Link to a TE link.
-                teLinks.put(KeyId.keyId(link.linkId().uri().string()),
-                            LinkConverter.yang2TeSubsystemLink(link, yangNetwork, yangNetworks));
-            }
-        }
-
-        // TE Topology Ids
-        if (yangNetwork.yangAugmentedInfo(AugmentedNwNetwork.class) != null) {
-            AugmentedNwNetwork augmentTeIds =
-                    (AugmentedNwNetwork) yangNetwork.yangAugmentedInfo(AugmentedNwNetwork.class);
-            teTopologyId =
-                    new org.onosproject.tetopology.management.api.TeTopologyId(
-                            augmentTeIds.providerId().uint32(),
-                            augmentTeIds.clientId().uint32(),
-                            augmentTeIds.teTopologyId().string());
-        }
-
-        if (yangNetworkState != null) {
-            serverProvided = yangNetworkState.serverProvided();
-        }
-
-        org.onosproject.tetopology.management.api.DefaultNetwork network =
-                new org.onosproject.tetopology.management.api.DefaultNetwork(networkKeyId, supportingNetworkIds,
-                                                                             teNodes, teLinks, teTopologyId,
-                                                                             serverProvided,
-                                                                             deviceId,
-                                                                             NOT_OPTIMIZED);
-        return network;
-    }
-
-    /**
-     * Network object conversion from YANG to TE Topology subsystem.
-     *
-     * @param yangNetwork Network YANG object
-     * @param yangNetworks Networks YANG object
-     * @param deviceId The identifier of RESTCONF server device
-     * @return network TE Topology subsystem networks object
-     */
-    public static org.onosproject.tetopology.management.api.Network yang2TeSubsystemNetwork(Network yangNetwork,
-                                                                                            Networks yangNetworks,
-                                                                                            DeviceId deviceId) {
-        return yang2TeDefaultNetwork(yangNetwork, null, yangNetworks, deviceId);
-    }
-
-    /**
-     * Network and State object conversion from YANG to TE Topology subsystem.
-     *
-     * @param yangNetwork Network YANG object
-     * @param yangNetworkState NetworkState YANG object
-     * @param yangNetworks Networks YANG object
-     * @param deviceId The identifier of RESTCONF server device
-     * @return teSubsystem TE Topology subsystem networks object
-     */
-    public static org.onosproject.tetopology.management.api.Network yang2TeSubsystemNetwork(Network yangNetwork,
-            org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork
-                    .networksstate.Network yangNetworkState, Networks yangNetworks, DeviceId deviceId) {
-        checkNotNull(yangNetworkState, E_NULL_YANG_NETWORKSSTATE_NETWORK);
-        checkNotNull(yangNetworkState.networkRef(), E_NULL_YANG_NETWORKSSTATE_NETWORKREF);
-
-        org.onosproject.tetopology.management.api.DefaultNetwork teNetwork =
-                yang2TeDefaultNetwork(yangNetwork, yangNetworkState, yangNetworks, deviceId);
-
-        String networkref = yangNetworkState.networkRef().toString();
-        checkState(teNetwork.networkId().toString().equals(networkref),
-                   E_DIFF_YANG_NETWORKID);
-
-        return teNetwork;
-    }
-
-    /**
-     * Converts a TE Topology event from the data format used in core to its
-     * corresponding YANG Object (YO) format.
-     *
-     * @param event TE Topology event from the core
-     * @param teTopologyService TE Topology Service object
-     * @return YANG Object converted from event
-     */
-    public static IetfTeTopologyEvent teTopoEvent2YangIetfTeTopoEvent(TeTopologyEvent event,
-                                                                      TeTopologyService teTopologyService) {
-        IetfTeTopologyEvent yangEvent = null;
-        IetfTeTopologyEventSubject eventSubject = new IetfTeTopologyEventSubject();
-
-        IetfTeTopologyEvent.Type yangEventType = teTopoEventType2YangIetfTopoEventType(event.type());
-        if (yangEventType == IetfTeTopologyEvent.Type.TE_LINK_EVENT) {
-            NetworkLinkEventSubject eventData = (NetworkLinkEventSubject) event.subject();
-            TeTopologyEventTypeEnum linkEventType = teTopoEventType2YangTeTopoEventType(event.type());
-            TeLinkEvent yangLinkEvent = LinkConverter
-                    .teNetworkLink2yangTeLinkEvent(linkEventType, eventData, teTopologyService);
-            eventSubject.teLinkEvent(yangLinkEvent);
-            yangEvent = new IetfTeTopologyEvent(IetfTeTopologyEvent.Type.TE_LINK_EVENT, eventSubject);
-        } else if (yangEventType == IetfTeTopologyEvent.Type.TE_NODE_EVENT) {
-            NetworkNodeEventSubject eventData = (NetworkNodeEventSubject) event.subject();
-            TeTopologyEventTypeEnum nodeEventType = teTopoEventType2YangTeTopoEventType(event.type());
-            TeNodeEvent yangNodeEvent = NodeConverter.teNetworkNode2yangTeNodeEvent(nodeEventType, eventData);
-            eventSubject.teNodeEvent(yangNodeEvent);
-            yangEvent = new IetfTeTopologyEvent(IetfTeTopologyEvent.Type.TE_NODE_EVENT, eventSubject);
-        }
-
-        return yangEvent;
-    }
-
-    private static IetfTeTopologyEvent.Type teTopoEventType2YangIetfTopoEventType(TeTopologyEvent.Type type) {
-        IetfTeTopologyEvent.Type returnType = null;
-
-        switch (type) {
-            case LINK_ADDED:
-            case LINK_REMOVED:
-            case LINK_UPDATED:
-                returnType = IetfTeTopologyEvent.Type.TE_LINK_EVENT;
-                break;
-            case NODE_ADDED:
-            case NODE_REMOVED:
-            case NODE_UPDATED:
-                returnType = IetfTeTopologyEvent.Type.TE_NODE_EVENT;
-                break;
-            default:
-                log.warn("teTopoEventType2YangIetfTopoEventType: unknown type: {}", type);
-        }
-
-        return returnType;
-    }
-
-    private static TeTopologyEventTypeEnum teTopoEventType2YangTeTopoEventType(TeTopologyEvent.Type type) {
-        TeTopologyEventTypeEnum returnType = null;
-
-        switch (type) {
-            case LINK_ADDED:
-            case NODE_ADDED:
-                returnType = TeTopologyEventTypeEnum.ADD;
-                break;
-            case LINK_REMOVED:
-            case NODE_REMOVED:
-                returnType = TeTopologyEventTypeEnum.REMOVE;
-                break;
-            case LINK_UPDATED:
-            case NODE_UPDATED:
-                returnType = TeTopologyEventTypeEnum.UPDATE;
-                break;
-            default:
-                log.warn("teTopoEventType2YangteTopoEventType: unsupported type: {}", type);
-            break;
-        }
-
-        return returnType;
-    }
-}
-
-
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NodeConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NodeConverter.java
deleted file mode 100644
index 4a2e87f..0000000
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NodeConverter.java
+++ /dev/null
@@ -1,1173 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.teyang.utils.topology;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.BitSet;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.MapUtils;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.tetopology.management.api.EncodingType;
-import org.onosproject.tetopology.management.api.KeyId;
-import org.onosproject.tetopology.management.api.SwitchingType;
-import org.onosproject.tetopology.management.api.TeConstants;
-import org.onosproject.tetopology.management.api.TeStatus;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.TeTopologyService;
-import org.onosproject.tetopology.management.api.link.ElementType;
-import org.onosproject.tetopology.management.api.link.NetworkLink;
-import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
-import org.onosproject.tetopology.management.api.link.TeIpv4;
-import org.onosproject.tetopology.management.api.link.TeLinkId;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.link.TePathAttributes;
-import org.onosproject.tetopology.management.api.link.UnderlayAbstractPath;
-import org.onosproject.tetopology.management.api.node.CommonNodeData;
-import org.onosproject.tetopology.management.api.node.ConnectivityMatrix;
-import org.onosproject.tetopology.management.api.node.DefaultNetworkNode;
-import org.onosproject.tetopology.management.api.node.DefaultTeNode;
-import org.onosproject.tetopology.management.api.node.LocalLinkConnectivity;
-import org.onosproject.tetopology.management.api.node.NetworkNode;
-import org.onosproject.tetopology.management.api.node.NetworkNodeEventSubject;
-import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
-import org.onosproject.tetopology.management.api.node.TeNode;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TerminationPoint;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ietfinettypes.DomainName;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ietfinettypes.IpAddress;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NetworkId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.Networks;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NodeId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.Network;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
-               .ietfnetwork.networks.network.DefaultNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
-               .ietfnetwork.networks.network.Node;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
-               .ietfnetwork.networks.network.node.DefaultSupportingNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
-               .ietfnetwork.networks.network.node.SupportingNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.node.AugmentedNdNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.node.DefaultAugmentedNdNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.DefaultTeNodeEvent;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.TeNodeEvent;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.connectivitymatrixentryattributes.DefaultUnderlay;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.connectivitymatrixentryattributes.Underlay;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourcepernodeattributes.DefaultInformationSourceState;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourcepernodeattributes.InformationSourceState;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourcepernodeattributes.informationsourcestate.DefaultTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourcepernodeattributes.informationsourcestate.Topology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-               .ietftetopology.networks.network.node.AugmentedNwNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-               .ietftetopology.networks.network.node.DefaultAugmentedNwNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks.network.node.terminationpoint.AugmentedNtTerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconnectivityattributes.DefaultTeSrlgs;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconnectivityattributes.TeSrlgs;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.DefaultPrimaryPath;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.PrimaryPath;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.primarypath.DefaultPathElement;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.primarypath.PathElement;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.DefaultTe;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.DefaultTe.TeBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.Te;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.Config;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.DefaultConfig;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.DefaultState;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.DefaultTunnelTerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.State;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.TunnelTerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.tunnelterminationpoint.DefaultSupportingTunnelTerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.tunnelterminationpoint.SupportingTunnelTerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconfigattributes.DefaultTeNodeAttributes;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconfigattributes.TeNodeAttributes;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconfigattributes.TeNodeAttributes.TeNodeAttributesBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.ConnectivityMatrices;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.DefaultConnectivityMatrices;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.DefaultConnectivityMatrices.ConnectivityMatricesBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.connectivitymatrices.DefaultConnectivityMatrix;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.connectivitymatrices.DefaultConnectivityMatrix.ConnectivityMatrixBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.connectivitymatrices.connectivitymatrix.DefaultFrom;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.connectivitymatrices.connectivitymatrix.DefaultTo;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeinfoattributes.DefaultUnderlayTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeinfoattributes.UnderlayTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodetunnelterminationattributes.DefaultLocalLinkConnectivities;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodetunnelterminationattributes.LocalLinkConnectivities;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodetunnelterminationattributes.locallinkconnectivities.DefaultLocalLinkConnectivity;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodetunnelterminationattributes.locallinkconnectivities.DefaultLocalLinkConnectivity.LocalLinkConnectivityBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.Srlg;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeAdminStatus;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeNodeId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeTopologyEventType;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.AsNumber;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.DefaultAsNumber;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.DefaultUnnumberedLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.Ipv4Address;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.UnnumberedLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.tetopologyeventtype.TeTopologyEventTypeEnum;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev20130715.ietfyangtypes.DottedQuad;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-/**
- * Node conversion functions.
- */
-public final class NodeConverter {
-
-    private static final String E_NULL_TE_SUBSYSTEM_TE_NODE =
-            "TeSubsystem teNode object cannot be null";
-    private static final String E_NULL_TE_SUBSYSTEM_TE_TUNNEL_TP =
-            "TeSubsystem teTunnelTp object cannot be null";
-    private static final String E_NULL_TE_SUBSYSTEM_NODE =
-            "TeSubsystem ndoe object cannot be null";
-    private static final String E_NULL_YANG_NODE =
-            "Yang node object cannot be null";
-
-    // no instantiation
-    private NodeConverter() {
-    }
-
-    /**
-     * TE Node Config object conversion from TE Topology subsystem to YANG.
-     *
-     * @param teSubsystemTeNode TE node object
-     * @param teTopologyService teTopolog core service
-     * @return TE Node Config YANG object
-     */
-    private static Config teNode2YangConfig(TeNode teSubsystemTeNode, TeTopologyService teTopologyService) {
-        checkNotNull(teSubsystemTeNode, E_NULL_TE_SUBSYSTEM_TE_NODE);
-
-        TeNodeAttributes.TeNodeAttributesBuilder teNodeAttributesConfigBuilder = DefaultTeNodeAttributes
-                .builder();
-        teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder
-                .isAbstract(teSubsystemTeNode.flags()
-                        .get(TeNode.BIT_ABSTRACT));
-
-        if (teSubsystemTeNode.adminStatus() != null) {
-            teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder
-                    .adminStatus(EnumConverter.teSubsystem2YangAdminStatus(teSubsystemTeNode.adminStatus()));
-        }
-
-        if (teSubsystemTeNode.name() != null) {
-            teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder
-                    .name(DomainName.fromString(teSubsystemTeNode.name()));
-        }
-
-        if (teSubsystemTeNode.underlayTeTopologyId() != null) {
-            teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder
-                    .underlayTopology(teNode2YangUnderlay(teSubsystemTeNode
-                            .underlayTeTopologyId(), teTopologyService));
-        }
-
-        // TODO: should we ignore this from te to yang? as we've already set yang supportingNode
-        //if (teSubsystemTeNode.supportingTeNodeId() != null) {
-        //}
-
-        if (teSubsystemTeNode.connectivityMatrices() != null) {
-            teNodeAttributesConfigBuilder = te2YangConnectivityMatrix(teNodeAttributesConfigBuilder,
-                                                                      teSubsystemTeNode.connectivityMatrices());
-        }
-
-
-        Config.ConfigBuilder yangConfigBuilder = DefaultConfig.builder();
-        yangConfigBuilder = yangConfigBuilder.teNodeAttributes(teNodeAttributesConfigBuilder.build());
-
-        return yangConfigBuilder.build();
-    }
-
-    private static TeNodeAttributesBuilder
-                    te2YangConnectivityMatrix(TeNodeAttributesBuilder teNodeAttributesConfigBuilder,
-                                              Map<Long, ConnectivityMatrix> connectivityMatrices) {
-        ConnectivityMatrixBuilder connectivityMatrixConfigBuilder = DefaultConnectivityMatrix.builder();
-        ConnectivityMatricesBuilder yangConnectivityMatricesBuilder = DefaultConnectivityMatrices.builder();
-        for (Map.Entry<Long, ConnectivityMatrix> teCmEntry :
-            connectivityMatrices.entrySet()) {
-            connectivityMatrixConfigBuilder = connectivityMatrixConfigBuilder
-                    .id(teCmEntry.getKey())
-                    .isAllowed(!teCmEntry.getValue().flags()
-                               .get(ConnectivityMatrix.BIT_DISALLOWED))
-                    .from(new DefaultFrom.FromBuilder() // TODO: for now, assuming that there is
-                                                        // only one 'from', and mergingList is empty
-                          .tpRef(((TeLinkId) teCmEntry.getValue().from()).value())
-                                         .build())
-                    .to(new DefaultTo.ToBuilder() // TODO: for now, assuming that there is only
-                                                  // one item in constrainingElements list
-                          .tpRef(((TeLinkId) teCmEntry.getValue().constrainingElements().get(0)).value())
-                                         .build());
-            if (teCmEntry.getValue().teAttributes() != null) {
-                connectivityMatrixConfigBuilder = connectivityMatrixConfigBuilder
-                        .teDefaultMetric(teCmEntry.getValue().teAttributes().cost())
-                        .teDelayMetric(teCmEntry.getValue().teAttributes().delay());
-            }
-
-            TeSrlgs.TeSrlgsBuilder teSrlgsBuilder = DefaultTeSrlgs.builder();
-            if (teCmEntry.getValue().teAttributes().srlgs() != null) {
-                for (Long val : teCmEntry.getValue().teAttributes().srlgs()) {
-                    Srlg srlg = new Srlg(val);
-                    teSrlgsBuilder = teSrlgsBuilder.addToValue(srlg);
-                }
-                connectivityMatrixConfigBuilder = connectivityMatrixConfigBuilder
-                        .teSrlgs(teSrlgsBuilder.build());
-            }
-
-            Underlay.UnderlayBuilder underlayBuilder = DefaultUnderlay.builder();
-            PrimaryPath.PrimaryPathBuilder primaryPathBuilder = DefaultPrimaryPath.builder();
-
-            PathElement.PathElementBuilder pathElementBuilder = DefaultPathElement.builder();
-            if (teCmEntry.getValue().underlayPath() != null &&
-                    teCmEntry.getValue().underlayPath().pathElements() != null &&
-                    !teCmEntry.getValue().underlayPath().pathElements().isEmpty()) {
-                for (org.onosproject.tetopology.management.api.link.PathElement patel : teCmEntry.getValue()
-                        .underlayPath().pathElements()) {
-                    pathElementBuilder = pathElementBuilder.pathElementId(patel.pathElementId());
-                    if (patel.type() instanceof AsNumber) {
-                        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes
-                            .explicitroutesubobject.type.AsNumber
-                            .AsNumberBuilder asNumberBuilder = new DefaultAsNumber.AsNumberBuilder();
-                        asNumberBuilder = asNumberBuilder.asNumber(((AsNumber) patel.type()).asNumber());
-                        pathElementBuilder = pathElementBuilder.type(asNumberBuilder.build());
-                    } else if (patel.type() instanceof UnnumberedLink) {
-                        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes
-                            .explicitroutesubobject.type.UnnumberedLink
-                            .UnnumberedLinkBuilder unNumberBuilder = DefaultUnnumberedLink.builder();
-                        unNumberBuilder = unNumberBuilder.interfaceId(((UnnumberedLink) patel.type()).interfaceId());
-                        unNumberBuilder = unNumberBuilder.routerId(IpAddress.fromString(((UnnumberedLink) patel.type())
-                                                                                        .routerId().toString()));
-                        pathElementBuilder = pathElementBuilder.type(unNumberBuilder.build());
-                    }
-                    primaryPathBuilder = primaryPathBuilder
-                            .addToPathElement(pathElementBuilder.build());
-                }
-            }
-
-            underlayBuilder = underlayBuilder.primaryPath(primaryPathBuilder.build());
-            connectivityMatrixConfigBuilder = connectivityMatrixConfigBuilder
-                    .underlay(underlayBuilder.build());
-
-            yangConnectivityMatricesBuilder = yangConnectivityMatricesBuilder
-                    .addToConnectivityMatrix(connectivityMatrixConfigBuilder.build());
-        }
-        teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder
-                .connectivityMatrices(yangConnectivityMatricesBuilder.build());
-        return teNodeAttributesConfigBuilder;
-    }
-
-    private static UnderlayTopology teNode2YangUnderlay(TeTopologyKey underlayTopology,
-                                                        TeTopologyService teTopologyService) {
-        UnderlayTopology.UnderlayTopologyBuilder underlayBuilder = DefaultUnderlayTopology.builder();
-
-        underlayBuilder = underlayBuilder.networkRef(teTopologyService.networkId(underlayTopology));
-
-        return underlayBuilder.build();
-    }
-
-    /**
-     * TE Node State object conversion from TE Topology subsystem to YANG.
-     *
-     * @param teSubsystemTeNode TE node object
-     * @param teTopologyService teTopology core service
-     * @return TE Node State YANG object
-     */
-    private static State teNode2YangState(TeNode teSubsystemTeNode, TeTopologyService teTopologyService) {
-        checkNotNull(teSubsystemTeNode, E_NULL_TE_SUBSYSTEM_TE_NODE);
-
-        TeNodeAttributes
-                        .TeNodeAttributesBuilder teNodeAttributesStateBuilder =
-        DefaultTeNodeAttributes.builder()
-                                        .isAbstract(teSubsystemTeNode.flags()
-                                                .get(TeNode.BIT_ABSTRACT));
-
-        if (teSubsystemTeNode.adminStatus() != null) {
-            teNodeAttributesStateBuilder = teNodeAttributesStateBuilder
-                    .adminStatus(EnumConverter.teSubsystem2YangAdminStatus(teSubsystemTeNode.adminStatus()));
-        }
-
-        if (teSubsystemTeNode.name() != null) {
-            teNodeAttributesStateBuilder = teNodeAttributesStateBuilder
-                    .name(DomainName.fromString(teSubsystemTeNode.name()));
-        }
-
-        if (teSubsystemTeNode.underlayTeTopologyId() != null) {
-            teNodeAttributesStateBuilder = teNodeAttributesStateBuilder
-                    .underlayTopology(teNode2YangUnderlay(teSubsystemTeNode
-                            .underlayTeTopologyId(), teTopologyService));
-        }
-
-        if (teSubsystemTeNode.connectivityMatrices() != null) {
-            teNodeAttributesStateBuilder = te2YangConnectivityMatrix(teNodeAttributesStateBuilder,
-                                                                      teSubsystemTeNode.connectivityMatrices());
-        }
-
-        // TODO: should we ignore this from te to yang? as we've already set yang supportingNode
-        //if (teSubsystemTeNode.supportingTeNodeId() != null) {
-        //}
-
-        State.StateBuilder yangStateBuilder = DefaultState.builder();
-        yangStateBuilder = yangStateBuilder.teNodeAttributes(teNodeAttributesStateBuilder.build());
-
-        if (teSubsystemTeNode.opStatus() != null) {
-            yangStateBuilder = yangStateBuilder.operStatus(EnumConverter
-                                                           .teSubsystem2YangOperStatus(teSubsystemTeNode.opStatus()));
-        }
-
-        if (teSubsystemTeNode.sourceTeNodeId() != null) {
-            InformationSourceState.InformationSourceStateBuilder issBuilder = DefaultInformationSourceState.builder();
-
-            Topology.TopologyBuilder topologyBuilder = DefaultTopology.builder();
-            topologyBuilder = topologyBuilder.nodeRef(teTopologyService
-                    .nodeKey(teSubsystemTeNode.sourceTeNodeId()).nodeId())
-                    .networkRef(teTopologyService
-                            .nodeKey(teSubsystemTeNode.sourceTeNodeId())
-                            .networkId());
-
-            issBuilder = issBuilder.topology(topologyBuilder.build());
-            yangStateBuilder.informationSourceState(issBuilder.build());
-        }
-
-        return yangStateBuilder.build();
-    }
-
-    private static class ByteUtils {
-
-        public static byte[] longToBytes(long x) {
-            long temp = x;
-            byte[] b = new byte[8];
-            for (int i = 0; i < b.length; i++) {
-                b[i] = new Long(temp & 0xff).byteValue();
-                temp = temp >> 8;
-            }
-            return b;
-        }
-
-        public static long bytesToLong(byte[] bytes) {
-            return (bytes[7] & 255L) << 56
-                    | (bytes[6] & 255L) << 48
-                    | (bytes[5] & 255L) << 40
-                    | (bytes[4] & 255L) << 32
-                    | (bytes[3] & 255L) << 24
-                    | (bytes[2] & 255L) << 16
-                    | (bytes[1] & 255L) << 8 | bytes[0] & 255L;
-        }
-    }
-
-    /**
-     * TE Node TunnelTerminationPoint object conversion from TE Topology subsystem to YANG.
-     *
-     * @param teTunnelTp TE TunnelTerminationPoint object
-     * @param teTpId
-     * @param teTopologyService
-     * @param teNodeKey
-     * @return TunnelTerminationPoint YANG object
-     */
-    private static TunnelTerminationPoint teSubsystem2YangTtp(
-                           org.onosproject.tetopology.management.api.node
-                           .TunnelTerminationPoint teTunnelTp, Long teTpId,
-                           TeTopologyService teTopologyService,
-                           TeNodeKey teNodeKey) {
-        checkNotNull(teTunnelTp, E_NULL_TE_SUBSYSTEM_TE_TUNNEL_TP);
-
-        TunnelTerminationPoint.TunnelTerminationPointBuilder tunnelTpBuilder =
-                DefaultTunnelTerminationPoint.builder().tunnelTpId(ByteUtils.longToBytes(teTpId.longValue()));
-
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-            .ietftetopology.tenodeaugment.te.tunnelterminationpoint.Config.ConfigBuilder ttpConfigBuilder =
-                        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-            .ietftetopology.tenodeaugment.te.tunnelterminationpoint.DefaultConfig.builder();
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-            .ietftetopology.tenodeaugment.te.tunnelterminationpoint.State.StateBuilder ttpStateBuilder =
-                        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-            .ietftetopology.tenodeaugment.te.tunnelterminationpoint.DefaultState.builder();
-
-        // Assuming teTunnelTp only has one interLayerLock
-        if (teTunnelTp.interLayerLockList() != null && !teTunnelTp.interLayerLockList().isEmpty()) {
-            ttpConfigBuilder = ttpConfigBuilder.interLayerLockId(teTunnelTp.interLayerLockList().get(0));
-            ttpStateBuilder  = ttpStateBuilder.interLayerLockId(teTunnelTp.interLayerLockList().get(0));
-        }
-
-        // TODO: retrieve teTunnelTp.switchingLayer() and set it to  ttpConfigBuilder and ttpStateBuilder
-        // TODO: retrieve more attributes from teTunnelTp and assign to ttpConfigBuilder and ttpStateBuilder
-        // For which ones we can do the conversion?
-
-        LocalLinkConnectivities.LocalLinkConnectivitiesBuilder
-            localLinkConnectivitiesBuilder = DefaultLocalLinkConnectivities.builder();
-        if (teTunnelTp.localLinkConnectivityList() != null && !teTunnelTp.localLinkConnectivityList().isEmpty()) {
-            for (LocalLinkConnectivity llcn : teTunnelTp.localLinkConnectivityList()) {
-                // convert teLinkId to networkLinkKey
-                if (llcn != null && llcn.constrainingElements() != null
-                        && !llcn.constrainingElements().isEmpty()) {
-                    TeLinkId telinkId = (TeLinkId) llcn.constrainingElements().get(0);
-                    TeLinkTpGlobalKey globalKey = new TeLinkTpGlobalKey(teNodeKey, telinkId.value());
-                    NetworkLinkKey netLinkKey = teTopologyService.linkKey(globalKey);
-                    NetworkLink networkLink = teTopologyService
-                            .network(netLinkKey.networkId()).links().get(netLinkKey.linkId());
-                    LocalLinkConnectivityBuilder llcBuilder = DefaultLocalLinkConnectivity.builder();
-                    llcBuilder = llcBuilder.linkTpRef(networkLink.source().tpId());
-                    localLinkConnectivitiesBuilder.addToLocalLinkConnectivity(llcBuilder.build());
-                }
-            }
-
-
-            ttpConfigBuilder = ttpConfigBuilder.localLinkConnectivities(localLinkConnectivitiesBuilder.build());
-            ttpStateBuilder = ttpStateBuilder.localLinkConnectivities(localLinkConnectivitiesBuilder.build());
-        }
-
-        tunnelTpBuilder = tunnelTpBuilder.config(ttpConfigBuilder.build())
-                                         .state(ttpStateBuilder.build());
-        SupportingTunnelTerminationPoint.SupportingTunnelTerminationPointBuilder
-        supportTtpBuilder = DefaultSupportingTunnelTerminationPoint.builder();
-        if (teTunnelTp.supportingTtpId() != null) {
-            TeTopologyKey teTopologyKey = new TeTopologyKey(teTunnelTp.supportingTtpId().providerId(),
-                                                            teTunnelTp.supportingTtpId().clientId(),
-                                                            teTunnelTp.supportingTtpId().topologyId());
-
-            TeNodeKey teNodeKeySup = new TeNodeKey(teTopologyKey, teTunnelTp.supportingTtpId().teNodeId());
-            NetworkNodeKey networkNodeKey = teTopologyService.nodeKey(teNodeKeySup);
-            NetworkId netId = NetworkId.fromString(networkNodeKey.networkId().toString());
-
-            supportTtpBuilder = supportTtpBuilder
-                    .nodeRef(NodeId.fromString(networkNodeKey.nodeId().toString()))
-                    .networkRef(netId)
-                    .tunnelTpRef(ByteUtils.longToBytes(teTunnelTp.supportingTtpId().ttpId()));
-
-            tunnelTpBuilder = tunnelTpBuilder.addToSupportingTunnelTerminationPoint(supportTtpBuilder.build());
-        }
-
-
-        return tunnelTpBuilder.build();
-    }
-
-    /**
-     * Node object conversion from TE Topology subsystem to YANG.
-     *
-     * @param teSubsystem TE subsystem node
-     * @param teTopologyService teTopology core service
-     * @param teTopologyKey teTopologyKey
-     * @return YANG node
-     */
-    public static Node teSubsystem2YangNode(org.onosproject.tetopology.management.api.node.NetworkNode teSubsystem,
-                                            TeTopologyService teTopologyService,
-                                            TeTopologyKey teTopologyKey) {
-        checkNotNull(teSubsystem, E_NULL_TE_SUBSYSTEM_NODE);
-
-        NodeId nodeId = NodeId.fromString(teSubsystem.nodeId().toString());
-
-        Node.NodeBuilder builder = DefaultNode.builder().nodeId(nodeId);
-
-        if (teSubsystem.supportingNodeIds() != null) {
-            List<SupportingNode> sNodes = Lists.newArrayList();
-            SupportingNode.SupportingNodeBuilder spNodeBuilder = DefaultSupportingNode
-                    .builder();
-            for (NetworkNodeKey nodeKey : teSubsystem.supportingNodeIds()) {
-                sNodes.add(spNodeBuilder
-                        .networkRef(NetworkId
-                                .fromString(nodeKey.networkId().toString()))
-                        .nodeRef(NodeId.fromString(nodeKey.nodeId().toString()))
-                        .build());
-            }
-            builder = builder.supportingNode(sNodes);
-        }
-
-        if (teSubsystem.terminationPoints() != null) {
-            AugmentedNdNode.AugmentedNdNodeBuilder tpAugmentBuilder = DefaultAugmentedNdNode
-                    .builder();
-            Map<KeyId, TerminationPoint> teSubsystemTeTp = teSubsystem
-                    .terminationPoints();
-
-            for (TerminationPoint teTp : teSubsystemTeTp.values()) {
-                tpAugmentBuilder.addToTerminationPoint(TerminationPointConverter
-                        .teSubsystem2YangTerminationPoint(teTp));
-            }
-            builder.addYangAugmentedInfo(tpAugmentBuilder.build(),
-                                         AugmentedNdNode.class);
-        }
-
-        if (teSubsystem.teNode() != null) {
-            AugmentedNwNode.AugmentedNwNodeBuilder nodeAugmentBuilder = DefaultAugmentedNwNode
-                    .builder();
-
-            TeNode teSubsystemTeNode = teSubsystem.teNode();
-
-            TeBuilder yangTeBuilder = DefaultTe.builder();
-
-            nodeAugmentBuilder = nodeAugmentBuilder
-                    .teNodeId(TeNodeId.of(DottedQuad.of(Ip4Address
-                            .valueOf((int) teSubsystemTeNode.teNodeId())
-                            .toString())));
-
-            // Set configuration data
-            // Set state data
-            yangTeBuilder = yangTeBuilder.config(teNode2YangConfig(teSubsystemTeNode, teTopologyService))
-                                         .state(teNode2YangState(teSubsystemTeNode, teTopologyService));
-
-            if (teSubsystemTeNode.tunnelTerminationPoints() != null) {
-                for (Map.Entry<Long, org.onosproject.tetopology.management.api.node.TunnelTerminationPoint> entry :
-                        teSubsystemTeNode.tunnelTerminationPoints().entrySet()) {
-                    yangTeBuilder = yangTeBuilder
-                            .addToTunnelTerminationPoint(teSubsystem2YangTtp(entry
-                                    .getValue(), entry.getKey(), teTopologyService,
-                                    new TeNodeKey(teTopologyKey, teSubsystemTeNode.teNodeId())));
-                }
-            }
-
-            nodeAugmentBuilder = nodeAugmentBuilder.te(yangTeBuilder.build());
-            builder.addYangAugmentedInfo(nodeAugmentBuilder.build(),
-                                         AugmentedNwNode.class);
-        }
-        return builder.build();
-    }
-
-    /**
-     * Node object conversion from YANG to TE Topology subsystem.
-     *
-     * @param yangNode Node in YANG model
-     * @param yangNetwork YANG network
-     * @param yangNetworks YANG networks
-     * @return TE subsystem node
-     */
-    public static org.onosproject.tetopology.management.api.node.NetworkNode
-            yang2TeSubsystemNode(Node yangNode, Network yangNetwork,
-                                 Networks yangNetworks) {
-        checkNotNull(yangNode, E_NULL_YANG_NODE);
-
-        org.onosproject.tetopology.management.api.node.DefaultNetworkNode node;
-        List<NetworkNodeKey> spNodes = null;
-        TeNode teNode = null;
-        Map<KeyId, TerminationPoint> tps = null;
-
-        if (yangNode.supportingNode() != null) {
-            spNodes = Lists.newArrayList();
-            for (SupportingNode yangSpNode : yangNode.supportingNode()) {
-                NetworkNodeKey nodeKey = new NetworkNodeKey(KeyId.keyId(yangSpNode.nodeRef().uri().toString()),
-                                                            KeyId.keyId(yangSpNode.networkRef().uri().toString()));
-                spNodes.add(nodeKey);
-            }
-        }
-
-        if (yangNode.yangAugmentedInfoMap() != null
-                && !yangNode.yangAugmentedInfoMap().isEmpty()) {
-
-            AugmentedNdNode yangTpNodeAugment = (AugmentedNdNode) yangNode
-                    .yangAugmentedInfo(AugmentedNdNode.class);
-            if (yang2TeSubsystemTpNodeAugment(yangTpNodeAugment) != null) {
-                tps = yang2TeSubsystemTpNodeAugment(yangTpNodeAugment);
-            }
-
-            AugmentedNwNode yangNodeAugment = (AugmentedNwNode) yangNode
-                    .yangAugmentedInfo(AugmentedNwNode.class);
-            if (yangNodeAugment != null && yangNodeAugment.te() != null && yangNodeAugment.teNodeId() != null) {
-                TeNodeId teNodeId = yangNodeAugment.teNodeId();
-                Te yangNodeAugTe = yangNodeAugment.te();
-                teNode = yang2TeSubsystemNodeAugment(yangNodeAugTe, teNodeId,
-                                                     yangNetwork,
-                                                     yangNetworks,
-                                                     yangNode,
-                                                     tps);
-            }
-        }
-
-        node = new org.onosproject.tetopology.management.api.node
-                .DefaultNetworkNode(KeyId.keyId(yangNode.nodeId().uri().string()), spNodes, teNode, tps);
-        return node;
-    }
-
-    // TODO: convert connectivity matrix from yang to te
-    private static Map<Long, ConnectivityMatrix>
-                    yang2TeSubsystemNodeConnectivityMatrix(String networkId,
-                                                           String nodeId,
-                                                           ConnectivityMatrices yangMatrices) {
-
-        Map<Long, ConnectivityMatrix> teCmList = Maps.newHashMap();
-
-        List<org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology
-            .tenodeconnectivitymatrix.connectivitymatrices.ConnectivityMatrix>
-                yangMatrix = yangMatrices.connectivityMatrix();
-        for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te
-                .topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.connectivitymatrices.
-                ConnectivityMatrix cmYang : yangMatrix) {
-
-            ElementType from = new TeLinkId(Long.valueOf(((String) cmYang.from().tpRef()))); // is this correct?
-
-            UnderlayAbstractPath underlayPath = null; // ignore
-            List<org.onosproject.tetopology.management.api.link.PathElement> pathElements = Lists.newArrayList();
-            Boolean loose = false;
-            long longTeNodeId = TeConstants.NIL_LONG_VALUE;
-            if (cmYang != null && cmYang.underlay() != null && cmYang.underlay().primaryPath() != null
-                    && cmYang.underlay().primaryPath().pathElement() != null
-                    && !cmYang.underlay().primaryPath().pathElement().isEmpty()) {
-                for (PathElement yangPathEl : cmYang.underlay().primaryPath().pathElement()) {
-                    ElementType type = null;
-                    if (yangPathEl.type() instanceof UnnumberedLink) {
-                        String rS = ((UnnumberedLink) (yangPathEl.type())).routerId().toString();
-                        org.onlab.packet.IpAddress routerId = org.onlab.packet.IpAddress.valueOf(rS);
-                        long interfaceId = ((UnnumberedLink) yangPathEl.type()).interfaceId();
-                        type = new org.onosproject.tetopology.management.api.link.UnnumberedLink(routerId, interfaceId);
-                        longTeNodeId = Long.valueOf(((UnnumberedLink) yangPathEl.type()).routerId().toString());
-                    } else if (yangPathEl.type() instanceof Ipv4Address) {
-                        short v4PrefixLength = ((Ipv4Address) yangPathEl.type())
-                                .v4PrefixLength();
-
-                        Ip4Address v4Address = Ip4Address
-                                .valueOf(((Ipv4Address) yangPathEl.type())
-                                        .v4Address().string());
-
-                        loose = ((Ipv4Address) yangPathEl.type()).v4Loose();
-                        type = new TeIpv4(v4Address, v4PrefixLength);
-                    }
-                    org.onosproject.tetopology.management.api.link.PathElement
-                        patel = new org.onosproject.tetopology.management.api.link
-                                    .PathElement(yangPathEl.pathElementId(),
-                                                 longTeNodeId,
-                                                 type,
-                                                 loose);
-                    pathElements.add(patel);
-                }
-            }
-            underlayPath = new UnderlayAbstractPath(pathElements, loose);
-
-            List<ElementType> mergingList = Lists.newArrayList(); // empty merging list for now
-
-            List<ElementType> constrainingElements = Lists.newArrayList();
-            ElementType to = new TeLinkId(Long.valueOf(((String) cmYang.to().tpRef()))); // is this correct?
-            constrainingElements.add(to);
-
-            BitSet flags = new BitSet(); // what are the flags in cmYang?
-
-            List<Long> srlgs = Lists.newArrayList();
-            if (cmYang.teSrlgs() != null) {
-                for (Srlg srlg : cmYang.teSrlgs().value()) {
-                    srlgs.add(srlg.uint32());
-                }
-            }
-            TePathAttributes teAttributes = new
-                    TePathAttributes(cmYang.teDefaultMetric(),
-                                     cmYang.teDelayMetric(),
-                                     srlgs);
-            ConnectivityMatrix coreCm = new ConnectivityMatrix(cmYang.id(),
-                                                               from,
-                                                               mergingList,
-                                                               constrainingElements,
-                                                               flags,
-                                                               teAttributes,
-                                                               underlayPath);
-
-            teCmList.put(cmYang.id(), coreCm);
-        }
-
-        return teCmList;
-    }
-
-    private static TeTopologyKey yang2TeSubsystemNodeUnderlayTopology(UnderlayTopology ut, Networks yangNetworks) {
-        TeTopologyKey tetopokey = LinkConverter.findTopologyId(yangNetworks,
-                                                               ut.networkRef());
-        return tetopokey;
-    }
-
-    // TODO: retrieve the details of tunnel termiantion points from yang to te
-    private static Map<Long, org.onosproject.tetopology.management.api.node.
-                      TunnelTerminationPoint> yang2TeSubsystemTtp(List<TunnelTerminationPoint> ttps, Node yangNode,
-                                                                  Networks yangNetworks) {
-        Map<Long, org.onosproject.tetopology.management.api.node.TunnelTerminationPoint> ttpsMap = Maps
-                .newHashMap();
-        for (TunnelTerminationPoint ttpYang : ttps) {
-
-            SwitchingType switchingLayer = null; // how to find switching type?
-            EncodingType encodingLayer = null; // TODO: find proper encoding type from ttpYang.config().encoding();
-            BitSet flags = new BitSet(); // how to set flags?
-            List<Long> interLayerLockList = Lists.newArrayList();
-
-            if (ttpYang.config() != null) {
-                interLayerLockList.add(ttpYang.config().interLayerLockId()); // interLayerLock in yang is not a list
-            }
-
-            List<LocalLinkConnectivity> localLinkConnectivityList = Lists.newArrayList();
-            // FIXME: once new yang model is used, we can make llc
-            ElementType elt = null;
-            List<ElementType> eltList = Lists.newArrayList();
-            if (ttpYang.config() != null &&
-                    ttpYang.config().localLinkConnectivities() != null &&
-                    CollectionUtils.isNotEmpty(ttpYang.config().localLinkConnectivities().localLinkConnectivity())) {
-                for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-                        .ietftetopology.tenodetunnelterminationattributes.locallinkconnectivities
-                        .LocalLinkConnectivity yangLlc : ttpYang.config()
-                                                            .localLinkConnectivities().localLinkConnectivity()) {
-                    if (MapUtils.isNotEmpty(yangNode.yangAugmentedInfoMap())) {
-                        AugmentedNdNode yangTpNodeAugment = (AugmentedNdNode) yangNode
-                                .yangAugmentedInfo(AugmentedNdNode.class);
-                        for (org.onosproject.yang.gen.v1.urn.ietf.params.xml
-                                .ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
-                                .networks.network.node.augmentedndnode
-                                .TerminationPoint tpItem : yangTpNodeAugment.terminationPoint()) {
-                            if (tpItem.tpId().uri().string().equals(yangLlc.linkTpRef().toString())) {
-                                if (tpItem.yangAugmentedInfoMap() != null
-                                        && !tpItem.yangAugmentedInfoMap().isEmpty()) {
-                                    AugmentedNtTerminationPoint yangTpAugment =
-                                            (AugmentedNtTerminationPoint) tpItem
-                                            .yangAugmentedInfo(AugmentedNtTerminationPoint.class);
-                                    if (yangTpAugment.teTpId() != null) {
-                                        elt = new TeLinkId(Long.valueOf(yangTpAugment.teTpId().toString()));
-                                        break;
-                                    }
-                                }
-                            }
-                        }
-                    }
-                    eltList.add(elt);
-//                    tercap.linkTp().toString() //tpId -> tp -> te-tp-id (long)
-                }
-            }
-
-            TePathAttributes teAttributes = null; // how to find these
-                                                  // attributes from ttpYang?
-            UnderlayAbstractPath underlayPath = null; // how to find underlayAbstractPath from ttpYang?
-            LocalLinkConnectivity llc = new LocalLinkConnectivity(eltList,
-                                                                  flags,
-                                                                  teAttributes,
-                                                                  underlayPath);
-            localLinkConnectivityList.add(llc);
-
-            float[] availAdaptBandwidth = null; // how to find availableBandwidth?
-
-            TeTopologyKey teTopologyKey = null;
-
-            Object networkRefObj = null;
-            NetworkId networkId = null;
-            if (ttpYang != null && ttpYang.supportingTunnelTerminationPoint() != null
-                    && !ttpYang.supportingTunnelTerminationPoint().isEmpty()
-                    && ttpYang.supportingTunnelTerminationPoint().get(0) != null) {
-                networkRefObj = ttpYang.supportingTunnelTerminationPoint()
-                        .get(0).networkRef();
-            }
-            if (networkRefObj != null) {
-                teTopologyKey = LinkConverter.findTopologyId(yangNetworks,
-                                                             networkRefObj);
-                networkId = NetworkId.fromString((String) networkRefObj);
-            }
-
-            Network teNetworkFound = null;
-            if (yangNetworks.network() != null
-                    && !yangNetworks.network().isEmpty()
-                    && networkId != null) {
-                for (Network ynetItem : yangNetworks.network()) {
-                    if (ynetItem.networkId() != null) {
-                        if (ynetItem.networkId().equals(networkId)) {
-                            teNetworkFound = ynetItem;
-                            break;
-                        }
-                    }
-                }
-            }
-            TeNodeId teNodeIdSupport = null;
-            if (teNetworkFound != null
-                    && ttpYang != null
-                    && ttpYang.supportingTunnelTerminationPoint() != null
-                    && ttpYang.supportingTunnelTerminationPoint().get(0) != null) {
-
-                String s = ((String) ttpYang.supportingTunnelTerminationPoint().get(0).nodeRef());
-                int integ = Integer.valueOf(s);
-                NodeId nodeId = NodeId.fromString(DottedQuad.of(Ip4Address.valueOf(integ).toString()).toString());
-                teNodeIdSupport = LinkConverter
-                        .findTeNodeId(teNetworkFound,
-                                      nodeId);
-            }
-
-            long tenIdLong = -1;
-            if (teNodeIdSupport != null) {
-                tenIdLong = Ip4Address
-                        .valueOf(teNodeIdSupport.dottedQuad().string()).toInt();
-            }
-
-            TeNodeKey teNodeKey = null;
-            if (teTopologyKey != null && tenIdLong != -1) {
-                teNodeKey = new TeNodeKey(teTopologyKey, tenIdLong);
-            }
-            TtpKey supportTtpKey = null;
-            if (teNodeKey != null && ttpYang != null
-                    && ttpYang.supportingTunnelTerminationPoint() != null
-                    && !ttpYang.supportingTunnelTerminationPoint().isEmpty()
-                    && ttpYang.supportingTunnelTerminationPoint().get(0) != null) {
-                supportTtpKey = new TtpKey(teNodeKey,
-                                           ByteUtils.bytesToLong((byte[]) ttpYang
-                                                                        .supportingTunnelTerminationPoint().get(0)
-                                                                        .tunnelTpRef()));
-            }
-
-            org.onosproject.tetopology.management.api.node.
-                TunnelTerminationPoint ttpTe = new
-                org.onosproject.tetopology.management.api.node.
-                DefaultTunnelTerminationPoint(ByteUtils.bytesToLong(ttpYang.tunnelTpId()),
-                                              switchingLayer,
-                                              encodingLayer,
-                                              flags,
-                                              interLayerLockList,
-                                              localLinkConnectivityList,
-                                              availAdaptBandwidth,
-                                              supportTtpKey);
-
-            ttpsMap.put(ByteUtils.bytesToLong(ttpYang.tunnelTpId()), ttpTe);
-        }
-
-        return ttpsMap;
-    }
-
-    private static TeNode yang2TeSubsystemNodeAugment(Te yangNodeAugTe,
-                                                      TeNodeId teNodeId,
-                                                      Network yangNetwork,
-                                                      Networks yangNetworks,
-                                                      Node yangNode,
-                                                      Map<KeyId, TerminationPoint> teTps) {
-
-
-        NodeId yangNodeId = yangNode.nodeId();
-
-        NetworkId yangNetworkId = yangNetwork.networkId();
-
-        long teNodeIdLong = Ip4Address.valueOf(teNodeId.dottedQuad().string()).toInt();
-
-        TeTopologyKey underlayTopologyIdId = null;
-
-        // FIXME: yang has a list of supporting nodes, but TeNode only has one
-        // supportTeNodeId. How ro retrieve providerId, clientId, topologyId, teNodeId?
-        TeNodeKey supportTeNodeId = null;
-//        supportTeNodeId = new TeNodeKey(providerId, clientId, topologyId, teNodeId)
-//        yangSupportNodes.get(0).
-
-        TeNodeKey sourceTeNodeId = null; //ignore
-        CommonNodeData teData = null;
-        Map<Long, ConnectivityMatrix> connMatrices = null;
-        Map<Long, org.onosproject.tetopology.management.api.node.TunnelTerminationPoint> ttps = null;
-        List<Long> teLinkIds = Lists.newArrayList();
-        List<Long> teTpIds = Lists.newArrayList();
-
-        // ********************************************** to find teLinkIds
-        // teLinkIds should be supposed to get from YANG Link and TP data.
-        // For now, assuming each teTp is sourcing a TE link .
-        if (MapUtils.isNotEmpty(teTps)) {
-            for (Map.Entry<KeyId, TerminationPoint> entry : teTps.entrySet()) {
-                if (entry.getValue().teTpId() != null) {
-                    teTpIds.add(entry.getValue().teTpId());
-                    teLinkIds.add(entry.getValue().teTpId());
-                }
-            }
-        }
-        // ********************************************** to find teTpIds
-//        if (yangNode.yangAugmentedInfoMap() != null
-//                && !yangNode.yangAugmentedInfoMap().isEmpty()) {
-//
-//            AugmentedNdNode yangTpNodeAugment = (AugmentedNdNode) yangNode
-//                    .yangAugmentedInfo(AugmentedNdNode.class);
-//
-//            if (yangTpNodeAugment.terminationPoint() != null) {
-//                for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology
-//                        .rev20151208.ietfnetworktopology.networks.network.node.augmentedndnode.TerminationPoint
-//                        yangTpnode : yangTpNodeAugment.terminationPoint()) {
-//                    teTpIds.add(Long.valueOf(yangTpnode.tpId().uri().string()));
-//                }
-//            }
-//        }
-        // **********************************************
-
-        Config ynodeAugCfg = yangNodeAugTe.config();
-
-        if (ynodeAugCfg != null) {
-            TeNodeAttributes teNodeAttr = ynodeAugCfg.teNodeAttributes();
-            if (teNodeAttr != null) {
-
-                if (teNodeAttr.underlayTopology() != null) {
-
-                    underlayTopologyIdId = yang2TeSubsystemNodeUnderlayTopology(teNodeAttr
-                            .underlayTopology(), yangNetworks);
-                }
-                BitSet flags = new BitSet();
-                if (teNodeAttr.isAbstract()) {
-                    flags.set(TeNode.BIT_ABSTRACT);
-                }
-                teData = new CommonNodeData(
-                                            null, // teNodeAttr.name().string(),
-                                            EnumConverter.yang2TeSubsystemAdminStatus(teNodeAttr.adminStatus()),
-                                            EnumConverter.yang2TeSubsystemOpStatus(yangNodeAugTe.state().operStatus()),
-                                            flags);
-
-//                if (teNodeAttr.connectivityMatrix() != null) {
-                if (teNodeAttr.connectivityMatrices() != null) {
-                    connMatrices = yang2TeSubsystemNodeConnectivityMatrix(yangNetworkId.uri().toString(),
-                                                                    yangNodeId.uri().toString(),
-                                                                    teNodeAttr.connectivityMatrices());
-                }
-
-            }
-        }
-
-        if (yangNodeAugTe.tunnelTerminationPoint() != null) {
-            ttps = yang2TeSubsystemTtp(yangNodeAugTe.tunnelTerminationPoint(),
-                                       yangNode,
-                                       yangNetworks);
-        }
-
-        TeNode teNode = new DefaultTeNode(teNodeIdLong,
-                                          underlayTopologyIdId,
-                                          supportTeNodeId,
-                                          sourceTeNodeId,
-                                          teData,
-                                          connMatrices,
-                                          teLinkIds,
-                                          ttps,
-                                          teTpIds);
-        return teNode;
-    }
-
-    private static Map<KeyId, TerminationPoint> yang2TeSubsystemTpNodeAugment(AugmentedNdNode yangTpNodeAugment) {
-        Map<KeyId, TerminationPoint> tps;
-        if (yangTpNodeAugment.terminationPoint() != null) {
-            tps = Maps.newHashMap();
-            for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology
-                    .rev20151208.ietfnetworktopology.networks.network.node.augmentedndnode.TerminationPoint
-                    yangTpnode : yangTpNodeAugment.terminationPoint()) {
-                tps.put(KeyId.keyId(yangTpnode.tpId().uri().toString()),
-                        TerminationPointConverter.yang2teSubsystemTerminationPoint(yangTpnode));
-            }
-            return tps;
-        }
-        return null;
-    }
-
-    /**
-     * Converts a TE Topology node event from the data format used in the core
-     * to its corresponding YANG Object (YO) format.
-     *
-     * @param eventType Node event type
-     * @param eventData  TE Topology node event data
-     * @return YANG Object converted from nodeData
-     */
-    public static TeNodeEvent teNetworkNode2yangTeNodeEvent(TeTopologyEventTypeEnum eventType,
-                                                            NetworkNodeEventSubject eventData) {
-        TeNodeEvent.TeNodeEventBuilder builder = new DefaultTeNodeEvent.TeNodeEventBuilder();
-
-        TeTopologyEventType yangEventType = new TeTopologyEventType(eventType);
-        builder.eventType(yangEventType);
-
-        NetworkId newtorkId = NetworkId.fromString(eventData.key().networkId().toString());
-        builder.networkRef(newtorkId);
-        NodeId nodeId = NodeId.fromString(eventData.key().nodeId().toString());
-        builder.nodeRef(nodeId);
-
-        NetworkNode node = eventData.neworkNode();
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.
-                rev20170110.ietftetopology.tenodeconfigattributesnotification.
-                TeNodeAttributes teNodeAttributes = node == null ? null
-                                                                 : teNode2YangTeNodeAttributes(node.teNode());
-        builder.teNodeAttributes(teNodeAttributes);
-
-        return builder.build();
-    }
-
-    private static org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.
-            ietf.te.topology.rev20170110.ietftetopology.
-            tenodeconfigattributesnotification.
-            TeNodeAttributes teNode2YangTeNodeAttributes(TeNode teNode) {
-
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.
-                rev20170110.ietftetopology.tenodeconfigattributesnotification.
-                TeNodeAttributes.TeNodeAttributesBuilder attrBuilder =
-                org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.
-                                rev20170110.ietftetopology.tenodeconfigattributesnotification.
-                        DefaultTeNodeAttributes.builder();
-
-        if (teNode.connectivityMatrices() != null) {
-
-            org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology
-            .tenodeconnectivitymatrixabs.DefaultConnectivityMatrix
-            .ConnectivityMatrixBuilder connectivityMatrixConfigBuilder = org.onosproject.yang.gen.v1.urn.ietf.
-                            params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrixabs.
-            DefaultConnectivityMatrix.builder();
-            for (Map.Entry<Long, ConnectivityMatrix> teCmEntry :
-                teNode.connectivityMatrices().entrySet()) {
-                connectivityMatrixConfigBuilder = connectivityMatrixConfigBuilder
-                        .id(teCmEntry.getKey())
-                        .isAllowed(!teCmEntry.getValue().flags()
-                                   .get(ConnectivityMatrix.BIT_DISALLOWED))
-                        .from(new org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-                              .ietftetopology.tenodeconnectivitymatrixabs.connectivitymatrix.DefaultFrom
-                              .FromBuilder() // TODO: for now, assuming that there is
-                                                            // only one 'from', and mergingList is empty
-                              .tpRef(teCmEntry.getValue().from())
-                                             .build())
-                        .to(new org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-                            .ietftetopology.tenodeconnectivitymatrixabs.connectivitymatrix
-                            .DefaultTo.ToBuilder() // TODO: for now, assuming that there is only
-                                                      // one item in constrainingElements list
-                              .tpRef(teCmEntry.getValue().constrainingElements().get(0))
-                                             .build());
-                attrBuilder = attrBuilder
-                        .addToConnectivityMatrix(connectivityMatrixConfigBuilder
-                                .build());
-            }
-        }
-
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.
-                rev20170110.ietftetopology.tenodeconfigattributesnotification.
-                TeNodeAttributes teNodeAttributes = attrBuilder.build();
-
-        return teNodeAttributes;
-    }
-
-    public static NetworkNodeKey yangNodeEvent2NetworkNodeKey(TeNodeEvent yangNodeEvent) {
-        NetworkId networkRef = NetworkId.fromString(yangNodeEvent.networkRef().toString());
-        NodeId nodeRef = NodeId.fromString(yangNodeEvent.nodeRef().toString());
-        KeyId networkId = KeyId.keyId(networkRef.uri().toString());
-        KeyId nodeId = KeyId.keyId(nodeRef.uri().toString());
-
-        NetworkNodeKey networkNodeKey = new NetworkNodeKey(networkId, nodeId);
-
-        return networkNodeKey;
-    }
-
-    /**
-     * Converts YangNode event to NetworkNode.
-     *
-     * @param yangNodeEvent yangNodeEvent
-     * @param teTopologyService teTopologyService
-     * @return NetworkNode
-     */
-    public static NetworkNode yangNodeEvent2NetworkNode(TeNodeEvent yangNodeEvent,
-                                                        TeTopologyService teTopologyService) {
-        KeyId networkNodeId = yangNodeEvent2NetworkNodeKey(yangNodeEvent).nodeId();
-
-        org.onosproject.tetopology.management.api.Network network = teTopologyService.network(
-                yangNodeEvent2NetworkNodeKey(yangNodeEvent).networkId());
-        if (network == null) {
-            return null;
-        }
-
-        NetworkNode networkNode = network.node(networkNodeId);
-        if (networkNode == null) {
-            return null;
-        }
-
-        List<NetworkNodeKey> supportingNodeIds = networkNode.supportingNodeIds();
-        Map<KeyId, TerminationPoint> tps = networkNode.terminationPoints();
-
-        TeNode teNode = networkNode.teNode();
-        if (teNode == null) {
-            return null;
-        }
-
-        TeNode updatedTeNode = yangNodeEvent2TeNode(yangNodeEvent, teNode);
-
-        NetworkNode updatedNetworkNode = new DefaultNetworkNode(networkNodeId, supportingNodeIds, updatedTeNode, tps);
-
-        return updatedNetworkNode;
-    }
-
-    private static TeNode yangNodeEvent2TeNode(TeNodeEvent yangNodeEvent, TeNode oldTeNode) {
-
-        long teNodeId = oldTeNode.teNodeId();
-        TeTopologyKey underlayTopoId = oldTeNode.underlayTeTopologyId();
-        TeNodeKey supportTeNodeId = oldTeNode.sourceTeNodeId();
-        TeNodeKey sourceTeNodeId = oldTeNode.sourceTeNodeId();
-        Map<Long, ConnectivityMatrix> connMatrices = oldTeNode.connectivityMatrices();
-        List<Long> teLinkIds = oldTeNode.teLinkIds();
-        Map<Long, org.onosproject.tetopology.management.
-                api.node.TunnelTerminationPoint> ttps = oldTeNode.tunnelTerminationPoints();
-        List<Long> teTpIds = oldTeNode.teLinkIds();
-        String name = oldTeNode.name();
-        TeStatus adminStatus = oldTeNode.adminStatus();
-        TeStatus opStatus = oldTeNode.opStatus();
-        BitSet flags = oldTeNode.flags();
-
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology
-                .tenodeconfigattributesnotification
-                .TeNodeAttributes yangTeNodeAttrs = yangNodeEvent.teNodeAttributes();
-
-        if (yangTeNodeAttrs != null) {
-            TeAdminStatus yangAdminStatus = yangTeNodeAttrs.adminStatus();
-            if (yangAdminStatus != null) {
-                adminStatus = EnumConverter.yang2TeSubsystemAdminStatus(yangAdminStatus);
-            }
-
-            BitSet yangFlags = yangTeNodeAttrs.selectLeafFlags();
-            if (yangFlags != null) {
-                flags = yangFlags;
-            }
-
-            List<org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.
-                    ietf.te.topology.rev20170110.ietftetopology
-                    .tenodeconnectivitymatrixabs.ConnectivityMatrix> yangConnMatrices = yangTeNodeAttrs
-                    .connectivityMatrix();
-            if (yangConnMatrices != null) {
-                for (org.onosproject.yang.gen.v1.
-                        urn.ietf.params.xml.ns.yang.
-                        ietf.te.topology
-                        .rev20170110.ietftetopology
-                        .tenodeconnectivitymatrixabs
-                        .ConnectivityMatrix yangConnMatrix : yangConnMatrices) {
-                    Long cmId = new Long(yangConnMatrix.id());
-                    ConnectivityMatrix oldConnMatrix = connMatrices.get(new Long(yangConnMatrix.id()));
-                    if (oldConnMatrix != null) {
-                        ConnectivityMatrix newConnMatrix = yangNodeEvent2TeConnectivityMatrix(yangConnMatrix,
-                                                                                              oldConnMatrix);
-                        connMatrices.remove(cmId);
-                        connMatrices.put(cmId, newConnMatrix);
-                    }
-                }
-            }
-        }
-
-        CommonNodeData teData = new CommonNodeData(name, adminStatus, opStatus, flags);
-        TeNode updatedTeNode = new DefaultTeNode(teNodeId, underlayTopoId, supportTeNodeId, sourceTeNodeId, teData,
-                                                 connMatrices, teLinkIds, ttps, teTpIds);
-
-        return updatedTeNode;
-    }
-
-    private static ConnectivityMatrix yangNodeEvent2TeConnectivityMatrix(org.onosproject.yang.gen.v1.
-                                                                         urn.ietf.params.xml.ns.yang.
-                                                                         ietf.te.topology
-            .rev20170110.ietftetopology
-                                                                         .tenodeconnectivitymatrixabs
-                                                                         .ConnectivityMatrix yangConnMatrix,
-                                                                 ConnectivityMatrix oldTeConnMatrix) {
-
-        long id = yangConnMatrix.id();
-        ElementType from = new TeLinkId((long) (yangConnMatrix.from().tpRef()));
-        UnderlayAbstractPath underlayPath = null;
-        List<ElementType> mergingList = Lists.newArrayList();
-
-        List<ElementType> constrainingElements = Lists.newArrayList();
-        ElementType to = new TeLinkId((long) (yangConnMatrix.to().tpRef()));
-        constrainingElements.add(to);
-
-        BitSet flags = oldTeConnMatrix.flags();
-
-        TePathAttributes teAttributes = oldTeConnMatrix.teAttributes();
-
-        ConnectivityMatrix updatedConnMatrix = new ConnectivityMatrix(id,
-                                                                      from,
-                                                                      mergingList,
-                                                                      constrainingElements,
-                                                                      flags,
-                                                                      teAttributes,
-                                                                      underlayPath);
-        return updatedConnMatrix;
-    }
-}
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/TerminationPointConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/TerminationPointConverter.java
deleted file mode 100644
index 1b4c099..0000000
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/TerminationPointConverter.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.teyang.utils.topology;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.List;
-
-import org.onosproject.tetopology.management.api.KeyId;
-import org.onosproject.tetopology.management.api.node.TerminationPointKey;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NetworkId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NodeId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.TpId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.node.augmentedndnode.DefaultTerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.node.augmentedndnode.TerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.node.augmentedndnode.terminationpoint
-                       .DefaultSupportingTerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.node.augmentedndnode.terminationpoint
-                       .SupportingTerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.interfaceswitchingcapabilitylist.DefaultInterfaceSwitchingCapability;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.interfaceswitchingcapabilitylist.InterfaceSwitchingCapability;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-               .ietftetopology.networks.network.node.terminationpoint.AugmentedNtTerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
-               .ietftetopology.networks.network.node.terminationpoint.DefaultAugmentedNtTerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkiscdattributes.DefaultMaxLspBandwidth;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkiscdattributes.MaxLspBandwidth;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.teterminationpointaugment.DefaultTe;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.teterminationpointaugment.DefaultTe.TeBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.teterminationpointaugment.te.Config;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.teterminationpointaugment.te.DefaultConfig;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.teterminationpointaugment.te.DefaultState;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.teterminationpointaugment.te.State;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeTpId;
-
-import com.google.common.collect.Lists;
-
-/**
- * The termination point translations.
- */
-public final class TerminationPointConverter {
-
-    private static final String E_NULL_TE_SUBSYSTEM_TP =
-            "TeSubsystem terminationPoint object cannot be null";
-    private static final String E_NULL_YANG_TP =
-            "YANG terminationPoint object cannot be null";
-
-    // no instantiation
-    private TerminationPointConverter() {
-    }
-
-    /**
-     * TerminationPoint object translation from TE Topology subsystem to YANG.
-     *
-     * @param teSubsystem TE Topology subsystem termination point
-     * @return Termination point in YANG Java data structure
-     */
-    public static TerminationPoint teSubsystem2YangTerminationPoint(org.onosproject.tetopology.management.api.node.
-                                                                    TerminationPoint teSubsystem) {
-        checkNotNull(teSubsystem, E_NULL_TE_SUBSYSTEM_TP);
-
-        TpId tpId = TpId.fromString(teSubsystem.tpId().toString());
-//        TpId tpId = TpId.fromString("0");
-        TerminationPoint.TerminationPointBuilder builder =
-                new DefaultTerminationPoint.TerminationPointBuilder().tpId(tpId);
-
-        if (teSubsystem.supportingTpIds() != null) {
-            List<SupportingTerminationPoint> tps = Lists.newArrayList();
-            SupportingTerminationPoint.SupportingTerminationPointBuilder
-                    spTpBuilder = DefaultSupportingTerminationPoint.builder();
-            for (TerminationPointKey tpKey : teSubsystem.supportingTpIds()) {
-                tps.add(spTpBuilder.networkRef(NetworkId.fromString(tpKey.networkId().toString()))
-                                   .nodeRef(NodeId.fromString(tpKey.nodeId().toString()))
-                                   .tpRef(TpId.fromString(tpKey.tpId().toString()))
-                                   .build());
-            }
-            builder = builder.supportingTerminationPoint(tps);
-        }
-
-        if (teSubsystem.teTpId() != null) {
-            AugmentedNtTerminationPoint.AugmentedNtTerminationPointBuilder
-                    tpAugmentBuilder = DefaultAugmentedNtTerminationPoint.builder();
-            tpAugmentBuilder.teTpId(TeTpId.fromString((String.valueOf(teSubsystem.teTpId()))));
-            TeBuilder yangTeBuilder = DefaultTe.builder();
-
-//            Config yConfig = teSubsystem2YangTeAugConfig(teSubsystem);
-//            yangTeBuilder = yangTeBuilder.config(yConfig);
-//
-//            State yState = teSubsystem2YangTeAugState(teSubsystem);
-//            yangTeBuilder = yangTeBuilder.state(yState);
-
-            tpAugmentBuilder = tpAugmentBuilder.te(yangTeBuilder.build());
-            builder.addYangAugmentedInfo(tpAugmentBuilder.build(), AugmentedNtTerminationPoint.class);
-        }
-
-        return builder.build();
-    }
-
-    private static State teSubsystem2YangTeAugState(org.onosproject.tetopology.management.api.node.
-            TerminationPoint teSubsystemTe) {
-        State.StateBuilder yangStateBuilder = DefaultState.builder();
-        // FIXME: interLayerLocks is a list in core but not in yang
-//        yangStateBuilder = yangStateBuilder.interLayerLockId(teLink.interLayerLocks().get(0));
-
-        return yangStateBuilder.build();
-    }
-
-    private static Config teSubsystem2YangTeAugConfig(org.onosproject.tetopology.management.api.node.
-                                                      TerminationPoint teSubsystemTe) {
-        Config.ConfigBuilder yangConfigBuilder = DefaultConfig.builder();
-        //FIXME: interLayerLocks is a list in core but not in yang
-        // yangConfigBuilder =
-        // yangConfigBuilder.interLayerLockId(teLink.interLayerLocks().get(0));
-
-        InterfaceSwitchingCapability.InterfaceSwitchingCapabilityBuilder isc =
-                DefaultInterfaceSwitchingCapability.builder();
-
-        MaxLspBandwidth.MaxLspBandwidthBuilder maxlspBW = DefaultMaxLspBandwidth
-                .builder();
-//        for (float f : teLink.maxAvialLspBandwidth()) {
-//            // is converting from float to long ok?
-//            maxlspBW = maxlspBW.bandwidth(BigDecimal.valueOf((long) f));
-//            isc = isc.addToMaxLspBandwidth(maxlspBW.build());
-//        }
-
-        yangConfigBuilder = yangConfigBuilder.addToInterfaceSwitchingCapability(isc.build());
-
-        return yangConfigBuilder.build();
-    }
-
-    /**
-     * TerminationPoint object translation from YANG to TE Topology subsystem.
-     *
-     * @param yangTp Termination point in YANG Java data structure
-     * @return TerminationPoint TE Topology subsystem termination point
-     */
-    public static org.onosproject.tetopology.management.api.node.TerminationPoint
-                      yang2teSubsystemTerminationPoint(TerminationPoint yangTp) {
-        checkNotNull(yangTp, E_NULL_YANG_TP);
-
-        org.onosproject.tetopology.management.api.node.DefaultTerminationPoint tp = null;
-        List<org.onosproject.tetopology.management.api.node.TerminationPointKey> spTps = null;
-        KeyId teTpId = null;
-
-        if (yangTp.supportingTerminationPoint() != null) {
-            spTps = Lists.newArrayList();
-            for (SupportingTerminationPoint yangSptp : yangTp.supportingTerminationPoint()) {
-                org.onosproject.tetopology.management.api.node.TerminationPointKey tpKey =
-                        new org.onosproject.tetopology.management.api.node.TerminationPointKey(
-                                KeyId.keyId(yangSptp.networkRef().uri().string()),
-                                KeyId.keyId(yangSptp.nodeRef().uri().string()),
-                                KeyId.keyId(yangSptp.tpRef().uri().string()));
-                spTps.add(tpKey);
-            }
-        }
-
-        if (yangTp.yangAugmentedInfoMap() != null && !yangTp.yangAugmentedInfoMap().isEmpty()) {
-            AugmentedNtTerminationPoint yangTpAugment =
-                    (AugmentedNtTerminationPoint) yangTp.yangAugmentedInfo(AugmentedNtTerminationPoint.class);
-            if (yangTpAugment.teTpId() != null) {
-                teTpId = KeyId.keyId(yangTpAugment.teTpId().toString());
-            }
-        }
-
-        tp = new org.onosproject.tetopology.management.api.node
-                .DefaultTerminationPoint(KeyId.keyId(yangTp.tpId().uri().string()),
-                                         spTps,
-                                         teTpId == null ? null : Long.valueOf(teTpId.toString()));
-        return tp;
-    }
-
-}
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/package-info.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/package-info.java
deleted file mode 100644
index 69a994d..0000000
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.
- */
-/**
- * The utilities for conversions between TE Topology core subsystem and
- * IETF TE Topology Yang generated Java code.
- */
-package org.onosproject.teyang.utils.topology;
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/BasicConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/BasicConverter.java
deleted file mode 100644
index f946460..0000000
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/BasicConverter.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.teyang.utils.tunnel;
-
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ietfinettypes.IpAddress;
-
-/**
- * Basic converter tools for ietf NBI &amp; SBI.
- */
-public abstract class BasicConverter {
-
-    //no instantiation
-    private BasicConverter() {
-
-    }
-
-    /**
-     * Converts a long value to IpAddress.
-     *
-     * @param value long value
-     * @return ip address
-     */
-    static IpAddress longToIp(long value) {
-        StringBuilder sb = new StringBuilder();
-        sb.append((value >> 24) & 0xFF).append(".");
-        sb.append((value >> 16) & 0xFF).append(".");
-        sb.append((value >> 8) & 0xFF).append(".");
-        sb.append(value & 0xFF);
-        return IpAddress.fromString(sb.toString());
-    }
-
-    /**
-     * Converts a long value to byte array.
-     *
-     * @param value long value
-     * @return byte array
-     */
-    static byte[] longToByte(long value) {
-        long temp = value;
-        byte[] b = new byte[8];
-        for (int i = 0; i < b.length; i++) {
-            b[i] = new Long(temp & 0xff).byteValue();
-            temp = temp >> 8;
-        }
-        return b;
-    }
-
-    /**
-     * Converts a IP address to long value.
-     *
-     * @param ipAddress IP address
-     * @return long value
-     */
-    static long ipToLong(IpAddress ipAddress) {
-        long[] ip = new long[4];
-        String strIp = ipAddress.toString();
-        int position1 = strIp.indexOf(".");
-        int position2 = strIp.indexOf(".", position1 + 1);
-        int position3 = strIp.indexOf(".", position2 + 1);
-        ip[0] = Long.parseLong(strIp.substring(0, position1));
-        ip[1] = Long.parseLong(strIp.substring(position1 + 1, position2));
-        ip[2] = Long.parseLong(strIp.substring(position2 + 1, position3));
-        ip[3] = Long.parseLong(strIp.substring(position3 + 1));
-        return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3];
-    }
-
-    /**
-     * Converts byte array to long value.
-     *
-     * @param bytes byte array
-     * @return long value
-     */
-    static long bytesToLong(byte[] bytes) {
-        return ((long) bytes[7] & 255L) << 56 |
-                ((long) bytes[6] & 255L) << 48 |
-                ((long) bytes[5] & 255L) << 40 |
-                ((long) bytes[4] & 255L) << 32 |
-                ((long) bytes[3] & 255L) << 24 |
-                ((long) bytes[2] & 255L) << 16 |
-                ((long) bytes[1] & 255L) << 8 |
-                (long) bytes[0] & 255L;
-    }
-}
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/TunnelConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/TunnelConverter.java
deleted file mode 100644
index 9113e3f..0000000
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/TunnelConverter.java
+++ /dev/null
@@ -1,479 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.teyang.utils.tunnel;
-
-import com.google.common.collect.Lists;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-import org.onosproject.tetunnel.api.tunnel.DefaultTeTunnel;
-import org.onosproject.tetunnel.api.tunnel.TeTunnel;
-import org.onosproject.tetunnel.api.tunnel.TeTunnelKey;
-import org.onosproject.tetunnel.api.tunnel.path.DefaultTePath;
-import org.onosproject.tetunnel.api.tunnel.path.DefaultTeRouteUnnumberedLink;
-import org.onosproject.tetunnel.api.tunnel.path.TePath;
-import org.onosproject.tetunnel.api.tunnel.path.TeRouteSubobject;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.IetfTe;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.IetfTeOpParam;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.DefaultTe;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.Te;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.Type;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.DefaultDynamic;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.DefaultExplicit;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.explicit.DefaultExplicitRouteObjects;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.explicit.ExplicitRouteObjects;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.Config;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.DefaultPrimaryPaths;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.DefaultState;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.PrimaryPaths;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.State;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.DefaultTunnels;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.Tunnels;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.tunnels.DefaultTunnel;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.tunnels.Tunnel;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProt1Forn;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtBidir1To1;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtReroute;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtRerouteExtra;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtType;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtUnidir1To1;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtUnprotected;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.PathSignalingRsvpte;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.PathSignalingSr;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.RouteIncludeEro;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.StateDown;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.StateUp;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TunnelP2Mp;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TunnelP2p;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TunnelType;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.DefaultUnnumberedLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.UnnumberedLink;
-import org.slf4j.Logger;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static com.google.common.base.Strings.isNullOrEmpty;
-import static org.onlab.packet.ONOSLLDP.DEFAULT_NAME;
-import static org.onosproject.tetunnel.api.tunnel.TeTunnel.LspProtectionType;
-import static org.onosproject.tetunnel.api.tunnel.path.TeRouteSubobject.Type.UNNUMBERED_LINK;
-import static org.onosproject.teyang.utils.tunnel.BasicConverter.bytesToLong;
-import static org.onosproject.teyang.utils.tunnel.BasicConverter.ipToLong;
-import static org.onosproject.teyang.utils.tunnel.BasicConverter.longToByte;
-import static org.onosproject.teyang.utils.tunnel.BasicConverter.longToIp;
-import static org.slf4j.LoggerFactory.getLogger;
-
-
-/**
- * Tunnel convert utils.
- */
-public final class TunnelConverter {
-
-    private static final Logger log = getLogger(TunnelConverter.class);
-    private static final String DEFAULT_PATH_NAME = "ietfPath";
-    private static final String DEFAULT_PATH_CONSTRAINT = "ietfPath";
-    private static final int DEFAULT_PATH_PREFERENCE = 1;
-    private static final boolean DEFAULT_CSPF_STATE = true;
-    private static final boolean DEFAULT_LOCKDOWN_STATE = true;
-
-    // no instantiation
-    private TunnelConverter() {
-    }
-
-    /**
-     * Build a general IETF TE object with a giving tunnel list. for there are
-     * many kind of attributes in IETF TE, now we only care about the tunnel
-     * attributes.
-     *
-     * @param tunnels tunnels in the TE network
-     * @return IETF te info in the TE network
-     */
-    public static IetfTe buildIetfTeWithTunnels(List<Tunnel> tunnels) {
-        Tunnels teTunnels = new DefaultTunnels
-                .TunnelsBuilder()
-                .tunnel(tunnels)
-                .build();
-        Te te = new DefaultTe
-                .TeBuilder()
-                .tunnels(teTunnels)
-                .build();
-        return new IetfTeOpParam
-                .IetfTeBuilder()
-                .te(te)
-                .yangIetfTeOpType(IetfTe.OnosYangOpType.NONE)
-                .build();
-    }
-
-    public static IetfTe buildIetfTe(TeTunnel teTunnel, boolean isConfig) {
-        Tunnel tunnel = te2YangTunnelConverter(teTunnel, isConfig);
-        return buildIetfTeWithTunnels(Lists.newArrayList(tunnel));
-    }
-
-    /**
-     * Converts a specific te tunnel defined in the APP to the general te tunnel
-     * defined in YANG model.
-     *
-     * @param tunnel te tunnel defined in APP
-     * @param isConfig true if tunnel is to be built with config attributes;
-     *                 false if built with state attributes
-     * @return tunnel defined in YANG model
-     */
-    public static Tunnel te2YangTunnelConverter(TeTunnel tunnel, boolean isConfig) {
-        List<PrimaryPaths> pathsList = new ArrayList<>();
-
-        if (tunnel.primaryPaths() != null) {
-            tunnel.primaryPaths()
-                    .forEach(tePath -> pathsList.add(te2YangPrimaryPath(tePath)));
-        }
-
-        tunnel.primaryPaths()
-                .forEach(tePath -> pathsList.add(te2YangPrimaryPath(tePath)));
-
-        Tunnel.TunnelBuilder builder = new DefaultTunnel
-                .TunnelBuilder()
-                .type(te2YangTunnelType(tunnel.type()))
-                .name(validName(tunnel.name()))
-                .identifier(tunnel.teTunnelKey().teTunnelId())
-                .state(te2YangTunnelState(tunnel))
-                .primaryPaths(pathsList);
-        Tunnel.TunnelBuilder tunnelBuilder = isConfig ?
-                builder.config(te2YangTunnelConfig(tunnel)) :
-                builder.state(te2YangTunnelState(tunnel));
-
-        return tunnelBuilder.build();
-    }
-
-    private static State te2YangTunnelState(TeTunnel tunnel) {
-        State.StateBuilder stateBuilder = new DefaultState.StateBuilder();
-        stateBuilder.name(validName(tunnel.name()))
-                .identifier((int) tunnel.teTunnelKey().teTunnelId())
-                .source((longToIp(tunnel.srcNode().teNodeId())))
-                .destination((longToIp(tunnel.dstNode().teNodeId())))
-                .srcTpId(longToByte(tunnel.srcTp().ttpId()))
-                .dstTpId(longToByte(tunnel.dstTp().ttpId()))
-                .adminStatus(te2YangStateType(tunnel.adminStatus()))
-                .lspProtectionType(
-                        te2YangProtectionType(tunnel.lspProtectionType()))
-                .type(te2YangTunnelType(tunnel.type()))
-                .build();
-        return stateBuilder.build();
-    }
-
-    private static Config te2YangTunnelConfig(TeTunnel tunnel) {
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.
-                rev20160705.ietfte.tunnelproperties.DefaultConfig.ConfigBuilder
-                configBuilder = new org.onosproject.yang.gen.v1.urn.ietf.params.
-                xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.
-                DefaultConfig.ConfigBuilder();
-
-        configBuilder.name(validName(tunnel.name()))
-                .identifier((int) tunnel.teTunnelKey().teTunnelId())
-                .source((longToIp(tunnel.srcNode().teNodeId())))
-                .destination((longToIp(tunnel.dstNode().teNodeId())))
-                .srcTpId(longToByte(tunnel.srcTp().ttpId()))
-                .dstTpId(longToByte(tunnel.dstTp().ttpId()))
-                .adminStatus(te2YangStateType(tunnel.adminStatus()))
-                .lspProtectionType(
-                        te2YangProtectionType(tunnel.lspProtectionType()))
-                .type(te2YangTunnelType(tunnel.type()))
-                .build();
-        return configBuilder.build();
-    }
-
-    private static String validName(String name) {
-        //for name is a required attribute, here we give a default name if not
-        //configured
-        return isNullOrEmpty(name) ? DEFAULT_NAME : name;
-    }
-
-    private static PrimaryPaths te2YangPrimaryPath(TePath tePath) {
-        DefaultPrimaryPaths.PrimaryPathsBuilder builder = new DefaultPrimaryPaths
-                .PrimaryPathsBuilder()
-                .name(DEFAULT_PATH_NAME)
-                .preference(DEFAULT_PATH_PREFERENCE)
-                .state(te2YangPrimaryPathState(tePath))
-                .yangPrimaryPathsOpType(IetfTe.OnosYangOpType.NONE);
-        return builder.build();
-    }
-
-    private static org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
-            .te.rev20160705.ietfte.p2pprimarypathparams.State
-    te2YangPrimaryPathState(TePath tePath) {
-
-        List<TeRouteSubobject> teRouteSubobjects = tePath.explicitRoute();
-
-        List<ExplicitRouteObjects> routeObjects = new ArrayList<>();
-        teRouteSubobjects.forEach(teRouteSubobject -> {
-            routeObjects.add(te2YangRouteSubobject(teRouteSubobject));
-        });
-        DefaultExplicit.ExplicitBuilder explicitBuilder =
-                DefaultExplicit.builder().explicitRouteObjects(routeObjects);
-
-        return new org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.
-                te.rev20160705.ietfte.p2pprimarypathparams.DefaultState
-                .StateBuilder()
-                .type(explicitBuilder.build())
-                .pathNamedConstraint(DEFAULT_PATH_CONSTRAINT)
-                .noCspf(DEFAULT_CSPF_STATE)
-                .lockdown(DEFAULT_LOCKDOWN_STATE)
-                .build();
-    }
-
-    private static ExplicitRouteObjects
-    te2YangRouteSubobject(TeRouteSubobject routeSubobject) {
-
-        TeRouteSubobject.Type type = routeSubobject.type();
-        UnnumberedLink yanglink = null;
-        //TODO implement other kind of TeRouteSubobject type
-        if (type == UNNUMBERED_LINK) {
-            DefaultTeRouteUnnumberedLink unnumberedLink =
-                    (DefaultTeRouteUnnumberedLink) routeSubobject;
-            TeNodeKey nodeKey = unnumberedLink.node();
-            TtpKey ttpKey = unnumberedLink.ttp();
-
-            yanglink = DefaultUnnumberedLink.builder()
-                    .routerId(longToIp(nodeKey.teNodeId()))
-                    .interfaceId(ttpKey.ttpId())
-                    .build();
-
-        }
-
-        //TODO implement other kind of explicitRoute usage type
-        return DefaultExplicitRouteObjects.builder()
-                .type(yanglink)
-                .explicitRouteUsage(RouteIncludeEro.class)
-                .build();
-    }
-
-    /**
-     * Converts a YANG TE tunnel defined in the YANG model to a specific TE
-     * tunnel defined in the TE tunnel APP.
-     *
-     * @param tunnel      yang tunnel object
-     * @param topologyKey key of the TE topology to which this tunnel belongs
-     * @return default Te tunnel defined in TE tunnel APP
-     */
-    public static DefaultTeTunnel yang2TeTunnel(org.onosproject.yang.gen.v1.
-                                                        urn.ietf.params.xml.
-                                                        ns.yang.ietf.te.
-                                                        rev20160705.ietfte.
-                                                        tunnelsgrouping.
-                                                        tunnels.Tunnel
-                                                        tunnel,
-                                                TeTopologyKey topologyKey) {
-        //get config info
-        Config config = tunnel.config();
-
-        //build basic attribute, node and ttp
-        TeNodeKey srcNodeKey = new TeNodeKey(topologyKey, ipToLong(config.source()));
-        TeNodeKey dstNodeKey = new TeNodeKey(topologyKey, ipToLong(config.destination()));
-
-        TtpKey srcTtpKey = new TtpKey(srcNodeKey, bytesToLong(config.srcTpId()));
-        TtpKey dstTtpKey = new TtpKey(srcNodeKey, bytesToLong(config.dstTpId()));
-
-        //check if paths have been set
-        List<PrimaryPaths> primaryPaths = tunnel.primaryPaths();
-        List<TePath> paths = new ArrayList<>();
-        primaryPaths.forEach(primaryPath -> paths.add(
-                yang2TePrimaryPaths(primaryPath, topologyKey)));
-
-        //build the te tunnel
-        DefaultTeTunnel.Builder builder = new DefaultTeTunnel.Builder();
-
-        return builder.teTunnelKey(new TeTunnelKey(topologyKey, config.identifier()))
-                .name(config.name())
-                .type(yang2TeTunnelType(config.type()))
-                .lspProtectionType(yang2TeProtectionType(config.lspProtectionType()))
-                .adminState(yang2TeStateType(config.adminStatus()))
-                .srcNode(srcNodeKey)
-                .dstNode(dstNodeKey)
-                .srcTp(srcTtpKey)
-                .dstTp(dstTtpKey)
-                .primaryPaths(paths).build();
-    }
-
-    private static TePath yang2TePrimaryPaths(PrimaryPaths primaryPath,
-                                              TeTopologyKey topologyKey) {
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.
-                rev20160705.ietfte.p2pprimarypathparams.Config
-                pathConfig = primaryPath.config();
-
-        TePath tePath;
-        TePath.Type tePathType = null;
-        Type type = pathConfig.type();
-
-        if (type == null) {
-            return new DefaultTePath(TePath.Type.DYNAMIC,
-                                     Lists.newArrayList(),
-                                     Lists.newArrayList(),
-                                     Lists.newArrayList());
-        }
-
-        Class<? extends Type> typeClass = type.getClass();
-
-        List<TeRouteSubobject> routeSubobjects = new ArrayList<>();
-
-        if (typeClass.isAssignableFrom(DefaultExplicit.class)) {
-            DefaultExplicit explicitPath = (DefaultExplicit) type;
-            explicitPath
-                    .explicitRouteObjects()
-                    .forEach(o -> routeSubobjects.add(
-                            yang2TeRouteSubobject(o, topologyKey)));
-            tePathType = TePath.Type.EXPLICIT;
-
-        } else if (typeClass.isAssignableFrom(DefaultDynamic.class)) {
-            tePathType = TePath.Type.DYNAMIC;
-        }
-
-        tePath = new DefaultTePath(tePathType,
-                                   Lists.newArrayList(),
-                                   routeSubobjects,
-                                   Lists.newArrayList());
-        return tePath;
-    }
-
-    private static TeRouteSubobject
-    yang2TeRouteSubobject(ExplicitRouteObjects routeObject,
-                          TeTopologyKey topologyKey) {
-
-        //TODO implement other types of route type
-        DefaultUnnumberedLink type = (DefaultUnnumberedLink) routeObject.type();
-        TeNodeKey nodeKey = new TeNodeKey(topologyKey, ipToLong(type.routerId()));
-        TtpKey tpId = new TtpKey(nodeKey, type.interfaceId());
-        return new DefaultTeRouteUnnumberedLink(nodeKey, tpId);
-    }
-
-    private static TeTunnel.Type yang2TeTunnelType(Class type) {
-        TeTunnel.Type tunnelType = null;
-        if (type.isAssignableFrom(TunnelP2Mp.class)) {
-            tunnelType = TeTunnel.Type.P2MP;
-        } else if (type.isAssignableFrom(TunnelP2p.class)) {
-            tunnelType = TeTunnel.Type.P2P;
-        } else if (type.isAssignableFrom(PathSignalingRsvpte.class)) {
-            tunnelType = TeTunnel.Type.PATH_SIGNALING_RSVPTE;
-        } else if (type.isAssignableFrom(PathSignalingSr.class)) {
-            tunnelType = TeTunnel.Type.PATH_SIGNALING_SR;
-        }
-        return tunnelType;
-    }
-
-
-    private static Class<? extends TunnelType> te2YangTunnelType(TeTunnel.Type type) {
-        Class<? extends TunnelType> tunnelType = null;
-        switch (type) {
-
-            case P2P:
-                tunnelType = TunnelP2p.class;
-                break;
-            case P2MP:
-                tunnelType = TunnelP2Mp.class;
-                break;
-            case PATH_SIGNALING_RSVPTE:
-                tunnelType = PathSignalingRsvpte.class;
-
-                break;
-            case PATH_SIGNALING_SR:
-                tunnelType = PathSignalingSr.class;
-                break;
-            default:
-                log.error("Unknown te tunnel type {}", type.toString());
-        }
-        return tunnelType;
-    }
-
-    private static LspProtectionType
-    yang2TeProtectionType(Class<? extends LspProtType> protType) {
-        LspProtectionType type = null;
-        if (protType.isAssignableFrom(LspProt1Forn.class)) {
-            type = LspProtectionType.LSP_PROT_1_FOR_N;
-        } else if (protType.isAssignableFrom(LspProtBidir1To1.class)) {
-            type = LspProtectionType.LSP_PROT_BIDIR_1_TO_1;
-        } else if (protType.isAssignableFrom(LspProtReroute.class)) {
-            type = LspProtectionType.LSP_PROT_REROUTE;
-        } else if (protType.isAssignableFrom(LspProtRerouteExtra.class)) {
-            type = LspProtectionType.LSP_PROT_REROUTE_EXTRA;
-        } else if (protType.isAssignableFrom(LspProtUnidir1To1.class)) {
-            type = LspProtectionType.LSP_PROT_UNIDIR_1_TO_1;
-        } else if (protType.isAssignableFrom(LspProtUnprotected.class)) {
-            type = LspProtectionType.LSP_PROT_UNPROTECTED;
-        }
-        return type;
-    }
-
-    private static Class<? extends LspProtType>
-    te2YangProtectionType(LspProtectionType protType) {
-        Class<? extends LspProtType> type = null;
-        switch (protType) {
-
-            case LSP_PROT_UNPROTECTED:
-                type = LspProtUnprotected.class;
-                break;
-            case LSP_PROT_REROUTE:
-                type = LspProtReroute.class;
-                break;
-            case LSP_PROT_REROUTE_EXTRA:
-                type = LspProtRerouteExtra.class;
-                break;
-            case LSP_PROT_UNIDIR_1_TO_1:
-                type = LspProtUnidir1To1.class;
-                break;
-            case LSP_PROT_BIDIR_1_TO_1:
-                type = LspProtBidir1To1.class;
-                break;
-            case LSP_PROT_1_FOR_N:
-                type = LspProt1Forn.class;
-                break;
-            default:
-                log.error("Unknown te tunnel type {}", protType.toString());
-        }
-        return type;
-    }
-
-    private static TeTunnel.State
-    yang2TeStateType(Class<? extends org.onosproject.yang.gen.v1.urn.ietf.
-            params.xml.ns.yang.ietf.te.types.
-            rev20160705.ietftetypes.StateType> stateType) {
-        TeTunnel.State teStateType = null;
-        if (stateType.isAssignableFrom(StateUp.class)) {
-            teStateType = TeTunnel.State.UP;
-        } else if (stateType.isAssignableFrom(StateDown.class)) {
-            teStateType = TeTunnel.State.DOWN;
-        }
-        return teStateType;
-    }
-
-    private static Class<? extends org.onosproject.yang.gen.v1.urn.ietf.params.
-            xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.StateType>
-    te2YangStateType(TeTunnel.State stateType) {
-        Class<? extends org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.
-                ietf.te.types.rev20160705.ietftetypes.StateType> state = null;
-
-        switch (stateType) {
-
-            case DOWN:
-                state = StateDown.class;
-                break;
-            case UP:
-                state = StateUp.class;
-                break;
-            default:
-                log.error("Unknown te tunnel type {}", stateType.toString());
-
-        }
-        return state;
-    }
-}
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/package-info.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/package-info.java
deleted file mode 100644
index f724c86..0000000
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * The utilities for conversions between TE tunnel APP and IETF TE tunnel Yang
- * generated Java code.
- */
-package org.onosproject.teyang.utils.tunnel;
\ No newline at end of file
diff --git a/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/ConverterTest.java b/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/ConverterTest.java
deleted file mode 100644
index e65d4c8..0000000
--- a/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/ConverterTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.teyang.utils.topology;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.Network;
-
-
-/**
- * Unit tests for converter functions.
- */
-public class ConverterTest {
-
-    Network output;
-
-    @Before
-    public void setUp() {
-        /*
-        output = NetworkConverter.teSubsystem2YangNetwork(
-                        DefaultBuilder.sampleTeSubsystemNetworkBuilder(),
-                        OperationType.NONE);
-        */
-    }
-
-    @Test
-    public void basics() {
-        //TODO: re-enable UT in the fallowing submission
-        /*
-        assertEquals("Wrong networkId",
-                     output.networkId().uri().string(),
-                     "HUAWEI_NETWORK_NEW");
-        assertEquals("Wrong 1st nodeId",
-                     output.node().get(0).nodeId().uri().string(),
-                     "HUAWEI_ROADM_1");
-        assertEquals("Wrong 2dn nodeId",
-                     output.node().get(1).nodeId().uri().string(),
-                     "HUAWEI_ROADM_2");
-        AugmentedNwNode augmentedNode = (AugmentedNwNode) output.node().get(0)
-                .yangAugmentedInfo(AugmentedNwNode.class);
-
-        assertEquals("Wrong adminStatus",
-                     augmentedNode.te().config().teNodeAttributes().adminStatus(),
-                     TeAdminStatus.of(TeAdminStatusEnum.UP));
-       */
-    }
-
-}
diff --git a/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/DefaultBuilder.java b/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/DefaultBuilder.java
deleted file mode 100644
index 5693133..0000000
--- a/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/DefaultBuilder.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.teyang.utils.topology;
-
-import org.onosproject.tetopology.management.api.Network;
-import org.onosproject.tetopology.management.api.Networks;
-
-/**
- * Builds a sample Topology, which consists of two Nodes, one link,
- * and each node has two termination points.
- */
-public final class DefaultBuilder {
-
-    private static final String HUAWEI_NETWORK_NEW = "HUAWEI_NETWORK_NEW";
-    private static final String HUAWEI_ROADM_1 = "HUAWEI_ROADM_1";
-    private static final String CLIENT1_NODE1 = "CLIENT1_NODE1";
-    private static final String LINE1_NODE1 = "LINE1_NODE1";
-    private static final String NODE1_IP = "10.11.12.33";
-    private static final String HUAWEI_ROADM_2 = "HUAWEI_ROADM_2";
-    private static final String CLIENT1_NODE2 = "CLIENT1_NODE2";
-    private static final String LINE1_NODE2 = "LINE1_NODE2";
-    private static final String NODE2_IP = "10.11.12.34";
-    private static final String LINK1FORNETWORK1 = "LINK1FORNETWORK1";
-    private static final String HUAWEI_TE_TOPOLOGY_NEW = "HUAWEI_TE_TOPOLOGY_NEW";
-
-    // no instantiation
-    private DefaultBuilder() {
-    }
-
-    /**
-     * Returns a sample TeSubsystem Networks object.
-     *
-     * @return the Networks object
-     */
-    public static Networks sampleTeSubsystemNetworksBuilder() {
-        //TODO: implementation will be submitted as a separate review.
-        return null;
-    }
-
-    /**
-     * Returns a sample TeSubsystem Network object.
-     *
-     * @return the Network object
-     */
-    public static Network sampleTeSubsystemNetworkBuilder() {
-        //TODO: implementation will be submitted as a separate review.
-        return null;
-    }
-}
diff --git a/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/package-info.java b/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/package-info.java
deleted file mode 100644
index 596419a..0000000
--- a/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.
- */
-/**
- * The topology utilities test functions.
- *
- */
-package org.onosproject.teyang.utils.topology;
diff --git a/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/tunnel/BasicConverterTest.java b/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/tunnel/BasicConverterTest.java
deleted file mode 100644
index a927649..0000000
--- a/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/tunnel/BasicConverterTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.teyang.utils.tunnel;
-
-import org.junit.Test;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ietfinettypes.IpAddress;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-
-/**
- * Test of the basic converter tools.
- */
-public class BasicConverterTest {
-    private byte[] bytes1 = new byte[]{1, 1, 1, 1, 0, 0, 0, 0};
-    private byte[] bytes2 = new byte[]{2, 2, 2, 2, 0, 0, 0, 0};
-    private byte[] bytes3 = new byte[]{2, 0, 0, 0, 0, 0, 0, 0};
-    private IpAddress ip1 = IpAddress.fromString("1.1.1.1");
-    private IpAddress ip2 = IpAddress.fromString("2.2.2.2");
-    private long longNum1 = 16843009;
-    private long longNum2 = 33686018;
-    private static final String CVT_F = "Convert failed: ";
-
-
-    @Test
-    public void longToIp() throws Exception {
-        assertEquals(CVT_F + "longToIp", ip1, BasicConverter.longToIp(longNum1));
-        assertEquals(CVT_F + "longToIp", ip2, BasicConverter.longToIp(longNum2));
-    }
-
-    @Test
-    public void longToByte() throws Exception {
-        assertArrayEquals(CVT_F + "longToByte", bytes1,
-                          BasicConverter.longToByte(longNum1));
-        assertArrayEquals(CVT_F + "longToByte", bytes2,
-                          BasicConverter.longToByte(longNum2));
-    }
-
-    @Test
-    public void ipToLong() throws Exception {
-        assertEquals(CVT_F + "ipToLong", longNum1, BasicConverter.ipToLong(ip1));
-        assertEquals(CVT_F + "ipToLong", longNum2, BasicConverter.ipToLong(ip2));
-    }
-
-    @Test
-    public void bytesToLong() throws Exception {
-        assertEquals(CVT_F + "bytesToLong", longNum1,
-                     BasicConverter.bytesToLong(bytes1));
-        assertEquals(CVT_F + "bytesToLong", longNum2,
-                     BasicConverter.bytesToLong(bytes2));
-
-        assertEquals(CVT_F + "bytesToLong", 2,
-                     BasicConverter.bytesToLong(bytes3));
-    }
-}
\ No newline at end of file
diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-inet-types.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-inet-types.yang
deleted file mode 100644
index 5388b03..0000000
--- a/apps/tenbi/yangmodel/src/main/yang/ietf-inet-types.yang
+++ /dev/null
@@ -1,461 +0,0 @@
-module ietf-inet-types {
-
-  namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
-  prefix "inet";
-
-  organization
-   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-  contact
-   "WG Web:   <http://tools.ietf.org/wg/netmod/>
-    WG List:  <mailto:netmod@ietf.org>
-
-    WG Chair: David Kessens
-              <mailto:david.kessens@nsn.com>
-
-    WG Chair: Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>
-
-    Editor:   Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>";
-
-  description
-   "This module contains a collection of generally useful derived
-    YANG data types for Internet addresses and related things.
-
-    Copyright (c) 2013 IETF Trust and the persons identified as
-    authors of the code.  All rights reserved.
-
-    Redistribution and use in source and binary forms, with or
-    without modification, is permitted pursuant to, and subject
-    to the license terms contained in, the Simplified BSD License
-    set forth in Section 4.c of the IETF Trust's Legal Provisions
-    Relating to IETF Documents
-    (http://trustee.ietf.org/license-info).
-
-    This version of this YANG module is part of RFC 6991; see
-    the RFC itself for full legal notices.";
-
-  revision 2013-07-15 {
-    description
-     "This revision adds the following new data types:
-      - ip-address-no-zone
-      - ipv4-address-no-zone
-      - ipv6-address-no-zone";
-    reference
-     "RFC 6991: Common YANG Data Types";
-  }
-
-  revision 2010-09-24 {
-    description
-     "Initial revision.";
-    reference
-     "RFC 6021: Common YANG Data Types";
-  }
-
-  /*** collection of types related to protocol fields ***/
-
-  typedef ip-version {
-    type enumeration {
-      enum unknown {
-        value "0";
-        description
-         "An unknown or unspecified version of the Internet
-          protocol.";
-      }
-      enum ipv4 {
-        value "1";
-        description
-         "The IPv4 protocol as defined in RFC 791.";
-      }
-      enum ipv6 {
-        value "2";
-        description
-         "The IPv6 protocol as defined in RFC 2460.";
-      }
-    }
-    description
-     "This value represents the version of the IP protocol.
-
-      In the value set and its semantics, this type is equivalent
-      to the InetVersion textual convention of the SMIv2.";
-    reference
-     "RFC  791: Internet Protocol
-      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
-      RFC 4001: Textual Conventions for Internet Network Addresses";
-  }
-
-  typedef dscp {
-    type uint8 {
-      range "0..63";
-    }
-    description
-     "The dscp type represents a Differentiated Services Code Point
-      that may be used for marking packets in a traffic stream.
-      In the value set and its semantics, this type is equivalent
-      to the Dscp textual convention of the SMIv2.";
-    reference
-     "RFC 3289: Management Information Base for the Differentiated
-                Services Architecture
-      RFC 2474: Definition of the Differentiated Services Field
-                (DS Field) in the IPv4 and IPv6 Headers
-      RFC 2780: IANA Allocation Guidelines For Values In
-                the Internet Protocol and Related Headers";
-  }
-
-  typedef ipv6-flow-label {
-    type uint32 {
-      range "0..1048575";
-    }
-    description
-     "The ipv6-flow-label type represents the flow identifier or Flow
-      Label in an IPv6 packet header that may be used to
-      discriminate traffic flows.
-
-      In the value set and its semantics, this type is equivalent
-      to the IPv6FlowLabel textual convention of the SMIv2.";
-    reference
-     "RFC 3595: Textual Conventions for IPv6 Flow Label
-      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
-  }
-
-  typedef port-number {
-    type uint16 {
-      range "0..65535";
-    }
-    description
-     "The port-number type represents a 16-bit port number of an
-      Internet transport-layer protocol such as UDP, TCP, DCCP, or
-      SCTP.  Port numbers are assigned by IANA.  A current list of
-      all assignments is available from <http://www.iana.org/>.
-
-      Note that the port number value zero is reserved by IANA.  In
-      situations where the value zero does not make sense, it can
-      be excluded by subtyping the port-number type.
-      In the value set and its semantics, this type is equivalent
-      to the InetPortNumber textual convention of the SMIv2.";
-    reference
-     "RFC  768: User Datagram Protocol
-      RFC  793: Transmission Control Protocol
-      RFC 4960: Stream Control Transmission Protocol
-      RFC 4340: Datagram Congestion Control Protocol (DCCP)
-      RFC 4001: Textual Conventions for Internet Network Addresses";
-  }
-
-  /*** collection of types related to autonomous systems ***/
-
-  typedef as-number {
-    type uint32;
-    description
-     "The as-number type represents autonomous system numbers
-      which identify an Autonomous System (AS).  An AS is a set
-      of routers under a single technical administration, using
-      an interior gateway protocol and common metrics to route
-      packets within the AS, and using an exterior gateway
-      protocol to route packets to other ASes.  IANA maintains
-      the AS number space and has delegated large parts to the
-      regional registries.
-
-      Autonomous system numbers were originally limited to 16
-      bits.  BGP extensions have enlarged the autonomous system
-      number space to 32 bits.  This type therefore uses an uint32
-      base type without a range restriction in order to support
-      a larger autonomous system number space.
-
-      In the value set and its semantics, this type is equivalent
-      to the InetAutonomousSystemNumber textual convention of
-      the SMIv2.";
-    reference
-     "RFC 1930: Guidelines for creation, selection, and registration
-                of an Autonomous System (AS)
-      RFC 4271: A Border Gateway Protocol 4 (BGP-4)
-      RFC 4001: Textual Conventions for Internet Network Addresses
-      RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
-                Number Space";
-  }
-
-  /*** collection of types related to IP addresses and hostnames ***/
-
-  typedef ip-address {
-    type union {
-      type inet:ipv4-address;
-      type inet:ipv6-address;
-    }
-    description
-     "The ip-address type represents an IP address and is IP
-      version neutral.  The format of the textual representation
-      implies the IP version.  This type supports scoped addresses
-      by allowing zone identifiers in the address format.";
-    reference
-     "RFC 4007: IPv6 Scoped Address Architecture";
-  }
-
-  typedef ipv4-address {
-    type string {
-      pattern
-        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-      +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
-      + '(%[\p{N}\p{L}]+)?';
-    }
-    description
-      "The ipv4-address type represents an IPv4 address in
-       dotted-quad notation.  The IPv4 address may include a zone
-       index, separated by a % sign.
-
-       The zone index is used to disambiguate identical address
-       values.  For link-local addresses, the zone index will
-       typically be the interface index number or the name of an
-       interface.  If the zone index is not present, the default
-       zone of the device will be used.
-
-       The canonical format for the zone index is the numerical
-       format";
-  }
-
-  typedef ipv6-address {
-    type string {
-      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
-            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
-            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
-            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
-            + '(%[\p{N}\p{L}]+)?';
-      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
-            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
-            + '(%.+)?';
-    }
-    description
-     "The ipv6-address type represents an IPv6 address in full,
-      mixed, shortened, and shortened-mixed notation.  The IPv6
-      address may include a zone index, separated by a % sign.
-
-      The zone index is used to disambiguate identical address
-      values.  For link-local addresses, the zone index will
-      typically be the interface index number or the name of an
-      interface.  If the zone index is not present, the default
-      zone of the device will be used.
-
-
-
-      The canonical format of IPv6 addresses uses the textual
-      representation defined in Section 4 of RFC 5952.  The
-      canonical format for the zone index is the numerical
-      format as described in Section 11.2 of RFC 4007.";
-    reference
-     "RFC 4291: IP Version 6 Addressing Architecture
-      RFC 4007: IPv6 Scoped Address Architecture
-      RFC 5952: A Recommendation for IPv6 Address Text
-                Representation";
-  }
-
-  typedef ip-address-no-zone {
-    type union {
-      type inet:ipv4-address-no-zone;
-      type inet:ipv6-address-no-zone;
-    }
-    description
-     "The ip-address-no-zone type represents an IP address and is
-      IP version neutral.  The format of the textual representation
-      implies the IP version.  This type does not support scoped
-      addresses since it does not allow zone identifiers in the
-      address format.";
-    reference
-     "RFC 4007: IPv6 Scoped Address Architecture";
-  }
-
-  typedef ipv4-address-no-zone {
-    type inet:ipv4-address {
-      pattern '[0-9\.]*';
-    }
-    description
-      "An IPv4 address without a zone index.  This type, derived from
-       ipv4-address, may be used in situations where the zone is
-       known from the context and hence no zone index is needed.";
-  }
-
-  typedef ipv6-address-no-zone {
-    type inet:ipv6-address {
-      pattern '[0-9a-fA-F:\.]*';
-    }
-    description
-      "An IPv6 address without a zone index.  This type, derived from
-       ipv6-address, may be used in situations where the zone is
-       known from the context and hence no zone index is needed.";
-    reference
-     "RFC 4291: IP Version 6 Addressing Architecture
-      RFC 4007: IPv6 Scoped Address Architecture
-      RFC 5952: A Recommendation for IPv6 Address Text
-                Representation";
-  }
-
-  typedef ip-prefix {
-    type union {
-      type inet:ipv4-prefix;
-      type inet:ipv6-prefix;
-    }
-    description
-     "The ip-prefix type represents an IP prefix and is IP
-      version neutral.  The format of the textual representations
-      implies the IP version.";
-  }
-
-  typedef ipv4-prefix {
-    type string {
-      pattern
-         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
-       + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
-    }
-    description
-     "The ipv4-prefix type represents an IPv4 address prefix.
-      The prefix length is given by the number following the
-      slash character and must be less than or equal to 32.
-
-      A prefix length value of n corresponds to an IP address
-      mask that has n contiguous 1-bits from the most
-      significant bit (MSB) and all other bits set to 0.
-
-      The canonical format of an IPv4 prefix has all bits of
-      the IPv4 address set to zero that are not part of the
-      IPv4 prefix.";
-  }
-
-  typedef ipv6-prefix {
-    type string {
-      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
-            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
-            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
-            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
-            + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
-      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
-            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
-            + '(/.+)';
-    }
-
-
-    description
-     "The ipv6-prefix type represents an IPv6 address prefix.
-      The prefix length is given by the number following the
-      slash character and must be less than or equal to 128.
-
-      A prefix length value of n corresponds to an IP address
-      mask that has n contiguous 1-bits from the most
-      significant bit (MSB) and all other bits set to 0.
-
-      The IPv6 address should have all bits that do not belong
-      to the prefix set to zero.
-
-      The canonical format of an IPv6 prefix has all bits of
-      the IPv6 address set to zero that are not part of the
-      IPv6 prefix.  Furthermore, the IPv6 address is represented
-      as defined in Section 4 of RFC 5952.";
-    reference
-     "RFC 5952: A Recommendation for IPv6 Address Text
-                Representation";
-  }
-
-  /*** collection of domain name and URI types ***/
-
-  typedef domain-name {
-    type string {
-      pattern
-        '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
-      + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
-      + '|\.';
-      length "1..253";
-    }
-    description
-     "The domain-name type represents a DNS domain name.  The
-      name SHOULD be fully qualified whenever possible.
-
-      Internet domain names are only loosely specified.  Section
-      3.5 of RFC 1034 recommends a syntax (modified in Section
-      2.1 of RFC 1123).  The pattern above is intended to allow
-      for current practice in domain name use, and some possible
-      future expansion.  It is designed to hold various types of
-      domain names, including names used for A or AAAA records
-      (host names) and other records, such as SRV records.  Note
-      that Internet host names have a stricter syntax (described
-      in RFC 952) than the DNS recommendations in RFCs 1034 and
-      1123, and that systems that want to store host names in
-      schema nodes using the domain-name type are recommended to
-      adhere to this stricter standard to ensure interoperability.
-
-      The encoding of DNS names in the DNS protocol is limited
-      to 255 characters.  Since the encoding consists of labels
-      prefixed by a length bytes and there is a trailing NULL
-      byte, only 253 characters can appear in the textual dotted
-      notation.
-
-      The description clause of schema nodes using the domain-name
-      type MUST describe when and how these names are resolved to
-      IP addresses.  Note that the resolution of a domain-name value
-      may require to query multiple DNS records (e.g., A for IPv4
-      and AAAA for IPv6).  The order of the resolution process and
-      which DNS record takes precedence can either be defined
-      explicitly or may depend on the configuration of the
-      resolver.
-
-      Domain-name values use the US-ASCII encoding.  Their canonical
-      format uses lowercase US-ASCII characters.  Internationalized
-      domain names MUST be A-labels as per RFC 5890.";
-    reference
-     "RFC  952: DoD Internet Host Table Specification
-      RFC 1034: Domain Names - Concepts and Facilities
-      RFC 1123: Requirements for Internet Hosts -- Application
-                and Support
-      RFC 2782: A DNS RR for specifying the location of services
-                (DNS SRV)
-      RFC 5890: Internationalized Domain Names in Applications
-                (IDNA): Definitions and Document Framework";
-  }
-
-  typedef host {
-    type union {
-      type inet:ip-address;
-      type inet:domain-name;
-    }
-    description
-     "The host type represents either an IP address or a DNS
-      domain name.";
-  }
-
-  typedef uri {
-    type string;
-    description
-     "The uri type represents a Uniform Resource Identifier
-      (URI) as defined by STD 66.
-
-      Objects using the uri type MUST be in US-ASCII encoding,
-      and MUST be normalized as described by RFC 3986 Sections
-      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
-      percent-encoding is removed, and all case-insensitive
-      characters are set to lowercase except for hexadecimal
-      digits, which are normalized to uppercase as described in
-      Section 6.2.2.1.
-
-      The purpose of this normalization is to help provide
-      unique URIs.  Note that this normalization is not
-      sufficient to provide uniqueness.  Two URIs that are
-      textually distinct after this normalization may still be
-      equivalent.
-
-      Objects using the uri type may restrict the schemes that
-      they permit.  For example, 'data:' and 'urn:' schemes
-      might not be appropriate.
-
-      A zero-length URI is not a valid URI.  This can be used to
-      express 'URI absent' where required.
-
-      In the value set and its semantics, this type is equivalent
-      to the Uri SMIv2 textual convention defined in RFC 5017.";
-    reference
-     "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
-      RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
-                Group: Uniform Resource Identifiers (URIs), URLs,
-                and Uniform Resource Names (URNs): Clarifications
-                and Recommendations
-      RFC 5017: MIB Textual Conventions for Uniform Resource
-                Identifiers (URIs)";
-  }
-
-}
diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-network-topology@2015-12-08.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-network-topology@2015-12-08.yang
deleted file mode 100644
index bba3916..0000000
--- a/apps/tenbi/yangmodel/src/main/yang/ietf-network-topology@2015-12-08.yang
+++ /dev/null
@@ -1,277 +0,0 @@
-module ietf-network-topology {
- // yang-version 1.1;
-  yang-version 1;
-  namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology";
-  prefix lnk;
-  import ietf-inet-types {
-    prefix inet;
-  }
-  import ietf-network {
-    prefix nd;
-  }
-  organization
-    "IETF I2RS (Interface to the Routing System) Working Group";
-  contact
-    "WG Web:    <http:  tools.ietf.org/wg/i2rs/>
-     WG List:   <mailto:i2rs@ietf.org>
-     WG Chair:  Susan Hares
-                <mailto:shares@ndzh.com>
-     WG Chair:  Jeffrey Haas
-                <mailto:jhaas@pfrc.org>
-     Editor:    Alexander Clemm
-                <mailto:alex@cisco.com>
-     Editor:    Jan Medved
-                <mailto:jmedved@cisco.com>
-     Editor:    Robert Varga
-                <mailto:rovarga@cisco.com>
-     Editor:    Tony Tkacik
-                <mailto:ttkacik@cisco.com>
-     Editor:    Nitin Bahadur
-                <mailto:nitin_bahadur@yahoo.com>
-     Editor:    Hariharan Ananthakrishnan
-                <mailto:hari@packetdesign.com>";
-  description
-    "This module defines a common base model for network topology,
-     augmenting the base network model with links to connect nodes,
-     as well as termination points to terminate links on nodes.
-     Copyright (c) 2015 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD License
-     set forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (http:  trustee.ietf.org/license-info).
-     This version of this YANG module is part of
-     draft-ietf-i2rs-yang-network-topo-02;
-     see the RFC itself for full legal notices.
-     NOTE TO RFC EDITOR: Please replace above reference to
-     draft-ietf-i2rs-yang-network-topo-02 with RFC
-     number when published (i.e. RFC xxxx).";
-  revision 2015-12-08 {
-    description
-      "Initial revision.
-       NOTE TO RFC EDITOR: Please replace the following reference
-       to draft-ietf-i2rs-yang-network-topo-02 with
-       RFC number when published (i.e. RFC xxxx).";
-    reference
-      "draft-ietf-i2rs-yang-network-topo-02.";
-  }
-  typedef link-id {
-    type inet:uri;
-    description
-      "An identifier for a link in a topology.
-       The identifier SHOULD be chosen such that the same link in a
-       real network topology will always be identified through the
-       same identifier, even if the model is instantiated in
-           separate datastores. An implementation MAY choose to capture
-       semantics in the identifier, for example to indicate the type
-       of link and/or the type of topology that the link is a part
-       of.";
-  }
-  typedef tp-id {
-    type inet:uri;
-    description
-      "An identifier for termination points on a node.
-       The identifier SHOULD be chosen such that the same TP in a
-       real network topology will always be identified through the
-       same identifier, even if the model is instantiated in
-       separate datastores. An implementation MAY choose to capture
-       semantics in the identifier, for example to indicate the type
-       of TP and/or the type of node and topology that the TP is a
-       part of.";
-  }
-  grouping link-ref {
-    description
-      "References a link in a specific network.";
-    leaf link-ref {
-      type leafref {
-        path "/nd:networks/nd:network[nd:network-id=current()/../"+
-          "network-ref]/lnk:link/lnk:link-id";
-          require-instance false;
-      }
-      description
-        "A type for an absolute reference a link instance.
-         (This type should not be used for relative references.
-         In such a case, a relative path should be used instead.)";
-    }
-    uses nd:network-ref;
-  }
-  grouping tp-ref {
-    description
-      "References a termination point in a specific node.";
-    leaf tp-ref {
-      type leafref {
-        path "/nd:networks/nd:network[nd:network-id=current()/../"+
-          "network-ref]/nd:node[nd:node-id=current()/../"+
-          "node-ref]/lnk:termination-point/lnk:tp-id";
-          require-instance false;
-      }
-      description
-        "A type for an absolute reference to a termination point.
-         (This type should not be used for relative references.
-         In such a case, a relative path should be used instead.)";
-    }
-    uses nd:node-ref;
-  }
-  augment "/nd:networks/nd:network" {
-    description
-      "Add links to the network model.";
-    list link {
-      key "link-id";
-      description
-        "A Network Link connects a by Local (Source) node and
-         a Remote (Destination) Network Nodes via a set of the
-         nodes' termination points.
-         As it is possible to have several links between the same
-         source and destination nodes, and as a link could
-         potentially be re-homed between termination points, to
-         ensure that we would always know to distinguish between
-         links, every link is identified by a dedicated link
-         identifier.
-         Note that a link models a point-to-point link, not a
-         multipoint link.
-         Layering dependencies on links in underlay topologies are
-         not represented as the layering information of nodes and of
-         termination points is sufficient.";
-      container source {
-        description
-          "This container holds the logical source of a particular
-           link.";
-        leaf source-node {
-          type leafref {
-            path "../../../nd:node/nd:node-id";
-          }
-          mandatory true;
-          description
-            "Source node identifier, must be in same topology.";
-        }
-        leaf source-tp {
-          type leafref {
-            path "../../../nd:node[nd:node-id=current()/../"+
-              "source-node]/termination-point/tp-id";
-          }
-          description
-            "Termination point within source node that terminates
-             the link.";
-        }
-      }
-      container destination {
-        description
-          "This container holds the logical destination of a
-           particular link.";
-        leaf dest-node {
-          type leafref {
-            path "../../../nd:node/nd:node-id";
-          }
-          mandatory true;
-          description
-            "Destination node identifier, must be in the same
-             network.";
-        }
-        leaf dest-tp {
-          type leafref {
-            path "../../../nd:node[nd:node-id=current()/../"+
-              "dest-node]/termination-point/tp-id";
-          }
-          description
-            "Termination point within destination node that
-             terminates the link.";
-        }
-      }
-      leaf link-id {
-        type link-id;
-        description
-          "The identifier of a link in the topology.
-           A link is specific to a topology to which it belongs.";
-      }
-      list supporting-link {
-        key "network-ref link-ref";
-        description
-          "Identifies the link, or links, that this link
-           is dependent on.";
-        leaf network-ref {
-          type leafref {
-            path "../../../nd:supporting-network/nd:network-ref";
-            require-instance false;
-          }
-          description
-            "This leaf identifies in which underlay topology
-             supporting link is present.";
-        }
-        leaf link-ref {
-          type leafref {
-            path "/nd:networks/nd:network[nd:network-id=current()/"+
-              "../network-ref]/link/link-id";
-              require-instance false;
-          }
-          description
-            "This leaf identifies a link which is a part
-             of this link's underlay. Reference loops, in which
-             a link identifies itself as its underlay, either
-             directly or transitively, are not allowed.";
-        }
-      }
-    }
-  }
-  augment "/nd:networks/nd:network/nd:node" {
-    description
-      "Augment termination points which terminate links.
-       Termination points can ultimately be mapped to interfaces.";
-    list termination-point {
-      key "tp-id";
-      description
-        "A termination point can terminate a link.
-         Depending on the type of topology, a termination point
-         could, for example, refer to a port or an interface.";
-      leaf tp-id {
-        type tp-id;
-        description
-          "Termination point identifier.";
-      }
-      list supporting-termination-point {
-        key "network-ref node-ref tp-ref";
-        description
-          "The leaf list identifies any termination points that
-           the termination point is dependent on, or maps onto.
-           Those termination points will themselves be contained
-           in a supporting node.
-           This dependency information can be inferred from
-           the dependencies between links.  For this reason,
-           this item is not separately configurable.  Hence no
-           corresponding constraint needs to be articulated.
-           The corresponding information is simply provided by the
-           implementing system.";
-        leaf network-ref {
-          type leafref {
-            path "../../../nd:supporting-node/nd:network-ref";
-            require-instance false;
-          }
-          description
-            "This leaf identifies in which topology the
-             supporting termination point is present.";
-        }
-        leaf node-ref {
-          type leafref {
-            path "../../../nd:supporting-node/nd:node-ref";
-            require-instance false;
-          }
-          description
-            "This leaf identifies in which node the supporting
-             termination point is present.";
-        }
-        leaf tp-ref {
-          type leafref {
-            path "/nd:networks/nd:network[nd:network-id=current()/"+
-              "../network-ref]/nd:node[nd:node-id=current()/../"+
-              "node-ref]/termination-point/tp-id";
-              require-instance false;
-          }
-          description
-            "Reference to the underlay node, must be in a
-             different topology";
-        }
-      }
-    }
-  }
-}
diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-network@2015-12-08.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-network@2015-12-08.yang
deleted file mode 100644
index f5e0dcc..0000000
--- a/apps/tenbi/yangmodel/src/main/yang/ietf-network@2015-12-08.yang
+++ /dev/null
@@ -1,196 +0,0 @@
-module ietf-network {
-  // yang-version 1.1;
-  yang-version 1;
-  namespace "urn:ietf:params:xml:ns:yang:ietf-network";
-  prefix nd;
-  import ietf-inet-types {
-    prefix inet;
-  }
-  organization
-    "IETF I2RS (Interface to the Routing System) Working Group";
-  contact
-    "WG Web:    <http: tools.ietf.org/wg/i2rs/>
-     WG List:   <mailto:i2rs@ietf.org>
-     WG Chair:  Susan Hares
-                <mailto:shares@ndzh.com>
-     WG Chair:  Jeffrey Haas
-                <mailto:jhaas@pfrc.org>
-     Editor:    Alexander Clemm
-                <mailto:alex@cisco.com>
-     Editor:    Jan Medved
-                <mailto:jmedved@cisco.com>
-     Editor:    Robert Varga
-                <mailto:rovarga@cisco.com>
-     Editor:    Tony Tkacik
-                <mailto:ttkacik@cisco.com>
-     Editor:    Nitin Bahadur
-                <mailto:nitin_bahadur@yahoo.com>
-     Editor:    Hariharan Ananthakrishnan
-                <mailto:hari@packetdesign.com>";
-  description
-    "This module defines a common base model for a collection
-     of nodes in a network. Node definitions are further used
-     in network topologies and inventories.
-     Copyright (c) 2015 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD License
-     set forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (http: trustee.ietf.org/license-info).
-     This version of this YANG module is part of
-     draft-ietf-i2rs-yang-network-topo-02;
-     see the RFC itself for full legal notices.
-     NOTE TO RFC EDITOR: Please replace above reference to
-     draft-ietf-i2rs-yang-network-topo-02 with RFC
-     number when published (i.e. RFC xxxx).";
-  revision 2015-12-08 {
-    description
-      "Initial revision.
-       NOTE TO RFC EDITOR: Please replace the following reference
-       to draft-ietf-i2rs-yang-network-topo-02 with
-       RFC number when published (i.e. RFC xxxx).";
-    reference
-      "draft-ietf-i2rs-yang-network-topo-02";
-  }
-  typedef node-id {
-    type inet:uri;
-    description
-      "Identifier for a node.";
-  }
-  typedef network-id {
-    type inet:uri;
-    description
-      "Identifier for a network.";
-  }
-  grouping network-ref {
-    description
-      "Contains the information necessary to reference a network,
-       for example an underlay network.";
-    leaf network-ref {
-      type leafref {
-        path "/nd:networks/nd:network/nd:network-id";
-        require-instance false;
-      }
-      description
-        "Used to reference a network, for example an underlay
-         network.";
-    }
-  }
-  grouping node-ref {
-    description
-      "Contains the information necessary to reference a node.";
-    leaf node-ref {
-      type leafref {
-        path "/nd:networks/nd:network[nd:network-id=current()/../"+
-          "network-ref]/nd:node/nd:node-id";
-        require-instance false;
-      }
-      description
-        "Used to reference a node.
-         Nodes are identified relative to the network they are
-         contained in.";
-    }
-    uses network-ref;
-  }
-  container networks {
-    description
-      "Serves as top-level container for a list of networks.";
-    list network {
-      key "network-id";
-      description
-        "Describes a network.
-         A network typically contains an inventory of nodes,
-         topological information (augmented through
-         network-topology model), as well as layering
-         information.";
-      container network-types {
-        description
-          "Serves as an augmentation target.
-           The network type is indicated through corresponding
-           presence containers augmented into this container.";
-      }
-      leaf network-id {
-        type network-id;
-        description
-          "Identifies a network.";
-      }
-      list supporting-network {
-        key "network-ref";
-        description
-          "An underlay network, used to represent layered network
-           topologies.";
-        leaf network-ref {
-          type leafref {
-            path "/networks/network/network-id";
-            require-instance false;
-          }
-          description
-            "References the underlay network.";
-        }
-      }
-      list node {
-        key "node-id";
-        description
-          "The inventory of nodes of this network.";
-        leaf node-id {
-          type node-id;
-          description
-            "Identifies a node uniquely within the containing
-             network.";
-        }
-        list supporting-node {
-          key "network-ref node-ref";
-          description
-            "Represents another node, in an underlay network, that
-             this node is supported by.  Used to represent layering
-             structure.";
-          leaf network-ref {
-            type leafref {
-              path "../../../supporting-network/network-ref";
-              require-instance false;
-            }
-            description
-              "References the underlay network that the
-               underlay node is part of.";
-          }
-          leaf node-ref {
-            type leafref {
-              path "/networks/network/node/node-id";
-              require-instance false;
-            }
-            description
-              "References the underlay node itself.";
-          }
-        }
-      }
-    }
-  }
-  container networks-state {
-    config false;
-    description
-      "Serves as top-level container for a list of state information
-       for networks";
-    list network {
-      key "network-ref";
-      description
-        "Data nodes representing operational data and state of
-         networks.
-         An instance is automatically created for every network
-         in the corresponding list under the networks container.";
-      uses network-ref;
-      leaf server-provided {
-        type boolean;
-        description
-          "Indicates whether the information concerning this
-           particular network is populated by the server
-           (server-provided true, the general case for network
-           information discovered from the server),
-           or whether it is configured by a client
-           (server-provided true, possible e.g. for
-           service overlays managed through a controller).";
-      }
-    }
-  }
-}
diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-schedule.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-schedule.yang
deleted file mode 100644
index 55ce942..0000000
--- a/apps/tenbi/yangmodel/src/main/yang/ietf-schedule.yang
+++ /dev/null
@@ -1,61 +0,0 @@
-module ietf-schedule {
-  yang-version 1;
-  namespace "urn:ietf:params:xml:ns:yang:ietf-schedule";
-  // replace with IANA namespace when assigned
-  
-  prefix "sch";
-
-  import ietf-yang-types { 
-    prefix "yang"; 
-  }
-
-  organization "TBD";
-  contact "TBD";
-  description 
-    "The model allows time scheduling parameters to be specified.";
-  
-  revision "2015-10-08" {
-    description "Initial revision";
-    reference "TBD";
-  }
-
-  /*
-   * Groupings
-   */
-
-  grouping schedules {
-    description
-      "A list of schedules defining when a particular 
-       configuration takes effect.";
-    container schedules {
-      list schedule {
-        key "schedule-id";
-        description "A list of schedule elements.";
-        
-        leaf schedule-id {
-          type uint32;
-          description "Identifies the schedule element.";
-        }
-        leaf start {
-          type yang:date-and-time;
-          description "Start time.";
-        }
-        leaf schedule-duration {
-          type string {
-            pattern 
-              'P(\d+Y)?(\d+M)?(\d+W)?(\d+D)?T(\d+H)?(\d+M)?(\d+S)?';
-          }
-          description "Schedule duration in ISO 8601 format.";
-        }
-        leaf repeat-interval {
-          type string {
-            pattern 
-              'R\d*/P(\d+Y)?(\d+M)?(\d+W)?(\d+D)?T(\d+H)?(\d+M)?'
-              + '(\d+S)?';
-          }
-          description "Repeat interval in ISO 8601 format.";
-        }
-      }
-    }
-  } // schedules
-}
diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-te-topology.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-te-topology.yang
deleted file mode 100644
index 5c3efb1..0000000
--- a/apps/tenbi/yangmodel/src/main/yang/ietf-te-topology.yang
+++ /dev/null
@@ -1,2035 +0,0 @@
-module ietf-te-topology {
-  //yang-version 1.1;
-  namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology";
-
-  prefix "tet";
-
-  import ietf-yang-types {
-    prefix "yang";
-  }
-
-  import ietf-inet-types {
-    prefix "inet";
-  }
-
-  import ietf-te-types {
-    prefix "te-types";
-  }
-
-  import ietf-network {
-    prefix "nw";
-  }
-
-  import ietf-network-topology {
-    prefix "nt";
-  }
-
-  organization
-    "Traffic Engineering Architecture and Signaling (TEAS)
-     Working Group";
-
-  contact
-    "WG Web:   <http://tools.ietf.org/wg/teas/>
-     WG List:  <mailto:teas@ietf.org>
-
-     WG Chair: Lou Berger
-               <mailto:lberger@labn.net>
-
-     WG Chair: Vishnu Pavan Beeram
-               <mailto:vbeeram@juniper.net>
-
-     Editor:   Xufeng Liu
-               <mailto:xliu@kuatrotech.com>
-
-     Editor:   Igor Bryskin
-               <mailto:Igor.Bryskin@huawei.com>
-
-     Editor:   Vishnu Pavan Beeram
-               <mailto:vbeeram@juniper.net>
-
-     Editor:   Tarek Saad
-               <mailto:tsaad@cisco.com>
-
-     Editor:   Himanshu Shah
-               <mailto:hshah@ciena.com>
-
-     Editor:   Oscar Gonzalez De Dios
-               <mailto:oscar.gonzalezdedios@telefonica.com>";
-
-  description "TE topology model";
-
-  revision "2017-01-10" {
-    description "Initial revision";
-    reference "TBD";
-  }
-
-  /*
-   * Features
-   */
-  feature nsrlg {
-    description
-      "This feature indicates that the system supports NSRLG
-       (Not Sharing Risk Link Group).";
-  }
-
-  feature te-topology-hierarchy {
-    description
-      "This feature indicates that the system allows underlay
-       and/or overlay TE topology hierarchy.";
-  }
-
-  feature template {
-    description
-      "This feature indicates that the system supports
-       template configuration.";
-  }
-
-  /*
-   * Typedefs
-   */
-  typedef geographic-coordinate-degree {
-      type decimal64 {
-        fraction-digits 8;
-      }
-      description
-        "Decimal degree (DD) used to express latitude and longitude
-         geographic coordinates.";
-  } // geographic-coordinate-degree
-
-  typedef te-bandwidth {
-    type string {
-      pattern
-        '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
-      + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
-      + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+'
-      + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
-      + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
-      + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*';
-    }
-    description
-      "This is the generic bandwidth type that is a string containing
-       a list of numbers separated by commas, with each of these
-       number can be non-negative decimal, hex integer, or hex float:
-       (dec | hex | float)[*(','(dec | hex | float))]
-       For packet switching type, a float number is used, such as
-       0x1p10.
-       For OTN switching type, a list of integers can be used, such
-       as '0,2,3,1', indicating 2 odu0's and 1 odu3.
-       For DWDM, a list of pairs of slot number and width can be
-       used, such as '0, 2, 3, 3', indicating a frequency slot 0 with
-       slot width 2 and a frequency slot 3 with slot width 3.";
-  } // te-bandwidth
-
-  typedef te-info-source {
-    type enumeration {
-      enum "unknown" {
-        description "The source is unknown.";
-      }
-      enum "locally-configured" {
-        description "Configured entity.";
-      }
-      enum "ospfv2" {
-        description "OSPFv2.";
-      }
-      enum "ospfv3" {
-        description "OSPFv3.";
-      }
-      enum "isis" {
-        description "ISIS.";
-      }
-      enum "bgp-ls" {
-        description "BGP-LS.";
-        reference
-          "RFC7752: North-Bound Distribution of Link-State and
-           Traffic Engineering (TE) Information Using BGP";
-      }
-      enum "system-processed" {
-        description "System processed entity.";
-      }
-      enum "other" {
-        description "Other source.";
-      }
-    }
-    description
-      "Describining the type of source that has provided the
-       related information, and the source credibility.";
-  } // te-info-source
-
-  typedef te-path-disjointness {
-    type bits {
-      bit node {
-        position 0;
-        description "Node disjoint.";
-      }
-      bit link {
-        position 1;
-        description "Link disjoint.";
-      }
-      bit srlg {
-        position 2;
-        description "SRLG (Shared Risk Link Group) disjoint.";
-      }
-    }
-    description
-      "Type of the resource disjointness for a TE tunnel path.";
-    reference
-      "RFC4872: RSVP-TE Extensions in Support of End-to-End
-       Generalized Multi-Protocol Label Switching (GMPLS)
-       Recovery";
-  } // te-path-disjointness
-
-  /*
-   * Groupings
-   */
-  grouping connectivity-label-restriction-list {
-    description
-      "List of abel restrictions specifying what labels may or may
-       not be used on a link connectivity.";
-    list label-restriction {
-      key "inclusive-exclusive label-start";
-      description
-        "List of abel restrictions specifying what labels may or may
-         not be used on a link connectivity.";
-      reference
-        "RFC7579: General Network Element Constraint Encoding
-         for GMPLS-Controlled Networks";
-      leaf inclusive-exclusive {
-        type enumeration {
-          enum inclusive {
-            description "The label or label range is inclusive.";
-          }
-          enum exclusive {
-            description "The label or label range is exclusive.";
-          }
-        }
-        description
-          "Whether the list item is inclusive or exclusive.";
-      }
-      leaf label-start {
-        type te-types:generalized-label;
-        description
-          "This is the starting lable if a lable range is specified.
-           This is the lable value if a single lable is specified,
-           in which case, attribute 'label-end' is not set.";
-      }
-      leaf label-end {
-        type te-types:generalized-label;
-        description
-          "The ending lable if a lable range is specified;
-           This attribute is not set, If a single lable is
-           specified.";
-      }
-      leaf range-bitmap {
-        type binary;
-        description
-          "When there are gaps between label-start and label-end,
-           this attribute is used to specified the possitions
-           of the used labels.";
-      }
-    }
-  } // connectivity-label-restrictions
-
-  grouping connectivity-matrix-entry-attributes {
-    description
-      "Attributes of connectivity matrix entry.";
-    leaf is-allowed {
-      type boolean;
-      description
-        "true  - switching is allowed,
-         false - switching is disallowed.";
-    }
-    uses connectivity-label-restriction-list;
-    container underlay {
-      if-feature te-topology-hierarchy;
-      presence
-        "Indicates the underlay exists for this link.";
-      description "Attributes of the te-link underlay.";
-      reference
-        "RFC4206: Label Switched Paths (LSP) Hierarchy with
-         Generalized Multi-Protocol Label Switching (GMPLS)
-         Traffic Engineering (TE)";
-      
-      uses te-link-underlay-attributes;
-    } // underlay
-    uses te-link-iscd-attributes;
-    uses te-link-connectivity-attributes;
-  } // connectivity-matrix-entry-attributes
-
-  grouping geolocation-container {
-    description
-      "A container containing a GPS location.";
-    container geolocation{
-      description
-        "A container containing a GPS location.";
-      leaf altitude {
-        type int64;
-        units millimeter;
-        description
-          "Distance above the sea level.";
-      }
-      leaf latitude {
-        type geographic-coordinate-degree {
-          range "-90..90";
-        }
-        description
-          "Relative position north or south on the Earth's surface.";
-      }
-      leaf longitude {
-        type geographic-coordinate-degree {
-          range "-180..180";
-        }
-        description
-          "Angular distance east or west on the Earth's surface.";
-      }
-    } // gps-location
-  } // geolocation-container
-
-  grouping information-source-state-attributes {
-    description
-      "The attributes identifying source that has provided the
-       related information, and the source credibility.";
-    leaf credibility-preference {
-      type uint16;
-      description
-        "The preference value to calculate the traffic
-         engineering database credibility value used for
-         tie-break selection between different
-         information-source values.
-         Higher value is more preferable.";
-    }
-    leaf logical-network-element {
-      type string;
-      description
-        "When applicable, this is the name of a logical network
-         element from which the information is learned.";
-    } // logical-network-element
-    leaf network-instance {
-      type string;
-      description
-        "When applicable, this is the name of a network-instance
-         from which the information is learned.";
-    } // network-instance
-  } // information-source-state-attributes
-
-  grouping information-source-per-link-attributes {
-    description
-      "Per node container of the attributes identifying source that
-       has provided the related information, and the source
-       credibility.";
-    leaf information-source {
-      type te-info-source;
-      description
-        "Indicates the source of the information.";
-    }
-    container information-source-state {
-      description
-        "The container contains state attributes related to
-         the information source.";
-      uses information-source-state-attributes;
-      container topology {
-        description
-          "When the information is processed by the system,
-           the attributes in this container indicate which topology
-           is used to process to generate the result information.";
-        uses te-topology-ref;
-        leaf link-ref {
-          type leafref {
-            path "/nw:networks/nw:network[nw:network-id = "
-              + "current()/../network-ref]/nt:link/nt:link-id";
-            require-instance false;
-          }
-          description
-            "A reference to a link-id.";
-        }
-      } // topology
-    } // information-source-state
-  } // information-source-per-link-attributes
-
-  grouping information-source-per-node-attributes {
-    description
-      "Per node container of the attributes identifying source that
-       has provided the related information, and the source
-       credibility.";
-    leaf information-source {
-      type te-info-source;
-      description
-        "Indicates the source of the information.";
-    }
-    container information-source-state {
-      description
-        "The container contains state attributes related to
-         the information source.";
-      uses information-source-state-attributes;
-      container topology {
-        description
-          "When the information is processed by the system,
-           the attributes in this container indicate which topology
-           is used to process to generate the result information.";
-        uses te-topology-ref;
-        leaf node-ref {
-          type leafref {
-            path "/nw:networks/nw:network[nw:network-id = "
-              + "current()/../network-ref]/nw:node/nw:node-id";
-            require-instance false;
-          }
-          description
-            "A reference to a node-id.";
-        }
-      } // topology
-    } // information-source-state
-  } // information-source-per-node-attributes
-
-  grouping interface-switching-capability-list {
-    description
-      "List of Interface Switching Capabilities Descriptors (ISCD)";
-
-    list interface-switching-capability {
-      key "switching-capability";
-      description
-        "List of Interface Switching Capabilities Descriptors (ISCD)
-         for this link.";
-      reference
-        "RFC3471: Generalized Multi-Protocol Label Switching (GMPLS)
-         Signaling Functional Description.
-         RFC4203: OSPF Extensions in Support of Generalized
-         Multi-Protocol Label Switching (GMPLS).";
-      leaf switching-capability {
-        type identityref {
-          base te-types:switching-capabilities;
-        }
-        description
-          "Switching Capability for this interface.";
-      }
-      leaf encoding {
-        type identityref {
-          base te-types:lsp-encoding-types;
-        }
-        description
-          "Encoding supported by this interface.";
-      }
-      uses te-link-iscd-attributes;
-    } // interface-switching-capability
-  } // interface-switching-capability-list
-
-  grouping statistics-per-link {
-    description
-      "Statistics attributes per TE link.";
-    leaf discontinuity-time {
-      type yang:date-and-time;
-      mandatory true;
-      description
-        "The time on the most recent occasion at which any one or
-         more of this interface's counters suffered a
-         discontinuity.  If no such discontinuities have occurred
-         since the last re-initialization of the local management
-         subsystem, then this node contains the time the local
-         management subsystem re-initialized itself.";
-    }
-    /* Administrative attributes */
-    leaf disables {
-      type yang:counter32;
-      description
-        "Number of times that link was disabled.";
-    }
-    leaf enables {
-      type yang:counter32;
-      description
-        "Number of times that link was enabled.";
-    }
-    leaf maintenance-clears {
-      type yang:counter32;
-      description
-        "Number of times that link was put out of maintenance.";
-    }
-    leaf maintenance-sets {
-      type yang:counter32;
-      description
-        "Number of times that link was put in maintenance.";
-      }
-    leaf modifies {
-      type yang:counter32;
-      description
-        "Number of times that link was modified.";
-    }
-    /* Operational attributes */
-    leaf downs {
-      type yang:counter32;
-      description
-        "Number of times that link was set to operational down.";
-    }
-    leaf ups {
-      type yang:counter32;
-      description
-        "Number of times that link was set to operational up.";
-    }
-    /* Recovery attributes */
-    leaf fault-clears {
-      type yang:counter32;
-      description
-        "Number of times that link experienced fault clear event.";
-    }
-    leaf fault-detects {
-      type yang:counter32;
-      description
-        "Number of times that link experienced fault detection.";
-    }
-    leaf protection-switches {
-      type yang:counter32;
-      description
-        "Number of times that link experienced protection
-         switchover.";
-    }
-    leaf protection-reverts {
-      type yang:counter32;
-      description
-        "Number of times that link experienced protection
-         reversion.";
-    }
-    leaf restoration-failures {
-      type yang:counter32;
-      description
-        "Number of times that link experienced restoration
-         failure.";
-    }
-    leaf restoration-starts {
-      type yang:counter32;
-      description
-        "Number of times that link experienced restoration
-         start.";
-    }
-    leaf restoration-successes {
-      type yang:counter32;
-      description
-        "Number of times that link experienced restoration
-         success.";
-    }
-    leaf restoration-reversion-failures {
-      type yang:counter32;
-      description
-        "Number of times that link experienced restoration reversion
-         failure.";
-    }
-    leaf restoration-reversion-starts {
-      type yang:counter32;
-      description
-        "Number of times that link experienced restoration reversion
-         start.";
-    }
-    leaf restoration-reversion-successes {
-      type yang:counter32;
-      description
-        "Number of times that link experienced restoration reversion
-         success.";
-    }
-  } // statistics-per-link
-
-  grouping statistics-per-node {
-    description
-      "Statistics attributes per TE node.";
-    leaf discontinuity-time {
-      type yang:date-and-time;
-      mandatory true;
-      description
-        "The time on the most recent occasion at which any one or
-         more of this interface's counters suffered a
-         discontinuity.  If no such discontinuities have occurred
-         since the last re-initialization of the local management
-         subsystem, then this node contains the time the local
-         management subsystem re-initialized itself.";
-    }
-    container node {
-      description
-        "Containing TE node level statistics attributes.";
-      leaf disables {
-        type yang:counter32;
-        description
-          "Number of times that node was disabled.";
-      }
-      leaf enables {
-        type yang:counter32;
-        description
-          "Number of times that node was enabled.";
-      }
-      leaf maintenance-sets {
-        type yang:counter32;
-        description
-          "Number of times that node was put in maintenance.";
-      }
-      leaf maintenance-clears {
-        type yang:counter32;
-        description
-          "Number of times that node was put out of maintenance.";
-      }
-      leaf modifies {
-        type yang:counter32;
-        description
-          "Number of times that node was modified.";
-      }
-    } // node
-    container connectivity-matrix-entry {
-      description
-        "Containing connectivity matrix entry level statistics
-         attributes.";
-      leaf creates {
-        type yang:counter32;
-        description
-          "Number of times that a connectivity matrix entry was
-           created.";
-        reference
-          "RFC6241. Section 7.2 for 'create' operation. ";
-      }
-      leaf deletes {
-        type yang:counter32;
-        description
-          "Number of times that a connectivity matrix entry was
-           deleted.";
-        reference
-          "RFC6241. Section 7.2 for 'delete' operation. ";
-      }
-      leaf disables {
-        type yang:counter32;
-        description
-          "Number of times that a connectivity matrix entry was
-           disabled.";
-      }
-      leaf enables {
-        type yang:counter32;
-        description
-          "Number of times that a connectivity matrix entry was
-           enabled.";
-      }
-      leaf modifies {
-        type yang:counter32;
-        description
-          "Number of times that a connectivity matrix entry was
-           modified.";
-      }
-    } // connectivity-matrix-entry
-  } // statistics-per-node
-
-  grouping statistics-per-ttp {
-    description
-      "Statistics attributes per TE TTP (Tunnel Termination Point).";
-    leaf discontinuity-time {
-      type yang:date-and-time;
-      mandatory true;
-      description
-        "The time on the most recent occasion at which any one or
-         more of this interface's counters suffered a
-         discontinuity.  If no such discontinuities have occurred
-         since the last re-initialization of the local management
-         subsystem, then this node contains the time the local
-         management subsystem re-initialized itself.";
-    }
-    container tunnel-termination-point {
-      description
-        "Containing TE TTP (Tunnel Termination Point) level
-         statistics attributes.";
-      /* Administrative attributes */
-      leaf disables {
-        type yang:counter32;
-        description
-          "Number of times that TTP was disabled.";
-      }
-      leaf enables {
-        type yang:counter32;
-        description
-          "Number of times that TTP was enabled.";
-      }
-      leaf maintenance-clears {
-        type yang:counter32;
-        description
-          "Number of times that TTP was put out of maintenance.";
-      }
-      leaf maintenance-sets {
-        type yang:counter32;
-        description
-          "Number of times that TTP was put in maintenance.";
-      }
-      leaf modifies {
-        type yang:counter32;
-        description
-          "Number of times that TTP was modified.";
-      }
-      /* Operational attributes */
-      leaf downs {
-        type yang:counter32;
-        description
-          "Number of times that TTP was set to operational down.";
-      }
-      leaf ups {
-        type yang:counter32;
-        description
-          "Number of times that TTP was set to operational up.";
-      }
-      leaf in-service-clears {
-        type yang:counter32;
-        description
-          "Number of times that TTP was taken out of service
-           (TE tunnel was released).";
-      }
-      leaf in-service-sets {
-        type yang:counter32;
-        description
-          "Number of times that TTP was put in service by a TE
-           tunnel (TE tunnel was set up).";
-      }
-    } // tunnel-termination-point
-
-    container local-link-connectivity {
-      description
-        "Containing TE LLCL (Local Link Connectivity List) level
-         statistics attributes.";
-      leaf creates {
-        type yang:counter32;
-        description
-          "Number of times that an LLCL entry was created.";
-        reference
-          "RFC6241. Section 7.2 for 'create' operation. ";
-      }
-      leaf deletes {
-        type yang:counter32;
-        description
-          "Number of times that an LLCL entry was deleted.";
-        reference
-          "RFC6241. Section 7.2 for 'delete' operation.";
-      }
-      leaf disables {
-        type yang:counter32;
-        description
-          "Number of times that an LLCL  entry was disabled.";
-      }
-      leaf enables {
-        type yang:counter32;
-        description
-          "Number of times that an LLCL  entry was enabled.";
-      }
-      leaf modifies {
-        type yang:counter32;
-        description
-          "Number of times that an LLCL  entry was modified.";
-      }
-    } // local-link-connectivity
-  } // statistics-per-ttp
-
-  grouping te-link-augment {
-    description
-      "Augmentation for TE link.";
-
-    container te {
-      must "count(../nt:supporting-link)<=1" {
-        description
-          "For a link in a TE topology, there cannot be more
-           than 1 supporting link. If one or more link paths are
-           abstracted, the underlay is used.";
-      }
-      presence "TE support.";
-      description
-        "Indicates TE support.";
-
-      container config {
-        description
-          "Configuration data.";
-        uses te-link-config;
-      } // config
-      container state {
-        config false;
-        description
-          "Operational state data.";
-        uses te-link-config;
-        uses te-link-state-derived;
-      } // state
-      container statistics {
-        config false;
-        description
-          "Statistics data.";
-        uses statistics-per-link;
-      } // statistics
-    } // te
-  } // te-link-augment
-
-  grouping te-link-config {
-    description
-      "TE link configuration grouping.";
-    choice bundle-stack-level {
-      description
-        "The TE link can be partitioned into bundled
-         links, or component links.";
-      case bundle {
-        container bundled-links {
-          description
-            "A set of bundled links.";
-          reference
-            "RFC4201: Link Bundling in MPLS Traffic Engineering
-            (TE).";
-          list bundled-link {
-            key "sequence";
-            description
-              "Specify a bundled interface that is
-               further partitioned.";
-            leaf sequence {
-              type uint32;
-              description
-                "Identify the sequence in the bundle.";
-            }
-            leaf src-tp-ref {
-              type leafref {
-                path "../../../../../../nw:node[nw:node-id = "
-                  + "current()/../../../../../nt:source/"
-                  + "nt:source-node]/"
-                  + "nt:termination-point/nt:tp-id";
-                require-instance true;
-              }
-              description
-                "Reference to another TE termination point on the
-                 same souruce node.";
-            }
-            leaf des-tp-ref {
-              type leafref {
-                path "../../../../../../nw:node[nw:node-id = "
-                  + "current()/../../../../../nt:destination/"
-                  + "nt:dest-node]/"
-                  + "nt:termination-point/nt:tp-id";
-                require-instance true;
-              }
-              description
-                "Reference to another TE termination point on the
-                 same destination node.";
-            }
-          } // list bundled-link
-        }
-      }
-      case component {
-        container component-links {
-          description
-            "A set of component links";
-          list component-link {
-            key "sequence";
-            description
-              "Specify a component interface that is
-               sufficient to unambiguously identify the
-               appropriate resources";
-
-            leaf sequence {
-              type uint32;
-              description
-                "Identify the sequence in the bundle.";
-            }
-            leaf src-interface-ref {
-              type string;
-              description
-                "Reference to component link interface on the
-                 source node.";
-            }
-            leaf des-interface-ref {
-              type string;
-              description
-                "Reference to component link interface on the
-                 destinatioin node.";
-            }
-          }
-        }
-      }
-    } // bundle-stack-level
-
-    leaf-list te-link-template {
-      if-feature template;
-      type leafref {
-        path "../../../../../te/templates/link-template/name";
-      }
-      description
-        "The reference to a TE link template.";
-    }
-    uses te-link-config-attributes;
-  } // te-link-config
-
-  grouping te-link-config-attributes {
-    description
-      "Link configuration attributes in a TE topology.";
-    container te-link-attributes {
-      description "Link attributes in a TE topology.";
-      leaf access-type {
-        type te-types:te-link-access-type;
-        description
-          "Link access type, which can be point-to-point or
-           multi-access.";
-      }
-      container external-domain {
-        description
-          "For an inter-domain link, specify the attributes of
-           the remote end of link, to facilitate the signalling at
-           local end.";
-        uses te-topology-ref;
-        leaf remote-te-node-id {
-          type te-types:te-node-id;
-          description
-            "Remote TE node identifier, used together with
-             remote-te-link-id to identify the remote link
-             termination point in a different domain.";
-        }
-        leaf remote-te-link-tp-id {
-          type te-types:te-tp-id;
-          description
-            "Remote TE link termination point identifier, used
-             together with remote-te-node-id to identify the remote
-             link termination point in a different domain.";
-        }
-        leaf plug-id {
-          type uint32;
-          description
-            "A topology-wide unique number that identifies on the
-             network a connectivity supporting a given inter-domain
-             TE link. This is more flexible alternative to specifying
-             remote-te-node-id and remote-te-link-tp-id, when the
-             provider does not know remote-te-node-id and
-             remote-te-link-tp-id or need to give client the
-             flexibility to mix-n-match multiple topologies.";
-        }
-      }
-      leaf is-abstract {
-        type empty;
-        description "Present if the link is abstract.";
-      }
-      leaf name {
-        type string;
-        description "Link Name.";
-      }
-      container underlay {
-        if-feature te-topology-hierarchy;
-        presence
-          "Indicates the underlay exists for this link.";
-        description "Attributes of the te-link underlay.";
-        reference
-          "RFC4206: Label Switched Paths (LSP) Hierarchy with
-           Generalized Multi-Protocol Label Switching (GMPLS)
-           Traffic Engineering (TE)";
-
-        uses te-link-underlay-attributes;
-      } // underlay
-      leaf admin-status {
-        type te-types:te-admin-status;
-        description
-          "The administrative state of the link.";
-      }
-
-      uses te-link-info-attributes;
-    } // te-link-attributes
-  } // te-link-config-attributes
-
-  grouping te-link-connectivity-attributes {
-    description
-      "Advertised TE connectivity attributes.";
-    leaf max-link-bandwidth {
-      type te-bandwidth;
-      description
-        "Maximum bandwidth that can be seen on this link in this
-         direction. Units in bytes per second.";
-      reference
-        "RFC3630: Traffic Engineering (TE) Extensions to OSPF
-         Version 2.
-         RFC5305: IS-IS Extensions for Traffic Engineering.";
-    }
-    leaf max-resv-link-bandwidth {
-      type te-bandwidth;
-      description
-        "Maximum amount of bandwidth that can be reserved in this
-         direction in this link. Units in bytes per second.";
-      reference
-        "RFC3630: Traffic Engineering (TE) Extensions to OSPF
-         Version 2.
-         RFC5305: IS-IS Extensions for Traffic Engineering.";
-    }
-    list unreserved-bandwidth {
-      key "priority";
-      max-elements "8";
-      description
-        "Unreserved bandwidth for 0-7 priority levels. Units in
-         bytes per second.";
-      reference
-        "RFC3630: Traffic Engineering (TE) Extensions to OSPF
-         Version 2.
-         RFC5305: IS-IS Extensions for Traffic Engineering.";
-      leaf priority {
-        type uint8 {
-          range "0..7";
-        }
-        description "Priority.";
-      }
-      leaf bandwidth {
-        type te-bandwidth;
-        description
-          "Unreserved bandwidth for this level.";
-      }
-    }
-    leaf te-default-metric {
-      type uint32;
-      description
-        "Traffic engineering metric.";
-    }
-    leaf te-delay-metric {
-      type uint32;
-      description
-        "Traffic engineering delay metric.";
-    }
-    container te-srlgs {
-      description
-        "Containing a list of SLRGs.";
-      leaf-list value {
-        type te-types:srlg;
-        description "SRLG value.";
-        reference
-          "RFC4202: Routing Extensions in Support of
-           Generalized Multi-Protocol Label Switching (GMPLS).";
-      }
-    }
-    container te-nsrlgs {
-      if-feature nsrlg;
-      description
-        "Containing a list of NSRLGs (Not Sharing Risk Link
-         Groups).
-         When an abstract TE link is configured, this list specifies
-         the request that underlay TE paths need to be mutually
-         disjoint with other TE links in the same groups.";
-      leaf-list id {
-        type uint32;
-        description 
-          "NSRLG ID, uniquely configured within a topology.";
-        reference
-          "RFC4872: RSVP-TE Extensions in Support of End-to-End
-           Generalized Multi-Protocol Label Switching (GMPLS)
-           Recovery";
-      }
-    }
-  } // te-link-connectivity-attributes
-
-  grouping te-link-info-attributes {
-    description
-      "Advertised TE information attributes.";
-    leaf link-index {
-      type uint64;
-      description
-        "The link identifier.  If OSPF is used, this represents an
-         ospfLsdbID.  If IS-IS is used, this represents an isisLSPID.
-         If a locally configured link is used, this object represents
-         a unique value, which is locally defined in a router.";
-    }
-    leaf administrative-group {
-      type te-types:admin-groups;
-      description
-        "Administrative group or color of the link.
-         This attribute covers both administrative group (defined in
-         RFC3630, RFC5329, and RFC5305), and extended administrative
-         group (defined in RFC7308).";
-    }
-    uses interface-switching-capability-list;
-    leaf link-protection-type {
-      type enumeration {
-        enum "unprotected" {
-          description "Unprotected.";
-        }
-        enum "extra-traffic" {
-          description "Extra traffic.";
-        }
-        enum "shared" {
-          description "Shared.";
-        }
-        enum "1-for-1" {
-          description "One for one protection.";
-        }
-        enum "1-plus-1" {
-          description "One plus one protection.";
-        }
-        enum "enhanced" {
-          description "Enhanced protection.";
-        }
-      }
-      description
-        "Link Protection Type desired for this link.";
-      reference
-        "RFC4202: Routing Extensions in Support of
-         Generalized Multi-Protocol Label Switching (GMPLS).";
-    }
-    uses te-link-connectivity-attributes;
-  } // te-link-info-attributes
-
-  grouping te-link-iscd-attributes {
-    description
-      "TE link ISCD (Interface Switching Capability Descriptor)
-       attributes.";
-    reference
-      "Sec 1.4, RFC4203: OSPF Extensions in Support of Generalized
-       Multi-Protocol Label Switching (GMPLS). Section 1.4.";
-    list max-lsp-bandwidth {
-      key "priority";
-      max-elements "8";
-      description
-        "Maximum LSP Bandwidth at priorities 0-7.";
-      leaf priority {
-        type uint8 {
-          range "0..7";
-        }
-        description "Priority.";
-      }
-      leaf bandwidth {
-        type te-bandwidth;
-        description
-          "Max LSP Bandwidth for this level";
-      }
-    }
-  } // te-link-iscd-attributes
-
-  grouping te-link-state-derived {
-    description
-      "Link state attributes in a TE topology.";
-    leaf oper-status {
-      type te-types:te-oper-status;
-      description
-        "The current operational state of the link.";
-    }
-    leaf is-transitional {
-      type empty;
-      description
-        "Present if the link is transitional, used as an
-         alternative approach in lieu of inter-layer-lock-id
-         for path computation in a TE topology covering multiple
-         layers or multiple regions.";
-      reference
-        "RFC5212: Requirements for GMPLS-Based Multi-Region and
-         Multi-Layer Networks (MRN/MLN).
-         RFC6001: Generalized MPLS (GMPLS) Protocol Extensions
-         for Multi-Layer and Multi-Region Networks (MLN/MRN).";
-    }
-    uses information-source-per-link-attributes;
-    list information-source-entry {
-      key "information-source";
-      description
-        "A list of information sources learned, including the one
-         used.";
-      uses information-source-per-link-attributes;
-      uses te-link-info-attributes;
-    }
-    container recovery {
-      description
-        "Status of the recovery process.";
-      leaf restoration-status {
-        type te-types:te-recovery-status;
-        description
-          "Restoration status.";
-      }
-      leaf protection-status {
-        type te-types:te-recovery-status;
-        description
-          "Protection status.";
-      }
-    }
-    container underlay {
-      if-feature te-topology-hierarchy;
-      description "State attributes for te-link underlay.";
-      uses te-link-state-underlay-attributes;
-    }
-  } // te-link-state-derived
-
-  grouping te-link-state-underlay-attributes {
-    description "State attributes for te-link underlay.";
-    leaf dynamic {
-      type boolean;
-      description
-        "true if the underlay is dynamically created.";
-    }
-    leaf committed {
-      type boolean;
-      description
-        "true if the underlay is committed.";
-    }
-  } // te-link-state-underlay-attributes
-
-  grouping te-link-underlay-attributes {
-    description "Attributes for  te-link underlay.";
-    reference
-      "RFC4206: Label Switched Paths (LSP) Hierarchy with
-       Generalized Multi-Protocol Label Switching (GMPLS)
-       Traffic Engineering (TE)";
-    container primary-path {
-      description
-        "The service path on the underlay topology that
-         supports this link.";
-      uses te-topology-ref;
-      list path-element {
-        key "path-element-id";
-        description
-          "A list of path elements describing the service path.";
-        leaf path-element-id {
-          type uint32;
-          description "To identify the element in a path.";
-        }
-        uses te-path-element;
-      }
-    } // primary-path
-    list backup-path {
-      key "index";
-      description
-        "A list of backup service paths on the underlay topology that
-         protect the underlay primary path. If the primary path is
-         not protected, the list contains zero elements. If the
-         primary path is protected, the list contains one or more
-         elements.";
-      leaf index {
-        type uint32;
-        description
-          "A sequence number to identify a backup path.";
-      }
-      uses te-topology-ref;
-      list path-element {
-        key "path-element-id";
-        description
-          "A list of path elements describing the backup service
-           path";
-        leaf path-element-id {
-          type uint32;
-          description "To identify the element in a path.";
-        }
-        uses te-path-element;
-      }
-    } // underlay-backup-path
-    leaf protection-type {
-      type uint16;
-      description
-        "Underlay protection type desired for this link";
-    }
-    container tunnel-src {
-      uses te-tunnel-tp-ref;
-      description
-        "Source tunnel termination point of the underlay
-         tunnel.";
-    }
-    container tunnel-des {
-      uses te-tunnel-tp-ref;
-      description
-        "Destination tunnel termination point of the underlay
-         tunnel.";
-    }
-    leaf tunnel-id {
-      type uint16;
-      description
-        "Tunnel identifier used in the SESSION that remains constant
-         over the life of the tunnel.
-         This attribute is used together with underlay tunnel-src
-         and underlay tunnel-src.
-         The detailed information of this tunnel can be retrieved
-         from the ietf-te model.";
-      reference "RFC3209";
-    }
-    leaf tunnel-sharing {
-      type boolean;
-      description
-        "'true' if the underlay tunnel can be shared with other
-         TE links;
-         'false' if the underlay tunnel is dedicated to this 
-         TE link.";
-    }
-  } // te-link-underlay-attributes
-
-  grouping te-node-augment {
-    description
-      "Augmentation for TE node.";
-
-    leaf te-node-id {
-      type te-types:te-node-id;
-      description
-        "The identifier of a node in the TE topology.
-         A node is specific to a topology to which it belongs.";
-    }
-
-    container te {
-      must "../te-node-id" {
-        description
-          "te-node-id is mandatory.";
-      }
-      must "count(../nw:supporting-node)<=1" {
-        description
-          "For a node in a TE topology, there cannot be more
-           than 1 supporting node. If multiple nodes are abstracted,
-           the underlay-topology is used.";
-      }
-      presence "TE support.";
-      description
-        "Indicates TE support.";
-
-      container config {
-        description
-          "Configuration data.";
-        uses te-node-config;
-      } // config
-      container state {
-        config false;
-        description
-          "Operational state data.";
-
-        uses te-node-config;
-        uses te-node-state-derived;
-      } // state
-      container statistics {
-        config false;
-        description
-          "Statistics data.";
-        uses statistics-per-node;
-      } // statistics
-
-      list tunnel-termination-point {
-        key "tunnel-tp-id";
-        description
-          "A termination point can terminate a tunnel.";
-        leaf tunnel-tp-id {
-          type binary;
-          description
-            "Tunnel termination point identifier.";
-        }
-
-        container config {
-          description
-            "Configuration data.";
-          uses te-node-tunnel-termination-attributes;
-        }
-        container state {
-          config false;
-          description
-            "Operational state data.";
-
-          uses te-node-tunnel-termination-attributes;
-          uses geolocation-container;
-        } // state
-        container statistics {
-          config false;
-          description
-            "Statistics data.";
-          uses statistics-per-ttp;
-        } // statistics
-        
-        // Relations to other tunnel termination points
-        list supporting-tunnel-termination-point {
-//          key "node-ref tunnel-tp-ref";
-          key "network-ref node-ref tunnel-tp-ref";
-          description
-            "Identifies the tunnel termination points, that this
-             tunnel termination point is depending on.";
-//          leaf node-ref {
-//            type leafref {
-//              path "../../../../nw:supporting-node/nw:node-ref";
-//              require-instance false;
-//            }
-//            description
-//              "This leaf identifies in which node the supporting
-//               tunnel termination point is present.";
-//          }
-          uses nw:node-ref;
-          leaf tunnel-tp-ref {
-            type leafref {
-              path "/nw:networks/nw:network"+
-                "[nw:network-id="+
-                "current()/../../../../nw:supporting-node/"+
-                "nw:network-ref]/"+
-                "nw:node[nw:node-id=current()/../node-ref]/te/"+
-                "tunnel-termination-point/tunnel-tp-id";
-              require-instance false;
-            }
-            description
-              "Reference to the underlay node, must be in a
-               different topology";
-          }
-        } // supporting-tunnel-termination-point
-      } // tunnel-termination-point
-    } // te
-  } // te-node-augment
-
-  grouping te-node-config {
-    description "TE node configuration grouping.";
-
-    leaf-list te-node-template {
-      if-feature template;
-      type leafref {
-        path "../../../../../te/templates/node-template/name";
-      }
-      description
-        "The reference to a TE node template.";
-    }
-    uses te-node-config-attributes;
-  } // te-node-config
-
-  grouping te-node-config-attributes {
-    description "Configuration node attributes in a TE topology.";
-    container te-node-attributes {
-      description "Containing node attributes in a TE topology.";
-      leaf admin-status {
-        type te-types:te-admin-status;
-        description
-          "The administrative state of the link.";
-      }
-      uses te-node-connectivity-matrix;
-      uses te-node-info-attributes;
-    } // te-node-attributes
-  } // te-node-config-attributes
-
-  grouping te-node-config-attributes-template {
-    description
-      "Configuration node attributes for template in a TE topology.";
-    container te-node-attributes {
-      description "Containing node attributes in a TE topology.";
-      leaf admin-status {
-        type te-types:te-admin-status;
-        description
-          "The administrative state of the link.";
-      }
-      uses te-node-info-attributes;
-    } // te-node-attributes
-  } // te-node-config-attributes-template
-
-  grouping te-node-connectivity-matrix {
-    description "Connectivity matrix on a TE node.";
-    container connectivity-matrices {
-      description
-        "Containing connectivity matrix on a TE node.";
-      leaf number-of-entries {
-        type uint16;
-        description
-          "The number of connectivity matrix entries.
-           If this number is speficied in the configuration request,
-           the number is requested number of entries, which may not
-           all be listed in the list;
-           if this number is reported in the state data,
-           the number is the current number of operational entries.";
-      }
-      uses connectivity-matrix-entry-attributes;
-      list connectivity-matrix {
-        key "id";
-        description
-          "Represents node's switching limitations, i.e. limitations
-           in interconnecting network TE links across the node.";
-        reference
-          "RFC7579: General Network Element Constraint Encoding
-           for GMPLS-Controlled Networks.";
-        leaf id {
-          type uint32;
-          description "Identifies the connectivity-matrix entry.";
-        }
-        container from {
-          leaf tp-ref {
-            type leafref {
-              path "../../../../../../../nt:termination-point/"+
-                "nt:tp-id";
-            }
-            description
-              "Relative reference to source termination point.";
-          }
-          description
-            "Reference to source NTP.";
-        }
-        container to {
-          leaf tp-ref {
-            type leafref {
-              path "../../../../../../../nt:termination-point/"+
-                "nt:tp-id";
-            }
-            description
-              "Relative reference to destination termination point.";
-          }
-          description
-            "Reference to destination NTP.";
-        }
-        uses connectivity-matrix-entry-attributes;
-      } // connectivity-matrix
-    } // connectivity-matrices
-  } // te-node-connectivity-matrix
-
-  grouping te-node-connectivity-matrix-abs {
-    description
-      "Connectivity matrix on a TE node, using absolute
-       paths to reference termination points.";
-    list connectivity-matrix {
-      key "id";
-      description
-        "Represents node's switching limitations, i.e. limitations
-         in interconnecting network TE links across the node.";
-      reference
-        "RFC7579: General Network Element Constraint Encoding
-         for GMPLS-Controlled Networks.";
-      leaf id {
-        type uint32;
-        description "Identifies the connectivity-matrix entry.";
-      }
-      container from {
-        uses nt:tp-ref;
-        description
-          "Reference to source NTP.";
-      }
-      container to {
-        uses nt:tp-ref;
-        description
-          "Reference to destination NTP.";
-      }
-      leaf is-allowed {
-        type boolean;
-        description
-          "true  - switching is allowed,
-           false - switching is disallowed.";
-      }
-    }
-  } // te-node-connectivity-matrix-abs
-
-  grouping te-node-info-attributes {
-    description
-      "Advertised TE information attributes.";
-    leaf domain-id {
-      type uint32;
-      description
-        "Identifies the domain that this node belongs.
-         This attribute is used to support inter-domain links.";
-      reference
-        "RFC5152: A Per-Domain Path Computation Method for
-         Establishing Inter-Domain Traffic Engineering (TE)
-         Label Switched Paths (LSPs).
-         RFC5392: OSPF Extensions in Support of Inter-Autonomous
-         System (AS) MPLS and GMPLS Traffic Engineering.
-         RFC5316: ISIS Extensions in Support of Inter-Autonomous
-         System (AS) MPLS and GMPLS Traffic Engineering.";
-    }
-    leaf is-abstract {
-      type empty;
-      description
-        "Present if the node is abstract, not present if the node
-         is actual.";
-    }
-    leaf name {
-      type inet:domain-name;
-      description "Node name.";
-    }
-    leaf-list signaling-address {
-      type inet:ip-address;
-      description "Node signaling address.";
-    }
-    container underlay-topology {
-      if-feature te-topology-hierarchy;
-      description
-        "When an abstract node encapsulates a topology,
-         the attributes in this container point to said topology.";
-      uses te-topology-ref;
-    }
-  } // te-node-info-attributes
-
-  grouping te-node-state-derived {
-    description "Node state attributes in a TE topology.";
-    leaf oper-status {
-      type te-types:te-oper-status;
-      description
-        "The current operational state of the node.";
-    }
-    uses geolocation-container;
-    leaf is-multi-access-dr {
-      type empty;
-      description
-        "The presence of this attribute indicates that this TE node
-         is a pseudonode elected as a designated router.";
-      reference
-        "RFC3630: Traffic Engineering (TE) Extensions to OSPF
-         Version 2.
-         RFC1195: Use of OSI IS-IS for Routing in TCP/IP and Dual
-         Environments.";
-    }
-    uses information-source-per-node-attributes;
-    list information-source-entry {
-      key "information-source";
-      description
-        "A list of information sources learned, including the one
-         used.";
-      uses information-source-per-node-attributes;
-      uses te-node-connectivity-matrix;
-      uses te-node-info-attributes;
-    }
-  } // te-node-state-derived
-
-  grouping te-node-state-derived-notification {
-    description "Node state attributes in a TE topology.";
-    leaf oper-status {
-      type te-types:te-oper-status;
-      description
-        "The current operational state of the node.";
-    }
-    leaf is-multi-access-dr {
-      type empty;
-      description
-        "The presence of this attribute indicates that this TE node
-         is a pseudonode elected as a designated router.";
-      reference
-        "RFC3630: Traffic Engineering (TE) Extensions to OSPF
-         Version 2.
-         RFC1195: Use of OSI IS-IS for Routing in TCP/IP and Dual
-         Environments.";
-    }
-    uses information-source-per-node-attributes;
-    list information-source-entry {
-      key "information-source";
-      description
-        "A list of information sources learned, including the one
-         used.";
-      uses information-source-per-node-attributes;
-      uses te-node-connectivity-matrix-abs;
-      uses te-node-info-attributes;
-    }
-  } // te-node-state-derived-notification
-
-  grouping te-node-tunnel-termination-attributes {
-    description
-      "Termination capability of a tunnel termination point on a
-       TE node.";
-
-    leaf switching-capability {
-      type identityref {
-        base te-types:switching-capabilities;
-      }
-      description
-        "Switching Capability for this interface.";
-    }
-    leaf encoding {
-      type identityref {
-        base te-types:lsp-encoding-types;
-      }
-      description
-        "Encoding supported by this interface.";
-    }
-    leaf inter-layer-lock-id {
-      type uint32;
-      description
-        "Inter layer lock ID, used for path computation in a TE
-         topology covering multiple layers or multiple regions.";
-      reference
-        "RFC5212: Requirements for GMPLS-Based Multi-Region and
-         Multi-Layer Networks (MRN/MLN).
-         RFC6001: Generalized MPLS (GMPLS) Protocol Extensions
-         for Multi-Layer and Multi-Region Networks (MLN/MRN).";
-    }
-    leaf protection-type {
-      type identityref {
-        base te-types:lsp-prot-type;
-      }
-      description
-        "The protection type that this tunnel termination point
-         is capable of.";
-    }
-
-    container local-link-connectivities {
-      description
-        "Containing local link connectivity list for
-         a tunnel termination point on a TE node.";
-      leaf number-of-entries {
-        type uint16;
-        description
-          "The number of local link connectivity list entries.
-           If this number is speficied in the configuration request,
-           the number is requested number of entries, which may not
-           all be listed in the list;
-           if this number is reported in the state data,
-           the number is the current number of operational entries.";
-      }
-      uses connectivity-matrix-entry-attributes;
-      list local-link-connectivity {
-        key "link-tp-ref";
-        description
-          "The termination capabilities between
-           tunnel-termination-point and link termination-point.
-           The capability information can be used to compute
-           the tunnel path.
-           The Interface Adjustment Capability Descriptors (IACD)
-           [RFC6001] on each link-tp can be derived from this
-           local-link-connectivity list.";
-        reference
-          "RFC6001: Generalized MPLS (GMPLS) Protocol Extensions
-           for Multi-Layer and Multi-Region Networks (MLN/MRN).";
-        leaf link-tp-ref {
-          type leafref {
-            path "../../../../../../nt:termination-point/nt:tp-id";
-          }
-          description
-            "Link termination point.";
-        }
-        
-        uses connectivity-matrix-entry-attributes;
-      } // local-link-connectivity
-    } // local-link-connectivities
-  } // te-node-tunnel-termination-attributes
-
-  grouping te-path-element {
-    description
-      "A group of attributes defining an element in a TE path
-       such as TE node, TE link, TE atomic resource or label.";
-    uses te-types:explicit-route-subobject;
-  } // te-path-element
-
-  grouping te-termination-point-augment {
-    description
-      "Augmentation for TE termination point.";
-
-    leaf te-tp-id {
-      type te-types:te-tp-id;
-      description
-        "An identifier to uniquely identify a TE termination
-         point.";
-    }
-
-    container te {
-      must "../te-tp-id";
-      presence "TE support.";
-      description
-        "Indicates TE support.";
-
-      container config {
-        description
-          "Configuration data.";
-        uses te-termination-point-config;
-      } // config
-      container state {
-        config false;
-        description
-          "Operational state data.";
-        uses te-termination-point-config;
-        uses geolocation-container;
-      } // state
-    } // te
-  } // te-termination-point-augment
-
-  grouping te-termination-point-config {
-    description
-      "TE termination point configuration grouping.";
-    uses interface-switching-capability-list;
-    leaf inter-layer-lock-id {
-      type uint32;
-      description
-        "Inter layer lock ID, used for path computation in a TE
-         topology covering multiple layers or multiple regions.";
-      reference
-        "RFC5212: Requirements for GMPLS-Based Multi-Region and
-         Multi-Layer Networks (MRN/MLN).
-         RFC6001: Generalized MPLS (GMPLS) Protocol Extensions
-         for Multi-Layer and Multi-Region Networks (MLN/MRN).";
-    }
-  } // te-termination-point-config
-
-  grouping te-topologies-augment {
-    description
-      "Augmentation for TE topologies.";
-
-    container te {
-      presence "TE support.";
-      description
-        "Indicates TE support.";
-
-      container templates {
-        description
-          "Configuration parameters for templates used for TE
-           topology.";
-
-        list node-template {
-          if-feature template;
-          key "name";
-          leaf name {
-            type te-types:te-template-name;
-            description
-              "The name to identify a TE node template.";
-          }
-          description
-            "The list of TE node templates used to define sharable
-             and reusable TE node attributes.";
-          uses template-attributes;
-          uses te-node-config-attributes-template;
-        } // node-template
-
-        list link-template {
-          if-feature template;
-          key "name";
-          leaf name {
-            type te-types:te-template-name;
-            description
-              "The name to identify a TE link template.";
-          }
-          description
-            "The list of TE link templates used to define sharable
-             and reusable TE link attributes.";
-          uses template-attributes;
-          uses te-link-config-attributes;
-        } // link-template
-      } // templates
-    } // te
-  } // te-topologies-augment
-
-  grouping te-topology-augment {
-    description
-      "Augmentation for TE topology.";
-
-    leaf provider-id {
-      type te-types:te-global-id;
-      description
-        "An identifier to uniquely identify a provider.";
-    }
-    leaf client-id {
-      type te-types:te-global-id;
-      description
-        "An identifier to uniquely identify a client.";
-    }
-    leaf te-topology-id {
-      type te-types:te-topology-id;
-      description
-        "It is presumed that a datastore will contain many
-         topologies. To distinguish between topologies it is
-         vital to have UNIQUE topology identifiers.";
-    }
-
-    container te {
-      must "../provider-id and ../client-id and ../te-topology-id";
-      presence "TE support.";
-      description
-        "Indicates TE support.";
-
-      container config {
-        description
-          "Configuration data.";
-        uses te-topology-config;
-      } // config
-      container state {
-        config false;
-        description
-          "Operational state data.";
-        uses te-topology-config;
-        uses geolocation-container;
-      } // state
-    } // te
-  } // te-topology-augment
-
-  grouping te-topology-config {
-    description
-      "TE topology configuration grouping.";
-    leaf preference {
-      type uint8 {
-        range "1..255";
-      }
-      description
-        "Specifies a preference for this topology. A lower number
-         indicates a higher preference.";
-    }
-    leaf optimization-criterion {
-      type identityref {
-        base te-types:te-optimization-criterion;
-      }
-      description
-        "Optimization criterion applied to this topology.";
-      reference
-        "RFC3272: Overview and Principles of Internet Traffic
-         Engineering.";
-    }
-    list nsrlg {
-      if-feature nsrlg;
-      key "id";
-      description
-        "List of NSRLGs (Not Sharing Risk Link Groups).";
-      reference
-        "RFC4872: RSVP-TE Extensions in Support of End-to-End
-         Generalized Multi-Protocol Label Switching (GMPLS)
-         Recovery";
-      leaf id {
-        type uint32;
-        description
-          "Identify the NSRLG entry.";
-      }
-      leaf disjointness {
-        type te-path-disjointness;
-        description
-          "The type of resource disjointness.";
-      }
-    } // nsrlg
-  } // te-topology-config
-
-  grouping te-topology-ref {
-    description
-      "References a TE topology.";
-    leaf network-ref {
-      type leafref {
-        path "/nw:networks/nw:network/nw:network-id";
-        require-instance false;
-      }
-      description
-        "A reference to a network-id in base ietf-network module.";
-    }
-  } // te-topology-ref
-
-  grouping te-topology-type {
-    description
-      "Identifies the TE topology type.";
-    container te-topology {
-      presence "Indicates TE topology.";
-      description
-        "Its presence identifies the TE topology type.";
-    }
-  } // te-topology-type
-
-  grouping te-tunnel-tp-ref {
-    description
-      "References a tunnel termination point in a TE topology.";
-    leaf tunnel-tp-ref {
-      type leafref {
-        path "/nw:networks/nw:network[nw:network-id=current()/../"+
-          "network-ref]/nw:node[nw:node-id=current()/../node-ref]/"+
-          "te/tunnel-termination-point/tunnel-tp-id";
-        require-instance false;
-      }
-      description
-        "An absolute reference to a tunnel termination point.
-         (This should not be used for relative references.
-         In such a case, a relative path should be used instead.)";
-    }
-    uses nw:node-ref;
-  } // te-tunnel-tp-ref
-
-  grouping template-attributes {
-    description
-      "Common attributes for all templates.";
-
-    leaf priority {
-      type uint16;
-      description
-        "The preference value to resolve conflicts between different
-         templates. When two or more templates specify values for
-         one configuration attribute, the value from the template
-         with the highest priority is used.";
-    }
-    leaf reference-change-policy {
-      type enumeration {
-        enum no-action {
-          description
-            "When an attribute changes in this template, the
-             configuration node referring to this template does
-             not take any action.";
-        }
-        enum not-allowed {
-          description
-            "When any configuration object has a reference to this
-             template, changing this template is not allowed.";
-        }
-        enum cascade {
-          description
-            "When an attribute changes in this template, the
-             configuration object referring to this template applies
-             the new attribute value to the corresponding
-             configuration.";
-        }
-      }
-      description
-        "This attribute specifies the action taken to a configuration
-         node that has a reference to this template.";
-    }
-  } // template-attributes
-
-  /*
-   * Configuration data nodes
-   */
-  augment "/nw:networks/nw:network/nw:network-types" {
-    description
-      "Introduce new network type for TE topology.";
-    uses te-topology-type;
-  }
-
-  augment "/nw:networks" {
-    description
-      "Augmentation parameters for TE topologies.";
-    uses te-topologies-augment;
-  }
-
-  augment "/nw:networks/nw:network" {
-    when "nw:network-types/te-topology" {
-      description
-        "Augmentation parameters apply only for networks with
-         TE topology type.";
-    }
-    description
-      "Configuration parameters for TE topology.";
-    uses te-topology-augment;
-  }
-
-  augment "/nw:networks/nw:network/nw:node" {
-    when "../nw:network-types/te-topology" {
-      description
-        "Augmentation parameters apply only for networks with
-         TE topology type.";
-    }
-    description
-      "Configuration parameters for TE at node level.";
-    uses te-node-augment;
-  }
-
-  augment "/nw:networks/nw:network/nt:link" {
-    when "../nw:network-types/te-topology" {
-      description
-        "Augmentation parameters apply only for networks with
-         TE topology type.";
-    }
-    description
-      "Configuration parameters for TE at link level";
-    uses te-link-augment;
-  }
-
-  augment "/nw:networks/nw:network/nw:node/"
-        + "nt:termination-point" {
-    when "../../nw:network-types/te-topology" {
-      description
-        "Augmentation parameters apply only for networks with
-         TE topology type.";
-    }
-    description
-      "Configuration parameters for TE at termination point level";
-    uses te-termination-point-augment;
-  }
-
-  /*
-   * Notifications
-   */
-  grouping te-node-config-attributes-notification {
-            description
-              "Configuration node attributes for template in a TE topology.";
-            container te-node-attributes {
-              description "Containing node attributes in a TE topology.";
-              leaf admin-status {
-                type te-types:te-admin-status;
-                description
-                  "The administrative state of the link.";
-              }
-              uses te-node-connectivity-matrix-abs;
-              uses te-node-info-attributes;
-            } // te-node-attributes
-  } // te-node-config-attributes-notification
-
-  notification te-node-event {
-    description "Notification event for TE node.";
-    leaf event-type {
-      type te-types:te-topology-event-type;
-      description "Event type.";
-    }
-    uses nw:node-ref;
-    uses te-topology-type;
-    uses tet:te-node-config-attributes-notification;
-    uses tet:te-node-state-derived-notification;
-  }
-
-  notification te-link-event {
-    description "Notification event for TE link.";
-    leaf event-type {
-      type te-types:te-topology-event-type;
-      description "Event type";
-    }
-    uses nt:link-ref;
-    uses te-topology-type;
-    uses tet:te-link-config-attributes;
-    uses tet:te-link-state-derived;
-  }
-
-  augment "/te-link-event/te-link-attributes/underlay" {
-    description "Add state attributes to te-link underlay.";
-    uses te-link-state-underlay-attributes;
-  }
-
-}
diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-te-types.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-te-types.yang
deleted file mode 100644
index 2e76380..0000000
--- a/apps/tenbi/yangmodel/src/main/yang/ietf-te-types.yang
+++ /dev/null
@@ -1,1229 +0,0 @@
-module ietf-te-types {
-
-  namespace "urn:ietf:params:xml:ns:yang:ietf-te-types";
-
-  /* Replace with IANA when assigned */
-  prefix "te-types";
-
-  import ietf-inet-types {
-    prefix inet;
-  }
-
-  import ietf-yang-types {
-    prefix "yang";
-  }
-
-  organization
-    "IETF Traffic Engineering Architecture and Signaling (TEAS)
-     Working Group";
-
-  contact
-    "WG Web:   <http://tools.ietf.org/wg/teas/>
-     WG List:  <mailto:teas@ietf.org>
-
-     WG Chair: Lou Berger
-               <mailto:lberger@labn.net>
-
-     WG Chair: Vishnu Pavan Beeram
-               <mailto:vbeeram@juniper.net>
-
-     Editor:   Tarek Saad
-               <mailto:tsaad@cisco.com>
-
-     Editor:   Rakesh Gandhi
-               <mailto:rgandhi@cisco.com>
-
-     Editor:   Vishnu Pavan Beeram
-               <mailto:vbeeram@juniper.net>
-
-     Editor:   Himanshu Shah
-               <mailto:hshah@ciena.com>
-
-     Editor:   Xufeng Liu
-               <mailto:xufeng.liu@ericsson.com>
-
-     Editor:   Xia Chen
-               <mailto:jescia.chenxia@huawei.com>
-
-     Editor:   Raqib Jones
-               <mailto:raqib@Brocade.com>
-
-     Editor:   Bin Wen
-               <mailto:Bin_Wen@cable.comcast.com>";
-
-  description
-    "This module contains a collection of generally
-    useful TE specific YANG data type defintions.";
-
-  revision "2016-07-05" {
-    description "Latest revision of TE basic types";
-    reference "RFC3209";
-  }
-
-  /*
-   * Identities
-   */
-  identity tunnel-type {
-    description
-      "Base identity from which specific tunnel types are
-      derived.";
-  }
-
-  identity tunnel-p2p {
-    base tunnel-type;
-    description
-      "TE point-to-point tunnel type.";
-  }
-
-  identity tunnel-p2mp {
-    base tunnel-type;
-    description
-      "TE point-to-multipoint tunnel type.";
-  }
-
-  identity state-type {
-    description
-      "Base identity for TE states";
-  }
-
-  identity state-up {
-    base state-type;
-    description
-      "State up";
-  }
-
-  identity state-down {
-    base state-type;
-    description
-      "State down";
-  }
-
-  identity path-invalidation-action-type {
-    description
-      "Base identity for TE path invalidation action types";
-  }
-
-  identity tunnel-invalidation-action-drop-type {
-    base path-invalidation-action-type;
-    description
-      "TE path invalidation action drop";
-  }
-
-  identity tunnel-invalidation-action-drop-tear {
-    base path-invalidation-action-type;
-    description
-      "TE path invalidation action tear";
-  }
-
-  identity lsp-prot-type {
-    description
-      "Base identity from which LSP protection types are
-      derived.";
-  }
-
-  identity lsp-prot-unprotected {
-    base lsp-prot-type;
-    description
-      "LSP protection 'Unprotected'";
-    reference "RFC4872";
-  }
-
-  identity lsp-prot-reroute-extra {
-    base lsp-prot-type;
-    description
-      "LSP protection '(Full) Rerouting'";
-    reference "RFC4872";
-  }
-
-  identity lsp-prot-reroute {
-    base lsp-prot-type;
-    description
-      "LSP protection 'Rerouting without Extra-Traffic'";
-    reference "RFC4872";
-  }
-
-  identity lsp-prot-1-for-n {
-    base lsp-prot-type;
-    description
-      "LSP protection '1:N Protection with Extra-Traffic'";
-    reference "RFC4872";
-  }
-
-  identity lsp-prot-unidir-1-to-1 {
-    base lsp-prot-type;
-    description
-      "LSP protection '1+1 Unidirectional Protection'";
-    reference "RFC4872";
-  }
-
-  identity lsp-prot-bidir-1-to-1 {
-    base lsp-prot-type;
-    description
-      "LSP protection '1+1 Bidirectional Protection'";
-    reference "RFC4872";
-  }
-
-  identity switching-capabilities {
-    description
-      "Base identity for interface switching capabilities";
-  }
-
-  identity switching-psc1 {
-    base switching-capabilities;
-    description
-      "Packet-Switch Capable-1 (PSC-1)";
-  }
-
-  identity switching-evpl {
-    base switching-capabilities;
-    description
-      "Ethernet Virtual Private Line (EVPL)";
-  }
-
-  identity switching-l2sc {
-    base switching-capabilities;
-    description
-      "Layer-2 Switch Capable (L2SC)";
-  }
-
-  identity switching-tdm {
-    base switching-capabilities;
-    description
-      "Time-Division-Multiplex Capable (TDM)";
-  }
-
-  identity switching-otn {
-    base switching-capabilities;
-    description
-      "OTN-TDM capable";
-  }
-
-  identity switching-dcsc {
-    base switching-capabilities;
-    description
-      "Data Channel Switching Capable (DCSC)";
-  }
-
-  identity switching-lsc {
-    base switching-capabilities;
-    description
-      "Lambda-Switch Capable (LSC)";
-  }
-
-  identity switching-fsc {
-    base switching-capabilities;
-    description
-      "Fiber-Switch Capable (FSC)";
-  }
-
-  identity lsp-encoding-types {
-    description
-      "Base identity for encoding types";
-  }
-
-  identity lsp-encoding-packet {
-    base lsp-encoding-types;
-    description
-      "Packet LSP encoding";
-  }
-
-  identity lsp-encoding-ethernet {
-    base lsp-encoding-types;
-    description
-      "Ethernet LSP encoding";
-  }
-
-  identity lsp-encoding-pdh {
-    base lsp-encoding-types;
-    description
-      "ANSI/ETSI LSP encoding";
-  }
-
-  identity lsp-encoding-sdh {
-    base lsp-encoding-types;
-    description
-      "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding";
-  }
-
-  identity lsp-encoding-digital-wrapper {
-    base lsp-encoding-types;
-    description
-      "Digital Wrapper LSP encoding";
-  }
-
-  identity lsp-encoding-lambda {
-    base lsp-encoding-types;
-    description
-      "Lambda (photonic) LSP encoding";
-  }
-
-  identity lsp-encoding-fiber {
-    base lsp-encoding-types;
-    description
-      "Fiber LSP encoding";
-  }
-
-  identity lsp-encoding-fiber-channel {
-    base lsp-encoding-types;
-    description
-      "FiberChannel LSP encoding";
-  }
-
-  identity lsp-encoding-oduk {
-    base lsp-encoding-types;
-    description
-      "G.709 ODUk (Digital Path)LSP encoding";
-  }
-
-  identity lsp-encoding-optical-channel {
-    base lsp-encoding-types;
-    description
-      "Line (e.g., 8B/10B) LSP encoding";
-  }
-
-  identity lsp-encoding-line {
-    base lsp-encoding-types;
-    description
-      "Line (e.g., 8B/10B) LSP encoding";
-  }
-
-  identity path-signaling-type {
-    description
-      "Base identity from which specific path signaling
-       types are derived.";
-  }
-
-  identity path-signaling-rsvpte {
-    base tunnel-type;
-    description
-      "RSVP-TE path signaling type";
-  }
-
-  identity path-signaling-sr {
-    base tunnel-type;
-    description
-      "Segment-routing path signaling type";
-  }
-
-  /* TE basic features */
-  feature p2mp-te {
-    description
-      "Indicates support for P2MP-TE";
-  }
-
-  feature frr-te {
-    description
-      "Indicates support for TE FastReroute (FRR)";
-  }
-
-  feature extended-admin-groups {
-    description
-      "Indicates support for TE link extended admin
-      groups.";
-  }
-
-  feature named-path-affinities {
-    description
-      "Indicates support for named path affinities";
-  }
-
-  feature named-extended-admin-groups {
-    description
-      "Indicates support for named extended admin groups";
-  }
-
-  feature named-srlg-groups {
-    description
-      "Indicates support for named SRLG groups";
-  }
-
-  feature named-path-constraints {
-    description
-      "Indicates support for named path constraints";
-  }
-
-  grouping explicit-route-subobject {
-    description
-      "The explicit route subobject grouping";
-    choice type {
-      description
-        "The explicit route subobject type";
-      case ipv4-address {
-        description
-          "IPv4 address explicit route subobject";
-        leaf v4-address {
-          type inet:ipv4-address;
-          description
-            "An IPv4 address.  This address is
-            treated as a prefix based on the
-            prefix length value below. Bits beyond
-            the prefix are ignored on receipt and
-            SHOULD be set to zero on transmission.";
-        }
-        leaf v4-prefix-length {
-          type uint8;
-          description
-            "Length in bits of the IPv4 prefix";
-        }
-        leaf v4-loose {
-          type boolean;
-          description
-            "Describes whether the object is loose
-            if set, or otherwise strict";
-        }
-      }
-      case ipv6-address {
-        description
-          "IPv6 address Explicit Route Object";
-        leaf v6-address {
-          type inet:ipv6-address;
-          description
-            "An IPv6 address.  This address is
-            treated as a prefix based on the
-            prefix length value below.  Bits
-            beyond the prefix are ignored on
-            receipt and SHOULD be set to zero
-            on transmission.";
-        }
-        leaf v6-prefix-length {
-          type uint8;
-          description
-            "Length in bits of the IPv4 prefix";
-        }
-        leaf v6-loose {
-          type boolean;
-          description
-            "Describes whether the object is loose
-            if set, or otherwise strict";
-        }
-      }
-      case as-number {
-        leaf as-number {
-          type uint16;
-          description "AS number";
-        }
-        description
-          "Autonomous System explicit route subobject";
-      }
-      case unnumbered-link {
-        leaf router-id {
-          type inet:ip-address;
-          description
-            "A router-id address";
-        }
-        leaf interface-id {
-          type uint32;
-          description "The interface identifier";
-        }
-        description
-          "Unnumbered link explicit route subobject";
-        reference
-          "RFC3477: Signalling Unnumbered Links in
-          RSVP-TE";
-      }
-      case label {
-        leaf value {
-          type uint32;
-          description "the label value";
-        }
-        description
-          "The Label ERO subobject";
-      }
-      /* AS domain sequence..? */
-    }
-  }
-
-  grouping record-route-subobject {
-    description
-      "The record route subobject grouping";
-    choice type {
-      description
-        "The record route subobject type";
-      case ipv4-address {
-        leaf v4-address {
-          type inet:ipv4-address;
-          description
-            "An IPv4 address.  This address is
-            treated as a prefix based on the prefix
-            length value below. Bits beyond the
-            prefix are ignored on receipt and
-            SHOULD be set to zero on transmission.";
-        }
-        leaf v4-prefix-length {
-          type uint8;
-          description
-            "Length in bits of the IPv4 prefix";
-        }
-        leaf v4-flags {
-          type uint8;
-          description
-            "IPv4 address sub-object flags";
-          reference "RFC3209";
-        }
-      }
-      case ipv6-address {
-        leaf v6-address {
-          type inet:ipv6-address;
-          description
-            "An IPv6 address.  This address is
-            treated as a prefix based on the
-            prefix length value below. Bits
-            beyond the prefix are ignored on
-            receipt and SHOULD be set to zero
-            on transmission.";
-        }
-        leaf v6-prefix-length {
-          type uint8;
-          description
-            "Length in bits of the IPv4 prefix";
-        }
-        leaf v6-flags {
-          type uint8;
-          description
-            "IPv6 address sub-object flags";
-          reference "RFC3209";
-        }
-      }
-      case unnumbered-link {
-        leaf router-id {
-          type inet:ip-address;
-          description
-            "A router-id address";
-        }
-        leaf interface-id {
-          type uint32;
-          description "The interface identifier";
-        }
-        description
-          "Unnumbered link record route subobject";
-        reference
-          "RFC3477: Signalling Unnumbered Links in
-           RSVP-TE";
-      }
-      case label {
-        leaf value {
-          type uint32;
-          description "the label value";
-        }
-        leaf flags {
-          type uint8;
-          description
-            "Label sub-object flags";
-          reference "RFC3209";
-        }
-        description
-          "The Label ERO subobject";
-      }
-    }
-  }
-
-  identity route-usage-type {
-    description
-      "Base identity for route usage";
-  }
-
-  identity route-include-ero {
-    base route-usage-type;
-    description
-      "Include ERO from route";
-  }
-
-  identity route-exclude-ero {
-    base route-usage-type;
-    description
-      "Exclude ERO from route";
-  }
-
-  identity route-exclude-srlg {
-    base route-usage-type;
-    description
-      "Exclude SRLG from route";
-  }
-
-  identity path-metric-type {
-    description
-      "Base identity for path metric type";
-  }
-
-  identity path-metric-te {
-    base path-metric-type;
-    description
-      "TE path metric";
-  }
-
-  identity path-metric-igp {
-    base path-metric-type;
-    description
-      "IGP path metric";
-  }
-
-  identity path-tiebreaker-type {
-    description
-      "Base identity for path tie-breaker type";
-  }
-
-  identity path-tiebreaker-minfill {
-    base path-tiebreaker-type;
-    description
-      "Min-Fill LSP path placement";
-  }
-
-  identity path-tiebreaker-maxfill {
-    base path-tiebreaker-type;
-    description
-      "Max-Fill LSP path placement";
-  }
-
-  identity path-tiebreaker-randoom {
-    base path-tiebreaker-type;
-    description
-      "Random LSP path placement";
-  }
-
-  identity bidir-provisioning-mode {
-    description
-      "Base identity for bidirectional provisioning
-      mode.";
-  }
-
-  identity bidir-provisioning-single-sided {
-    base bidir-provisioning-mode;
-    description
-      "Single-sided bidirectional provioning mode";
-  }
-
-  identity bidir-provisioning-double-sided {
-    base bidir-provisioning-mode;
-    description
-      "Double-sided bidirectional provioning mode";
-  }
-
-  identity bidir-association-type {
-    description
-      "Base identity for bidirectional association type";
-  }
-
-  identity bidir-assoc-corouted {
-    base bidir-association-type;
-    description
-      "Co-routed bidirectional association type";
-  }
-
-  identity bidir-assoc-non-corouted {
-    base bidir-association-type;
-    description
-      "Non co-routed bidirectional association type";
-  }
-
-  identity resource-affinities-type {
-    description
-      "Base identity for resource affinities";
-  }
-
-  identity resource-aff-include-all {
-    base resource-affinities-type;
-    description
-      "The set of attribute filters associated with a
-      tunnel all of which must be present for a link
-      to be acceptable";
-  }
-
-  identity resource-aff-include-any {
-    base resource-affinities-type;
-    description
-      "The set of attribute filters associated with a
-      tunnel any of which must be present for a link
-      to be acceptable";
-  }
-
-  identity resource-aff-exclude-any {
-    base resource-affinities-type;
-    description
-      "The set of attribute filters associated with a
-      tunnel any of which renders a link unacceptable";
-  }
-
-  identity te-optimization-criterion {
-    description
-      "Base identity for TE optimization criterion.";
-    reference
-      "RFC3272: Overview and Principles of Internet Traffic
-       Engineering.";
-  }
-
-  identity not-optimized {
-    base te-optimization-criterion;
-    description "Optimization is not applied.";
-  }
-
-  identity cost {
-    base te-optimization-criterion;
-    description "Optimized on cost.";
-  }
-
-  identity delay {
-    base te-optimization-criterion;
-    description "Optimized on delay.";
-  }
-
-  /*
-   * Typedefs
-   */
-  typedef performance-metric-normality {
-    type enumeration {
-      enum "unknown" {        
-        value 0;
-        description
-          "Unknown.";
-      }
-      enum "normal" {        
-        value 1;
-        description
-          "Normal.";
-      }
-      enum "abnormal" {        
-        value 2;
-        description
-          "Abnormal. The anomalous bit is set.";
-      }
-    }
-    description
-      "Indicates whether a performance metric is normal, abnormal, or
-       unknown.";
-    reference
-      "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
-       RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
-       RFC7823: Performance-Based Path Selection for Explicitly
-       Routed Label Switched Paths (LSPs) Using TE Metric
-       Extensions";
-  }
-
-  typedef te-admin-status {
-    type enumeration {
-      enum up {
-        description
-          "Enabled.";
-      }
-      enum down {
-        description
-          "Disabled.";
-      }
-      enum testing {
-        description
-          "In some test mode.";
-      }
-      enum preparing-maintenance {
-        description
-          "Resource is disabled in the control plane to prepare for
-           graceful shutdown for maintenance purposes.";
-        reference
-          "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS
-           Traffic Engineering Networks";
-      }
-      enum maintenance {
-        description
-          "Resource is disabled in the data plane for maintenance
-           purposes.";
-      }
-    }
-    description
-      "Defines a type representing the administrative status of 
-       a TE resource.";
-  }
-
-  typedef te-global-id {
-    type uint32;
-    description
-      "An identifier to uniquely identify an operator, which can be
-       either a provider or a client.
-       The definition of this type is taken from RFC6370 and RFC5003.
-       This attribute type is used solely to provide a globally
-       unique context for TE topologies.";
-  }
-
-  typedef te-link-access-type {
-    type enumeration {
-      enum point-to-point {
-        description
-          "The link is point-to-point.";
-      }
-      enum multi-access {
-        description
-          "The link is multi-access, including broacast and NBMA.";
-      }
-    }
-    description
-      "Defines a type representing the access type of a TE link.";
-    reference
-      "RFC3630: Traffic Engineering (TE) Extensions to OSPF
-       Version 2.";
-  }
-
-  typedef te-node-id {
-    type yang:dotted-quad;
-    description
-      "An identifier for a node in a topology.
-       The identifier is represented as 32-bit unsigned integer in
-       the dotted-quad notation.
-       This attribute is mapped to Router ID in
-       RFC3630, RFC5329, RFC5305, and RFC6119.";
-  }
-
-  typedef te-oper-status {
-    type enumeration {
-      enum up {
-        description
-        "Operational up.";
-      }
-      enum down {
-        description
-        "Operational down.";
-      }
-      enum testing {
-        description
-        "In some test mode.";
-      }
-      enum unknown {
-        description
-        "Status cannot be determined for some reason.";
-      }
-      enum preparing-maintenance {
-        description
-          "Resource is disabled in the control plane to prepare for
-           graceful shutdown for maintenance purposes.";
-        reference
-          "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS
-           Traffic Engineering Networks";
-      }
-      enum maintenance {
-        description
-          "Resource is disabled in the data plane for maintenance
-           purposes.";
-      }
-    }
-    description
-      "Defines a type representing the operational status of 
-       a TE resource.";
-  }
-
-  typedef te-recovery-status {
-    type enumeration {
-      enum normal {
-        description
-          "Both the recovery and working spans are fully
-           allocated and active, data traffic is being
-           transported over (or selected from) the working
-           span, and no trigger events are reported.";
-      }
-      enum recovery-started {
-        description
-          "The recovery action has been started, but not completed.";
-      }
-      enum recovery-succeeded {
-        description
-          "The recovery action has succeeded. The working span has
-           reported a failure/degrade condition and the user traffic
-           is being transported (or selected) on the recovery span.";
-      }
-      enum recovery-failed {
-        description
-          "The recovery action has failed.";
-      }
-      enum reversion-started {
-        description
-          "The reversion has started.";
-      }
-      enum reversion-failed {
-        description
-          "The reversion has failed.";
-      }
-      enum recovery-unavailable {
-        description
-          "The recovery is unavailable -- either as a result of an
-           operator Lockout command or a failure condition detected
-           on the recovery span.";
-      }
-      enum recovery-admin {
-        description
-          "The operator has issued a command switching the user
-           traffic to the recovery span.";
-      }
-      enum wait-to-restore {
-        description
-          "The recovery domain is recovering from a failuer/degrade
-           condition on the working span that is being controlled by
-           the Wait-to-Restore (WTR) timer.";
-      }
-    }
-    description
-      "Defines the status of a recovery action.";
-    reference
-      "RFC4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS).
-       RFC6378: MPLS Transport Profile (MPLS-TP) Linear Protection";
-  }
-
-  typedef te-template-name {
-    type string {
-      pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
-    }
-    description
-      "A type for the name of a TE node template or TE link
-       template.";
-  }
-  
-  typedef te-topology-event-type {
-    type enumeration {
-      enum "add" {
-        value 0;
-        description 
-          "A TE node or te-link has been added.";
-      }
-      enum "remove" {
-        value 1;
-        description 
-          "A TE node or te-link has been removed.";
-      }
-      enum "update" {
-        value 2;
-        description 
-          "A TE node or te-link has been updated.";
-      }
-    }
-    description "TE  Event type for notifications";
-  } // te-topology-event-type
-
-
-  typedef te-tunnel-event-type {
-      type enumeration {
-        enum "add" {
-          value 0;
-          description
-            "A TE tunnel has been added.";
-        }
-        enum "remove" {
-          value 1;
-          description
-            "A TE tunnel has been removed.";
-        }
-        enum "update" {
-          value 2;
-          description
-            "A TE tunnel has been updated.";
-        }
-      }
-      description "TE  Event type for notifications";
-  } // te-tunnel-event-type
-  
-  typedef te-topology-id {
-    type string {
-      pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
-    }
-    description
-      "An identifier for a topology.";
-  }
-  
-  typedef te-tp-id {
-    type union {
-      type uint32;          // Unnumbered
-      type inet:ip-address; // IPv4 or IPv6 address
-    }
-    description
-      "An identifier for a TE link endpoint on a node.
-       This attribute is mapped to local or remote link identifier in
-       RFC3630 and RFC5305.";
-  }
-  
-  typedef generalized-label {
-    type binary;
-    description
-      "Generalized label. Nodes sending and receiving the
-       Generalized Label know what kinds of link they are
-       using, the Generalized Label does not identify its
-       type.  Instead, nodes are expected to know from the
-       context what type of label to expect.";
-      reference "rfc3471: section 3.2";
-  }
-
-  typedef admin-group {
-    type binary {
-      length 32;
-    }
-    description
-      "Administrative group/Resource class/Color.";
-  }
-
-  typedef extended-admin-group {
-    type binary;
-    description
-      "Extended administrative group/Resource class/Color.";
-  }
-
-  typedef admin-groups {
-    type union {
-      type admin-group;
-      type extended-admin-group;
-    }
-    description "TE administrative group derived type";
-  }
-
-  typedef srlg {
-    type uint32;
-    description "SRLG type";
-  }
-
-  identity path-computation-srlg-type {
-    description
-      "Base identity for SRLG path computation";
-  }
-
-  identity srlg-ignore {
-    base path-computation-srlg-type;
-    description
-      "Ignores SRLGs in path computation";
-  }
-
-  identity srlg-strict {
-    base path-computation-srlg-type;
-    description
-      "Include strict SRLG check in path computation";
-  }
-
-  identity srlg-preferred {
-    base path-computation-srlg-type;
-    description
-      "Include preferred SRLG check in path computation";
-  }
-
-  identity srlg-weighted {
-    base path-computation-srlg-type;
-    description
-      "Include weighted SRLG check in path computation";
-  }
-
-  typedef te-metric {
-    type uint32;
-    description
-      "TE link metric";
-  }
-
-  /**
-   * TE tunnel generic groupings
-   **/
-
-  /* Tunnel path selection parameters */
-  grouping tunnel-path-selection {
-    description
-      "Tunnel path selection properties grouping";
-    container path-selection {
-      description
-        "Tunnel path selection properties container";
-      leaf topology-id {
-        type te-types:te-topology-id;
-        description
-          "The tunnel path is computed using the specific
-          topology identified by this identifier";
-      }
-      leaf cost-limit {
-        type uint32 {
-          range "1..4294967295";
-        }
-        description
-          "The tunnel path cost limit.";
-      }
-      leaf hop-limit {
-        type uint8 {
-          range "1..255";
-        }
-        description
-          "The tunnel path hop limit.";
-      }
-      leaf metric-type {
-        type identityref {
-          base path-metric-type;
-        }
-        default path-metric-te;
-        description
-          "The tunnel path metric type.";
-      }
-      leaf tiebreaker-type {
-        type identityref {
-          base path-tiebreaker-type;
-        }
-        default path-tiebreaker-maxfill;
-        description
-          "The tunnel path computation tie breakers.";
-      }
-      leaf ignore-overload {
-        type boolean;
-        description
-          "The tunnel path can traverse overloaded node.";
-      }
-      uses tunnel-path-affinities;
-      uses tunnel-path-srlgs;
-    }
-  }
-
-  grouping tunnel-path-affinities {
-    description
-      "Path affinities grouping";
-    container tunnel-path-affinities {
-      if-feature named-path-affinities;
-      description
-        "Path affinities container";
-      choice style {
-        description
-          "Path affinities representation style";
-        case values {
-          leaf value {
-            type uint32 {
-              range "0..4294967295";
-            }
-            description
-              "Affinity value";
-          }
-          leaf mask {
-            type uint32 {
-              range "0..4294967295";
-            }
-            description
-              "Affinity mask";
-          }
-        }
-        case named {
-          list constraints {
-            key "usage";
-            leaf usage {
-              type identityref {
-                base resource-affinities-type;
-              }
-              description "Affinities usage";
-            }
-            container constraint {
-              description
-                "Container for named affinities";
-              list affinity-names {
-                key "name";
-                leaf name {
-                  type string;
-                  description
-                    "Affinity name";
-                }
-                description
-                  "List of named affinities";
-              }
-            }
-            description
-              "List of named affinity constraints";
-          }
-        }
-      }
-    }
-  }
-
-  grouping tunnel-path-srlgs {
-    description
-      "Path SRLG properties grouping";
-    container tunnel-path-srlgs {
-      description
-        "Path SRLG properties container";
-      choice style {
-        description
-          "Type of SRLG representation";
-        case values {
-          leaf usage {
-            type identityref {
-              base route-exclude-srlg;
-            }
-            description "SRLG usage";
-          }
-          leaf-list values {
-            type te-types:srlg;
-            description "SRLG value";
-          }
-        }
-        case named {
-          list constraints {
-            key "usage";
-            leaf usage {
-              type identityref {
-                base route-exclude-srlg;
-              }
-              description "SRLG usage";
-            }
-            container constraint {
-              description
-                "Container for named SRLG list";
-              list srlg-names {
-                key "name";
-                leaf name {
-                  type string;
-                  description
-                    "The SRLG name";
-                }
-                description
-                  "List named SRLGs";
-              }
-            }
-            description
-              "List of named SRLG constraints";
-          }
-        }
-      }
-    }
-  }
-
-  grouping tunnel-bidir-assoc-properties {
-    description
-      "TE tunnel associated bidirectional properties
-      grouping";
-    container bidirectional {
-      description
-        "TE tunnel associated bidirectional attributes.";
-      container association {
-        description
-          "Tunnel bidirectional association properties";
-        leaf id {
-          type uint16;
-          description
-            "The TE tunnel association identifier.";
-        }
-        leaf source {
-          type inet:ip-address;
-          description
-            "The TE tunnel association source.";
-        }
-        leaf global-source {
-          type inet:ip-address;
-          description
-            "The TE tunnel association global
-            source.";
-        }
-        leaf type {
-          type identityref {
-            base bidir-association-type;
-          }
-          default bidir-assoc-non-corouted;
-          description
-            "The TE tunnel association type.";
-        }
-        leaf provisioing {
-          type identityref {
-            base bidir-provisioning-mode;
-          }
-          description
-            "Describes the provisioning model of the
-            associated bidirectional LSP";
-          reference
-            "draft-ietf-teas-mpls-tp-rsvpte-ext-
-            associated-lsp, section-3.2";
-        }
-      }
-    }
-  }
-  /*** End of TE tunnel groupings ***/
-
-  /**
-   * TE interface generic groupings
-   **/
-}
diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-te.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-te.yang
deleted file mode 100644
index 40374fe..0000000
--- a/apps/tenbi/yangmodel/src/main/yang/ietf-te.yang
+++ /dev/null
@@ -1,882 +0,0 @@
-module ietf-te {
-
-  namespace "urn:ietf:params:xml:ns:yang:ietf-te";
-
-  /* Replace with IANA when assigned */
-  prefix "te";
-
-  /* Import TE generic types */
-  import ietf-te-types {
-    prefix te-types;
-  }
-
-  import ietf-inet-types {
-    prefix inet;
-  }
-
-  organization
-    "IETF Traffic Engineering Architecture and Signaling (TEAS)
-     Working Group";
-
-  contact
-    "WG Web:   <http://tools.ietf.org/wg/teas/>
-     WG List:  <mailto:teas@ietf.org>
-
-     WG Chair: Lou Berger
-               <mailto:lberger@labn.net>
-
-     WG Chair: Vishnu Pavan Beeram
-               <mailto:vbeeram@juniper.net>
-
-     Editor:   Tarek Saad
-               <mailto:tsaad@cisco.com>
-
-     Editor:   Rakesh Gandhi
-               <mailto:rgandhi@cisco.com>
-
-     Editor:   Vishnu Pavan Beeram
-               <mailto:vbeeram@juniper.net>
-
-     Editor:   Himanshu Shah
-               <mailto:hshah@ciena.com>
-
-     Editor:   Xufeng Liu
-               <mailto:xufeng.liu@ericsson.com>
-
-     Editor:   Xia Chen
-               <mailto:jescia.chenxia@huawei.com>
-
-     Editor:   Raqib Jones
-               <mailto:raqib@Brocade.com>
-
-     Editor:   Bin Wen
-               <mailto:Bin_Wen@cable.comcast.com>";
-
-  description
-    "YANG data module for TE configuration,
-    state, RPC and notifications.";
-
-  revision "2016-07-05" {
-    description "Latest update to TE generic YANG module.";
-    reference "TBD";
-  }
-
-  typedef tunnel-ref {
-    type leafref {
-      path "/te:te/te:tunnels/te:tunnel/te:name";
-    }
-    description
-      "This type is used by data models that need to reference
-       configured TE tunnel.";
-  }
-
-  /**
-   * TE tunnel generic groupings
-   */
-
-  grouping p2p-secondary-path-params {
-    description
-      "tunnel path properties.";
-    container config {
-      description
-        "Configuration parameters relating to
-        tunnel properties";
-      uses path-properties_config;
-      uses path-params_config;
-    }
-    container state {
-      config false;
-      description
-        "State information associated with tunnel
-        properties";
-      uses path-properties_config;
-      uses path-params_config;
-      uses p2p-secondary-path-params_state;
-    }
-  }
-
-  grouping p2p-primary-path-params {
-    description
-      "TE tunnel primary path properties grouping";
-    container config {
-      description
-        "Configuration parameters relating to
-        tunnel properties";
-      uses path-properties_config;
-      uses path-params_config;
-    }
-    container state {
-      config false;
-      description
-        "State information associated with tunnel
-        properties";
-      uses path-params_config;
-      uses p2p-primary-path-params_state;
-    }
-  }
-
-  grouping p2p-primary-path-params_state {
-    description "TE primary path state parameters";
-    list lsp {
-      key
-        "source destination tunnel-id lsp-id "+
-        "extended-tunnel-id type";
-      description "List of LSPs associated with the tunnel.";
-
-      leaf source {
-        type leafref {
-          path "../../../../../../lsps-state/lsp/source";
-        }
-        description
-          "Tunnel sender address extracted from
-          SENDER_TEMPLATE  object";
-        reference "RFC3209";
-      }
-      leaf destination {
-        type leafref {
-          path "../../../../../../lsps-state/lsp/destination";
-        }
-        description
-          "Tunnel endpoint address extracted from
-          SESSION object";
-        reference "RFC3209";
-      }
-      leaf tunnel-id {
-        type leafref {
-          path "../../../../../../lsps-state/lsp/tunnel-id";
-        }
-        description
-          "Tunnel identifier used in the SESSION
-          that remains constant over the life
-          of the tunnel.";
-        reference "RFC3209";
-      }
-      leaf lsp-id {
-        type leafref {
-          path "../../../../../../lsps-state/lsp/lsp-id";
-        }
-        description
-          "Identifier used in the SENDER_TEMPLATE
-          and the FILTER_SPEC that can be changed
-          to allow a sender to share resources with
-          itself.";
-        reference "RFC3209";
-      }
-      leaf extended-tunnel-id {
-        type leafref {
-          path "../../../../../../lsps-state/lsp/extended-tunnel-id";
-        }
-        description
-          "Extended Tunnel ID of the LSP.";
-        reference "RFC3209";
-      }
-      leaf type {
-        type leafref {
-          path "../../../../../../lsps-state/lsp/type";
-        }
-        description "LSP type P2P or P2MP";
-      }
-    }
-  }
-
-  grouping p2p-secondary-path-params_state {
-    description "TE secondary path state parameters";
-    list lsp {
-      key "source";
-      description "List of LSPs associated with the tunnel.";
-
-      leaf source {
-        type leafref {
-          path "../../../../../../../lsps-state/lsp/source";
-        }
-        description
-          "Tunnel sender address extracted from
-          SENDER_TEMPLATE  object";
-        reference "RFC3209";
-      }
-      leaf destination {
-        type leafref {
-          path "../../../../../../../lsps-state/lsp/destination";
-        }
-        description
-          "Tunnel endpoint address extracted from
-          SESSION object";
-        reference "RFC3209";
-      }
-      leaf tunnel-id {
-        type leafref {
-          path "../../../../../../../lsps-state/lsp/tunnel-id";
-        }
-        description
-          "Tunnel identifier used in the SESSION
-          that remains constant over the life
-          of the tunnel.";
-        reference "RFC3209";
-      }
-      leaf lsp-id {
-        type leafref {
-          path "../../../../../../../lsps-state/lsp/lsp-id";
-        }
-        description
-          "Identifier used in the SENDER_TEMPLATE
-          and the FILTER_SPEC that can be changed
-          to allow a sender to share resources with
-          itself.";
-        reference "RFC3209";
-      }
-      leaf extended-tunnel-id {
-        type leafref {
-          path "../../../../../../../lsps-state/lsp/extended-tunnel-id";
-        }
-        description
-          "Extended Tunnel ID of the LSP.";
-        reference "RFC3209";
-      }
-      leaf type {
-        type leafref {
-          path "../../../../../../../lsps-state/lsp/type";
-        }
-        description "LSP type P2P or P2MP";
-      }
-    }
-  }
-
-  grouping path-params_config {
-    description
-      "TE tunnel path parameters configuration grouping";
-    leaf path-named-constraint {
-      if-feature te-types:named-path-constraints;
-      type string;
-      description
-        "Reference to a globally defined named path
-        constraint set";
-    }
-    uses te-types:tunnel-path-selection;
-    choice type {
-      description
-        "Describes the path type";
-      case dynamic {
-        leaf dynamic {
-          type empty;
-          description
-            "A CSPF dynamically computed path";
-        }
-      }
-      case explicit {
-        leaf explicit-path-name {
-          type string;
-          description
-            "The explicit-path name";
-        }
-
-        list explicit-route-objects {
-          key "index";
-          description
-            "List of explicit route objects";
-          leaf index {
-            type uint8 {
-              range "0..255";
-            }
-            description
-              "Index of this explicit route object";
-          }
-          leaf explicit-route-usage {
-            type identityref {
-              base te-types:route-usage-type;
-            }
-            description "An explicit-route hop action.";
-          }
-          uses te-types:explicit-route-subobject;
-        }
-      }
-    }
-    leaf no-cspf {
-      type empty;
-      description
-        "Indicates no CSPF is to be attempted on this
-        path.";
-    }
-    leaf lockdown {
-      type empty;
-      description
-        "Indicates no reoptimization to be attempted for
-        this path.";
-    }
-  }
-
-  /* TE tunnel configuration data */
-  grouping tunnel-params_config {
-    description
-      "Configuration parameters relating to TE tunnel";
-    leaf name {
-      type string;
-      description "TE tunnel name.";
-    }
-    leaf type {
-      type identityref {
-        base te-types:tunnel-type;
-      }
-      description "TE tunnel type.";
-    }
-    leaf identifier {
-      type uint16;
-      description
-        "TE tunnel Identifier.";
-    }
-    leaf description {
-      type string;
-      description
-        "Textual description for this TE tunnel";
-    }
-    leaf lsp-priority-setup {
-      type uint8 {
-        range "0..7";
-      }
-      description
-        "TE LSP setup priority";
-    }
-    leaf lsp-priority-hold {
-      type uint8 {
-        range "0..7";
-      }
-      description
-        "TE LSP hold priority";
-    }
-    leaf lsp-protection-type {
-      type identityref {
-        base te-types:lsp-prot-type;
-      }
-      description "LSP protection type.";
-    }
-    leaf admin-status {
-      type identityref {
-        base te-types:state-type;
-      }
-      default te-types:state-up;
-      description "TE tunnel administrative state.";
-    }
-    leaf source {
-      type inet:ip-address;
-      description
-        "TE tunnel source address.";
-    }
-    leaf destination {
-      /* Add when check */
-      type inet:ip-address;
-      description
-        "P2P tunnel destination address";
-    }
-    leaf src-tp-id {
-      type binary;
-      description
-        "TE tunnel source termination point identifier.";
-    } 
-    leaf dst-tp-id {
-      /* Add when check */
-      type binary;
-      description
-        "TE tunnel destination termination point identifier.";
-    }
-    container hierarchical-link-id {
-        description
-          "Identifies a hierarchical link (in server layer)
-           that this tunnel is associated with.";
-        leaf local-te-node-id {
-          type te-types:te-node-id;
-          description
-            "Local TE node identifier";
-        }
-        leaf local-te-link-tp-id {
-          type te-types:te-tp-id;
-          description
-            "Local TE link termination point identifier";
-        }
-        leaf remote-te-node-id {
-          type te-types:te-node-id;
-          description
-            "Remote TE node identifier";
-        }
-        leaf te-topology-id {
-          type te-types:te-topology-id;
-          description
-            "It is presumed that a datastore will contain many
-             topologies. To distinguish between topologies it is
-             vital to have UNIQUE topology identifiers.";
-        }
-    }
-    uses te-types:tunnel-bidir-assoc-properties;
-  }
-
-  grouping tunnel-params_state {
-    description
-      "State parameters relating to TE tunnel";
-    leaf oper-status {
-      type identityref {
-        base te-types:state-type;
-      }
-      description "TE tunnel operational state.";
-    }
-  }
-
-  grouping path-properties_config {
-    description "TE path properties grouping";
-    leaf name {
-      type string;
-      description "TE path name";
-    }
-    leaf preference {
-      type uint8 {
-        range "1..255";
-      }
-      description
-        "Specifies a preference for this path. The lower the
-        number higher the preference";
-    }
-  }
-
-  /* TE tunnel configuration/state grouping */
-  grouping tunnel-properties {
-    description
-      "Top level grouping for tunnel properties.";
-    container config {
-      description
-        "Configuration parameters relating to
-         tunnel properties";
-      uses tunnel-params_config;
-    }
-    container state {
-      config false;
-      description
-        "State information associated with tunnel
-         properties";
-      uses tunnel-params_config;
-      uses tunnel-params_state;
-    }
-    list primary-paths {
-      key "name";
-      description
-        "List of primary paths for this tunnel.";
-      leaf name {
-        type leafref {
-          path "../config/name";
-        }
-        description "TE path name";
-      }
-      leaf preference {
-        type leafref {
-          path "../config/preference";
-        }
-        description
-          "Specifies a preference for this path. The lower the
-           number higher the preference";
-      }
-      uses p2p-primary-path-params;
-      list secondary-paths {
-        key "name";
-        description
-          "List of secondary paths for this tunnel.";
-        leaf name {
-          type leafref {
-            path "../config/name";
-          }
-          description "TE path name";
-        }
-        leaf preference {
-          type leafref {
-            path "../config/preference";
-          }
-          description
-            "Specifies a preference for this path. The lower the
-            number higher the preference";
-        }
-        uses p2p-secondary-path-params;
-      }
-    }
-  }
-  /*** End of TE tunnel groupings ***/
-
-  /**
-   * LSP related generic groupings
-   */
-  grouping lsp-record-route-information_state {
-    description "recorded route information grouping";
-    container lsp-record-route {
-      description "RSVP recorded route object information";
-      list record-route-subobjects {
-        when "../origin-type != 'ingress'" {
-          description "Applicable on non-ingress LSPs only";
-        }
-        key "subobject-index";
-        description "";
-        leaf subobject-index {
-          type uint32;
-          description "RRO subobject index";
-        }
-        uses te-types:record-route-subobject;
-      }
-    }
-  }
-
-  grouping lsp-properties_state {
-    description
-      "State parameters relating to LSP";
-    leaf oper-status {
-      type identityref {
-        base te-types:state-type;
-      }
-      description "LSP operational state.";
-    }
-
-    leaf origin-type {
-      type enumeration {
-        enum ingress {
-          description
-            "Origin ingress";
-        }
-        enum egress {
-          description
-            "Origin egress";
-        }
-        enum transit {
-          description
-            "transit";
-        }
-      }
-      description
-        "Origin type of LSP relative to the location 
-        of the local switch in the path.";
-    }
-
-    leaf lsp-resource-status {
-      type enumeration {
-        enum primary {
-          description
-            "A primary LSP is a fully established LSP for
-             which the resource allocation has been committed
-             at the data plane";
-        }
-        enum secondary {
-          description
-            "A secondary LSP is an LSP that has been provisioned
-             in the control plane only; e.g. resource allocation
-             has not been committed at the data plane";
-        }
-      }
-      description "LSP resource allocation type";
-      reference "rfc4872, section 4.2.1";
-    }
-
-    leaf lsp-protection-role {
-      type enumeration {
-        enum working {
-          description
-            "A working LSP must be a primary LSP whilst a protecting
-             LSP can be either a primary or a secondary LSP. Also,
-             known as protected LSPs when working LSPs are associated
-             with protecting LSPs.";
-        }
-        enum protecting {
-          description
-            "A secondary LSP is an LSP that has been provisioned
-             in the control plane only; e.g. resource allocation
-             has not been committed at the data plane";
-        }
-      }
-      description "LSP role type";
-      reference "rfc4872, section 4.2.1";
-    }
-
-    leaf lsp-operational-status {
-      type empty;
-      description
-        "This bit is set when a protecting LSP is carrying the normal
-         traffic after protection switching";
-    }
-  }
-  /*** End of TE LSP groupings ***/
-
-  /**
-   * TE global generic groupings
-   */
-
-  /* Global named admin-groups configuration data */
-  grouping named-admin-groups_config {
-    description
-      "Global named administrative groups configuration
-      grouping";
-    list named-admin-groups {
-      if-feature te-types:extended-admin-groups;
-      if-feature te-types:named-extended-admin-groups;
-      key "name";
-      description
-        "List of named TE admin-groups";
-      leaf name {
-        type string;
-        description
-          "A string name that uniquely identifies a TE
-          interface named admin-group";
-      }
-      leaf bit-position {
-        type uint32;
-        description
-          "Bit position representing the administrative group";
-      }
-    }
-  }
-
-  /* Global named admin-srlgs configuration data */
-  grouping named-srlgs_config {
-    description
-      "Global named SRLGs configuration
-      grouping";
-    list named-srlgs {
-      if-feature te-types:named-srlg-groups;
-      key "name";
-      description
-        "A list of named SRLG groups";
-      leaf name {
-        type string;
-        description
-          "A string name that uniquely identifies a TE
-          interface named srlg";
-      }
-      leaf group {
-        type te-types:srlg;
-        description "An SRLG value";
-      }
-    }
-  }
-
-  /* Global named explicit-paths configuration data */
-  grouping named-explicit-paths_config {
-    description
-      "Global explicit path configuration
-      grouping";
-    list named-explicit-paths {
-      key "name";
-      description
-        "A list of explicit paths";
-      leaf name {
-        type string;
-        description
-          "A string name that uniquely identifies an
-          explicit path";
-      }
-      list explicit-route-objects {
-        key "index";
-        description
-          "List of explicit route objects";
-        leaf index {
-          type uint8 {
-            range "0..255";
-          }
-          description
-            "Index of this explicit route object";
-        }
-        leaf explicit-route-usage {
-          type identityref {
-            base te-types:route-usage-type;
-          }
-          description "An explicit-route hop action.";
-        }
-        uses te-types:explicit-route-subobject;
-      }
-    }
-  }
-
-  /* Global named paths constraints configuration data */
-  grouping named-path-constraints_config {
-    description
-      "Global named path constraints configuration
-      grouping";
-    list named-constraints {
-      if-feature te-types:named-path-constraints;
-      key "name";
-      description
-        "A list of named path constraints";
-      leaf name {
-        type string;
-        description
-          "A string name that uniquely identifies a
-          path constraint set";
-      }
-      uses te-types:tunnel-path-selection;
-    }
-  }
-
-  /* TE globals container data */
-  grouping globals-grouping {
-    description
-      "Globals TE system-wide configuration data grouping";
-    container globals {
-      description
-        "Globals TE system-wide configuration data container";
-      container config {
-        description
-          "Configuration parameters for system-wide
-           parameters";
-        uses named-admin-groups_config;
-        uses named-srlgs_config;
-        uses named-explicit-paths_config;
-        uses named-path-constraints_config;
-      }
-      container state {
-        config false;
-        description
-          "State for system-wide parameters";
-        uses named-admin-groups_config;
-        uses named-srlgs_config;
-        uses named-explicit-paths_config;
-        uses named-path-constraints_config;
-      }
-    }
-  }
-
-  /* TE tunnels container data */
-  grouping tunnels-grouping {
-    description
-      "Tunnels TE configuration data grouping";
-    container tunnels {
-      description
-        "Tunnels TE configuration data container";
-
-      list tunnel {
-        key "name type";
-        unique "identifier";
-        description "TE tunnel.";
-        leaf name {
-          type leafref {
-            path "../config/name";
-          }
-          description "TE tunnel name.";
-        }
-        leaf type {
-          type leafref {
-            path "../config/type";
-          }
-          description "TE tunnel type.";
-        }
-        leaf identifier {
-          type leafref {
-            path "../config/identifier";
-          }
-          description
-            "TE tunnel Identifier.";
-        }
-        uses tunnel-properties;
-      }
-    }
-  }
-
-  /* TE LSPs ephemeral state container data */
-  grouping lsps-state-grouping {
-    description
-      "LSPs state operational data grouping";
-    container lsps-state {
-      config "false";
-      description "LSPs operational state data.";
-
-      list lsp {
-        key
-          "source destination tunnel-id lsp-id "+
-          "extended-tunnel-id type";
-        description
-          "List of LSPs associated with the tunnel.";
-        leaf source {
-          type inet:ip-address;
-          description
-            "Tunnel sender address extracted from
-            SENDER_TEMPLATE  object";
-          reference "RFC3209";
-        }
-        leaf destination {
-          type inet:ip-address;
-          description
-            "Tunnel endpoint address extracted from
-            SESSION object";
-          reference "RFC3209";
-        }
-        leaf tunnel-id {
-          type uint16;
-          description
-            "Tunnel identifier used in the SESSION
-            that remains constant over the life
-            of the tunnel.";
-          reference "RFC3209";
-        }
-        leaf lsp-id {
-          type uint16;
-          description
-            "Identifier used in the SENDER_TEMPLATE
-            and the FILTER_SPEC that can be changed
-            to allow a sender to share resources with
-            itself.";
-          reference "RFC3209";
-        }
-        leaf extended-tunnel-id {
-          type inet:ip-address;
-           description
-            "Extended Tunnel ID of the LSP.";
-          reference "RFC3209";
-        }
-        leaf type {
-          type identityref {
-            base te-types:tunnel-type;
-          }
-          description "The LSP type P2P or P2MP";
-        }
-        uses lsp-properties_state;
-        uses lsp-record-route-information_state;
-      }
-    }
-  }
-  /*** End of TE global groupings ***/
-
-  /**
-   * TE configurations container
-   */
-  container te {
-    presence "Enable TE feature.";
-    description
-       "TE global container.";
-
-    /* TE Global Configuration Data */
-    uses globals-grouping;
-
-    /* TE Tunnel Configuration Data */
-    uses tunnels-grouping;
-
-    /* TE LSPs State Data */
-    uses lsps-state-grouping;
-  }
-
-  /* TE Global RPCs/execution Data */
-  rpc globals-rpc {
-    description
-      "Execution data for TE global.";
-  }
-
-  /* TE interfaces RPCs/execution Data */
-  rpc interfaces-rpc {
-    description
-      "Execution data for TE interfaces.";
-  }
-
-  /* TE Tunnel RPCs/execution Data */
-  rpc tunnels-rpc {
-    description
-      "TE tunnels RPC nodes";
-  }
-
-  /* TE Global Notification Data */
-  notification globals-notif {
-    description
-      "Notification messages for Global TE.";
-  }
-
-  /* TE Tunnel Notification Data */
-  notification tunnels-notif {
-    description
-      "Notification messages for TE tunnels.";
-  }
-}
diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-yang-types@2013-07-15.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-yang-types@2013-07-15.yang
deleted file mode 100644
index 371a091..0000000
--- a/apps/tenbi/yangmodel/src/main/yang/ietf-yang-types@2013-07-15.yang
+++ /dev/null
@@ -1,480 +0,0 @@
-module ietf-yang-types {
-
-  namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
-  prefix "yang";
-
-  organization
-   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-  contact
-   "WG Web:   <http://tools.ietf.org/wg/netmod/>
-    WG List:  <mailto:netmod@ietf.org>
-
-    WG Chair: David Kessens
-              <mailto:david.kessens@nsn.com>
-
-    WG Chair: Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>
-
-    Editor:   Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>";
-
-  description
-   "This module contains a collection of generally useful derived
-    YANG data types.
-
-    Copyright (c) 2013 IETF Trust and the persons identified as
-    authors of the code.  All rights reserved.
-
-    Redistribution and use in source and binary forms, with or
-    without modification, is permitted pursuant to, and subject
-    to the license terms contained in, the Simplified BSD License
-    set forth in Section 4.c of the IETF Trust's Legal Provisions
-    Relating to IETF Documents
-    (http://trustee.ietf.org/license-info).
-
-    This version of this YANG module is part of RFC 6991; see
-    the RFC itself for full legal notices.";
-
-  revision 2013-07-15 {
-    description
-     "This revision adds the following new data types:
-      - yang-identifier
-      - hex-string
-      - uuid
-      - dotted-quad";
-    reference
-     "RFC 6991: Common YANG Data Types";
-  }
-
-  revision 2010-09-24 {
-    description
-     "Initial revision.";
-    reference
-     "RFC 6021: Common YANG Data Types";
-  }
-
-  /*** collection of counter and gauge types ***/
-
-  typedef counter32 {
-    type uint32;
-    description
-     "The counter32 type represents a non-negative integer
-      that monotonically increases until it reaches a
-      maximum value of 2^32-1 (4294967295 decimal), when it
-      wraps around and starts increasing again from zero.
-
-      Counters have no defined 'initial' value, and thus, a
-      single value of a counter has (in general) no information
-      content.  Discontinuities in the monotonically increasing
-      value normally occur at re-initialization of the
-      management system, and at other times as specified in the
-      description of a schema node using this type.  If such
-      other times can occur, for example, the creation of
-      a schema node of type counter32 at times other than
-      re-initialization, then a corresponding schema node
-      should be defined, with an appropriate type, to indicate
-      the last discontinuity.
-
-      The counter32 type should not be used for configuration
-      schema nodes.  A default statement SHOULD NOT be used in
-      combination with the type counter32.
-
-      In the value set and its semantics, this type is equivalent
-      to the Counter32 type of the SMIv2.";
-    reference
-     "RFC 2578: Structure of Management Information Version 2
-                (SMIv2)";
-  }
-
-  typedef zero-based-counter32 {
-    type yang:counter32;
-    default "0";
-    description
-     "The zero-based-counter32 type represents a counter32
-      that has the defined 'initial' value zero.
-
-      A schema node of this type will be set to zero (0) on creation
-      and will thereafter increase monotonically until it reaches
-      a maximum value of 2^32-1 (4294967295 decimal), when it
-      wraps around and starts increasing again from zero.
-
-      Provided that an application discovers a new schema node
-      of this type within the minimum time to wrap, it can use the
-      'initial' value as a delta.  It is important for a management
-      station to be aware of this minimum time and the actual time
-      between polls, and to discard data if the actual time is too
-      long or there is no defined minimum time.
-
-      In the value set and its semantics, this type is equivalent
-      to the ZeroBasedCounter32 textual convention of the SMIv2.";
-    reference
-      "RFC 4502: Remote Network Monitoring Management Information
-                 Base Version 2";
-  }
-
-  typedef counter64 {
-    type uint64;
-    description
-     "The counter64 type represents a non-negative integer
-      that monotonically increases until it reaches a
-      maximum value of 2^64-1 (18446744073709551615 decimal),
-      when it wraps around and starts increasing again from zero.
-
-      Counters have no defined 'initial' value, and thus, a
-      single value of a counter has (in general) no information
-      content.  Discontinuities in the monotonically increasing
-      value normally occur at re-initialization of the
-      management system, and at other times as specified in the
-      description of a schema node using this type.  If such
-      other times can occur, for example, the creation of
-      a schema node of type counter64 at times other than
-      re-initialization, then a corresponding schema node
-      should be defined, with an appropriate type, to indicate
-      the last discontinuity.
-
-      The counter64 type should not be used for configuration
-      schema nodes.  A default statement SHOULD NOT be used in
-      combination with the type counter64.
-
-      In the value set and its semantics, this type is equivalent
-      to the Counter64 type of the SMIv2.";
-    reference
-     "RFC 2578: Structure of Management Information Version 2
-                (SMIv2)";
-  }
-
-  typedef zero-based-counter64 {
-    type yang:counter64;
-    default "0";
-    description
-     "The zero-based-counter64 type represents a counter64 that
-      has the defined 'initial' value zero.
-
-
-
-
-      A schema node of this type will be set to zero (0) on creation
-      and will thereafter increase monotonically until it reaches
-      a maximum value of 2^64-1 (18446744073709551615 decimal),
-      when it wraps around and starts increasing again from zero.
-
-      Provided that an application discovers a new schema node
-      of this type within the minimum time to wrap, it can use the
-      'initial' value as a delta.  It is important for a management
-      station to be aware of this minimum time and the actual time
-      between polls, and to discard data if the actual time is too
-      long or there is no defined minimum time.
-
-      In the value set and its semantics, this type is equivalent
-      to the ZeroBasedCounter64 textual convention of the SMIv2.";
-    reference
-     "RFC 2856: Textual Conventions for Additional High Capacity
-                Data Types";
-  }
-
-  typedef gauge32 {
-    type uint32;
-    description
-     "The gauge32 type represents a non-negative integer, which
-      may increase or decrease, but shall never exceed a maximum
-      value, nor fall below a minimum value.  The maximum value
-      cannot be greater than 2^32-1 (4294967295 decimal), and
-      the minimum value cannot be smaller than 0.  The value of
-      a gauge32 has its maximum value whenever the information
-      being modeled is greater than or equal to its maximum
-      value, and has its minimum value whenever the information
-      being modeled is smaller than or equal to its minimum value.
-      If the information being modeled subsequently decreases
-      below (increases above) the maximum (minimum) value, the
-      gauge32 also decreases (increases).
-
-      In the value set and its semantics, this type is equivalent
-      to the Gauge32 type of the SMIv2.";
-    reference
-     "RFC 2578: Structure of Management Information Version 2
-                (SMIv2)";
-  }
-
-  typedef gauge64 {
-    type uint64;
-    description
-     "The gauge64 type represents a non-negative integer, which
-      may increase or decrease, but shall never exceed a maximum
-      value, nor fall below a minimum value.  The maximum value
-      cannot be greater than 2^64-1 (18446744073709551615), and
-      the minimum value cannot be smaller than 0.  The value of
-      a gauge64 has its maximum value whenever the information
-      being modeled is greater than or equal to its maximum
-      value, and has its minimum value whenever the information
-      being modeled is smaller than or equal to its minimum value.
-      If the information being modeled subsequently decreases
-      below (increases above) the maximum (minimum) value, the
-      gauge64 also decreases (increases).
-
-      In the value set and its semantics, this type is equivalent
-      to the CounterBasedGauge64 SMIv2 textual convention defined
-      in RFC 2856";
-    reference
-     "RFC 2856: Textual Conventions for Additional High Capacity
-                Data Types";
-  }
-
-  /*** collection of identifier-related types ***/
-
-  typedef object-identifier {
-    type string {
-      pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
-            + '(\.(0|([1-9]\d*)))*';
-    }
-    description
-     "The object-identifier type represents administratively
-      assigned names in a registration-hierarchical-name tree.
-
-      Values of this type are denoted as a sequence of numerical
-      non-negative sub-identifier values.  Each sub-identifier
-      value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
-      are separated by single dots and without any intermediate
-      whitespace.
-
-      The ASN.1 standard restricts the value space of the first
-      sub-identifier to 0, 1, or 2.  Furthermore, the value space
-      of the second sub-identifier is restricted to the range
-      0 to 39 if the first sub-identifier is 0 or 1.  Finally,
-      the ASN.1 standard requires that an object identifier
-      has always at least two sub-identifiers.  The pattern
-      captures these restrictions.
-
-      Although the number of sub-identifiers is not limited,
-      module designers should realize that there may be
-      implementations that stick with the SMIv2 limit of 128
-      sub-identifiers.
-
-      This type is a superset of the SMIv2 OBJECT IDENTIFIER type
-      since it is not restricted to 128 sub-identifiers.  Hence,
-      this type SHOULD NOT be used to represent the SMIv2 OBJECT
-      IDENTIFIER type; the object-identifier-128 type SHOULD be
-      used instead.";
-    reference
-     "ISO9834-1: Information technology -- Open Systems
-      Interconnection -- Procedures for the operation of OSI
-      Registration Authorities: General procedures and top
-      arcs of the ASN.1 Object Identifier tree";
-  }
-
-  typedef object-identifier-128 {
-    type object-identifier {
-      pattern '\d*(\.\d*){1,127}';
-    }
-    description
-     "This type represents object-identifiers restricted to 128
-      sub-identifiers.
-
-      In the value set and its semantics, this type is equivalent
-      to the OBJECT IDENTIFIER type of the SMIv2.";
-    reference
-     "RFC 2578: Structure of Management Information Version 2
-                (SMIv2)";
-  }
-
-  typedef yang-identifier {
-    type string {
-      length "1..max";
-      pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
-      pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
-    }
-    description
-      "A YANG identifier string as defined by the 'identifier'
-       rule in Section 12 of RFC 6020.  An identifier must
-       start with an alphabetic character or an underscore
-       followed by an arbitrary sequence of alphabetic or
-       numeric characters, underscores, hyphens, or dots.
-
-       A YANG identifier MUST NOT start with any possible
-       combination of the lowercase or uppercase character
-       sequence 'xml'.";
-    reference
-      "RFC 6020: YANG - A Data Modeling Language for the Network
-                 Configuration Protocol (NETCONF)";
-  }
-
-  /*** collection of types related to date and time***/
-
-  typedef date-and-time {
-    type string {
-      pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
-            + '(Z|[\+\-]\d{2}:\d{2})';
-    }
-    description
-     "The date-and-time type is a profile of the ISO 8601
-      standard for representation of dates and times using the
-      Gregorian calendar.  The profile is defined by the
-      date-time production in Section 5.6 of RFC 3339.
-
-      The date-and-time type is compatible with the dateTime XML
-      schema type with the following notable exceptions:
-
-      (a) The date-and-time type does not allow negative years.
-
-      (b) The date-and-time time-offset -00:00 indicates an unknown
-          time zone (see RFC 3339) while -00:00 and +00:00 and Z
-          all represent the same time zone in dateTime.
-
-      (c) The canonical format (see below) of data-and-time values
-          differs from the canonical format used by the dateTime XML
-          schema type, which requires all times to be in UTC using
-          the time-offset 'Z'.
-
-      This type is not equivalent to the DateAndTime textual
-      convention of the SMIv2 since RFC 3339 uses a different
-      separator between full-date and full-time and provides
-      higher resolution of time-secfrac.
-
-      The canonical format for date-and-time values with a known time
-      zone uses a numeric time zone offset that is calculated using
-      the device's configured known offset to UTC time.  A change of
-      the device's offset to UTC time will cause date-and-time values
-      to change accordingly.  Such changes might happen periodically
-      in case a server follows automatically daylight saving time
-      (DST) time zone offset changes.  The canonical format for
-      date-and-time values with an unknown time zone (usually
-      referring to the notion of local time) uses the time-offset
-      -00:00.";
-    reference
-     "RFC 3339: Date and Time on the Internet: Timestamps
-      RFC 2579: Textual Conventions for SMIv2
-      XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
-  }
-
-  typedef timeticks {
-    type uint32;
-    description
-     "The timeticks type represents a non-negative integer that
-      represents the time, modulo 2^32 (4294967296 decimal), in
-      hundredths of a second between two epochs.  When a schema
-      node is defined that uses this type, the description of
-      the schema node identifies both of the reference epochs.
-
-      In the value set and its semantics, this type is equivalent
-      to the TimeTicks type of the SMIv2.";
-    reference
-     "RFC 2578: Structure of Management Information Version 2
-                (SMIv2)";
-  }
-
-  typedef timestamp {
-    type yang:timeticks;
-    description
-     "The timestamp type represents the value of an associated
-      timeticks schema node at which a specific occurrence
-      happened.  The specific occurrence must be defined in the
-      description of any schema node defined using this type.  When
-      the specific occurrence occurred prior to the last time the
-      associated timeticks attribute was zero, then the timestamp
-      value is zero.  Note that this requires all timestamp values
-      to be reset to zero when the value of the associated timeticks
-      attribute reaches 497+ days and wraps around to zero.
-
-      The associated timeticks schema node must be specified
-      in the description of any schema node using this type.
-
-      In the value set and its semantics, this type is equivalent
-      to the TimeStamp textual convention of the SMIv2.";
-    reference
-     "RFC 2579: Textual Conventions for SMIv2";
-  }
-
-  /*** collection of generic address types ***/
-
-  typedef phys-address {
-    type string {
-      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
-    }
-
-
-
-
-    description
-     "Represents media- or physical-level addresses represented
-      as a sequence octets, each octet represented by two hexadecimal
-      numbers.  Octets are separated by colons.  The canonical
-      representation uses lowercase characters.
-
-      In the value set and its semantics, this type is equivalent
-      to the PhysAddress textual convention of the SMIv2.";
-    reference
-     "RFC 2579: Textual Conventions for SMIv2";
-  }
-
-  typedef mac-address {
-    type string {
-      pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
-    }
-    description
-     "The mac-address type represents an IEEE 802 MAC address.
-      The canonical representation uses lowercase characters.
-
-      In the value set and its semantics, this type is equivalent
-      to the MacAddress textual convention of the SMIv2.";
-    reference
-     "IEEE 802: IEEE Standard for Local and Metropolitan Area
-                Networks: Overview and Architecture
-      RFC 2579: Textual Conventions for SMIv2";
-  }
-
-  /*** collection of XML-specific types ***/
-
-  typedef xpath1.0 {
-    type string;
-    description
-     "This type represents an XPATH 1.0 expression.
-
-      When a schema node is defined that uses this type, the
-      description of the schema node MUST specify the XPath
-      context in which the XPath expression is evaluated.";
-    reference
-     "XPATH: XML Path Language (XPath) Version 1.0";
-  }
-
-  /*** collection of string types ***/
-
-  typedef hex-string {
-    type string {
-      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
-    }
-    description
-     "A hexadecimal string with octets represented as hex digits
-      separated by colons.  The canonical representation uses
-      lowercase characters.";
-  }
-
-  typedef uuid {
-    type string {
-      pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
-            + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
-    }
-    description
-     "A Universally Unique IDentifier in the string representation
-      defined in RFC 4122.  The canonical representation uses
-      lowercase characters.
-
-      The following is an example of a UUID in string representation:
-      f81d4fae-7dec-11d0-a765-00a0c91e6bf6
-      ";
-    reference
-     "RFC 4122: A Universally Unique IDentifier (UUID) URN
-                Namespace";
-  }
-
-  typedef dotted-quad {
-    type string {
-      pattern
-        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-      + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
-    }
-    description
-      "An unsigned 32-bit number expressed in the dotted-quad
-       notation, i.e., four octets written as decimal numbers
-       and separated with the '.' (full stop) character.";
-  }
-}
diff --git a/apps/tetopology/BUILD b/apps/tetopology/BUILD
deleted file mode 100644
index 9f16249..0000000
--- a/apps/tetopology/BUILD
+++ /dev/null
@@ -1,13 +0,0 @@
-BUNDLES = [
-    "//apps/tetopology/api:onos-apps-tetopology-api",
-    "//apps/tetopology/app:onos-apps-tetopology-app",
-]
-
-onos_app(
-    app_name = "org.onosproject.tetopology",
-    category = "Traffic Engineering",
-    description = "Application to create and manage hierarchical TE topologies.",
-    included_bundles = BUNDLES,
-    title = "TE Topology Core",
-    url = "http://onosproject.org",
-)
diff --git a/apps/tetopology/api/BUILD b/apps/tetopology/api/BUILD
deleted file mode 100644
index f72e3bc..0000000
--- a/apps/tetopology/api/BUILD
+++ /dev/null
@@ -1,3 +0,0 @@
-osgi_jar_with_tests(
-    deps = CORE_DEPS,
-)
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/CommonTopologyData.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/CommonTopologyData.java
deleted file mode 100644
index 9c32895..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/CommonTopologyData.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.onosproject.net.DeviceId;
-
-import java.util.BitSet;
-
-/**
- * Representation of topology common attributes.
- */
-public class CommonTopologyData {
-    private final OptimizationType optimization;
-    private final BitSet flags;
-    private final KeyId networkId;
-    private final DeviceId ownerId;
-
-    /**
-     * Create an instance of CommonTopologyData.
-     *
-     * @param networkId    the network identifier
-     * @param optimization the TE topology optimization criteria
-     * @param flags        the topology characteristics flags
-     * @param ownerId      the controller identifier owning this topology
-     */
-    public CommonTopologyData(KeyId networkId, OptimizationType optimization,
-                              BitSet flags, DeviceId ownerId) {
-        this.optimization = optimization;
-        this.flags = flags;
-        this.networkId = networkId;
-        this.ownerId = ownerId;
-    }
-
-    /**
-     * Creates an instance of CommonTopologyData from a given TE topology.
-     *
-     * @param teTopology the given TE Topology
-     */
-    public CommonTopologyData(TeTopology teTopology) {
-        optimization = teTopology.optimization();
-        flags = teTopology.flags();
-        networkId = teTopology.networkId();
-        ownerId = teTopology.ownerId();
-    }
-
-
-    /**
-     * Returns the topology optimization type.
-     *
-     * @return the optimization type
-     */
-    public OptimizationType optimization() {
-        return optimization;
-    }
-
-    /**
-     * Returns the network identifier.
-     *
-     * @return the network id
-     */
-    public KeyId networkId() {
-        return networkId;
-    }
-
-    /**
-     * Returns the topology characteristics flags.
-     *
-     * @return the flags
-     */
-    public BitSet flags() {
-        return flags;
-    }
-
-    /**
-     * Returns the SDN controller identifier owning this topology.
-     *
-     * @return the SDN controller id
-     */
-    public DeviceId ownerId() {
-        return ownerId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(optimization, flags, ownerId, networkId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof CommonTopologyData) {
-            CommonTopologyData that = (CommonTopologyData) object;
-            return Objects.equal(optimization, that.optimization) &&
-                    Objects.equal(flags, that.flags) &&
-                    Objects.equal(networkId, that.networkId) &&
-                    Objects.equal(ownerId, that.ownerId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("optimization", optimization)
-                .add("flags", flags)
-                .add("ownerId", ownerId)
-                .add("networkId", networkId)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultNetwork.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultNetwork.java
deleted file mode 100644
index fd726c9..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultNetwork.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import java.util.List;
-import java.util.Map;
-
-import org.onosproject.net.DeviceId;
-import org.onosproject.tetopology.management.api.link.NetworkLink;
-import org.onosproject.tetopology.management.api.node.NetworkNode;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-/**
- * Default Network implementation.
- */
-public class DefaultNetwork implements Network {
-    private final KeyId networkId;
-    private final List<KeyId> supportingNetworkIds;
-    private final Map<KeyId, NetworkNode> nodes;
-    private final Map<KeyId, NetworkLink> links;
-    private final TeTopologyId teTopologyId;
-    private final boolean serverProvided;
-    private final DeviceId ownerId;
-    private final OptimizationType optimization;
-
-    /**
-     * Creates an instance of DefaultNetwork.
-     *
-     * @param networkId network identifier
-     * @param supportingNetworkIds supporting network identifier
-     * @param nodes list of nodes within the network
-     * @param links list of links within the network
-     * @param teTopologyId TE topology identifier associated with the network
-     * @param serverProvided whether the network is received from server
-     * @param ownerId the the controller identifier owning this topology
-     * @param optimization TE topology optimization criteria
-     */
-    public DefaultNetwork(KeyId networkId, List<KeyId> supportingNetworkIds,
-                          Map<KeyId, NetworkNode> nodes, Map<KeyId, NetworkLink> links,
-                          TeTopologyId teTopologyId, boolean serverProvided,
-                          DeviceId ownerId, OptimizationType optimization) {
-        this.networkId = networkId;
-        this.supportingNetworkIds = supportingNetworkIds != null ?
-                Lists.newArrayList(supportingNetworkIds) : null;
-        this.nodes = nodes != null ? Maps.newHashMap(nodes) : null;
-        this.links = links != null ? Maps.newHashMap(links) : null;
-        this.teTopologyId = teTopologyId;
-        this.serverProvided = serverProvided;
-        this.ownerId = ownerId;
-        this.optimization = optimization;
-    }
-
-
-    @Override
-    public KeyId networkId() {
-        return networkId;
-    }
-
-    @Override
-    public List<KeyId> supportingNetworkIds() {
-        if (supportingNetworkIds == null) {
-            return null;
-        }
-        return ImmutableList.copyOf(supportingNetworkIds);
-    }
-
-    @Override
-    public Map<KeyId, NetworkNode> nodes() {
-        if (nodes == null) {
-            return null;
-        }
-        return ImmutableMap.copyOf(nodes);
-    }
-
-    @Override
-    public NetworkNode node(KeyId nodeId) {
-        return nodes.get(nodeId);
-    }
-
-    @Override
-    public Map<KeyId, NetworkLink> links() {
-        if (links == null) {
-            return null;
-        }
-        return ImmutableMap.copyOf(links);
-    }
-
-    @Override
-    public NetworkLink link(KeyId linkId) {
-        return links.get(linkId);
-    }
-
-    @Override
-    public boolean isServerProvided() {
-        return serverProvided;
-    }
-
-    @Override
-    public TeTopologyId teTopologyId() {
-        return teTopologyId;
-    }
-
-    @Override
-    public DeviceId ownerId() {
-        return ownerId;
-    }
-
-    @Override
-    public OptimizationType optimization() {
-        return optimization;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(networkId, supportingNetworkIds,
-                                nodes, links, serverProvided, teTopologyId,
-                                ownerId, optimization);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof DefaultNetwork) {
-            DefaultNetwork that = (DefaultNetwork) object;
-            return Objects.equal(networkId, that.networkId) &&
-                    Objects.equal(supportingNetworkIds, that.supportingNetworkIds) &&
-                    Objects.equal(nodes, that.nodes) &&
-                    Objects.equal(links, that.links) &&
-                    Objects.equal(serverProvided, that.serverProvided) &&
-                    Objects.equal(teTopologyId, that.teTopologyId) &&
-                    Objects.equal(ownerId, that.ownerId)
-                    && Objects.equal(optimization, that.optimization);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("networkId", networkId)
-                .add("supportingNetworkIds", supportingNetworkIds)
-                .add("nodes", nodes)
-                .add("links", links)
-                .add("serverProvided", serverProvided)
-                .add("teTopologyId", teTopologyId)
-                .add("ownerId", ownerId)
-                .add("optimization", optimization)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultNetworks.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultNetworks.java
deleted file mode 100644
index b67b2f4..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultNetworks.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-
-import java.util.List;
-
-/**
- * Default Networks implementation.
- */
-public class DefaultNetworks implements Networks {
-    private final List<Network> networks;
-
-    /**
-     * Creates an instance of DefaultNetworks.
-     *
-     * @param networks list of networks
-     */
-    public DefaultNetworks(List<Network> networks) {
-        this.networks = networks != null ?
-                Lists.newArrayList(networks) : null;
-    }
-
-    @Override
-    public List<Network> networks() {
-        if (networks == null) {
-            return null;
-        }
-        return ImmutableList.copyOf(networks);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(networks);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof DefaultNetworks) {
-            DefaultNetworks that = (DefaultNetworks) object;
-            return Objects.equal(networks, that.networks);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("networks", networks)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultTeTopologies.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultTeTopologies.java
deleted file mode 100644
index d5a83f7..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultTeTopologies.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableMap;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Default TeTopologies implementation.
- */
-public class DefaultTeTopologies implements TeTopologies {
-    private final String name;
-    private final Map<TeTopologyKey, TeTopology> teTopologies;
-
-    /**
-     * Creates an instance of DefaultTeTopologies.
-     *
-     * @param name         the name of a TeTopology set
-     * @param teTopologies the list of TeTopology
-     */
-    public DefaultTeTopologies(String name, Map<TeTopologyKey, TeTopology> teTopologies) {
-        this.name = name;
-        this.teTopologies = teTopologies != null ?
-                new HashMap<>(teTopologies) : null;
-    }
-
-    @Override
-    public String name() {
-        return name;
-    }
-
-    @Override
-    public Map<TeTopologyKey, TeTopology> teTopologies() {
-        if (teTopologies == null) {
-            return null;
-        }
-        return ImmutableMap.copyOf(teTopologies);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(name, teTopologies);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof DefaultTeTopologies) {
-            DefaultTeTopologies that = (DefaultTeTopologies) object;
-            return Objects.equal(name, that.name) &&
-                    Objects.equal(teTopologies, that.teTopologies);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("name", name)
-                .add("teTopologies", teTopologies)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultTeTopology.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultTeTopology.java
deleted file mode 100644
index e20f32e..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultTeTopology.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
-import org.onosproject.net.DeviceId;
-import org.onosproject.tetopology.management.api.link.TeLink;
-import org.onosproject.tetopology.management.api.link.TeLinkTpKey;
-import org.onosproject.tetopology.management.api.node.TeNode;
-
-import java.util.BitSet;
-import java.util.Map;
-
-/**
- * Default implementation of TeTopology.
- */
-public class DefaultTeTopology implements TeTopology {
-    private final TeTopologyKey teKey;
-    private final Map<Long, TeNode> teNodes;
-    private final Map<TeLinkTpKey, TeLink> teLinks;
-    private final String idString;
-    private final CommonTopologyData common;
-
-    /**
-     * Creates an instance of DefaultTeTopology.
-     *
-     * @param teKey    the TE topology key used for searching
-     * @param teNodes  the list of TE nodes in the topology
-     * @param teLinks  the list of TE links in the topology
-     * @param idString the TE Topology id string value
-     * @param common   the common topology attributes
-     */
-    public DefaultTeTopology(TeTopologyKey teKey, Map<Long, TeNode> teNodes,
-                             Map<TeLinkTpKey, TeLink> teLinks, String idString,
-                             CommonTopologyData common) {
-        this.teKey = teKey;
-        this.teNodes = teNodes != null ? Maps.newHashMap(teNodes) : null;
-        this.teLinks = teLinks != null ? Maps.newHashMap(teLinks) : null;
-        this.idString = idString;
-        this.common = common;
-    }
-
-    @Override
-    public TeTopologyKey teTopologyId() {
-        return teKey;
-    }
-
-    @Override
-    public BitSet flags() {
-        if (common == null) {
-            return null;
-        }
-        return common.flags();
-    }
-
-    @Override
-    public OptimizationType optimization() {
-        if (common == null) {
-            return null;
-        }
-        return common.optimization();
-    }
-
-    @Override
-    public Map<Long, TeNode> teNodes() {
-        if (teNodes == null) {
-            return null;
-        }
-        return ImmutableMap.copyOf(teNodes);
-    }
-
-    @Override
-    public TeNode teNode(long teNodeId) {
-        return teNodes.get(teNodeId);
-    }
-
-    @Override
-    public Map<TeLinkTpKey, TeLink> teLinks() {
-        if (teLinks == null) {
-            return null;
-        }
-        return ImmutableMap.copyOf(teLinks);
-    }
-
-    @Override
-    public TeLink teLink(TeLinkTpKey teLinkId) {
-        return teLinks.get(teLinkId);
-    }
-
-    @Override
-    public String teTopologyIdStringValue() {
-        return idString;
-    }
-
-    @Override
-    public KeyId networkId() {
-        if (common == null) {
-            return null;
-        }
-        return common.networkId();
-    }
-
-    @Override
-    public DeviceId ownerId() {
-        if (common == null) {
-            return null;
-        }
-        return common.ownerId();
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(teKey, teNodes,
-                                teLinks, common, idString);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof DefaultTeTopology) {
-            DefaultTeTopology that = (DefaultTeTopology) object;
-            return Objects.equal(teKey, that.teKey) &&
-                    Objects.equal(teNodes, that.teNodes) &&
-                    Objects.equal(teLinks, that.teLinks) &&
-                    Objects.equal(common, that.common) &&
-                    Objects.equal(idString, that.idString);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("teKey", teKey)
-                .add("teNodes", teNodes)
-                .add("teLinks", teLinks)
-                .add("common", common)
-                .add("idString", idString)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/EncodingType.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/EncodingType.java
deleted file mode 100644
index 8650753..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/EncodingType.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-/**
- * LSP encoding type.
- * See RFC 3471 for details.
- */
-public enum EncodingType {
-
-    /**
-     * Designates Packet LSP encoding.
-     */
-    LSP_ENCODING_PACKET(1),
-
-    /**
-     * Designates Ethernet LSP encoding.
-     */
-    LSP_ENCODING_ETHERNET(2),
-
-    /**
-     * Designates ANSI/ETSI PDH encoding.
-     */
-    LSP_ENCODING_PDH(3),
-
-    /**
-     * Designates SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding.
-     */
-    LSP_ENCODING_SDH(5),
-
-    /**
-     * Designates Digital Wrapper LSP encoding.
-     */
-    LSP_ENCODING_DIGITAL_WRAPPER(7),
-
-    /**
-     * Designates Lambda (photonic) LSP encoding.
-     */
-    LSP_ENCODING_LAMBDA(8),
-
-    /**
-     * Designates Fiber LSP encoding.
-     */
-    LSP_ENCODING_FIBER(9),
-
-    /**
-     * Designates Fiber Channel LSP encoding.
-     */
-    LSP_ENCODING_FIBER_CHANNEL(11),
-
-    /**
-     * Designates G.709 ODUk (Digital Path)LSP encoding.
-     */
-    LSP_ENCODING_ODUK(12);
-
-    private int value;
-
-    /**
-     * Creates an instance of EncodingType.
-     *
-     * @param value value of encoding type
-     */
-    EncodingType(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Returns the corresponding integer value of the encoding type.
-     *
-     * @return corresponding integer value
-     */
-    public int value() {
-        return value;
-    }
-
-    /**
-     * Returns the encoding type constant corresponding to the given integer
-     * value. If the given value cannot be mapped to any valid encoding type,
-     * a null is returned.
-     *
-     * @param value integer value
-     * @return corresponding encoding type constant
-     */
-    public static EncodingType of(int value) {
-        switch (value) {
-            case 1:
-                return LSP_ENCODING_PACKET;
-            case 2:
-                return LSP_ENCODING_ETHERNET;
-            case 3:
-                return LSP_ENCODING_PDH;
-            case 5:
-                return LSP_ENCODING_SDH;
-            case 7:
-                return LSP_ENCODING_DIGITAL_WRAPPER;
-            case 8:
-                return LSP_ENCODING_LAMBDA;
-            case 9:
-                return LSP_ENCODING_FIBER;
-            case 11:
-                return LSP_ENCODING_FIBER_CHANNEL;
-            case 12:
-                return LSP_ENCODING_ODUK;
-            default:
-                return null;
-        }
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/KeyId.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/KeyId.java
deleted file mode 100644
index 5c8b400..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/KeyId.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import java.net.URI;
-import java.util.Objects;
-
-/**
- * Representation of an key identifier in URI.
- */
-public class KeyId {
-    /**
-     * Represents either no uri, or an unspecified uri.
-     */
-    public static final KeyId NONE = keyId("none:none");
-
-    private final URI uri;
-    private final String str;
-
-    // Public construction is prohibited
-    private KeyId(URI uri) {
-        this.uri = uri;
-        //this.str = uri.toString().toLowerCase();
-        this.str = uri.toString();
-    }
-
-
-    /**
-     * Default constructor for serialization of KeyId.
-     */
-    protected KeyId() {
-        this.uri = null;
-        this.str = null;
-    }
-
-    /**
-     * Returns the backing URI.
-     *
-     * @return backing URI
-     */
-    public URI uri() {
-        return uri;
-    }
-
-    @Override
-    public int hashCode() {
-        return str.hashCode();
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof KeyId) {
-            KeyId that = (KeyId) obj;
-            return this.getClass() == that.getClass() &&
-                    Objects.equals(this.str, that.str);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return str;
-    }
-
-    /**
-     * Creates a uri id using the supplied URI.
-     *
-     * @param uri URI
-     * @return UriId
-     */
-    public static KeyId keyId(URI uri) {
-        return new KeyId(uri);
-    }
-
-    /**
-     * Creates a uri id using the supplied URI string.
-     *
-     * @param string URI string
-     * @return UriId
-     */
-    public static KeyId keyId(String string) {
-        return keyId(URI.create(string));
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/LongValue.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/LongValue.java
deleted file mode 100644
index 17a488a..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/LongValue.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import com.google.common.base.MoreObjects;
-
-import java.util.Objects;
-
-/**
- * Implementation of using a long integer to represent
- * an ElementType.
- */
-public class LongValue {
-    private final long value;
-
-    /**
-     * Creates an instance of LongValue.
-     *
-     * @param value long value
-     */
-    public LongValue(long value) {
-        this.value = value;
-    }
-
-    /**
-     * Returns the long integer representing the ElementType.
-     *
-     * @return long integer
-     */
-    public long value() {
-        return value;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(value);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof LongValue) {
-            LongValue other = (LongValue) obj;
-            return Objects.equals(value, other.value);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("value", value)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/Network.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/Network.java
deleted file mode 100644
index 0226a03..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/Network.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import java.util.List;
-import java.util.Map;
-
-import org.onosproject.net.DeviceId;
-import org.onosproject.tetopology.management.api.link.NetworkLink;
-import org.onosproject.tetopology.management.api.node.NetworkNode;
-
-/**
- * Abstraction of a network element.
- */
-public interface Network extends TeTopologyEventSubject {
-
-    /**
-     * Returns the network identifier / key.
-     *
-     * @return network identifier
-     */
-    KeyId networkId();
-
-    /**
-     * Returns the network keys (or identifiers) of the supporting
-     * networks which serve as the underlay networks of the current
-     * network which is mapped by the specified network identifier.
-     *
-     * @return list of network keys
-     */
-    List<KeyId> supportingNetworkIds();
-
-    /**
-     * Returns a collection of the network nodes of the network mapped
-     * by the specified network identifier.
-     *
-     * @return a collection of network nodes
-     */
-    Map<KeyId, NetworkNode> nodes();
-
-    /**
-     * Returns the network node corresponding to the given identifier
-     * which is encoded as a URI. If no node is found, a null
-     * is returned.
-     *
-     * @param nodeId node id
-     * @return value of node or null
-     */
-    NetworkNode node(KeyId nodeId);
-
-    /**
-     * Returns a collection of links in the network mapped by the specified
-     * network identifier.
-     *
-     * @return a collection of currently known links
-     */
-    Map<KeyId, NetworkLink> links();
-
-    /**
-     * Returns the link corresponding to the given identifier which is
-     * encoded as a URI. If no such a link is found, a null is returned.
-     *
-     * @param linkId link id
-     * @return value of the link
-     */
-    NetworkLink link(KeyId linkId);
-
-    /**
-     * Returns true if the network is provided by a server, or false if
-     * configured by a client.
-     *
-     * @return true if the network is provided by a server; false otherwise
-     */
-    boolean isServerProvided();
-
-    /**
-     * Returns the TE topology identifier for this network.
-     *
-     * @return TE topology id
-     */
-    TeTopologyId teTopologyId();
-
-    /**
-     * Returns the topology optimization criteria.
-     *
-     * @return the optimization
-     */
-    OptimizationType optimization();
-
-    /**
-     * Returns the controller identifier owning this abstracted topology.
-     *
-     * @return the controller id
-     */
-    DeviceId ownerId();
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/Networks.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/Networks.java
deleted file mode 100644
index 1a61a12..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/Networks.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import java.util.List;
-
-/**
- * Abstraction of an entity which represents the functionality of networks.
- */
-public interface Networks {
-
-    /**
-     * Returns the list of networks.
-     *
-     * @return list of networks
-     */
-    List<Network> networks();
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/OptimizationType.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/OptimizationType.java
deleted file mode 100644
index acef6a6..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/OptimizationType.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-/**
- * TE optimization type.
- */
-public enum OptimizationType {
-
-    /**
-     * Designates optimization is not applied.
-     */
-    NOT_OPTIMIZED(0),
-
-    /**
-     * Designates optimization criteria least cost.
-     */
-    LEAST_COST(1),
-
-    /**
-     * Designates optimization criteria shortest delay.
-     */
-    SHORTEST_DELAY(2),
-
-    /**
-     * Designates optimization criteria best link utilization.
-     */
-    BEST_LINK_UTILIZATION(3),
-
-    /**
-     * Designates optimization criteria best link protection.
-     */
-    BEST_LINK_PROTECTION(4);
-
-    private int value;
-
-    /**
-     * Creates an instance of OptimizationType.
-     *
-     * @param value value of optimization type
-     */
-    OptimizationType(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Returns the optimization type value.
-     *
-     * @return the value of optimization type
-     */
-    public int value() {
-        return value;
-    }
-
-    /**
-     * Returns the optimization constant corresponding to the given value.
-     * If the given value cannot be mapped to any optimization type, a null
-     * is returned.
-     *
-     * @param value the value of the optimization type
-     * @return corresponding optimization type constant
-     */
-    public static OptimizationType of(int value) {
-        switch (value) {
-            case 0:
-                return OptimizationType.NOT_OPTIMIZED;
-            case 1:
-                return OptimizationType.LEAST_COST;
-            case 2:
-                return OptimizationType.SHORTEST_DELAY;
-            case 3:
-                return OptimizationType.BEST_LINK_UTILIZATION;
-            case 4:
-                return OptimizationType.BEST_LINK_PROTECTION;
-            default:
-                return null;
-        }
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/ProviderClientId.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/ProviderClientId.java
deleted file mode 100644
index f70bbe6..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/ProviderClientId.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-import com.google.common.base.Objects;
-
-/**
- * TE topology provider and client identifiers.
- */
-public abstract class ProviderClientId {
-    private final long providerId;
-    private final long clientId;
-
-    /**
-     * Creates an instance of TE topology provider client identifier.
-     *
-     * @param providerId provider identifier
-     * @param clientId   client identifier
-     */
-    public ProviderClientId(long providerId, long clientId) {
-        this.providerId = providerId;
-        this.clientId = clientId;
-    }
-
-    /**
-     * Returns the provider identifier.
-     *
-     * @return provider identifier
-     */
-    public long providerId() {
-        return providerId;
-    }
-
-    /**
-     * Returns the client identifier.
-     *
-     * @return client identifier
-     */
-    public long clientId() {
-        return clientId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(providerId, clientId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof ProviderClientId) {
-            ProviderClientId that = (ProviderClientId) object;
-            return Objects.equal(providerId, that.providerId) &&
-                    Objects.equal(clientId, that.clientId);
-        }
-        return false;
-    }
-
-    /**
-     * Returns ToStringHelper with providerId and clientId.
-     *
-     * @return toStringHelper
-     */
-    protected ToStringHelper toStringHelper() {
-        return MoreObjects.toStringHelper(this)
-                .add("providerId", providerId)
-                .add("clientId", clientId);
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper().toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/SwitchingType.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/SwitchingType.java
deleted file mode 100644
index 3410672..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/SwitchingType.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-/**
- * Type of switching on a link.
- * See RFC 3471 for details.
- */
-public enum SwitchingType {
-
-    /**
-     * Designates packet-switch capable-1 (PSC-1).
-     */
-    PACKET_SWITCH_CAPABLE1(1),
-
-    /**
-     * Designates packet-switch capable-2 (PSC-2).
-     */
-    PACKET_SWITCH_CAPABLE2(2),
-
-    /**
-     * Designates packet-switch capable-3 (PSC-3).
-     */
-    PACKET_SWITCH_CAPABLE3(3),
-
-    /**
-     * Designates packet-switch capable-4 (PSC-4).
-     */
-    PACKET_SWITCH_CAPABLE4(4),
-
-    /**
-     * Designates ethernet virtual private line (EVPL).
-     */
-    ETHERNET_VIRTUAL_PRIVATE_LINE(5),
-
-    /**
-     * Designates layer-2 switch capable (L2SC).
-     */
-    LAYER2_SWITCH_CAPABLE(51),
-
-    /**
-     * Designates time-division-multiplex capable (TDM).
-     */
-    TIME_DIVISION_MULTIPLEX_CAPABLE(100),
-
-    /**
-     * Designates OTN-TDM capable.
-     */
-    OTN_TDM_CAPABLE(101),
-
-    /**
-     * Designates lambda-switch capable (LSC).
-     */
-    LAMBDA_SWITCH_CAPABLE(150),
-
-    /**
-     * Designates fiber-switch capable (FSC).
-     */
-    FIBER_SWITCH_CAPABLE(200);
-
-    private int value;
-
-    /**
-     * Creates an instance of a switching type constant corresponding
-     * to the given integer value.
-     *
-     * @param value integer value
-     */
-    SwitchingType(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Returns the integer value of the switching type.
-     *
-     * @return integer value
-     */
-    public int value() {
-        return value;
-    }
-
-    /**
-     * Returns the switching type corresponding to a given integer
-     * value. If the given value is not valid, a null is returned.
-     *
-     * @param value integer value
-     * @return corresponding switching type; or null if value is invalid
-     */
-    public static SwitchingType of(int value) {
-        switch (value) {
-            case 1:
-                return PACKET_SWITCH_CAPABLE1;
-            case 2:
-                return PACKET_SWITCH_CAPABLE2;
-            case 3:
-                return PACKET_SWITCH_CAPABLE3;
-            case 4:
-                return PACKET_SWITCH_CAPABLE4;
-            case 5:
-                return ETHERNET_VIRTUAL_PRIVATE_LINE;
-            case 51:
-                return LAYER2_SWITCH_CAPABLE;
-            case 100:
-                return TIME_DIVISION_MULTIPLEX_CAPABLE;
-            case 101:
-                return OTN_TDM_CAPABLE;
-            case 150:
-                return LAMBDA_SWITCH_CAPABLE;
-            case 200:
-                return FIBER_SWITCH_CAPABLE;
-            default:
-                return null;
-        }
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeConstants.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeConstants.java
deleted file mode 100644
index e95574a..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeConstants.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-/**
- * The common TE constants.
- */
-public final class TeConstants {
-    /**
-     * Lowest priority of a GMPLS traffic link.
-     */
-    public static final short MIN_PRIORITY = 0;
-
-    /**
-     * Highest priority of a GMPLS traffic link.
-     */
-    public static final short MAX_PRIORITY = 7;
-
-    /**
-     * Size of the BitSet flags used in TE Topology data structures, such as
-     * TE links, TE nodes, and TE topologies.
-     */
-    public static final short FLAG_MAX_BITS = 16;
-
-    /**
-     * Indication of a Nil flag or a uninitialized long integer.
-     */
-    public static final long NIL_LONG_VALUE = 0;
-
-    // no instantiation
-    private TeConstants() {
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeStatus.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeStatus.java
deleted file mode 100644
index b914061..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeStatus.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-/**
- * Represents ENUM data of teStatus.
- */
-public enum TeStatus {
-
-    /**
-     * Represents up.
-     */
-    UP(0),
-
-    /**
-     * Represents down.
-     */
-    DOWN(1),
-
-    /**
-     * Represents testing.
-     */
-    TESTING(2),
-
-    /**
-     * Represents preparingMaintenance.
-     */
-    PREPARING_MAINTENANCE(3),
-
-    /**
-     * Represents maintenance.
-     */
-    MAINTENANCE(4),
-
-    /**
-     * Status cannot be determined for some reason.
-     */
-    UNKNOWN(5);
-
-    private int teStatus;
-
-    /**
-     * Creates an instance of teStatus.
-     *
-     * @param value value of teStatus
-     */
-    TeStatus(int value) {
-        teStatus = value;
-    }
-
-    /**
-     * Returns the attribute teStatus.
-     *
-     * @return value of teStatus
-     */
-    public int teStatus() {
-        return teStatus;
-    }
-
-    /**
-     * Returns the object of teAdminStatusEnumForTypeInt.Returns null
-     * when string conversion fails or converted integer value is not
-     * recognized.
-     *
-     * @param value value of teAdminStatusEnumForTypeInt
-     * @return Object of teAdminStatusEnumForTypeInt
-     */
-    public static TeStatus of(int value) {
-        switch (value) {
-            case 0:
-                return TeStatus.UP;
-            case 1:
-                return TeStatus.DOWN;
-            case 2:
-                return TeStatus.TESTING;
-            case 3:
-                return TeStatus.PREPARING_MAINTENANCE;
-            case 4:
-                return TeStatus.MAINTENANCE;
-            case 5:
-                return TeStatus.UNKNOWN;
-            default :
-                return null;
-        }
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologies.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologies.java
deleted file mode 100644
index 1fb5194..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologies.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import java.util.Map;
-
-/**
- * Abstraction of an entity which represents a set of TE topologies.
- */
-public interface TeTopologies {
-
-    /**
-     * Returns the name of the TE topology set.
-     *
-     * @return name
-     */
-    String name();
-
-    /**
-     * Returns a collection of currently known TE topologies.
-     *
-     * @return list of TE topologies
-     */
-    Map<TeTopologyKey, TeTopology> teTopologies();
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopology.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopology.java
deleted file mode 100644
index cdded32..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopology.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import org.onosproject.net.DeviceId;
-import org.onosproject.tetopology.management.api.link.TeLink;
-import org.onosproject.tetopology.management.api.link.TeLinkTpKey;
-import org.onosproject.tetopology.management.api.node.TeNode;
-
-import java.util.BitSet;
-import java.util.Map;
-
-/**
- * Abstraction of a TE topology.
- */
-public interface TeTopology extends TeTopologyEventSubject {
-    /**
-     * Indicates that the specified topology is not usable for
-     * any ACTN operations.
-     */
-    public static final int BIT_DISABLED = 0;
-
-    /**
-     * Indicates that the topology is auto-constructed by
-     * the controller by an auto-discovery mechanism.
-     */
-    public static final int BIT_LEARNT = 1;
-
-    /**
-     * Indicates that the topology is merged from other
-     * supporting topologies.
-     */
-    public static final int BIT_MERGED = 2;
-
-    /**
-     * Indicates that the topology is customized based on
-     * another topology.
-     */
-    public static final int BIT_CUSTOMIZED = 3;
-
-    /**
-     * Returns the TE topology identifier.
-     *
-     * @return the topology id
-     */
-    TeTopologyKey teTopologyId();
-
-    /**
-     * Returns the topology characteristics flags.
-     *
-     * @return the flags
-     */
-    public BitSet flags();
-
-    /**
-     * Returns the topology optimization criteria.
-     *
-     * @return the optimization
-     */
-    public OptimizationType optimization();
-
-    /**
-     * Returns a collection of TE nodes in the topology.
-     *
-     * @return a collection of currently known TE nodes
-     */
-    Map<Long, TeNode> teNodes();
-
-    /**
-     * Returns a TE node in the topology that matches the given node
-     * identifier. A null will be returned if no such node exists.
-     *
-     * @param teNodeId the TE node id
-     * @return the corresponding node; or null if not found
-     */
-    TeNode teNode(long teNodeId);
-
-    /**
-     * Returns a collection of links in the topology.
-     *
-     * @return a collection of currently known te links
-     */
-    Map<TeLinkTpKey, TeLink> teLinks();
-
-    /**
-     * Returns a TE link in the topology that matches the given
-     * link identifier. If no such a link is found, a null is returned.
-     *
-     * @param teLinkId the TE link id
-     * @return the corresponding link; or null if not found
-     */
-    TeLink teLink(TeLinkTpKey teLinkId);
-
-    /**
-     * Returns the TE topology identifier string value.
-     *
-     * @return the topology id in String format
-     */
-    String teTopologyIdStringValue();
-
-    /**
-     * Returns the network identifier.
-     *
-     * @return network identifier
-     */
-    KeyId networkId();
-
-    /**
-     * Returns the identity of the controller owning this abstracted topology.
-     *
-     * @return the controller id
-     */
-    DeviceId ownerId();
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyEvent.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyEvent.java
deleted file mode 100644
index 4c778b2..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyEvent.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import org.onosproject.event.AbstractEvent;
-
-/**
- * TE topology event.
- */
-public class TeTopologyEvent
-        extends AbstractEvent<TeTopologyEvent.Type, TeTopologyEventSubject> {
-
-    /**
-     * Type of TE topology events.
-     */
-    public enum Type {
-        /**
-         * Designates addition of a network.
-         */
-        NETWORK_ADDED,
-
-        /**
-         * Designates update of a network.
-         */
-        NETWORK_UPDATED,
-
-        /**
-         * Designates removal of a network.
-         */
-        NETWORK_REMOVED,
-
-        /**
-         * Designates addition of a network node.
-         */
-        NODE_ADDED,
-
-        /**
-         * Designates update of a network node.
-         */
-        NODE_UPDATED,
-
-        /**
-         * Designates removal of a network node.
-         */
-        NODE_REMOVED,
-
-        /**
-         * Designates addition of a termination point.
-         */
-        TP_ADDED,
-
-        /**
-         * Designates update of a termination point.
-         */
-        TP_UPDATED,
-
-        /**
-         * Designates removal of a termination point.
-         */
-        TP_REMOVED,
-
-        /**
-         * Designates addition of a network link.
-         */
-        LINK_ADDED,
-
-        /**
-         * Designates update of a network link.
-         */
-        LINK_UPDATED,
-
-        /**
-         * Designates removal of a network link.
-         */
-        LINK_REMOVED,
-
-        /**
-         * Designates addition of a TE topology.
-         */
-        TE_TOPOLOGY_ADDED,
-
-        /**
-         * Designates update of a TE topology.
-         */
-        TE_TOPOLOGY_UPDATED,
-
-        /**
-         * Designates removal of a TE topology.
-         */
-        TE_TOPOLOGY_REMOVED,
-
-        /**
-         * Designates addition of a TE node.
-         */
-        TE_NODE_ADDED,
-
-        /**
-         * Designates update of a TE node.
-         */
-        TE_NODE_UPDATED,
-
-        /**
-         * Designates removal of a TE node.
-         */
-        TE_NODE_REMOVED,
-
-        /**
-         * Designates addition of a TE link.
-         */
-        TE_LINK_ADDED,
-
-        /**
-         * Designates update of a TE link.
-         */
-        TE_LINK_UPDATED,
-
-        /**
-         * Designates removal of a TE link.
-         */
-        TE_LINK_REMOVED
-    }
-
-    /**
-     * Constructor for TeTopologyEvent.
-     *
-     * @param type    type of topology event
-     * @param subject event subject interface
-     */
-    public TeTopologyEvent(Type type, TeTopologyEventSubject subject) {
-        super(type, subject);
-    }
-
-    /**
-     * Constructor for TeTopologyEvent.
-     *
-     * @param type    type of topology event
-     * @param subject event subject interface
-     * @param time    event time
-     */
-    public TeTopologyEvent(Type type, TeTopologyEventSubject subject, long time) {
-        super(type, subject, time);
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyEventSubject.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyEventSubject.java
deleted file mode 100644
index 585e423..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyEventSubject.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-/**
- * Abstraction of TE network topology event subject.
- */
-public interface TeTopologyEventSubject {
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyId.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyId.java
deleted file mode 100644
index 1b88d00..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyId.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import com.google.common.base.Objects;
-
-/**
- * TE Topology identifier in String format.
- */
-public class TeTopologyId extends ProviderClientId {
-    private final String topologyId;
-
-    /**
-     * Creates an instance of TE topology identifier.
-     *
-     * @param providerId value of provider identifier
-     * @param clientId   value of client identifier
-     * @param topologyId value of topology identifier
-     */
-    public TeTopologyId(long providerId, long clientId, String topologyId) {
-        super(providerId, clientId);
-        this.topologyId = topologyId;
-    }
-
-    /**
-     * Returns the topology identifier.
-     *
-     * @return topology identifier
-     */
-    public String topologyId() {
-        return topologyId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(super.hashCode(), topologyId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof TeTopologyId) {
-            if (!super.equals(object)) {
-                return false;
-            }
-            TeTopologyId that = (TeTopologyId) object;
-            return Objects.equal(this.topologyId, that.topologyId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper()
-                .add("topologyId", topologyId)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyKey.java
deleted file mode 100644
index cfab616..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyKey.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import com.google.common.base.MoreObjects.ToStringHelper;
-import com.google.common.base.Objects;
-
-/**
- * TE topology key in long integer format.
- */
-public class TeTopologyKey extends ProviderClientId {
-    private final long topologyId;
-
-    /**
-     * Creates an instance of TE topology identifier.
-     *
-     * @param providerId provider identifier
-     * @param clientId   client identifier
-     * @param topologyId topology identifier
-     */
-    public TeTopologyKey(long providerId, long clientId, long topologyId) {
-        super(providerId, clientId);
-        this.topologyId = topologyId;
-    }
-
-    /**
-     * Returns the topology identifier.
-     *
-     * @return topology identifier
-     */
-    public long topologyId() {
-        return topologyId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(super.hashCode(), topologyId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof TeTopologyKey) {
-            if (!super.equals(object)) {
-                return false;
-            }
-            TeTopologyKey that = (TeTopologyKey) object;
-            return Objects.equal(topologyId, that.topologyId);
-        }
-        return false;
-    }
-
-    /**
-     * Returns ToStringHelper with additional topologyId.
-     *
-     * @return toStringHelper
-     */
-    protected ToStringHelper toTopologyKeyStringHelper() {
-        return toStringHelper().add("topologyId", topologyId);
-    }
-
-    @Override
-    public String toString() {
-        return toTopologyKeyStringHelper().toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyListener.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyListener.java
deleted file mode 100644
index 2e71e6c..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import org.onosproject.event.EventListener;
-
-/**
- * Entity capable of receiving TE network Topology related events.
- */
-public interface TeTopologyListener extends EventListener<TeTopologyEvent> {
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProvider.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProvider.java
deleted file mode 100644
index ab60408..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProvider.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import org.onosproject.net.provider.Provider;
-
-/**
- * Abstraction of an IETF network provider.
- * APIs for Manager to signal Provider.
- */
-public interface TeTopologyProvider extends Provider {
-
-    /**
-     * TODO:
-     *
-     * Signals provider that abstract networks/network/link/node has been created/updated/deleted.
-     * It's used by producers.
-     *
-     */
-
-    // TODO: Need to look at the following functions are required for TE Nodes
-
-    // TODO: consider how dirty the triggerProbe gets; if it costs too much, let's drop it
-
-    /**
-     * Triggers an asynchronous probe of the specified device, intended to
-     * determine whether the device is present or not. An indirect result of this
-     * should be invocation of
-     * {@link org.onosproject.net.device.DeviceProviderService#deviceConnected} )} or
-     * {@link org.onosproject.net.device.DeviceProviderService#deviceDisconnected}
-     * at some later point in time.
-     *
-     * @param deviceId ID of device to be probed
-     */
-    //void triggerProbe(DeviceId deviceId);
-
-    /**
-     * Notifies the provider of a mastership role change for the specified
-     * device as decided by the core.
-     *
-     * @param deviceId  device identifier
-     * @param newRole newly determined mastership role
-     */
-    //void roleChanged(DeviceId deviceId, MastershipRole newRole);
-
-    /**
-     * Checks the reachability (connectivity) of a device from this provider.
-     *
-     * @param deviceId  device identifier
-     * @return true if reachable, false otherwise
-     */
-    //boolean isReachable(DeviceId deviceId);
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProviderRegistry.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProviderRegistry.java
deleted file mode 100644
index 2f6bef9..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProviderRegistry.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import org.onosproject.net.provider.ProviderRegistry;
-
-/**
- *  Abstraction of TE topology provider registry.
- */
-public interface TeTopologyProviderRegistry
-         extends ProviderRegistry<TeTopologyProvider, TeTopologyProviderService> {
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProviderService.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProviderService.java
deleted file mode 100644
index 139343a..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProviderService.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import org.onosproject.net.provider.ProviderService;
-import org.onosproject.tetopology.management.api.link.NetworkLink;
-import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
-import org.onosproject.tetopology.management.api.node.NetworkNode;
-import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
-import org.onosproject.tetopology.management.api.node.TerminationPoint;
-import org.onosproject.tetopology.management.api.node.TerminationPointKey;
-
-/**
- * APIs for Provider to notify Manager about the network topology updates.
- */
-public interface TeTopologyProviderService
-           extends ProviderService<TeTopologyProvider> {
-
-    /**
-     * Signals that a Network has been created/updated.
-     *
-     * @param network value of the network to be updated
-     */
-    void networkUpdated(Network network);
-
-    /**
-     * Signals that a Network has been removed.
-     *
-     * @param networkId network id in URI format
-     */
-    void networkRemoved(KeyId networkId);
-
-    /**
-     * Signals that a Link has been created/updated.
-     *
-     * @param linkKey link id
-     * @param link link object to be updated
-    */
-    void linkUpdated(NetworkLinkKey linkKey, NetworkLink link);
-
-    /**
-     * Signals that a Network has been removed.
-     *
-     * @param linkKey link id
-     */
-    void linkRemoved(NetworkLinkKey linkKey);
-
-    /**
-     * Signals that a Node has been created/updated.
-     *
-     * @param nodeKey node id
-     * @param node node object to be updated
-     */
-    void nodeUpdated(NetworkNodeKey nodeKey, NetworkNode node);
-
-    /**
-     * Signals that a Node has been removed.
-     *
-     * @param nodeKey node id
-     */
-    void nodeRemoved(NetworkNodeKey nodeKey);
-
-    /**
-     * Signals that a TerminationPoint has been created/updated.
-     *
-     * @param terminationPointKey termination point id
-     * @param terminationPoint termination point object to be updated
-     */
-    void terminationPointUpdated(TerminationPointKey terminationPointKey,
-                                TerminationPoint terminationPoint);
-
-    /**
-     * Signals that a TerminationPoint has been removed.
-     *
-     * @param terminationPointKey termination point id
-     */
-    void terminationPointRemoved(TerminationPointKey terminationPointKey);
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyService.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyService.java
deleted file mode 100644
index dd4826b..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyService.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import org.onosproject.event.ListenerService;
-import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
-import org.onosproject.tetopology.management.api.link.TeLink;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
-import org.onosproject.tetopology.management.api.node.TeNode;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TerminationPointKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-import org.onosproject.tetopology.management.api.node.TunnelTerminationPoint;
-
-/**
- * TE Topology Service API.
- */
-public interface TeTopologyService
-        extends ListenerService<TeTopologyEvent, TeTopologyListener> {
-
-    /**
-     * Returns a collection of currently known networks.
-     *
-     * @return a collection of networks
-     */
-    Networks networks();
-
-    /**
-     * Returns the network identified by its network identifier. if no
-     * network can be found, a null is returned.
-     *
-     * @param networkId network id in URI format
-     * @return the corresponding network; or null if not found
-     */
-    Network network(KeyId networkId);
-
-    /**
-     * Updates the network.
-     *
-     * @param network network to be updated
-     */
-    void updateNetwork(Network network);
-
-    /**
-     * Removes the network corresponding to the given network identifier.
-     *
-     * @param networkId network id in URI format
-     */
-    void removeNetwork(KeyId networkId);
-
-    /**
-     * Returns a collection of currently known TE topologies.
-     *
-     * @return a collection of topologies
-     */
-    TeTopologies teTopologies();
-
-    /**
-     * Returns the TE Topology identified by the given key.
-     *
-     * @param topologyKey the given TE topology Key
-     * @return the corresponding TE topology
-     */
-    TeTopology teTopology(TeTopologyKey topologyKey);
-
-    /**
-     * Returns the merged topology in MDSC.
-     *
-     * @return the merged topology
-     */
-    TeTopology mergedTopology();
-
-    /**
-     * Creates or Updates a TE topology based on the given topology.
-     *
-     * @param teTopology the given TE topology
-     */
-    void updateTeTopology(TeTopology teTopology);
-
-    /**
-     * Removes the TE Topology identified by its key. Does nothing if
-     * no topology is found which matches the key.
-     *
-     * @param topologyKey the TE topology key
-     */
-    void removeTeTopology(TeTopologyKey topologyKey);
-
-    /**
-     * Returns the TE node identified by the given node key. If no TE
-     * node is found, a null is returned.
-     *
-     * @param nodeKey the TE node key
-     * @return the corresponding TE node,or null
-     */
-    TeNode teNode(TeNodeKey nodeKey);
-
-    /**
-     * Returns the TE link identified by the given TE link key. If no
-     * TE link is found, a null is returned.
-     *
-     * @param linkKey the TE link key
-     * @return the corresponding TE link or null
-     */
-    TeLink teLink(TeLinkTpGlobalKey linkKey);
-
-    /**
-     * Returns a tunnel termination point identified by the given tunnel
-     * termination point key. If no tunnel termination point is found,
-     * a null is returned.
-     *
-     * @param ttpKey the tunnel termination point key
-     * @return the corresponding tunnel termination point
-     */
-    TunnelTerminationPoint tunnelTerminationPoint(TtpKey ttpKey);
-
-    /**
-     * Returns the network Id for a TE Topology key.
-     *
-     * @param teTopologyKey the TE topology key
-     * @return value of network Id
-     */
-    KeyId networkId(TeTopologyKey teTopologyKey);
-
-    /**
-     * Returns the network node key for a TE node key.
-     *
-     * @param teNodeKey a TE node key
-     * @return value of network node key
-     */
-    NetworkNodeKey nodeKey(TeNodeKey teNodeKey);
-
-    /**
-     * Returns the network link key for a TE link key.
-     *
-     * @param teLinkKey a TE node key
-     * @return value of network link key
-     */
-    NetworkLinkKey linkKey(TeLinkTpGlobalKey teLinkKey);
-
-    /**
-     * Returns the termination point key for a TE termination point key.
-     *
-     * @param teTpKey a TE termination point key
-     * @return value of termination point key
-     */
-    TerminationPointKey terminationPointKey(TeLinkTpGlobalKey teTpKey);
-
-    /**
-     * Returns the TE controller global identification.
-     *
-     * @return value of controller id
-     */
-    long teContollerId();
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeUtils.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeUtils.java
deleted file mode 100644
index fe05ed7..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeUtils.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api;
-
-import com.google.common.collect.Lists;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * TE utility functions.
- */
-public final class TeUtils {
-
-    // no instantiation
-    private TeUtils() {
-    }
-
-    /**
-     * Returns true if the given collection is empty; false otherwise.
-     *
-     * @param c the given collection
-     * @return true or false
-     */
-    public static boolean nonEmpty(Collection<?> c) {
-        return c != null && !c.isEmpty();
-    }
-
-    /**
-     * Adds a given element to a given list. If element is null, the
-     * given list is returned without modification. If the list is null,
-     * the function will instantiate and return a new list.
-     *
-     * @param list    the given list
-     * @param element the given list element
-     * @param <T>     the element type
-     * @return the resulting list
-     */
-    public static <T> List<T> addListElement(List<T> list, T element) {
-        if (element == null) {
-            return list;
-        }
-
-        List<T> result = (list == null) ? Lists.newArrayList() : list;
-
-        result.add(element);
-
-        return result;
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/AsNumber.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/AsNumber.java
deleted file mode 100644
index 2e97f21..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/AsNumber.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import java.util.Objects;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Implementation of Autonomous System (AS) number as an ElementType.
- */
-public class AsNumber implements ElementType {
-    private final int asNumber;
-
-    /**
-     * Creates an instance of AsNumber.
-     *
-     * @param asNumber autonomous system number
-     */
-    public AsNumber(int asNumber) {
-        this.asNumber = asNumber;
-    }
-
-    /**
-     * Returns the autonomous system number.
-     *
-     * @return the AS number
-     */
-    public int asNumber() {
-        return asNumber;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(asNumber);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof AsNumber) {
-            AsNumber other = (AsNumber) obj;
-            return Objects.equals(asNumber, other.asNumber);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-            .add("asNumber", asNumber)
-            .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/CommonLinkData.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/CommonLinkData.java
deleted file mode 100644
index dd3724d..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/CommonLinkData.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import org.onosproject.tetopology.management.api.EncodingType;
-import org.onosproject.tetopology.management.api.SwitchingType;
-import org.onosproject.tetopology.management.api.TeStatus;
-
-import java.util.BitSet;
-import java.util.List;
-
-/**
- * Representation of link common attributes.
- */
-public class CommonLinkData {
-    private final TeStatus adminStatus;
-    private final TeStatus opStatus;
-    private final BitSet flags;
-
-    private final SwitchingType switchingLayer;
-    private final EncodingType encodingLayer;
-
-    private final ExternalLink externalLink;
-    private final UnderlayPath underlayPath;
-    private final TePathAttributes teAttributes;
-    private final List<Long> interLayerLocks;
-    private final LinkBandwidth bandwidth;
-    private final Long adminGroup;
-
-    /**
-     * Creates an instance of CommonLinkData.
-     *
-     * @param adminStatus     the admin status
-     * @param opStatus        the operational Status
-     * @param flags           the flags
-     * @param switchingLayer  the network layer switching type
-     * @param encodingLayer   the network layer encoding type
-     * @param externalLink    the external link specific attributes
-     * @param underlayPath    the link underlay path and supporting tunnel
-     * @param teAttributes    the link path TE attributes
-     * @param adminGroup      the administrative group
-     * @param interLayerLocks the supported inter-layer locks
-     * @param bandwidth       the link maximum and available bandwidth at
-     *                        each priority level
-     */
-    public CommonLinkData(TeStatus adminStatus,
-                          TeStatus opStatus, BitSet flags, SwitchingType switchingLayer,
-                          EncodingType encodingLayer, ExternalLink externalLink,
-                          UnderlayPath underlayPath, TePathAttributes teAttributes,
-                          Long adminGroup, List<Long> interLayerLocks,
-                          LinkBandwidth bandwidth) {
-        this.adminStatus = adminStatus;
-        this.opStatus = opStatus;
-        this.flags = flags;
-        this.switchingLayer = switchingLayer;
-        this.encodingLayer = encodingLayer;
-        this.externalLink = externalLink;
-        this.underlayPath = underlayPath;
-        this.teAttributes = teAttributes;
-        this.adminGroup = adminGroup;
-        this.interLayerLocks = interLayerLocks != null ?
-                Lists.newArrayList(interLayerLocks) : null;
-        this.bandwidth = bandwidth;
-    }
-
-    /**
-     * Creates an instance of CommonLinkData with a TeLink.
-     *
-     * @param link the TE link
-     */
-    public CommonLinkData(TeLink link) {
-        this.adminStatus = link.adminStatus();
-        this.opStatus = link.opStatus();
-        this.flags = link.flags();
-        this.switchingLayer = link.switchingLayer();
-        this.encodingLayer = link.encodingLayer();
-        this.externalLink = link.externalLink();
-        this.underlayPath = new UnderlayPath(link);
-        this.teAttributes = new TePathAttributes(link);
-        this.adminGroup = link.administrativeGroup();
-        this.interLayerLocks = link.interLayerLocks() != null ?
-                Lists.newArrayList(link.interLayerLocks()) : null;
-        this.bandwidth = new LinkBandwidth(link);
-    }
-
-
-    /**
-     * Returns the admin status.
-     *
-     * @return the admin status
-     */
-    public TeStatus adminStatus() {
-        return adminStatus;
-    }
-
-    /**
-     * Returns the operational status.
-     *
-     * @return the optional status
-     */
-    public TeStatus opStatus() {
-        return opStatus;
-    }
-
-    /**
-     * Returns the flags.
-     *
-     * @return the flags
-     */
-    public BitSet flags() {
-        return flags;
-    }
-
-    /**
-     * Returns the network layer switching type for this link.
-     *
-     * @return the switching layer type
-     */
-    public SwitchingType switchingLayer() {
-        return switchingLayer;
-    }
-
-    /**
-     * Returns the network layer encoding type for this link.
-     *
-     * @return the encoding type
-     */
-    public EncodingType encodingLayer() {
-        return encodingLayer;
-    }
-
-    /**
-     * Returns the external link.
-     *
-     * @return the external link
-     */
-    public ExternalLink externalLink() {
-        return externalLink;
-    }
-
-    /**
-     * Returns the link underlay path and tunnel.
-     *
-     * @return the underlay path
-     */
-    public UnderlayPath underlayPath() {
-        return underlayPath;
-    }
-
-    /**
-     * Returns the path TE attributes.
-     *
-     * @return the path TE Attributes
-     */
-    public TePathAttributes teAttributes() {
-        return teAttributes;
-    }
-
-    /**
-     * Returns the link administrative group.
-     *
-     * @return the admin group
-     */
-    public Long adminGroup() {
-        return adminGroup;
-    }
-
-    /**
-     * Returns the supported inter-layer locks.
-     *
-     * @return the inter-layer locks
-     */
-    public List<Long> interLayerLocks() {
-        if (interLayerLocks == null) {
-            return null;
-        }
-        return ImmutableList.copyOf(interLayerLocks);
-    }
-
-    /**
-     * Returns the link maximum and available bandwidth at each priority level.
-     *
-     * @return the bandwidth
-     */
-    public LinkBandwidth bandwidth() {
-        return bandwidth;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(adminStatus, opStatus, flags, switchingLayer,
-                                encodingLayer, externalLink, underlayPath,
-                                teAttributes, interLayerLocks, bandwidth);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof CommonLinkData) {
-            CommonLinkData that = (CommonLinkData) object;
-            return Objects.equal(adminStatus, that.adminStatus) &&
-                    Objects.equal(opStatus, that.opStatus) &&
-                    Objects.equal(flags, that.flags) &&
-                    Objects.equal(switchingLayer, that.switchingLayer) &&
-                    Objects.equal(encodingLayer, that.encodingLayer) &&
-                    Objects.equal(externalLink, that.externalLink) &&
-                    Objects.equal(underlayPath, that.underlayPath) &&
-                    Objects.equal(teAttributes, that.teAttributes) &&
-                    Objects.equal(interLayerLocks, that.interLayerLocks) &&
-                    Objects.equal(bandwidth, that.bandwidth);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("adminStatus", adminStatus)
-                .add("opStatus", opStatus)
-                .add("flags", flags)
-                .add("switchingLayer", switchingLayer)
-                .add("encodingLayer", encodingLayer)
-                .add("externalLink", externalLink)
-                .add("underlayPath", underlayPath)
-                .add("teAttributes", teAttributes)
-                .add("interLayerLocks", interLayerLocks)
-                .add("bandwidth", bandwidth)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ConnectivityMatrixId.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ConnectivityMatrixId.java
deleted file mode 100644
index 056b1f0..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ConnectivityMatrixId.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import org.onosproject.tetopology.management.api.LongValue;
-
-/**
- * Implementation of Connectivity matrix entry id as an element type.
- */
-public class ConnectivityMatrixId extends LongValue implements ElementType {
-
-    /**
-     * Creates a connectivity matrix identifier.
-     *
-     * @param entryId the entry identifier
-     */
-    public ConnectivityMatrixId(long entryId) {
-        super(entryId);
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/DefaultNetworkLink.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/DefaultNetworkLink.java
deleted file mode 100644
index d8f97f3..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/DefaultNetworkLink.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import org.onosproject.tetopology.management.api.KeyId;
-import org.onosproject.tetopology.management.api.node.NodeTpKey;
-
-import java.util.List;
-
-/**
- * Default implementation of a network link.
- */
-public class DefaultNetworkLink implements NetworkLink {
-    private final KeyId linkId;
-    private final NodeTpKey source;
-    private final NodeTpKey destination;
-    private final List<NetworkLinkKey> supportingLinkIds;
-    private final TeLink teLink;
-
-    /**
-     * Creates an instance of a network link.
-     *
-     * @param linkId            link identifier
-     * @param source            source of termination point
-     * @param destination       destination termination point
-     * @param supportingLinkIds supporting links
-     * @param teLink            TE link which this network link maps to
-     */
-    public DefaultNetworkLink(KeyId linkId,
-                              NodeTpKey source,
-                              NodeTpKey destination,
-                              List<NetworkLinkKey> supportingLinkIds,
-                              TeLink teLink) {
-        this.linkId = linkId;
-        this.source = source;
-        this.destination = destination;
-        this.supportingLinkIds = supportingLinkIds != null ?
-                Lists.newArrayList(supportingLinkIds) : null;
-        this.teLink = teLink;
-    }
-
-    @Override
-    public KeyId linkId() {
-        return linkId;
-    }
-
-    @Override
-    public NodeTpKey source() {
-        return source;
-    }
-
-    @Override
-    public NodeTpKey destination() {
-        return destination;
-    }
-
-    @Override
-    public List<NetworkLinkKey> supportingLinkIds() {
-        if (supportingLinkIds == null) {
-            return null;
-        }
-        return ImmutableList.copyOf(supportingLinkIds);
-    }
-
-    @Override
-    public TeLink teLink() {
-        return teLink;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(linkId, source, destination,
-                                supportingLinkIds, teLink);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof DefaultNetworkLink) {
-            DefaultNetworkLink that = (DefaultNetworkLink) object;
-            return Objects.equal(linkId, that.linkId) &&
-                    Objects.equal(source, that.source) &&
-                    Objects.equal(destination, that.destination) &&
-                    Objects.equal(supportingLinkIds, that.supportingLinkIds) &&
-                    Objects.equal(teLink, that.teLink);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("linkId", linkId)
-                .add("source", source)
-                .add("destination", destination)
-                .add("supportingLinkIds", supportingLinkIds)
-                .add("teLink", teLink)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/DefaultTeLink.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/DefaultTeLink.java
deleted file mode 100644
index fb728b8..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/DefaultTeLink.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.onosproject.tetopology.management.api.EncodingType;
-import org.onosproject.tetopology.management.api.SwitchingType;
-import org.onosproject.tetopology.management.api.TeConstants;
-import org.onosproject.tetopology.management.api.TeStatus;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-
-import java.util.BitSet;
-import java.util.List;
-
-/**
- * The default implementation of TE link.
- */
-public class DefaultTeLink implements TeLink {
-    private final TeLinkTpKey teLinkKey;
-    private final TeLinkTpKey peerTeLinkKey;
-    private final TeTopologyKey underlayTopologyId;
-    private final TeLinkTpGlobalKey supportTeLinkId;
-    private final TeLinkTpGlobalKey sourceTeLinkId;
-    private final CommonLinkData teData;
-
-    /**
-     * Creates an instance of a TE link.
-     *
-     * @param teLinkKey          the TE link key
-     * @param peerTeLinkKey      the bi-directional peer link key
-     * @param underlayTopologyId the link underlay TE topology id
-     * @param supportTeLinkId    the supporting TE link id
-     * @param sourceTeLinkId     the source TE link id
-     * @param teData             the link common te data
-     */
-    public DefaultTeLink(TeLinkTpKey teLinkKey,
-                         TeLinkTpKey peerTeLinkKey,
-                         TeTopologyKey underlayTopologyId,
-                         TeLinkTpGlobalKey supportTeLinkId,
-                         TeLinkTpGlobalKey sourceTeLinkId,
-                         CommonLinkData teData) {
-        this.teLinkKey = teLinkKey;
-        this.peerTeLinkKey = peerTeLinkKey;
-        this.underlayTopologyId = underlayTopologyId;
-        this.supportTeLinkId = supportTeLinkId;
-        this.sourceTeLinkId = sourceTeLinkId;
-        this.teData = teData;
-    }
-
-    @Override
-    public TeLinkTpKey teLinkKey() {
-        return teLinkKey;
-    }
-
-    @Override
-    public TeLinkTpKey peerTeLinkKey() {
-        return peerTeLinkKey;
-    }
-
-    @Override
-    public BitSet flags() {
-        if (teData == null) {
-            return null;
-        }
-        return teData.flags();
-    }
-
-    @Override
-    public SwitchingType switchingLayer() {
-        if (teData == null) {
-            return null;
-        }
-        return teData.switchingLayer();
-    }
-
-    @Override
-    public EncodingType encodingLayer() {
-        if (teData == null) {
-            return null;
-        }
-        return teData.encodingLayer();
-    }
-
-    @Override
-    public ExternalLink externalLink() {
-        if (teData == null) {
-            return null;
-        }
-        return teData.externalLink();
-    }
-
-    @Override
-    public TeTopologyKey underlayTeTopologyId() {
-        return underlayTopologyId;
-    }
-
-    @Override
-    public UnderlayPrimaryPath primaryPath() {
-        if (teData == null || teData.underlayPath() == null) {
-            return null;
-        }
-        return teData.underlayPath().primaryPath();
-    }
-
-    @Override
-    public List<UnderlayBackupPath> backupPaths() {
-        if (teData == null || teData.underlayPath() == null) {
-            return null;
-        }
-        return teData.underlayPath().backupPaths();
-    }
-
-    @Override
-    public TunnelProtectionType tunnelProtectionType() {
-        if (teData == null || teData.underlayPath() == null) {
-            return null;
-        }
-        return teData.underlayPath().tunnelProtectionType();
-    }
-
-    @Override
-    public long sourceTtpId() {
-        if (teData == null || teData.underlayPath() == null) {
-            return TeConstants.NIL_LONG_VALUE;
-        }
-        return teData.underlayPath().srcTtpId();
-    }
-
-    @Override
-    public long destinationTtpId() {
-        if (teData == null || teData.underlayPath() == null) {
-            return TeConstants.NIL_LONG_VALUE;
-        }
-        return teData.underlayPath().dstTtpId();
-    }
-
-    @Override
-    public TeTunnelId teTunnelId() {
-        if (teData == null || teData.underlayPath() == null) {
-            return null;
-        }
-        return teData.underlayPath().teTunnelId();
-    }
-
-    @Override
-    public TeLinkTpGlobalKey supportingTeLinkId() {
-        return supportTeLinkId;
-    }
-
-    @Override
-    public TeLinkTpGlobalKey sourceTeLinkId() {
-        return sourceTeLinkId;
-    }
-
-    @Override
-    public Long cost() {
-        if (teData == null || teData.teAttributes() == null) {
-            return TeConstants.NIL_LONG_VALUE;
-        }
-        return teData.teAttributes().cost();
-    }
-
-    @Override
-    public Long delay() {
-        if (teData == null || teData.teAttributes() == null) {
-            return TeConstants.NIL_LONG_VALUE;
-        }
-        return teData.teAttributes().delay();
-    }
-
-    @Override
-    public List<Long> srlgs() {
-        if (teData == null || teData.teAttributes() == null) {
-            return null;
-        }
-        return teData.teAttributes().srlgs();
-    }
-
-    @Override
-    public Long administrativeGroup() {
-        if (teData == null) {
-            return null;
-        }
-        return teData.adminGroup();
-    }
-
-    @Override
-    public List<Long> interLayerLocks() {
-        if (teData == null) {
-            return null;
-        }
-        return teData.interLayerLocks();
-    }
-
-    @Override
-    public float[] maxBandwidth() {
-        if (teData == null || teData.bandwidth() == null) {
-            return null;
-        }
-        return teData.bandwidth().maxBandwidth();
-    }
-
-    @Override
-    public float[] availBandwidth() {
-        if (teData == null || teData.bandwidth() == null) {
-            return null;
-        }
-        return teData.bandwidth().availBandwidth();
-    }
-
-    @Override
-    public float[] maxAvailLspBandwidth() {
-        if (teData == null || teData.bandwidth() == null) {
-            return null;
-        }
-        return teData.bandwidth().maxAvailLspBandwidth();
-    }
-
-    @Override
-    public float[] minAvailLspBandwidth() {
-        if (teData == null || teData.bandwidth() == null) {
-            return null;
-        }
-        return teData.bandwidth().minAvailLspBandwidth();
-    }
-
-    @Override
-    public OduResource oduResource() {
-        if (teData == null || teData.bandwidth() == null) {
-            return null;
-        }
-        return teData.bandwidth().oduResource();
-    }
-
-    @Override
-    public TeStatus adminStatus() {
-        if (teData == null) {
-            return null;
-        }
-        return teData.adminStatus();
-    }
-
-    @Override
-    public TeStatus opStatus() {
-        if (teData == null) {
-            return null;
-        }
-        return teData.opStatus();
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(teLinkKey, peerTeLinkKey, underlayTopologyId,
-                                supportTeLinkId, sourceTeLinkId, teData);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof DefaultTeLink) {
-            DefaultTeLink that = (DefaultTeLink) object;
-            return Objects.equal(teLinkKey, that.teLinkKey) &&
-                    Objects.equal(peerTeLinkKey, that.peerTeLinkKey) &&
-                    Objects.equal(underlayTopologyId, that.underlayTopologyId) &&
-                    Objects.equal(supportTeLinkId, that.supportTeLinkId) &&
-                    Objects.equal(sourceTeLinkId, that.sourceTeLinkId) &&
-                    Objects.equal(teData, that.teData);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("teLinkKey", teLinkKey)
-                .add("peerTeLinkKey", peerTeLinkKey)
-                .add("underlayTopologyId", underlayTopologyId)
-                .add("supportTeLinkId", supportTeLinkId)
-                .add("sourceTeLinkId", sourceTeLinkId)
-                .add("teData", teData)
-                .toString();
-    }
-
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ElementType.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ElementType.java
deleted file mode 100644
index 3c938c8..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ElementType.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-/**
- * Abstraction of a path element type.
- */
-public interface ElementType {
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ExternalLink.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ExternalLink.java
deleted file mode 100644
index cb91ed1..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ExternalLink.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-
-/**
- * Representation of an external domain link.
- */
-public class ExternalLink {
-    private final TeLinkTpGlobalKey externalLinkKey;
-    private final Long plugId;
-
-    /**
-     * Creates an instance of an external domain link.
-     *
-     * @param externalLinkKey external TE link key
-     * @param plugId          global plug identifier
-     */
-    public ExternalLink(TeLinkTpGlobalKey externalLinkKey, long plugId) {
-        this.externalLinkKey = externalLinkKey;
-        this.plugId = plugId;
-    }
-
-    /**
-     * Returns the external TE link key.
-     *
-     * @return the externalLinkKey
-     */
-    public TeLinkTpGlobalKey externalLinkKey() {
-        return externalLinkKey;
-    }
-
-    /**
-     * Returns the global plug identifier.
-     *
-     * @return value of the global plug id
-     */
-    public Long plugId() {
-        return plugId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(externalLinkKey, plugId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof ExternalLink) {
-            ExternalLink that = (ExternalLink) object;
-            return Objects.equal(externalLinkKey, that.externalLinkKey) &&
-                    Objects.equal(plugId, that.plugId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("externalLinkKey", externalLinkKey)
-                .add("plugId", plugId)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/Label.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/Label.java
deleted file mode 100644
index 8130f78..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/Label.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import org.onosproject.tetopology.management.api.LongValue;
-
-/**
- * Implementation of a label as an element type.
- */
-public class Label extends LongValue implements ElementType {
-    /**
-     * Creates a label instance.
-     *
-     * @param label label value
-     */
-    public Label(long label) {
-        super(label);
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/LinkBandwidth.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/LinkBandwidth.java
deleted file mode 100644
index 22b1c86..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/LinkBandwidth.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-
-import java.util.Arrays;
-
-/**
- * Representation the TE link bandwidths.
- */
-public class LinkBandwidth {
-    /**
-     * Maximum bandwidth, Size is MAX_PRIORITY + 1.
-     */
-    private final float[] maxBandwidth;
-
-    /**
-     * Unreserved bandwidth, Size is MAX_PRIORITY + 1.
-     */
-    private final float[] availBandwidth;
-
-    /**
-     * Maximum available bandwidth for a LSP.
-     */
-    private final float[] maxAvailLspBandwidth;
-
-    /**
-     * Minimum available bandwidth for a LSP.
-     */
-    private final float[] minAvailLspBandwidth;
-
-    /**
-     * ODU resources.
-     */
-    private final OduResource odu;
-
-    /**
-     * Creates an instance of link bandwidth.
-     *
-     * @param maxBandwidth         the maximum bandwidth at each priority level
-     * @param availBandwidth       the available bandwidth at each priority level
-     * @param maxAvailLspBandwidth the maximum available bandwidth for a LSP at
-     *                             each priority level
-     * @param minAvailLspBandwidth the minimum available bandwidth for a LSP at
-     *                             each priority level
-     * @param odu                  ODU resources
-     */
-    public LinkBandwidth(float[] maxBandwidth,
-                         float[] availBandwidth,
-                         float[] maxAvailLspBandwidth,
-                         float[] minAvailLspBandwidth,
-                         OduResource odu) {
-        this.maxBandwidth = maxBandwidth != null ?
-                Arrays.copyOf(maxBandwidth, maxBandwidth.length) : null;
-        this.availBandwidth = availBandwidth != null ?
-                Arrays.copyOf(availBandwidth, availBandwidth.length) : null;
-        this.maxAvailLspBandwidth = maxAvailLspBandwidth != null ?
-                Arrays.copyOf(maxAvailLspBandwidth,
-                              maxAvailLspBandwidth.length) : null;
-        this.minAvailLspBandwidth = minAvailLspBandwidth != null ?
-                Arrays.copyOf(minAvailLspBandwidth,
-                              minAvailLspBandwidth.length) : null;
-        this.odu = odu;
-    }
-
-    /**
-     * Creates an instance of link bandwidth with a TE link.
-     *
-     * @param link the TE link
-     */
-    public LinkBandwidth(TeLink link) {
-        this.maxBandwidth = link.maxBandwidth();
-        this.availBandwidth = link.maxAvailLspBandwidth();
-        this.maxAvailLspBandwidth = link.maxAvailLspBandwidth();
-        this.minAvailLspBandwidth = link.minAvailLspBandwidth();
-        this.odu = link.oduResource();
-    }
-
-    /**
-     * Returns the maximum bandwidth at each priority level.
-     *
-     * @return the maxBandwidth
-     */
-    public float[] maxBandwidth() {
-        if (maxBandwidth == null) {
-            return null;
-        }
-        return Arrays.copyOf(maxBandwidth, maxBandwidth.length);
-    }
-
-    /**
-     * Returns the available bandwidth at each priority level.
-     *
-     * @return the available bandwidth
-     */
-    public float[] availBandwidth() {
-        if (availBandwidth == null) {
-            return null;
-        }
-        return Arrays.copyOf(availBandwidth, availBandwidth.length);
-    }
-
-    /**
-     * Returns the maximum available bandwidth for a LSP at each priority
-     * level.
-     *
-     * @return the maximum available bandwidth
-     */
-    public float[] maxAvailLspBandwidth() {
-        if (maxAvailLspBandwidth == null) {
-            return null;
-        }
-        return Arrays.copyOf(maxAvailLspBandwidth, maxAvailLspBandwidth.length);
-    }
-
-    /**
-     * Returns the minimum available bandwidth for a LSP at each priority level.
-     *
-     * @return the minimum available bandwidth
-     */
-    public float[] minAvailLspBandwidth() {
-        if (minAvailLspBandwidth == null) {
-            return null;
-        }
-        return Arrays.copyOf(minAvailLspBandwidth, minAvailLspBandwidth.length);
-    }
-
-    /**
-     * Returns the link ODUk resources.
-     *
-     * @return the ODUk resources
-     */
-    public OduResource oduResource() {
-        return odu;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(Arrays.hashCode(maxBandwidth),
-                Arrays.hashCode(availBandwidth),
-                Arrays.hashCode(maxAvailLspBandwidth),
-                Arrays.hashCode(minAvailLspBandwidth),
-                odu);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof LinkBandwidth) {
-            LinkBandwidth that = (LinkBandwidth) object;
-            return Arrays.equals(maxBandwidth, that.maxBandwidth) &&
-                    Arrays.equals(availBandwidth, that.availBandwidth) &&
-                    Arrays.equals(maxAvailLspBandwidth, that.maxAvailLspBandwidth) &&
-                    Arrays.equals(minAvailLspBandwidth, that.minAvailLspBandwidth) &&
-                    Objects.equal(odu, that.odu);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("maxBandwidth", maxBandwidth)
-                .add("availBandwidth", availBandwidth)
-                .add("maxAvailLspBandwidth", maxAvailLspBandwidth)
-                .add("minAvailLspBandwidth", minAvailLspBandwidth)
-                .add("odu", odu)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLink.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLink.java
deleted file mode 100644
index d40e6c1..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLink.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import org.onosproject.tetopology.management.api.KeyId;
-import org.onosproject.tetopology.management.api.node.NodeTpKey;
-
-import java.util.List;
-
-/**
- * Abstraction of a base network link.
- */
-public interface NetworkLink {
-
-    /**
-     * Returns the link identifier.
-     *
-     * @return link identifier
-     */
-    KeyId linkId();
-
-    /**
-     * Returns the link source termination point.
-     *
-     * @return source link termination point identifier
-     */
-    NodeTpKey source();
-
-    /**
-     * Returns the link destination termination point.
-     *
-     * @return destination link termination point id
-     */
-    NodeTpKey destination();
-
-    /**
-     * Returns the supporting link identifiers.
-     *
-     * @return list of the ids of the supporting links
-     */
-    List<NetworkLinkKey> supportingLinkIds();
-
-    /**
-     * Returns the link TE extension.
-     *
-     * @return TE link attributes
-     */
-    TeLink teLink();
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLinkEventSubject.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLinkEventSubject.java
deleted file mode 100644
index 50d4100..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLinkEventSubject.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.onosproject.tetopology.management.api.TeTopologyEventSubject;
-
-/**
- * Representation of a network link event.
- */
-public class NetworkLinkEventSubject implements TeTopologyEventSubject {
-    private final NetworkLinkKey key;
-    private final NetworkLink networkLink;
-
-    /**
-     * Creates a network link event instance.
-     *
-     * @param key         the network link global key
-     * @param networkLink the network link object
-     */
-    public NetworkLinkEventSubject(NetworkLinkKey key, NetworkLink networkLink) {
-        this.key = key;
-        this.networkLink = networkLink;
-    }
-
-    /**
-     * Returns the network link global key.
-     *
-     * @return the key
-     */
-    public NetworkLinkKey key() {
-        return key;
-    }
-
-    /**
-     * Returns the network link.
-     *
-     * @return the network link
-     */
-    public NetworkLink networkLink() {
-        return networkLink;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(key, networkLink);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof NetworkLinkEventSubject) {
-            NetworkLinkEventSubject that = (NetworkLinkEventSubject) object;
-            return Objects.equal(key, that.key) &&
-                    Objects.equal(networkLink, that.networkLink);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("key", key)
-                .add("networkLink", networkLink)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLinkKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLinkKey.java
deleted file mode 100644
index 2e04566..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLinkKey.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import org.onosproject.tetopology.management.api.KeyId;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-
-/**
- * Representation of a link key or link reference.
- */
-public class NetworkLinkKey {
-    private final KeyId networkId;
-    private final KeyId linkId;
-
-    /**
-     * Creates an instance of NetworkLinkKey.
-     *
-     * @param networkId network identifier
-     * @param linkId link identifier
-     */
-    public NetworkLinkKey(KeyId networkId, KeyId linkId) {
-        this.networkId = networkId;
-        this.linkId = linkId;
-    }
-
-    /**
-     * Returns the network identifier.
-     *
-     * @return network identifier
-     */
-    public KeyId networkId() {
-        return networkId;
-    }
-
-    /**
-     * Returns the link identifier.
-     *
-     * @return link identifier
-     */
-    public KeyId linkId() {
-        return linkId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(networkId, linkId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof NetworkLinkKey) {
-            NetworkLinkKey that = (NetworkLinkKey) object;
-            return Objects.equal(this.networkId, that.networkId) &&
-                    Objects.equal(this.linkId, that.linkId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("networkId", networkId)
-                .add("linkId", linkId)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/OduResource.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/OduResource.java
deleted file mode 100644
index 93d5d1f..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/OduResource.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-
-/**
- * Representation of an ODU link resource.
- */
-public class OduResource {
-    private final short odu0s;
-    private final short odu1s;
-    private final short odu2s;
-    private final short odu2es;
-    private final short odu3s;
-    private final short odu4s;
-    private final short oduFlexes;
-
-    /**
-     * Creates an instance of an ODU link resource.
-     *
-     * @param odu0s     number of available ODU0 containers
-     * @param odu1s     number of available ODU1 containers
-     * @param odu2s     number of available ODU2 containers
-     * @param odu2es    number of available ODU2e containers
-     * @param odu3s     number of available ODU3 containers
-     * @param odu4s     number of available ODU4 containers
-     * @param oduFlexes available ODUflex bandwidth in terms of ODU0 containers
-     */
-    public OduResource(short odu0s, short odu1s, short odu2s,
-                       short odu2es, short odu3s, short odu4s,
-                       short oduFlexes) {
-        this.odu0s = odu0s;
-        this.odu1s = odu1s;
-        this.odu2s = odu2s;
-        this.odu2es = odu2es;
-        this.odu3s = odu3s;
-        this.odu4s = odu4s;
-        this.oduFlexes = oduFlexes;
-    }
-
-    /**
-     * Returns the number of available ODU0s.
-     *
-     * @return the odu0s
-     */
-    public short odu0s() {
-        return odu0s;
-    }
-
-    /**
-     * Returns the number of available ODU1s.
-     *
-     * @return the odu1s
-     */
-    public short odu1s() {
-        return odu1s;
-    }
-
-    /**
-     * Returns the number of available ODU2s.
-     *
-     * @return the odu2s
-     */
-    public short odu2s() {
-        return odu2s;
-    }
-
-    /**
-     * Returns the number of available ODU2es.
-     *
-     * @return the odu2es
-     */
-    public short odu2es() {
-        return odu2es;
-    }
-
-    /**
-     * Returns the number of available ODU3s.
-     *
-     * @return the odu3s
-     */
-    public short odu3s() {
-        return odu3s;
-    }
-
-    /**
-     * Returns the number of available ODU4s.
-     *
-     * @return the odu4s
-     */
-    public short odu4s() {
-        return odu4s;
-    }
-
-    /**
-     * Returns available ODUflex bandwidth in terms of ODU0 containers.
-     *
-     * @return the oduFlexes
-     */
-    public short oduFlexes() {
-        return oduFlexes;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(odu0s, odu1s, odu2s, odu2es, odu3s,
-                                odu4s, oduFlexes);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof OduResource) {
-            OduResource that = (OduResource) object;
-            return (this.odu0s == that.odu0s) &&
-                    (this.odu1s == that.odu1s) &&
-                    (this.odu2s == that.odu2s) &&
-                    (this.odu2es == that.odu2es) &&
-                    (this.odu3s == that.odu3s) &&
-                    (this.odu4s == that.odu4s) &&
-                    (this.oduFlexes == that.oduFlexes);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("odu0s", odu0s)
-                .add("odu1s", odu1s)
-                .add("odu2s", odu2s)
-                .add("odu2es", odu2es)
-                .add("odu3s", odu3s)
-                .add("odu4s", odu4s)
-                .add("oduFlexes", oduFlexes)
-                .toString();
-    }
-
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/PathElement.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/PathElement.java
deleted file mode 100644
index 3cbaae8..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/PathElement.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-
-/**
- * Representation of a path element.
- */
-public class PathElement {
-    private final long pathElementId;
-    private final long teNodeId;
-    private final ElementType type;
-    private final boolean loose;
-
-    /**
-     * Creates a path element.
-     *
-     * @param pathElementId path element identifier
-     * @param teNodeId      identifier of the TE node to which this
-     *                      path element belongs
-     * @param type          path element type
-     * @param loose         loose if true; strict if false
-     */
-    public PathElement(long pathElementId, long teNodeId,
-                       ElementType type, boolean loose) {
-        this.pathElementId = pathElementId;
-        this.teNodeId = teNodeId;
-        this.type = type;
-        this.loose = loose;
-    }
-
-    /**
-     * Returns the path element identifier.
-     *
-     * @return path element id
-     */
-    public long pathElementId() {
-        return pathElementId;
-    }
-
-    /**
-     * Returns the TE node identifier.
-     *
-     * @return te node id
-     */
-    public long teNodeId() {
-        return teNodeId;
-    }
-
-    /**
-     * Returns the path element type.
-     *
-     * @return path element type
-     */
-    public ElementType type() {
-        return type;
-    }
-
-    /**
-     * Returns the loose flag. true = loose; false = strict.
-     *
-     * @return loose value
-     */
-    public boolean loose() {
-        return loose;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(pathElementId, teNodeId, type, loose);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof PathElement) {
-            PathElement that = (PathElement) object;
-            return Objects.equal(pathElementId, that.pathElementId) &&
-                    Objects.equal(teNodeId, that.teNodeId) &&
-                    Objects.equal(type, that.type) &&
-                    Objects.equal(loose, that.loose);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("pathElementId", pathElementId)
-                .add("teNodeId", teNodeId)
-                .add("type", type)
-                .add("loose", loose)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeIpv4.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeIpv4.java
deleted file mode 100644
index 454fed3..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeIpv4.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * Copyright 2016 Open Networking Foundation
- * <p>
- * 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.tetopology.management.api.link;
-
-import com.google.common.base.MoreObjects;
-import org.onlab.packet.Ip4Address;
-
-import java.util.Objects;
-
-/**
- * Implementation of IPv4 address as an element type.
- */
-public class TeIpv4 implements ElementType {
-    private final Ip4Address v4Address;
-    private final short v4PrefixLength;
-
-    /**
-     * Creates an IPv4 address.
-     *
-     * @param v4Address      the IPv4 address
-     * @param v4PrefixLength the length of IPv4 prefix
-     */
-    public TeIpv4(Ip4Address v4Address, short v4PrefixLength) {
-        this.v4Address = v4Address;
-        this.v4PrefixLength = v4PrefixLength;
-    }
-
-    /**
-     * Returns the IPv4 address.
-     *
-     * @return IPv4 address
-     */
-    public Ip4Address v4Address() {
-        return v4Address;
-    }
-
-    /**
-     * Returns the length of the IPv4 address prefix.
-     *
-     * @return IPv4 address prefix length
-     */
-    public short v4PrefixLength() {
-        return v4PrefixLength;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(v4Address, v4PrefixLength);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof TeIpv4) {
-            TeIpv4 other = (TeIpv4) obj;
-            return Objects.equals(v4Address, other.v4Address) &&
-                    Objects.equals(v4PrefixLength, other.v4PrefixLength);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("v4Address", v4Address)
-                .add("v4PrefixLength", v4PrefixLength)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeIpv6.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeIpv6.java
deleted file mode 100644
index baa033b..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeIpv6.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import com.google.common.base.MoreObjects;
-import org.onlab.packet.Ip6Address;
-
-import java.util.Objects;
-
-/**
- * Implementation of an IPv6 address as an element type.
- */
-public class TeIpv6 implements ElementType {
-    private final Ip6Address v6Address;
-    private final short v6PrefixLength;
-
-    /**
-     * Creates an IPv6 address.
-     *
-     * @param v6Address      the IP v6 address to set
-     * @param v6PrefixLength the length of the IPv6 address prefix
-     */
-    public TeIpv6(Ip6Address v6Address, short v6PrefixLength) {
-        this.v6Address = v6Address;
-        this.v6PrefixLength = v6PrefixLength;
-    }
-
-    /**
-     * Returns the IPv6 address.
-     *
-     * @return the IPv6 address
-     */
-    public Ip6Address v6Address() {
-        return v6Address;
-    }
-
-    /**
-     * Returns the length of the IPv6 address prefix.
-     *
-     * @return IPv6 address prefix length
-     */
-    public short v6PrefixLength() {
-        return v6PrefixLength;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(v6Address, v6PrefixLength);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof TeIpv6) {
-            TeIpv6 other = (TeIpv6) obj;
-            return Objects.equals(v6Address, other.v6Address) &&
-                    Objects.equals(v6PrefixLength, other.v6PrefixLength);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("v6Address", v6Address)
-                .add("v6PrefixLength", v6PrefixLength)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLink.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLink.java
deleted file mode 100644
index b43f406..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLink.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import org.onosproject.tetopology.management.api.EncodingType;
-import org.onosproject.tetopology.management.api.SwitchingType;
-import org.onosproject.tetopology.management.api.TeStatus;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-
-import java.util.BitSet;
-import java.util.List;
-
-/**
- * Abstraction of a TE link.
- */
-public interface TeLink {
-    /**
-     * Indicates that the TE link belongs to an abstract topology.
-     */
-    public static final short BIT_ABSTRACT = 0;
-
-    /**
-     * Indicates that the underlay topology that supports this TE link
-     * is dynamically created as opposed to being created by provisioning.
-     */
-    public static final short BIT_DYNAMIC = 1;
-
-    /**
-     * Indicates that the underlay topology is committed to service.
-     */
-    public static final short BIT_COMMITTED = 2;
-
-    /**
-     * Indicates that the TE link connects 2 TE domains.
-     */
-    public static final short BIT_ACCESS_INTERDOMAIN = 3;
-
-    /**
-     * Indicates that the TE link is not numbered.
-     */
-    public static final short BIT_UNNUMBERED = 4;
-
-    /**
-     * Returns the TE link key.
-     *
-     * @return the TE link key
-     */
-    TeLinkTpKey teLinkKey();
-
-    /**
-     * Returns the key of the bi-directional peer TE link.
-     *
-     * @return peer TE link key
-     */
-    TeLinkTpKey peerTeLinkKey();
-
-    /**
-     * Returns the flags of this TE link.
-     *
-     * @return the flags
-     */
-    BitSet flags();
-
-    /**
-     * Returns the network layer switching type for this link.
-     *
-     * @return the network layer switching type
-     */
-    SwitchingType switchingLayer();
-
-    /**
-     * Returns the network layer encoding type for this link.
-     *
-     * @return the encoding type
-     */
-    EncodingType encodingLayer();
-
-    /**
-     * Returns the external link.
-     *
-     * @return the external link
-     */
-    ExternalLink externalLink();
-
-    /**
-     * Returns the underlay TE topology identifier for the link.
-     *
-     * @return the underlay TE topology id
-     */
-    TeTopologyKey underlayTeTopologyId();
-
-    /**
-     * Returns the primary path.
-     *
-     * @return underlay primary path
-     */
-    UnderlayPrimaryPath primaryPath();
-
-    /**
-     * Returns the backup paths.
-     *
-     * @return list of underlay backup paths
-     */
-    List<UnderlayBackupPath> backupPaths();
-
-    /**
-     * Returns the supporting tunnel protection type.
-     *
-     * @return the tunnel protection type
-     */
-    TunnelProtectionType tunnelProtectionType();
-
-    /**
-     * Returns the supporting tunnel's source tunnel termination point
-     * identifier.
-     *
-     * @return the source TTP id
-     */
-    long sourceTtpId();
-
-    /**
-     * Returns the supporting tunnel's destination tunnel termination
-     * point identifier.
-     *
-     * @return the destination TTP id
-     */
-    long destinationTtpId();
-
-    /**
-     * Returns the supporting tunnel identifier.
-     *
-     * @return the supporting tunnel id
-     */
-    TeTunnelId teTunnelId();
-
-    /**
-     * Returns the supporting TE link identifier.
-     *
-     * @return the supporting TE link id
-     */
-    TeLinkTpGlobalKey supportingTeLinkId();
-
-    /**
-     * Returns the source TE link identifier.
-     *
-     * @return the source link id
-     */
-    TeLinkTpGlobalKey sourceTeLinkId();
-
-    /**
-     * Returns the link cost.
-     *
-     * @return the cost
-     */
-    Long cost();
-
-    /**
-     * Returns the link delay.
-     *
-     * @return the delay
-     */
-    Long delay();
-
-    /**
-     * Returns the link SRLG values.
-     *
-     * @return the srlgs
-     */
-    List<Long> srlgs();
-
-    /**
-     * Returns the link administrative group.
-     *
-     * @return the adminGroup
-     */
-    Long administrativeGroup();
-
-    /**
-     * Returns the supported inter-layer locks.
-     *
-     * @return the inter-layer locks
-     */
-    List<Long> interLayerLocks();
-
-    /**
-     * Returns the maximum bandwidth at each priority level.
-     *
-     * @return a list of maximum bandwidths
-     */
-    float[] maxBandwidth();
-
-    /**
-     * Returns the available bandwidth at each priority level.
-     *
-     * @return a list of available bandwidths
-     */
-    float[] availBandwidth();
-
-    /**
-     * Returns the maximum available bandwidth for a LSP at each priority level.
-     *
-     * @return a list of maximum available bandwidths
-     */
-    float[] maxAvailLspBandwidth();
-
-    /**
-     * Returns the minimum available bandwidth for a LSP at each priority level.
-     *
-     * @return a list of minimum available bandwidths
-     */
-    float[] minAvailLspBandwidth();
-
-    /**
-     * Returns the administrative status of this TE link.
-     *
-     * @return the admin status
-     */
-    TeStatus adminStatus();
-
-    /**
-     * Returns the operational status of this TE link.
-     *
-     * @return the operational status
-     */
-    TeStatus opStatus();
-
-    /**
-     * Returns the link ODUk resources.
-     *
-     * @return the ODUk resources
-     */
-    OduResource oduResource();
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkAccessType.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkAccessType.java
deleted file mode 100644
index 5698ff9..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkAccessType.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-/**
- * Represents ENUM data of teLinkAccessType.
- */
-public enum TeLinkAccessType {
-    /**
-     * Represents pointToPoint.
-     */
-    POINT_TO_POINT(0),
-
-    /**
-     * Represents multiAccess.
-     */
-    MULTI_ACCESS(1);
-
-    private int teLinkAccessType;
-
-    TeLinkAccessType(int value) {
-        teLinkAccessType = value;
-    }
-
-    /**
-     * Returns the attribute teLinkAccessType.
-     *
-     * @return value of teLinkAccessType
-     */
-    public int teLinkAccessType() {
-        return teLinkAccessType;
-    }
-
-    /**
-     * Returns the object of teLinkAccessType from input String. Returns null
-     * when string conversion fails or converted integer value is not recognized.
-     *
-     * @param valInString input String
-     * @return Object of teLinkAccessType
-     */
-    public static TeLinkAccessType of(String valInString) {
-        try {
-            int tmpVal = Integer.parseInt(valInString);
-            return of(tmpVal);
-        } catch (NumberFormatException e) {
-        }
-        return null;
-    }
-
-    /**
-     * Returns the object of teLinkAccessTypeForTypeInt. Returns null
-     * when the integer value is not recognized.
-     *
-     * @param value value of teLinkAccessTypeForTypeInt
-     * @return Object of teLinkAccessTypeForTypeInt
-     */
-    public static TeLinkAccessType of(int value) {
-        switch (value) {
-            case 0:
-                return TeLinkAccessType.POINT_TO_POINT;
-            case 1:
-                return TeLinkAccessType.MULTI_ACCESS;
-            default :
-                return null;
-        }
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkEventSubject.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkEventSubject.java
deleted file mode 100644
index 4a3a961..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkEventSubject.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.onosproject.tetopology.management.api.TeTopologyEventSubject;
-
-/**
- * Representation of a TE link event.
- */
-public class TeLinkEventSubject implements TeTopologyEventSubject {
-    private final TeLinkTpGlobalKey key;
-    private final TeLink teLink;
-
-    /**
-     * Creates an instance of TE link event.
-     *
-     * @param key    the TE link key
-     * @param teLink the TE link
-     */
-    public TeLinkEventSubject(TeLinkTpGlobalKey key, TeLink teLink) {
-        this.key = key;
-        this.teLink = teLink;
-    }
-
-    /**
-     * Returns the TE link global key.
-     *
-     * @return the key
-     */
-    public TeLinkTpGlobalKey key() {
-        return key;
-    }
-
-    /**
-     * Returns the TE link.
-     *
-     * @return the TE link
-     */
-    public TeLink teLink() {
-        return teLink;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(key, teLink);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof TeLinkEventSubject) {
-            TeLinkEventSubject that = (TeLinkEventSubject) object;
-            return Objects.equal(key, that.key) &&
-                    Objects.equal(teLink, that.teLink);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("key", key)
-                .add("teLink", teLink)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkId.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkId.java
deleted file mode 100644
index 0be9032..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkId.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import org.onosproject.tetopology.management.api.LongValue;
-
-/**
- * Implementation of a TE link identifier as an element type.
- */
-public class TeLinkId extends LongValue implements ElementType {
-
-    /**
-     * Creates a TE link identifier based on a given long integer.
-     *
-     * @param linkId TE link id
-     */
-    public TeLinkId(long linkId) {
-        super(linkId);
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkTpGlobalKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkTpGlobalKey.java
deleted file mode 100644
index 63977db..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkTpGlobalKey.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-
-import com.google.common.base.MoreObjects.ToStringHelper;
-import com.google.common.base.Objects;
-
-/**
- * Representation of a global TE link TP (i.e., TE termination point) key.
- */
-public class TeLinkTpGlobalKey extends TeNodeKey {
-    private final long teLinkTpId;
-
-    /**
-     * Creates a global TE link TP key.
-     *
-     * @param providerId provider identifier
-     * @param clientId   client identifier
-     * @param topologyId topology identifier
-     * @param teNodeId   TE node identifier
-     * @param teLinkTpId TE link termination point identifier
-     */
-    public TeLinkTpGlobalKey(long providerId, long clientId,
-                             long topologyId, long teNodeId,
-                             long teLinkTpId) {
-        super(providerId, clientId, topologyId, teNodeId);
-        this.teLinkTpId = teLinkTpId;
-    }
-
-    /**
-     * Creates a global TE link TP key based on a given local TE node key.
-     *
-     * @param teNodeKey  the local TE node key
-     * @param teLinkTpId TE link termination point identifier
-     */
-    public TeLinkTpGlobalKey(TeNodeKey teNodeKey, long teLinkTpId) {
-        super(teNodeKey.providerId(), teNodeKey.clientId(),
-              teNodeKey.topologyId(), teNodeKey.teNodeId());
-        this.teLinkTpId = teLinkTpId;
-    }
-
-    /**
-     * Creates a global TE link TP key based on a given TE topology key
-     * and a local TE link TP key.
-     *
-     * @param teTopologyKey the key of TE Topology to which this link belongs
-     * @param teLinkTpKey   the local TE link key
-     */
-    public TeLinkTpGlobalKey(TeTopologyKey teTopologyKey,
-                             TeLinkTpKey teLinkTpKey) {
-        super(teTopologyKey.providerId(), teTopologyKey.clientId(),
-              teTopologyKey.topologyId(), teLinkTpKey.teNodeId());
-        this.teLinkTpId = teLinkTpKey.teLinkTpId();
-    }
-
-    /**
-     * Returns the TE link TP identifier.
-     *
-     * @return the TE link id
-     */
-    public long teLinkTpId() {
-        return teLinkTpId;
-    }
-
-    /**
-     * Returns the key of the TE node from which this link TP originates.
-     *
-     * @return the TE node key
-     */
-    public TeNodeKey teNodeKey() {
-        return new TeNodeKey(providerId(), clientId(), topologyId(), teNodeId());
-    }
-
-    /**
-     * Returns the key of the TE Topology to which this link TP belongs.
-     *
-     * @return the TE topology key
-     */
-    @Override
-    public TeTopologyKey teTopologyKey() {
-        return new TeTopologyKey(providerId(), clientId(), topologyId());
-    }
-
-    /**
-     * Returns the local TE link TP key.
-     *
-     * @return the TE link TP key
-     */
-    public TeLinkTpKey teLinkTpKey() {
-        return new TeLinkTpKey(teNodeId(), teLinkTpId);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(super.hashCode(), teLinkTpId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof TeLinkTpGlobalKey) {
-            if (!super.equals(object)) {
-                return false;
-            }
-            TeLinkTpGlobalKey that = (TeLinkTpGlobalKey) object;
-            return Objects.equal(teLinkTpId, that.teLinkTpId);
-        }
-        return false;
-    }
-
-    /**
-     * Returns a helper for toString() with additional TE link TP identifier.
-     *
-     * @return a toString helper
-     */
-    protected ToStringHelper toTeLinkTpKeyStringHelper() {
-        return toTeNodeKeyStringHelper().add("teLinkTpId", teLinkTpId);
-    }
-
-    @Override
-    public String toString() {
-        return toTeLinkTpKeyStringHelper().toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkTpKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkTpKey.java
deleted file mode 100644
index 2f88572..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkTpKey.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-
-/**
- * Representation of the TE link TP (i.e., TE termination point) Key in
- * the scope of a TE node.
- */
-public final class TeLinkTpKey {
-    private final long teNodeId;
-    private final long teLinkTpId;
-
-    /**
-     * Creates a TE link TP key.
-     *
-     * @param teNodeId   TE Node identifier
-     * @param teLinkTpId TE Link termination point identifier
-     */
-    public TeLinkTpKey(long teNodeId, long teLinkTpId) {
-        this.teNodeId = teNodeId;
-        this.teLinkTpId = teLinkTpId;
-    }
-
-    /**
-     * Returns the TE Node identifier.
-     *
-     * @return the TE node id
-     */
-    public long teNodeId() {
-        return teNodeId;
-    }
-
-    /**
-     * Returns the TE link termination point identifier.
-     *
-     * @return the TE link TP id
-     */
-    public long teLinkTpId() {
-        return teLinkTpId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(teNodeId, teLinkTpId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof TeLinkTpKey) {
-            TeLinkTpKey that = (TeLinkTpKey) object;
-            return Objects.equal(teNodeId, that.teNodeId) &&
-                    Objects.equal(teLinkTpId, that.teLinkTpId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("teNodeId", teNodeId)
-                .add("teLinkTpId", teLinkTpId)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TePathAttributes.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TePathAttributes.java
deleted file mode 100644
index b74694a..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TePathAttributes.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-
-import java.util.List;
-
-/**
- * Represents the common attributes of a TE path or segment.
- */
-public class TePathAttributes {
-    private final Long cost;
-    private final Long delay;
-    private final List<Long> srlgs;
-
-    /**
-     * Creates an instance of TE path attributes.
-     *
-     * @param cost  the path's cost
-     * @param delay the path's delay
-     * @param srlgs the path's shared risk link groups (SRLGs)
-     */
-    public TePathAttributes(Long cost, Long delay, List<Long> srlgs) {
-        this.cost = cost;
-        this.delay = delay;
-        this.srlgs = srlgs != null ? Lists.newArrayList(srlgs) : null;
-    }
-
-    /**
-     * Creates an instance of TE path attributes based on a given TE link.
-     *
-     * @param link the TE link
-     */
-    public TePathAttributes(TeLink link) {
-        this.cost = link.cost();
-        this.delay = link.delay();
-        this.srlgs = link.srlgs() != null ?
-                Lists.newArrayList(link.srlgs()) : null;
-    }
-
-    /**
-     * Returns the path cost.
-     *
-     * @return the cost
-     */
-    public Long cost() {
-        return cost;
-    }
-
-    /**
-     * Returns the path delay.
-     *
-     * @return the delay
-     */
-    public Long delay() {
-        return delay;
-    }
-
-    /**
-     * Returns the path SRLG values.
-     *
-     * @return the srlgs
-     */
-    public List<Long> srlgs() {
-        if (srlgs == null) {
-            return null;
-        }
-        return ImmutableList.copyOf(srlgs);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(cost, delay, srlgs);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof TePathAttributes) {
-            TePathAttributes that = (TePathAttributes) object;
-            return Objects.equal(cost, that.cost) &&
-                    Objects.equal(delay, that.delay) &&
-                    Objects.equal(srlgs, that.srlgs);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("cost", cost)
-                .add("delay", delay)
-                .add("srlgs", srlgs)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeTunnelId.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeTunnelId.java
deleted file mode 100644
index 0744608..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeTunnelId.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-
-/**
- * Representation of a TE tunnel identifier.
- */
-public class TeTunnelId {
-    private final long srcTeNodeId;
-    private final long dstTeNodeId;
-    private final long tunnelId;
-
-    /**
-     * Create a TE tunnel identifier.
-     *
-     * @param srcTeNodeId source TE node id
-     * @param dstTeNodeId destination TE node id
-     * @param tunnelId    tunnel id
-     */
-    public TeTunnelId(long srcTeNodeId, long dstTeNodeId, long tunnelId) {
-        this.srcTeNodeId = srcTeNodeId;
-        this.dstTeNodeId = dstTeNodeId;
-        this.tunnelId = tunnelId;
-    }
-
-    /**
-     * Returns the source TE node identifier of the tunnel.
-     *
-     * @return the source TE node id
-     */
-    public long sourceTeNodeId() {
-        return srcTeNodeId;
-    }
-
-    /**
-     * Returns the destination TE node identifier of the tunnel.
-     *
-     * @return the destination TE node id
-     */
-    public long destinationTeNodeId() {
-        return dstTeNodeId;
-    }
-
-    /**
-     * Returns the tunnel identifier.
-     *
-     * @return the tunnel id
-     */
-    public long tunnelId() {
-        return tunnelId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(srcTeNodeId, dstTeNodeId, tunnelId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof TeTunnelId) {
-            TeTunnelId that = (TeTunnelId) object;
-            return (srcTeNodeId == that.srcTeNodeId) &&
-                    (dstTeNodeId == that.dstTeNodeId) &&
-                    (tunnelId == that.tunnelId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("srcTeNodeId", srcTeNodeId)
-                .add("dstTeNodeId", dstTeNodeId)
-                .add("tunnelId", tunnelId)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TunnelProtectionType.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TunnelProtectionType.java
deleted file mode 100644
index 34174a0..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TunnelProtectionType.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-/**
- * Represents the tunnel protection type.
- */
-public enum TunnelProtectionType {
-
-    /**
-     * Represents unprotected.
-     */
-    UNPROTECTED(0),
-
-    /**
-     * Represents extra traffic.
-     */
-    EXTRA_TRAFFIC(1),
-
-    /**
-     * Represents shared.
-     */
-    SHARED(2),
-
-    /**
-     * Represents one-for-one.
-     */
-    ONE_FOR_ONE(3),
-
-    /**
-     * Represents one-plus-one.
-     */
-    ONE_PLUS_ONE(4),
-
-    /**
-     * Represents enhanced.
-     */
-    ENHANCED(5);
-
-    private int value;
-
-    TunnelProtectionType(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Returns the value of the tunnel protection type.
-     *
-     * @return value of tunnel protection type
-     */
-    public int value() {
-        return value;
-    }
-
-    /**
-     * Returns the tunnel protection type constant corresponding to the given
-     * string. Returns null when string conversion fails or converted integer
-     * value is not recognized.
-     *
-     * @param s input string
-     * @return corresponding protection type constant
-     */
-    public static TunnelProtectionType of(String s) {
-        try {
-            int tmpVal = Integer.parseInt(s);
-            return of(tmpVal);
-        } catch (NumberFormatException ignored) {
-        }
-        return null;
-    }
-
-    /**
-     * Returns the tunnel protection type constant corresponding to the
-     * given integer. Returns null when the integer value is not recognized.
-     *
-     * @param value integer value
-     * @return corresponding protection type constant
-     */
-    public static TunnelProtectionType of(int value) {
-        switch (value) {
-            case 0:
-                return UNPROTECTED;
-            case 1:
-                return EXTRA_TRAFFIC;
-            case 2:
-                return SHARED;
-            case 3:
-                return ONE_FOR_ONE;
-            case 4:
-                return ONE_PLUS_ONE;
-            case 5:
-                return ENHANCED;
-            default:
-                return null;
-        }
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayAbstractPath.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayAbstractPath.java
deleted file mode 100644
index 43bfd75..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayAbstractPath.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.collect.Lists;
-
-/**
- * Represents the common definition of an underlay path that supports a TE link.
- */
-public class UnderlayAbstractPath {
-    private final List<PathElement> pathElements;
-    private final Boolean loose;
-
-    /**
-     * Creates a underlay abstract path.
-     *
-     * @param pathElements the list of elements along the path
-     * @param loose        loose if true, or otherwise strict
-     */
-    public UnderlayAbstractPath(List<PathElement> pathElements, Boolean loose) {
-        this.pathElements = Lists.newArrayList(pathElements);
-        this.loose = loose;
-    }
-
-    /**
-     * Returns the loose flag, indicating whether the path is loose or strict.
-     *
-     * @return true if the path is loose, false if it is strict.
-     */
-    public Boolean loose() {
-        return loose;
-    }
-
-    /**
-     * Returns the list of path elements.
-     *
-     * @return list of path elements
-     */
-    public List<PathElement> pathElements() {
-        return Collections.unmodifiableList(pathElements);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(pathElements, loose);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof UnderlayAbstractPath) {
-            UnderlayAbstractPath other = (UnderlayAbstractPath) obj;
-            return Objects.equals(pathElements, other.pathElements) &&
-                    Objects.equals(loose, other.loose);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("pathElements", pathElements)
-                .add("loose", loose)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayBackupPath.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayBackupPath.java
deleted file mode 100644
index 5b1a33f..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayBackupPath.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import java.util.List;
-import java.util.Objects;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Represents a list of backup service paths on the underlay topology that
- * protect the underlay primary path.
- */
-public class UnderlayBackupPath extends UnderlayAbstractPath {
-    private final long index;
-
-    /**
-     * Creates a underlay backup path.
-     *
-     * @param index        the path index
-     * @param pathElements list of backup service paths
-     * @param loose        loose if true; restrict otherwise
-     */
-    public UnderlayBackupPath(long index, List<PathElement> pathElements,
-                              Boolean loose) {
-        super(pathElements, loose);
-        this.index = index;
-    }
-
-    /**
-     * Returns the path index.
-     *
-     * @return path index
-     */
-    public long index() {
-        return index;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(super.hashCode(), index);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof UnderlayBackupPath) {
-            if (!super.equals(obj)) {
-                return false;
-            }
-            UnderlayBackupPath that = (UnderlayBackupPath) obj;
-            return this.index == that.index;
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("index", index)
-                .add("pathElements", pathElements())
-                .add("loose", loose())
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayPath.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayPath.java
deleted file mode 100644
index e244abb..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayPath.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-
-import java.util.List;
-
-/**
- * Represents the TE link underlay path and tunnel data.
- */
-public class UnderlayPath {
-    private final UnderlayPrimaryPath primaryPath;
-    private final List<UnderlayBackupPath> backupPaths;
-    private final TunnelProtectionType tunnelProtectionType;
-    private final long srcTtpId;
-    private final long dstTtpId;
-    private final TeTunnelId teTunnelId;
-
-    /**
-     * Creates a underlay path.
-     *
-     * @param primaryPath          the underlay primary path
-     * @param backupPaths          the underlay backup paths
-     * @param tunnelProtectionType the supporting tunnel protection type to set
-     * @param srcTtpId             the source tunnel termination point id
-     * @param dstTtpId             the destination tunnel termination point id
-     * @param teTunnelId           the supporting TE tunnel id
-     */
-    public UnderlayPath(UnderlayPrimaryPath primaryPath,
-                        List<UnderlayBackupPath> backupPaths,
-                        TunnelProtectionType tunnelProtectionType,
-                        long srcTtpId,
-                        long dstTtpId,
-                        TeTunnelId teTunnelId) {
-        this.primaryPath = primaryPath;
-        this.backupPaths = backupPaths != null ?
-                Lists.newArrayList(backupPaths) : null;
-        this.tunnelProtectionType = tunnelProtectionType;
-        this.srcTtpId = srcTtpId;
-        this.dstTtpId = dstTtpId;
-        this.teTunnelId = teTunnelId;
-    }
-
-    /**
-     * Creates a underlay path based on a TE link.
-     *
-     * @param link the TE link
-     */
-    public UnderlayPath(TeLink link) {
-        this.primaryPath = link.primaryPath();
-        this.backupPaths = link.backupPaths() != null ?
-                Lists.newArrayList(link.backupPaths()) : null;
-        this.tunnelProtectionType = link.tunnelProtectionType();
-        this.srcTtpId = link.sourceTtpId();
-        this.dstTtpId = link.destinationTtpId();
-        this.teTunnelId = link.teTunnelId();
-    }
-
-    /**
-     * Returns the primary path.
-     *
-     * @return underlay primary path
-     */
-    public UnderlayPrimaryPath primaryPath() {
-        return primaryPath;
-    }
-
-    /**
-     * Returns the backup paths.
-     *
-     * @return list of underlay backup paths
-     */
-    public List<UnderlayBackupPath> backupPaths() {
-        if (backupPaths == null) {
-            return null;
-        }
-        return ImmutableList.copyOf(backupPaths);
-    }
-
-    /**
-     * Returns the supporting tunnel protection type.
-     *
-     * @return the supporting tunnel protection type
-     */
-    public TunnelProtectionType tunnelProtectionType() {
-        return tunnelProtectionType;
-    }
-
-    /**
-     * Returns the supporting TE tunnel's source tunnel termination point
-     * identifier.
-     *
-     * @return the supporting source TTP id
-     */
-    public long srcTtpId() {
-        return srcTtpId;
-    }
-
-    /**
-     * Returns the supporting TE tunnel's destination tunnel termination
-     * point identifier.
-     *
-     * @return the destination TTP id
-     */
-    public long dstTtpId() {
-        return dstTtpId;
-    }
-
-    /**
-     * Returns the supporting TE tunnel identifier.
-     *
-     * @return the supporting tunnel id
-     */
-    public TeTunnelId teTunnelId() {
-        return teTunnelId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(primaryPath, backupPaths, tunnelProtectionType,
-                                srcTtpId, dstTtpId, teTunnelId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof UnderlayPath) {
-            UnderlayPath that = (UnderlayPath) object;
-            return Objects.equal(primaryPath, that.primaryPath) &&
-                    Objects.equal(backupPaths, that.backupPaths) &&
-                    Objects.equal(tunnelProtectionType, that.tunnelProtectionType) &&
-                    Objects.equal(srcTtpId, that.srcTtpId) &&
-                    Objects.equal(dstTtpId, that.dstTtpId) &&
-                    Objects.equal(teTunnelId, that.teTunnelId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("primaryPath", primaryPath)
-                .add("backupPaths", backupPaths)
-                .add("tunnelProtectionType", tunnelProtectionType)
-                .add("srcTtpId", srcTtpId)
-                .add("dstTtpId", dstTtpId)
-                .add("teTunnelId", teTunnelId)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayPrimaryPath.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayPrimaryPath.java
deleted file mode 100644
index d65dccd..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayPrimaryPath.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import java.util.List;
-
-/**
- * Represents the underlay primary path that supports a TE link.
- */
-public class UnderlayPrimaryPath extends UnderlayAbstractPath {
-    // Underlay primary path currently has the same data structure defined in
-    // the underlay abstract path. It may be extended per standard definitions.
-
-    /**
-     * Creates an instance of UnderlayPrimaryPath.
-     *
-     * @param pathElements the list of elements along the path
-     * @param loose        loose if true, or otherwise strict
-     */
-    public UnderlayPrimaryPath(List<PathElement> pathElements, Boolean loose) {
-        super(pathElements, loose);
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnnumberedLink.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnnumberedLink.java
deleted file mode 100644
index d4f0638..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnnumberedLink.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.link;
-
-import com.google.common.base.MoreObjects;
-import org.onlab.packet.IpAddress;
-
-import java.util.Objects;
-
-/**
- * Implementation of unnumbered link as an element type.
- */
-public class UnnumberedLink implements ElementType {
-    private final IpAddress routerId;
-    private final long interfaceId;
-
-    /**
-     * Creates a unnumbered link.
-     *
-     * @param routerId    the router id to set
-     * @param interfaceId the interface id to set
-     */
-    public UnnumberedLink(IpAddress routerId, long interfaceId) {
-        this.routerId = routerId;
-        this.interfaceId = interfaceId;
-    }
-
-    /**
-     * Returns the router identifier.
-     *
-     * @return router id
-     */
-    public IpAddress routerId() {
-        return routerId;
-    }
-
-    /**
-     * Returns the interface identifier.
-     *
-     * @return interface id
-     */
-    public long interfaceId() {
-        return interfaceId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(routerId, interfaceId);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof UnnumberedLink) {
-            UnnumberedLink other = (UnnumberedLink) obj;
-            return
-                    Objects.equals(routerId, other.routerId) &&
-                            Objects.equals(interfaceId, other.interfaceId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("routerId", routerId)
-                .add("interfaceId", interfaceId)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/package-info.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/package-info.java
deleted file mode 100644
index f12499d..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.
- */
-/**
- * TE link API.
- */
-package org.onosproject.tetopology.management.api.link;
\ No newline at end of file
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/AbstractConnectivity.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/AbstractConnectivity.java
deleted file mode 100644
index 712c7bd..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/AbstractConnectivity.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import java.util.BitSet;
-import java.util.Collections;
-import java.util.List;
-
-import com.google.common.collect.Lists;
-import org.onosproject.tetopology.management.api.link.ElementType;
-import org.onosproject.tetopology.management.api.link.TePathAttributes;
-import org.onosproject.tetopology.management.api.link.UnderlayAbstractPath;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-
-/**
- * The abstraction of a TE node internal connectivity to link
- * termination points.
- */
-public class AbstractConnectivity {
-    // list of elements that can be constrained/connected to
-    private final List<ElementType> constrainingElements;
-    private final BitSet flags;
-    private final TePathAttributes teAttributes;
-    private final UnderlayAbstractPath underlayPath;
-
-    /**
-     * Creates an abstract connectivity instance.
-     *
-     * @param constrainingElements list of elements that can be constrained
-     *                             or connected to
-     * @param flags                indicate whether this connectivity is usable
-     * @param teAttributes         the connectivity path TE attributes
-     * @param underlayPath         the underlay path
-     */
-    public AbstractConnectivity(List<ElementType> constrainingElements,
-                                BitSet flags,
-                                TePathAttributes teAttributes,
-                                UnderlayAbstractPath underlayPath) {
-        this.constrainingElements = Lists.newArrayList(constrainingElements);
-        this.flags = flags;
-        this.teAttributes = teAttributes;
-        this.underlayPath = underlayPath;
-    }
-
-    /**
-     * Returns the "constraining elements" that can be constrained
-     * or connected to "from" element.
-     *
-     * @return the "constraining elements" of the connectivity
-     */
-    public List<ElementType> constrainingElements() {
-        return Collections.unmodifiableList(constrainingElements);
-    }
-
-    /**
-     * Returns the flags indicating if the connectivity is usable.
-     *
-     * @return flags of the connectivity
-     */
-    public BitSet flags() {
-        return flags;
-    }
-
-    /**
-     * Returns the TE attributes of the connectivity.
-     *
-     * @return the TE attributes
-     */
-    public TePathAttributes teAttributes() {
-        return teAttributes;
-    }
-
-    /**
-     * Returns the underlay path.
-     *
-     * @return the underlay path
-     */
-    public UnderlayAbstractPath underlayPath() {
-        return underlayPath;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(constrainingElements, flags,
-                                teAttributes, underlayPath);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof AbstractConnectivity) {
-            AbstractConnectivity that = (AbstractConnectivity) object;
-            return Objects.equal(constrainingElements, that.constrainingElements) &&
-                    Objects.equal(flags, that.flags) &&
-                    Objects.equal(teAttributes, that.teAttributes) &&
-                    Objects.equal(underlayPath, that.underlayPath);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("constrainingElements", constrainingElements)
-                .add("flags", flags)
-                .add("teAttributes", teAttributes)
-                .add("underlayPath", underlayPath)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/CommonNodeData.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/CommonNodeData.java
deleted file mode 100644
index 35daf8b..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/CommonNodeData.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import java.util.BitSet;
-
-import org.onosproject.tetopology.management.api.TeStatus;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-
-/**
- * Representation of common node attributes.
- */
-public class CommonNodeData {
-    private final String name;
-    private final TeStatus adminStatus;
-    private final TeStatus opStatus;
-    private final BitSet flags;
-
-    /**
-     * Creates a common node data instance.
-     *
-     * @param name        the TE node name
-     * @param adminStatus the admin status
-     * @param opStatus    the operational status
-     * @param flags       the node flags
-     */
-    public CommonNodeData(String name, TeStatus adminStatus,
-                          TeStatus opStatus, BitSet flags) {
-        this.name = name;
-        this.adminStatus = adminStatus;
-        this.opStatus = opStatus;
-        this.flags = flags;
-    }
-
-    /**
-     * Creates a common node data instance based on a given TE node.
-     *
-     * @param node the given TE node
-     */
-    public CommonNodeData(TeNode node) {
-        this.name = node.name();
-        this.adminStatus = node.adminStatus();
-        this.opStatus = node.opStatus();
-        this.flags = node.flags();
-    }
-
-    /**
-     * Returns the TE node name.
-     *
-     * @return the name
-     */
-    public String name() {
-        return name;
-    }
-
-    /**
-     * Returns the administrative status.
-     *
-     * @return the admin status
-     */
-    public TeStatus adminStatus() {
-        return adminStatus;
-    }
-
-    /**
-     * Returns the operational status.
-     *
-     * @return the operational status
-     */
-    public TeStatus opStatus() {
-        return opStatus;
-    }
-
-    /**
-     * Returns the flags in the common node data.
-     *
-     * @return the flags
-     */
-    public BitSet flags() {
-        return flags;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(name, adminStatus, opStatus, flags);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof CommonNodeData) {
-            CommonNodeData that = (CommonNodeData) object;
-            return Objects.equal(name, that.name) &&
-                    Objects.equal(adminStatus, that.adminStatus) &&
-                    Objects.equal(opStatus, that.opStatus) &&
-                    Objects.equal(flags, that.flags);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("name", name)
-                .add("adminStatus", adminStatus)
-                .add("opStatus", opStatus)
-                .add("flags", flags)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/ConnectivityMatrix.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/ConnectivityMatrix.java
deleted file mode 100644
index b30d110..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/ConnectivityMatrix.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import org.onosproject.tetopology.management.api.link.ElementType;
-import org.onosproject.tetopology.management.api.link.TePathAttributes;
-import org.onosproject.tetopology.management.api.link.UnderlayAbstractPath;
-
-import java.util.BitSet;
-import java.util.List;
-
-/**
- * Represents node's switching limitations.
- */
-public class ConnectivityMatrix extends AbstractConnectivity {
-    /**
-     * Indicates that switching is disallowed.
-     */
-    public static final short BIT_DISALLOWED = 0;
-
-    /**
-     * Indicates that an alternative switching connection path
-     * is available.
-     */
-    public static final short BIT_ALTERNATIVE_PATH_AVAILABLE = 1;
-
-    /**
-     * Indicates that switching in this node is disabled.
-     */
-    public static final short BIT_DISABLED = 2;
-
-    private final long key;
-    private final ElementType from;
-    // list of elements that can be merged with the "from" element
-    private final List<ElementType> mergingList;
-
-    /**
-     * Creates a connectivity matrix instance.
-     *
-     * @param key                  the connectivity matrix key
-     * @param from                 the "from" element (e.g. TE link id or
-     *                             label) in the matrix
-     * @param mergingList          the list of elements that can be merged
-     *                             with the "from" element
-     * @param constrainingElements the list of elements that can be constrained
-     *                             or connected to the "from" element
-     * @param flags                the indicator whether this connectivity
-     *                             matrix is usable
-     * @param teAttributes         the connectivity TE attributes of this matrix
-     * @param underlayPath         the underlay path of the matrix
-     */
-    public ConnectivityMatrix(long key,
-                              ElementType from,
-                              List<ElementType> mergingList,
-                              List<ElementType> constrainingElements,
-                              BitSet flags,
-                              TePathAttributes teAttributes,
-                              UnderlayAbstractPath underlayPath) {
-        super(constrainingElements, flags, teAttributes, underlayPath);
-        this.key = key;
-        this.from = from;
-        this.mergingList = mergingList != null ?
-                Lists.newArrayList(mergingList) : null;
-    }
-
-    /**
-     * Returns the key.
-     *
-     * @return connectivity matrix key
-     */
-    public long key() {
-        return key;
-    }
-
-    /**
-     * Returns the "from" element of a connectivity matrix.
-     *
-     * @return the "from" of the connectivity matrix
-     */
-    public ElementType from() {
-        return from;
-    }
-
-    /**
-     * Returns the "merging list" can be merged with the "from" element.
-     *
-     * @return the "merging list" of the connectivity matrix
-     */
-    public List<ElementType> mergingList() {
-        if (mergingList == null) {
-            return null;
-        }
-        return ImmutableList.copyOf(mergingList);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(key, from, mergingList, super.hashCode());
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof ConnectivityMatrix) {
-            if (!super.equals(object)) {
-                return false;
-            }
-            ConnectivityMatrix that = (ConnectivityMatrix) object;
-            return Objects.equal(this.key, that.key) &&
-                    Objects.equal(this.from, that.from) &&
-                    Objects.equal(this.mergingList, that.mergingList);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("key", key)
-                .add("from", from)
-                .add("mergingList", mergingList)
-                .add("constrainingElements", constrainingElements())
-                .add("flags", flags())
-                .add("teAttributes", teAttributes())
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/ConnectivityMatrixKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/ConnectivityMatrixKey.java
deleted file mode 100644
index 598954e..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/ConnectivityMatrixKey.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import com.google.common.base.MoreObjects.ToStringHelper;
-import com.google.common.base.Objects;
-
-/**
- * Representation of a TE connectivity matrix entry key.
- */
-public class ConnectivityMatrixKey extends TeNodeKey {
-    private final long entryId;
-
-    /**
-     * Creates a connectivity matrix key.
-     *
-     * @param providerId provider identifier
-     * @param clientId   client identifier
-     * @param topologyId topology identifier
-     * @param teNodeId   TE node identifier
-     * @param entryId    connectivity matrix entry id
-     */
-    public ConnectivityMatrixKey(long providerId, long clientId,
-                                 long topologyId, long teNodeId,
-                                 long entryId) {
-        super(providerId, clientId, topologyId, teNodeId);
-        this.entryId = entryId;
-    }
-
-    /**
-     * Creates a connectivity matrix key base on a given TE node key.
-     *
-     * @param teNodeKey TE node key
-     * @param entryId   connectivity matrix entry id
-     */
-    public ConnectivityMatrixKey(TeNodeKey teNodeKey, long entryId) {
-        super(teNodeKey.providerId(), teNodeKey.clientId(),
-              teNodeKey.topologyId(), teNodeKey.teNodeId());
-        this.entryId = entryId;
-    }
-
-    /**
-     * Returns the TE node key.
-     *
-     * @return the TE node key
-     */
-    public TeNodeKey teNodekey() {
-        return new TeNodeKey(providerId(), clientId(), topologyId(), teNodeId());
-    }
-
-    /**
-     * Returns the connectivity matrix entry identifier.
-     *
-     * @return the connectivity matrix entry id
-     */
-    public long entryId() {
-        return entryId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(super.hashCode(), entryId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof ConnectivityMatrixKey) {
-            if (!super.equals(object)) {
-                return false;
-            }
-            ConnectivityMatrixKey that = (ConnectivityMatrixKey) object;
-            return Objects.equal(this.entryId, that.entryId);
-        }
-        return false;
-    }
-
-    /**
-     * Returns ToStringHelper with additional entry identifier.
-     *
-     * @return toStringHelper
-     */
-    protected ToStringHelper toConnMatrixKeyStringHelper() {
-        return toTeNodeKeyStringHelper().add("entryId", entryId);
-    }
-
-    @Override
-    public String toString() {
-        return toConnMatrixKeyStringHelper().toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultNetworkNode.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultNetworkNode.java
deleted file mode 100644
index 6062617..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultNetworkNode.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import org.onosproject.tetopology.management.api.KeyId;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * Default network node implementation.
- */
-public class DefaultNetworkNode implements NetworkNode {
-    private final KeyId id;
-    private final List<NetworkNodeKey> supportingNodeIds;
-    private final TeNode teNode;
-    private final Map<KeyId, TerminationPoint> tps;
-
-
-    /**
-     * Creates a network node instance.
-     *
-     * @param id      network node identifier
-     * @param nodeIds support node identifiers
-     * @param teNode  te parameter of the node
-     * @param tps     the tps to set
-     */
-    public DefaultNetworkNode(KeyId id,
-                              List<NetworkNodeKey> nodeIds,
-                              TeNode teNode,
-                              Map<KeyId, TerminationPoint> tps) {
-        this.id = id;
-        this.supportingNodeIds = nodeIds != null ?
-                Lists.newArrayList(nodeIds) : null;
-        this.teNode = teNode;
-        this.tps = tps != null ? Maps.newHashMap(tps) : null;
-    }
-
-    /**
-     * Returns the node identifier.
-     *
-     * @return node identifier
-     */
-    @Override
-    public KeyId nodeId() {
-        return id;
-    }
-
-    /**
-     * Returns the list of supporting node identifiers for this node.
-     *
-     * @return list of supporting node identifiers
-     */
-    @Override
-    public List<NetworkNodeKey> supportingNodeIds() {
-        if (supportingNodeIds == null) {
-            return null;
-        }
-        return ImmutableList.copyOf(supportingNodeIds);
-    }
-
-    /**
-     * Returns the node TE attributes.
-     *
-     * @return TE attributes of this node
-     */
-    @Override
-    public TeNode teNode() {
-        return teNode;
-    }
-
-    /**
-     * Returns the list of termination points associated with this node.
-     *
-     * @return a list of termination points
-     */
-    @Override
-    public Map<KeyId, TerminationPoint> terminationPoints() {
-        if (tps == null) {
-            return null;
-        }
-        return ImmutableMap.copyOf(tps);
-    }
-
-    /**
-     * Returns the termination point.
-     *
-     * @return the termination point
-     */
-    @Override
-    public TerminationPoint terminationPoint(KeyId tpId) {
-        return tps.get(tpId);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(id, supportingNodeIds, teNode, tps);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof DefaultNetworkNode) {
-            DefaultNetworkNode that = (DefaultNetworkNode) object;
-            return Objects.equal(id, that.id) &&
-                    Objects.equal(supportingNodeIds, that.supportingNodeIds) &&
-                    Objects.equal(teNode, that.teNode) &&
-                    Objects.equal(tps, that.tps);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("id", id)
-                .add("supportingNodeIds", supportingNodeIds)
-                .add("teNode", teNode)
-                .add("tps", tps)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTeNode.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTeNode.java
deleted file mode 100644
index 71cd9c9..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTeNode.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import org.onosproject.tetopology.management.api.TeStatus;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-
-import java.util.BitSet;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-/**
- * The default implementation of TE Node.
- */
-public class DefaultTeNode implements TeNode {
-    private final long teNodeId;
-    private final TeTopologyKey underlayTopologyId;
-    private final TeNodeKey supportTeNodeId;
-    private final TeNodeKey sourceTeNodeId;
-    private final CommonNodeData teData;
-    private final Map<Long, ConnectivityMatrix> connMatrices;
-    private final List<Long> teLinkIds;
-    private final Map<Long, TunnelTerminationPoint> ttps;
-    private final List<Long> teTpIds;
-
-    /**
-     * Creates a TE node instance.
-     *
-     * @param teNodeId             TE node identifier
-     * @param underlayTopologyIdId the node underlay TE topology id
-     * @param supportTeNodeId      the supporting TE node id
-     * @param sourceTeNodeId       the source TE node id
-     * @param teData               the node common te data
-     * @param connMatrices         the connectivity matrix table
-     * @param teLinkIds            the list of TE link ids originating from the node
-     * @param ttps                 the list of tunnel termination points
-     * @param teTpIds              the currently known termination point ids
-     */
-    public DefaultTeNode(long teNodeId,
-                         TeTopologyKey underlayTopologyIdId,
-                         TeNodeKey supportTeNodeId,
-                         TeNodeKey sourceTeNodeId,
-                         CommonNodeData teData,
-                         Map<Long, ConnectivityMatrix> connMatrices,
-                         List<Long> teLinkIds,
-                         Map<Long, TunnelTerminationPoint> ttps,
-                         List<Long> teTpIds) {
-        this.teNodeId = teNodeId;
-        this.underlayTopologyId = underlayTopologyIdId;
-        this.supportTeNodeId = supportTeNodeId;
-        this.sourceTeNodeId = sourceTeNodeId;
-        this.teData = teData;
-        this.connMatrices = connMatrices != null ?
-                Maps.newHashMap(connMatrices) : null;
-        this.teLinkIds = teLinkIds != null ?
-                Lists.newArrayList(teLinkIds) : null;
-        this.ttps = ttps != null ? Maps.newHashMap(ttps) : null;
-        this.teTpIds = teTpIds != null ?
-                Lists.newArrayList(teTpIds) : null;
-    }
-
-    @Override
-    public long teNodeId() {
-        return teNodeId;
-    }
-
-    @Override
-    public String name() {
-        if (teData == null) {
-            return null;
-        }
-        return teData.name();
-    }
-
-    @Override
-    public BitSet flags() {
-        if (teData == null) {
-            return null;
-        }
-        return teData.flags();
-    }
-
-    @Override
-    public TeTopologyKey underlayTeTopologyId() {
-        return underlayTopologyId;
-    }
-
-    @Override
-    public TeNodeKey supportingTeNodeId() {
-        return supportTeNodeId;
-    }
-
-    @Override
-    public TeNodeKey sourceTeNodeId() {
-        return sourceTeNodeId;
-    }
-
-    @Override
-    public Map<Long, ConnectivityMatrix> connectivityMatrices() {
-        if (connMatrices == null) {
-            return null;
-        }
-        return ImmutableMap.copyOf(connMatrices);
-    }
-
-    @Override
-    public ConnectivityMatrix connectivityMatrix(long entryId) {
-        return connMatrices.get(entryId);
-    }
-
-    @Override
-    public List<Long> teLinkIds() {
-        if (teLinkIds == null) {
-            return null;
-        }
-        return ImmutableList.copyOf(teLinkIds);
-    }
-
-    @Override
-    public Map<Long, TunnelTerminationPoint> tunnelTerminationPoints() {
-        if (ttps == null) {
-            return null;
-        }
-        return ImmutableMap.copyOf(ttps);
-    }
-
-    @Override
-    public TunnelTerminationPoint tunnelTerminationPoint(long ttpId) {
-        return ttps.get(ttpId);
-    }
-
-    @Override
-    public TeStatus adminStatus() {
-        if (teData == null) {
-            return null;
-        }
-        return teData.adminStatus();
-    }
-
-    @Override
-    public TeStatus opStatus() {
-        if (teData == null) {
-            return null;
-        }
-        return teData.opStatus();
-    }
-
-    @Override
-    public List<Long> teTerminationPointIds() {
-        return Collections.unmodifiableList(teTpIds);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(teNodeId, underlayTopologyId,
-                                supportTeNodeId, sourceTeNodeId, teData,
-                                connMatrices, teLinkIds, ttps, teTpIds);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof DefaultTeNode) {
-            DefaultTeNode that = (DefaultTeNode) object;
-            return Objects.equal(teNodeId, that.teNodeId) &&
-                    Objects.equal(underlayTopologyId, that.underlayTopologyId) &&
-                    Objects.equal(supportTeNodeId, that.supportTeNodeId) &&
-                    Objects.equal(sourceTeNodeId, that.sourceTeNodeId) &&
-                    Objects.equal(teData, that.teData) &&
-                    Objects.equal(connMatrices, that.connMatrices) &&
-                    Objects.equal(teLinkIds, that.teLinkIds) &&
-                    Objects.equal(ttps, that.ttps) &&
-                    Objects.equal(teTpIds, that.teTpIds);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("teNodeId", teNodeId)
-                .add("underlayTopologyId", underlayTopologyId)
-                .add("supportTeNodeId", supportTeNodeId)
-                .add("sourceTeNodeId", sourceTeNodeId)
-                .add("teData", teData)
-                .add("connMatrices", connMatrices)
-                .add("teLinkIds", teLinkIds)
-                .add("ttps", ttps)
-                .add("teTpIds", teTpIds)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTerminationPoint.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTerminationPoint.java
deleted file mode 100644
index b3afd85..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTerminationPoint.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import org.onosproject.tetopology.management.api.KeyId;
-
-import java.util.List;
-
-/**
- * The default implementation of TE termination point.
- */
-public class DefaultTerminationPoint implements TerminationPoint {
-    private final KeyId tpId;
-    private final List<TerminationPointKey> supportingTpIds;
-    private final Long teTpId;
-
-    /**
-     * Creates a termination point.
-     *
-     * @param tpId   termination point identifier
-     * @param tps    support termination point identifier
-     * @param teTpId TE termination point identifier
-     */
-    public DefaultTerminationPoint(KeyId tpId,
-                                   List<TerminationPointKey> tps,
-                                   Long teTpId) {
-        this.tpId = tpId;
-        this.supportingTpIds = tps != null ? Lists.newArrayList(tps) : null;
-        this.teTpId = teTpId;
-    }
-
-    @Override
-    public KeyId tpId() {
-        return tpId;
-    }
-
-    @Override
-    public Long teTpId() {
-        return teTpId;
-    }
-
-    @Override
-    public List<TerminationPointKey> supportingTpIds() {
-        if (supportingTpIds == null) {
-            return null;
-        }
-        return ImmutableList.copyOf(supportingTpIds);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(tpId, supportingTpIds, teTpId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof DefaultTerminationPoint) {
-            DefaultTerminationPoint that = (DefaultTerminationPoint) object;
-            return Objects.equal(tpId, that.tpId) &&
-                    Objects.equal(supportingTpIds, that.supportingTpIds) &&
-                    Objects.equal(teTpId, that.teTpId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("tpId", tpId)
-                .add("supportingTpIds", supportingTpIds)
-                .add("teTpId", teTpId)
-                .toString();
-    }
-
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTunnelTerminationPoint.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTunnelTerminationPoint.java
deleted file mode 100644
index efe82f1..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTunnelTerminationPoint.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import java.util.Arrays;
-import java.util.BitSet;
-import java.util.List;
-
-import org.onosproject.tetopology.management.api.EncodingType;
-import org.onosproject.tetopology.management.api.SwitchingType;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-
-/**
- * Default implementation of a tunnel termination point.
- */
-public class DefaultTunnelTerminationPoint implements TunnelTerminationPoint {
-    private final long ttpId;
-    private final SwitchingType switchingLayer;
-    private final EncodingType encodingLayer;
-    private final BitSet flags;
-    private final List<Long> interLayerLockList;
-    private final List<LocalLinkConnectivity> localLinkConnectivityList;
-    private final float[] availAdaptBandwidth;
-    private final TtpKey supportTtpKey;
-
-    /**
-     * Create a tunnel termination point.
-     *
-     * @param ttpId                     tunnel termination point id
-     * @param switchingLayer            switching network layer to which this
-     *                                  TTP belongs
-     * @param encodingLayer             encoding layer to which this TTP belongs
-     * @param flags                     the TTP flags
-     * @param interLayerLockList        the supported inter-layer locks
-     * @param localLinkConnectivityList the local link connectivity list
-     * @param availAdaptBandwidth       the remaining adaptation bandwidth
-     *                                  at each priority level
-     * @param supportTtpKey             supporting TTP key from underlay topology
-     */
-    public DefaultTunnelTerminationPoint(long ttpId,
-                                         SwitchingType switchingLayer,
-                                         EncodingType encodingLayer,
-                                         BitSet flags,
-                                         List<Long> interLayerLockList,
-                                         List<LocalLinkConnectivity> localLinkConnectivityList,
-                                         float[] availAdaptBandwidth,
-                                         TtpKey supportTtpKey) {
-        this.ttpId = ttpId;
-        this.switchingLayer = switchingLayer;
-        this.encodingLayer = encodingLayer;
-        this.flags = flags;
-        this.interLayerLockList = interLayerLockList != null ?
-                Lists.newArrayList(interLayerLockList) : null;
-        this.localLinkConnectivityList = localLinkConnectivityList != null ?
-                Lists.newArrayList(localLinkConnectivityList) : null;
-        this.availAdaptBandwidth = availAdaptBandwidth != null ?
-                Arrays.copyOf(availAdaptBandwidth,
-                              availAdaptBandwidth.length) : null;
-        this.supportTtpKey = supportTtpKey;
-    }
-
-    @Override
-    public long ttpId() {
-        return ttpId;
-    }
-
-    @Override
-    public SwitchingType switchingLayer() {
-        return switchingLayer;
-    }
-
-    @Override
-    public EncodingType encodingLayer() {
-        return encodingLayer;
-    }
-
-    @Override
-    public BitSet flags() {
-        return flags;
-    }
-
-    @Override
-    public List<Long> interLayerLockList() {
-        if (interLayerLockList == null) {
-            return null;
-        }
-        return ImmutableList.copyOf(interLayerLockList);
-    }
-
-    @Override
-    public List<LocalLinkConnectivity> localLinkConnectivityList() {
-        if (localLinkConnectivityList == null) {
-            return null;
-        }
-        return ImmutableList.copyOf(localLinkConnectivityList);
-    }
-
-    @Override
-    public float[] availAdaptBandwidth() {
-        if (availAdaptBandwidth == null) {
-            return null;
-        }
-        return Arrays.copyOf(availAdaptBandwidth, availAdaptBandwidth.length);
-    }
-
-    @Override
-    public TtpKey supportingTtpId() {
-        return supportTtpKey;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(ttpId, switchingLayer, encodingLayer, flags,
-                                interLayerLockList, localLinkConnectivityList,
-                                Arrays.hashCode(availAdaptBandwidth), supportTtpKey);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof DefaultTunnelTerminationPoint) {
-            DefaultTunnelTerminationPoint that = (DefaultTunnelTerminationPoint) object;
-            return Objects.equal(ttpId, that.ttpId) &&
-                    Objects.equal(switchingLayer, that.switchingLayer) &&
-                    Objects.equal(encodingLayer, that.encodingLayer) &&
-                    Objects.equal(flags, that.flags) &&
-                    Objects.equal(interLayerLockList, that.interLayerLockList) &&
-                    Objects.equal(localLinkConnectivityList, that.localLinkConnectivityList) &&
-                    Arrays.equals(availAdaptBandwidth, that.availAdaptBandwidth) &&
-                    Objects.equal(supportTtpKey, that.supportTtpKey);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("ttpId", ttpId)
-                .add("switchingLayer", switchingLayer)
-                .add("encodingLayer", encodingLayer)
-                .add("flags", flags)
-                .add("interLayerLockList", interLayerLockList)
-                .add("localLinkConnectivityList", localLinkConnectivityList)
-                .add("availAdaptBandwidth", availAdaptBandwidth)
-                .add("supportTtpKey", supportTtpKey)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/LocalLinkConnectivity.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/LocalLinkConnectivity.java
deleted file mode 100644
index ae8f314..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/LocalLinkConnectivity.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import org.onosproject.tetopology.management.api.link.ElementType;
-import org.onosproject.tetopology.management.api.link.TePathAttributes;
-import org.onosproject.tetopology.management.api.link.UnderlayAbstractPath;
-
-import java.util.BitSet;
-import java.util.List;
-
-/**
- * The connectivity between tunnel termination point and link termination
- * points.
- */
-public class LocalLinkConnectivity extends AbstractConnectivity {
-    /**
-     * Indicates that the link connectivity is disabled.
-     */
-    public static final short BIT_DISABLED = 0;
-
-    /**
-     * Indicates that an alternative path of the link connection is
-     * available.
-     */
-    public static final short BIT_ALTERNATIVE_PATH_AVAILABLE = 1;
-
-    /**
-     * Creates a local link connectivity instance.
-     *
-     * @param constrainingElements list of elements that can be constrained
-     *                             or connected to
-     * @param flags                indicate whether this connectivity is usable
-     * @param teAttributes         the connectivity path TE attributes
-     * @param underlayPath         the underlay path
-     */
-    public LocalLinkConnectivity(List<ElementType> constrainingElements, BitSet flags,
-                                 TePathAttributes teAttributes,
-                                 UnderlayAbstractPath underlayPath) {
-        super(constrainingElements, flags, teAttributes, underlayPath);
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNode.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNode.java
deleted file mode 100644
index 3d45806..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNode.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import java.util.List;
-import java.util.Map;
-
-import org.onosproject.tetopology.management.api.KeyId;
-
-/**
- * Abstraction of a network node.
- */
-public interface NetworkNode {
-
-    /**
-     * Returns the node identifier.
-     *
-     * @return node identifier
-     */
-    KeyId nodeId();
-
-    /**
-     * Returns the supporting node identifiers.
-     *
-     * @return list of the ids of the supporting nodes
-     */
-    List<NetworkNodeKey> supportingNodeIds();
-
-    /**
-     * Returns the node TE extension attributes.
-     *
-     * @return node TE extension attributes
-     */
-    TeNode teNode();
-
-    /**
-     * Returns a collection of currently known termination points.
-     *
-     * @return a collection of termination points associated with this node
-     */
-    Map<KeyId, TerminationPoint> terminationPoints();
-
-    /**
-     * Returns the termination point.
-     *
-     * @param tpId termination point id
-     * @return value of termination point
-     */
-    TerminationPoint terminationPoint(KeyId tpId);
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNodeEventSubject.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNodeEventSubject.java
deleted file mode 100644
index 12fa5a0..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNodeEventSubject.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.onosproject.tetopology.management.api.TeTopologyEventSubject;
-
-/**
- * Representation of a network node event.
- */
-public class NetworkNodeEventSubject implements TeTopologyEventSubject {
-    private final NetworkNodeKey key;
-    private final NetworkNode node;
-
-    /**
-     * Creates a network node event.
-     *
-     * @param key  the network node global key
-     * @param node the network node
-     */
-    public NetworkNodeEventSubject(NetworkNodeKey key, NetworkNode node) {
-        this.key = key;
-        this.node = node;
-    }
-
-    /**
-     * Returns the network node global key.
-     *
-     * @return the key
-     */
-    public NetworkNodeKey key() {
-        return key;
-    }
-
-    /**
-     * Returns the network node.
-     *
-     * @return the node
-     */
-    public NetworkNode neworkNode() {
-        return node;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(key, node);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof NetworkNodeEventSubject) {
-            NetworkNodeEventSubject that = (NetworkNodeEventSubject) object;
-            return Objects.equal(key, that.key) &&
-                    Objects.equal(node, that.node);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("key", key)
-                .add("node", node)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNodeKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNodeKey.java
deleted file mode 100644
index 22b806a..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNodeKey.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import org.onosproject.tetopology.management.api.KeyId;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-
-/**
- * Representation of a node key or node reference.
- */
-public class NetworkNodeKey {
-    private final KeyId networkId;
-    private final KeyId nodeId;
-
-    /**
-     * Creates an instance of NetworkNodeKey.
-     *
-     * @param networkId network identifier
-     * @param nodeId node identifier
-     */
-    public NetworkNodeKey(KeyId networkId, KeyId nodeId) {
-        this.networkId = networkId;
-        this.nodeId = nodeId;
-    }
-
-    /**
-     * Returns the network identifier.
-     *
-     * @return network identifier
-     */
-    public KeyId networkId() {
-        return networkId;
-    }
-
-    /**
-     * Returns the node identifier.
-     *
-     * @return node identifier
-     */
-    public KeyId nodeId() {
-        return nodeId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(networkId, nodeId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof NetworkNodeKey) {
-            NetworkNodeKey that = (NetworkNodeKey) object;
-            return Objects.equal(this.networkId, that.networkId) &&
-                    Objects.equal(this.nodeId, that.nodeId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("networkId", networkId)
-                .add("nodeId", nodeId)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NodeTpKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NodeTpKey.java
deleted file mode 100644
index 4ad3b29..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NodeTpKey.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import org.onosproject.tetopology.management.api.KeyId;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-
-/**
- * Representation of a node's termination point key under a known network.
- */
-public class NodeTpKey {
-    private final KeyId nodeId;
-    private final KeyId tpId;
-
-    /**
-     * Creates a node's termination point key.
-     *
-     * @param nodeId node identifier
-     * @param tpId   termination point identifier
-     */
-    public NodeTpKey(KeyId nodeId, KeyId tpId) {
-        this.nodeId = nodeId;
-        this.tpId = tpId;
-    }
-
-    /**
-     * Returns the node identifier.
-     *
-     * @return node id
-     */
-    public KeyId nodeId() {
-        return nodeId;
-    }
-
-    /**
-     * Returns the termination point identifier.
-     *
-     * @return termination point identifier
-     */
-    public KeyId tpId() {
-        return tpId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(nodeId, tpId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof NodeTpKey) {
-            NodeTpKey that = (NodeTpKey) object;
-            return Objects.equal(nodeId, that.nodeId) &&
-                    Objects.equal(tpId, that.tpId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("nodeId", nodeId)
-                .add("tpId", tpId)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNode.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNode.java
deleted file mode 100644
index 2387576..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNode.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import java.util.BitSet;
-import java.util.List;
-import java.util.Map;
-
-import org.onosproject.tetopology.management.api.TeStatus;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-
-/**
- * Abstraction of a TE node.
- */
-public interface TeNode {
-    /**
-     * Indicates that the TE node belongs to an abstract topology.
-     */
-    public static final short BIT_ABSTRACT = 0;
-
-    /**
-     * Indicates that the TE node is disabled.
-     */
-    public static final short BIT_DISABLED = 1;
-
-    /**
-     * Returns the TE node identifier.
-     *
-     * @return TE node identifier
-     */
-    long teNodeId();
-
-    /**
-     * Returns the TE node name.
-     *
-     * @return the te node name
-     */
-    String name();
-
-    /**
-     * Returns the flags.
-     *
-     * @return the flags
-     */
-    BitSet flags();
-
-    /**
-     * Returns the underlay TE topology identifier for the node.
-     *
-     * @return the underlay TE topology id
-     */
-    TeTopologyKey underlayTeTopologyId();
-
-    /**
-     * Returns the supporting TE node identifier.
-     *
-     * @return the id of the supporting node
-     */
-    TeNodeKey supportingTeNodeId();
-
-    /**
-     * Returns the source TE node identifier.
-     *
-     * @return the id of the source node
-     */
-    TeNodeKey sourceTeNodeId();
-
-    /**
-     * Returns the connectivity matrix table of the node.
-     *
-     * @return the connectivity matrix table
-     */
-    Map<Long, ConnectivityMatrix> connectivityMatrices();
-
-    /**
-     * Returns the connectivity matrix identified by its entry identifier.
-     *
-     * @param entryId connection matrix id
-     * @return the connectivity matrix
-     */
-    ConnectivityMatrix connectivityMatrix(long entryId);
-
-    /**
-     * Returns a list of TE link identifiers originating from the node.
-     *
-     * @return a list of TE link ids
-     */
-    List<Long> teLinkIds();
-
-    /**
-     * Returns a collection of currently known tunnel termination points.
-     *
-     * @return a collection of tunnel termination points associated with this node
-     */
-    Map<Long, TunnelTerminationPoint> tunnelTerminationPoints();
-
-    /**
-     * Returns a tunnel termination point identified by its identifier.
-     *
-     * @param ttpId tunnel termination point identifier
-     * @return the tunnel termination point
-     */
-    TunnelTerminationPoint tunnelTerminationPoint(long ttpId);
-
-    /**
-     * Returns the admin status.
-     *
-     * @return the adminStatus
-     */
-    TeStatus adminStatus();
-
-    /**
-     * Returns the operational status.
-     *
-     * @return the opStatus
-     */
-    TeStatus opStatus();
-
-    /**
-     * Returns a collection of currently known TE termination point identifiers.
-     *
-     * @return a collection of termination point ids associated with this node
-     */
-    List<Long> teTerminationPointIds();
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNodeEventSubject.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNodeEventSubject.java
deleted file mode 100644
index 6faa846..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNodeEventSubject.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import org.onosproject.tetopology.management.api.TeTopologyEventSubject;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-
-/**
- * Representation of TE node event.
- */
-public class TeNodeEventSubject implements TeTopologyEventSubject {
-    private final TeNodeKey key;
-    private final TeNode teNode;
-
-    /**
-     * Creates a TE node event.
-     *
-     * @param key    the TE node global key
-     * @param teNode the TE node
-     */
-    public TeNodeEventSubject(TeNodeKey key, TeNode teNode) {
-        this.key = key;
-        this.teNode = teNode;
-    }
-
-    /**
-     * Returns the TE node global key.
-     *
-     * @return the key
-     */
-    public TeNodeKey key() {
-        return key;
-    }
-
-    /**
-     * Returns the TE node.
-     *
-     * @return the TE node
-     */
-    public TeNode teNode() {
-        return teNode;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(key, teNode);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof TeNodeEventSubject) {
-            TeNodeEventSubject that = (TeNodeEventSubject) object;
-            return Objects.equal(key, that.key) &&
-                    Objects.equal(teNode, that.teNode);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("key", key)
-                .add("teNode", teNode)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNodeKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNodeKey.java
deleted file mode 100644
index f0b7149..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNodeKey.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-
-import com.google.common.base.MoreObjects.ToStringHelper;
-import com.google.common.base.Objects;
-
-/**
- * TE node Key.
- */
-public class TeNodeKey extends TeTopologyKey {
-    private final long teNodeId;
-
-    /**
-     * Creates a TE node key.
-     *
-     * @param providerId provider identifier
-     * @param clientId   client identifier
-     * @param topologyId topology identifier
-     * @param teNodeId   TE node identifier
-     */
-    public TeNodeKey(long providerId, long clientId,
-                     long topologyId, long teNodeId) {
-        super(providerId, clientId, topologyId);
-        this.teNodeId = teNodeId;
-    }
-
-    /**
-     * Creates a TE node key based on a given TE topology key and a
-     * TE node identifier.
-     *
-     * @param teTopologyKey the key of TE Topology to which this node belongs
-     * @param nodeId        TE node identifier
-     */
-    public TeNodeKey(TeTopologyKey teTopologyKey, long nodeId) {
-        super(teTopologyKey.providerId(), teTopologyKey.clientId(),
-              teTopologyKey.topologyId());
-        this.teNodeId = nodeId;
-    }
-
-    /**
-     * Returns the TE Node identifier.
-     *
-     * @return the TE node id
-     */
-    public long teNodeId() {
-        return teNodeId;
-    }
-
-    public TeTopologyKey teTopologyKey() {
-        return new TeTopologyKey(providerId(), clientId(), topologyId());
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(super.hashCode(), teNodeId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof TeNodeKey) {
-            if (!super.equals(object)) {
-                return false;
-            }
-            TeNodeKey that = (TeNodeKey) object;
-            return Objects.equal(this.teNodeId, that.teNodeId);
-        }
-        return false;
-    }
-
-    /**
-     * Returns ToStringHelper with an additional TE node identifier.
-     *
-     * @return toStringHelper
-     */
-    protected ToStringHelper toTeNodeKeyStringHelper() {
-        return toTopologyKeyStringHelper().add("teNodeId", teNodeId);
-    }
-
-    @Override
-    public String toString() {
-        return toTeNodeKeyStringHelper().toString();
-    }
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TerminationPoint.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TerminationPoint.java
deleted file mode 100644
index 9880098..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TerminationPoint.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import java.util.List;
-
-import org.onosproject.tetopology.management.api.KeyId;
-
-/**
- * Abstraction of a termination point.
- */
-public interface TerminationPoint {
-
-    /**
-     * Returns the termination point identifier.
-     *
-     * @return termination point id
-     */
-    KeyId tpId();
-
-    /**
-     * Returns list of supporting termination point identifiers.
-     *
-     * @return the supporting termination point ids
-     */
-    List<TerminationPointKey> supportingTpIds();
-
-    /**
-     * Returns TE termination point identifier.
-     *
-     * @return the TE TP id
-     */
-    Long teTpId();
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TerminationPointKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TerminationPointKey.java
deleted file mode 100644
index 249c88f..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TerminationPointKey.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import com.google.common.base.Objects;
-import org.onosproject.tetopology.management.api.KeyId;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-/**
- * Representation of a termination point key or reference.
- */
-public class TerminationPointKey extends NetworkNodeKey {
-    private final KeyId tpId;
-
-    /**
-     * Creates a termination point key.
-     *
-     * @param networkId network identifier
-     * @param nodeId    node identifier
-     * @param tpId      termination point identifier
-     */
-    public TerminationPointKey(KeyId networkId, KeyId nodeId, KeyId tpId) {
-        super(networkId, nodeId);
-        this.tpId = tpId;
-    }
-
-    /**
-     * Creates an instance of termination point key based on a given
-     * network node key.
-     *
-     * @param nodeKey node key
-     * @param tpId    termination point identifier
-     */
-    public TerminationPointKey(NetworkNodeKey nodeKey, KeyId tpId) {
-        super(nodeKey.networkId(), nodeKey.nodeId());
-        this.tpId = tpId;
-    }
-
-    /**
-     * Returns the termination point identifier.
-     *
-     * @return termination point identifier
-     */
-    public NetworkNodeKey networkNodeKey() {
-        return new NetworkNodeKey(networkId(), nodeId());
-    }
-
-    /**
-     * Returns the termination point identifier.
-     *
-     * @return termination point identifier
-     */
-    public KeyId tpId() {
-        return tpId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(super.hashCode(), tpId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (object instanceof TerminationPointKey) {
-            if (!super.equals(object)) {
-                return false;
-            }
-            TerminationPointKey that = (TerminationPointKey) object;
-            return Objects.equal(tpId, that.tpId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("networkId", networkId())
-                .add("nodeId", nodeId())
-                .add("tpId", tpId)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TtpKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TtpKey.java
deleted file mode 100644
index e43200a..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TtpKey.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import com.google.common.base.MoreObjects.ToStringHelper;
-import com.google.common.base.Objects;
-
-/**
- * Representation of a TE tunnel termination point key.
- */
-public class TtpKey extends TeNodeKey {
-    private final long ttpId;
-
-    /**
-     * Creates a TE tunnel termination point key.
-     *
-     * @param providerId provider identifier
-     * @param clientId   client identifier
-     * @param topologyId topology identifier
-     * @param teNodeId   TE node identifier
-     * @param ttpId      tunnel termination point identifier
-     */
-    public TtpKey(long providerId, long clientId, long topologyId,
-                  long teNodeId, long ttpId) {
-        super(providerId, clientId, topologyId, teNodeId);
-        this.ttpId = ttpId;
-    }
-
-    /**
-     * Creates a TE tunnel termination point key based on a given TE node
-     * key and a tunnel termination point identifier.
-     *
-     * @param teNodeKey TE node key
-     * @param ttpId     tunnel termination point id
-     */
-    public TtpKey(TeNodeKey teNodeKey, long ttpId) {
-        super(teNodeKey.providerId(), teNodeKey.clientId(),
-              teNodeKey.topologyId(), teNodeKey.teNodeId());
-        this.ttpId = ttpId;
-    }
-
-    /**
-     * Returns the TE node key.
-     *
-     * @return the TE node key
-     */
-    public TeNodeKey teNodekey() {
-        return new TeNodeKey(providerId(), clientId(), topologyId(), teNodeId());
-    }
-
-    /**
-     * Returns the tunnel termination point identifier.
-     *
-     * @return the tunnel termination point id
-     */
-    public long ttpId() {
-        return ttpId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(super.hashCode(), ttpId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof TtpKey) {
-            if (!super.equals(object)) {
-                return false;
-            }
-            TtpKey that = (TtpKey) object;
-            return Objects.equal(ttpId, that.ttpId);
-        }
-        return false;
-    }
-
-    /**
-     * Returns ToStringHelper with an additional tunnel termination point
-     * identifier.
-     *
-     * @return toStringHelper
-     */
-    protected ToStringHelper toTtpKeyStringHelper() {
-        return toTeNodeKeyStringHelper().add("ttpId", ttpId);
-    }
-
-    @Override
-    public String toString() {
-        return toTtpKeyStringHelper().toString();
-    }
-
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TunnelTerminationPoint.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TunnelTerminationPoint.java
deleted file mode 100644
index 9f488f1..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TunnelTerminationPoint.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.management.api.node;
-
-import java.util.BitSet;
-import java.util.List;
-
-import org.onosproject.tetopology.management.api.EncodingType;
-import org.onosproject.tetopology.management.api.SwitchingType;
-
-/**
- * Representation of a tunnel termination point.
- */
-public interface TunnelTerminationPoint {
-    /**
-     * Indicates that the TTP supports one-plus-one protection.
-     */
-    public static final short BIT_1PLUS1_PROTECTION_CAPABLE = 0;
-
-    /**
-     * Indicates that the TTP is disabled.
-     */
-    public static final short BIT_DISABLED = 1;
-
-    /**
-     * Indicates that the TTP is operationally down.
-     */
-    public static final short BIT_STATUS_DOWN = 2;
-
-    /**
-     * Returns the tunnel termination point identifier.
-     *
-     * @return tunnel termination point id
-     */
-    long ttpId();
-
-    /**
-     * Returns the network layer switching type to which this TTP belongs.
-     *
-     * @return the switching type
-     */
-    SwitchingType switchingLayer();
-
-    /**
-     * Returns the network layer encoding type to which this TTP belongs.
-     *
-     * @return the encoding type
-     */
-    EncodingType encodingLayer();
-
-    /**
-     * Returns the flags of this TTP.
-     *
-     * @return the flags
-     */
-    BitSet flags();
-
-    /**
-     * Returns the supported inter-layer locks.
-     *
-     * @return list of inter-layer locks
-     */
-    List<Long> interLayerLockList();
-
-    /**
-     * Returns the local link connectivity list.
-     *
-     * @return the local link connectivity list
-     */
-    List<LocalLinkConnectivity> localLinkConnectivityList();
-
-    /**
-     * Returns the remaining adaptation bandwidth at each priority level.
-     *
-     * @return list of available adaptation bandwidth
-     */
-    float[] availAdaptBandwidth();
-
-    /**
-     * Returns the supporting TTP identifier.
-     *
-     * @return the supporting TTP key
-     */
-    TtpKey supportingTtpId();
-}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/package-info.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/package-info.java
deleted file mode 100644
index 6dbf03b..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.
- */
-/**
- * TE node API.
- */
-package org.onosproject.tetopology.management.api.node;
\ No newline at end of file
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/package-info.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/package-info.java
deleted file mode 100644
index 5dca9eb..0000000
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * TE topology management API.
- */
-package org.onosproject.tetopology.management.api;
\ No newline at end of file
diff --git a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeLinkApiTest.java b/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeLinkApiTest.java
deleted file mode 100644
index 04621b5..0000000
--- a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeLinkApiTest.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.manager.api;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.tetopology.management.api.link.ElementType;
-import org.onosproject.tetopology.management.api.link.Label;
-import org.onosproject.tetopology.management.api.link.PathElement;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.link.UnderlayBackupPath;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-
-/**
- * Unit tests for TE link APIs.
- */
-public class TeLinkApiTest {
-    private static final long DEFAULT_PROVIDER_ID = 123;
-    private static final long DEFAULT_CLIENT_ID = 456;
-    private static final long DEFAULT_TOPOLOGY_ID = 789;
-    private static final long DEFAULT_TE_NODE_ID = 1234;
-    private static final long DEFAULT_TE_LINK_TP_ID = 5678;
-    private static final String DEFAULT_TOPOLOGY_ID_STRING =
-            "default-topology-123";
-    private static final long DEFAULT_PATH_ELEMENT_ID = 234;
-    private static final long DEFAULT_UNDERLAY_BACKUP_PATH_IDX = 10;
-
-    private long providerId;
-    private long clientId;
-    private long topologyId;
-    private long teNodeId;
-    private long teLinkTpId;
-    private long pathElementId;
-    private long underlayBackupPathIndex;
-
-    private String topologyIdString;
-
-    @Before
-    public void setUp() {
-        providerId = DEFAULT_PROVIDER_ID;
-        clientId = DEFAULT_CLIENT_ID;
-        topologyId = DEFAULT_TOPOLOGY_ID;
-        teNodeId = DEFAULT_TE_NODE_ID;
-        teLinkTpId = DEFAULT_TE_LINK_TP_ID;
-        topologyIdString = DEFAULT_TOPOLOGY_ID_STRING;
-        pathElementId = DEFAULT_PATH_ELEMENT_ID;
-        underlayBackupPathIndex = DEFAULT_UNDERLAY_BACKUP_PATH_IDX;
-    }
-
-    @Test
-    public void teLinkTpGlobalKeyEqualOperatorTest() {
-        TeLinkTpGlobalKey key1 = new TeLinkTpGlobalKey(providerId, clientId,
-                                                       topologyId, teNodeId,
-                                                       teLinkTpId);
-        TeLinkTpGlobalKey key2 = new TeLinkTpGlobalKey(providerId, clientId,
-                                                       topologyId, teNodeId,
-                                                       teLinkTpId);
-        TeLinkTpGlobalKey key3 = new TeLinkTpGlobalKey(providerId + 1, clientId,
-                                                       topologyId, teNodeId,
-                                                       teLinkTpId);
-        TeLinkTpGlobalKey key4 = new TeLinkTpGlobalKey(providerId, clientId + 1,
-                                                       topologyId, teNodeId,
-                                                       teLinkTpId);
-        TeLinkTpGlobalKey key5 = new TeLinkTpGlobalKey(providerId, clientId,
-                                                       topologyId + 1,
-                                                       teNodeId, teLinkTpId);
-        TeLinkTpGlobalKey key6 = new TeLinkTpGlobalKey(providerId, clientId,
-                                                       topologyId,
-                                                       teNodeId + 1, teLinkTpId);
-        TeLinkTpGlobalKey key7 = new TeLinkTpGlobalKey(providerId, clientId,
-                                                       topologyId,
-                                                       teNodeId, teLinkTpId + 1);
-
-        assertTrue("Two topology Ids must be equal", key1.equals(key2));
-
-        assertFalse("Two topology Ids must be unequal", key1.equals(key3));
-        assertFalse("Two topology Ids must be unequal", key3.equals(key1));
-
-        assertFalse("Two topology Ids must be unequal", key1.equals(key4));
-        assertFalse("Two topology Ids must be unequal", key4.equals(key1));
-
-        assertFalse("Two topology Ids must be unequal", key1.equals(key5));
-        assertFalse("Two topology Ids must be unequal", key5.equals(key1));
-
-        assertFalse("Two topology Ids must be unequal", key1.equals(key6));
-        assertFalse("Two topology Ids must be unequal", key6.equals(key1));
-
-        assertFalse("Two topology Ids must be unequal", key1.equals(key7));
-        assertFalse("Two topology Ids must be unequal", key7.equals(key1));
-    }
-
-    @Test
-    public void underLayBackupPathEqualOperatorTest() {
-        ElementType pathElementType1 = new Label(pathElementId + 1);
-        ElementType pathElementType2 = new Label(pathElementId + 2);
-        ElementType pathElementType3 = new Label(pathElementId + 3);
-        ElementType pathElementType4 = new Label(pathElementId + 4);
-
-        PathElement pathElement1 = new PathElement(pathElementId, teNodeId,
-                                                   pathElementType1, true);
-        PathElement pathElement2 = new PathElement(pathElementId + 1,
-                                                   teNodeId + 1,
-                                                   pathElementType2, true);
-        PathElement pathElement3 = new PathElement(pathElementId + 2,
-                                                   teNodeId + 2,
-                                                   pathElementType3, true);
-        PathElement pathElement4 = new PathElement(pathElementId + 3,
-                                                   teNodeId + 3,
-                                                   pathElementType4, true);
-
-        List<PathElement> pathElementList1 = new ArrayList<>();
-        pathElementList1.add(pathElement1);
-        pathElementList1.add(pathElement2);
-        pathElementList1.add(pathElement3);
-
-        List<PathElement> pathElementList2 = new ArrayList<>();
-        pathElementList1.add(pathElement1);
-        pathElementList1.add(pathElement2);
-        pathElementList1.add(pathElement4);
-
-        // bp1 and bp2 are the same. bp3, bp4, and bp5 differ by one
-        // attribute comparing to bp1.
-        UnderlayBackupPath bp1 = new UnderlayBackupPath(
-                underlayBackupPathIndex, pathElementList1, true);
-        UnderlayBackupPath bp2 = new UnderlayBackupPath(
-                underlayBackupPathIndex, pathElementList1, true);
-
-        UnderlayBackupPath bp3 = new UnderlayBackupPath(
-                underlayBackupPathIndex + 1, pathElementList1, true);
-        UnderlayBackupPath bp4 = new UnderlayBackupPath(
-                underlayBackupPathIndex, pathElementList2, true);
-        UnderlayBackupPath bp5 = new UnderlayBackupPath(
-                underlayBackupPathIndex, pathElementList1, false);
-
-
-        assertTrue("Two backup paths must be equal", bp1.equals(bp2));
-
-        assertFalse("Two backup paths must be unequal", bp1.equals(bp3));
-        assertFalse("Two backup paths must be unequal", bp3.equals(bp1));
-
-        assertFalse("Two backup paths must be unequal", bp1.equals(bp4));
-        assertFalse("Two backup paths must be unequal", bp4.equals(bp1));
-
-        assertFalse("Two backup paths must be unequal", bp1.equals(bp5));
-        assertFalse("Two backup paths must be unequal", bp5.equals(bp1));
-    }
-}
diff --git a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeNetworkApiTest.java b/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeNetworkApiTest.java
deleted file mode 100644
index 77d14f5..0000000
--- a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeNetworkApiTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.manager.api;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.tetopology.management.api.TeTopologyId;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-
-/**
- * Unit tests for TE topology APIs.
- */
-public class TeNetworkApiTest {
-    private static final long DEFAULT_PROVIDER_ID = 1234;
-    private static final long DEFAULT_CLIENT_ID = 5678;
-    private static final long DEFAULT_TOPOLOGY_ID = 9876;
-    private static final String DEFAULT_TOPOLOGY_ID_STRING =
-            "default-topology-123";
-
-    private long providerId;
-    private long clientId;
-    private long topologyId;
-    private String topologyIdString;
-
-    @Before
-    public void setUp() {
-        providerId = DEFAULT_PROVIDER_ID;
-        clientId = DEFAULT_CLIENT_ID;
-        topologyId = DEFAULT_TOPOLOGY_ID;
-        topologyIdString = DEFAULT_TOPOLOGY_ID_STRING;
-    }
-
-    @Test
-    public void topologyIdEqualOperatorTest() {
-        TeTopologyId id1 = new TeTopologyId(providerId, clientId,
-                                            topologyIdString);
-        TeTopologyId id2 = new TeTopologyId(providerId, clientId,
-                                            topologyIdString);
-        TeTopologyId id3 = new TeTopologyId(providerId + 1, clientId,
-                                            topologyIdString);
-        TeTopologyId id4 = new TeTopologyId(providerId, clientId + 1,
-                                            topologyIdString);
-        TeTopologyId id5 = new TeTopologyId(providerId, clientId,
-                                            topologyIdString + "abc");
-
-        assertTrue("Two topology ids must be equal", id1.equals(id2));
-
-        assertFalse("Two topology ids must be unequal", id1.equals(id3));
-        assertFalse("Two topology ids must be unequal", id3.equals(id1));
-
-        assertFalse("Two topology ids must be unequal", id1.equals(id4));
-        assertFalse("Two topology ids must be unequal", id4.equals(id1));
-
-        assertFalse("Two topology ids must be unequal", id1.equals(id5));
-        assertFalse("Two topology ids must be unequal", id5.equals(id1));
-    }
-
-    @Test
-    public void topologyKeyEqualOperatorTest() {
-        TeTopologyKey key1 = new TeTopologyKey(providerId, clientId,
-                                               topologyId);
-        TeTopologyKey key2 = new TeTopologyKey(providerId, clientId,
-                                               topologyId);
-        TeTopologyKey key3 = new TeTopologyKey(providerId + 1, clientId,
-                                               topologyId);
-        TeTopologyKey key4 = new TeTopologyKey(providerId, clientId + 1,
-                                               topologyId);
-        TeTopologyKey key5 = new TeTopologyKey(providerId, clientId,
-                                               topologyId + 1);
-
-        assertTrue("Two topology keys must be equal", key1.equals(key2));
-
-        assertFalse("Two topology keys must be unequal", key1.equals(key3));
-        assertFalse("Two topology keys must be unequal", key3.equals(key1));
-
-        assertFalse("Two topology keys must be unequal", key1.equals(key4));
-        assertFalse("Two topology keys must be unequal", key4.equals(key1));
-
-        assertFalse("Two topology keys must be unequal", key1.equals(key5));
-        assertFalse("Two topology keys must be unequal", key5.equals(key1));
-    }
-}
diff --git a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeNodeApiTest.java b/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeNodeApiTest.java
deleted file mode 100644
index fb4b8b8..0000000
--- a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeNodeApiTest.java
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.tetopology.manager.api;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.tetopology.management.api.link.ConnectivityMatrixId;
-import org.onosproject.tetopology.management.api.link.ElementType;
-import org.onosproject.tetopology.management.api.link.Label;
-import org.onosproject.tetopology.management.api.link.PathElement;
-import org.onosproject.tetopology.management.api.link.TePathAttributes;
-import org.onosproject.tetopology.management.api.link.UnderlayAbstractPath;
-import org.onosproject.tetopology.management.api.link.UnderlayBackupPath;
-import org.onosproject.tetopology.management.api.node.ConnectivityMatrix;
-import org.onosproject.tetopology.management.api.node.ConnectivityMatrixKey;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.List;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-
-/**
- * Unit tests for TE node APIs.
- */
-public class TeNodeApiTest {
-    private static final long DEFAULT_PROVIDER_ID = 123;
-    private static final long DEFAULT_CLIENT_ID = 456;
-    private static final long DEFAULT_TOPOLOGY_ID = 789;
-    private static final long DEFAULT_TE_NODE_ID = 1234;
-    private static final long DEFAULT_CONNECTIVITY_ENTRY_ID = 5678;
-    private static final long DEFAULT_TTP_ID = 897;
-    private static final String DEFAULT_TOPOLOGY_ID_STRING =
-            "default-topology-123";
-    private static final long DEFAULT_PATH_ELEMENT_ID = 234;
-    private static final long DEFAULT_UNDERLAY_BACKUP_PATH_IDX = 10;
-
-    private long providerId;
-    private long clientId;
-    private long topologyId;
-    private long teNodeId;
-    private long connectivityMatrixEntryId;
-    private long pathElementId;
-    private long underlayBackupPathIndex;
-    private long ttpId;
-
-    private String topologyIdString;
-
-    @Before
-    public void setUp() {
-        providerId = DEFAULT_PROVIDER_ID;
-        clientId = DEFAULT_CLIENT_ID;
-        topologyId = DEFAULT_TOPOLOGY_ID;
-        teNodeId = DEFAULT_TE_NODE_ID;
-        connectivityMatrixEntryId = DEFAULT_CONNECTIVITY_ENTRY_ID;
-        topologyIdString = DEFAULT_TOPOLOGY_ID_STRING;
-        pathElementId = DEFAULT_PATH_ELEMENT_ID;
-        underlayBackupPathIndex = DEFAULT_UNDERLAY_BACKUP_PATH_IDX;
-        ttpId = DEFAULT_TTP_ID;
-    }
-
-    @Test
-    public void connectivityMatrixKeyEqualOperatorTest() {
-        ConnectivityMatrixKey key1 = new ConnectivityMatrixKey(providerId,
-                                                               clientId,
-                                                               topologyId,
-                                                               teNodeId,
-                                                               connectivityMatrixEntryId);
-        ConnectivityMatrixKey key2 = new ConnectivityMatrixKey(providerId,
-                                                               clientId,
-                                                               topologyId,
-                                                               teNodeId,
-                                                               connectivityMatrixEntryId);
-        ConnectivityMatrixKey key3 = new ConnectivityMatrixKey(providerId + 1,
-                                                               clientId,
-                                                               topologyId,
-                                                               teNodeId,
-                                                               connectivityMatrixEntryId);
-        ConnectivityMatrixKey key4 = new ConnectivityMatrixKey(providerId,
-                                                               clientId + 1,
-                                                               topologyId,
-                                                               teNodeId,
-                                                               connectivityMatrixEntryId);
-        ConnectivityMatrixKey key5 = new ConnectivityMatrixKey(providerId,
-                                                               clientId,
-                                                               topologyId + 1,
-                                                               teNodeId,
-                                                               connectivityMatrixEntryId);
-        ConnectivityMatrixKey key6 = new ConnectivityMatrixKey(providerId,
-                                                               clientId,
-                                                               topologyId,
-                                                               teNodeId + 1,
-                                                               connectivityMatrixEntryId);
-        ConnectivityMatrixKey key7 = new ConnectivityMatrixKey(providerId,
-                                                               clientId,
-                                                               topologyId,
-                                                               teNodeId,
-                                                               connectivityMatrixEntryId + 1);
-
-        assertTrue("Two matrix keys must be equal", key1.equals(key2));
-
-        assertFalse("Two matrix keys must be unequal", key1.equals(key3));
-        assertFalse("Two matrix keys must be unequal", key3.equals(key1));
-
-        assertFalse("Two matrix keys must be unequal", key1.equals(key4));
-        assertFalse("Two matrix keys must be unequal", key4.equals(key1));
-
-        assertFalse("Two matrix keys must be unequal", key1.equals(key5));
-        assertFalse("Two matrix keys must be unequal", key5.equals(key1));
-
-        assertFalse("Two matrix keys must be unequal", key1.equals(key6));
-        assertFalse("Two matrix keys must be unequal", key6.equals(key1));
-
-        assertFalse("Two matrix keys must be unequal", key1.equals(key7));
-        assertFalse("Two matrix keys must be unequal", key7.equals(key1));
-    }
-
-    @Test
-    public void underlayBackupPathEqualOperatorTest() {
-        ElementType pathElementType1 = new Label(pathElementId + 1);
-        ElementType pathElementType2 = new Label(pathElementId + 2);
-        ElementType pathElementType3 = new Label(pathElementId + 3);
-        ElementType pathElementType4 = new Label(pathElementId + 4);
-
-        PathElement pathElement1 = new PathElement(pathElementId, teNodeId,
-                                                   pathElementType1, true);
-        PathElement pathElement2 = new PathElement(pathElementId + 1,
-                                                   teNodeId + 1,
-                                                   pathElementType2, true);
-        PathElement pathElement3 = new PathElement(pathElementId + 2,
-                                                   teNodeId + 2,
-                                                   pathElementType3, true);
-        PathElement pathElement4 = new PathElement(pathElementId + 3,
-                                                   teNodeId + 3,
-                                                   pathElementType4, true);
-
-        List<PathElement> pathElementList1 = new ArrayList<>();
-        pathElementList1.add(pathElement1);
-        pathElementList1.add(pathElement2);
-        pathElementList1.add(pathElement3);
-
-        List<PathElement> pathElementList2 = new ArrayList<>();
-        pathElementList2.add(pathElement1);
-        pathElementList2.add(pathElement2);
-        pathElementList2.add(pathElement4);
-
-        // bp1 and bp2 are the same. bp3, bp4, and bp5 differ by one
-        // attribute comparing to bp1.
-        UnderlayBackupPath bp1 = new UnderlayBackupPath(
-                underlayBackupPathIndex, pathElementList1, true);
-        UnderlayBackupPath bp2 = new UnderlayBackupPath(
-                underlayBackupPathIndex, pathElementList1, true);
-
-        UnderlayBackupPath bp3 = new UnderlayBackupPath(
-                underlayBackupPathIndex + 1, pathElementList1, true);
-        UnderlayBackupPath bp4 = new UnderlayBackupPath(
-                underlayBackupPathIndex, pathElementList2, true);
-        UnderlayBackupPath bp5 = new UnderlayBackupPath(
-                underlayBackupPathIndex, pathElementList1, false);
-
-
-        assertTrue("Two backup paths must be equal", bp1.equals(bp2));
-
-        assertFalse("Two backup paths must be unequal", bp1.equals(bp3));
-        assertFalse("Two backup paths must be unequal", bp3.equals(bp1));
-
-        assertFalse("Two backup paths must be unequal", bp1.equals(bp4));
-        assertFalse("Two backup paths must be unequal", bp4.equals(bp1));
-
-        assertFalse("Two backup paths must be unequal", bp1.equals(bp5));
-        assertFalse("Two backup paths must be unequal", bp5.equals(bp1));
-    }
-
-
-    @Test
-    public void connectivityMatrixEqualOperatorTest() {
-        long key1 = connectivityMatrixEntryId;
-        long key2 = connectivityMatrixEntryId + 1;
-
-        ElementType pathElementType1 = new Label(pathElementId + 1);
-        ElementType pathElementType2 = new Label(pathElementId + 2);
-        ElementType pathElementType3 = new Label(pathElementId + 3);
-        ElementType pathElementType4 = new Label(pathElementId + 4);
-
-        PathElement pathElement1 = new PathElement(pathElementId, teNodeId,
-                                                   pathElementType1, true);
-        PathElement pathElement2 = new PathElement(pathElementId + 1,
-                                                   teNodeId + 1,
-                                                   pathElementType2, true);
-        PathElement pathElement3 = new PathElement(pathElementId + 2,
-                                                   teNodeId + 2,
-                                                   pathElementType3, true);
-        PathElement pathElement4 = new PathElement(pathElementId + 3,
-                                                   teNodeId + 3,
-                                                   pathElementType4, true);
-
-        List<PathElement> pathElementList1 = new ArrayList<>();
-        pathElementList1.add(pathElement1);
-        pathElementList1.add(pathElement2);
-        pathElementList1.add(pathElement3);
-
-        List<PathElement> pathElementList2 = new ArrayList<>();
-        pathElementList2.add(pathElement1);
-        pathElementList2.add(pathElement2);
-        pathElementList2.add(pathElement4);
-
-        UnderlayAbstractPath abstractPath1 = new UnderlayAbstractPath(
-                pathElementList1, true);
-        UnderlayAbstractPath abstractPath2 = new UnderlayAbstractPath(
-                pathElementList2, true);
-
-        ElementType from = new ConnectivityMatrixId(connectivityMatrixEntryId);
-        List<ElementType> mergingList = new ArrayList<>();
-        mergingList.add(new ConnectivityMatrixId(connectivityMatrixEntryId + 1));
-        mergingList.add(new ConnectivityMatrixId(connectivityMatrixEntryId + 2));
-
-        List<ElementType> constrainList = new ArrayList<>();
-        constrainList.add(new ConnectivityMatrixId(connectivityMatrixEntryId + 3));
-        constrainList.add(new ConnectivityMatrixId(connectivityMatrixEntryId + 4));
-
-        BitSet flags = new BitSet(1);
-
-        List<Long> srlgs = new ArrayList<>();
-        srlgs.add(new Long(10));
-        TePathAttributes tePathAttributes = new TePathAttributes(new Long(10),
-                                                                 new Long(10),
-                                                                 srlgs);
-
-        ConnectivityMatrix matrix1 = new ConnectivityMatrix(key1,
-                                                            from,
-                                                            mergingList,
-                                                            constrainList,
-                                                            flags,
-                                                            tePathAttributes,
-                                                            abstractPath1);
-        ConnectivityMatrix matrix2 = new ConnectivityMatrix(key1,
-                                                            from,
-                                                            mergingList,
-                                                            constrainList,
-                                                            flags,
-                                                            tePathAttributes,
-                                                            abstractPath1);
-        ConnectivityMatrix matrix3 = new ConnectivityMatrix(key1,
-                                                            from,
-                                                            mergingList,
-                                                            constrainList,
-                                                            flags,
-                                                            tePathAttributes,
-                                                            abstractPath2);
-        ConnectivityMatrix matrix4 = new ConnectivityMatrix(key2,
-                                                            from,
-                                                            mergingList,
-                                                            constrainList,
-                                                            flags,
-                                                            tePathAttributes,
-                                                            abstractPath1);
-
-        assertTrue("Two conn matrices must be equal", matrix1.equals(matrix2));
-
-        assertFalse("Two conn matrices must be unequal", matrix1.equals(matrix3));
-        assertFalse("Two conn matrices must be unequal", matrix3.equals(matrix1));
-
-        assertFalse("Two conn matrices must be unequal", matrix1.equals(matrix4));
-        assertFalse("Two conn matrices must be unequal", matrix4.equals(matrix1));
-    }
-
-    @Test
-    public void teNodeKeyEqualOperatorTest() {
-        TeNodeKey key1 = new TeNodeKey(providerId, clientId,
-                                       topologyId, teNodeId);
-        TeNodeKey key2 = new TeNodeKey(providerId, clientId,
-                                       topologyId, teNodeId);
-        TeNodeKey key3 = new TeNodeKey(providerId + 1, clientId,
-                                       topologyId, teNodeId);
-        TeNodeKey key4 = new TeNodeKey(providerId, clientId + 1,
-                                       topologyId, teNodeId);
-        TeNodeKey key5 = new TeNodeKey(providerId, clientId,
-                                       topologyId + 1, teNodeId);
-        TeNodeKey key6 = new TeNodeKey(providerId, clientId,
-                                       topologyId, teNodeId + 1);
-
-        assertTrue("Two matrix keys must be equal", key1.equals(key2));
-
-        assertFalse("Two matrix keys must be unequal", key1.equals(key3));
-        assertFalse("Two matrix keys must be unequal", key3.equals(key1));
-
-        assertFalse("Two matrix keys must be unequal", key1.equals(key4));
-        assertFalse("Two matrix keys must be unequal", key4.equals(key1));
-
-        assertFalse("Two matrix keys must be unequal", key1.equals(key5));
-        assertFalse("Two matrix keys must be unequal", key5.equals(key1));
-
-        assertFalse("Two matrix keys must be unequal", key1.equals(key6));
-        assertFalse("Two matrix keys must be unequal", key6.equals(key1));
-    }
-
-    @Test
-    public void ttpMatrixKeyEqualOperatorTest() {
-        TtpKey key1 = new TtpKey(providerId, clientId, topologyId,
-                                 teNodeId, ttpId);
-        TtpKey key2 = new TtpKey(providerId, clientId, topologyId,
-                                 teNodeId, ttpId);
-        TtpKey key3 = new TtpKey(providerId + 1, clientId, topologyId,
-                                 teNodeId, ttpId);
-        TtpKey key4 = new TtpKey(providerId, clientId + 1, topologyId,
-                                 teNodeId, ttpId);
-        TtpKey key5 = new TtpKey(providerId, clientId, topologyId + 1,
-                                 teNodeId, ttpId);
-        TtpKey key6 = new TtpKey(providerId, clientId, topologyId,
-                                 teNodeId + 1, ttpId);
-        TtpKey key7 = new TtpKey(providerId, clientId, topologyId,
-                                 teNodeId, ttpId + 1);
-
-        assertTrue("Two TTP keys must be equal", key1.equals(key2));
-
-        assertFalse("Two TTP keys must be unequal", key1.equals(key3));
-        assertFalse("Two TTP keys must be unequal", key3.equals(key1));
-
-        assertFalse("Two TTP keys must be unequal", key1.equals(key4));
-        assertFalse("Two TTP keys must be unequal", key4.equals(key1));
-
-        assertFalse("Two TTP keys must be unequal", key1.equals(key5));
-        assertFalse("Two TTP keys must be unequal", key5.equals(key1));
-
-        assertFalse("Two TTP keys must be unequal", key1.equals(key6));
-        assertFalse("Two TTP keys must be unequal", key6.equals(key1));
-
-        assertFalse("Two TTP keys must be unequal", key1.equals(key7));
-        assertFalse("Two TTP keys must be unequal", key7.equals(key1));
-    }
-
-}
diff --git a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/package-info.java b/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/package-info.java
deleted file mode 100644
index 928c96d..0000000
--- a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.
- */
-/**
- * The TE topology APis test functions.
- *
- */
-package org.onosproject.tetopology.manager.api;
diff --git a/apps/tetopology/app/BUILD b/apps/tetopology/app/BUILD
deleted file mode 100644
index d38ffbc..0000000
--- a/apps/tetopology/app/BUILD
+++ /dev/null
@@ -1,13 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + JACKSON + KRYO + [
-    "//apps/tetopology/api:onos-apps-tetopology-api",
-    "//core/store/serializers:onos-core-serializers",
-]
-
-TEST_DEPS = TEST_ADAPTERS + [
-    "//utils/osgi:onlab-osgi-tests",
-]
-
-osgi_jar_with_tests(
-    test_deps = TEST_DEPS,
-    deps = COMPILE_DEPS,
-)
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/DistributedTeTopologyStore.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/DistributedTeTopologyStore.java
deleted file mode 100644
index 4b37857..0000000
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/DistributedTeTopologyStore.java
+++ /dev/null
@@ -1,1424 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.impl;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.MapUtils;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.net.DeviceId;
-import org.onosproject.store.AbstractStore;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.AtomicCounter;
-import org.onosproject.store.service.ConsistentMap;
-import org.onosproject.store.service.MapEvent;
-import org.onosproject.store.service.MapEventListener;
-import org.onosproject.store.service.Serializer;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.tetopology.management.api.CommonTopologyData;
-import org.onosproject.tetopology.management.api.DefaultNetwork;
-import org.onosproject.tetopology.management.api.DefaultTeTopologies;
-import org.onosproject.tetopology.management.api.DefaultTeTopology;
-import org.onosproject.tetopology.management.api.EncodingType;
-import org.onosproject.tetopology.management.api.KeyId;
-import org.onosproject.tetopology.management.api.LongValue;
-import org.onosproject.tetopology.management.api.Network;
-import org.onosproject.tetopology.management.api.OptimizationType;
-import org.onosproject.tetopology.management.api.ProviderClientId;
-import org.onosproject.tetopology.management.api.SwitchingType;
-import org.onosproject.tetopology.management.api.TeConstants;
-import org.onosproject.tetopology.management.api.TeStatus;
-import org.onosproject.tetopology.management.api.TeTopologies;
-import org.onosproject.tetopology.management.api.TeTopology;
-import org.onosproject.tetopology.management.api.TeTopologyEvent;
-import org.onosproject.tetopology.management.api.TeTopologyEvent.Type;
-import org.onosproject.tetopology.management.api.TeTopologyId;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.TeUtils;
-import org.onosproject.tetopology.management.api.link.AsNumber;
-import org.onosproject.tetopology.management.api.link.CommonLinkData;
-import org.onosproject.tetopology.management.api.link.ConnectivityMatrixId;
-import org.onosproject.tetopology.management.api.link.DefaultNetworkLink;
-import org.onosproject.tetopology.management.api.link.DefaultTeLink;
-import org.onosproject.tetopology.management.api.link.ElementType;
-import org.onosproject.tetopology.management.api.link.ExternalLink;
-import org.onosproject.tetopology.management.api.link.Label;
-import org.onosproject.tetopology.management.api.link.LinkBandwidth;
-import org.onosproject.tetopology.management.api.link.NetworkLink;
-import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
-import org.onosproject.tetopology.management.api.link.OduResource;
-import org.onosproject.tetopology.management.api.link.PathElement;
-import org.onosproject.tetopology.management.api.link.TeIpv4;
-import org.onosproject.tetopology.management.api.link.TeIpv6;
-import org.onosproject.tetopology.management.api.link.TeLink;
-import org.onosproject.tetopology.management.api.link.TeLinkId;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.link.TeLinkTpKey;
-import org.onosproject.tetopology.management.api.link.TePathAttributes;
-import org.onosproject.tetopology.management.api.link.TunnelProtectionType;
-import org.onosproject.tetopology.management.api.link.UnderlayAbstractPath;
-import org.onosproject.tetopology.management.api.link.UnderlayBackupPath;
-import org.onosproject.tetopology.management.api.link.UnderlayPath;
-import org.onosproject.tetopology.management.api.link.UnderlayPrimaryPath;
-import org.onosproject.tetopology.management.api.link.UnnumberedLink;
-import org.onosproject.tetopology.management.api.node.CommonNodeData;
-import org.onosproject.tetopology.management.api.node.ConnectivityMatrix;
-import org.onosproject.tetopology.management.api.node.ConnectivityMatrixKey;
-import org.onosproject.tetopology.management.api.node.DefaultNetworkNode;
-import org.onosproject.tetopology.management.api.node.DefaultTeNode;
-import org.onosproject.tetopology.management.api.node.DefaultTerminationPoint;
-import org.onosproject.tetopology.management.api.node.DefaultTunnelTerminationPoint;
-import org.onosproject.tetopology.management.api.node.LocalLinkConnectivity;
-import org.onosproject.tetopology.management.api.node.NetworkNode;
-import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
-import org.onosproject.tetopology.management.api.node.NodeTpKey;
-import org.onosproject.tetopology.management.api.node.TeNode;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TerminationPoint;
-import org.onosproject.tetopology.management.api.node.TerminationPointKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-import org.onosproject.tetopology.management.api.node.TunnelTerminationPoint;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.BitSet;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-
-import static org.onosproject.tetopology.management.api.OptimizationType.NOT_OPTIMIZED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.LINK_ADDED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.LINK_REMOVED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.LINK_UPDATED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_ADDED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_REMOVED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_UPDATED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NODE_ADDED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NODE_REMOVED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NODE_UPDATED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_LINK_ADDED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_LINK_REMOVED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_LINK_UPDATED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_NODE_ADDED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_NODE_REMOVED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_NODE_UPDATED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_ADDED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_REMOVED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_UPDATED;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Implementation of the TE network store.
- */
-@Component(immediate = true, service = TeTopologyStore.class)
-public class DistributedTeTopologyStore
-    extends AbstractStore<TeTopologyEvent, TeTopologyStoreDelegate>
-    implements TeTopologyStore {
-    private static final String STORE_NAME = "TE_NETWORK_TOPOLOGY_STORE";
-    private static final String COUNTER_NAME = "TeTopology-TeTopologyId";
-    private static final String TETOPOLOGYKEY_INTERNALTETOPOLOGY = "TeTopologyKey-InternalTeTopology";
-    private static final String NETWORKID_NETWORK = "NetworkId-InternalNetwork";
-    private static final String TENODEKEY_INTERNALTENODE = "TeNodeKey-InternalTeNode";
-    private static final String CONNMATRIXKEY_CONNECTIVITYMATRIX = "ConnMatrixKey-ConnectivityMatrix";
-    private static final String NETWORKNODEKEY_INTERNALNETWORKNODE = "NetworkNodeKey-InternalNetworkNode";
-    private static final String TELINKGLOBALKEY_INTERNALTELINK = "TeLinkGlobalKey-InternalTeLink";
-    private static final String NETWORKLINKKEY_INTERNALNETWORKLINK = "NetworkLinkKey-InternalNetworkLink";
-    private static final String TPKEY_INTERNALTERMINATIONPOINT = "tpKey-InternalTerminationPoint";
-    private static final String TELINKTPGLOBALKEY_TERMINATIONPOINTKEY = "TeLinkGlobalKey-TerminationPointKey";
-    private static final String TTPKEY_TUNNELTERMINATIONPOINT = "TtpKey-TunnelTerminationPoint";
-    private final Logger log = getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-    // Track TE topologies by TE Topology key
-    private ConsistentMap<TeTopologyKey, InternalTeTopology> teTopologyConsistentMap;
-    private Map<TeTopologyKey, InternalTeTopology> teTopologyMap;
-    private AtomicCounter nextTeTopologyId;
-     // Listener for te topology events
-    private final MapEventListener<TeTopologyKey, InternalTeTopology> teTopologyListener =
-            new InternalTeTopologyListener();
-    // Track networks by network Id
-    private ConsistentMap<KeyId, InternalNetwork> networkConsistentMap;
-    private Map<KeyId, InternalNetwork> networkMap;
-    // Listener for network events
-    private final MapEventListener<KeyId, InternalNetwork> networkListener =
-            new InternalNetworkListener();
-    // Track TE nodes by TE node key
-    private ConsistentMap<TeNodeKey, InternalTeNode> teNodeConsistentMap;
-    private Map<TeNodeKey, InternalTeNode> teNodeMap;
-    // Track ConnectivityMatrix by its key
-    private ConsistentMap<ConnectivityMatrixKey, ConnectivityMatrix> connMatrixConsistentMap;
-    private Map<ConnectivityMatrixKey, ConnectivityMatrix> connMatrixMap;
-    // Track Tunnel Termination Points by its key
-    private ConsistentMap<TtpKey, TunnelTerminationPoint> ttpConsistentMap;
-    private Map<TtpKey, TunnelTerminationPoint> ttpMap;
-    // Listener for TE node events
-    private final MapEventListener<TeNodeKey, InternalTeNode> teNodeListener =
-            new InternalTeNodeListener();
-    // Track network nodes by network node key
-    private ConsistentMap<NetworkNodeKey, InternalNetworkNode> networkNodeConsistentMap;
-    private Map<NetworkNodeKey, InternalNetworkNode> networkNodeMap;
-    // Listener for network node events
-    private final MapEventListener<NetworkNodeKey, InternalNetworkNode> networkNodeListener =
-            new InternalNetworkNodeListener();
-    // Track TE links by its key
-    private ConsistentMap<TeLinkTpGlobalKey, InternalTeLink> teLinkConsistentMap;
-    private Map<TeLinkTpGlobalKey, InternalTeLink> teLinkMap;
-    // Listener for te link events
-    private final MapEventListener<TeLinkTpGlobalKey, InternalTeLink> teLinkListener =
-        new InternalTeLinkListener();
-    // Track network links by network link key
-    private ConsistentMap<NetworkLinkKey, InternalNetworkLink> networkLinkConsistentMap;
-    private Map<NetworkLinkKey, InternalNetworkLink> networkLinkMap;
-    // Listener for network link events
-    private final MapEventListener<NetworkLinkKey, InternalNetworkLink> networkLinkListener =
-            new InternalNetworkLinkListener();
-    // Track Termination points by termination point key
-    private ConsistentMap<TerminationPointKey, InternalTerminationPoint> tpConsistentMap;
-    private Map<TerminationPointKey, InternalTerminationPoint> tpMap;
-    // Track termination point keys by TE termination point Key
-    private ConsistentMap<TeLinkTpGlobalKey, TerminationPointKey> tpKeyConsistentMap;
-    private Map<TeLinkTpGlobalKey, TerminationPointKey> tpKeyMap;
-    private final BlockingQueue<TeTopologyMapEvent> mapEventQueue = new LinkedBlockingQueue<>();
-
-    private long providerId;
-    private static final Serializer TETOPOLOGY_SERIALIZER = Serializer
-            .using(new KryoNamespace.Builder().register(KryoNamespaces.API)
-                    .register(TeTopologyKey.class)
-                    .register(ProviderClientId.class)
-                    .register(TeNodeKey.class)
-                    .register(TeLinkTpGlobalKey.class)
-                    .register(CommonTopologyData.class)
-                    .register(KeyId.class)
-                    .register(OptimizationType.class)
-                    .register(InternalTeTopology.class)
-                    .register(InternalNetwork.class)
-                    .register(InternalTerminationPoint.class)
-                    .register(InternalTeNode.class)
-                    .register(InternalNetworkNode.class)
-                    .register(CommonNodeData.class)
-                    .register(ConnectivityMatrixKey.class)
-                    .register(ConnectivityMatrix.class)
-                    .register(TtpKey.class)
-                    .register(NetworkNodeKey.class)
-                    .register(TeStatus.class)
-                    .register(ElementType.class)
-                    .register(TeIpv4.class)
-                    .register(TeIpv6.class)
-                    .register(AsNumber.class)
-                    .register(Label.class)
-                    .register(UnnumberedLink.class)
-                    .register(TeLinkId.class)
-                    .register(ConnectivityMatrixId.class)
-                    .register(InternalTeLink.class)
-                    .register(InternalNetworkLink.class)
-                    .register(TeLinkTpKey.class)
-                    .register(NetworkLinkKey.class)
-                    .register(NodeTpKey.class)
-                    .register(CommonLinkData.class)
-                    .register(SwitchingType.class)
-                    .register(EncodingType.class)
-                    .register(ExternalLink.class)
-                    .register(UnderlayPath.class)
-                    .register(LinkBandwidth.class)
-                    .register(OduResource.class)
-                    .register(PathElement.class)
-                    .register(UnderlayAbstractPath.class)
-                    .register(UnderlayBackupPath.class)
-                    .register(UnderlayPrimaryPath.class)
-                    .register(TePathAttributes.class)
-                    .register(TerminationPoint.class)
-                    .register(TunnelTerminationPoint.class)
-                    .register(DefaultTunnelTerminationPoint.class)
-                    .register(TerminationPointKey.class)
-                    .register(TunnelProtectionType.class)
-                    .register(LongValue.class)
-                    .register(LocalLinkConnectivity.class)
-                    .build());
-
-    /**
-     * Distributed network store service activate method.
-     */
-    @Activate
-    public void activate() {
-        teTopologyConsistentMap = storageService
-                .<TeTopologyKey, InternalTeTopology>consistentMapBuilder()
-                .withSerializer(TETOPOLOGY_SERIALIZER)
-                .withName(TETOPOLOGYKEY_INTERNALTETOPOLOGY)
-                .withRelaxedReadConsistency()
-                .build();
-        teTopologyConsistentMap.addListener(teTopologyListener);
-        teTopologyMap = teTopologyConsistentMap.asJavaMap();
-        networkConsistentMap = storageService
-                .<KeyId, InternalNetwork>consistentMapBuilder()
-                .withSerializer(TETOPOLOGY_SERIALIZER)
-                .withName(NETWORKID_NETWORK)
-                .withRelaxedReadConsistency()
-                .build();
-        networkConsistentMap.addListener(networkListener);
-        networkMap = networkConsistentMap.asJavaMap();
-        teNodeConsistentMap = storageService
-                .<TeNodeKey, InternalTeNode>consistentMapBuilder()
-                .withSerializer(TETOPOLOGY_SERIALIZER)
-                .withName(TENODEKEY_INTERNALTENODE)
-                .withRelaxedReadConsistency()
-                .build();
-        teNodeConsistentMap.addListener(teNodeListener);
-        teNodeMap = teNodeConsistentMap.asJavaMap();
-        connMatrixConsistentMap = storageService
-                 .<ConnectivityMatrixKey, ConnectivityMatrix>consistentMapBuilder()
-                 .withSerializer(TETOPOLOGY_SERIALIZER)
-                 .withName(CONNMATRIXKEY_CONNECTIVITYMATRIX)
-                 .withRelaxedReadConsistency()
-                 .build();
-        connMatrixMap = connMatrixConsistentMap.asJavaMap();
-        networkNodeConsistentMap = storageService
-                 .<NetworkNodeKey, InternalNetworkNode>consistentMapBuilder()
-                 .withSerializer(TETOPOLOGY_SERIALIZER)
-                 .withName(NETWORKNODEKEY_INTERNALNETWORKNODE)
-                 .withRelaxedReadConsistency()
-                 .build();
-        networkNodeConsistentMap.addListener(networkNodeListener);
-        networkNodeMap = networkNodeConsistentMap.asJavaMap();
-        teLinkConsistentMap = storageService
-                 .<TeLinkTpGlobalKey, InternalTeLink>consistentMapBuilder()
-                 .withSerializer(TETOPOLOGY_SERIALIZER)
-                 .withName(TELINKGLOBALKEY_INTERNALTELINK)
-                 .withRelaxedReadConsistency()
-                 .build();
-        teLinkConsistentMap.addListener(teLinkListener);
-        teLinkMap = teLinkConsistentMap.asJavaMap();
-        networkLinkConsistentMap = storageService
-                 .<NetworkLinkKey, InternalNetworkLink>consistentMapBuilder()
-                 .withSerializer(TETOPOLOGY_SERIALIZER)
-                 .withName(NETWORKLINKKEY_INTERNALNETWORKLINK)
-                 .withRelaxedReadConsistency()
-                 .build();
-        networkLinkConsistentMap.addListener(networkLinkListener);
-        networkLinkMap = networkLinkConsistentMap.asJavaMap();
-        tpConsistentMap = storageService
-                 .<TerminationPointKey, InternalTerminationPoint>consistentMapBuilder()
-                 .withSerializer(TETOPOLOGY_SERIALIZER)
-                 .withName(TPKEY_INTERNALTERMINATIONPOINT)
-                 .withRelaxedReadConsistency()
-                 .build();
-        tpMap = tpConsistentMap.asJavaMap();
-        tpKeyConsistentMap = storageService
-                  .<TeLinkTpGlobalKey, TerminationPointKey>consistentMapBuilder()
-                  .withSerializer(TETOPOLOGY_SERIALIZER)
-                  .withName(TELINKTPGLOBALKEY_TERMINATIONPOINTKEY)
-                  .withRelaxedReadConsistency()
-                  .build();
-        tpKeyMap = tpKeyConsistentMap.asJavaMap();
-        ttpConsistentMap = storageService
-                  .<TtpKey, TunnelTerminationPoint>consistentMapBuilder()
-                  .withSerializer(TETOPOLOGY_SERIALIZER)
-                  .withName(TTPKEY_TUNNELTERMINATIONPOINT)
-                  .withRelaxedReadConsistency()
-                  .build();
-        ttpMap = ttpConsistentMap.asJavaMap();
-
-        nextTeTopologyId = storageService.getAtomicCounter(COUNTER_NAME);
-        log.info("Started");
-    }
-
-    /**
-     * Distributed network store service deactivate method.
-     */
-    @Deactivate
-    public void deactivate() {
-        teTopologyConsistentMap.removeListener(teTopologyListener);
-        teTopologyConsistentMap.destroy();
-        teTopologyMap.clear();
-        networkConsistentMap.removeListener(networkListener);
-        networkConsistentMap.destroy();
-        networkMap.clear();
-        teNodeConsistentMap.removeListener(teNodeListener);
-        teNodeConsistentMap.destroy();
-        teNodeMap.clear();
-        connMatrixConsistentMap.destroy();
-        connMatrixMap.clear();
-        networkNodeConsistentMap.destroy();
-        networkNodeConsistentMap.removeListener(networkNodeListener);
-        networkNodeMap.clear();
-        teLinkConsistentMap.removeListener(teLinkListener);
-        teLinkConsistentMap.destroy();
-        teLinkMap.clear();
-        networkLinkConsistentMap.destroy();
-        networkLinkConsistentMap.removeListener(networkLinkListener);
-        networkLinkMap.clear();
-        tpConsistentMap.destroy();
-        tpMap.clear();
-        tpKeyConsistentMap.destroy();
-        tpKeyMap.clear();
-        ttpConsistentMap.destroy();
-        ttpMap.clear();
-        mapEventQueue.clear();
-        log.info("Stopped");
-    }
-
-    /**
-     * Listener class to map listener map events to the TETOPOLOGY events.
-     */
-    private class InternalTeTopologyListener implements MapEventListener<TeTopologyKey, InternalTeTopology> {
-        @Override
-        public void event(MapEvent<TeTopologyKey, InternalTeTopology> event) {
-            Type type = null;
-            switch (event.type()) {
-            case INSERT:
-                type = TE_TOPOLOGY_ADDED;
-                break;
-            case UPDATE:
-                if (event.newValue().value().childUpdate()) {
-                    // Masked by the child events (e.g. Removal)
-                    break;
-                }
-                type = TE_TOPOLOGY_UPDATED;
-                break;
-            case REMOVE:
-                type = TE_TOPOLOGY_REMOVED;
-                break;
-            default:
-                log.error("Unsupported event type: {}", event.type());
-            }
-            if (type != null) {
-                TeTopologyMapEvent mapEvent = new TeTopologyMapEvent(type);
-                mapEvent.setTeTopologyKey(event.key());
-                try {
-                    mapEventQueue.put(mapEvent);
-                } catch (InterruptedException e) {
-                    log.warn("Unable to queue event {} ", mapEvent, e);
-                    Thread.currentThread().interrupt();
-                }
-            }
-        }
-    }
-
-    /**
-     * Listener class to map listener map events to the network events.
-     */
-    private class InternalNetworkListener implements MapEventListener<KeyId, InternalNetwork> {
-        @Override
-        public void event(MapEvent<KeyId, InternalNetwork> event) {
-            Type type = null;
-            switch (event.type()) {
-            case INSERT:
-                type = NETWORK_ADDED;
-                break;
-            case UPDATE:
-                if (event.newValue().value().childUpdate()) {
-                    // Masked by the child events (e.g. Removal)
-                    break;
-                }
-                type = NETWORK_UPDATED;
-                break;
-            case REMOVE:
-                type = NETWORK_REMOVED;
-                break;
-            default:
-                log.error("Unsupported event type: {}", event.type());
-            }
-            if (type != null) {
-                TeTopologyMapEvent mapEvent = new TeTopologyMapEvent(type);
-                mapEvent.setNetworkKey(event.key());
-                try {
-                    mapEventQueue.put(mapEvent);
-                } catch (InterruptedException e) {
-                    log.warn("Unable to queue event {} ", mapEvent, e);
-                    Thread.currentThread().interrupt();
-                }
-            }
-        }
-    }
-
-    /**
-     * Listener class to map listener map events to the TENODE events.
-     */
-    private class InternalTeNodeListener implements MapEventListener<TeNodeKey, InternalTeNode> {
-        @Override
-        public void event(MapEvent<TeNodeKey, InternalTeNode> event) {
-            Type type = null;
-            switch (event.type()) {
-            case INSERT:
-                if (event.newValue().value().parentUpdate()) {
-                    // Masked by the parent event (e.g. Add)
-                    break;
-                }
-                type = TE_NODE_ADDED;
-                break;
-            case UPDATE:
-                if (event.newValue().value().childUpdate() ||
-                        event.newValue().value().parentUpdate()) {
-                    // Masked by the child event (e.g. Removal) or parent event
-                    break;
-                }
-                type = TE_NODE_UPDATED;
-                break;
-            case REMOVE:
-                type = TE_NODE_REMOVED;
-                break;
-            default:
-                log.error("Unsupported event type: {}", event.type());
-            }
-            if (type != null) {
-                TeTopologyMapEvent mapEvent = new TeTopologyMapEvent(type);
-                mapEvent.setTeNodeKey(event.key());
-                try {
-                    mapEventQueue.put(mapEvent);
-                } catch (InterruptedException e) {
-                    log.warn("Unable to queue event {} ", mapEvent, e);
-                    Thread.currentThread().interrupt();
-                }
-            }
-        }
-    }
-
-    /**
-     * Listener class to map listener map events to the NETWORK NODE events.
-     */
-    private class InternalNetworkNodeListener implements MapEventListener<NetworkNodeKey, InternalNetworkNode> {
-        @Override
-        public void event(MapEvent<NetworkNodeKey, InternalNetworkNode> event) {
-            Type type = null;
-            switch (event.type()) {
-            case INSERT:
-                if (event.newValue().value().parentUpdate()) {
-                    // Masked by the parent event (e.g. Add)
-                    break;
-                }
-                type = NODE_ADDED;
-                break;
-            case UPDATE:
-                if (event.newValue().value().childUpdate() ||
-                        event.newValue().value().parentUpdate()) {
-                    // Masked by the child event (e.g. Removal) or parent event
-                    break;
-                }
-                type = NODE_UPDATED;
-                break;
-            case REMOVE:
-                type = NODE_REMOVED;
-                break;
-            default:
-                log.error("Unsupported event type: {}", event.type());
-            }
-            if (type != null) {
-                TeTopologyMapEvent mapEvent = new TeTopologyMapEvent(type);
-                mapEvent.setNetworkNodeKey(event.key());
-                try {
-                    mapEventQueue.put(mapEvent);
-                } catch (InterruptedException e) {
-                    log.warn("Unable to queue event {} ", mapEvent, e);
-                    Thread.currentThread().interrupt();
-                }
-            }
-        }
-    }
-
-    /**
-     * Listener class to map listener map events to the TELINK events.
-     */
-    private class InternalTeLinkListener implements MapEventListener<TeLinkTpGlobalKey, InternalTeLink> {
-        @Override
-        public void event(MapEvent<TeLinkTpGlobalKey, InternalTeLink> event) {
-            Type type = null;
-            switch (event.type()) {
-            case INSERT:
-                if (event.newValue().value().parentUpdate()) {
-                    // Masked by the parent event (e.g. Add)
-                    break;
-                }
-                type = TE_LINK_ADDED;
-                break;
-            case UPDATE:
-                if (event.newValue().value().parentUpdate()) {
-                    // Masked by parent event
-                    break;
-                }
-                type = TE_LINK_UPDATED;
-                break;
-            case REMOVE:
-                type = TE_LINK_REMOVED;
-                break;
-            default:
-                log.error("Unsupported event type: {}", event.type());
-            }
-            if (type != null) {
-                TeTopologyMapEvent mapEvent = new TeTopologyMapEvent(type);
-                mapEvent.setTeLinkKey(event.key());
-                try {
-                    mapEventQueue.put(mapEvent);
-                } catch (InterruptedException e) {
-                    log.warn("Unable to queue event {} ", mapEvent, e);
-                    Thread.currentThread().interrupt();
-                }
-            }
-        }
-    }
-
-    /**
-     * Listener class to map listener map events to the NETWORK LINK events.
-     */
-    private class InternalNetworkLinkListener implements MapEventListener<NetworkLinkKey, InternalNetworkLink> {
-        @Override
-        public void event(MapEvent<NetworkLinkKey, InternalNetworkLink> event) {
-            Type type = null;
-            switch (event.type()) {
-            case INSERT:
-                if (event.newValue().value().parentUpdate()) {
-                    // Masked by the parent event (e.g. Add)
-                    break;
-                }
-                type = LINK_ADDED;
-                break;
-            case UPDATE:
-                if (event.newValue().value().parentUpdate()) {
-                    // Masked by the child event (e.g. Removal) or parent event
-                    break;
-                }
-                type = LINK_UPDATED;
-                break;
-            case REMOVE:
-                type = LINK_REMOVED;
-                break;
-            default:
-                log.error("Unsupported event type: {}", event.type());
-            }
-            if (type != null) {
-                TeTopologyMapEvent mapEvent = new TeTopologyMapEvent(type);
-                mapEvent.setNetworkLinkKey(event.key());
-                try {
-                    mapEventQueue.put(mapEvent);
-                } catch (InterruptedException e) {
-                    log.warn("Unable to queue event {} ", mapEvent, e);
-                    Thread.currentThread().interrupt();
-                }
-            }
-        }
-    }
-
-    @Override
-    public TeTopologies teTopologies() {
-        Map<TeTopologyKey, TeTopology> teTopologies = Maps.newHashMap();
-        if (MapUtils.isNotEmpty(teTopologyMap)) {
-            for (TeTopologyKey key  : teTopologyMap.keySet()) {
-                teTopologies.put(key, teTopology(key));
-            }
-        }
-        return new DefaultTeTopologies(STORE_NAME, teTopologies);
-    }
-
-    private TeTopology teTopology(TeTopologyKey topologyId,
-                                  InternalTeTopology intTopology) {
-        if (intTopology == null) {
-            return null;
-        }
-        Map<Long, TeNode> teNodes = null;
-        if (CollectionUtils.isNotEmpty(intTopology.teNodeKeys())) {
-            teNodes = Maps.newHashMap();
-            for (TeNodeKey key : intTopology.teNodeKeys()) {
-                teNodes.put(key.teNodeId(), teNode(key));
-            }
-        }
-        Map<TeLinkTpKey, TeLink> teLinks = null;
-        if (CollectionUtils.isNotEmpty(intTopology.teLinkKeys())) {
-            teLinks = Maps.newHashMap();
-            for (TeLinkTpGlobalKey key : intTopology.teLinkKeys()) {
-                teLinks.put(key.teLinkTpKey(), teLink(key));
-            }
-        }
-        return new DefaultTeTopology(topologyId, teNodes, teLinks,
-                intTopology.teTopologyId(), intTopology.topologyData());
-    }
-
-    @Override
-    public TeTopology teTopology(TeTopologyKey topologyId) {
-        InternalTeTopology intTopology = teTopologyMap.get(topologyId);
-        return teTopology(topologyId, intTopology);
-    }
-
-    private void removeTopologyeMapEntrys(InternalTeTopology curTopology) {
-        // Remove TE nodes
-        if (CollectionUtils.isNotEmpty(curTopology.teNodeKeys())) {
-            for (TeNodeKey key : curTopology.teNodeKeys()) {
-                removeTeNode(key, true);
-            }
-        }
-        // Remove TE Links
-        if (CollectionUtils.isNotEmpty(curTopology.teLinkKeys())) {
-            for (TeLinkTpGlobalKey key : curTopology.teLinkKeys()) {
-                removeTeLink(key, true);
-            }
-        }
-    }
-
-    @Override
-    public void updateTeTopology(TeTopology teTopology) {
-        InternalTeTopology curTopology = teTopologyMap.get(teTopology.teTopologyId());
-        // Update TE nodes
-        List<NetworkNodeKey> nodeIds = null;
-        if (MapUtils.isNotEmpty(teTopology.teNodes())) {
-            nodeIds = Lists.newArrayList();
-            for (Map.Entry<Long, TeNode> entry : teTopology.teNodes().entrySet()) {
-                TeNodeKey teNodeKey = new TeNodeKey(teTopology.teTopologyId(), entry.getKey());
-                NetworkNodeKey nodeKey = TeMgrUtil.networkNodeKey(teNodeKey);
-                updateTeNode(teNodeKey, entry.getValue(), true, true, nodeKey);
-                nodeIds.add(nodeKey);
-            }
-        }
-        // Update TE links
-        List<NetworkLinkKey> linkIds = null;
-        if (MapUtils.isNotEmpty(teTopology.teLinks())) {
-            linkIds = Lists.newArrayList();
-            for (Map.Entry<TeLinkTpKey, TeLink> entry : teTopology.teLinks().entrySet()) {
-                TeLinkTpGlobalKey teLinkKey = new TeLinkTpGlobalKey(teTopology.teTopologyId(),
-                        entry.getKey());
-                NetworkLinkKey linkKey = TeMgrUtil.networkLinkKey(teLinkKey);
-                updateTeLink(teLinkKey, entry.getValue(), true, true, linkKey);
-                linkIds.add(linkKey);
-            }
-        }
-        // Finally Update teTopologyMap
-        InternalTeTopology newTopology = new InternalTeTopology(teTopology);
-        teTopologyMap.put(teTopology.teTopologyId(), newTopology);
-
-        if (curTopology == null) {
-            // New topology, update networkMap
-            InternalNetwork intNetwork = new InternalNetwork();
-            intNetwork.setServerProvided(false);
-            intNetwork.setTeTopologyKey(teTopology.teTopologyId());
-            intNetwork.setNodeIds(nodeIds);
-            intNetwork.setLinkIds(linkIds);
-            networkMap.put(teTopology.networkId(), intNetwork);
-        }
-    }
-
-    @Override
-    public void removeTeTopology(TeTopologyKey topologyId) {
-        // Remove it from teTopologyMap
-        InternalTeTopology topology = teTopologyMap.remove(topologyId);
-        if (topology != null) {
-            removeTopologyeMapEntrys(topology);
-            // Remove it from networkMap;
-            networkMap.remove(topology.topologyData().networkId());
-        }
-    }
-
-    @Override
-    public List<Network> networks() {
-        if (MapUtils.isEmpty(networkMap)) {
-            return null;
-        }
-        List<Network> networks = Lists.newArrayList();
-        for (KeyId networkId : networkMap.keySet()) {
-            networks.add(network(networkId));
-        }
-        return networks;
-    }
-
-    private Network network(KeyId networkId, InternalNetwork curNetwork) {
-        if (curNetwork == null) {
-            return null;
-        }
-        List<KeyId> supportingNetworkIds = curNetwork.supportingNetworkIds();
-        Map<KeyId, NetworkNode> nodes = null;
-        if (CollectionUtils.isNotEmpty(curNetwork.nodeIds())) {
-            nodes = Maps.newHashMap();
-            for (NetworkNodeKey key : curNetwork.nodeIds()) {
-                nodes.put(key.nodeId(), networkNode(key));
-            }
-        }
-        Map<KeyId, NetworkLink> links = null;
-        if (CollectionUtils.isNotEmpty(curNetwork.linkIds())) {
-            links = Maps.newHashMap();
-            for (NetworkLinkKey key : curNetwork.linkIds()) {
-                links.put(key.linkId(), networkLink(key));
-            }
-        }
-        TeTopologyId topologyId = null;
-        DeviceId ownerId = null;
-        OptimizationType opt = NOT_OPTIMIZED;
-        if (curNetwork.teTopologyKey() != null &&
-                teTopologyMap.get(curNetwork.teTopologyKey()) != null) {
-            topologyId = new TeTopologyId(curNetwork.teTopologyKey().providerId(),
-                                          curNetwork.teTopologyKey().clientId(),
-                                          teTopologyMap.get(curNetwork.teTopologyKey())
-                                                  .teTopologyId());
-            ownerId = teTopologyMap.get(curNetwork.teTopologyKey())
-                    .topologyData().ownerId();
-            opt = teTopologyMap.get(curNetwork.teTopologyKey()).topologyData().optimization();
-        }
-        return new DefaultNetwork(networkId, supportingNetworkIds, nodes, links,
-                                  topologyId, curNetwork.serverProvided(), ownerId, opt);
-    }
-
-    @Override
-    public Network network(KeyId networkId) {
-        InternalNetwork curNetwork = networkMap.get(networkId);
-        return network(networkId, curNetwork);
-    }
-
-    private void removeNetworkMapEntrys(InternalNetwork curNetwork, boolean teRemove) {
-        // Remove TE nodes
-        if (CollectionUtils.isNotEmpty(curNetwork.nodeIds())) {
-            for (NetworkNodeKey key : curNetwork.nodeIds()) {
-                removeNetworkNode(key, teRemove);
-            }
-        }
-        // Remove TE Links
-        if (CollectionUtils.isNotEmpty(curNetwork.linkIds())) {
-            for (NetworkLinkKey key : curNetwork.linkIds()) {
-                removeNetworkLink(key, teRemove);
-            }
-        }
-    }
-
-    private TeTopologyKey newTeTopologyKey(TeTopologyId teTopologyId) {
-        long idValue;
-        try {
-            idValue = Long.parseLong(teTopologyId.topologyId());
-        } catch (NumberFormatException e) {
-            // Can't get the long value from the string.
-            // Use an assigned id value from local id pool,
-            // Ideally id should be assigned per provider base.
-            idValue = nextTeTopologyId();
-        }
-        return new TeTopologyKey(teTopologyId.providerId(), teTopologyId.clientId(), idValue);
-    }
-
-    @Override
-    public void updateNetwork(Network network) {
-        log.debug("updateNetwork {}", network);
-        InternalNetwork curNetwork = networkMap.get(network.networkId());
-        TeTopologyKey topoKey = null;
-        if (network.teTopologyId() != null) {
-            topoKey = newTeTopologyKey(network.teTopologyId());
-        }
-        // Update TE nodes
-        List<TeNodeKey> teNodeKeys = null;
-        if (MapUtils.isNotEmpty(network.nodes())) {
-            teNodeKeys = Lists.newArrayList();
-            for (Map.Entry<KeyId, NetworkNode> entry : network.nodes().entrySet()) {
-                NetworkNodeKey nodeKey = new NetworkNodeKey(network.networkId(), entry.getKey());
-                TeNodeKey teNodeKey = null;
-                if (topoKey != null && entry.getValue().teNode() != null) {
-                    teNodeKey = new TeNodeKey(topoKey, entry.getValue().teNode().teNodeId());
-                }
-                updateNetworkNode(nodeKey, entry.getValue(), true, false, teNodeKey);
-                teNodeKeys.add(teNodeKey);
-            }
-        }
-        // Update TE links
-        List<TeLinkTpGlobalKey> teLinkKeys = null;
-        if (MapUtils.isNotEmpty(network.links())) {
-            teLinkKeys = Lists.newArrayList();
-            for (Map.Entry<KeyId, NetworkLink> entry : network.links().entrySet()) {
-                NetworkLinkKey linkKey = new NetworkLinkKey(network.networkId(), entry.getKey());
-                TeLinkTpGlobalKey teLinkKey = null;
-                if (topoKey != null && entry.getValue().teLink() != null) {
-                    teLinkKey = new TeLinkTpGlobalKey(topoKey, entry.getValue().teLink().teLinkKey());
-                }
-                updateNetworkLink(linkKey, entry.getValue(), true, false, teLinkKey);
-                teLinkKeys.add(teLinkKey);
-            }
-        }
-
-        // New network, update TE Topology first
-        if (curNetwork == null) {
-            InternalTeTopology intTopo = new InternalTeTopology(network.teTopologyId().topologyId());
-            intTopo.setTeNodeKeys(teNodeKeys);
-            intTopo.setTeLinkKeys(teLinkKeys);
-            BitSet flags = new BitSet(TeConstants.FLAG_MAX_BITS);
-            flags.set(TeTopology.BIT_LEARNT);
-            if (network.teTopologyId().clientId() == providerId) {
-                // Hard rule for now
-                flags.set(TeTopology.BIT_CUSTOMIZED);
-            }
-            CommonTopologyData common = new CommonTopologyData(network.networkId(),
-                                                               network.optimization(),
-                                                               flags,
-                                                               network.ownerId());
-            intTopo.setTopologydata(common);
-            teTopologyMap.put(topoKey, intTopo);
-        }
-        // Finally Update networkMap
-        InternalNetwork newNetwork = new InternalNetwork(network);
-        newNetwork.setTeTopologyKey(topoKey);
-        networkMap.put(network.networkId(), newNetwork);
-    }
-
-    @Override
-    public void removeNetwork(KeyId networkId) {
-        // Remove it from networkMap
-        InternalNetwork network = networkMap.remove(networkId);
-        if (network != null && network.teTopologyKey() != null) {
-            removeNetworkMapEntrys(network, false);
-            teTopologyMap.remove(network.teTopologyKey());
-        }
-    }
-
-    private TeNode teNode(TeNodeKey nodeKey, InternalTeNode intNode) {
-        if (intNode == null) {
-            return null;
-        }
-        Map<Long, ConnectivityMatrix> connMatrices = null;
-        if (CollectionUtils.isNotEmpty(intNode.connMatrixKeys())) {
-            connMatrices = Maps.newHashMap();
-            for (ConnectivityMatrixKey key : intNode.connMatrixKeys()) {
-                connMatrices.put(key.entryId(), connMatrixMap.get(key));
-            }
-        }
-        List<Long> teLinkIds = null;
-        if (CollectionUtils.isNotEmpty(intNode.teLinkTpKeys())) {
-            teLinkIds = Lists.newArrayList();
-            for (TeLinkTpGlobalKey key : intNode.teLinkTpKeys()) {
-                teLinkIds = TeUtils.addListElement(teLinkIds, key.teLinkTpId());
-            }
-        }
-        List<Long> tps = null;
-        if (CollectionUtils.isNotEmpty(intNode.teTpKeys())) {
-            tps = Lists.newArrayList();
-            for (TeLinkTpGlobalKey key : intNode.teTpKeys()) {
-                tps = TeUtils.addListElement(tps, key.teLinkTpId());
-            }
-        }
-        Map<Long, TunnelTerminationPoint> ttps = null;
-        if (CollectionUtils.isNotEmpty(intNode.ttpKeys())) {
-            ttps = Maps.newHashMap();
-            for (TtpKey key : intNode.ttpKeys()) {
-                ttps.put(key.ttpId(), ttpMap.get(key));
-            }
-        }
-        return new DefaultTeNode(nodeKey.teNodeId(),
-                intNode.underlayTopologyKey(),
-                intNode.supportNodeKey(),
-                intNode.sourceTeNodeKey(),
-                intNode.teData(),
-                connMatrices, teLinkIds, ttps, tps);
-    }
-
-    @Override
-    public TeNode teNode(TeNodeKey nodeKey) {
-        InternalTeNode intNode = teNodeMap.get(nodeKey);
-        return teNode(nodeKey, intNode);
-    }
-
-    private void removeTeNodeMapEntrys(InternalTeNode intNode) {
-        // Remove connMatrixMap entries for the node
-        if (CollectionUtils.isNotEmpty(intNode.connMatrixKeys())) {
-            for (ConnectivityMatrixKey key : intNode.connMatrixKeys()) {
-                connMatrixMap.remove(key);
-            }
-        }
-        // Remove ttpMap entries for the node
-        if (CollectionUtils.isNotEmpty(intNode.ttpKeys())) {
-            for (TtpKey key : intNode.ttpKeys()) {
-                ttpMap.remove(key);
-            }
-        }
-    }
-
-    private void updateTeNode(TeNodeKey nodeKey, TeNode node, boolean parentUpdate,
-            boolean teNodeUpdate, NetworkNodeKey networkNodeKey) {
-        InternalTeTopology intTopo = teTopologyMap.get(nodeKey.teTopologyKey());
-        if (intTopo == null && !parentUpdate) {
-            log.error("TE Topology is not in dataStore for nodeUpdate {}", nodeKey);
-            return;
-        }
-        InternalTeNode curNode = teNodeMap.get(nodeKey);
-        // Update connMatrixMap
-        if (MapUtils.isNotEmpty(node.connectivityMatrices())) {
-            for (Map.Entry<Long, ConnectivityMatrix> entry : node.connectivityMatrices().entrySet()) {
-                connMatrixMap.put(new ConnectivityMatrixKey(nodeKey, entry.getKey()),
-                        entry.getValue());
-            }
-        }
-        // Update ttpMap
-        if (MapUtils.isNotEmpty(node.tunnelTerminationPoints())) {
-            for (Map.Entry<Long, TunnelTerminationPoint> entry : node.tunnelTerminationPoints().entrySet()) {
-                ttpMap.put(new TtpKey(nodeKey, entry.getKey()), entry.getValue());
-            }
-        }
-        // Update teNodeMap
-        InternalTeNode intNode = new InternalTeNode(nodeKey, node, networkNodeKey, parentUpdate);
-        teNodeMap.put(nodeKey, intNode);
-        if (curNode == null && !parentUpdate && intTopo != null) {
-            // Update InternalTeTopology
-           intTopo.setChildUpdate(true);
-           TeUtils.addListElement(intTopo.teNodeKeys(), nodeKey);
-        }
-        // Update networkNodeMap
-        if (teNodeUpdate) {
-            updateNetworkNode(networkNodeKey, networkNode(node), parentUpdate,
-                    teNodeUpdate, nodeKey);
-        }
-    }
-
-    private NetworkNode networkNode(TeNode node) {
-        KeyId nodeId = KeyId.keyId(Long.toString(node.teNodeId()));
-        List<NetworkNodeKey> supportingNodeIds = null;
-        if (node.supportingTeNodeId() != null) {
-            supportingNodeIds = Lists.newArrayList();
-            supportingNodeIds.add(new NetworkNodeKey(
-                    TeMgrUtil.toNetworkId((node.supportingTeNodeId().teTopologyKey())),
-                    KeyId.keyId(Long.toString(node.supportingTeNodeId().teNodeId()))));
-        }
-        Map<KeyId, TerminationPoint> tps = null;
-        if (node.teTerminationPointIds() != null) {
-            tps = Maps.newHashMap();
-            for (Long teTpId : node.teTerminationPointIds()) {
-                tps.put(KeyId.keyId(Long.toString(teTpId)),
-                        new DefaultTerminationPoint(KeyId.keyId(Long.toString(teTpId)),
-                                null, teTpId));
-            }
-        }
-        return new DefaultNetworkNode(nodeId, supportingNodeIds, node, tps);
-    }
-
-    @Override
-    public void updateTeNode(TeNodeKey nodeKey, TeNode node) {
-        updateTeNode(nodeKey, node, false, true, TeMgrUtil.networkNodeKey(nodeKey));
-    }
-
-    private void removeTeNode(TeNodeKey nodeKey, boolean teNodeRemove) {
-        // Remove it from InternalTeTopology first
-        InternalTeTopology intTopo = teTopologyMap.get(nodeKey.teTopologyKey());
-        if (intTopo != null && CollectionUtils.isNotEmpty(intTopo.teNodeKeys())) {
-            intTopo.setChildUpdate(true);
-            intTopo.teNodeKeys().remove(nodeKey);
-        }
-        // Then remove it from teNodeMap
-        InternalTeNode node = teNodeMap.remove(nodeKey);
-
-        if (node == null) {
-            log.error("No node found for nodeKey {}", nodeKey);
-            return;
-        }
-
-        removeTeNodeMapEntrys(node);
-        // Remove it from networkNodeMap
-        if (teNodeRemove && node != null) {
-            removeNetworkNode(node.networkNodeKey(), teNodeRemove);
-        }
-    }
-
-    @Override
-    public void removeTeNode(TeNodeKey nodeKey) {
-        removeTeNode(nodeKey, true);
-    }
-
-    private NetworkNode networkNode(NetworkNodeKey nodeKey, InternalNetworkNode intNode) {
-        if (intNode == null) {
-            return null;
-        }
-        Map<KeyId, TerminationPoint> tps = Maps.newHashMap();
-        for (KeyId tpId : intNode.tpIds()) {
-            tps.put(tpId, terminationPoint(
-                    new TerminationPointKey(nodeKey, tpId)));
-
-        }
-        return new DefaultNetworkNode(nodeKey.nodeId(), intNode.supportingNodeIds(),
-                teNode(intNode.teNodeKey()), tps);
-    }
-
-    @Override
-    public NetworkNode networkNode(NetworkNodeKey nodeKey) {
-        InternalNetworkNode intNode = networkNodeMap.get(nodeKey);
-        return networkNode(nodeKey, intNode);
-    }
-
-    private void updateNetworkNode(NetworkNodeKey nodeKey, NetworkNode node,
-            boolean parentUpdate, boolean teNodeUpdate, TeNodeKey teNodeKey) {
-        InternalNetwork intNework = null;
-        if (!parentUpdate) {
-            intNework = networkMap.get(nodeKey.networkId());
-            if (intNework == null) {
-                log.error("Network is not in dataStore for nodeUpdate {}", nodeKey);
-                return;
-            }
-        }
-
-        InternalNetworkNode exNode = networkNodeMap.get(nodeKey);
-        if (exNode != null && CollectionUtils.isNotEmpty(exNode.tpIds())) {
-            // Remove the TerminationPoints first
-            for (KeyId tpId : exNode.tpIds()) {
-                removeTerminationPoint(new TerminationPointKey(nodeKey, tpId));
-            }
-        }
-
-        if (MapUtils.isNotEmpty(node.terminationPoints())) {
-            // Update with new TerminationPoints
-            for (Map.Entry<KeyId, TerminationPoint> entry : node.terminationPoints().entrySet()) {
-                updateTerminationPoint(new TerminationPointKey(nodeKey, entry.getKey()),
-                        entry.getValue(), parentUpdate, teNodeKey);
-            }
-        }
-
-        // Update teNodeMap first
-        if (!teNodeUpdate && teNodeKey != null && node.teNode() != null) {
-            updateTeNode(teNodeKey, node.teNode(), parentUpdate, teNodeUpdate, nodeKey);
-        }
-        // Update networkNodeMap
-        InternalNetworkNode intNode = new InternalNetworkNode(node, parentUpdate);
-        intNode.setTeNodeKey(teNodeKey);
-        networkNodeMap.put(nodeKey, intNode);
-        if (exNode == null && !parentUpdate && intNework != null) {
-            // Update the InternalNetwork
-            intNework.setChildUpdate(true);
-            TeUtils.addListElement(intNework.nodeIds(), nodeKey);
-        }
-    }
-
-    @Override
-    public void updateNetworkNode(NetworkNodeKey nodeKey, NetworkNode node) {
-        TeNodeKey teNodeKey = null;
-        if (node.teNode() != null) {
-            teNodeKey = new TeNodeKey(networkMap.get(nodeKey.networkId()).teTopologyKey(),
-                                      node.teNode().teNodeId());
-        }
-        updateNetworkNode(nodeKey, node, false, false, teNodeKey);
-    }
-
-    private void removeNetworkNode(NetworkNodeKey nodeKey, boolean teNodeRemove) {
-        // Update the InternalNetwork
-        InternalNetwork intNework = networkMap.get(nodeKey.networkId());
-        if (intNework != null && CollectionUtils.isNotEmpty(intNework.nodeIds())) {
-            intNework.setChildUpdate(true);
-            intNework.nodeIds().remove(nodeKey);
-        }
-        InternalNetworkNode intNode = networkNodeMap.remove(nodeKey);
-        if (intNode != null && CollectionUtils.isNotEmpty(intNode.tpIds())) {
-            // Remove the TerminationPoints first
-            for (KeyId tpId : intNode.tpIds()) {
-                removeTerminationPoint(new TerminationPointKey(nodeKey, tpId));
-            }
-        }
-        if (!teNodeRemove && intNode != null) {
-            // Now remove it from teNodeMap
-            removeTeNode(intNode.teNodeKey(), teNodeRemove);
-        }
-    }
-
-    @Override
-    public void removeNetworkNode(NetworkNodeKey nodeKey) {
-        removeNetworkNode(nodeKey, false);
-    }
-
-    private TeLink teLink(TeLinkTpGlobalKey linkKey, InternalTeLink intLink) {
-        if (intLink == null) {
-            return null;
-        }
-        return new DefaultTeLink(linkKey.teLinkTpKey(),
-                intLink.peerTeLinkKey(),
-                intLink.underlayTopologyKey(),
-                intLink.supportingLinkKey(),
-                intLink.sourceTeLinkKey(),
-                intLink.teData());
-    }
-
-    @Override
-    public TeLink teLink(TeLinkTpGlobalKey linkKey) {
-        InternalTeLink intLink = teLinkMap.get(linkKey);
-        return teLink(linkKey, intLink);
-    }
-
-    private void updateTeLink(TeLinkTpGlobalKey linkKey, TeLink link,
-            boolean parentUpdate, boolean teLinkUpdate, NetworkLinkKey networkLinkKey) {
-        InternalTeTopology intTopo = teTopologyMap.get(linkKey.teTopologyKey());
-        if (intTopo == null && !parentUpdate) {
-            log.error("TE Topology is not in dataStore for linkUpdate {}", linkKey);
-            return;
-        }
-        InternalTeNode intNode = teNodeMap.get(linkKey.teNodeKey());
-        if (intNode == null && !parentUpdate) {
-            log.error("TE node is not in dataStore for linkUpdate {}", linkKey);
-            return;
-        }
-        InternalTeLink exLink = teLinkMap.get(linkKey);
-
-        // Update teLinkMap
-        InternalTeLink intLink = new InternalTeLink(link, parentUpdate);
-        intLink.setNetworkLinkKey(networkLinkKey);
-        teLinkMap.put(linkKey, intLink);
-        if (exLink == null && !parentUpdate) {
-            if (intTopo != null) {
-                // Update the InternalTeTopology
-                intTopo.setChildUpdate(true);
-                intTopo.setTeLinkKeys(TeUtils.addListElement(intTopo.teLinkKeys(), linkKey));
-            }
-            if (intNode != null) {
-                // Update the InternalNode
-                intNode.setChildUpdate(true);
-                intNode.setTeLinkTpKeys(TeUtils.addListElement(intNode.teLinkTpKeys(), linkKey));
-            }
-        }
-
-        // Update networkLinkMap
-        if (teLinkUpdate) {
-            updateNetworkLink(networkLinkKey, networkLink(link), parentUpdate,
-                    teLinkUpdate, linkKey);
-        }
-    }
-
-    private NetworkLink networkLink(TeLink link) {
-        KeyId linkId = TeMgrUtil.toNetworkLinkId(link.teLinkKey());
-        NodeTpKey source = null;
-        if (link.teLinkKey() != null) {
-            source = new NodeTpKey(KeyId.keyId(Long.toString(link.teLinkKey().teNodeId())),
-                                   KeyId.keyId(Long.toString(link.teLinkKey().teLinkTpId())));
-        }
-        NodeTpKey dest = null;
-        if (link.peerTeLinkKey() != null) {
-            dest = new NodeTpKey(KeyId.keyId(Long.toString(link.peerTeLinkKey().teNodeId())),
-                    KeyId.keyId(Long.toString(link.peerTeLinkKey().teLinkTpId())));
-        }
-        List<NetworkLinkKey> supportingLinkIds = null;
-        if (link.supportingTeLinkId() != null) {
-            supportingLinkIds = Lists.newArrayList();
-            supportingLinkIds.add(new NetworkLinkKey(
-                    TeMgrUtil.toNetworkId(link.supportingTeLinkId().teTopologyKey()),
-                    TeMgrUtil.toNetworkLinkId(link.supportingTeLinkId().teLinkTpKey())));
-        }
-        return new DefaultNetworkLink(linkId, source, dest, supportingLinkIds, link);
-    }
-
-    @Override
-    public void updateTeLink(TeLinkTpGlobalKey linkKey, TeLink link) {
-        updateTeLink(linkKey, link, false, true, TeMgrUtil.networkLinkKey(linkKey));
-    }
-
-    private void removeTeLink(TeLinkTpGlobalKey linkKey, boolean teLinkRemove) {
-        // Remove it from InternalTeTopology first
-        InternalTeTopology intTopo = teTopologyMap.get(linkKey.teTopologyKey());
-        if (intTopo != null && CollectionUtils.isNotEmpty(intTopo.teLinkKeys())) {
-           intTopo.setChildUpdate(true);
-           intTopo.teLinkKeys().remove(linkKey);
-        }
-        // Remove it from InternalTeNode
-        InternalTeNode intNode = teNodeMap.get(linkKey.teNodeKey());
-        if (intNode != null && CollectionUtils.isNotEmpty(intNode.teLinkTpKeys())) {
-            intNode.setChildUpdate(true);
-            intNode.teLinkTpKeys().remove(linkKey);
-        }
-        // Then remove it from teLinkMap
-        InternalTeLink link = teLinkMap.remove(linkKey);
-        if (teLinkRemove && link != null) {
-            // Remove it from networkLinkMap
-            removeNetworkLink(link.networkLinkKey(), teLinkRemove);
-        }
-     }
-
-    @Override
-    public void removeTeLink(TeLinkTpGlobalKey linkKey) {
-        removeTeLink(linkKey, true);
-    }
-
-    private NetworkLink networkLink(NetworkLinkKey linkKey, InternalNetworkLink intLink) {
-        if (intLink == null) {
-            return null;
-        }
-        return new DefaultNetworkLink(linkKey.linkId(), intLink.source(),
-                intLink.destination(), intLink.supportingLinkIds(), teLink(intLink.teLinkKey()));
-    }
-
-    @Override
-    public NetworkLink networkLink(NetworkLinkKey linkKey) {
-        InternalNetworkLink intLink = networkLinkMap.get(linkKey);
-        return networkLink(linkKey, intLink);
-    }
-
-    private void updateNetworkLink(NetworkLinkKey linkKey, NetworkLink link,
-            boolean parentUpdate, boolean teLinkUpdate, TeLinkTpGlobalKey teLinkKey) {
-        InternalNetwork intNework = null;
-        if (!parentUpdate) {
-            intNework = networkMap.get(linkKey.networkId());
-            if (intNework == null) {
-                log.error("Network is not in dataStore for linkUpdate {}", linkKey);
-                return;
-            }
-        }
-
-        InternalNetworkLink exLink = networkLinkMap.get(linkKey);
-
-        // Now update teLinkMap first
-        if (!teLinkUpdate && teLinkKey != null) {
-            updateTeLink(teLinkKey, link.teLink(), parentUpdate, teLinkUpdate, linkKey);
-        }
-        // Update networkLinkMap
-        InternalNetworkLink intLink = new InternalNetworkLink(link, parentUpdate);
-        intLink.setTeLinkKey(teLinkKey);
-        networkLinkMap.put(linkKey, intLink);
-        if (exLink == null && !parentUpdate && intNework != null) {
-            // Update the InternalNetwork
-            intNework.setChildUpdate(true);
-            TeUtils.addListElement(intNework.linkIds(), linkKey);
-        }
-    }
-
-    @Override
-    public void updateNetworkLink(NetworkLinkKey linkKey, NetworkLink link) {
-        TeLinkTpGlobalKey teLinkKey = null;
-        if (link.teLink() != null) {
-            teLinkKey = new TeLinkTpGlobalKey(networkMap.get(linkKey.networkId()).teTopologyKey(),
-                                              link.teLink().teLinkKey());
-        }
-
-        updateNetworkLink(linkKey, link, false, false, teLinkKey);
-    }
-
-    private void removeNetworkLink(NetworkLinkKey linkKey, boolean teLinkRemove) {
-        // Update the InternalNetwork
-        InternalNetwork intNework = networkMap.get(linkKey.networkId());
-        if (intNework != null && CollectionUtils.isNotEmpty(intNework.linkIds())) {
-            intNework.setChildUpdate(true);
-            intNework.linkIds().remove(linkKey);
-        }
-        // Remove it from networkLinkMap
-        InternalNetworkLink intLink = networkLinkMap.remove(linkKey);
-        if (!teLinkRemove && intLink != null && intLink.teLinkKey() != null) {
-            // Now remove it from teLinkMap
-            removeTeLink(intLink.teLinkKey(), teLinkRemove);
-        }
-    }
-
-    @Override
-    public void removeNetworkLink(NetworkLinkKey linkKey) {
-        removeNetworkLink(linkKey, false);
-    }
-
-    private TerminationPoint terminationPoint(TerminationPointKey tpKey) {
-        InternalTerminationPoint intTp = tpMap.get(tpKey);
-        if (intTp == null) {
-            return null;
-        }
-        return new DefaultTerminationPoint(tpKey.tpId(), intTp.supportingTpIds(),
-                intTp.teTpKey().teLinkTpId());
-    }
-
-    private void updateTerminationPoint(TerminationPointKey tpKey,
-            TerminationPoint tp, boolean parentUpdate, TeNodeKey teNodeKey) {
-        TeNodeKey myTeNodeKey;
-        InternalNetworkNode intNode = null;
-        if (!parentUpdate) {
-            intNode = networkNodeMap.get(tpKey);
-            if (intNode == null) {
-                log.error(" node is not in dataStore for tp update {}", tpKey);
-                return;
-            }
-            myTeNodeKey = intNode.teNodeKey();
-        } else {
-            myTeNodeKey = teNodeKey;
-        }
-        TeLinkTpGlobalKey teTpKey = new TeLinkTpGlobalKey(myTeNodeKey, tp.teTpId());
-
-        boolean newTp = tpMap.get(tpKey) == null;
-        InternalTerminationPoint intTp = new InternalTerminationPoint(tp);
-        intTp.setTeTpKey(teTpKey);
-        tpMap.put(tpKey, intTp);
-        if (newTp) {
-            // Update tpKeyMap
-            tpKeyMap.put(teTpKey, tpKey);
-            if (!parentUpdate && intNode != null) {
-                // Update InternalNetworkNode
-                intNode.setChildUpdate(true);
-                intNode.setTpIds(TeUtils.addListElement(intNode.tpIds(), tpKey.tpId()));
-            }
-        }
-    }
-
-    @Override
-    public void updateTerminationPoint(TerminationPointKey tpKey,
-            TerminationPoint tp) {
-        updateTerminationPoint(tpKey, tp, false, null);
-    }
-
-    @Override
-    public void removeTerminationPoint(TerminationPointKey tpKey) {
-        // Update InternalNetworkNode
-        InternalNetworkNode intNode = networkNodeMap.get(tpKey);
-        if (intNode != null && CollectionUtils.isNotEmpty(intNode.tpIds())) {
-            intNode.setChildUpdate(true);
-            intNode.tpIds().remove(tpKey.tpId());
-        }
-        // Remove it from tpMap
-        InternalTerminationPoint tp = tpMap.remove(tpKey);
-        // Remove it from tpKeyMap
-        if (tp != null) {
-            tpKeyMap.remove(tp.teTpKey());
-        }
-    }
-
-    @Override
-    public TunnelTerminationPoint tunnelTerminationPoint(TtpKey ttpId) {
-        return ttpMap.get(ttpId);
-    }
-
-    @Override
-    public long nextTeTopologyId() {
-        return nextTeTopologyId.getAndIncrement();
-    }
-
-    @Override
-    public long nextTeNodeId(TeTopologyKey topoKey) {
-        return teTopologyMap.get(topoKey).nextTeNodeId();
-    }
-
-    @Override
-    public void setNextTeNodeId(TeTopologyKey topoKey, long nextNodeId) {
-        teTopologyMap.get(topoKey).setNextTeNodeId(nextNodeId);
-    }
-
-    @Override
-    public KeyId networkId(TeTopologyKey teTopologyKey) {
-        return teTopologyMap.get(teTopologyKey) == null ||
-               teTopologyMap.get(teTopologyKey).topologyData() == null ? null :
-                    teTopologyMap.get(teTopologyKey).topologyData().networkId();
-    }
-
-    @Override
-    public NetworkNodeKey nodeKey(TeNodeKey teNodeKey) {
-        return teNodeMap.get(teNodeKey) == null ? null :
-               teNodeMap.get(teNodeKey).networkNodeKey();
-    }
-
-    @Override
-    public NetworkLinkKey linkKey(TeLinkTpGlobalKey teLinkKey) {
-        return teLinkMap.get(teLinkKey) == null ? null :
-               teLinkMap.get(teLinkKey).networkLinkKey();
-    }
-
-    @Override
-    public TerminationPointKey terminationPointKey(TeLinkTpGlobalKey teTpKey) {
-        return tpKeyMap.get(teTpKey);
-    }
-
-    @Override
-    public BlockingQueue<TeTopologyMapEvent> mapEventQueue() {
-        return mapEventQueue;
-    }
-
-    @Override
-    public void setProviderId(long providerId) {
-        this.providerId = providerId;
-    }
-}
-
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetwork.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetwork.java
deleted file mode 100644
index 710a567..0000000
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetwork.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.impl;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.collections.MapUtils;
-import org.onosproject.tetopology.management.api.KeyId;
-import org.onosproject.tetopology.management.api.Network;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.link.NetworkLink;
-import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
-import org.onosproject.tetopology.management.api.node.NetworkNode;
-import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-
-/**
- * Network representation in store.
- */
-public class InternalNetwork {
-    private TeTopologyKey teTopologyKey;
-    private List<KeyId> supportingNetworkIds;
-    private boolean serverProvided;
-    private List<NetworkNodeKey> nodeIds;
-    private List<NetworkLinkKey> linkIds;
-    private boolean childUpdate = false;
-
-    /**
-     * Creates an instance of InternalNetwork.
-     *
-     * @param network the Network object
-     */
-    public InternalNetwork(Network network) {
-        this.supportingNetworkIds = network
-                .supportingNetworkIds() == null ? null
-                                                : Lists.newArrayList(network
-                                                        .supportingNetworkIds());
-        this.serverProvided = network.isServerProvided();
-        // NetworkNodeKey
-        if (MapUtils.isNotEmpty(network.nodes())) {
-            this.nodeIds = Lists.newArrayList();
-            for (Map.Entry<KeyId, NetworkNode> entry : network.nodes().entrySet()) {
-                this.nodeIds.add(new NetworkNodeKey(network.networkId(), entry.getKey()));
-            }
-        }
-        // NetworkLinkKey
-        if (MapUtils.isNotEmpty(network.links())) {
-            this.linkIds = Lists.newArrayList();
-            for (Map.Entry<KeyId, NetworkLink> entry : network.links().entrySet()) {
-                this.linkIds.add(new NetworkLinkKey(network.networkId(), entry.getKey()));
-            }
-        }
-    }
-
-    /**
-     * Creates a default instance of InternalNetwork.
-     */
-    public InternalNetwork() {
-    }
-
-    /**
-     * Returns the supporting network Ids.
-     *
-     * @return the supportingNetworkIds
-     */
-    public List<KeyId> supportingNetworkIds() {
-        if (supportingNetworkIds == null) {
-            return null;
-        }
-        return ImmutableList.copyOf(supportingNetworkIds);
-    }
-
-    /**
-     * Returns if the network topology is provided by a server or is
-     * configured by a client.
-     *
-     * @return true if the network is provided by a server; false otherwise
-     */
-    public boolean serverProvided() {
-        return serverProvided;
-    }
-
-    /**
-     * @param serverProvided the serverProvided to set
-     */
-    public void setServerProvided(boolean serverProvided) {
-        this.serverProvided = serverProvided;
-    }
-
-    /**
-     * Returns the list of node Ids in the network.
-     *
-     * @return the nodeIds
-     */
-    public List<NetworkNodeKey> nodeIds() {
-        return nodeIds;
-    }
-
-    /**
-     * Returns the TE topology key for the network.
-     *
-     * @return the teTopologyKey
-     */
-    public TeTopologyKey teTopologyKey() {
-        return teTopologyKey;
-    }
-
-    /**
-     * Sets the TE topology key for the network.
-     *
-     * @param teTopologyKey the teTopologyKey to set
-     */
-    public void setTeTopologyKey(TeTopologyKey teTopologyKey) {
-        this.teTopologyKey = teTopologyKey;
-    }
-
-    /**
-     * Set the list of node Ids in the network.
-     *
-     * @param nodeIds the nodeIds to set
-     */
-    public void setNodeIds(List<NetworkNodeKey> nodeIds) {
-        this.nodeIds = nodeIds;
-    }
-
-    /**
-     * Returns the list of link Ids in the network.
-     *
-     * @return the linkIds
-     */
-    public List<NetworkLinkKey> linkIds() {
-        return linkIds;
-    }
-
-    /**
-     * Set the list of link Ids in the network.
-     *
-     * @param linkIds the linkIds to set
-     */
-    public void setLinkIds(List<NetworkLinkKey> linkIds) {
-        this.linkIds = linkIds;
-    }
-
-    /**
-     * Returns the flag if the data was updated by child change.
-     *
-     * @return value of childUpdate
-     */
-    public boolean childUpdate() {
-        return childUpdate;
-    }
-
-    /**
-     * Sets the flag if the data was updated by child change.
-     *
-     * @param childUpdate the childUpdate value to set
-     */
-    public void setChildUpdate(boolean childUpdate) {
-        this.childUpdate = childUpdate;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(teTopologyKey, nodeIds, linkIds,
-                supportingNetworkIds, serverProvided);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof InternalNetwork) {
-            InternalNetwork that = (InternalNetwork) object;
-            return Objects.equal(this.teTopologyKey, that.teTopologyKey) &&
-                    Objects.equal(this.nodeIds, that.nodeIds) &&
-                    Objects.equal(this.linkIds, that.linkIds) &&
-                    Objects.equal(this.supportingNetworkIds, that.supportingNetworkIds) &&
-                    Objects.equal(this.serverProvided, that.serverProvided);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("teTopologyKey", teTopologyKey)
-                .add("nodeIds", nodeIds)
-                .add("linkIds", linkIds)
-                .add("supportingNetworkIds", supportingNetworkIds)
-                .add("serverProvided", serverProvided)
-                .add("childUpdate", childUpdate)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetworkLink.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetworkLink.java
deleted file mode 100644
index 7d82295..0000000
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetworkLink.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.impl;
-
-import java.util.List;
-
-import org.onosproject.tetopology.management.api.link.NetworkLink;
-import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.node.NodeTpKey;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-
-/**
- * Network Link representation in store.
- */
-public class InternalNetworkLink {
-    private NodeTpKey source;
-    private NodeTpKey destination;
-    private List<NetworkLinkKey> supportingLinkIds;
-    private TeLinkTpGlobalKey teLinkKey;
-    private boolean parentUpdate;
-
-    /**
-     * Creates an instance of InternalNetworkLink.
-     *
-     * @param link the network link
-     * @param parentUpdate the flag if the data is updated by parent
-     */
-    public InternalNetworkLink(NetworkLink link,  boolean parentUpdate) {
-        source = link.source();
-        destination = link.destination();
-        supportingLinkIds = link
-                .supportingLinkIds() == null ? null
-                                             : Lists.newArrayList(link
-                                                     .supportingLinkIds());
-        this.parentUpdate = parentUpdate;
-    }
-
-    /**
-     * Returns the link source termination point.
-     *
-     * @return source link termination point id
-     */
-    public NodeTpKey source() {
-        return source;
-    }
-
-    /**
-     * Returns the link destination termination point.
-     *
-     * @return destination link termination point id
-     */
-    public NodeTpKey destination() {
-        return destination;
-    }
-
-    /**
-     * Returns the supporting link ids.
-     *
-     * @return list of the ids of the supporting links
-     */
-    public List<NetworkLinkKey> supportingLinkIds() {
-        return supportingLinkIds == null ? null
-                                         : ImmutableList
-                                                 .copyOf(supportingLinkIds);
-    }
-
-    /**
-     * Returns the TE link key.
-     *
-     * @return the teLinkKey
-     */
-    public TeLinkTpGlobalKey teLinkKey() {
-        return teLinkKey;
-    }
-
-    /**
-     * Sets the TE link key.
-     *
-     * @param teLinkKey the teLinkKey to set
-     */
-    public void setTeLinkKey(TeLinkTpGlobalKey teLinkKey) {
-        this.teLinkKey = teLinkKey;
-    }
-
-    /**
-     * Returns the flag if the data was updated by parent change.
-     *
-     * @return value of parentUpdate
-     */
-    public boolean parentUpdate() {
-        return parentUpdate;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(source, destination, supportingLinkIds, teLinkKey);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof InternalNetworkLink) {
-            InternalNetworkLink that = (InternalNetworkLink) object;
-            return Objects.equal(source, that.source)
-                    && Objects.equal(destination, that.destination)
-                    && Objects.equal(supportingLinkIds, that.supportingLinkIds)
-                    && Objects.equal(teLinkKey, that.teLinkKey);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("source", source)
-                .add("destination", destination)
-                .add("supportingLinkIds", supportingLinkIds)
-                .add("teLinkKey", teLinkKey)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetworkNode.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetworkNode.java
deleted file mode 100644
index f70210b..0000000
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetworkNode.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.impl;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.collections.MapUtils;
-import org.onosproject.tetopology.management.api.KeyId;
-import org.onosproject.tetopology.management.api.node.NetworkNode;
-import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TerminationPoint;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-
-/**
- * Network Node representation in store.
- */
-public class InternalNetworkNode {
-    private List<NetworkNodeKey> supportingNodeIds;
-    private List<KeyId> tpIds;
-    private TeNodeKey teNodeKey;
-    private boolean parentUpdate;
-    private boolean childUpdate;
-
-    /**
-     * Creates an instance of InternalNetworkNode.
-     *
-     * @param node the network node
-     * @param parentUpdate the flag if the data is updated by parent
-     */
-    public InternalNetworkNode(NetworkNode node,  boolean parentUpdate) {
-        supportingNodeIds = node
-                .supportingNodeIds() == null ? null
-                                             : Lists.newArrayList(node
-                                                     .supportingNodeIds());
-        if (MapUtils.isNotEmpty(node.terminationPoints())) {
-            tpIds = Lists.newArrayList();
-            for (Map.Entry<KeyId, TerminationPoint> entry : node
-                    .terminationPoints().entrySet()) {
-                tpIds.add(entry.getKey());
-            }
-        }
-        this.parentUpdate = parentUpdate;
-    }
-
-    /**
-     * Returns the list of supporting node Ids.
-     *
-     * @return the supporting nodeIds
-     */
-    public List<NetworkNodeKey> supportingNodeIds() {
-        return supportingNodeIds == null ? null
-                                         : ImmutableList
-                                                 .copyOf(supportingNodeIds);
-    }
-
-    /**
-     * Sets the list of supporting node Ids.
-     *
-     * @param supportingNodeIds the supportingNodeIds to set
-     */
-    public void setSupportingNodeIds(List<NetworkNodeKey> supportingNodeIds) {
-        this.supportingNodeIds = supportingNodeIds == null ? null
-                                                           : Lists.newArrayList(supportingNodeIds);
-    }
-
-    /**
-     * Returns the list of termination point Ids.
-     *
-     * @return the termination point Ids
-     */
-    public List<KeyId> tpIds() {
-        return tpIds;
-    }
-
-    /**
-     * Sets the list of termination point Ids.
-     *
-     * @param tpIds the tpIds to set
-     */
-    public void setTpIds(List<KeyId> tpIds) {
-        this.tpIds = tpIds;
-    }
-
-    /**
-     * Returns the TE Node key.
-     *
-     * @return the teNodeKey
-     */
-    public TeNodeKey teNodeKey() {
-        return teNodeKey;
-    }
-
-    /**
-     * Sets the TE Node key.
-     *
-     * @param teNodeKey the teNodeKey to set
-     */
-    public void setTeNodeKey(TeNodeKey teNodeKey) {
-        this.teNodeKey = teNodeKey;
-    }
-
-    /**
-     * Returns the flag if the data was updated by parent change.
-     *
-     * @return value of parentUpdate
-     */
-    public boolean parentUpdate() {
-        return parentUpdate;
-    }
-
-    /**
-     * Returns the flag if the data was updated by child change.
-     *
-     * @return value of childUpdate
-     */
-    public boolean childUpdate() {
-        return childUpdate;
-    }
-
-    /**
-     * Sets the flag if the data was updated by child change.
-     *
-     * @param childUpdate the childUpdate value to set
-     */
-    public void setChildUpdate(boolean childUpdate) {
-        this.childUpdate = childUpdate;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(supportingNodeIds, tpIds, teNodeKey);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof InternalNetworkNode) {
-            InternalNetworkNode that = (InternalNetworkNode) object;
-            return Objects.equal(supportingNodeIds, that.supportingNodeIds)
-                    && Objects.equal(tpIds, that.tpIds)
-                    && Objects.equal(teNodeKey, that.teNodeKey);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("supportingNodeIds", supportingNodeIds)
-                .add("tpIds", tpIds)
-                .add("teNodeKey", teNodeKey)
-                .add("parentUpdate", parentUpdate)
-                .add("childUpdate", childUpdate)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeLink.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeLink.java
deleted file mode 100644
index 799ed30..0000000
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeLink.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.impl;
-
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.link.CommonLinkData;
-import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
-import org.onosproject.tetopology.management.api.link.TeLink;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.link.TeLinkTpKey;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-
-/**
- * The TE link representation in store.
- */
-public class InternalTeLink {
-    private TeLinkTpKey peerTeLinkKey;
-    private TeTopologyKey underlayTopologyKey;
-    private TeLinkTpGlobalKey supportingLinkKey;
-    private TeLinkTpGlobalKey sourceTeLinkKey;
-    private CommonLinkData teData;
-    private NetworkLinkKey networkLinkKey;
-    private boolean parentUpdate;
-
-    /**
-     * Creates an instance of InternalLink.
-     *
-     * @param link the TE link
-     * @param parentUpdate indicator the TE node is updated by parent
-     */
-    public InternalTeLink(TeLink link, boolean parentUpdate) {
-        this.parentUpdate = parentUpdate;
-        // Peer link key
-        this.peerTeLinkKey = link.peerTeLinkKey();
-        // Underlay topology
-        this.underlayTopologyKey = link.underlayTeTopologyId();
-        // Supporting topology
-        this.supportingLinkKey = link.supportingTeLinkId();
-        // Source topology
-        this.sourceTeLinkKey = link.sourceTeLinkId();
-        // Common data
-        this.teData = new CommonLinkData(link);
-    }
-
-    /**
-     * Returns the bi-directional peer link key.
-     *
-     * @return the peerTeLinkKey
-     */
-    public TeLinkTpKey peerTeLinkKey() {
-        return peerTeLinkKey;
-    }
-
-    /**
-     * Sets the bi-directional peer link key.
-     *
-     * @param peerTeLinkKey the peerTeLinkKey to set
-     */
-    public void setPeerTeLinkKey(TeLinkTpKey peerTeLinkKey) {
-        this.peerTeLinkKey = peerTeLinkKey;
-    }
-
-    /**
-     * Returns the link underlay topology key.
-     *
-     * @return the underlayTopologyKey
-     */
-    public TeTopologyKey underlayTopologyKey() {
-        return underlayTopologyKey;
-    }
-
-    /**
-     * Sets the link underlay topology key.
-     *
-     * @param underlayTopologyKey the underlayTopologyKey to set
-     */
-    public void setUnderlayTopologyKey(TeTopologyKey underlayTopologyKey) {
-        this.underlayTopologyKey = underlayTopologyKey;
-    }
-
-    /**
-     * Returns the supporting link key.
-     *
-     * @return the supportingLinkKey
-     */
-    public TeLinkTpGlobalKey supportingLinkKey() {
-        return supportingLinkKey;
-    }
-
-    /**
-     * Sets the supporting link key.
-     *
-     * @param supportingLinkKey the supportingLinkKey to set
-     */
-    public void setSupportingLinkKey(TeLinkTpGlobalKey supportingLinkKey) {
-        this.supportingLinkKey = supportingLinkKey;
-    }
-
-    /**
-     * Returns the source link key.
-     *
-     * @return the sourceTeLinkKey
-     */
-    public TeLinkTpGlobalKey sourceTeLinkKey() {
-        return sourceTeLinkKey;
-    }
-
-    /**
-     * Sets the source link key.
-     *
-     * @param sourceTeLinkKey the sourceTeLinkKey to set
-     */
-    public void setSourceTeNodeKey(TeLinkTpGlobalKey sourceTeLinkKey) {
-        this.sourceTeLinkKey = sourceTeLinkKey;
-    }
-
-    /**
-     * Returns the link common data.
-     *
-     * @return the teData
-     */
-    public CommonLinkData teData() {
-        return teData;
-    }
-
-    /**
-     * Sets the link common data.
-     *
-     * @param teData the teData to set
-     */
-    public void setTeData(CommonLinkData teData) {
-        this.teData = teData;
-    }
-
-    /**
-     * Sets the network link key.
-     *
-     * @param networkLinkKey the networkLinkKey to set
-     */
-    public void setNetworkLinkKey(NetworkLinkKey networkLinkKey) {
-        this.networkLinkKey = networkLinkKey;
-    }
-
-    /**
-     * Returns the network link key.
-     *
-     * @return the networkLinkKey
-     */
-    public NetworkLinkKey networkLinkKey() {
-        return networkLinkKey;
-    }
-
-    /**
-     * Returns the indicator if the data was updated by parent.
-     *
-     * @return value of parentUpdate
-     */
-    public boolean parentUpdate() {
-        return parentUpdate;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(peerTeLinkKey, underlayTopologyKey,
-                supportingLinkKey, sourceTeLinkKey, teData, networkLinkKey);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof InternalTeLink) {
-            InternalTeLink that = (InternalTeLink) object;
-            return Objects.equal(peerTeLinkKey, that.peerTeLinkKey)
-                    && Objects.equal(underlayTopologyKey,
-                                     that.underlayTopologyKey)
-                    && Objects.equal(supportingLinkKey, that.supportingLinkKey)
-                    && Objects.equal(sourceTeLinkKey, that.sourceTeLinkKey)
-                    && Objects.equal(networkLinkKey, that.networkLinkKey)
-                    && Objects.equal(teData, that.teData);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("peerTeLinkKey", peerTeLinkKey)
-                .add("underlayTopologyKey", underlayTopologyKey)
-                .add("supportingLinkKey", supportingLinkKey)
-                .add("sourceTeLinkKey", sourceTeLinkKey)
-                .add("teData", teData)
-                .add("networkLinkKey", networkLinkKey)
-                .add("parentUpdate", parentUpdate)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeNode.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeNode.java
deleted file mode 100644
index cd47929..0000000
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeNode.java
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.impl;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.MapUtils;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.node.CommonNodeData;
-import org.onosproject.tetopology.management.api.node.ConnectivityMatrix;
-import org.onosproject.tetopology.management.api.node.ConnectivityMatrixKey;
-import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
-import org.onosproject.tetopology.management.api.node.TeNode;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-import org.onosproject.tetopology.management.api.node.TunnelTerminationPoint;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.Lists;
-
-/**
- * The Node representation in store.
- */
-public class InternalTeNode {
-    private CommonNodeData teData;
-    private TeTopologyKey underlayTopologyKey;
-    private TeNodeKey supportNodeKey;
-    private TeNodeKey sourceTeNodeKey;
-    private List<ConnectivityMatrixKey> connMatrixKeys;
-    private List<TeLinkTpGlobalKey> teLinkTpKeys;
-    private List<TeLinkTpGlobalKey> teTpKeys;
-    private List<TtpKey> ttpKeys;
-    private NetworkNodeKey networkNodeKey;
-    private boolean parentUpdate;
-    private boolean childUpdate;
-
-    // Next available TE link Id egressing from the TE node.
-    private long nextTeLinkId;
-
-    /**
-     * Creates an instance of InternalTeNode.
-     *
-     * @param nodeKey the TE node key
-     * @param node the TE node
-     * @param networkNodeKey the network node key
-     * @param parentUpdate the flag if the data is updated by parent
-     */
-    public InternalTeNode(TeNodeKey nodeKey, TeNode node,
-           NetworkNodeKey networkNodeKey, boolean parentUpdate) {
-        this.networkNodeKey = networkNodeKey;
-        this.parentUpdate = parentUpdate;
-        // Underlay topology
-        this.underlayTopologyKey = node.underlayTeTopologyId();
-        // Supporting topology
-        this.supportNodeKey = node.supportingTeNodeId();
-        // Source topology
-        this.sourceTeNodeKey = node.sourceTeNodeId();
-        // Common data
-        this.teData = new CommonNodeData(node);
-        // Connectivity matrix
-        if (MapUtils.isNotEmpty(node.connectivityMatrices())) {
-            this.connMatrixKeys = Lists.newArrayList();
-            for (Map.Entry<Long, ConnectivityMatrix> entry : node.connectivityMatrices().entrySet()) {
-                this.connMatrixKeys.add(new ConnectivityMatrixKey(nodeKey, entry.getKey()));
-            }
-        }
-        // Tunnel termination point
-        if (MapUtils.isNotEmpty(node.tunnelTerminationPoints())) {
-            this.ttpKeys = Lists.newArrayList();
-            for (Map.Entry<Long, TunnelTerminationPoint> entry : node.tunnelTerminationPoints().entrySet()) {
-                this.ttpKeys.add(new TtpKey(nodeKey, entry.getKey()));
-            }
-        }
-        // teLink Keys
-        if (CollectionUtils.isNotEmpty(node.teLinkIds())) {
-            this.teLinkTpKeys = Lists.newArrayList();
-            for (Long linkId : node.teLinkIds()) {
-                this.teLinkTpKeys.add(new TeLinkTpGlobalKey(nodeKey, linkId));
-            }
-
-        }
-        // teTp Keys
-        if (CollectionUtils.isNotEmpty(node.teTerminationPointIds())) {
-            this.teTpKeys = Lists.newArrayList();
-            for (Long tpId : node.teTerminationPointIds()) {
-                this.teTpKeys.add(new TeLinkTpGlobalKey(nodeKey, tpId));
-            }
-        }
-    }
-
-    /**
-     * Returns the node common data.
-     *
-     * @return the teData
-     */
-    public CommonNodeData teData() {
-        return teData;
-    }
-
-    /**
-     * Sets the node common data.
-     *
-     * @param teData the teData to set
-     */
-    public void setTeData(CommonNodeData teData) {
-        this.teData = teData;
-    }
-
-    /**
-     * Returns the node underlay topology key.
-     *
-     * @return the underlayTopologyKey
-     */
-    public TeTopologyKey underlayTopologyKey() {
-        return underlayTopologyKey;
-    }
-
-    /**
-     * Sets the node underlay topology key.
-     *
-     * @param underlayTopologyKey the underlayTopologyKey to set
-     */
-    public void setUnderlayTopologyKey(TeTopologyKey underlayTopologyKey) {
-        this.underlayTopologyKey = underlayTopologyKey;
-    }
-
-    /**
-     * Returns the supporting node key.
-     *
-     * @return the supportNodeKey
-     */
-    public TeNodeKey supportNodeKey() {
-        return supportNodeKey;
-    }
-
-    /**
-     * Sets the supporting node key.
-     *
-     * @param supportNodeKey the supportNodeKey to set
-     */
-    public void setSupportNodeKey(TeNodeKey supportNodeKey) {
-        this.supportNodeKey = supportNodeKey;
-    }
-
-    /**
-     * Returns the source node key.
-     *
-     * @return the sourceTeNodeKey
-     */
-    public TeNodeKey sourceTeNodeKey() {
-        return sourceTeNodeKey;
-    }
-
-    /**
-     * Sets the source node key.
-     *
-     * @param sourceTeNodeKey the sourceTeNodeKey to set
-     */
-    public void setSourceTeNodeKey(TeNodeKey sourceTeNodeKey) {
-        this.sourceTeNodeKey = sourceTeNodeKey;
-    }
-
-    /**
-     * Returns the node connect matrix keys.
-     *
-     * @return the connMatrixKeys
-     */
-    public List<ConnectivityMatrixKey> connMatrixKeys() {
-        return connMatrixKeys;
-    }
-
-    /**
-     * Sets the node connect matrix keys.
-     *
-     * @param connMatrixKeys the connMatrixKeys to set
-     */
-    public void setConnMatrixKeys(List<ConnectivityMatrixKey> connMatrixKeys) {
-        this.connMatrixKeys = connMatrixKeys;
-    }
-
-    /**
-     * Returns the TE link Ids.
-     *
-     * @return the teLinkTpKeys
-     */
-    public List<TeLinkTpGlobalKey> teLinkTpKeys() {
-        return teLinkTpKeys;
-    }
-
-    /**
-     * Sets the TE link Ids from the node.
-     *
-     * @param teLinkTpKeys the teLinkTpKeys to set
-     */
-    public void setTeLinkTpKeys(List<TeLinkTpGlobalKey> teLinkTpKeys) {
-        this.teLinkTpKeys = teLinkTpKeys;
-    }
-
-    /**
-     * Returns the TE termitation point Ids.
-     *
-     * @return the teTpKeys
-     */
-    public List<TeLinkTpGlobalKey> teTpKeys() {
-        return teTpKeys;
-    }
-
-    /**
-     * Sets the TE termitation point Ids.
-     *
-     * @param teTpKeys the teTpKeys to set
-     */
-    public void setTeTpKeys(List<TeLinkTpGlobalKey> teTpKeys) {
-        this.teTpKeys = teTpKeys;
-    }
-
-    /**
-     * Returns the list of Tunnel Termination Point keys of the node.
-     *
-     * @return the ttpKeys
-     */
-    public List<TtpKey> ttpKeys() {
-        return ttpKeys;
-    }
-
-    /**
-     * Sets the list of Tunnel Termination Point keys.
-     *
-     * @param ttpKeys the ttpKeys to set
-     */
-    public void setTtpKeys(List<TtpKey> ttpKeys) {
-        this.ttpKeys = ttpKeys;
-    }
-
-    /**
-     * Returns the network node Key.
-     *
-     * @return the networkNodeKey
-     */
-    public NetworkNodeKey networkNodeKey() {
-        return networkNodeKey;
-    }
-
-    /**
-     * Returns the next available TE link id from the node.
-     *
-     * @return the nextTeLinkId
-     */
-    public long nextTeLinkId() {
-        return nextTeLinkId;
-    }
-
-    /**
-     * Sets the next available TE link id.
-     *
-     * @param nextTeLinkId the nextTeLinkId to set
-     */
-    public void setNextTeLinkId(long nextTeLinkId) {
-        this.nextTeLinkId = nextTeLinkId;
-    }
-
-    /**
-     * Returns the flag if the data was updated by parent change.
-     *
-     * @return value of parentUpdate
-     */
-    public boolean parentUpdate() {
-        return parentUpdate;
-    }
-
-    /**
-     * Returns the flag if the data was updated by child change.
-     *
-     * @return value of childUpdate
-     */
-    public boolean childUpdate() {
-        return childUpdate;
-    }
-
-    /**
-     * Sets the flag if the data was updated by child change.
-     *
-     * @param childUpdate the childUpdate value to set
-     */
-    public void setChildUpdate(boolean childUpdate) {
-        this.childUpdate = childUpdate;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(teData, underlayTopologyKey, supportNodeKey,
-                sourceTeNodeKey, connMatrixKeys, teLinkTpKeys, ttpKeys, networkNodeKey);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof InternalTeNode) {
-            InternalTeNode that = (InternalTeNode) object;
-            return Objects.equal(teData, that.teData)
-                    && Objects.equal(underlayTopologyKey,
-                                     that.underlayTopologyKey)
-                    && Objects.equal(supportNodeKey, that.supportNodeKey)
-                    && Objects.equal(sourceTeNodeKey, that.sourceTeNodeKey)
-                    && Objects.equal(connMatrixKeys, that.connMatrixKeys)
-                    && Objects.equal(teLinkTpKeys, that.teLinkTpKeys)
-                    && Objects.equal(ttpKeys, that.ttpKeys)
-                    && Objects.equal(networkNodeKey, that.networkNodeKey);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("teData", teData)
-                .add("underlayTopologyKey", underlayTopologyKey)
-                .add("supportNodeKey", supportNodeKey)
-                .add("sourceTeNodeKey", sourceTeNodeKey)
-                .add("connMatrixKeys", connMatrixKeys)
-                .add("teLinkTpKeys", teLinkTpKeys)
-                .add("ttpKeys", ttpKeys)
-                .add("nextTeLinkId", nextTeLinkId)
-                .add("networkNodeKey", networkNodeKey)
-                .add("parentUpdate", parentUpdate)
-                .add("childUpdate", childUpdate)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeTopology.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeTopology.java
deleted file mode 100644
index 247e934..0000000
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeTopology.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.impl;
-
-import static org.onosproject.tetopology.management.api.TeConstants.NIL_LONG_VALUE;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.collections.MapUtils;
-import org.onosproject.tetopology.management.api.CommonTopologyData;
-import org.onosproject.tetopology.management.api.TeTopology;
-import org.onosproject.tetopology.management.api.link.TeLink;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.link.TeLinkTpKey;
-import org.onosproject.tetopology.management.api.node.TeNode;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.Lists;
-
-/**
- * TE topology representation in store.
- */
-public class InternalTeTopology {
-    private String teTopologyId;
-    private List<TeNodeKey> teNodeKeys;
-    private List<TeLinkTpGlobalKey> teLinkKeys;
-    private CommonTopologyData topologyData;
-    private long nextTeNodeId = NIL_LONG_VALUE;
-    private boolean childUpdate;
-
-    /**
-     * Creates an instance of InternalTeTopology.
-     *
-     * @param teTopology the TE Topology object
-     */
-    public InternalTeTopology(TeTopology teTopology) {
-        this.teTopologyId = teTopology.teTopologyIdStringValue();
-        this.topologyData = new CommonTopologyData(teTopology);
-        // teNodeKeys
-        if (MapUtils.isNotEmpty(teTopology.teNodes())) {
-            this.teNodeKeys = Lists.newArrayList();
-            for (Map.Entry<Long, TeNode> entry : teTopology.teNodes().entrySet()) {
-                this.teNodeKeys.add(new TeNodeKey(teTopology.teTopologyId(), entry.getKey()));
-            }
-        }
-        // teLink Keys
-        if (MapUtils.isNotEmpty(teTopology.teLinks())) {
-            this.teLinkKeys = Lists.newArrayList();
-            for (Map.Entry<TeLinkTpKey, TeLink> entry : teTopology.teLinks().entrySet()) {
-                this.teLinkKeys.add(new TeLinkTpGlobalKey(teTopology.teTopologyId(), entry.getKey()));
-            }
-        }
-    }
-
-    /**
-     * Creates a default instance of InternalNetwork.
-     *
-     * @param teTopologyId string value of id
-     */
-    public InternalTeTopology(String teTopologyId) {
-        this.teTopologyId = teTopologyId;
-    }
-
-    /**
-     * Returns the TE Topology Id string value.
-     *
-     * @return the teTopologyId
-     */
-    public String teTopologyId() {
-        return teTopologyId;
-    }
-
-    /**
-     * Returns the list of TE node keys in the topology.
-     *
-     * @return the teNodeKeys
-     */
-    public List<TeNodeKey> teNodeKeys() {
-        return teNodeKeys;
-    }
-
-    /**
-     * Sets the list of TE node keys.
-     *
-     * @param teNodeKeys the teNodeKeys to set
-     */
-    public void setTeNodeKeys(List<TeNodeKey> teNodeKeys) {
-        this.teNodeKeys = teNodeKeys;
-    }
-
-    /**
-     * Returns the list of TE link keys in the topology.
-     *
-     * @return the teLinkKeys
-     */
-    public List<TeLinkTpGlobalKey> teLinkKeys() {
-        return teLinkKeys;
-    }
-
-    /**
-     * Sets the list of TE link keys.
-     *
-     * @param teLinkKeys the teLinkKeys to set
-     */
-    public void setTeLinkKeys(List<TeLinkTpGlobalKey> teLinkKeys) {
-        this.teLinkKeys = teLinkKeys;
-    }
-
-    /**
-     * Returns the common TE topology data.
-     *
-     * @return the topology data
-     */
-    public CommonTopologyData topologyData() {
-        return topologyData;
-    }
-
-    /**
-     * Sets the common TE topology data.
-     *
-     * @param topologyData the topologyData to set
-     */
-    public void setTopologydata(CommonTopologyData topologyData) {
-        this.topologyData = topologyData;
-    }
-
-    /**
-     * Returns the next available TE node Id.
-     *
-     * @return the next TE nodeId
-     */
-    public long nextTeNodeId() {
-        return nextTeNodeId;
-    }
-
-    /**
-     * Sets the next available TE node Id.
-     *
-     * @param nextTeNodeId the nextTeNodeId to set
-     */
-    public void setNextTeNodeId(long nextTeNodeId) {
-        this.nextTeNodeId = nextTeNodeId;
-    }
-
-    /**
-     * Returns the flag if the data was updated by child change.
-     *
-     * @return value of childUpdate
-     */
-    public boolean childUpdate() {
-        return childUpdate;
-    }
-
-    /**
-     * Sets the flag if the data was updated by child change.
-     *
-     * @param childUpdate the childUpdate value to set
-     */
-    public void setChildUpdate(boolean childUpdate) {
-        this.childUpdate = childUpdate;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(teTopologyId, teNodeKeys, teLinkKeys,
-                topologyData);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof InternalTeTopology) {
-            InternalTeTopology that = (InternalTeTopology) object;
-            return Objects.equal(teTopologyId, that.teTopologyId)
-                    && Objects.equal(teNodeKeys, that.teNodeKeys)
-                    && Objects.equal(teLinkKeys, that.teLinkKeys)
-                    && Objects.equal(topologyData, that.topologyData);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("teTopologyId", teTopologyId)
-                .add("teNodeKeys", teNodeKeys)
-                .add("teLinkKeys", teLinkKeys)
-                .add("topologyData", topologyData)
-                .add("nextTeNodeId", nextTeNodeId)
-                .add("childUpdate", childUpdate)
-                .toString();
-    }
-}
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTerminationPoint.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTerminationPoint.java
deleted file mode 100644
index f47f0d9..0000000
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTerminationPoint.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.impl;
-
-import java.util.List;
-
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.node.TerminationPoint;
-import org.onosproject.tetopology.management.api.node.TerminationPointKey;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-
-/**
- * The TerminationPoint representation in store.
- */
-public class InternalTerminationPoint {
-    private TeLinkTpGlobalKey teTpKey;
-    private List<TerminationPointKey> supportingTpIds;
-
-    /**
-     * Creates an instance of InternalTerminationPoint.
-     *
-     * @param tp the termination point
-     */
-    public InternalTerminationPoint(TerminationPoint tp) {
-        this.supportingTpIds = tp
-                .supportingTpIds() == null ? null
-                                           : Lists.newArrayList(tp
-                                                   .supportingTpIds());
-    }
-
-    /**
-     * Returns the TE termination point key.
-     *
-     * @return the teTpKey
-    */
-    public TeLinkTpGlobalKey teTpKey() {
-        return teTpKey;
-    }
-
-    /**
-     * Returns the supporting termination point Ids.
-     *
-     * @return the supportingTpIds
-     */
-    public List<TerminationPointKey> supportingTpIds() {
-        return supportingTpIds == null ? null
-                                       : ImmutableList.copyOf(supportingTpIds);
-    }
-
-    /**
-     * Sets the TE termination point key.
-     *
-     * @param teTpKey the teTpKey to set
-     */
-    public void setTeTpKey(TeLinkTpGlobalKey teTpKey) {
-        this.teTpKey = teTpKey;
-    }
-
-    /**
-     * Sets the supporting termination point Ids.
-     *
-     * @param supportingTpIds the supportingTpIds to set
-     */
-    public void setSupportingTpIds(List<TerminationPointKey> supportingTpIds) {
-        this.supportingTpIds = supportingTpIds == null ? null
-                                                       : Lists.newArrayList(supportingTpIds);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(supportingTpIds, teTpKey);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof InternalTerminationPoint) {
-            InternalTerminationPoint that = (InternalTerminationPoint) object;
-            return Objects.equal(supportingTpIds, that.supportingTpIds)
-                    && Objects.equal(teTpKey, that.teTpKey);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("supportingTpIds", supportingTpIds)
-                .add("teTpKey", teTpKey)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeMgrUtil.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeMgrUtil.java
deleted file mode 100644
index 93170d1..0000000
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeMgrUtil.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.impl;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.collections.MapUtils;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.tetopology.management.api.DefaultNetwork;
-import org.onosproject.tetopology.management.api.KeyId;
-import org.onosproject.tetopology.management.api.Network;
-import org.onosproject.tetopology.management.api.TeTopology;
-import org.onosproject.tetopology.management.api.TeTopologyId;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.link.DefaultNetworkLink;
-import org.onosproject.tetopology.management.api.link.NetworkLink;
-import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
-import org.onosproject.tetopology.management.api.link.TeLink;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.link.TeLinkTpKey;
-import org.onosproject.tetopology.management.api.node.DefaultNetworkNode;
-import org.onosproject.tetopology.management.api.node.DefaultTerminationPoint;
-import org.onosproject.tetopology.management.api.node.NetworkNode;
-import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
-import org.onosproject.tetopology.management.api.node.NodeTpKey;
-import org.onosproject.tetopology.management.api.node.TeNode;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TerminationPoint;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-/**
- * TE Topology Manager utility functions.
- */
-public final class TeMgrUtil {
-    private static final String TENODE_ID = "teNodeId/";
-    private static final String TELINK_ID = "/teLinkId/";
-    private static final String PROVIDER_ID = "providerId/";
-    private static final String CLIENT_ID = "/clientId/";
-    private static final String TOPOLOGY_ID = "/topologyId/";
-
-    // no instantiation
-    private TeMgrUtil() {
-    }
-
-    /**
-     * Returns the network link id for a TE link local key.
-     *
-     * @param  key TE link local key
-     * @return value of network link id
-     */
-    public static KeyId toNetworkLinkId(TeLinkTpKey key) {
-        return KeyId.keyId(new StringBuilder()
-                .append(TENODE_ID)
-                .append(Ip4Address.valueOf((int) key.teNodeId()).toString())
-                .append(TELINK_ID)
-                .append(key.teLinkTpId()).toString());
-    }
-
-    /**
-     * Returns the network id for a TE topology id.
-     *
-     * @param  teTopologyId TE topology id
-     * @return value of network id
-     */
-    public static KeyId toNetworkId(TeTopologyId teTopologyId) {
-        return KeyId.keyId(new StringBuilder()
-                .append(PROVIDER_ID)
-                .append(teTopologyId.providerId())
-                .append(CLIENT_ID)
-                .append(teTopologyId.clientId())
-                .append(TOPOLOGY_ID)
-                .append(teTopologyId.topologyId()).toString());
-    }
-
-    /**
-     * Returns the network id for a TE topology key.
-     *
-     * @param  teTopologyKey TE topology key
-     * @return value of network id
-     */
-    public static KeyId toNetworkId(TeTopologyKey teTopologyKey) {
-        return KeyId.keyId(new StringBuilder()
-                .append(PROVIDER_ID)
-                .append(teTopologyKey.providerId())
-                .append(CLIENT_ID)
-                .append(teTopologyKey.clientId())
-                .append(TOPOLOGY_ID)
-                .append(teTopologyKey.topologyId()).toString());
-    }
-
-    /**
-     * Returns the network node key for a TE node global key.
-     *
-     * @param  teNodeKey TE node global key
-     * @return value of network node key
-     */
-    public static NetworkNodeKey networkNodeKey(TeNodeKey teNodeKey) {
-        return new NetworkNodeKey(toNetworkId(teNodeKey.teTopologyKey()),
-                                  KeyId.keyId(Ip4Address
-                                          .valueOf((int) teNodeKey.teNodeId())
-                                          .toString()));
-    }
-
-    /**
-     * Returns the network link key for a TE link global key.
-     *
-     * @param  teLinkKey TE link global key
-     * @return value of network link key
-     */
-    public static NetworkLinkKey networkLinkKey(TeLinkTpGlobalKey teLinkKey) {
-        return new NetworkLinkKey(toNetworkId(teLinkKey.teTopologyKey()),
-                                  toNetworkLinkId(teLinkKey.teLinkTpKey()));
-    }
-
-    /**
-     * Returns the TE topology id for a TE topology.
-     *
-     * @param  teTopology an instance of TE topology
-     * @return value of TE topology id
-     */
-    public static TeTopologyId teTopologyId(TeTopology teTopology) {
-        return new TeTopologyId(teTopology.teTopologyId().providerId(),
-                                teTopology.teTopologyId().clientId(),
-                                teTopology.teTopologyIdStringValue());
-    }
-
-    /**
-     * Returns a default instance of termination point for a TE termination point id.
-     *
-     * @param  teTpId TE termination point id
-     * @return an instance of termination point
-     */
-    private static TerminationPoint tpBuilder(long teTpId) {
-        return new DefaultTerminationPoint(KeyId.keyId(Long.toString(teTpId)), null, teTpId);
-    }
-
-    /**
-     * Returns an instance of network node for a TE node.
-     *
-     * @param id     value of the network node id
-     * @param teNode value of TE node
-     * @return an instance of network node
-     */
-    public static NetworkNode nodeBuilder(KeyId id, TeNode teNode) {
-        List<NetworkNodeKey> supportingNodeIds = null;
-        if (teNode.supportingTeNodeId() != null) {
-            supportingNodeIds = Lists.newArrayList(networkNodeKey(teNode.supportingTeNodeId()));
-        }
-        Map<KeyId, TerminationPoint> tps = Maps.newConcurrentMap();
-        for (Long teTpid : teNode.teTerminationPointIds()) {
-            tps.put(KeyId.keyId(Long.toString(teTpid)), tpBuilder(teTpid));
-        }
-        return new DefaultNetworkNode(id, supportingNodeIds, teNode, tps);
-    }
-
-    /**
-     * Returns the network node termination point key for a TE link end point key.
-     *
-     * @param  teLinkKey TE link end point key
-     * @return value of network node termination point key
-     */
-    public static NodeTpKey nodeTpKey(TeLinkTpKey teLinkKey) {
-        return new NodeTpKey(KeyId.keyId(Ip4Address
-                .valueOf((int) teLinkKey.teNodeId()).toString()),
-                             KeyId.keyId(Long.toString(teLinkKey.teLinkTpId())));
-    }
-
-    /**
-     * Returns an instance of network link for a TE link.
-     *
-     * @param id     value of the network link id
-     * @param teLink value of TE link
-     * @return an instance of network link
-     */
-    public static NetworkLink linkBuilder(KeyId id, TeLink teLink) {
-        NodeTpKey source = nodeTpKey(teLink.teLinkKey());
-        NodeTpKey destination = null;
-        if (teLink.peerTeLinkKey() != null) {
-            destination = nodeTpKey(teLink.peerTeLinkKey());
-        }
-        List<NetworkLinkKey> supportingLinkIds = null;
-        if (teLink.supportingTeLinkId() != null) {
-            supportingLinkIds = Lists.newArrayList(networkLinkKey(teLink.supportingTeLinkId()));
-        }
-        return new DefaultNetworkLink(id, source, destination, supportingLinkIds, teLink);
-    }
-
-    /**
-     * Returns an instance of network for a TE topology.
-     *
-     * @param  teTopology value of TE topology
-     * @return an instance of network
-     */
-    public static Network networkBuilder(TeTopology teTopology) {
-        KeyId networkId = TeMgrUtil.toNetworkId(teTopology.teTopologyId());
-        TeTopologyId topologyId = teTopologyId(teTopology);
-        Map<KeyId, NetworkNode> nodes = null;
-        if (MapUtils.isNotEmpty(teTopology.teNodes())) {
-            nodes = Maps.newHashMap();
-            for (TeNode tenode : teTopology.teNodes().values()) {
-                KeyId key = KeyId.keyId(Ip4Address
-                        .valueOf((int) tenode.teNodeId()).toString());
-                nodes.put(key, nodeBuilder(key, tenode));
-            }
-        }
-        Map<KeyId, NetworkLink> links = null;
-        if (MapUtils.isNotEmpty(teTopology.teLinks())) {
-            links = Maps.newHashMap();
-            for (TeLink telink : teTopology.teLinks().values()) {
-                KeyId key = toNetworkLinkId(telink.teLinkKey());
-                links.put(key, linkBuilder(key, telink));
-
-            }
-        }
-        return new DefaultNetwork(networkId, null, nodes, links,
-                                  topologyId, false, teTopology.ownerId(),
-                                  teTopology.optimization());
-    }
-
-}
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyConfig.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyConfig.java
deleted file mode 100644
index c52d9ee..0000000
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyConfig.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.impl;
-
-import org.onlab.packet.Ip4Address;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.config.ConfigException;
-import org.onosproject.net.config.Config;
-
-/**
- * Configuration for TE Topology parameters.
- */
-public class TeTopologyConfig extends Config<ApplicationId>  {
-    private static final String CONFIG_VALUE_ERROR = "Error parsing config value";
-    private static final String PROVIDER_ID = "provider-id";
-    private static final String MDSC = "mdsc";
-    private static final String TENODE_ID_START = "tenode-id-start";
-    private static final String TENODE_ID_END = "tenode-id-end";
-
-    /**
-     * Retrieves TE topology provider identifier.
-     *
-     * @return provider Id
-     * @throws ConfigException if the parameters are not correctly configured
-     * or conversion of the parameters fails
-     */
-    public long providerId() throws ConfigException {
-        try {
-            return object.path(PROVIDER_ID).asLong();
-        } catch (IllegalArgumentException e) {
-            throw new ConfigException(CONFIG_VALUE_ERROR, e);
-        }
-    }
-
-   /**
-    * Retrieves TE node starting IPv4 address.
-    *
-    * @return the IPv4 address
-    * @throws ConfigException if the parameters are not correctly configured
-    * or conversion of the parameters fails
-    */
-   public Ip4Address teNodeIpStart() throws ConfigException {
-       try {
-           return Ip4Address.valueOf(object.path(TENODE_ID_START).asText());
-       } catch (IllegalArgumentException e) {
-           throw new ConfigException(CONFIG_VALUE_ERROR, e);
-       }
-   }
-
-  /**
-   * Retrieves TE node end IPv4 address.
-   *
-   * @return the IPv4 address
-   * @throws ConfigException if the parameters are not correctly configured
-   * or conversion of the parameters fails
-   */
-  public Ip4Address teNodeIpEnd() throws ConfigException {
-      try {
-          return Ip4Address.valueOf(object.path(TENODE_ID_END).asText());
-      } catch (IllegalArgumentException e) {
-          throw new ConfigException(CONFIG_VALUE_ERROR, e);
-      }
-  }
-
-  /**
-   * Retrieves if this is a MDSC(Multi-Domain Super Controller).
-   *
-   * @return MDSC value
-   * @throws ConfigException if the parameters are not correctly configured or
-   *             conversion of the parameters fails
-   */
-  public String mdsc() throws ConfigException {
-      try {
-          return object.path(MDSC).asText();
-      } catch (IllegalArgumentException e) {
-          throw new ConfigException(CONFIG_VALUE_ERROR, e);
-      }
-  }
-
-}
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyManager.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyManager.java
deleted file mode 100644
index a3c0aed..0000000
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyManager.java
+++ /dev/null
@@ -1,1019 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.impl;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.MapUtils;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.app.ApplicationException;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.config.ConfigException;
-import org.onosproject.net.config.ConfigFactory;
-import org.onosproject.net.config.NetworkConfigEvent;
-import org.onosproject.net.config.NetworkConfigListener;
-import org.onosproject.net.config.NetworkConfigRegistry;
-import org.onosproject.net.device.DeviceProviderRegistry;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.link.LinkProviderRegistry;
-import org.onosproject.net.link.LinkService;
-import org.onosproject.net.provider.AbstractListenerProviderRegistry;
-import org.onosproject.net.provider.AbstractProviderService;
-import org.onosproject.tetopology.management.api.CommonTopologyData;
-import org.onosproject.tetopology.management.api.DefaultNetwork;
-import org.onosproject.tetopology.management.api.DefaultNetworks;
-import org.onosproject.tetopology.management.api.DefaultTeTopologies;
-import org.onosproject.tetopology.management.api.DefaultTeTopology;
-import org.onosproject.tetopology.management.api.KeyId;
-import org.onosproject.tetopology.management.api.Network;
-import org.onosproject.tetopology.management.api.Networks;
-import org.onosproject.tetopology.management.api.TeConstants;
-import org.onosproject.tetopology.management.api.TeTopologies;
-import org.onosproject.tetopology.management.api.TeTopology;
-import org.onosproject.tetopology.management.api.TeTopologyEvent;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.TeTopologyListener;
-import org.onosproject.tetopology.management.api.TeTopologyProvider;
-import org.onosproject.tetopology.management.api.TeTopologyProviderRegistry;
-import org.onosproject.tetopology.management.api.TeTopologyProviderService;
-import org.onosproject.tetopology.management.api.TeTopologyService;
-import org.onosproject.tetopology.management.api.link.CommonLinkData;
-import org.onosproject.tetopology.management.api.link.DefaultTeLink;
-import org.onosproject.tetopology.management.api.link.ExternalLink;
-import org.onosproject.tetopology.management.api.link.LinkBandwidth;
-import org.onosproject.tetopology.management.api.link.NetworkLink;
-import org.onosproject.tetopology.management.api.link.NetworkLinkEventSubject;
-import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
-import org.onosproject.tetopology.management.api.link.TeLink;
-import org.onosproject.tetopology.management.api.link.TeLinkEventSubject;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.link.TeLinkTpKey;
-import org.onosproject.tetopology.management.api.link.TePathAttributes;
-import org.onosproject.tetopology.management.api.link.UnderlayPath;
-import org.onosproject.tetopology.management.api.node.CommonNodeData;
-import org.onosproject.tetopology.management.api.node.ConnectivityMatrix;
-import org.onosproject.tetopology.management.api.node.DefaultTeNode;
-import org.onosproject.tetopology.management.api.node.DefaultTunnelTerminationPoint;
-import org.onosproject.tetopology.management.api.node.NetworkNode;
-import org.onosproject.tetopology.management.api.node.NetworkNodeEventSubject;
-import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
-import org.onosproject.tetopology.management.api.node.TeNode;
-import org.onosproject.tetopology.management.api.node.TeNodeEventSubject;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TerminationPoint;
-import org.onosproject.tetopology.management.api.node.TerminationPointKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-import org.onosproject.tetopology.management.api.node.TunnelTerminationPoint;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.BitSet;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutorService;
-
-import static java.util.concurrent.Executors.newFixedThreadPool;
-import static org.onlab.util.Tools.groupedThreads;
-import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_ADDED;
-import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_UPDATED;
-import static org.onosproject.net.config.basics.SubjectFactories.APP_SUBJECT_FACTORY;
-import static org.onosproject.tetopology.management.api.OptimizationType.NOT_OPTIMIZED;
-import static org.onosproject.tetopology.management.api.TeTopology.BIT_CUSTOMIZED;
-import static org.onosproject.tetopology.management.api.TeTopology.BIT_LEARNT;
-import static org.onosproject.tetopology.management.api.TeTopology.BIT_MERGED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.LINK_ADDED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.LINK_REMOVED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.LINK_UPDATED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_ADDED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_REMOVED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NODE_ADDED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NODE_REMOVED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NODE_UPDATED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_LINK_ADDED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_LINK_REMOVED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_LINK_UPDATED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_NODE_ADDED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_NODE_REMOVED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_NODE_UPDATED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_ADDED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_REMOVED;
-import static org.onosproject.tetopology.management.api.link.TeLink.BIT_ACCESS_INTERDOMAIN;
-import static org.onosproject.tetopology.management.impl.TeMgrUtil.linkBuilder;
-import static org.onosproject.tetopology.management.impl.TeMgrUtil.networkBuilder;
-import static org.onosproject.tetopology.management.impl.TeMgrUtil.networkLinkKey;
-import static org.onosproject.tetopology.management.impl.TeMgrUtil.networkNodeKey;
-import static org.onosproject.tetopology.management.impl.TeMgrUtil.nodeBuilder;
-import static org.onosproject.tetopology.management.impl.TeMgrUtil.toNetworkId;
-import static org.onosproject.tetopology.management.impl.TeMgrUtil.toNetworkLinkId;
-
-/**
- * Implementation of the topology management service.
- */
-@Component(immediate = true, service = { TeTopologyService.class, TeTopologyProviderRegistry.class })
-public class TeTopologyManager
-    extends AbstractListenerProviderRegistry<TeTopologyEvent, TeTopologyListener,
-                                             TeTopologyProvider, TeTopologyProviderService>
-    implements TeTopologyService, TeTopologyProviderRegistry {
-    private static final String APP_NAME = "org.onosproject.tetopology";
-    private static final long DEFAULT_PROVIDER_ID = 77777;
-    private static final long DEFAULT_CLIENT_ID = 0x00L;
-    private long providerId = DEFAULT_PROVIDER_ID;
-    private static final int MAX_THREADS = 1;
-    private static final Ip4Address DEFAULT_TENODE_ID_START = Ip4Address.valueOf("10.10.10.10");
-    private static final Ip4Address DEFAULT_TENODE_ID_END = Ip4Address.valueOf("250.250.250.250");
-    private Ip4Address teNodeIpStart = DEFAULT_TENODE_ID_START;
-    private Ip4Address teNodeIpEnd = DEFAULT_TENODE_ID_END;
-    private long nextTeNodeId = teNodeIpStart.toInt();
-    private boolean mdsc = true;
-    private static final String MDSC_MODE = "true";
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigRegistry cfgService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceService deviceService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LinkService linkService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceProviderRegistry deviceProviderRegistry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LinkProviderRegistry linkProviderRegistry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    public TeTopologyStore store;
-
-    private TeTopologyStoreDelegate delegate = this::post;
-    private final ConfigFactory<ApplicationId, TeTopologyConfig> factory =
-            new ConfigFactory<ApplicationId, TeTopologyConfig>(APP_SUBJECT_FACTORY,
-                    TeTopologyConfig.class,
-                    "teTopologyCfg",
-                    false) {
-        @Override
-        public TeTopologyConfig createConfig() {
-            return new TeTopologyConfig();
-        }
-    };
-    private final NetworkConfigListener cfgLister = new InternalConfigListener();
-    private ApplicationId appId;
-    // The topology merged in MDSC
-    private TeTopology mergedTopology = null;
-    private TeTopologyKey mergedTopologyKey;
-    private Network mergedNetwork = null;
-    // Track new TE node id by its source TE node key
-    private Map<TeNodeKey, Long> sourceNewTeNodeIdMap = Maps.newHashMap();
-    // Track the external link keys by the plugId
-    private Map<Long, LinkKeyPair> externalLinkMap = Maps.newHashMap();
-    private ExecutorService executor;
-
-    /**
-     * Activation helper function.
-     */
-    public void activateBasics() {
-        store.setDelegate(delegate);
-        store.setProviderId(providerId);
-        eventDispatcher.addSink(TeTopologyEvent.class, listenerRegistry);
-    }
-
-    /**
-     * Deactivation helper function.
-     */
-    public void deactivateBasics() {
-        store.unsetDelegate(delegate);
-        eventDispatcher.removeSink(TeTopologyEvent.class);
-    }
-
-    @Activate
-    public void activate() {
-        activateBasics();
-        appId = coreService.registerApplication(APP_NAME);
-        cfgService.registerConfigFactory(factory);
-        executor = newFixedThreadPool(MAX_THREADS, groupedThreads("onos/tetopology", "build-%d", log));
-
-        cfgService.addListener(cfgLister);
-        executor.execute(new TopologyMergerTask());
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        deactivateBasics();
-        externalLinkMap.clear();
-        cfgService.removeListener(cfgLister);
-        cfgService.unregisterConfigFactory(factory);
-        executor.shutdownNow();
-        executor = null;
-        log.info("Stopped");
-    }
-
-    @Override
-    protected TeTopologyProviderService createProviderService(TeTopologyProvider provider) {
-        return new InternalTopologyProviderService(provider);
-    }
-
-    private class InternalTopologyProviderService
-                      extends AbstractProviderService<TeTopologyProvider>
-                      implements TeTopologyProviderService {
-
-        protected InternalTopologyProviderService(TeTopologyProvider provider) {
-            super(provider);
-        }
-
-        @Override
-        public void networkUpdated(Network network) {
-            store.updateNetwork(network);
-        }
-
-        @Override
-        public void networkRemoved(KeyId networkId) {
-            store.removeNetwork(networkId);
-        }
-
-        @Override
-        public void linkUpdated(NetworkLinkKey linkKey, NetworkLink link) {
-            store.updateNetworkLink(linkKey, link);
-        }
-
-        @Override
-        public void linkRemoved(NetworkLinkKey linkKey) {
-            store.removeNetworkLink(linkKey);
-        }
-
-        @Override
-        public void nodeUpdated(NetworkNodeKey nodeKey, NetworkNode node) {
-            store.updateNetworkNode(nodeKey, node);
-        }
-
-        @Override
-        public void nodeRemoved(NetworkNodeKey nodeKey) {
-            store.removeNetworkNode(nodeKey);
-        }
-
-        @Override
-        public void terminationPointUpdated(TerminationPointKey terminationPointKey,
-                TerminationPoint terminationPoint) {
-            store.updateTerminationPoint(terminationPointKey, terminationPoint);
-        }
-
-        @Override
-        public void terminationPointRemoved(TerminationPointKey terminationPointKey) {
-            store.removeTerminationPoint(terminationPointKey);
-        }
-    }
-
-    private boolean isCustomizedLearnedTopology(TeTopologyKey key) {
-        if (store.teTopology(key).flags().get(BIT_CUSTOMIZED) &&
-                store.teTopology(key).flags().get(BIT_LEARNT)) {
-            return true;
-        }
-        return false;
-    }
-
-    // Task for merge the learned topology.
-    private class TopologyMergerTask implements Runnable {
-
-        public TopologyMergerTask() {
-        }
-
-        @Override
-        public void run() {
-            try {
-                TeTopologyMapEvent event;
-                while ((event = store.mapEventQueue().take()) != null) {
-                    switch (event.type()) {
-                    case TE_TOPOLOGY_ADDED:
-                    case TE_TOPOLOGY_UPDATED:
-                        TeTopology teTopology = store.teTopology(event.teTopologyKey());
-                        post(new TeTopologyEvent(event.type(), teTopology));
-                        if (mdsc && event.type() == TE_TOPOLOGY_ADDED &&
-                                teTopology.flags().get(BIT_CUSTOMIZED) &&
-                                teTopology.flags().get(BIT_LEARNT)) {
-                            log.debug("TeTopology to be merged: {}", teTopology);
-                            mergeTopology(teTopology);
-                        }
-                        break;
-                    case TE_TOPOLOGY_REMOVED:
-                        post(new TeTopologyEvent(TE_TOPOLOGY_REMOVED,
-                                                 new DefaultTeTopology(event.teTopologyKey(),
-                                                                      null, null, null, null)));
-                        break;
-                    case TE_NODE_ADDED:
-                    case TE_NODE_UPDATED:
-                        if (store.teTopology(event.teNodeKey().teTopologyKey()) == null) {
-                            // Event should be ignored when the topology is not there.
-                            break;
-                        }
-                        TeNode teNode = store.teNode(event.teNodeKey());
-                        post(new TeTopologyEvent(event.type(),
-                                                 new TeNodeEventSubject(event.teNodeKey(), teNode)));
-                        if (mdsc && isCustomizedLearnedTopology(event.teNodeKey().teTopologyKey())) {
-                            updateSourceTeNode(mergedTopology.teNodes(),
-                                               event.teNodeKey().teTopologyKey(), teNode, true);
-                        }
-                        break;
-                    case TE_NODE_REMOVED:
-                        if (store.teTopology(event.teNodeKey().teTopologyKey()) == null) {
-                            // Event should be ignored when the topology is not there.
-                            break;
-                        }
-                        post(new TeTopologyEvent(TE_NODE_REMOVED,
-                                                 new TeNodeEventSubject(event.teNodeKey(), null)));
-                        if (mdsc && isCustomizedLearnedTopology(event.teNodeKey().teTopologyKey())) {
-                            removeSourceTeNode(mergedTopology.teNodes(), event.teNodeKey(), true);
-                        }
-                        break;
-                    case TE_LINK_ADDED:
-                    case TE_LINK_UPDATED:
-                        if (store.teTopology(event.teLinkKey().teTopologyKey()) == null ||
-                                store.teNode(event.teLinkKey().teNodeKey()) == null) {
-                            // Event should be ignored when the topology or node is not there.
-                            break;
-                        }
-                        TeLink teLink = store.teLink(event.teLinkKey());
-                        post(new TeTopologyEvent(event.type(),
-                                                 new TeLinkEventSubject(event.teLinkKey(), teLink)));
-                        if (mdsc && isCustomizedLearnedTopology(event.teLinkKey().teTopologyKey())) {
-                            Map<TeLinkTpKey, TeLink> teLinks = Maps.newHashMap(mergedTopology.teLinks());
-                            updateSourceTeLink(teLinks, event.teLinkKey().teTopologyKey(), teLink, true);
-                            updateMergedTopology(mergedTopology.teNodes(), teLinks);
-                        }
-                        break;
-                    case TE_LINK_REMOVED:
-                        if (store.teTopology(event.teLinkKey().teTopologyKey()) == null ||
-                                store.teNode(event.teLinkKey().teNodeKey()) == null) {
-                            // Event should be ignored when the topology or node is not there.
-                            break;
-                        }
-                        post(new TeTopologyEvent(TE_LINK_REMOVED,
-                                                 new TeLinkEventSubject(event.teLinkKey(), null)));
-                        if (mdsc && isCustomizedLearnedTopology(event.teLinkKey().teTopologyKey())) {
-                            Map<TeLinkTpKey, TeLink> teLinks = Maps.newHashMap(mergedTopology.teLinks());
-                            removeSourceTeLink(teLinks, event.teLinkKey(), true);
-                            updateMergedTopology(mergedTopology.teNodes(), teLinks);
-                        }
-                        break;
-                    case NETWORK_ADDED:
-                    case NETWORK_UPDATED:
-                        Network network = store.network(event.networkKey());
-                        post(new TeTopologyEvent(event.type(), network));
-                        break;
-                    case NETWORK_REMOVED:
-                        post(new TeTopologyEvent(NETWORK_REMOVED,
-                                                 new DefaultNetwork(event.networkKey(), null, null,
-                                                                    null, null, false, null,
-                                                                    NOT_OPTIMIZED)));
-                        break;
-                    case NODE_ADDED:
-                    case NODE_UPDATED:
-                        if (store.network(event.networkNodeKey().networkId()) == null) {
-                            // Event should be ignored when the network is not there.
-                            break;
-                        }
-                        NetworkNode node = store.networkNode(event.networkNodeKey());
-                        post(new TeTopologyEvent(event.type(),
-                                                 new NetworkNodeEventSubject(event.networkNodeKey(), node)));
-                        break;
-                    case NODE_REMOVED:
-                        if (store.network(event.networkNodeKey().networkId()) == null) {
-                            // Event should be ignored when the network is not there.
-                            break;
-                        }
-                        post(new TeTopologyEvent(NODE_REMOVED,
-                                                 new NetworkNodeEventSubject(event.networkNodeKey(), null)));
-                        break;
-                    case LINK_ADDED:
-                    case LINK_UPDATED:
-                        if (store.network(event.networkLinkKey().networkId()) == null) {
-                            // Event should be ignored when the network is not there.
-                            break;
-                        }
-                        NetworkLink link = store.networkLink(event.networkLinkKey());
-                        post(new TeTopologyEvent(event.type(),
-                                                 new NetworkLinkEventSubject(event.networkLinkKey(), link)));
-                        break;
-                    case LINK_REMOVED:
-                        if (store.network(event.networkLinkKey().networkId()) == null) {
-                            // Event should be ignored when the network is not there.
-                            break;
-                        }
-                        post(new TeTopologyEvent(LINK_REMOVED,
-                                                 new NetworkLinkEventSubject(event.networkLinkKey(), null)));
-                        break;
-                    default:
-                        break;
-                    }
-                }
-            } catch (InterruptedException e) {
-                log.warn("TopologyMergerTask is interrupted");
-                Thread.currentThread().interrupt();
-            } catch (Exception e) {
-                log.warn("Unable to merge topology", e);
-            }
-        }
-    }
-
-    private void removeSourceTeNode(Map<Long, TeNode> teNodes,
-                                    TeNodeKey srcNodeKey, boolean postEvent) {
-        Long mergedTeNodeId = sourceNewTeNodeIdMap.remove(srcNodeKey);
-        if (mergedTeNodeId == null) {
-            return;
-        }
-        if (teNodes.remove(mergedTeNodeId) != null && postEvent) {
-            TeNodeKey nodeKey = new TeNodeKey(mergedTopologyKey,
-                                              mergedTeNodeId);
-            post(new TeTopologyEvent(TE_NODE_REMOVED,
-                                     new TeNodeEventSubject(nodeKey, null)));
-            post(new TeTopologyEvent(NODE_REMOVED,
-                                     new NetworkNodeEventSubject(TeMgrUtil
-                                             .networkNodeKey(nodeKey), null)));
-        }
-    }
-
-    private void updateSourceTeNode(Map<Long, TeNode> teNodes, TeTopologyKey srcTopoKey,
-                                    TeNode srcNode, boolean postEvent) {
-        TeNodeKey sourceTeNodeId = new TeNodeKey(srcTopoKey, srcNode.teNodeId());
-        Long mergedTeNodeId = sourceNewTeNodeIdMap.get(sourceTeNodeId);
-        boolean addNode = false;
-        if (mergedTeNodeId == null) {
-            // New node
-            addNode = true;
-            mergedTeNodeId = nextTeNodeId;
-            nextTeNodeId++;
-            if (nextTeNodeId >= teNodeIpEnd.toInt()) {
-                nextTeNodeId = teNodeIpStart.toInt();
-                log.warn("TE node Id is wrapped back");
-            }
-            sourceNewTeNodeIdMap.put(sourceTeNodeId, mergedTeNodeId);
-        }
-        TeTopologyKey underlayTopologyId = null; // No underlay
-        TeNodeKey supportTeNodeId = null; // No supporting
-
-        CommonNodeData common = new CommonNodeData(srcNode.name(), srcNode.adminStatus(),
-                                                   srcNode.opStatus(), srcNode.flags()); // No change
-        Map<Long, ConnectivityMatrix> connMatrices = srcNode.connectivityMatrices();
-        List<Long> teLinkIds = srcNode.teLinkIds(); // No change
-        Map<Long, TunnelTerminationPoint> ttps = null;
-        if (MapUtils.isNotEmpty(srcNode.tunnelTerminationPoints())) {
-            ttps = Maps.newHashMap();
-            for (Map.Entry<Long, TunnelTerminationPoint> entry : srcNode.tunnelTerminationPoints().entrySet()) {
-                TunnelTerminationPoint ttp = entry.getValue();
-                ttps.put(entry.getKey(),
-                         new DefaultTunnelTerminationPoint(ttp.ttpId(), ttp.switchingLayer(),
-                                                           ttp.encodingLayer(), ttp.flags(),
-                                                           ttp.interLayerLockList(),
-                                                           ttp.localLinkConnectivityList(),
-                                                           ttp.availAdaptBandwidth(),
-                                                           null)); //Remove supporting TTP Ids
-            }
-        }
-
-        List<Long> teTpIds = srcNode.teTerminationPointIds(); // No change
-        DefaultTeNode newNode = new DefaultTeNode(mergedTeNodeId, underlayTopologyId,
-                supportTeNodeId, sourceTeNodeId, common, connMatrices, teLinkIds,
-                ttps, teTpIds);
-        teNodes.put(mergedTeNodeId, newNode);
-        if (postEvent) {
-            //Post event for the TE node in the merged topology
-            TeNodeKey globalKey = new TeNodeKey(mergedTopologyKey, mergedTeNodeId);
-            post(new TeTopologyEvent(addNode ? TE_NODE_ADDED : TE_NODE_UPDATED,
-                                     new TeNodeEventSubject(globalKey, newNode)));
-            post(new TeTopologyEvent(addNode ? NODE_ADDED : NODE_UPDATED,
-                                     new NetworkNodeEventSubject(networkNodeKey(globalKey),
-                                             nodeBuilder(KeyId.keyId(
-                                                         Ip4Address.valueOf((int) newNode.teNodeId()).toString()),
-                                                         newNode))));
-        }
-    }
-
-    // Merge TE nodes
-    private void mergeNodes(Map<Long, TeNode> nodes, TeTopology topology) {
-
-        if (!MapUtils.isEmpty(topology.teNodes())) {
-            for (Map.Entry<Long, TeNode> entry : topology.teNodes().entrySet()) {
-                updateSourceTeNode(nodes, topology.teTopologyId(), entry.getValue(),
-                                   mergedTopology != null);
-            }
-        }
-    }
-
-    // Returns a new TeLink based on an existing TeLink with new attributes
-    private TeLink updateTeLink(TeLinkTpKey newKey, TeLinkTpKey peerTeLinkKey,
-            TeTopologyKey underlayTopologyId, TeLinkTpGlobalKey supportTeLinkId,
-            TeLinkTpGlobalKey sourceTeLinkId, ExternalLink externalLink,
-            TeLink exLink) {
-        UnderlayPath underlayPath = null;
-        if (underlayTopologyId != null &&
-                underlayTopologyId.equals(exLink.underlayTeTopologyId())) {
-            underlayPath = new UnderlayPath(exLink.primaryPath(),
-                                            exLink.backupPaths(), exLink.tunnelProtectionType(),
-                                            exLink.sourceTtpId(), exLink.destinationTtpId(),
-                                            exLink.teTunnelId()
-                                            );
-        }
-
-        TePathAttributes teAttributes = new TePathAttributes(exLink.cost(),
-                exLink.delay(), exLink.srlgs());
-        LinkBandwidth bandwidth = new LinkBandwidth(exLink.maxBandwidth(),
-                                                    exLink.availBandwidth(),
-                                                    exLink.maxAvailLspBandwidth(),
-                                                    exLink.minAvailLspBandwidth(),
-                                                    exLink.oduResource());
-        BitSet flags = exLink.flags();
-        if (peerTeLinkKey != null &&
-                externalLink != null && externalLink.plugId() != null) {
-            // Assuming this is an inter-domain link which is merged with its peer,
-            // needs to clear BIT_ACCESS_INTERDOMAIN
-            flags.clear(BIT_ACCESS_INTERDOMAIN);
-        } else if (peerTeLinkKey == null &&
-                externalLink != null && externalLink.plugId() != null) {
-            // Assuming this is an inter-domain link which lost its peer,
-            // needs to clear BIT_ACCESS_INTERDOMAIN
-            flags.set(BIT_ACCESS_INTERDOMAIN);
-        }
-
-        CommonLinkData common = new CommonLinkData(exLink.adminStatus(), exLink.opStatus(),
-                flags, exLink.switchingLayer(), exLink.encodingLayer(),
-                externalLink, underlayPath, teAttributes,
-                exLink.administrativeGroup(), exLink.interLayerLocks(),
-                bandwidth);
-        return new DefaultTeLink(newKey, peerTeLinkKey, underlayTopologyId,
-                supportTeLinkId, sourceTeLinkId, common);
-    }
-
-    private class LinkKeyPair {
-        private TeLinkTpKey firstKey;
-        private TeLinkTpKey secondKey;
-
-        public LinkKeyPair(TeLinkTpKey firstKey) {
-            this.firstKey = firstKey;
-        }
-
-        public TeLinkTpKey firstKey() {
-            return firstKey;
-        }
-
-        public void setFirstKey(TeLinkTpKey firstKey) {
-            this.firstKey = firstKey;
-        }
-
-        public TeLinkTpKey secondKey() {
-            return secondKey;
-        }
-
-        public void setSecondKey(TeLinkTpKey secondKey) {
-            this.secondKey = secondKey;
-        }
-
-        public boolean isFirstKey(TeLinkTpKey linkKey) {
-            return firstKey == null ? false : firstKey.equals(linkKey);
-        }
-
-        public boolean isSecondKey(TeLinkTpKey linkKey) {
-            return secondKey == null ? false : secondKey.equals(linkKey);
-        }
-
-        public boolean isEmpty() {
-            return firstKey == null && secondKey == null;
-        }
-
-        @Override
-        public String toString() {
-            return MoreObjects.toStringHelper(this)
-                    .add("firstKey", firstKey)
-                    .add("secondKey", secondKey)
-                    .toString();
-        }
-    }
-
-    private void removeSourceTeLink(Map<TeLinkTpKey, TeLink> teLinks, TeLinkTpGlobalKey teLinkKey,
-                                    boolean postEvent) {
-        TeNodeKey sourceTeNodeKey = teLinkKey.teNodeKey();
-        Long newTeNodeId = sourceNewTeNodeIdMap.get(sourceTeNodeKey);
-        if (newTeNodeId == null) {
-            return;
-        }
-        TeLinkTpKey newLinkKey = new TeLinkTpKey(newTeNodeId, teLinkKey.teLinkTpId());
-        TeLink teLink = teLinks.remove(newLinkKey);
-        if (teLink == null) {
-            return;
-        }
-        //Post event
-        if (postEvent) {
-            TeLinkTpGlobalKey globalKey = new TeLinkTpGlobalKey(mergedTopologyKey,
-                                                                newLinkKey);
-            post(new TeTopologyEvent(TE_LINK_REMOVED,
-                                     new TeLinkEventSubject(globalKey, null)));
-            post(new TeTopologyEvent(LINK_REMOVED,
-                                     new NetworkLinkEventSubject(networkLinkKey(globalKey),
-                                                                 null)));
-        }
-
-        if (teLink.externalLink() != null && teLink.externalLink().plugId() != null) {
-            // Update the LinkKeyPair in externalLinkMap
-            LinkKeyPair pair = externalLinkMap.get(teLink.externalLink().plugId());
-            if (pair.isFirstKey(newLinkKey)) {
-                pair.setFirstKey(null);
-            } else if (pair.isSecondKey(newLinkKey)) {
-                pair.setSecondKey(null);
-            }
-            if (pair.isEmpty()) {
-                externalLinkMap.remove(teLink.externalLink().plugId());
-            }
-        }
-        TeLinkTpKey peerTeLinkKey = teLink.peerTeLinkKey();
-        if (peerTeLinkKey != null) {
-            // Update peerLink's peerTeLinkKey to null
-            TeLink peerLink = teLinks.get(peerTeLinkKey);
-            if (peerLink == null || peerLink.peerTeLinkKey() == null) {
-                return;
-            }
-            TeLink newPeerLink = updateTeLink(peerTeLinkKey, null,
-                                       peerLink.underlayTeTopologyId(), peerLink.supportingTeLinkId(),
-                                       peerLink.sourceTeLinkId(), peerLink.externalLink(), peerLink);
-            teLinks.put(peerTeLinkKey, newPeerLink);
-            if (postEvent) {
-                TeLinkTpGlobalKey globalKey = new TeLinkTpGlobalKey(mergedTopologyKey,
-                                                                    peerTeLinkKey);
-                post(new TeTopologyEvent(TE_LINK_UPDATED,
-                                         new TeLinkEventSubject(globalKey,
-                                                                newPeerLink)));
-                post(new TeTopologyEvent(LINK_UPDATED,
-                                         new NetworkLinkEventSubject(networkLinkKey(globalKey),
-                                                                     linkBuilder(toNetworkLinkId(peerTeLinkKey),
-                                                                                 newPeerLink))));
-            }
-        }
-    }
-
-    private void updateSourceTeLink(Map<TeLinkTpKey, TeLink> teLinks, TeTopologyKey srcTopoKey,
-                                    TeLink srcLink, boolean postEvent) {
-        TeNodeKey sourceTeNodeId = new TeNodeKey(srcTopoKey,
-                                                 srcLink.teLinkKey().teNodeId());
-        TeLinkTpKey newKey = new TeLinkTpKey(
-                sourceNewTeNodeIdMap.get(sourceTeNodeId),
-                srcLink.teLinkKey().teLinkTpId());
-        TeLinkTpKey peerTeLinkKey = null;
-        if (srcLink.peerTeLinkKey() != null) {
-            TeNodeKey sourcePeerNode = new TeNodeKey(srcTopoKey,
-                                                     srcLink.peerTeLinkKey().teNodeId());
-            peerTeLinkKey = new TeLinkTpKey(
-                    sourceNewTeNodeIdMap.get(sourcePeerNode),
-                    srcLink.peerTeLinkKey().teLinkTpId());
-        }
-
-        if (srcLink.externalLink() != null &&
-                srcLink.externalLink().plugId() != null) {
-            // externalLinkKey doesn't have topology Id.
-            // using plugId for now
-            LinkKeyPair pair = externalLinkMap.get(srcLink.externalLink().plugId());
-            if (pair == null) {
-                // Store it in the map
-                externalLinkMap.put(srcLink.externalLink().plugId(),
-                                    new LinkKeyPair(newKey));
-            } else {
-                if (newKey.equals(pair.firstKey())) {
-                    peerTeLinkKey = pair.secondKey();
-                } else if (newKey.equals(pair.secondKey())) {
-                    peerTeLinkKey = pair.firstKey();
-                } else if (pair.firstKey() == null) {
-                    peerTeLinkKey = pair.secondKey();
-                    pair.setFirstKey(newKey);
-                } else if (pair.secondKey() == null) {
-                    peerTeLinkKey = pair.firstKey();
-                    pair.setSecondKey(newKey);
-                }
-
-                if (peerTeLinkKey != null) {
-                    TeLink peerLink = teLinks.get(peerTeLinkKey);
-                    if (peerLink != null && (peerLink.peerTeLinkKey() == null
-                            || !peerLink.peerTeLinkKey().equals(newKey))) {
-                        // Update peer Link with local link key
-                        TeLink newPeerLink = updateTeLink(peerTeLinkKey, newKey,
-                                                          peerLink.underlayTeTopologyId(),
-                                                          peerLink.supportingTeLinkId(),
-                                                          peerLink.sourceTeLinkId(),
-                                                          peerLink.externalLink(),
-                                                          peerLink);
-                        teLinks.put(peerTeLinkKey, newPeerLink);
-                        if (postEvent) {
-                            TeLinkTpGlobalKey globalKey = new TeLinkTpGlobalKey(mergedTopologyKey,
-                                                                                peerTeLinkKey);
-                            post(new TeTopologyEvent(TE_LINK_UPDATED,
-                                                     new TeLinkEventSubject(globalKey,
-                                                                            newPeerLink)));
-                            post(new TeTopologyEvent(LINK_UPDATED,
-                                                     new NetworkLinkEventSubject(
-                                                             networkLinkKey(globalKey),
-                                                             linkBuilder(toNetworkLinkId(peerTeLinkKey),
-                                                                         newPeerLink))));
-                        }
-                    }
-                }
-            }
-        }
-
-        TeTopologyKey underlayTopologyId = null; // No underlay
-        TeLinkTpGlobalKey supportTeLinkId = null; // No support
-        // Source link for the new updated link
-        TeLinkTpGlobalKey sourceTeLinkId = new TeLinkTpGlobalKey(srcTopoKey, srcLink.teLinkKey());
-        TeLink updatedLink = updateTeLink(newKey, peerTeLinkKey, underlayTopologyId,
-                                      supportTeLinkId, sourceTeLinkId,
-                                      srcLink.externalLink(), srcLink);
-        TeLinkTpGlobalKey newGlobalKey = new TeLinkTpGlobalKey(mergedTopologyKey, newKey);
-        boolean newLink = teLinks.get(newKey) == null ? true : false;
-        teLinks.put(newKey, updatedLink);
-        if (postEvent) {
-            //Post event
-            post(new TeTopologyEvent(newLink ? TE_LINK_ADDED : TE_LINK_UPDATED,
-                                     new TeLinkEventSubject(newGlobalKey, updatedLink)));
-            post(new TeTopologyEvent(newLink ? LINK_ADDED : LINK_UPDATED,
-                                     new NetworkLinkEventSubject(networkLinkKey(newGlobalKey),
-                                             linkBuilder(toNetworkLinkId(updatedLink.teLinkKey()),
-                                                         updatedLink))));
-        }
-    }
-
-    // Merge TE links
-    private void mergeLinks(Map<TeLinkTpKey, TeLink> teLinks, TeTopology topology) {
-        if (!MapUtils.isEmpty(topology.teLinks())) {
-            for (Map.Entry<TeLinkTpKey, TeLink> entry : topology.teLinks().entrySet()) {
-                TeLink srcLink = entry.getValue();
-                updateSourceTeLink(teLinks, topology.teTopologyId(), srcLink,
-                                   mergedTopology != null);
-            }
-        }
-    }
-
-    // Update the merged topology with new TE nodes and links
-    private void updateMergedTopology(Map<Long, TeNode> teNodes, Map<TeLinkTpKey, TeLink> teLinks) {
-        boolean newTopology = mergedTopology == null;
-        BitSet flags = newTopology ? new BitSet(TeConstants.FLAG_MAX_BITS) : mergedTopology.flags();
-        flags.set(BIT_MERGED);
-        CommonTopologyData commonData  = new CommonTopologyData(newTopology ?
-                                                                toNetworkId(mergedTopologyKey) :
-                                                                mergedTopology.networkId(),
-                                                                NOT_OPTIMIZED,
-                                                                flags, DeviceId.deviceId("localHost"));
-        mergedTopology = new DefaultTeTopology(mergedTopologyKey, teNodes, teLinks,
-                                               Long.toString(mergedTopologyKey.topologyId()), commonData);
-        mergedNetwork = networkBuilder(mergedTopology);
-        log.info("Nodes# {}, Links# {}", mergedTopology.teNodes().size(), mergedTopology.teLinks().size());
-    }
-
-    // Merge the new learned topology
-    private void mergeTopology(TeTopology topology) {
-        boolean newTopology = mergedTopology == null;
-        mergedTopologyKey = newTopology ?
-                            new TeTopologyKey(providerId, DEFAULT_CLIENT_ID,
-                                              store.nextTeTopologyId()) :
-                            mergedTopology.teTopologyId();
-
-        Map<Long, TeNode> teNodes = newTopology || mergedTopology.teNodes() == null ?
-                Maps.newHashMap() : Maps.newHashMap(mergedTopology.teNodes());
-        mergeNodes(teNodes, topology);
-        Map<TeLinkTpKey, TeLink> teLinks = newTopology || mergedTopology.teLinks() == null ?
-                Maps.newHashMap() : Maps.newHashMap(mergedTopology.teLinks());
-        mergeLinks(teLinks, topology);
-        updateMergedTopology(teNodes, teLinks);
-        log.debug("mergedTopology {}", mergedTopology);
-
-        if (newTopology) {
-            // Post events for the merged network topology;
-            post(new TeTopologyEvent(TE_TOPOLOGY_ADDED, mergedTopology));
-            post(new TeTopologyEvent(NETWORK_ADDED, mergedNetwork));
-        }
-    }
-
-    private TeTopologyKey newTeTopologyKey(TeTopology teTopology) {
-        TeTopologyKey key = teTopology.teTopologyId();
-        if (key == null || teTopology.teTopologyIdStringValue() == null) {
-            log.error("Ignoring the non-TE topology");
-            throw new ApplicationException("Missing TE topology ID");
-        }
-        // Get the topologyId numeric value
-        long idValue = key.topologyId();
-        if (idValue == TeConstants.NIL_LONG_VALUE) {
-            if (teTopology.teTopologyIdStringValue() != null) {
-                try {
-                    idValue = Long.parseLong(teTopology.teTopologyIdStringValue());
-                } catch (NumberFormatException e) {
-                    // Can't get the long value from the string.
-                    // Use an assigned id value from local id pool,
-                    idValue = store.nextTeTopologyId();
-                }
-                return new TeTopologyKey(key.providerId(), key.clientId(), idValue);
-            }
-        }
-        return null;
-    }
-
-    private class InternalConfigListener implements NetworkConfigListener {
-
-        @Override
-        public void event(NetworkConfigEvent event) {
-            try {
-                providerId = cfgService.getConfig(appId, TeTopologyConfig.class)
-                                       .providerId();
-                store.setProviderId(providerId);
-                teNodeIpStart = cfgService.getConfig(appId, TeTopologyConfig.class)
-                                          .teNodeIpStart();
-                teNodeIpEnd = cfgService.getConfig(appId, TeTopologyConfig.class)
-                                        .teNodeIpEnd();
-                mdsc = cfgService.getConfig(appId, TeTopologyConfig.class)
-                        .mdsc().equals(MDSC_MODE);
-                nextTeNodeId = teNodeIpStart.toInt();
-            } catch (ConfigException e) {
-                log.error("Configuration error {}", e);
-            }
-        }
-
-        @Override
-        public boolean isRelevant(NetworkConfigEvent event) {
-            return event.configClass().equals(TeTopologyConfig.class) &&
-                    (event.type() == CONFIG_ADDED ||
-                    event.type() == CONFIG_UPDATED);
-        }
-    }
-
-    @Override
-    public TeTopologies teTopologies() {
-        Map<TeTopologyKey, TeTopology> map;
-        if (MapUtils.isNotEmpty(store.teTopologies().teTopologies())) {
-            map = Maps.newHashMap(store.teTopologies().teTopologies());
-        } else {
-            map = Maps.newHashMap();
-        }
-        if (mergedTopology != null) {
-            map.put(mergedTopologyKey, mergedTopology);
-        }
-        return new DefaultTeTopologies(store.teTopologies().name(), map);
-    }
-
-    @Override
-    public TeTopology teTopology(TeTopologyKey topologyId) {
-        if (mergedTopology != null &&
-                topologyId != null &&
-                topologyId.equals(mergedTopologyKey)) {
-            return mergedTopology;
-        }
-        return store.teTopology(topologyId);
-    }
-
-    @Override
-    public TeTopology mergedTopology() {
-        return mergedTopology;
-    }
-
-    @Override
-    public void updateTeTopology(TeTopology teTopology) {
-        TeTopologyKey newKey = null;
-        try {
-            newKey = newTeTopologyKey(teTopology);
-        } catch (ApplicationException e) {
-            log.error("Ignoring the non-TE topology");
-            return;
-        }
-
-        // TE topology is updated here from other APP or NBI, the flag
-        // BIT_CUSTOMIZED or BIT_MERGED should be set.
-        BitSet flags = teTopology.flags();
-        if (flags == null ||
-                !(flags.get(BIT_CUSTOMIZED) || flags.get(BIT_MERGED))) {
-            log.error("TE topology flags {} are not set properly", flags);
-            return;
-        }
-
-        if (newKey != null) {
-            DefaultTeTopology newTopology = new DefaultTeTopology(
-                    newKey,
-                    teTopology.teNodes(), teTopology.teLinks(),
-                    teTopology.teTopologyIdStringValue(), new CommonTopologyData(teTopology));
-            // Update with new data
-            store.updateTeTopology(newTopology);
-        } else {
-            store.updateTeTopology(teTopology);
-        }
-    }
-
-    @Override
-    public void removeTeTopology(TeTopologyKey topologyId) {
-        store.removeTeTopology(topologyId);
-    }
-
-    @Override
-    public Networks networks() {
-        List<Network> networks;
-        if (CollectionUtils.isNotEmpty(store.networks())) {
-            networks = Lists.newArrayList(store.networks());
-        } else {
-            networks = Lists.newArrayList();
-        }
-        if (mergedNetwork != null) {
-            networks.add(mergedNetwork);
-        }
-        return new DefaultNetworks(networks);
-    }
-
-    @Override
-    public Network network(KeyId networkId) {
-        if (mergedNetwork != null &&
-                mergedNetwork.networkId().equals(networkId)) {
-            return mergedNetwork;
-        }
-        return store.network(networkId);
-    }
-
-    @Override
-    public void updateNetwork(Network network) {
-        // TODO: This will be implemented if required.
-    }
-
-    @Override
-    public void removeNetwork(KeyId networkId) {
-        // TODO: This will be implemented if required.
-    }
-
-    @Override
-    public TeNode teNode(TeNodeKey nodeId) {
-        return nodeId.teTopologyKey().equals(mergedTopologyKey) ?
-               mergedTopology.teNode(nodeId.teNodeId()) :
-               store.teNode(nodeId);
-    }
-
-    @Override
-    public TeLink teLink(TeLinkTpGlobalKey linkId) {
-        return linkId.teTopologyKey().equals(mergedTopologyKey) ?
-               mergedTopology.teLink(linkId.teLinkTpKey()) :
-               store.teLink(linkId);
-    }
-
-    @Override
-    public TunnelTerminationPoint tunnelTerminationPoint(TtpKey ttpId) {
-        return ttpId.teTopologyKey().equals(mergedTopologyKey) ?
-               mergedTopology.teNode(ttpId.teNodeId()).tunnelTerminationPoint(ttpId.ttpId()) :
-               store.tunnelTerminationPoint(ttpId);
-    }
-
-    @Override
-    public KeyId networkId(TeTopologyKey teTopologyKey) {
-        return teTopologyKey.equals(mergedTopologyKey) ?
-               mergedNetwork.networkId() :
-               store.networkId(teTopologyKey);
-    }
-
-    @Override
-    public NetworkNodeKey nodeKey(TeNodeKey teNodeKey) {
-        return teNodeKey.teTopologyKey().equals(mergedTopologyKey) ?
-               networkNodeKey(teNodeKey) :
-               store.nodeKey(teNodeKey);
-    }
-
-    @Override
-    public NetworkLinkKey linkKey(TeLinkTpGlobalKey teLinkKey) {
-        return teLinkKey.teTopologyKey().equals(mergedTopologyKey) ?
-               networkLinkKey(teLinkKey) :
-               store.linkKey(teLinkKey);
-    }
-
-    @Override
-    public TerminationPointKey terminationPointKey(TeLinkTpGlobalKey teTpKey) {
-        return teTpKey.teTopologyKey().equals(mergedTopologyKey) ?
-               new TerminationPointKey(networkNodeKey(teTpKey.teNodeKey()),
-                                                      KeyId.keyId(Long.toString(teTpKey.teLinkTpId()))) :
-               store.terminationPointKey(teTpKey);
-    }
-
-    @Override
-    public long teContollerId() {
-        return providerId;
-    }
-}
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyMapEvent.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyMapEvent.java
deleted file mode 100644
index 285c5a5..0000000
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyMapEvent.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.impl;
-
-import org.onosproject.tetopology.management.api.KeyId;
-import org.onosproject.tetopology.management.api.TeTopologyEvent.Type;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-
-import com.google.common.base.MoreObjects;
-
-public class TeTopologyMapEvent {
-    private final Type type;
-    private TeTopologyKey teTopologyKey;
-    private TeNodeKey teNodeKey;
-    private TeLinkTpGlobalKey teLinkKey;
-    private KeyId networkKey;
-    private NetworkNodeKey networkNodeKey;
-    private NetworkLinkKey networkLinkKey;
-
-    /**
-     * Creates an instance of TeTopologyMapEvent.
-     *
-     * @param type the map event type
-     */
-    public TeTopologyMapEvent(Type type) {
-        this.type = type;
-    }
-
-    /**
-     * Returns the map event type.
-     *
-     * @return the type
-     */
-    public Type type() {
-        return type;
-    }
-
-    /**
-     * Returns the TE topology key of the event.
-     *
-     * @return the teTopologyKey
-     */
-    public TeTopologyKey teTopologyKey() {
-        return teTopologyKey;
-    }
-
-    /**
-     * Sets the TE topology key of the event.
-     *
-     * @param teTopologyKey the teTopologyKey to set
-     */
-    public void setTeTopologyKey(TeTopologyKey teTopologyKey) {
-        this.teTopologyKey = teTopologyKey;
-    }
-
-    /**
-     * Returns the TE node key of the event.
-     *
-     * @return the teNodeKey
-     */
-    public TeNodeKey teNodeKey() {
-        return teNodeKey;
-    }
-
-    /**
-     * Sets the TE node key of the event.
-     *
-     * @param teNodeKey the teNodeKey to set
-     */
-    public void setTeNodeKey(TeNodeKey teNodeKey) {
-        this.teNodeKey = teNodeKey;
-    }
-
-    /**
-     * Returns the TE link key of the event.
-     *
-     * @return the teLinkKey
-     */
-    public TeLinkTpGlobalKey teLinkKey() {
-        return teLinkKey;
-    }
-
-    /**
-     * Sets the TE link key of the event.
-     *
-     * @param teLinkKey the teLinkKey to set
-     */
-    public void setTeLinkKey(TeLinkTpGlobalKey teLinkKey) {
-        this.teLinkKey = teLinkKey;
-    }
-
-    /**
-     * Returns the network key of the event.
-     *
-     * @return the networkKey
-     */
-    public KeyId networkKey() {
-        return networkKey;
-    }
-
-    /**
-     * Sets the network key of the event.
-     *
-     * @param networkKey the networkKey to set
-     */
-    public void setNetworkKey(KeyId networkKey) {
-        this.networkKey = networkKey;
-    }
-
-    /**
-     * Returns the network node key of the event.
-     *
-     * @return the networkNodeKey
-     */
-    public NetworkNodeKey networkNodeKey() {
-        return networkNodeKey;
-    }
-
-    /**
-     * Sets the network node key of the event.
-     *
-     * @param networkNodeKey the networkNodeKey to set
-     */
-    public void setNetworkNodeKey(NetworkNodeKey networkNodeKey) {
-        this.networkNodeKey = networkNodeKey;
-    }
-
-    /**
-     * Returns the network link key of the event.
-     *
-     * @return the networkLinkKey
-     */
-    public NetworkLinkKey networkLinkKey() {
-        return networkLinkKey;
-    }
-
-    /**
-     * Sets the network link key of the event.
-     *
-     * @param networkLinkKey the networkLinkKey to set
-     */
-    public void setNetworkLinkKey(NetworkLinkKey networkLinkKey) {
-        this.networkLinkKey = networkLinkKey;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("type", type)
-                .add("teTopologyKey", teTopologyKey)
-                .add("teNodeKey", teNodeKey)
-                .add("teLinkKey", teLinkKey)
-                .add("networkKey", networkKey)
-                .add("networkNodeKey", networkNodeKey)
-                .add("networkLinkKey", networkLinkKey)
-                .toString();
-    }
-
-}
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyStore.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyStore.java
deleted file mode 100644
index 007d940..0000000
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyStore.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.impl;
-
-import java.util.List;
-import java.util.concurrent.BlockingQueue;
-
-import org.onosproject.store.Store;
-import org.onosproject.tetopology.management.api.KeyId;
-import org.onosproject.tetopology.management.api.Network;
-import org.onosproject.tetopology.management.api.TeTopologies;
-import org.onosproject.tetopology.management.api.TeTopology;
-import org.onosproject.tetopology.management.api.TeTopologyEvent;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.link.NetworkLink;
-import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
-import org.onosproject.tetopology.management.api.link.TeLink;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.node.NetworkNode;
-import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
-import org.onosproject.tetopology.management.api.node.TeNode;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TerminationPoint;
-import org.onosproject.tetopology.management.api.node.TerminationPointKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-import org.onosproject.tetopology.management.api.node.TunnelTerminationPoint;
-
-/**
- * Inventory of TE network topology.
- */
-public interface TeTopologyStore
-        extends Store<TeTopologyEvent, TeTopologyStoreDelegate> {
-
-    /**
-     * Returns a collection of currently known networks.
-     *
-     * @return a collection of stored networks
-     */
-    List<Network> networks();
-
-    /**
-     * Returns a network.
-     *
-     * @param  networkId network id in URI format
-     * @return value of network
-     */
-    Network network(KeyId networkId);
-
-    /**
-     * Updates a network.
-     *
-     * @param network value of the network to be updated
-     */
-    void updateNetwork(Network network);
-
-    /**
-     * Removes a network.
-     *
-     * @param  networkId network id in URI format
-     */
-    void removeNetwork(KeyId networkId);
-
-    /**
-     * Returns a network link.
-     *
-     * @param linkKey link key
-     * @return value of network link
-     */
-    NetworkLink networkLink(NetworkLinkKey linkKey);
-
-    /**
-     * Updates a network link.
-     *
-     * @param linkKey link key
-     * @param link link object to be updated
-    */
-    void updateNetworkLink(NetworkLinkKey linkKey, NetworkLink link);
-
-    /**
-     * Removes a network link.
-     *
-     * @param linkKey link key
-     */
-    void removeNetworkLink(NetworkLinkKey linkKey);
-
-    /**
-     * Returns a network node.
-     *
-     * @param nodeKey node key
-     * @return value of network node
-     */
-    NetworkNode networkNode(NetworkNodeKey nodeKey);
-
-    /**
-     * Updates a network node.
-     *
-     * @param nodeKey node key
-     * @param node node object to be updated
-     */
-    void updateNetworkNode(NetworkNodeKey nodeKey, NetworkNode node);
-
-    /**
-     * Removes a network node.
-     *
-     * @param nodeKey node key
-     */
-    void removeNetworkNode(NetworkNodeKey nodeKey);
-
-    /**
-     * Updates a terminationPoint.
-     *
-     * @param terminationPointKey termination point id
-     * @param terminationPoint termination point object to be updated
-     */
-    void updateTerminationPoint(TerminationPointKey terminationPointKey,
-                                TerminationPoint terminationPoint);
-
-    /**
-     * Removes a terminationPoint.
-     *
-     * @param terminationPointKey termination point id
-     */
-    void removeTerminationPoint(TerminationPointKey terminationPointKey);
-
-    /**
-     * Returns a collection of currently known TE topologies.
-     *
-     * @return a collection of topologies
-     */
-    TeTopologies teTopologies();
-
-    /**
-     * Returns the TE Topology identified by its Id.
-     *
-     * @param  topologyId TE topology Key
-     * @return value of TeTopology
-     */
-    TeTopology teTopology(TeTopologyKey topologyId);
-
-    /**
-     * Creates or updates a TE topology.
-     *
-     * @param teTopology value of the TE topology to be updated
-     */
-    void updateTeTopology(TeTopology teTopology);
-
-    /**
-     * Removes the TE Topology identified by its Id.
-     *
-     * @param topologyId TE topology key
-     */
-    void removeTeTopology(TeTopologyKey topologyId);
-
-    /**
-     * Returns the TE node identified by its Id.
-     *
-     * @param  nodeId the te node key
-     * @return value of node
-     */
-    TeNode teNode(TeNodeKey nodeId);
-
-    /**
-     * Creates or updates a TE Node.
-     *
-     * @param nodeKey te node id
-     * @param node node object to be updated
-     */
-    void updateTeNode(TeNodeKey nodeKey, TeNode node);
-
-    /**
-     * Removes the TE node identified by its Id.
-     *
-     * @param  nodeId the te node key
-     */
-    void removeTeNode(TeNodeKey nodeId);
-
-    /**
-     * Returns the TE link identified by its Id.
-     *
-     * @param  linkId the te link key
-     * @return value of link
-     */
-    TeLink teLink(TeLinkTpGlobalKey linkId);
-
-    /**
-     * Creates or updates a TE Link.
-     *
-     * @param linkKey link id
-     * @param link teLink object to be updated
-     */
-    void updateTeLink(TeLinkTpGlobalKey linkKey, TeLink link);
-
-    /**
-     * Removes the TE link identified by its Id.
-     *
-     * @param  linkId the te link key
-     */
-    void removeTeLink(TeLinkTpGlobalKey linkId);
-
-    /**
-     * Returns a tunnel termination point identified by its id.
-     *
-     * @param  ttpId the tunnel termination point key
-     * @return the tunnel termination point
-     */
-    TunnelTerminationPoint tunnelTerminationPoint(TtpKey ttpId);
-
-    /**
-     * Returns the network Id for a TE Topology key.
-     *
-     * @param  teTopologyKey a TE topology key
-     * @return value of network Id
-     */
-    KeyId networkId(TeTopologyKey teTopologyKey);
-
-    /**
-     * Returns the network node key for a TE node key.
-     *
-     * @param  teNodeKey a TE node key
-     * @return value of network node key
-     */
-    NetworkNodeKey nodeKey(TeNodeKey teNodeKey);
-
-    /**
-     * Returns the network link key for a TE link key.
-     *
-     * @param  teLinkKey a TE node key
-     * @return value of network link key
-     */
-    NetworkLinkKey linkKey(TeLinkTpGlobalKey teLinkKey);
-
-    /**
-     * Returns the termination point key for a TE termination point key.
-     *
-     * @param  teTpKey a TE termination point key
-     * @return value of termination point key
-     */
-    TerminationPointKey terminationPointKey(TeLinkTpGlobalKey teTpKey);
-
-    /**
-     * Returns the long value of next available TE topology id.
-     *
-     * @return value of TE topology id
-     */
-    long nextTeTopologyId();
-
-    /**
-     * Returns the next available TE node Id in a TE topology.
-     *
-     * @param topologyKey TE topology key
-     * @return value of TE node id
-     */
-    long nextTeNodeId(TeTopologyKey topologyKey);
-
-    /**
-     * Sets the next available TE node Id in a TE topology.
-     *
-     * @param topologyKey TE topology key
-     * @param nextNodeId value of next TE node id
-     */
-    void setNextTeNodeId(TeTopologyKey topologyKey, long nextNodeId);
-
-    /**
-     * Returns the queue to store the events originating from consistent maps.
-     *
-     * @return value of the blocking queue
-     */
-    BlockingQueue<TeTopologyMapEvent> mapEventQueue();
-
-    /**
-     * Sets the provider ID.
-     *
-     * @param providerId value of provider Id
-     */
-    void setProviderId(long providerId);
-
-}
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyStoreDelegate.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyStoreDelegate.java
deleted file mode 100644
index cfecd63..0000000
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyStoreDelegate.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management.impl;
-
-import org.onosproject.store.StoreDelegate;
-import org.onosproject.tetopology.management.api.TeTopologyEvent;
-
-/**
- * Abstraction of TE networks store delegate.
- */
-public interface TeTopologyStoreDelegate extends StoreDelegate<TeTopologyEvent> {
-
-}
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/package-info.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/package-info.java
deleted file mode 100644
index fb0324e..0000000
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * TE Topology Management implementation.
- */
-package org.onosproject.tetopology.management.impl;
diff --git a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/DefaultBuilder.java b/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/DefaultBuilder.java
deleted file mode 100644
index 1c82fcc..0000000
--- a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/DefaultBuilder.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management;
-
-import java.util.BitSet;
-import java.util.List;
-import java.util.Map;
-
-import org.onlab.packet.Ip4Address;
-import org.onosproject.net.DeviceId;
-import org.onosproject.tetopology.management.api.DefaultNetwork;
-import org.onosproject.tetopology.management.api.EncodingType;
-import org.onosproject.tetopology.management.api.KeyId;
-import org.onosproject.tetopology.management.api.Network;
-import org.onosproject.tetopology.management.api.OptimizationType;
-import org.onosproject.tetopology.management.api.SwitchingType;
-import org.onosproject.tetopology.management.api.TeConstants;
-import org.onosproject.tetopology.management.api.TeStatus;
-import org.onosproject.tetopology.management.api.TeTopologyId;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.link.CommonLinkData;
-import org.onosproject.tetopology.management.api.link.DefaultNetworkLink;
-import org.onosproject.tetopology.management.api.link.DefaultTeLink;
-import org.onosproject.tetopology.management.api.link.ExternalLink;
-import org.onosproject.tetopology.management.api.link.LinkBandwidth;
-import org.onosproject.tetopology.management.api.link.NetworkLink;
-import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
-import org.onosproject.tetopology.management.api.link.OduResource;
-import org.onosproject.tetopology.management.api.link.TeLink;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.link.TeLinkTpKey;
-import org.onosproject.tetopology.management.api.link.TePathAttributes;
-import org.onosproject.tetopology.management.api.link.UnderlayPath;
-import org.onosproject.tetopology.management.api.node.CommonNodeData;
-import org.onosproject.tetopology.management.api.node.ConnectivityMatrix;
-import org.onosproject.tetopology.management.api.node.DefaultNetworkNode;
-import org.onosproject.tetopology.management.api.node.DefaultTeNode;
-import org.onosproject.tetopology.management.api.node.DefaultTerminationPoint;
-import org.onosproject.tetopology.management.api.node.DefaultTunnelTerminationPoint;
-import org.onosproject.tetopology.management.api.node.NetworkNode;
-import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
-import org.onosproject.tetopology.management.api.node.NodeTpKey;
-import org.onosproject.tetopology.management.api.node.TeNode;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TerminationPoint;
-import org.onosproject.tetopology.management.api.node.TunnelTerminationPoint;
-import org.onosproject.tetopology.management.impl.TeMgrUtil;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-/**
- * Builds a sample abstract TE Topology, which consists of one node(represents
- * an entire network), one inter-domain link and one TTP.
- */
-public final class DefaultBuilder {
-    private static final String NODEIP = "100.10.10.10";
-    // Bandwidth in GigaBits/second
-    private static final float[] ODU0BW = {1.25f, 1.25f, 1.25f, 1.25f, 1.25f, 1.25f, 1.25f, 1.25f};
-    private static final float[] ODU2BW = {10, 10, 10, 10, 10, 10, 10, 10};
-    private static final float[] ODU3BW = {40, 40, 40, 40, 40, 40, 40, 40};
-    private static final float[] ODU4BW = {100, 100, 100, 100, 100, 100, 100, 100};
-
-    private static final String ODU2 = "ODU2";
-    private static final String ODU3 = "ODU3";
-    private static final String ODU4 = "ODU4";
-
-    private static final long PROVIDER_ID = 0x100;
-    private static final long CLIENT_ID = 0x0a0a0a0a;
-    private static final long CLIENT_NIL = 0;
-    private static final long ABSTRACT_TOPOLOGY_ID = 100;
-    private static final long NATIVE_TOPOLOGY_ID = 1;
-    private static final long NUM_TPS = 1;
-    private static final long NUM_TTPS = 1;
-    private static final boolean ABSTRACT = true;
-    private static final boolean UNABSTRACT = false;
-    private static final int FIRST_INDEX = 0;
-    private static final long INTER_DOMAIN_LINK_PLUGID = 100;
-    private static final long LINK_COST = 500;
-    private static final long LINK_DELAY = 2000;
-    private static final long LINK_SRLG = 150;
-    private static final String DOMAIN_ID = "DomainX";
-
-    private static NetworkNode networkNode;
-    private static TeNode teNode;
-    private static NetworkLink networkLink;
-    private static TeLink teLink;
-    private static Network network;
-    private static TunnelTerminationPoint ttp;
-
-    private static TeTopologyKey teTopologyKey = new TeTopologyKey(PROVIDER_ID,
-                                                                   CLIENT_ID,
-                                                                   ABSTRACT_TOPOLOGY_ID);
-
-    // no instantiation
-    private DefaultBuilder() {
-    }
-
-    private static TunnelTerminationPoint ttpBuilder(long ttpId) {
-        return new DefaultTunnelTerminationPoint(ttpId, SwitchingType.OTN_TDM_CAPABLE,
-                                                 EncodingType.LSP_ENCODING_ODUK,
-                                                 new BitSet(TeConstants.FLAG_MAX_BITS),
-                                                 null, null,
-                                                 ODU2BW, null); //10G for ODU2
-    }
-
-    private static TerminationPoint tpBuilder(long teTpId) {
-        return new DefaultTerminationPoint(KeyId.keyId(Long.toString(teTpId)), null, teTpId);
-    }
-
-    private static NetworkNode nodeBuilder(String nodeIp, long numTps, long numTtps,
-                                          TeTopologyKey underlayTopologyId, TeNodeKey supportTeNodeId,
-                                          TeNodeKey sourceTeNodeId, boolean isAbstract) {
-        long teNodeId = Ip4Address.valueOf(nodeIp).toInt();
-        BitSet flags = new BitSet(TeConstants.FLAG_MAX_BITS);
-
-        if (isAbstract) {
-            flags.set(TeNode.BIT_ABSTRACT);
-        }
-        CommonNodeData common = new CommonNodeData(nodeIp, TeStatus.UP, TeStatus.UP, flags);
-        Map<Long, ConnectivityMatrix> connMatrices = null;
-        List<Long> teTpIds = Lists.newArrayList();
-        Map<KeyId, TerminationPoint> tps = Maps.newHashMap();
-        for (long i = 0; i < numTps; i++) {
-            teTpIds.add(i);
-            tps.put(KeyId.keyId(Long.toString(i)), tpBuilder(i));
-        }
-        //TTP
-        Map<Long, TunnelTerminationPoint> ttps = Maps.newHashMap();
-        for (long i = 0; i < numTtps; i++) {
-            ttps.put(i, ttpBuilder(i));
-        }
-        ttp = ttps.get((long) FIRST_INDEX);
-        //TeNode
-        teNode = new DefaultTeNode(teNodeId, underlayTopologyId,
-                                   supportTeNodeId, sourceTeNodeId,
-                                          common, connMatrices, teTpIds, ttps, teTpIds);
-        List<NetworkNodeKey> supportingNodeIds = null;
-        if (supportTeNodeId != null) {
-            supportingNodeIds = Lists
-                    .newArrayList(TeMgrUtil.networkNodeKey(supportTeNodeId));
-        }
-
-        return new DefaultNetworkNode(KeyId.keyId(nodeIp), supportingNodeIds, teNode, tps);
-    }
-
-    private static LinkBandwidth linkBwBuilder(String odu) {
-
-        float[] maxBandwidth;  //Maximum bandwidth, Size is MAX_PRIORITY + 1
-        float[] avaiBandwidth; //Unreserved bandwidth, Size is MAX_PRIORITY + 1
-        float[] maxAvialLspBandwidth;  //Maximum available bandwidth for a LSP
-        float[] minAvialLspBandwidth;  //Minimum available bandwidth for a LSP
-        short odu0s;
-        short odu1s;
-        short odu2s;
-        short odu2es = 0;
-        short odu3s;
-        short odu4s;
-        short oduFlexes = 0;
-
-        switch (odu) {
-        case ODU3:
-            maxBandwidth = ODU3BW;
-            avaiBandwidth = ODU3BW;
-            maxAvialLspBandwidth = ODU3BW;
-            minAvialLspBandwidth = ODU0BW;
-            odu0s = 32;
-            odu1s = 16;
-            odu2s = 4;
-            odu3s = 1;
-            odu4s = 0;
-            break;
-        case ODU4:
-            maxBandwidth = ODU4BW;
-            avaiBandwidth = ODU4BW;
-            maxAvialLspBandwidth = ODU4BW;
-            minAvialLspBandwidth = ODU0BW;
-            odu0s = 80;
-            odu1s = 40;
-            odu2s = 10;
-            odu3s = 2;
-            odu4s = 1;
-            break;
-        default:
-            maxBandwidth = ODU2BW;
-            avaiBandwidth = ODU2BW;
-            maxAvialLspBandwidth = ODU2BW;
-            minAvialLspBandwidth = ODU0BW;
-            odu0s = 8;
-            odu1s = 4;
-            odu2s = 1;
-            odu3s = 0;
-            odu4s = 0;
-        }
-
-        OduResource oduRrc = new OduResource(odu0s, odu1s, odu2s, odu2es, odu3s,
-                                             odu4s, oduFlexes);
-        return new LinkBandwidth(maxBandwidth, avaiBandwidth, maxAvialLspBandwidth,
-                                 minAvialLspBandwidth, oduRrc);
-    }
-
-    private static NetworkLink linkBuilder(TeLinkTpKey teLinkKey, TeLinkTpKey peerTeLinkKey,
-                                          TeTopologyKey underlayTopologyId, TeLinkTpGlobalKey supportTeLinkId,
-                                          TeLinkTpGlobalKey sourceTeLinkId, boolean isAbstract, Long plugid,
-                                          Long cost, Long delay, List<Long> srlgs, String odu) {
-        //NetworkLink
-        KeyId linkId = TeMgrUtil.toNetworkLinkId(teLinkKey);
-        NodeTpKey source = TeMgrUtil.nodeTpKey(teLinkKey);
-        NodeTpKey destination = null;
-        if (peerTeLinkKey != null) {
-            destination = TeMgrUtil.nodeTpKey(peerTeLinkKey);
-        }
-        List<NetworkLinkKey> supportingLinkIds = null;
-        if (supportTeLinkId != null) {
-            supportingLinkIds = Lists
-                    .newArrayList(TeMgrUtil.networkLinkKey(supportTeLinkId));
-        }
-        BitSet flags = new BitSet(TeConstants.FLAG_MAX_BITS);
-        if (isAbstract) {
-            flags.set(TeLink.BIT_ABSTRACT);
-        }
-        ExternalLink externalLink = null;
-
-        if (plugid != null) {
-            // Inter-Domain Link
-            flags.set(TeLink.BIT_ACCESS_INTERDOMAIN);
-            externalLink = new ExternalLink(null, plugid);
-        }
-        UnderlayPath underlayPath = null;
-        Long adminGroup = null;
-        List<Long> interLayerLocks = null;
-        teLink = new DefaultTeLink(teLinkKey, peerTeLinkKey, underlayTopologyId,
-                                          supportTeLinkId, sourceTeLinkId,
-                                          new CommonLinkData(TeStatus.UP, TeStatus.UP, flags,
-                                                             SwitchingType.OTN_TDM_CAPABLE,
-                                                             EncodingType.LSP_ENCODING_ODUK,
-                                                             externalLink, underlayPath,
-                                                             new TePathAttributes(cost, delay, srlgs),
-                                                             adminGroup, interLayerLocks, linkBwBuilder(odu)));
-        return new DefaultNetworkLink(linkId, source, destination, supportingLinkIds, teLink);
-    }
-
-    private static Network networkBuilder(TeTopologyId teTopologyId, KeyId supportingNetworkId,
-                                          Map<KeyId, NetworkNode> nodes,
-                                          Map<KeyId, NetworkLink> links,
-                                          boolean serverProvided,
-                                          DeviceId ownerId,
-                                          OptimizationType optType) {
-        KeyId networkId = TeMgrUtil.toNetworkId(teTopologyId);
-        List<KeyId> supportingNetworkIds = null;
-        if (supportingNetworkId != null) {
-            supportingNetworkIds = Lists.newArrayList(supportingNetworkId);
-        }
-        return new DefaultNetwork(networkId, supportingNetworkIds, nodes, links, teTopologyId,
-                                  serverProvided, ownerId, optType);
-    }
-
-    /**
-     * Returns the key for the sample TE Topology.
-     *
-     * @return value of TE Topology key
-     */
-    public static TeTopologyKey teTopologyKey() {
-        return teTopologyKey;
-    }
-
-    /**
-     * Returns the abstract TE Node in the sample TE Topology.
-     *
-     * @return value of TE node
-     */
-    public static TeNode teNode() {
-        return teNode;
-    }
-
-    /**
-     * Returns the TE link in the sample TE Topology.
-     *
-     * @return value of TE link
-     */
-    public static TeLink teLink() {
-        return teLink;
-    }
-
-    /**
-     * Builds a sample abstract TE Topology, which consists of one abstract node
-     * representing an entire physical network, one inter-domain link and one
-     * TTP.
-     *
-     * @return value of network with an abstract TE Topology
-     */
-    public static Network buildSampleAbstractNetwork() {
-        TeTopologyKey underlayTopologyId = new TeTopologyKey(PROVIDER_ID,
-                                                             CLIENT_NIL,
-                                                             NATIVE_TOPOLOGY_ID);
-        Map<KeyId, NetworkNode> nodes = Maps.newHashMap();
-        networkNode = nodeBuilder(NODEIP, NUM_TPS, NUM_TTPS, underlayTopologyId,
-                                  null, null, ABSTRACT);
-        nodes.put(networkNode.nodeId(), networkNode);
-
-        Map<KeyId, NetworkLink> links = Maps.newHashMap();
-        TeLinkTpKey node1tp1 = new TeLinkTpKey(networkNode.teNode().teNodeId(),
-                                               networkNode.teNode()
-                                                       .teTerminationPointIds()
-                                                       .get(FIRST_INDEX));
-        networkLink = linkBuilder(node1tp1, null, null, null, null, UNABSTRACT,
-                                  INTER_DOMAIN_LINK_PLUGID, LINK_COST,
-                                  LINK_DELAY, Lists.newArrayList(LINK_SRLG),
-                                  ODU4);
-        links.put(networkLink.linkId(), networkLink);
-        DeviceId ownerId = DeviceId.deviceId(DOMAIN_ID);
-        TeTopologyId topologyId = new TeTopologyId(PROVIDER_ID, CLIENT_ID,
-                                                   Long.toString(ABSTRACT_TOPOLOGY_ID));
-        network = networkBuilder(topologyId, null, nodes, links, false,
-                                 ownerId, OptimizationType.NOT_OPTIMIZED);
-        return network;
-    }
-
-}
diff --git a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/SimpleTeTopologyStore.java b/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/SimpleTeTopologyStore.java
deleted file mode 100644
index 24dcad5..0000000
--- a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/SimpleTeTopologyStore.java
+++ /dev/null
@@ -1,1037 +0,0 @@
-/**
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.MapUtils;
-import org.onosproject.net.DeviceId;
-import org.onosproject.store.AbstractStore;
-import org.onosproject.tetopology.management.api.CommonTopologyData;
-import org.onosproject.tetopology.management.api.DefaultNetwork;
-import org.onosproject.tetopology.management.api.DefaultTeTopologies;
-import org.onosproject.tetopology.management.api.DefaultTeTopology;
-import org.onosproject.tetopology.management.api.KeyId;
-import org.onosproject.tetopology.management.api.Network;
-import org.onosproject.tetopology.management.api.OptimizationType;
-import org.onosproject.tetopology.management.api.TeConstants;
-import org.onosproject.tetopology.management.api.TeTopologies;
-import org.onosproject.tetopology.management.api.TeTopology;
-import org.onosproject.tetopology.management.api.TeTopologyEvent;
-import org.onosproject.tetopology.management.api.TeTopologyId;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.TeUtils;
-import org.onosproject.tetopology.management.api.link.DefaultNetworkLink;
-import org.onosproject.tetopology.management.api.link.DefaultTeLink;
-import org.onosproject.tetopology.management.api.link.NetworkLink;
-import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
-import org.onosproject.tetopology.management.api.link.TeLink;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.link.TeLinkTpKey;
-import org.onosproject.tetopology.management.api.node.ConnectivityMatrix;
-import org.onosproject.tetopology.management.api.node.ConnectivityMatrixKey;
-import org.onosproject.tetopology.management.api.node.DefaultNetworkNode;
-import org.onosproject.tetopology.management.api.node.DefaultTeNode;
-import org.onosproject.tetopology.management.api.node.DefaultTerminationPoint;
-import org.onosproject.tetopology.management.api.node.NetworkNode;
-import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
-import org.onosproject.tetopology.management.api.node.NodeTpKey;
-import org.onosproject.tetopology.management.api.node.TeNode;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TerminationPoint;
-import org.onosproject.tetopology.management.api.node.TerminationPointKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-import org.onosproject.tetopology.management.api.node.TunnelTerminationPoint;
-import org.onosproject.tetopology.management.impl.InternalNetwork;
-import org.onosproject.tetopology.management.impl.InternalNetworkLink;
-import org.onosproject.tetopology.management.impl.InternalNetworkNode;
-import org.onosproject.tetopology.management.impl.InternalTeLink;
-import org.onosproject.tetopology.management.impl.InternalTeNode;
-import org.onosproject.tetopology.management.impl.InternalTeTopology;
-import org.onosproject.tetopology.management.impl.InternalTerminationPoint;
-import org.onosproject.tetopology.management.impl.TeMgrUtil;
-import org.onosproject.tetopology.management.impl.TeTopologyMapEvent;
-import org.onosproject.tetopology.management.impl.TeTopologyStore;
-import org.onosproject.tetopology.management.impl.TeTopologyStoreDelegate;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.slf4j.Logger;
-
-import java.util.BitSet;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.BlockingQueue;
-
-import static org.onosproject.tetopology.management.api.OptimizationType.NOT_OPTIMIZED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_ADDED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_REMOVED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_ADDED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_REMOVED;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Implementation of the TE network store.
- */
-@Component(immediate = true, service = TeTopologyStore.class)
-public class SimpleTeTopologyStore
-        extends AbstractStore<TeTopologyEvent, TeTopologyStoreDelegate>
-        implements TeTopologyStore {
-    private static final String STORE_NAME = "TE_NETWORK_TOPOLOGY_STORE";
-    private final Logger log = getLogger(getClass());
-
-    // Track TE topologies by TE Topology key
-    private Map<TeTopologyKey, InternalTeTopology> teTopologyMap = Maps
-            .newConcurrentMap();
-    // Track networks by network Id
-    private Map<KeyId, InternalNetwork> networkMap = Maps.newConcurrentMap();
-    // Track TE nodes by TE node key
-    private Map<TeNodeKey, InternalTeNode> teNodeMap = Maps.newConcurrentMap();
-    // Track ConnectivityMatrix by its key
-    private Map<ConnectivityMatrixKey, ConnectivityMatrix> connMatrixMap = Maps
-            .newConcurrentMap();
-    // Track Tunnel Termination Points by its key
-    private Map<TtpKey, TunnelTerminationPoint> ttpMap = Maps
-            .newConcurrentMap();
-    // Track network nodes by network node key
-    private Map<NetworkNodeKey, InternalNetworkNode> networkNodeMap = Maps
-            .newConcurrentMap();
-    // Track TE links by its key
-    private Map<TeLinkTpGlobalKey, InternalTeLink> teLinkMap = Maps
-            .newConcurrentMap();
-    // Track network links by network link key
-    private Map<NetworkLinkKey, InternalNetworkLink> networkLinkMap = Maps
-            .newConcurrentMap();
-    // Track Termination points by termination point key
-    private Map<TerminationPointKey, InternalTerminationPoint> tpMap = Maps
-            .newConcurrentMap();
-    // Track termination point keys by TE termination point Key
-    private Map<TeLinkTpGlobalKey, TerminationPointKey> tpKeyMap = Maps
-            .newConcurrentMap();
-    private long providerId;
-
-    @Activate
-    public void activate() {
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        teTopologyMap.clear();
-        networkMap.clear();
-        teNodeMap.clear();
-        connMatrixMap.clear();
-        networkNodeMap.clear();
-        teLinkMap.clear();
-        networkLinkMap.clear();
-        tpMap.clear();
-        tpKeyMap.clear();
-        ttpMap.clear();
-        log.info("Stopped");
-    }
-
-    @Override
-    public TeTopologies teTopologies() {
-        Map<TeTopologyKey, TeTopology> teTopologies = Maps.newHashMap();
-        if (MapUtils.isNotEmpty(teTopologyMap)) {
-            for (TeTopologyKey key : teTopologyMap.keySet()) {
-                teTopologies.put(key, teTopology(key));
-            }
-        }
-        return new DefaultTeTopologies(STORE_NAME, teTopologies);
-    }
-
-    private TeTopology teTopology(TeTopologyKey topologyId,
-                                  InternalTeTopology intTopology) {
-        if (intTopology == null) {
-            return null;
-        }
-        Map<Long, TeNode> teNodes = null;
-        if (CollectionUtils.isNotEmpty(intTopology.teNodeKeys())) {
-            teNodes = Maps.newHashMap();
-            for (TeNodeKey key : intTopology.teNodeKeys()) {
-                teNodes.put(key.teNodeId(), teNode(key));
-            }
-        }
-        Map<TeLinkTpKey, TeLink> teLinks = null;
-        if (CollectionUtils.isNotEmpty(intTopology.teLinkKeys())) {
-            teLinks = Maps.newHashMap();
-            for (TeLinkTpGlobalKey key : intTopology.teLinkKeys()) {
-                teLinks.put(key.teLinkTpKey(), teLink(key));
-            }
-        }
-        return new DefaultTeTopology(topologyId, teNodes, teLinks,
-                                     intTopology.teTopologyId(),
-                                     intTopology.topologyData());
-    }
-
-    @Override
-    public TeTopology teTopology(TeTopologyKey topologyId) {
-        InternalTeTopology intTopology = teTopologyMap.get(topologyId);
-        return teTopology(topologyId, intTopology);
-    }
-
-    private void removeTopologyeMapEntrys(InternalTeTopology curTopology) {
-        // Remove TE nodes
-        if (CollectionUtils.isNotEmpty(curTopology.teNodeKeys())) {
-            for (TeNodeKey key : curTopology.teNodeKeys()) {
-                removeTeNode(key, true);
-            }
-        }
-        // Remove TE Links
-        if (CollectionUtils.isNotEmpty(curTopology.teLinkKeys())) {
-            for (TeLinkTpGlobalKey key : curTopology.teLinkKeys()) {
-                removeTeLink(key, true);
-            }
-        }
-    }
-
-    @Override
-    public void updateTeTopology(TeTopology teTopology) {
-        InternalTeTopology curTopology = teTopologyMap
-                .get(teTopology.teTopologyId());
-        if (curTopology != null) {
-            // Existing topology update
-            // Remove existing map entries first, which should be removed by
-            // its own events
-            removeTopologyeMapEntrys(curTopology);
-        }
-        // Update TE nodes
-        List<NetworkNodeKey> nodeIds = null;
-        if (MapUtils.isNotEmpty(teTopology.teNodes())) {
-            nodeIds = Lists.newArrayList();
-            for (Map.Entry<Long, TeNode> entry : teTopology.teNodes()
-                    .entrySet()) {
-                TeNodeKey teNodeKey = new TeNodeKey(teTopology.teTopologyId(),
-                                                    entry.getKey());
-                NetworkNodeKey nodeKey = TeMgrUtil.networkNodeKey(teNodeKey);
-                updateTeNode(teNodeKey, entry.getValue(), true, true, nodeKey);
-                nodeIds.add(nodeKey);
-            }
-        }
-        // Update TE links
-        List<NetworkLinkKey> linkIds = null;
-        if (MapUtils.isNotEmpty(teTopology.teLinks())) {
-            linkIds = Lists.newArrayList();
-            for (Map.Entry<TeLinkTpKey, TeLink> entry : teTopology.teLinks()
-                    .entrySet()) {
-                TeLinkTpGlobalKey teLinkKey = new TeLinkTpGlobalKey(teTopology
-                        .teTopologyId(), entry.getKey());
-                NetworkLinkKey linkKey = TeMgrUtil.networkLinkKey(teLinkKey);
-                updateTeLink(teLinkKey, entry.getValue(), true, true, linkKey);
-                linkIds.add(linkKey);
-            }
-        }
-        // Finally Update teTopologyMap
-        InternalTeTopology newTopology = new InternalTeTopology(teTopology);
-        teTopologyMap.put(teTopology.teTopologyId(), newTopology);
-
-        if (curTopology == null) {
-            // New topology, update networkMap
-            InternalNetwork intNetwork = new InternalNetwork();
-            intNetwork.setServerProvided(false);
-            intNetwork.setTeTopologyKey(teTopology.teTopologyId());
-            intNetwork.setNodeIds(nodeIds);
-            intNetwork.setLinkIds(linkIds);
-            networkMap.put(teTopology.networkId(), intNetwork);
-        }
-    }
-
-    @Override
-    public void removeTeTopology(TeTopologyKey topologyId) {
-        // Remove it from teTopologyMap
-        InternalTeTopology topology = teTopologyMap.remove(topologyId);
-        if (topology != null) {
-            removeTopologyeMapEntrys(topology);
-            // Remove it from networkMap;
-            networkMap.remove(topology.topologyData().networkId());
-        }
-    }
-
-    @Override
-    public List<Network> networks() {
-        if (MapUtils.isEmpty(networkMap)) {
-            return null;
-        }
-        List<Network> networks = Lists.newArrayList();
-        for (KeyId networkId : networkMap.keySet()) {
-            networks.add(network(networkId));
-        }
-        return networks;
-    }
-
-    private Network network(KeyId networkId, InternalNetwork curNetwork) {
-        if (curNetwork == null) {
-            return null;
-        }
-        List<KeyId> supportingNetworkIds = curNetwork.supportingNetworkIds();
-        Map<KeyId, NetworkNode> nodes = null;
-        if (CollectionUtils.isNotEmpty(curNetwork.nodeIds())) {
-            nodes = Maps.newHashMap();
-            for (NetworkNodeKey key : curNetwork.nodeIds()) {
-                nodes.put(key.nodeId(), networkNode(key));
-            }
-        }
-        Map<KeyId, NetworkLink> links = null;
-        if (CollectionUtils.isNotEmpty(curNetwork.linkIds())) {
-            links = Maps.newHashMap();
-            for (NetworkLinkKey key : curNetwork.linkIds()) {
-                links.put(key.linkId(), networkLink(key));
-            }
-        }
-        TeTopologyId topologyId = null;
-        DeviceId ownerId = null;
-        OptimizationType opt = NOT_OPTIMIZED;
-        if (curNetwork.teTopologyKey() != null
-                && teTopology(curNetwork.teTopologyKey()) != null) {
-            topologyId = new TeTopologyId(curNetwork.teTopologyKey()
-                    .providerId(), curNetwork.teTopologyKey().clientId(),
-                                          teTopology(curNetwork.teTopologyKey())
-                                                  .teTopologyIdStringValue());
-            ownerId = teTopology(curNetwork.teTopologyKey()).ownerId();
-            opt = teTopologyMap.get(curNetwork.teTopologyKey()).topologyData()
-                    .optimization();
-        }
-        return new DefaultNetwork(networkId, supportingNetworkIds, nodes, links,
-                                  topologyId, curNetwork.serverProvided(),
-                                  ownerId, opt);
-    }
-
-    @Override
-    public Network network(KeyId networkId) {
-        InternalNetwork curNetwork = networkMap.get(networkId);
-        return network(networkId, curNetwork);
-    }
-
-    private void removeNetworkMapEntrys(InternalNetwork curNetwork,
-                                        boolean teRemove) {
-        // Remove TE nodes
-        if (CollectionUtils.isNotEmpty(curNetwork.nodeIds())) {
-            for (NetworkNodeKey key : curNetwork.nodeIds()) {
-                removeNetworkNode(key, teRemove);
-            }
-        }
-        // Remove TE Links
-        if (CollectionUtils.isNotEmpty(curNetwork.linkIds())) {
-            for (NetworkLinkKey key : curNetwork.linkIds()) {
-                removeNetworkLink(key, teRemove);
-            }
-        }
-    }
-
-    private TeTopologyKey newTeTopologyKey(TeTopologyId teTopologyId) {
-        long idValue;
-        try {
-            idValue = Long.parseLong(teTopologyId.topologyId());
-        } catch (NumberFormatException e) {
-            // Can't get the long value from the string.
-            // Use an assigned id value from local id pool,
-            // Ideally id should be assigned per provider base.
-            idValue = nextTeTopologyId();
-        }
-        return new TeTopologyKey(teTopologyId.providerId(),
-                                 teTopologyId.clientId(), idValue);
-    }
-
-    @Override
-    public void updateNetwork(Network network) {
-        InternalNetwork curNetwork = networkMap.get(network.networkId());
-        if (curNetwork != null) {
-            // Existing topology update
-            // Remove existing map entries first,
-            removeNetworkMapEntrys(curNetwork, false);
-        }
-        TeTopologyKey topoKey = null;
-        if (network.teTopologyId() != null) {
-            topoKey = newTeTopologyKey(network.teTopologyId());
-        }
-        // Update TE nodes
-        List<TeNodeKey> teNodeKeys = null;
-        if (MapUtils.isNotEmpty(network.nodes())) {
-            teNodeKeys = Lists.newArrayList();
-            for (Map.Entry<KeyId, NetworkNode> entry : network.nodes()
-                    .entrySet()) {
-                NetworkNodeKey nodeKey = new NetworkNodeKey(network.networkId(),
-                                                            entry.getKey());
-                TeNodeKey teNodeKey = null;
-                if (topoKey != null && entry.getValue().teNode() != null) {
-                    teNodeKey = new TeNodeKey(topoKey, entry.getValue().teNode()
-                            .teNodeId());
-                }
-                updateNetworkNode(nodeKey, entry.getValue(), true, false,
-                                  teNodeKey);
-                teNodeKeys.add(teNodeKey);
-            }
-        }
-        // Update TE links
-        List<TeLinkTpGlobalKey> teLinkKeys = null;
-        if (MapUtils.isNotEmpty(network.links())) {
-            teLinkKeys = Lists.newArrayList();
-            for (Map.Entry<KeyId, NetworkLink> entry : network.links()
-                    .entrySet()) {
-                NetworkLinkKey linkKey = new NetworkLinkKey(network.networkId(),
-                                                            entry.getKey());
-                TeLinkTpGlobalKey teLinkKey = null;
-                if (topoKey != null && entry.getValue().teLink() != null) {
-                    teLinkKey = new TeLinkTpGlobalKey(topoKey, entry.getValue()
-                            .teLink().teLinkKey());
-                }
-                updateNetworkLink(linkKey, entry.getValue(), true, false,
-                                  teLinkKey);
-                teLinkKeys.add(teLinkKey);
-            }
-        }
-
-        // New network, update TE Topology first
-        if (curNetwork == null) {
-            InternalTeTopology intTopo = new InternalTeTopology(network
-                    .teTopologyId().topologyId());
-            intTopo.setTeNodeKeys(teNodeKeys);
-            intTopo.setTeLinkKeys(teLinkKeys);
-            BitSet flags = new BitSet(TeConstants.FLAG_MAX_BITS);
-            flags.set(TeTopology.BIT_LEARNT);
-            if (network.teTopologyId().clientId() == providerId) {
-                // Hard rule for now
-                flags.set(TeTopology.BIT_CUSTOMIZED);
-            }
-            CommonTopologyData common = new CommonTopologyData(network.networkId(), NOT_OPTIMIZED,
-                                                               flags, network.ownerId());
-            intTopo.setTopologydata(common);
-            teTopologyMap.put(topoKey, intTopo);
-            // Assume new topology
-            TeTopologyEvent topologyEvent = new TeTopologyEvent(TE_TOPOLOGY_ADDED,
-                                                                teTopology(topoKey));
-            notifyDelegate(topologyEvent);
-        }
-        // Finally Update networkMap
-        InternalNetwork newNetwork = new InternalNetwork(network);
-        newNetwork.setTeTopologyKey(topoKey);
-        networkMap.put(network.networkId(), newNetwork);
-        // Assume new network
-        TeTopologyEvent topologyEvent = new TeTopologyEvent(NETWORK_ADDED,
-                                                            network(network.networkId()));
-        notifyDelegate(topologyEvent);
-    }
-
-    @Override
-    public void removeNetwork(KeyId networkId) {
-        // Remove it from networkMap
-        InternalNetwork network = networkMap.remove(networkId);
-        TeTopologyEvent topologyEvent = new TeTopologyEvent(NETWORK_REMOVED,
-                                                            new DefaultNetwork(networkId,
-                                                                               null,
-                                                                               null,
-                                                                               null,
-                                                                               null,
-                                                                               false,
-                                                                               null,
-                                                                               NOT_OPTIMIZED));
-        notifyDelegate(topologyEvent);
-        if (network != null && network.teTopologyKey() != null) {
-            removeNetworkMapEntrys(network, false);
-            teTopologyMap.remove(network.teTopologyKey());
-            topologyEvent = new TeTopologyEvent(TE_TOPOLOGY_REMOVED,
-                                                new DefaultTeTopology(network
-                                                        .teTopologyKey(), null, null, null, null));
-            notifyDelegate(topologyEvent);
-        }
-    }
-
-    private TeNode teNode(TeNodeKey nodeKey, InternalTeNode intNode) {
-        if (intNode == null) {
-            return null;
-        }
-        Map<Long, ConnectivityMatrix> connMatrices = null;
-        if (CollectionUtils.isNotEmpty(intNode.connMatrixKeys())) {
-            connMatrices = Maps.newHashMap();
-            for (ConnectivityMatrixKey key : intNode.connMatrixKeys()) {
-                connMatrices.put(key.entryId(), connMatrixMap.get(key));
-            }
-        }
-        List<Long> teLinkIds = null;
-        if (CollectionUtils.isNotEmpty(intNode.teLinkTpKeys())) {
-            teLinkIds = Lists.newArrayList();
-            for (TeLinkTpGlobalKey key : intNode.teLinkTpKeys()) {
-                teLinkIds = TeUtils.addListElement(teLinkIds, key.teLinkTpId());
-            }
-        }
-        List<Long> tps = null;
-        if (CollectionUtils.isNotEmpty(intNode.teTpKeys())) {
-            tps = Lists.newArrayList();
-            for (TeLinkTpGlobalKey key : intNode.teTpKeys()) {
-                tps = TeUtils.addListElement(tps, key.teLinkTpId());
-            }
-        }
-        Map<Long, TunnelTerminationPoint> ttps = null;
-        if (CollectionUtils.isNotEmpty(intNode.ttpKeys())) {
-            ttps = Maps.newHashMap();
-            for (TtpKey key : intNode.ttpKeys()) {
-                ttps.put(key.ttpId(), ttpMap.get(key));
-            }
-        }
-        return new DefaultTeNode(nodeKey.teNodeId(),
-                                 intNode.underlayTopologyKey(),
-                                 intNode.supportNodeKey(),
-                                 intNode.sourceTeNodeKey(), intNode.teData(),
-                                 connMatrices, teLinkIds, ttps, tps);
-    }
-
-    @Override
-    public TeNode teNode(TeNodeKey nodeKey) {
-        InternalTeNode intNode = teNodeMap.get(nodeKey);
-        return teNode(nodeKey, intNode);
-    }
-
-    private void removeTeNodeMapEntrys(InternalTeNode intNode) {
-        // Remove connMatrixMap entries for the node
-        if (CollectionUtils.isNotEmpty(intNode.connMatrixKeys())) {
-            for (ConnectivityMatrixKey key : intNode.connMatrixKeys()) {
-                connMatrixMap.remove(key);
-            }
-        }
-        // Remove ttpMap entries for the node
-        if (CollectionUtils.isNotEmpty(intNode.ttpKeys())) {
-            for (TtpKey key : intNode.ttpKeys()) {
-                ttpMap.remove(key);
-            }
-        }
-    }
-
-    private void updateTeNode(TeNodeKey nodeKey, TeNode node,
-                              boolean parentUpdate, boolean teNodeUpdate,
-                              NetworkNodeKey networkNodeKey) {
-        InternalTeTopology intTopo = teTopologyMap.get(nodeKey.teTopologyKey());
-        if (intTopo == null && !parentUpdate) {
-            log.error("TE Topology is not in dataStore for nodeUpdate {}",
-                      nodeKey);
-            return;
-        }
-        InternalTeNode curNode = teNodeMap.get(nodeKey);
-        // Update connMatrixMap
-        if (MapUtils.isNotEmpty(node.connectivityMatrices())) {
-            for (Map.Entry<Long, ConnectivityMatrix> entry : node
-                    .connectivityMatrices().entrySet()) {
-                connMatrixMap
-                        .put(new ConnectivityMatrixKey(nodeKey, entry.getKey()),
-                             entry.getValue());
-            }
-        }
-        // Update ttpMap
-        if (MapUtils.isNotEmpty(node.tunnelTerminationPoints())) {
-            for (Map.Entry<Long, TunnelTerminationPoint> entry : node
-                    .tunnelTerminationPoints().entrySet()) {
-                ttpMap.put(new TtpKey(nodeKey, entry.getKey()),
-                           entry.getValue());
-            }
-        }
-        // Update TE Termination Points
-
-        // Update teNodeMap
-        InternalTeNode intNode = new InternalTeNode(nodeKey, node,
-                                                    networkNodeKey,
-                                                    parentUpdate);
-        teNodeMap.put(nodeKey, intNode);
-        if (curNode == null && !parentUpdate && intTopo != null) {
-            // Update InternalTeTopology
-            intTopo.setChildUpdate(true);
-            TeUtils.addListElement(intTopo.teNodeKeys(), nodeKey);
-        }
-        // Update networkNodeMap
-        if (teNodeUpdate) {
-            updateNetworkNode(networkNodeKey, networkNode(node), parentUpdate,
-                              teNodeUpdate, nodeKey);
-        }
-    }
-
-    private NetworkNode networkNode(TeNode node) {
-        KeyId nodeId = KeyId.keyId(Long.toString(node.teNodeId()));
-        List<NetworkNodeKey> supportingNodeIds = null;
-        if (node.supportingTeNodeId() != null) {
-            supportingNodeIds = Lists.newArrayList();
-            supportingNodeIds.add(new NetworkNodeKey(TeMgrUtil.toNetworkId((node
-                    .supportingTeNodeId().teTopologyKey())), KeyId.keyId(Long
-                            .toString(node.supportingTeNodeId().teNodeId()))));
-        }
-        Map<KeyId, TerminationPoint> tps = null;
-        if (node.teTerminationPointIds() != null) {
-            tps = Maps.newHashMap();
-            for (Long teTpId : node.teTerminationPointIds()) {
-                tps.put(KeyId.keyId(Long.toString(teTpId)),
-                        new DefaultTerminationPoint(KeyId
-                                .keyId(Long.toString(teTpId)), null, teTpId));
-            }
-        }
-        return new DefaultNetworkNode(nodeId, supportingNodeIds, node, tps);
-    }
-
-    @Override
-    public void updateTeNode(TeNodeKey nodeKey, TeNode node) {
-        updateTeNode(nodeKey, node, false, true,
-                     TeMgrUtil.networkNodeKey(nodeKey));
-    }
-
-    private void removeTeNode(TeNodeKey nodeKey, boolean teNodeRemove) {
-        // Remove it from InternalTeTopology first
-        InternalTeTopology intTopo = teTopologyMap.get(nodeKey.teTopologyKey());
-        if (intTopo != null
-                && CollectionUtils.isNotEmpty(intTopo.teNodeKeys())) {
-            intTopo.setChildUpdate(true);
-            intTopo.teNodeKeys().remove(nodeKey);
-        }
-        // Then remove it from teNodeMap
-        InternalTeNode node = teNodeMap.remove(nodeKey);
-        removeTeNodeMapEntrys(node);
-        // Remove it from networkNodeMap
-        if (teNodeRemove && node != null) {
-            removeNetworkNode(node.networkNodeKey(), teNodeRemove);
-        }
-    }
-
-    @Override
-    public void removeTeNode(TeNodeKey nodeKey) {
-        removeTeNode(nodeKey, true);
-    }
-
-    private NetworkNode networkNode(NetworkNodeKey nodeKey,
-                                    InternalNetworkNode intNode) {
-        if (intNode == null) {
-            return null;
-        }
-        Map<KeyId, TerminationPoint> tps = Maps.newHashMap();
-        for (KeyId tpId : intNode.tpIds()) {
-            tps.put(tpId,
-                    terminationPoint(new TerminationPointKey(nodeKey, tpId)));
-
-        }
-        return new DefaultNetworkNode(nodeKey.nodeId(),
-                                      intNode.supportingNodeIds(),
-                                      teNode(intNode.teNodeKey()), tps);
-    }
-
-    @Override
-    public NetworkNode networkNode(NetworkNodeKey nodeKey) {
-        InternalNetworkNode intNode = networkNodeMap.get(nodeKey);
-        return networkNode(nodeKey, intNode);
-    }
-
-    private void updateNetworkNode(NetworkNodeKey nodeKey, NetworkNode node,
-                                   boolean parentUpdate, boolean teNodeUpdate,
-                                   TeNodeKey teNodeKey) {
-        InternalNetwork intNework = null;
-        if (!parentUpdate) {
-            intNework = networkMap.get(nodeKey.networkId());
-            if (intNework == null) {
-                log.error("Network is not in dataStore for nodeUpdate {}",
-                          nodeKey);
-                return;
-            }
-        }
-
-        InternalNetworkNode exNode = networkNodeMap.get(nodeKey);
-        if (exNode != null && CollectionUtils.isNotEmpty(exNode.tpIds())) {
-            // Remove the TerminationPoints first
-            for (KeyId tpId : exNode.tpIds()) {
-                removeTerminationPoint(new TerminationPointKey(nodeKey, tpId));
-            }
-        }
-
-        if (MapUtils.isNotEmpty(node.terminationPoints())) {
-            // Update with new TerminationPoints
-            for (Map.Entry<KeyId, TerminationPoint> entry : node
-                    .terminationPoints().entrySet()) {
-                updateTerminationPoint(new TerminationPointKey(nodeKey,
-                                                               entry.getKey()),
-                                       entry.getValue(), parentUpdate,
-                                       teNodeKey);
-            }
-        }
-
-        // Update teNodeMap first
-        if (!teNodeUpdate && teNodeKey != null && node.teNode() != null) {
-            updateTeNode(teNodeKey, node.teNode(), parentUpdate, teNodeUpdate,
-                         nodeKey);
-        }
-        // Update networkNodeMap
-        InternalNetworkNode intNode = new InternalNetworkNode(node,
-                                                              parentUpdate);
-        intNode.setTeNodeKey(teNodeKey);
-        networkNodeMap.put(nodeKey, intNode);
-        if (exNode == null && !parentUpdate && intNework != null) {
-            // Update the InternalNetwork
-            intNework.setChildUpdate(true);
-            TeUtils.addListElement(intNework.nodeIds(), nodeKey);
-        }
-    }
-
-    @Override
-    public void updateNetworkNode(NetworkNodeKey nodeKey, NetworkNode node) {
-        TeNodeKey teNodeKey = null;
-        if (node.teNode() != null) {
-            teNodeKey = new TeNodeKey(networkMap.get(nodeKey.networkId())
-                    .teTopologyKey(), node.teNode().teNodeId());
-        }
-        updateNetworkNode(nodeKey, node, false, false, teNodeKey);
-    }
-
-    private void removeNetworkNode(NetworkNodeKey nodeKey,
-                                   boolean teNodeRemove) {
-        // Update the InternalNetwork
-        InternalNetwork intNework = networkMap.get(nodeKey.networkId());
-        if (intNework != null
-                && CollectionUtils.isNotEmpty(intNework.nodeIds())) {
-            intNework.setChildUpdate(true);
-            intNework.nodeIds().remove(nodeKey);
-        }
-        InternalNetworkNode intNode = networkNodeMap.remove(nodeKey);
-        if (intNode != null && CollectionUtils.isNotEmpty(intNode.tpIds())) {
-            // Remove the TerminationPoints first
-            for (KeyId tpId : intNode.tpIds()) {
-                removeTerminationPoint(new TerminationPointKey(nodeKey, tpId));
-            }
-        }
-        if (!teNodeRemove && intNode != null) {
-            // Now remove it from teNodeMap
-            removeTeNode(intNode.teNodeKey(), teNodeRemove);
-        }
-    }
-
-    @Override
-    public void removeNetworkNode(NetworkNodeKey nodeKey) {
-        removeNetworkNode(nodeKey, false);
-    }
-
-    private TeLink teLink(TeLinkTpGlobalKey linkKey, InternalTeLink intLink) {
-        if (intLink == null) {
-            return null;
-        }
-        return new DefaultTeLink(linkKey.teLinkTpKey(), intLink.peerTeLinkKey(),
-                                 intLink.underlayTopologyKey(),
-                                 intLink.supportingLinkKey(),
-                                 intLink.sourceTeLinkKey(), intLink.teData());
-    }
-
-    @Override
-    public TeLink teLink(TeLinkTpGlobalKey linkKey) {
-        InternalTeLink intLink = teLinkMap.get(linkKey);
-        return teLink(linkKey, intLink);
-    }
-
-    private void updateTeLink(TeLinkTpGlobalKey linkKey, TeLink link,
-                              boolean parentUpdate, boolean teLinkUpdate,
-                              NetworkLinkKey networkLinkKey) {
-        InternalTeTopology intTopo = teTopologyMap.get(linkKey.teTopologyKey());
-        if (intTopo == null && !parentUpdate) {
-            log.error("TE Topology is not in dataStore for linkUpdate {}",
-                      linkKey);
-            return;
-        }
-        InternalTeNode intNode = teNodeMap.get(linkKey.teNodeKey());
-        if (intNode == null && !parentUpdate) {
-            log.error("TE node is not in dataStore for linkUpdate {}", linkKey);
-            return;
-        }
-        InternalTeLink exLink = teLinkMap.get(linkKey);
-
-        // Update teLinkMap
-        InternalTeLink intLink = new InternalTeLink(link, parentUpdate);
-        intLink.setNetworkLinkKey(networkLinkKey);
-        teLinkMap.put(linkKey, intLink);
-        if (exLink == null && !parentUpdate) {
-            if (intTopo != null) {
-                // Update the InternalTeTopology
-                intTopo.setChildUpdate(true);
-                intTopo.setTeLinkKeys(TeUtils
-                        .addListElement(intTopo.teLinkKeys(), linkKey));
-            }
-            if (intNode != null) {
-                // Update the InternalNode
-                intNode.setChildUpdate(true);
-                intNode.setTeLinkTpKeys(TeUtils
-                        .addListElement(intNode.teLinkTpKeys(), linkKey));
-            }
-        }
-
-        // Update networkLinkMap
-        if (teLinkUpdate) {
-            updateNetworkLink(networkLinkKey, networkLink(link), parentUpdate,
-                              teLinkUpdate, linkKey);
-        }
-    }
-
-    private NetworkLink networkLink(TeLink link) {
-        KeyId linkId = TeMgrUtil.toNetworkLinkId(link.teLinkKey());
-        NodeTpKey source = null;
-        if (link.teLinkKey() != null) {
-            source = new NodeTpKey(KeyId
-                    .keyId(Long.toString(link.teLinkKey().teNodeId())), KeyId
-                            .keyId(Long
-                                    .toString(link.teLinkKey().teLinkTpId())));
-        }
-        NodeTpKey dest = null;
-        if (link.peerTeLinkKey() != null) {
-            dest = new NodeTpKey(KeyId
-                    .keyId(Long.toString(link.peerTeLinkKey().teNodeId())),
-                                 KeyId.keyId(Long.toString(link.peerTeLinkKey()
-                                         .teLinkTpId())));
-        }
-        List<NetworkLinkKey> supportingLinkIds = null;
-        if (link.supportingTeLinkId() != null) {
-            supportingLinkIds = Lists.newArrayList();
-            supportingLinkIds.add(new NetworkLinkKey(TeMgrUtil.toNetworkId(link
-                    .supportingTeLinkId().teTopologyKey()), TeMgrUtil
-                            .toNetworkLinkId(link.supportingTeLinkId()
-                                    .teLinkTpKey())));
-        }
-        return new DefaultNetworkLink(linkId, source, dest, supportingLinkIds,
-                                      link);
-    }
-
-    @Override
-    public void updateTeLink(TeLinkTpGlobalKey linkKey, TeLink link) {
-        updateTeLink(linkKey, link, false, true,
-                     TeMgrUtil.networkLinkKey(linkKey));
-    }
-
-    private void removeTeLink(TeLinkTpGlobalKey linkKey, boolean teLinkRemove) {
-        // Remove it from InternalTeTopology first
-        InternalTeTopology intTopo = teTopologyMap.get(linkKey.teTopologyKey());
-        if (intTopo != null
-                && CollectionUtils.isNotEmpty(intTopo.teLinkKeys())) {
-            intTopo.setChildUpdate(true);
-            intTopo.teLinkKeys().remove(linkKey);
-        }
-        // Remove it from InternalTeNode
-        InternalTeNode intNode = teNodeMap.get(linkKey.teNodeKey());
-        if (intNode != null
-                && CollectionUtils.isNotEmpty(intNode.teLinkTpKeys())) {
-            intNode.setChildUpdate(true);
-            intNode.teLinkTpKeys().remove(linkKey);
-        }
-        // Then remove it from teLinkMap
-        InternalTeLink link = teLinkMap.remove(linkKey);
-        if (teLinkRemove && link != null) {
-            // Remove it from networkLinkMap
-            removeNetworkLink(link.networkLinkKey(), teLinkRemove);
-        }
-    }
-
-    @Override
-    public void removeTeLink(TeLinkTpGlobalKey linkKey) {
-        removeTeLink(linkKey, true);
-    }
-
-    private NetworkLink networkLink(NetworkLinkKey linkKey,
-                                    InternalNetworkLink intLink) {
-        if (intLink == null) {
-            return null;
-        }
-        return new DefaultNetworkLink(linkKey.linkId(), intLink.source(),
-                                      intLink.destination(),
-                                      intLink.supportingLinkIds(),
-                                      teLink(intLink.teLinkKey()));
-    }
-
-    @Override
-    public NetworkLink networkLink(NetworkLinkKey linkKey) {
-        InternalNetworkLink intLink = networkLinkMap.get(linkKey);
-        return networkLink(linkKey, intLink);
-    }
-
-    private void updateNetworkLink(NetworkLinkKey linkKey, NetworkLink link,
-                                   boolean parentUpdate, boolean teLinkUpdate,
-                                   TeLinkTpGlobalKey teLinkKey) {
-        InternalNetwork intNework = null;
-        if (!parentUpdate) {
-            intNework = networkMap.get(linkKey.networkId());
-            if (intNework == null) {
-                log.error("Network is not in dataStore for linkUpdate {}",
-                          linkKey);
-                return;
-            }
-        }
-
-        InternalNetworkLink exLink = networkLinkMap.get(linkKey);
-
-        // Now update teLinkMap first
-        if (!teLinkUpdate && teLinkKey != null) {
-            updateTeLink(teLinkKey, link.teLink(), parentUpdate, teLinkUpdate,
-                         linkKey);
-        }
-        // Update networkLinkMap
-        InternalNetworkLink intLink = new InternalNetworkLink(link,
-                                                              parentUpdate);
-        intLink.setTeLinkKey(teLinkKey);
-        networkLinkMap.put(linkKey, intLink);
-        if (exLink == null && !parentUpdate && intNework != null) {
-            // Update the InternalNetwork
-            intNework.setChildUpdate(true);
-            TeUtils.addListElement(intNework.linkIds(), linkKey);
-        }
-    }
-
-    @Override
-    public void updateNetworkLink(NetworkLinkKey linkKey, NetworkLink link) {
-        TeLinkTpGlobalKey teLinkKey = null;
-        if (link.teLink() != null) {
-            teLinkKey = new TeLinkTpGlobalKey(networkMap
-                    .get(linkKey.networkId()).teTopologyKey(),
-                                              link.teLink().teLinkKey());
-        }
-
-        updateNetworkLink(linkKey, link, false, false, teLinkKey);
-    }
-
-    private void removeNetworkLink(NetworkLinkKey linkKey,
-                                   boolean teLinkRemove) {
-        // Update the InternalNetwork
-        InternalNetwork intNework = networkMap.get(linkKey.networkId());
-        if (intNework != null
-                && CollectionUtils.isNotEmpty(intNework.linkIds())) {
-            intNework.setChildUpdate(true);
-            intNework.linkIds().remove(linkKey);
-        }
-        // Remove it from networkLinkMap
-        InternalNetworkLink intLink = networkLinkMap.remove(linkKey);
-        if (!teLinkRemove && intLink != null && intLink.teLinkKey() != null) {
-            // Now remove it from teLinkMap
-            removeTeLink(intLink.teLinkKey(), teLinkRemove);
-        }
-    }
-
-    @Override
-    public void removeNetworkLink(NetworkLinkKey linkKey) {
-        removeNetworkLink(linkKey, false);
-    }
-
-    private TerminationPoint terminationPoint(TerminationPointKey tpKey) {
-        InternalTerminationPoint intTp = tpMap.get(tpKey);
-        if (intTp == null) {
-            return null;
-        }
-        return new DefaultTerminationPoint(tpKey.tpId(),
-                                           intTp.supportingTpIds(),
-                                           intTp.teTpKey().teLinkTpId());
-    }
-
-    private void updateTerminationPoint(TerminationPointKey tpKey,
-                                        TerminationPoint tp,
-                                        boolean parentUpdate,
-                                        TeNodeKey teNodeKey) {
-        TeNodeKey myTeNodeKey;
-        InternalNetworkNode intNode = null;
-        if (!parentUpdate) {
-            intNode = networkNodeMap.get(tpKey);
-            if (intNode == null) {
-                log.error(" node is not in dataStore for tp update {}", tpKey);
-                return;
-            }
-            myTeNodeKey = intNode.teNodeKey();
-        } else {
-            myTeNodeKey = teNodeKey;
-        }
-        TeLinkTpGlobalKey teTpKey = new TeLinkTpGlobalKey(myTeNodeKey,
-                                                          tp.teTpId());
-
-        boolean newTp = tpMap.get(tpKey) == null;
-        InternalTerminationPoint intTp = new InternalTerminationPoint(tp);
-        intTp.setTeTpKey(teTpKey);
-        tpMap.put(tpKey, intTp);
-        if (newTp) {
-            // Update tpKeyMap
-            tpKeyMap.put(teTpKey, tpKey);
-            if (!parentUpdate && intNode != null) {
-                // Update InternalNetworkNode
-                intNode.setChildUpdate(true);
-                intNode.setTpIds(TeUtils.addListElement(intNode.tpIds(),
-                                                        tpKey.tpId()));
-            }
-        }
-    }
-
-    @Override
-    public void updateTerminationPoint(TerminationPointKey tpKey,
-                                       TerminationPoint tp) {
-        updateTerminationPoint(tpKey, tp, false, null);
-    }
-
-    @Override
-    public void removeTerminationPoint(TerminationPointKey tpKey) {
-        // Update InternalNetworkNode
-        InternalNetworkNode intNode = networkNodeMap.get(tpKey);
-        if (intNode != null && CollectionUtils.isNotEmpty(intNode.tpIds())) {
-            intNode.setChildUpdate(true);
-            intNode.tpIds().remove(tpKey.tpId());
-        }
-        // Remove it from tpMap
-        InternalTerminationPoint tp = tpMap.remove(tpKey);
-        // Remove it from tpKeyMap
-        if (tp != null) {
-            tpKeyMap.remove(tp.teTpKey());
-        }
-    }
-
-    @Override
-    public TunnelTerminationPoint tunnelTerminationPoint(TtpKey ttpId) {
-        return ttpMap.get(ttpId);
-    }
-
-    @Override
-    public long nextTeTopologyId() {
-        return 0;
-    }
-
-    @Override
-    public long nextTeNodeId(TeTopologyKey topoKey) {
-        return teTopologyMap.get(topoKey).nextTeNodeId();
-    }
-
-    @Override
-    public void setNextTeNodeId(TeTopologyKey topoKey, long nextNodeId) {
-        teTopologyMap.get(topoKey).setNextTeNodeId(nextNodeId);
-    }
-
-    @Override
-    public KeyId networkId(TeTopologyKey teTopologyKey) {
-        return teTopologyMap.get(teTopologyKey).topologyData().networkId();
-    }
-
-    @Override
-    public NetworkNodeKey nodeKey(TeNodeKey teNodeKey) {
-        return teNodeMap.get(teNodeKey).networkNodeKey();
-    }
-
-    @Override
-    public NetworkLinkKey linkKey(TeLinkTpGlobalKey teLinkKey) {
-        return teLinkMap.get(teLinkKey).networkLinkKey();
-    }
-
-    @Override
-    public TerminationPointKey terminationPointKey(TeLinkTpGlobalKey teTpKey) {
-        return tpKeyMap.get(teTpKey);
-    }
-
-    @Override
-    public void setProviderId(long providerId) {
-        this.providerId = providerId;
-    }
-
-    @Override
-    public BlockingQueue<TeTopologyMapEvent> mapEventQueue() {
-        return null;
-    }
-}
-
diff --git a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/TeTopologyManagerTest.java b/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/TeTopologyManagerTest.java
deleted file mode 100644
index 770b2c9..0000000
--- a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/TeTopologyManagerTest.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/**
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetopology.management;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.onosproject.net.NetTestTools.injectEventDispatcher;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_ADDED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_REMOVED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_ADDED;
-import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_REMOVED;
-
-import java.util.List;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.common.event.impl.TestEventDispatcher;
-import org.onosproject.event.Event;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.tetopology.management.api.Network;
-import org.onosproject.tetopology.management.api.TeTopology;
-import org.onosproject.tetopology.management.api.TeTopologyEvent;
-import org.onosproject.tetopology.management.api.TeTopologyListener;
-import org.onosproject.tetopology.management.api.TeTopologyProvider;
-import org.onosproject.tetopology.management.api.TeTopologyProviderRegistry;
-import org.onosproject.tetopology.management.api.TeTopologyProviderService;
-import org.onosproject.tetopology.management.api.TeTopologyService;
-import org.onosproject.tetopology.management.api.link.TeLink;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
-import org.onosproject.tetopology.management.api.node.TeNode;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.impl.TeMgrUtil;
-import org.onosproject.tetopology.management.impl.TeTopologyManager;
-
-import com.google.common.collect.Lists;
-
-/**
- * Test TeTopology service and TeTopologyProvider service.
- */
-public class TeTopologyManagerTest {
-    private static final ProviderId PID = new ProviderId("test", "TeTopologyManagerTest");
-
-    private TeTopologyManager mgr;
-    protected TeTopologyService service;
-    protected TeTopologyProviderRegistry registry;
-    protected TeTopologyProviderService providerService;
-    protected TestProvider provider;
-    protected TestListener listener = new TestListener();
-
-    @Before
-    public void setUp() {
-        mgr = new TeTopologyManager();
-        service = mgr;
-        registry = mgr;
-        mgr.store = new SimpleTeTopologyStore();
-
-        injectEventDispatcher(mgr, new TestEventDispatcher());
-
-        mgr.activateBasics();
-        service.addListener(listener);
-
-        provider = new TestProvider();
-        providerService = registry.register(provider);
-        assertTrue("providerService should not be null", providerService != null);
-        assertTrue("Provider should be registered",
-                   registry.getProviders().contains(provider.id()));
-    }
-
-    @After
-    public void tearDown() {
-        registry.unregister(provider);
-        assertFalse("provider should not be registered",
-                    registry.getProviders().contains(provider.id()));
-        service.removeListener(listener);
-        mgr.deactivateBasics();
-    }
-
-    private void createNetwork() {
-        Network originNetwork = DefaultBuilder.buildSampleAbstractNetwork();
-        providerService.networkUpdated(originNetwork);
-        Network network = service
-                .network(TeMgrUtil.toNetworkId(DefaultBuilder.teTopologyKey()));
-        assertNotNull("Network should be found", network);
-    }
-
-    /**
-     * Checks the right events are received when a network with TE topology is
-     * added.
-     */
-    @Test
-    public void networkAdded() {
-        createNetwork();
-        validateEvents(TE_TOPOLOGY_ADDED, NETWORK_ADDED);
-    }
-
-    /**
-     * Checks the TE topology components are set properly in Manager and Store
-     * when a network is added.
-     */
-    @Test
-    public void teTopologyVerify() {
-        createNetwork();
-        TeTopology teTopology = service
-                .teTopology(DefaultBuilder.teTopologyKey());
-        assertNotNull("TeTopology should be found", teTopology);
-        assertTrue("Number of TE nodes should be 1",
-                   teTopology.teNodes().size() == 1);
-        assertTrue("Number of TE links should be 1",
-                   teTopology.teLinks().size() == 1);
-        TeNode teNode = service
-                .teNode(new TeNodeKey(DefaultBuilder.teTopologyKey(),
-                                      DefaultBuilder.teNode().teNodeId()));
-        assertNotNull("TeNode should be found", teNode);
-        assertTrue("TE node should be identical", teNode.equals(DefaultBuilder.teNode()));
-        assertTrue("Number of TTPs should be 1",
-                   teNode.tunnelTerminationPoints().size() == 1);
-        TeLink teLink = service
-                .teLink(new TeLinkTpGlobalKey(DefaultBuilder
-                        .teTopologyKey(), DefaultBuilder.teLink().teLinkKey()));
-        assertNotNull("TeLink should be found", teLink);
-    }
-
-    /**
-     * Checks the right events are received when a network with TE topology is
-     * added and then removed.
-     */
-    @Test
-    public void networkRemoved() {
-        createNetwork();
-        providerService.networkRemoved(TeMgrUtil
-                .toNetworkId(DefaultBuilder.teTopologyKey()));
-        validateEvents(TE_TOPOLOGY_ADDED, NETWORK_ADDED, NETWORK_REMOVED,
-                       TE_TOPOLOGY_REMOVED);
-    }
-
-    /**
-     * Validates whether the manager receives the right events.
-     *
-     * @param types a set of types of control message event
-     */
-    protected void validateEvents(Enum... types) {
-        int i = 0;
-        assertEquals("wrong events received", types.length, listener.events.size());
-        for (Event event : listener.events) {
-            assertEquals("incorrect event type", types[i], event.type());
-            i++;
-        }
-        listener.events.clear();
-    }
-
-    private class TestProvider extends AbstractProvider implements TeTopologyProvider {
-        protected TestProvider() {
-            super(PID);
-        }
-    }
-
-    private static class TestListener implements TeTopologyListener {
-        final List<TeTopologyEvent> events = Lists.newArrayList();
-
-        @Override
-        public void event(TeTopologyEvent event) {
-            events.add(event);
-        }
-    }
-
-}
diff --git a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/package-info.java b/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/package-info.java
deleted file mode 100644
index a9bb817..0000000
--- a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * The TE topology implementation test functions.
- */
-package org.onosproject.tetopology.management;
diff --git a/apps/tetunnel/BUILD b/apps/tetunnel/BUILD
deleted file mode 100644
index 9467b00..0000000
--- a/apps/tetunnel/BUILD
+++ /dev/null
@@ -1,15 +0,0 @@
-BUNDLES = [
-    "//apps/tunnel/api:onos-apps-tunnel-api",
-    "//apps/tetunnel/api:onos-apps-tetunnel-api",
-    "//apps/tetunnel/app:onos-apps-tetunnel-app",
-]
-
-onos_app(
-    app_name = "org.onosproject.tetunnel",
-    category = "Traffic Engineering",
-    description = "Application to create and manage TE tunnels.",
-    included_bundles = BUNDLES,
-    required_apps = ["org.onosproject.tetopology"],
-    title = "TE Tunnel Core",
-    url = "http://onosproject.org",
-)
diff --git a/apps/tetunnel/api/BUILD b/apps/tetunnel/api/BUILD
deleted file mode 100644
index 0d45477..0000000
--- a/apps/tetunnel/api/BUILD
+++ /dev/null
@@ -1,8 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + [
-    "//apps/tunnel/api:onos-apps-tunnel-api",
-    "//apps/tetopology/api:onos-apps-tetopology-api",
-]
-
-osgi_jar_with_tests(
-    deps = COMPILE_DEPS,
-)
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelAdminService.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelAdminService.java
deleted file mode 100644
index d99d988..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelAdminService.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api;
-
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.tetunnel.api.tunnel.TeTunnel;
-import org.onosproject.tetunnel.api.tunnel.TeTunnelKey;
-
-import java.util.List;
-
-/**
- * Service for administering the TE Tunnel attributes.
- * <p>
- * Please note that this service works with the existing Tunnel subsystem
- * together, just as an extension to the tunnel subsystem, and only focuses
- * on TE Tunnel attributes management.
- */
-public interface TeTunnelAdminService extends TeTunnelService {
-
-    /**
-     * Creates a TE Tunnel with the supplied attributes, and returns an
-     * identifier for the tunnel on success, or null on failure.
-     *
-     * @param teTunnel TE Tunnel attributes
-     * @return created tunnel identifier or null if failed
-     */
-    TunnelId createTeTunnel(TeTunnel teTunnel);
-
-    /**
-     * Sets the corresponding Tunnel identifier of the TE Tunnel specified
-     * by the given key.
-     *
-     * @param teTunnelKey TE Tunnel key
-     * @param tunnelId corresponding tunnel identifier
-     */
-    void setTunnelId(TeTunnelKey teTunnelKey, TunnelId tunnelId);
-
-    /**
-     * Updates TE Tunnel attributes with supplied information, the old
-     * attributes will be totally overwrote by the new attributes.
-     *
-     * @param teTunnel new TE Tunnel attributes
-     */
-    void updateTeTunnel(TeTunnel teTunnel);
-
-    /**
-     * Updates state of a TE tunnel specified by the given key.
-     *
-     * @param key TE tunnel key
-     * @param state new state of the tunnel
-     */
-    void updateTunnelState(TeTunnelKey key, Tunnel.State state);
-
-    /**
-     * Removes a TE Tunnel specified by the given key.
-     *
-     * @param teTunnelKey TE Tunnel key
-     */
-    void removeTeTunnel(TeTunnelKey teTunnelKey);
-
-    /**
-     * Sets segment tunnels of a E2E cross-domain tunnel.
-     *
-     * @param e2eTunnelKey key of the E2E tunnel
-     * @param segmentTunnels list of segment tunnels
-     */
-    void setSegmentTunnel(TeTunnelKey e2eTunnelKey,
-                          List<TeTunnelKey> segmentTunnels);
-
-    //TODO: add interfaces for teGlobal and teLspState
-}
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelProviderService.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelProviderService.java
deleted file mode 100644
index f1038e9..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelProviderService.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api;
-
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.tetunnel.api.lsp.TeLsp;
-import org.onosproject.tetunnel.api.lsp.TeLspKey;
-import org.onosproject.tetunnel.api.tunnel.TeTunnel;
-import org.onosproject.tetunnel.api.tunnel.TeTunnelKey;
-
-/**
- * Service through which tunnel providers can inject TE Tunnel attributes
- * into the system.
- * <p>
- * Please note that this service works with the existing Tunnel subsystem
- * together, just as an extension to the tunnel subsystem, and only focus on TE
- * Tunnel attributes management.
- */
-public interface TeTunnelProviderService {
-
-    /**
-     * Signals that a TE Tunnel is created with supplied attributes.
-     *
-     * @param teTunnel new created TE Tunnel attributes
-     * @return created tunnel identifier or null if failed
-     */
-    TunnelId teTunnelAdded(TeTunnel teTunnel);
-
-    /**
-     * Signals that a TE Tunnel with specified attributes is removed.
-     *
-     * @param teTunnel removed TE Tunnel
-     */
-    void teTunnelRemoved(TeTunnel teTunnel);
-
-    /**
-     * Updates TE Tunnel attributes with supplied information, the old
-     * attributes will be totally overwrote by the new attributes.
-     *
-     * @param teTunnel new TE Tunnel attributes
-     */
-    void updateTeTunnel(TeTunnel teTunnel);
-
-    /**
-     * Updates state of a TE tunnel specified by the given key.
-     *
-     * @param key TE tunnel key
-     * @param state new state of the tunnel
-     */
-    void updateTunnelState(TeTunnelKey key, Tunnel.State state);
-
-    /**
-     * Signifies that a TE LSP is created.
-     *
-     * @param lsp new created TE LSP attributes
-     * @return key of the TE LSP or null if failed
-     */
-    TeLspKey teLspAdded(TeLsp lsp);
-
-    /**
-     * Signifies that a TE LSP is removed.
-     *
-     * @param lsp removed TE LSP
-     */
-    void teLspRemoved(TeLsp lsp);
-
-    /**
-     * Updates TE LSP attributes.
-     *
-     * @param lsp new TE LSP attributes
-     */
-    void updateTeLsp(TeLsp lsp);
-
-    //TODO: add interfaces for teGlobal and teLspState
-}
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelService.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelService.java
deleted file mode 100644
index b610621..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelService.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api;
-
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetunnel.api.lsp.TeLsp;
-import org.onosproject.tetunnel.api.lsp.TeLspKey;
-import org.onosproject.tetunnel.api.tunnel.TeTunnel;
-import org.onosproject.tetunnel.api.tunnel.TeTunnelKey;
-
-import java.util.Collection;
-
-/**
- * Service for TE Tunnel attributes management.
- * <p>
- * Please note that this service works with the existing Tunnel subsystem
- * together, just as an extension to the tunnel subsystem, and only focus on TE
- * Tunnel attributes management.
- */
-public interface TeTunnelService {
-
-    /**
-     * Returns the TE Tunnel with the specified key.
-     *
-     * @param teTunnelKey TE Tunnel key
-     * @return TeTunnel or null if one with the given key is not known
-     */
-    TeTunnel getTeTunnel(TeTunnelKey teTunnelKey);
-
-    /**
-     * Returns the TE Tunnel with the specified identifier.
-     *
-     * @param tunnelId corresponding tunnel identifier
-     * @return TeTunnel or null if one with the given identifier is not known
-     */
-    TeTunnel getTeTunnel(TunnelId tunnelId);
-
-    /**
-     * Returns the corresponding tunnel identifier of a TE tunnel with the
-     * specified key.
-     *
-     * @param teTunnelKey TE Tunnel key
-     * @return corresponding tunnel identifier or null if one with the given
-     * key is not known
-     */
-    TunnelId getTunnelId(TeTunnelKey teTunnelKey);
-
-    /**
-     * Returns a collection of currently known TE tunnels.
-     *
-     * @return collection of TE tunnels
-     */
-    Collection<TeTunnel> getTeTunnels();
-
-    /**
-     * Returns a collection of currently known TE Tunnels filtered by the
-     * specified TE tunnel type.
-     *
-     * @param type TE tunnel type to filter by
-     * @return filtered collection of TE tunnels
-     */
-    Collection<TeTunnel> getTeTunnels(TeTunnel.Type type);
-
-    /**
-     * Returns a collection of currently known TE tunnels filtered by specified
-     * TE topology key.
-     *
-     * @param teTopologyKey TE topology key to filter by
-     * @return filtered collection of TE tunnels
-     */
-    Collection<TeTunnel> getTeTunnels(TeTopologyKey teTopologyKey);
-
-    /**
-     * Returns the TE LSP with the specified key.
-     *
-     * @param key TE LSP key
-     * @return TeLsp or null if one with the given key is not known
-     */
-    TeLsp getTeLsp(TeLspKey key);
-
-    /**
-     * Returns a collection of currently known TE LSPs.
-     *
-     * @return collection of TeLsp
-     */
-    Collection<TeLsp> getTeLsps();
-
-    //TODO: add interfaces for teGlobal and teLspState
-}
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelStore.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelStore.java
deleted file mode 100644
index 13d834e..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelStore.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api;
-
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetunnel.api.lsp.TeLsp;
-import org.onosproject.tetunnel.api.lsp.TeLspKey;
-import org.onosproject.tetunnel.api.tunnel.TeTunnel;
-import org.onosproject.tetunnel.api.tunnel.TeTunnelKey;
-
-import java.util.Collection;
-
-/**
- * Manages TE tunnel attributes.
- * <p>
- * Please note that this service works with the existing Tunnel subsystem
- * together, just as an extension to the tunnel subsystem, and only focus on TE
- * Tunnel attributes management.
- */
-public interface TeTunnelStore {
-
-    /**
-     * Creates a TE Tunnel with the supplied attributes, and returns true on
-     * success, or false on failure.
-     *
-     * @param teTunnel TE Tunnel attributes
-     * @return true on success, or false on failure
-     */
-    boolean addTeTunnel(TeTunnel teTunnel);
-
-    /**
-     * Sets the corresponding Tunnel identifier of the TE Tunnel specified
-     * by the given key.
-     *
-     * @param teTunnelKey TE Tunnel key
-     * @param tunnelId corresponding tunnel identifier
-     */
-    void setTunnelId(TeTunnelKey teTunnelKey, TunnelId tunnelId);
-
-    /**
-     * Returns the corresponding Tunnel identifier of the TE tunnel.
-     *
-     * @param teTunnelKey TE Tunnel key
-     * @return corresponding Tunnel identifier
-     */
-    TunnelId getTunnelId(TeTunnelKey teTunnelKey);
-
-    /**
-     * Updates TE Tunnel attributes with supplied information, the old
-     * attributes will be totally overwrote by the new attributes.
-     *
-     * @param teTunnel new TE Tunnel attributes
-     */
-    void updateTeTunnel(TeTunnel teTunnel);
-
-    /**
-     * Removes a TE Tunnel specified by the given key.
-     *
-     * @param teTunnelKey TE Tunnel key
-     */
-    void removeTeTunnel(TeTunnelKey teTunnelKey);
-
-    /**
-     * Returns the TE Tunnel with the specified key.
-     *
-     * @param teTunnelKey TE Tunnel key
-     * @return TeTunnel or null if one with the given key is not known
-     */
-    TeTunnel getTeTunnel(TeTunnelKey teTunnelKey);
-
-    /**
-     * Returns the TE Tunnel with the specified identifier.
-     *
-     * @param tunnelId corresponding tunnel identifier
-     * @return TeTunnel or null if one with the given identifier is not known
-     */
-    TeTunnel getTeTunnel(TunnelId tunnelId);
-
-
-    /**
-     * Returns a collection of currently known TE Tunnels.
-     *
-     * @return collection of TeTunnels
-     */
-    Collection<TeTunnel> getTeTunnels();
-
-    /**
-     * Returns a collection of currently known TE Tunnels filtered by the
-     * specified TE tunnel type.
-     *
-     * @param type TE tunnel type to filter by
-     * @return filtered collection of TE tunnels
-     */
-    Collection<TeTunnel> getTeTunnels(TeTunnel.Type type);
-
-    /**
-     * Returns a collection of currently known TE tunnels filtered by specified
-     * TE topology key.
-     *
-     * @param teTopologyKey TE topology key to filter by
-     * @return filtered collection of TE tunnels
-     */
-    Collection<TeTunnel> getTeTunnels(TeTopologyKey teTopologyKey);
-
-    /**
-     * Adds a TE LSP.
-     *
-     * @param lsp TE LSP attributes
-     * @return true when success
-     */
-    boolean addTeLsp(TeLsp lsp);
-
-    /**
-     * Updates TE LSP attributes.
-     *
-     * @param lsp new TE LSP attributes
-     */
-    void updateTeLsp(TeLsp lsp);
-
-    /**
-     * Removes a TE LSP.
-     *
-     * @param key TE LSP key
-     */
-    void removeTeLsp(TeLspKey key);
-
-    /**
-     * Returns the TE LSP with the specified key.
-     *
-     * @param key TE LSP key
-     * @return TeLsp or null if one with the given key is not known
-     */
-    TeLsp getTeLsp(TeLspKey key);
-
-    /**
-     * Returns a collection of currently known TE LSP.
-     *
-     * @return collection of TeLsp
-     */
-    Collection<TeLsp> getTeLsps();
-}
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/DefaultTeLsp.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/DefaultTeLsp.java
deleted file mode 100644
index 2f75900..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/DefaultTeLsp.java
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api.lsp;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-import org.onosproject.tetunnel.api.tunnel.TeTunnel;
-import org.onosproject.tetunnel.api.tunnel.TeTunnelKey;
-import org.onosproject.tetunnel.api.tunnel.path.TeRouteSubobject;
-
-import java.util.List;
-
-/**
- * Default implementation of TE LSP.
- */
-public class DefaultTeLsp implements TeLsp {
-
-    private final TeLspKey teLspKey;
-    private final TeNodeKey srcNode;
-    private final TeNodeKey dstNode;
-    private final TtpKey srcTp;
-    private final TtpKey dstTp;
-    private final TeTunnelKey teTunnelKey;
-    private final TeTunnel.Type tunnelType;
-    private final TeTunnel.State operStatus;
-    private final LspProtectionRole lspProtectionRole;
-    private final OriginType originType;
-    private final List<TeRouteSubobject> lspRecordRoutes;
-
-    /**
-     * Creates an instance of default TE LSP with supplied information.
-     *
-     * @param teLspKey TE LSP key
-     * @param srcNode source TE node key
-     * @param dstNode destination TE node key
-     * @param srcTp source TE termination point key
-     * @param dstTp destination TE termination point key
-     * @param teTunnelKey TE tunnel key
-     * @param tunnelType TE tunnel type
-     * @param operStatus operational status
-     * @param lspProtectionRole protection type
-     * @param originType origin type
-     * @param lspRecordRoutes route of the LSP
-     */
-    protected DefaultTeLsp(TeLspKey teLspKey, TeNodeKey srcNode, TeNodeKey dstNode,
-                        TtpKey srcTp, TtpKey dstTp, TeTunnelKey teTunnelKey,
-                        TeTunnel.Type tunnelType, TeTunnel.State operStatus,
-                        LspProtectionRole lspProtectionRole,
-                        OriginType originType,
-                        List<TeRouteSubobject> lspRecordRoutes) {
-        this.srcNode = srcNode;
-        this.dstNode = dstNode;
-        this.srcTp = srcTp;
-        this.dstTp = dstTp;
-        this.teTunnelKey = teTunnelKey;
-        this.tunnelType = tunnelType;
-        this.operStatus = operStatus;
-        this.lspProtectionRole = lspProtectionRole;
-        this.originType = originType;
-        this.lspRecordRoutes = Lists.newArrayList(lspRecordRoutes);
-        this.teLspKey = teLspKey;
-    }
-
-    @Override
-    public TeLspKey teLspKey() {
-        return teLspKey;
-    }
-
-    @Override
-    public TeNodeKey srcNode() {
-        return srcNode;
-    }
-
-    @Override
-    public TeNodeKey dstNode() {
-        return dstNode;
-    }
-
-    @Override
-    public TtpKey srcTp() {
-        return srcTp;
-    }
-
-    @Override
-    public TtpKey dstTp() {
-        return dstTp;
-    }
-
-    @Override
-    public TeTunnelKey teTunnelKey() {
-        return teTunnelKey;
-    }
-
-    @Override
-    public TeTunnel.Type tunnelType() {
-        return tunnelType;
-    }
-
-    @Override
-    public TeTunnel.State operStatus() {
-        return operStatus;
-    }
-
-    @Override
-    public LspProtectionRole lspProtectionRole() {
-        return lspProtectionRole;
-    }
-
-    @Override
-    public OriginType originType() {
-        return originType;
-    }
-
-    @Override
-    public List<TeRouteSubobject> lspRecordRoutes() {
-        return ImmutableList.copyOf(lspRecordRoutes);
-    }
-
-
-    /**
-     * Creates a new default TE LSP builder.
-     *
-     * @return default builder
-     */
-    public static Builder builder() {
-        return new Builder();
-    }
-
-    /**
-     * Builder for default TE LSP objects.
-     */
-    public static class Builder {
-
-        private TeLspKey teLspKey = null;
-        private TeNodeKey srcNode = null;
-        private TeNodeKey dstNode = null;
-        private TtpKey srcTp = null;
-        private TtpKey dstTp = null;
-        private TeTunnelKey teTunnelKey = null;
-        private TeTunnel.Type tunnelType = null;
-        private TeTunnel.State operStatus = null;
-        private LspProtectionRole lspProtectionRole = null;
-        private OriginType originType = null;
-        private List<TeRouteSubobject> lspRecordRoutes = Lists.newArrayList();
-
-        /**
-         * Builds a default TE LSP object from the accumulated parameters.
-         *
-         * @return default TE LSP object
-         */
-        public DefaultTeLsp build() {
-            return new DefaultTeLsp(teLspKey, srcNode, dstNode, srcTp, dstTp,
-                                    teTunnelKey, tunnelType, operStatus,
-                                    lspProtectionRole, originType,
-                                    lspRecordRoutes);
-        }
-
-        /**
-         * Sets TE LSP key to be used by this builder.
-         *
-         * @param teLspKey TE LSP key
-         * @return self
-         */
-        public Builder teLspKey(TeLspKey teLspKey) {
-            this.teLspKey = teLspKey;
-            return this;
-        }
-
-        /**
-         * Sets source node key to be used by this builder.
-         *
-         * @param srcNode source node key
-         * @return self
-         */
-        public Builder srcNode(TeNodeKey srcNode) {
-            this.srcNode = srcNode;
-            return this;
-        }
-
-        /**
-         * Sets destination node key to be used by this builder.
-         *
-         * @param dstNode destination node key
-         * @return self
-         */
-        public Builder dstNode(TeNodeKey dstNode) {
-            this.dstNode = dstNode;
-            return this;
-        }
-
-        /**
-         * Sets source termination point key to be used by this builder.
-         *
-         * @param srcTp source termination point key
-         * @return self
-         */
-        public Builder srcTp(TtpKey srcTp) {
-            this.srcTp = srcTp;
-            return this;
-        }
-
-        /**
-         * Sets destination termination point key to be used by this builder.
-         *
-         * @param dstTp destination termination point key
-         * @return self
-         */
-        public Builder dstTp(TtpKey dstTp) {
-            this.dstTp = dstTp;
-            return this;
-        }
-
-        /**
-         * Sets TE tunnel key to be used by this builder.
-         *
-         * @param teTunnelKey TE tunnel key
-         * @return self
-         */
-        public Builder teTunnelKey(TeTunnelKey teTunnelKey) {
-            this.teTunnelKey = teTunnelKey;
-            return this;
-        }
-
-        /**
-         * Sets TE tunnel type to be used by this builder.
-         *
-         * @param tunnelType TE tunnel type
-         * @return self
-         */
-        public Builder tunnelType(TeTunnel.Type tunnelType) {
-            this.tunnelType = tunnelType;
-            return this;
-        }
-
-        /**
-         * Sets LSP operational status to be used by this builder.
-         *
-         * @param operStatus LSP operational status
-         * @return self
-         */
-        public Builder operStatus(TeTunnel.State operStatus) {
-            this.operStatus = operStatus;
-            return this;
-        }
-
-        /**
-         * Sets LSP protection role to be used by this builder.
-         *
-         * @param lspProtectionRole LSP protection role
-         * @return self
-         */
-        public Builder lspProtectionRole(LspProtectionRole lspProtectionRole) {
-            this.lspProtectionRole = lspProtectionRole;
-            return this;
-        }
-
-        /**
-         * Sets LSP origin type to be used by this builder.
-         *
-         * @param originType LSP origin type
-         * @return self
-         */
-        public Builder originType(OriginType originType) {
-            this.originType = originType;
-            return this;
-        }
-
-        /**
-         * Sets LSP record routes to be used by this builder.
-         *
-         * @param lspRecordRoutes LSP record routes
-         * @return self
-         */
-        public Builder lspRecordRoutes(List<TeRouteSubobject> lspRecordRoutes) {
-            if (lspRecordRoutes != null) {
-                this.lspRecordRoutes = lspRecordRoutes;
-            }
-            return this;
-        }
-    }
-}
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/TeLsp.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/TeLsp.java
deleted file mode 100644
index e44c7d1..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/TeLsp.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api.lsp;
-
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-import org.onosproject.tetunnel.api.tunnel.TeTunnel;
-import org.onosproject.tetunnel.api.tunnel.TeTunnelKey;
-import org.onosproject.tetunnel.api.tunnel.path.TeRouteSubobject;
-
-import java.util.List;
-
-/**
- * Representation of a TE LSP.
- */
-public interface TeLsp {
-
-    /**
-     * Protection roles of TE LSP.
-     */
-    enum LspProtectionRole {
-        /**
-         * Designates a working LSP.
-         */
-        WORKING,
-        /**
-         * Designates a protection LSP.
-         */
-        PROTECTION
-    }
-
-    /**
-     * Origin type of LSP relative to the location of the local switch in the
-     * path.
-     */
-    enum OriginType {
-        INGRESS,
-        EGRESS,
-        TRANSIT
-    }
-
-    /**
-     * Returns key of this TE LSP.
-     *
-     * @return key of this TE LSP
-     */
-    TeLspKey teLspKey();
-
-    /**
-     * Returns source TE node of this tunnel.
-     *
-     * @return source TE node key
-     */
-    TeNodeKey srcNode();
-
-    /**
-     * Returns source TE termination point of this tunnel.
-     *
-     * @return source TE termination point key
-     */
-    TtpKey srcTp();
-
-    /**
-     * Returns destination TE node of this tunnel.
-     *
-     * @return destination TE node key
-     */
-    TeNodeKey dstNode();
-
-    /**
-     * Returns destination TE termination point of this tunnel.
-     *
-     * @return destination TE termination point key
-     */
-    TtpKey dstTp();
-
-    /**
-     * Returns the TE tunnel used in the SESSION that remains constant over
-     * the life of the tunnel.
-     *
-     * @return TE tunnel key
-     */
-    TeTunnelKey teTunnelKey();
-
-    /**
-     * Returns corresponding tunnel type.
-     *
-     * @return TE tunnel type
-     */
-    TeTunnel.Type tunnelType();
-
-    /**
-     * Returns operational status of the LSP.
-     *
-     * @return operational status
-     */
-    TeTunnel.State operStatus();
-
-    /**
-     * Returns protection role of the LSP.
-     *
-     * @return protection role
-     */
-    LspProtectionRole lspProtectionRole();
-
-    /**
-     * Return origin type of the LSP.
-     *
-     * @return origin type
-     */
-    OriginType originType();
-
-    /**
-     * Returns route of this LSP.
-     *
-     * @return list of TeRouteSubobject
-     */
-    List<TeRouteSubobject> lspRecordRoutes();
-
-    //TODO add more attributes here.
-}
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/TeLspKey.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/TeLspKey.java
deleted file mode 100644
index 829233b..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/TeLspKey.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api.lsp;
-
-import com.google.common.base.Objects;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-
-/**
- * Representation of a TE LSP key, which identifies a TE Label-switched path
- * globally.
- */
-public class TeLspKey extends TeTopologyKey {
-
-    private final long teLspId;
-
-    /**
-     * Creates an instance of TeLspKey with supplied information.
-     *
-     * @param providerId provider identifier
-     * @param clientId   client identifier
-     * @param topologyId topology identifier
-     * @param teLspId TE LSP identifier
-     */
-    public TeLspKey(long providerId, long clientId,
-                    long topologyId, long teLspId) {
-        super(providerId, clientId, topologyId);
-        this.teLspId = teLspId;
-    }
-
-    /**
-     * Creates an instance of TeLspKey with specified TeTopologyKey and
-     * supplied TE LSP identifier.
-     *
-     * @param key the key of TE Topology to which this LSP belongs
-     * @param teLspId TE LSP identifier
-     */
-    public TeLspKey(TeTopologyKey key, long teLspId) {
-        super(key.providerId(), key.clientId(), key.topologyId());
-        this.teLspId = teLspId;
-    }
-
-    /**
-     * Returns the TE LSP identifier corresponding to this key.
-     *
-     * @return TE LSP identifier
-     */
-    public long teLspId() {
-        return teLspId;
-    }
-
-    /**
-     * Returns the key of the TE topology to which this LSP belongs.
-     *
-     * @return corresponding TE topology key
-     */
-    public TeTopologyKey teTopologyKey() {
-        return new TeTopologyKey(providerId(), clientId(), topologyId());
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(super.hashCode(), teLspId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof TeLspKey) {
-            if (!super.equals(object)) {
-                return false;
-            }
-            TeLspKey that = (TeLspKey) object;
-            return Objects.equal(this.teLspId, that.teLspId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper()
-                .add("topologyId", topologyId())
-                .add("teLspId", teLspId)
-                .toString();
-    }
-}
-
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/package-info.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/package-info.java
deleted file mode 100644
index e3388cb..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * IETF TE Tunnel LSP management API.
- */
-package org.onosproject.tetunnel.api.lsp;
\ No newline at end of file
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/package-info.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/package-info.java
deleted file mode 100644
index 4bd2d1c..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * IETF TE Tunnel attributes management service API.
- */
-package org.onosproject.tetunnel.api;
\ No newline at end of file
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/DefaultTeTunnel.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/DefaultTeTunnel.java
deleted file mode 100644
index 4f7740e..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/DefaultTeTunnel.java
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api.tunnel;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-import org.onosproject.tetunnel.api.tunnel.path.TePath;
-
-import java.util.List;
-
-/**
- * Default TE tunnel implementation.
- */
-public class DefaultTeTunnel implements TeTunnel {
-
-    private final TeTunnelKey teTunnelKey;
-    private final String name;
-    private final Type type;
-    private final LspProtectionType lspProtectionType;
-    private final State adminState;
-    private final TeNodeKey srcNode;
-    private final TeNodeKey dstNode;
-    private final TtpKey srcTp;
-    private final TtpKey dstTp;
-    private final List<TePath> primaryPaths;
-
-    private List<TeTunnelKey> segmentTunnels = null;
-    private TeTunnelKey e2eTunnel = null;
-
-    /**
-     * Creates a TE tunnel with supplied information.
-     *
-     * @param teTunnelKey TE tunnel key
-     * @param name TE tunnel name
-     * @param type TE tunnel type
-     * @param lspProtectionType LSP protection type of the TE tunnel
-     * @param adminState TE tunnel administrative state
-     * @param srcNode source TE node
-     * @param dstNode destination TE node
-     * @param srcTp source termination point
-     * @param dstTp destination termination point
-     * @param primaryPaths primary paths
-     */
-    protected DefaultTeTunnel(TeTunnelKey teTunnelKey, String name, Type type,
-                           LspProtectionType lspProtectionType,
-                              State adminState, TeNodeKey srcNode,
-                           TeNodeKey dstNode, TtpKey srcTp, TtpKey dstTp,
-                           List<TePath> primaryPaths) {
-        this.teTunnelKey = teTunnelKey;
-        this.name = name;
-        this.type = type;
-        this.lspProtectionType = lspProtectionType;
-        this.adminState = adminState;
-        this.srcNode = srcNode;
-        this.dstNode = dstNode;
-        this.srcTp = srcTp;
-        this.dstTp = dstTp;
-        this.primaryPaths = Lists.newArrayList(primaryPaths);
-    }
-
-    @Override
-    public TeTunnelKey teTunnelKey() {
-        return teTunnelKey;
-    }
-
-    @Override
-    public String name() {
-        return name;
-    }
-
-    @Override
-    public Type type() {
-        return type;
-    }
-
-    @Override
-    public LspProtectionType lspProtectionType() {
-        return lspProtectionType;
-    }
-
-    @Override
-    public State adminStatus() {
-        return adminState;
-    }
-
-    @Override
-    public TeNodeKey srcNode() {
-        return srcNode;
-    }
-
-    @Override
-    public TeNodeKey dstNode() {
-        return dstNode;
-    }
-
-    @Override
-    public List<TePath> primaryPaths() {
-        return ImmutableList.copyOf(primaryPaths);
-    }
-
-    @Override
-    public List<TeTunnelKey> segmentTunnels() {
-        return ImmutableList.copyOf(segmentTunnels);
-    }
-
-    @Override
-    public void segmentTunnels(List<TeTunnelKey> segmentTunnels) {
-        this.segmentTunnels = Lists.newArrayList(segmentTunnels);
-    }
-
-    @Override
-    public TeTunnelKey e2eTunnelKey() {
-        return e2eTunnel;
-    }
-
-    @Override
-    public void e2eTunnelKey(TeTunnelKey e2eTunnelKey) {
-        this.e2eTunnel = e2eTunnelKey;
-    }
-
-    @Override
-    public TtpKey srcTp() {
-        return srcTp;
-    }
-
-    @Override
-    public TtpKey dstTp() {
-        return dstTp;
-    }
-
-
-    /**
-     * Creates a new default TE tunnel builder.
-     *
-     * @return default builder
-     */
-    public static Builder builder() {
-        return new Builder();
-    }
-
-    /**
-     * Builder for default TE tunnel objects.
-     */
-    public static class Builder {
-
-        private TeTunnelKey teTunnelKey = null;
-        private String name = "";
-        private Type type = null;
-        private LspProtectionType lspProtectionType = null;
-        private State adminState = State.UP;
-        private TeNodeKey srcNode = null;
-        private TeNodeKey dstNode = null;
-        private TtpKey srcTp = null;
-        private TtpKey dstTp = null;
-        private List<TePath> primaryPaths = Lists.newArrayList();
-
-        /**
-         * Builds a default TE tunnel object from the accumulated parameters.
-         *
-         * @return default TE tunnel object
-         */
-        public DefaultTeTunnel build() {
-            return new DefaultTeTunnel(teTunnelKey, name, type,
-                                       lspProtectionType,
-                                       adminState, srcNode, dstNode,
-                                       srcTp, dstTp, primaryPaths);
-        }
-
-        /**
-         * Sets TE tunnel key to be used by this builder.
-         *
-         * @param teTunnelKey TE tunnel key
-         * @return self
-         */
-        public Builder teTunnelKey(TeTunnelKey teTunnelKey) {
-            this.teTunnelKey = teTunnelKey;
-            return this;
-        }
-
-        /**
-         * Sets TE tunnel name to be used by this builder.
-         *
-         * @param name TE tunnel name
-         * @return self
-         */
-        public Builder name(String name) {
-            this.name = name;
-            return this;
-        }
-
-        /**
-         * Sets TE tunnel type to be used by this builder.
-         *
-         * @param type TE tunnel type
-         * @return self
-         */
-        public Builder type(Type type) {
-            this.type = type;
-            return this;
-        }
-
-        /**
-         * Sets tunnel LSP protection type to be used by this builder.
-         *
-         * @param lspProtectionType protection type
-         * @return self
-         */
-        public Builder lspProtectionType(LspProtectionType lspProtectionType) {
-            this.lspProtectionType = lspProtectionType;
-            return this;
-        }
-
-        /**
-         * Sets administrative state to be used by this builder.
-         *
-         * @param adminState administrative state
-         * @return self
-         */
-        public Builder adminState(State adminState) {
-            this.adminState = adminState;
-            return this;
-        }
-
-        /**
-         * Sets source node key to be used by this builder.
-         *
-         * @param srcNode source node key
-         * @return self
-         */
-        public Builder srcNode(TeNodeKey srcNode) {
-            this.srcNode = srcNode;
-            return this;
-        }
-
-        /**
-         * Sets destination node key to be used by this builder.
-         *
-         * @param dstNode destination node key
-         * @return self
-         */
-        public Builder dstNode(TeNodeKey dstNode) {
-            this.dstNode = dstNode;
-            return this;
-        }
-
-        /**
-         * Sets source termination point key to be used by this builder.
-         *
-         * @param srcTp source termination point key
-         * @return self
-         */
-        public Builder srcTp(TtpKey srcTp) {
-            this.srcTp = srcTp;
-            return this;
-        }
-
-        /**
-         * Sets destination point key to be used by this builder.
-         *
-         * @param dstTp destination point key
-         * @return self
-         */
-        public Builder dstTp(TtpKey dstTp) {
-            this.dstTp = dstTp;
-            return this;
-        }
-
-        /**
-         * Sets primary paths to be used by this builder.
-         *
-         * @param primaryPaths list of TePath
-         * @return self
-         */
-        public Builder primaryPaths(List<TePath> primaryPaths) {
-            if (primaryPaths != null) {
-            this.primaryPaths = primaryPaths;
-            }
-            return this;
-        }
-    }
-}
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnel.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnel.java
deleted file mode 100644
index 8be5d4d..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnel.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api.tunnel;
-
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-import org.onosproject.tetunnel.api.tunnel.path.TePath;
-
-import java.util.List;
-
-/**
- * Representation of a TE tunnel attributes.
- */
-public interface TeTunnel {
-
-    /**
-     * TE tunnel types.
-     */
-    enum Type {
-        /**
-         * Designates TE point-to-point tunnel.
-         */
-        P2P,
-        /**
-         * Designates TE point-to-multipoint tunnel.
-         */
-        P2MP,
-        /**
-         * Designates RSVP-TE path signaling tunnel.
-         */
-        PATH_SIGNALING_RSVPTE,
-        /**
-         * Designates Segment-routing path signaling tunnel.
-         */
-        PATH_SIGNALING_SR
-    }
-
-    /**
-     * LSP protection types.
-     */
-    enum LspProtectionType {
-        /**
-         * Designates LSP protection "Unprotected".
-         */
-        LSP_PROT_UNPROTECTED,
-        /**
-         * Designates LSP protection "Rerouting without Extra-Traffic".
-         */
-        LSP_PROT_REROUTE,
-        /**
-         * Designates LSP protection "(Full) Rerouting".
-         */
-        LSP_PROT_REROUTE_EXTRA,
-        /**
-         * Designates LSP protection "1+1 Unidirectional Protection".
-         */
-        LSP_PROT_UNIDIR_1_TO_1,
-        /**
-         * Designates LSP protection "1+1 Bidirectional Protection".
-         */
-        LSP_PROT_BIDIR_1_TO_1,
-        /**
-         * Designates LSP protection "1:N Protection with Extra-Traffic".
-         */
-        LSP_PROT_1_FOR_N
-    }
-
-    /**
-     * TE Tunnel state.
-     */
-    enum State {
-        /**
-         * Designates the tunnel is down (non-operational).
-         */
-        DOWN,
-        /**
-         * Designates the tunnel is up.
-         */
-        UP
-    }
-
-    /**
-     * Returns the TE tunnel key.
-     *
-     * @return TE tunnel key
-     */
-    TeTunnelKey teTunnelKey();
-
-    /**
-     * Returns the name of the TE tunnel.
-     *
-     * @return name of the TE tunnel
-     */
-    String name();
-
-    /**
-     * Returns the type of the TE tunnel.
-     *
-     * @return type of the TE tunnel
-     */
-    Type type();
-
-    /**
-     * Returns the key of source TE node of this TE tunnel.
-     *
-     * @return key of the source TE node
-     */
-    TeNodeKey srcNode();
-
-    /**
-     * Returns key of the source TE termination point of this tunnel.
-     *
-     * @return key of the source TE termination point
-     */
-    TtpKey srcTp();
-
-    /**
-     * Returns key of the destination TE node of this TE tunnel.
-     *
-     * @return key of the destination TE node
-     */
-    TeNodeKey dstNode();
-
-    /**
-     * Returns key of the destination TE termination point of this TE tunnel.
-     *
-     * @return key of the destination TE termination point
-     */
-    TtpKey dstTp();
-
-    /**
-     * Returns the TE LSP protection type of the TE tunnel.
-     *
-     * @return TE LSP protection type of the TE tunnel
-     */
-    LspProtectionType lspProtectionType();
-
-    /**
-     * Returns the TE tunnel administrative state.
-     *
-     * @return TE tunnel administrative state
-     */
-    State adminStatus();
-
-    /**
-     * Returns primary paths of this TE tunnel.
-     *
-     * @return a list of TE paths
-     */
-    List<TePath> primaryPaths();
-
-    /**
-     * Returns segment tunnels of this (E2E cross-domain) tunnel.
-     *
-     * @return a list of keys of the segment tunnels
-     */
-    List<TeTunnelKey> segmentTunnels();
-
-    /**
-     * Sets segment tunnels of this (E2E cross-domain) tunnel.
-     *
-     * @param segmentTunnels a list of keys of segment tunnels
-     */
-    void segmentTunnels(List<TeTunnelKey> segmentTunnels);
-
-    /**
-     * Returns key of the E2E tunnel of this (segment) tunnel.
-     *
-     * @return key of the corresponding E2E TE tunnel
-     */
-    TeTunnelKey e2eTunnelKey();
-
-    /**
-     * Sets the E2E tunnel of this (segment) tunnel.
-     *
-     * @param e2eTunnelKey key of the corresponding E2E tunnel
-     */
-    void e2eTunnelKey(TeTunnelKey e2eTunnelKey);
-
-    //TODO: add more required TE attributes
-}
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnelEndpoint.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnelEndpoint.java
deleted file mode 100644
index c8aed14..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnelEndpoint.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api.tunnel;
-
-import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-import java.util.Objects;
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-/**
- * TE tunnel endpoint implementation.
- */
-public class TeTunnelEndpoint implements TunnelEndPoint {
-
-    private final TeNodeKey teNodeKey;
-    private final TtpKey ttpKey;
-
-    /**
-     * Creates a TE tunnel end point instance with supplied information.
-     *
-     * @param teNodeKey key of the TE node of this end point
-     * @param ttpKey key of the TE termination point of this end point
-     */
-    public TeTunnelEndpoint(TeNodeKey teNodeKey, TtpKey ttpKey) {
-        this.teNodeKey = teNodeKey;
-        this.ttpKey = ttpKey;
-    }
-
-    /**
-     * Returns key of the TE node of this end point.
-     *
-     * @return key of corresponding TE node
-     */
-    public TeNodeKey teNodeKey() {
-        return teNodeKey;
-    }
-
-    /**
-     * Returns key of the TE termination point of this end point.
-     *
-     * @return key of corresponding TE termination point
-     */
-    public TtpKey ttpKey() {
-        return ttpKey;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(teNodeKey, ttpKey);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof TeTunnelEndpoint) {
-            final TeTunnelEndpoint other = (TeTunnelEndpoint) obj;
-            return Objects.equals(this.teNodeKey, other.teNodeKey) &&
-                    Objects.equals(this.ttpKey, other.ttpKey);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("teNodeKey", teNodeKey)
-                .add("ttpKey", ttpKey)
-                .toString();
-    }
-}
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnelKey.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnelKey.java
deleted file mode 100644
index 45cdb0b..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnelKey.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api.tunnel;
-
-import com.google.common.base.Objects;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-/**
- * Representation of a TE tunnel key, which identifies a TE tunnel globally.
- */
-public class TeTunnelKey extends TeTopologyKey {
-
-    private final long teTunnelId;
-
-    /**
-     * Creates an instance of TE tunnel key with supplied information.
-     *
-     * @param providerId provider identifier
-     * @param clientId client identifier
-     * @param topologyId topology identifier
-     * @param teTunnelId TE tunnel identifier
-     */
-    public TeTunnelKey(long providerId, long clientId,
-                     long topologyId, long teTunnelId) {
-        super(providerId, clientId, topologyId);
-        this.teTunnelId = teTunnelId;
-    }
-
-    /**
-     * Creates an instance of TE tunnel key with specified TeTopologyKey and
-     * supplied TE tunnel identifier.
-     *
-     * @param key the key of TE topology to which this tunnel belongs
-     * @param tunnelId TE tunnel identifier
-     */
-    public TeTunnelKey(TeTopologyKey key, long tunnelId) {
-        super(key.providerId(), key.clientId(), key.topologyId());
-        this.teTunnelId = tunnelId;
-    }
-
-    /**
-     * Returns the TE tunnel identifier.
-     *
-     * @return TE tunnel identifier
-     */
-    public long teTunnelId() {
-        return teTunnelId;
-    }
-
-    /**
-     * Returns key of the TE topology to which this tunnel belongs.
-     *
-     * @return corresponding TE topology key
-     */
-    public TeTopologyKey teTopologyKey() {
-        return new TeTopologyKey(providerId(), clientId(), topologyId());
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(super.hashCode(), teTunnelId);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object instanceof TeTunnelKey) {
-            if (!super.equals(object)) {
-                return false;
-            }
-            TeTunnelKey that = (TeTunnelKey) object;
-            return Objects.equal(this.teTunnelId, that.teTunnelId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper()
-                .add("topologyId", topologyId())
-                .add("teTunnelId", teTunnelId)
-                .toString();
-    }
-}
-
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/package-info.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/package-info.java
deleted file mode 100644
index 606dc7b..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * IETF TE Tunnel attributes management API.
- */
-package org.onosproject.tetunnel.api.tunnel;
\ No newline at end of file
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePath.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePath.java
deleted file mode 100644
index 289cf61..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePath.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api.tunnel.path;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import org.onosproject.tetunnel.api.lsp.TeLspKey;
-
-import java.util.List;
-
-/**
- * Default implementation of TE path.
- */
-public class DefaultTePath implements TePath {
-
-    private final Type type;
-    private final List<TeLspKey> lsps;
-    private final List<TeRouteSubobject> explicitRoute;
-    private final List<TePath> secondaryPaths;
-
-    /**
-     * Creates a default implementation of TE path with supplied information.
-     *
-     * @param type type of TE Path
-     * @param lsps LSPs of the TE Path
-     * @param explicitRoute explicit route of the (Explicit) TE path
-     * @param secondaryPaths secondary paths of the TE path
-     */
-    public DefaultTePath(Type type, List<TeLspKey> lsps,
-                         List<TeRouteSubobject> explicitRoute,
-                         List<TePath> secondaryPaths) {
-        this.type = type;
-        if (lsps == null) {
-            this.lsps = Lists.newArrayList();
-        } else {
-            this.lsps = Lists.newArrayList(lsps);
-        }
-        if (explicitRoute == null) {
-            this.explicitRoute = Lists.newArrayList();
-        } else {
-            this.explicitRoute = Lists.newArrayList(explicitRoute);
-        }
-        if (secondaryPaths == null) {
-            this.secondaryPaths = Lists.newArrayList();
-        } else {
-            this.secondaryPaths = Lists.newArrayList(secondaryPaths);
-        }
-    }
-
-    @Override
-    public Type type() {
-        return type;
-    }
-
-    @Override
-    public List<TeLspKey> lsps() {
-        return ImmutableList.copyOf(lsps);
-    }
-
-    @Override
-    public List<TeRouteSubobject> explicitRoute() {
-        return ImmutableList.copyOf(explicitRoute);
-    }
-
-    @Override
-    public List<TePath> secondaryPaths() {
-        return ImmutableList.copyOf(secondaryPaths);
-    }
-}
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePathSelection.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePathSelection.java
deleted file mode 100644
index 8b9c2c6..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePathSelection.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api.tunnel.path;
-
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-
-/**
- * Default implementation of TE path selection.
- */
-public class DefaultTePathSelection implements TePathSelection {
-
-    private final TeTopologyKey teTopologyKey;
-    private final long costLimit;
-    private final short hopLimit;
-
-    /**
-     * Creates a default implementation of TE path selection with supplied
-     * information.
-     *
-     * @param teTopologyKey key of corresponding TE topology
-     * @param costLimit cost limit of the TE path
-     * @param hopLimit hot limit of the TE path
-     */
-    public DefaultTePathSelection(TeTopologyKey teTopologyKey,
-                                  long costLimit, short hopLimit) {
-        this.teTopologyKey = teTopologyKey;
-        this.costLimit = costLimit;
-        this.hopLimit = hopLimit;
-    }
-
-    @Override
-    public TeTopologyKey teTopologyKey() {
-        return teTopologyKey;
-    }
-
-    @Override
-    public long costLimit() {
-        return costLimit;
-    }
-
-    @Override
-    public short hopLimit() {
-        return hopLimit;
-    }
-}
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTeRouteUnnumberedLink.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTeRouteUnnumberedLink.java
deleted file mode 100644
index c8ed39e..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTeRouteUnnumberedLink.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api.tunnel.path;
-
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-
-/**
- * Default implementation of a TE unnumbered link route object.
- */
-public class DefaultTeRouteUnnumberedLink implements TeRouteUnnumberedLink {
-
-    private final TeNodeKey node;
-    private final TtpKey ttp;
-
-    /**
-     * Creates a default implementation of a TE unnumbered link route object.
-     *
-     * @param node key of TE node of the route subobject
-     * @param ttp  key of TE termination point of the route subobject
-     */
-    public DefaultTeRouteUnnumberedLink(TeNodeKey node, TtpKey ttp) {
-        this.node = node;
-        this.ttp = ttp;
-    }
-
-    @Override
-    public Type type() {
-        return Type.UNNUMBERED_LINK;
-    }
-
-    @Override
-    public TeNodeKey node() {
-        return node;
-    }
-
-    @Override
-    public TtpKey ttp() {
-        return ttp;
-    }
-}
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TePath.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TePath.java
deleted file mode 100644
index 7c5e6b8..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TePath.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api.tunnel.path;
-
-import org.onosproject.tetunnel.api.lsp.TeLspKey;
-
-import java.util.List;
-
-/**
- * Representation of a TE tunnel path.
- */
-public interface TePath {
-
-    /**
-     * Types of TE path.
-     */
-    enum Type {
-        /**
-         * Designates a dynamically computed path.
-         */
-        DYNAMIC,
-        /**
-         * Designates a path with explicit route.
-         */
-        EXPLICIT
-    }
-
-    /**
-     * Returns type of this TE path.
-     *
-     * @return type of this TE path
-     */
-    Type type();
-
-    /**
-     * Returns keys of TE LSPs of this TE path.
-     *
-     * @return list of keys of TE LSPs
-     */
-    List<TeLspKey> lsps();
-
-    /**
-     * Returns specified route of ths (Explicit) TE path.
-     *
-     * @return list of TE route subobjects.
-     */
-    List<TeRouteSubobject> explicitRoute();
-
-    /**
-     * Returns secondary TE paths of this TE path.
-     *
-     * @return list of secondary TE paths.
-     */
-    List<TePath> secondaryPaths();
-
-    //TODO add more attributes here.
-}
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TePathSelection.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TePathSelection.java
deleted file mode 100644
index 9c5edcf..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TePathSelection.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api.tunnel.path;
-
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-
-/**
- * Representation of a TE tunnel path selection attributes.
- */
-public interface TePathSelection {
-
-    /**
-     * Returns key of corresponding TE topology of the TE path.
-     *
-     * @return key of corresponding TE topology
-     */
-    TeTopologyKey teTopologyKey();
-
-    /**
-     * Returns cost limit of the TE path.
-     *
-     * @return cost limit
-     */
-    long costLimit();
-
-    /**
-     * Returns hop limit of the TE path.
-     *
-     * @return hop limit
-     */
-    short hopLimit();
-
-    //TODO add more attributes here.
-}
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TeRouteSubobject.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TeRouteSubobject.java
deleted file mode 100644
index 3facc21..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TeRouteSubobject.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api.tunnel.path;
-
-/**
- * Representation of a TE LSP route element.
- */
-public interface TeRouteSubobject {
-
-    /**
-     * Types of TE route subobject.
-     */
-    enum Type {
-        /**
-         * Designates Unnumbered link route sub-object.
-         */
-        UNNUMBERED_LINK,
-        /**
-         * Designates a label route sub-object.
-         */
-        LABEL,
-        /**
-         * Designates an IPv4 address route sub-object.
-         */
-        IPV4_ADDRESS,
-        /**
-         * Designates an IPv6 address route sub-object.
-         */
-        IPV6_ADDRESS
-    }
-
-    /**
-     * Return type of the route subobject.
-     *
-     * @return type of route subobject
-     */
-    Type type();
-}
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TeRouteUnnumberedLink.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TeRouteUnnumberedLink.java
deleted file mode 100644
index 0a4862d..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TeRouteUnnumberedLink.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api.tunnel.path;
-
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-
-/**
- * Representation of a UnnumberedLink as a TE LSP route element.
- */
-public interface TeRouteUnnumberedLink extends TeRouteSubobject {
-
-    /**
-     * Returns node of this route subobject.
-     *
-     * @return TE node key
-     */
-    TeNodeKey node();
-
-    /**
-     * Returns termination point of this route subobject.
-     *
-     * @return TE termination point key
-     */
-    TtpKey ttp();
-}
diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/package-info.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/package-info.java
deleted file mode 100644
index 1d1b3f5..0000000
--- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * IETF TE Tunnel paths management API.
- */
-package org.onosproject.tetunnel.api.tunnel.path;
\ No newline at end of file
diff --git a/apps/tetunnel/api/src/test/java/org/onosproject/tetunnel/api/tunnel/DefaultTeTunnelTest.java b/apps/tetunnel/api/src/test/java/org/onosproject/tetunnel/api/tunnel/DefaultTeTunnelTest.java
deleted file mode 100644
index 8fa25d0..0000000
--- a/apps/tetunnel/api/src/test/java/org/onosproject/tetunnel/api/tunnel/DefaultTeTunnelTest.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api.tunnel;
-
-import com.google.common.collect.Lists;
-import org.junit.Assert;
-import org.junit.Test;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-import org.onosproject.tetunnel.api.lsp.TeLspKey;
-import org.onosproject.tetunnel.api.tunnel.path.DefaultTePath;
-import org.onosproject.tetunnel.api.tunnel.path.TePath;
-
-import java.util.List;
-
-/**
- * Unit tests for default TE tunnel implementation.
- */
-public class DefaultTeTunnelTest {
-
-    /**
-     * Tests constructor of TeTunnelKey.
-     */
-    @Test
-    public void testConstructorOfTeTunnelKey() {
-        final int providerId = 1;
-        final int clientId = 2;
-        final int topologyId = 3;
-        final int teTunnelId = 4;
-
-        TeTunnelKey key = new TeTunnelKey(providerId, clientId, topologyId,
-                                          teTunnelId);
-
-        Assert.assertEquals(key.teTunnelId(), teTunnelId);
-        Assert.assertEquals(key.teTopologyKey(),
-                            new TeTopologyKey(providerId, clientId,
-                                              topologyId));
-        Assert.assertTrue(key.equals(
-                          new TeTunnelKey(providerId, clientId, topologyId,
-                                          teTunnelId)));
-    }
-
-    /**
-     * Tests constructor of TeLspKey.
-     */
-    @Test
-    public void testConstructorOfTeLspKey() {
-        final int providerId = 1;
-        final int clientId = 2;
-        final int topologyId = 3;
-        final int teLspId = 4;
-
-        TeLspKey key = new TeLspKey(providerId, clientId, topologyId,
-                                       teLspId);
-
-        Assert.assertEquals(key.teLspId(), teLspId);
-        Assert.assertEquals(key.teTopologyKey(),
-                            new TeTopologyKey(providerId, clientId,
-                                              topologyId));
-        Assert.assertTrue(key.equals(
-                new TeLspKey(providerId, clientId, topologyId,
-                                teLspId)));
-    }
-
-    /**
-     * Tests builder of the DefaultTeTunnel.
-     */
-    @Test
-    public void testDefaultTeTunnelBuilder() {
-        final int providerId = 1;
-        final int clientId = 2;
-        final int topologyId = 3;
-        final int srcNodeId = 4;
-        final int srcTtpId = 5;
-        final int dstNodeId = 6;
-        final int dstTtpId = 7;
-        final int teTunnelId = 8;
-        final String teTunnelName = "Test TE tunnel";
-        final List<TePath> paths = Lists.newArrayList(
-                new DefaultTePath(TePath.Type.DYNAMIC, null, null, null));
-        final int segTunnelId1 = 1001;
-        final int segTunnelId2 = 1002;
-        final int segTunnelId3 = 1003;
-
-        TeTunnel teTunnel = DefaultTeTunnel.builder()
-                .teTunnelKey(
-                        new TeTunnelKey(providerId, clientId, topologyId,
-                                        teTunnelId))
-                .srcNode(new TeNodeKey(providerId, clientId, topologyId,
-                                       srcNodeId))
-                .srcTp(new TtpKey(providerId, clientId, topologyId, srcNodeId,
-                                  srcTtpId))
-                .dstNode(new TeNodeKey(providerId, clientId, topologyId,
-                                       dstNodeId))
-                .dstTp(new TtpKey(providerId, clientId, topologyId, dstNodeId,
-                                  dstTtpId))
-                .name(teTunnelName)
-                .adminState(TeTunnel.State.UP)
-                .lspProtectionType(TeTunnel.LspProtectionType.LSP_PROT_REROUTE)
-                .type(TeTunnel.Type.P2P)
-                .primaryPaths(paths)
-                .build();
-
-        Assert.assertEquals(teTunnel.teTunnelKey().teTopologyKey(),
-                            new TeTopologyKey(providerId, clientId,
-                                              topologyId));
-        Assert.assertEquals(teTunnel.teTunnelKey().teTunnelId(), teTunnelId);
-        Assert.assertEquals(teTunnel.srcNode(),
-                            new TeNodeKey(providerId, clientId, topologyId,
-                                                              srcNodeId));
-        Assert.assertEquals(teTunnel.dstNode(),
-                            new TeNodeKey(providerId, clientId, topologyId,
-                                          dstNodeId));
-        Assert.assertEquals(teTunnel.srcTp(),
-                            new TtpKey(providerId, clientId, topologyId,
-                                       srcNodeId, srcTtpId));
-        Assert.assertEquals(teTunnel.dstTp(),
-                            new TtpKey(providerId, clientId, topologyId,
-                                       dstNodeId, dstTtpId));
-        Assert.assertEquals(teTunnel.name(), teTunnelName);
-        Assert.assertEquals(teTunnel.adminStatus(), TeTunnel.State.UP);
-        Assert.assertEquals(teTunnel.lspProtectionType(),
-                            TeTunnel.LspProtectionType.LSP_PROT_REROUTE);
-        Assert.assertEquals(teTunnel.type(), TeTunnel.Type.P2P);
-        Assert.assertEquals(teTunnel.primaryPaths().get(0).type(),
-                            TePath.Type.DYNAMIC);
-        Assert.assertEquals(teTunnel.primaryPaths(), paths);
-
-        TeTunnelKey segTunnel1 = new TeTunnelKey(providerId, clientId,
-                                                 topologyId, segTunnelId1);
-        TeTunnelKey segTunnel2 = new TeTunnelKey(providerId, clientId,
-                                                 topologyId, segTunnelId2);
-        TeTunnelKey segTunnel3 = new TeTunnelKey(providerId, clientId,
-                                                 topologyId, segTunnelId3);
-        List<TeTunnelKey> segTunnels = Lists.newArrayList(segTunnel1,
-                                                          segTunnel2,
-                                                          segTunnel3);
-        teTunnel.segmentTunnels(segTunnels);
-        Assert.assertEquals(teTunnel.segmentTunnels(), segTunnels);
-    }
-}
diff --git a/apps/tetunnel/api/src/test/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePathTest.java b/apps/tetunnel/api/src/test/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePathTest.java
deleted file mode 100644
index daafa00..0000000
--- a/apps/tetunnel/api/src/test/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePathTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.api.tunnel.path;
-
-import com.google.common.collect.Lists;
-import org.junit.Assert;
-import org.junit.Test;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.node.TeNodeKey;
-import org.onosproject.tetopology.management.api.node.TtpKey;
-import org.onosproject.tetunnel.api.lsp.TeLspKey;
-
-import java.util.List;
-
-/**
- * Unit tests for default TE path implementation.
- */
-public class DefaultTePathTest {
-
-    /**
-     * Tests constructor of DefaultTePathSelection.
-     */
-    @Test
-    public void testConstructorOfDefaultTePathSelection() {
-        final int providerId = 1;
-        final int clientId = 2;
-        final int topologyId = 3;
-        final long costLimit = 4;
-        final short hopLimit = 5;
-
-        TePathSelection tePathSelection = new DefaultTePathSelection(
-                new TeTopologyKey(providerId, clientId, topologyId),
-                costLimit, hopLimit);
-        Assert.assertEquals(tePathSelection.teTopologyKey(),
-                            new TeTopologyKey(providerId, clientId, topologyId));
-        Assert.assertEquals(tePathSelection.costLimit(), costLimit);
-        Assert.assertEquals(tePathSelection.hopLimit(), hopLimit);
-    }
-
-    /**
-     * Tests constructor of DefaultTeRouteUnnumberedLink.
-     */
-    @Test
-    public void testConstructorOfDefaultTeRouteUnnumberedLink() {
-        final int providerId = 1;
-        final int clientId = 2;
-        final int topologyId = 3;
-        final int teNodeId = 4;
-        final int teTtpId = 5;
-
-        TeRouteUnnumberedLink teRouteUnnumberedLink =
-                new DefaultTeRouteUnnumberedLink(
-                        new TeNodeKey(providerId, clientId,
-                                      topologyId, teNodeId),
-                        new TtpKey(providerId, clientId,
-                                   topologyId, teNodeId, teTtpId));
-
-        Assert.assertEquals(teRouteUnnumberedLink.type(),
-                            TeRouteSubobject.Type.UNNUMBERED_LINK);
-        Assert.assertEquals(teRouteUnnumberedLink.node(),
-                            new TeNodeKey(providerId, clientId,
-                                          topologyId, teNodeId));
-        Assert.assertEquals(teRouteUnnumberedLink.ttp(),
-                            new TtpKey(providerId, clientId,
-                                       topologyId, teNodeId, teTtpId));
-    }
-
-    /**
-     * Tests constructor of DefaultTePath.
-     */
-    @Test
-    public void testConstructorOfDefaultTePath() {
-        final int providerId = 1;
-        final int clientId = 2;
-        final int topologyId = 3;
-        final int teNodeId = 4;
-        final int teTtpId = 5;
-        final int teLspId = 6;
-
-        List<TeLspKey> lspKeys = Lists.newArrayList(
-                new TeLspKey(providerId, clientId, topologyId, teLspId));
-
-        TeRouteUnnumberedLink teRouteUnnumberedLink =
-                new DefaultTeRouteUnnumberedLink(
-                        new TeNodeKey(providerId, clientId,
-                                      topologyId, teNodeId),
-                        new TtpKey(providerId, clientId,
-                                   topologyId, teNodeId, teTtpId));
-        List<TeRouteSubobject> explicitRoute = Lists.newArrayList(
-                teRouteUnnumberedLink);
-
-        List<TePath> secondaryPaths = Lists.newArrayList(
-                new DefaultTePath(TePath.Type.DYNAMIC, null, null, null)
-        );
-
-        TePath tePath = new DefaultTePath(TePath.Type.EXPLICIT, lspKeys,
-                                          explicitRoute, secondaryPaths);
-
-        Assert.assertEquals(tePath.type(), TePath.Type.EXPLICIT);
-        Assert.assertEquals(tePath.explicitRoute(), explicitRoute);
-        Assert.assertEquals(tePath.lsps(), lspKeys);
-        Assert.assertEquals(tePath.secondaryPaths(), secondaryPaths);
-    }
-}
diff --git a/apps/tetunnel/app/BUILD b/apps/tetunnel/app/BUILD
deleted file mode 100644
index d5a367e..0000000
--- a/apps/tetunnel/app/BUILD
+++ /dev/null
@@ -1,16 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + KRYO + [
-    "//apps/tetopology/api:onos-apps-tetopology-api",
-    "//apps/tetunnel/api:onos-apps-tetunnel-api",
-    "//apps/tunnel/api:onos-apps-tunnel-api",
-    "//core/store/serializers:onos-core-serializers",
-]
-
-TEST_DEPS = TEST_ADAPTERS + [
-    "//utils/osgi:onlab-osgi-tests",
-    "//apps/tunnel/api:onos-apps-tunnel-api-tests",
-]
-
-osgi_jar_with_tests(
-    test_deps = TEST_DEPS,
-    deps = COMPILE_DEPS,
-)
diff --git a/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/DistributedTeTunnelStore.java b/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/DistributedTeTunnelStore.java
deleted file mode 100644
index e9da5e4..0000000
--- a/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/DistributedTeTunnelStore.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.impl;
-
-import com.google.common.collect.ImmutableList;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.LogicalClockService;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetunnel.api.TeTunnelStore;
-import org.onosproject.tetunnel.api.lsp.TeLsp;
-import org.onosproject.tetunnel.api.lsp.TeLspKey;
-import org.onosproject.tetunnel.api.tunnel.TeTunnel;
-import org.onosproject.tetunnel.api.tunnel.TeTunnelKey;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.Collection;
-import java.util.stream.Collectors;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Manages the TE tunnel attributes using an eventually consistent map.
- */
-@Component(immediate = true, service = TeTunnelStore.class)
-public class DistributedTeTunnelStore implements TeTunnelStore {
-
-    private final Logger log = getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LogicalClockService clockService;
-
-    private EventuallyConsistentMap<TeTunnelKey, TeTunnel> teTunnels;
-    private EventuallyConsistentMap<TeTunnelKey, TunnelId> tunnelIds;
-    private EventuallyConsistentMap<TeLspKey, TeLsp> lsps;
-
-    @Activate
-    public void activate() {
-        KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
-                .register(KryoNamespaces.API)
-                .nextId(KryoNamespaces.BEGIN_USER_CUSTOM_ID)
-                .register(TeTunnel.class);
-
-        teTunnels = storageService.<TeTunnelKey, TeTunnel>eventuallyConsistentMapBuilder()
-                .withName("TeTunnelStore")
-                .withSerializer(serializer)
-                .withTimestampProvider((k, v) -> clockService.getTimestamp())
-                .build();
-
-        tunnelIds = storageService.<TeTunnelKey, TunnelId>eventuallyConsistentMapBuilder()
-                .withName("TeTunnelIdStore")
-                .withSerializer(serializer)
-                .withTimestampProvider((k, v) -> clockService.getTimestamp())
-                .build();
-
-        lsps = storageService.<TeLspKey, TeLsp>eventuallyConsistentMapBuilder()
-                .withName("TeLspStore")
-                .withSerializer(serializer)
-                .withTimestampProvider((k, v) -> clockService.getTimestamp())
-                .build();
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        teTunnels.destroy();
-        tunnelIds.destroy();
-        lsps.destroy();
-
-        log.info("Stopped");
-    }
-
-    @Override
-    public boolean addTeTunnel(TeTunnel teTunnel) {
-        if (teTunnel == null) {
-            log.warn("teTunnel is null");
-            return false;
-        }
-        if (teTunnels.containsKey(teTunnel.teTunnelKey())) {
-            log.warn("teTunnel already exist");
-            return false;
-        }
-        teTunnels.put(teTunnel.teTunnelKey(), teTunnel);
-        return true;
-    }
-
-    @Override
-    public void setTunnelId(TeTunnelKey teTunnelKey, TunnelId tunnelId) {
-        tunnelIds.put(teTunnelKey, tunnelId);
-    }
-
-    @Override
-    public TunnelId getTunnelId(TeTunnelKey teTunnelKey) {
-        return tunnelIds.get(teTunnelKey);
-    }
-
-    @Override
-    public void updateTeTunnel(TeTunnel teTunnel) {
-        if (teTunnel == null) {
-            log.warn("TeTunnel is null");
-            return;
-        }
-        teTunnels.put(teTunnel.teTunnelKey(), teTunnel);
-    }
-
-    @Override
-    public void removeTeTunnel(TeTunnelKey teTunnelKey) {
-        teTunnels.remove(teTunnelKey);
-        tunnelIds.remove(teTunnelKey);
-    }
-
-    @Override
-    public TeTunnel getTeTunnel(TeTunnelKey teTunnelKey) {
-        return teTunnels.get(teTunnelKey);
-    }
-
-    @Override
-    public TeTunnel getTeTunnel(TunnelId tunnelId) {
-        if (tunnelIds.containsValue(tunnelId)) {
-            for (TeTunnel teTunnel : teTunnels.values()) {
-                if (tunnelIds.get(teTunnel.teTunnelKey()).equals(tunnelId)) {
-                    return teTunnel;
-                }
-            }
-        }
-        return null;
-    }
-
-    @Override
-    public Collection<TeTunnel> getTeTunnels() {
-        return ImmutableList.copyOf(teTunnels.values());
-    }
-
-    @Override
-    public Collection<TeTunnel> getTeTunnels(TeTunnel.Type type) {
-        return ImmutableList.copyOf(teTunnels.values()
-                .stream()
-                .filter(teTunnel -> teTunnel.type().equals(type))
-                .collect(Collectors.toList()));
-    }
-
-    @Override
-    public Collection<TeTunnel> getTeTunnels(TeTopologyKey teTopologyKey) {
-        return ImmutableList.copyOf(teTunnels.values()
-                .stream()
-                .filter(teTunnel -> teTunnel.teTunnelKey()
-                        .teTopologyKey()
-                        .equals(teTopologyKey))
-                .collect(Collectors.toList()));
-    }
-
-    @Override
-    public boolean addTeLsp(TeLsp lsp) {
-        if (lsp == null) {
-            log.warn("TeLsp is null");
-            return false;
-        }
-        if (lsps.containsKey(lsp.teLspKey())) {
-            log.error("TeLsp exist {}", lsp.teLspKey());
-            return false;
-        }
-        lsps.put(lsp.teLspKey(), lsp);
-        return true;
-    }
-
-    @Override
-    public void updateTeLsp(TeLsp lsp) {
-        if (lsp == null) {
-            log.warn("TeLsp is null");
-            return;
-        }
-        lsps.put(lsp.teLspKey(), lsp);
-    }
-
-    @Override
-    public void removeTeLsp(TeLspKey key) {
-        lsps.remove(key);
-    }
-
-    @Override
-    public TeLsp getTeLsp(TeLspKey key) {
-        return lsps.get(key);
-    }
-
-    @Override
-    public Collection<TeLsp> getTeLsps() {
-        return ImmutableList.copyOf(lsps.values());
-    }
-}
diff --git a/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/TeTunnelManager.java b/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/TeTunnelManager.java
deleted file mode 100644
index cd99d0c..0000000
--- a/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/TeTunnelManager.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.tetunnel.impl;
-
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.core.GroupId;
-import org.onosproject.incubator.net.tunnel.DefaultTunnel;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelAdminService;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelName;
-import org.onosproject.incubator.net.tunnel.TunnelService;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.tetopology.management.api.TeTopology;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.TeTopologyService;
-import org.onosproject.tetunnel.api.TeTunnelAdminService;
-import org.onosproject.tetunnel.api.TeTunnelProviderService;
-import org.onosproject.tetunnel.api.TeTunnelService;
-import org.onosproject.tetunnel.api.TeTunnelStore;
-import org.onosproject.tetunnel.api.lsp.TeLsp;
-import org.onosproject.tetunnel.api.lsp.TeLspKey;
-import org.onosproject.tetunnel.api.tunnel.TeTunnel;
-import org.onosproject.tetunnel.api.tunnel.TeTunnelEndpoint;
-import org.onosproject.tetunnel.api.tunnel.TeTunnelKey;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.Collection;
-import java.util.List;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Implementation of TE tunnel attributes management service.
- */
-@Component(immediate = true, service = { TeTunnelService.class, TeTunnelAdminService.class,
-        TeTunnelProviderService.class })
-public class TeTunnelManager implements TeTunnelService, TeTunnelAdminService,
-        TeTunnelProviderService {
-
-    private static final String TE_TUNNEL_APP = "onos-app-tetunnel";
-
-    private final Logger log = getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TeTunnelStore store;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TunnelService tunnelService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TunnelAdminService tunnelAdminService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TeTopologyService teTopologyService;
-
-    private ApplicationId appId;
-
-    @Activate
-    public void activate() {
-        appId = coreService.registerApplication(TE_TUNNEL_APP);
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        log.info("Stopped");
-    }
-
-    @Override
-    public TunnelId createTeTunnel(TeTunnel teTunnel) {
-        if (!store.addTeTunnel(teTunnel)) {
-            log.error("can not add teTunnel: {}", teTunnel);
-            return null;
-        }
-
-        TunnelId tunnelId = TunnelId.valueOf(teTunnel.teTunnelKey().toString());
-        Tunnel tunnel = new DefaultTunnel(ProviderId.NONE,
-                                          new TeTunnelEndpoint(teTunnel.srcNode(),
-                                                               teTunnel.srcTp()),
-                                          new TeTunnelEndpoint(teTunnel.dstNode(),
-                                                               teTunnel.dstTp()),
-                                          Tunnel.Type.MPLS, new GroupId(0),
-                                          tunnelId,
-                                          TunnelName.tunnelName(teTunnel.name()),
-                                          null,
-                                          DefaultAnnotations.builder().build());
-        store.setTunnelId(teTunnel.teTunnelKey(), tunnelId);
-        TeTopology srcTopology = teTopologyService.teTopology(
-                teTopologyService.teNode(teTunnel.srcNode())
-                .underlayTeTopologyId());
-        if (srcTopology == null) {
-            srcTopology = teTopologyService.teTopology(teTunnel.srcNode()
-                                                               .teTopologyKey());
-        }
-        DeviceId domainId = srcTopology.ownerId();
-        TunnelId id = tunnelService.setupTunnel(appId, domainId, tunnel, null);
-        if (id == null) {
-            log.error("can not create tunnel for te {}",
-                      teTunnel.teTunnelKey());
-            store.removeTeTunnel(teTunnel.teTunnelKey());
-            return null;
-        }
-        if (!id.equals(tunnelId)) {
-            //this should not happen
-            log.error("tunnelId changed, oldId:{}, newId:{}", tunnelId, id);
-            store.setTunnelId(teTunnel.teTunnelKey(), id);
-        }
-        return id;
-    }
-
-    @Override
-    public void setTunnelId(TeTunnelKey teTunnelKey, TunnelId tunnelId) {
-        store.setTunnelId(teTunnelKey, tunnelId);
-    }
-
-    @Override
-    public void updateTeTunnel(TeTunnel teTunnel) {
-        //TODO: updateTeTunnel
-    }
-
-    @Override
-    public void updateTunnelState(TeTunnelKey key, Tunnel.State state) {
-        tunnelAdminService.updateTunnelState(
-                tunnelService.queryTunnel(getTunnelId(key)), state);
-    }
-
-    @Override
-    public TeLspKey teLspAdded(TeLsp lsp) {
-        if (store.addTeLsp(lsp)) {
-            return lsp.teLspKey();
-        }
-
-        return null;
-    }
-
-    @Override
-    public void teLspRemoved(TeLsp lsp) {
-        store.removeTeLsp(lsp.teLspKey());
-    }
-
-    @Override
-    public void updateTeLsp(TeLsp lsp) {
-        store.updateTeLsp(lsp);
-    }
-
-    @Override
-    public void removeTeTunnel(TeTunnelKey teTunnelKey) {
-        tunnelAdminService.updateTunnelState(
-                tunnelService.queryTunnel(getTunnelId(teTunnelKey)),
-                Tunnel.State.REMOVING);
-        List<TeTunnelKey> segmentTunnels =
-                getTeTunnel(teTunnelKey).segmentTunnels();
-        if (segmentTunnels == null || segmentTunnels.isEmpty()) {
-            // this is a single domain tunnel, removes it right away
-            tunnelAdminService.removeTunnel(getTunnelId(teTunnelKey));
-        }
-    }
-
-    @Override
-    public void setSegmentTunnel(TeTunnelKey e2eTunnelKey,
-                                 List<TeTunnelKey> segmentTunnels) {
-        TeTunnel e2eTunnel = store.getTeTunnel(e2eTunnelKey);
-        if (e2eTunnel == null) {
-            log.error("unknown e2eTunnelKey: {}", e2eTunnelKey);
-            return;
-        }
-        e2eTunnel.segmentTunnels(segmentTunnels);
-
-        for (TeTunnelKey key : segmentTunnels) {
-            TeTunnel segmentTunnel = store.getTeTunnel(key);
-            if (segmentTunnel == null) {
-                log.warn("unknown segmentTunnel: {}", key);
-                continue;
-            }
-            segmentTunnel.e2eTunnelKey(e2eTunnelKey);
-        }
-    }
-
-    @Override
-    public TeTunnel getTeTunnel(TeTunnelKey key) {
-        return store.getTeTunnel(key);
-    }
-
-    @Override
-    public TeTunnel getTeTunnel(TunnelId id) {
-        return store.getTeTunnel(id);
-    }
-
-    @Override
-    public TunnelId getTunnelId(TeTunnelKey key) {
-        return store.getTunnelId(key);
-    }
-
-    @Override
-    public Collection<TeTunnel> getTeTunnels() {
-        return store.getTeTunnels();
-    }
-
-    @Override
-    public Collection<TeTunnel> getTeTunnels(TeTunnel.Type type) {
-        return store.getTeTunnels(type);
-    }
-
-    @Override
-    public Collection<TeTunnel> getTeTunnels(TeTopologyKey key) {
-        return store.getTeTunnels(key);
-    }
-
-    @Override
-    public TeLsp getTeLsp(TeLspKey key) {
-        return store.getTeLsp(key);
-    }
-
-    @Override
-    public Collection<TeLsp> getTeLsps() {
-        return store.getTeLsps();
-    }
-
-    @Override
-    public TunnelId teTunnelAdded(TeTunnel teTunnel) {
-        //TODO teTunnelAdded
-        return null;
-    }
-
-    @Override
-    public void teTunnelRemoved(TeTunnel teTunnel) {
-        TeTunnelKey e2eTunnelKey = teTunnel.e2eTunnelKey();
-        store.removeTeTunnel(teTunnel.teTunnelKey());
-
-        // it's a segment tunnel
-        if (e2eTunnelKey != null) {
-            boolean finished = true;
-            for (TeTunnelKey key : getTeTunnel(e2eTunnelKey).segmentTunnels()) {
-                if (getTeTunnel(key) != null) {
-                    // FIXME need a better way to determine whether a segment tunnel is removed.
-                    finished = false;
-                }
-            }
-            if (finished) {
-                // all segment tunnels are removed
-                tunnelAdminService.removeTunnel(getTunnelId(e2eTunnelKey));
-                store.removeTeTunnel(e2eTunnelKey);
-            }
-        }
-    }
-}
diff --git a/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/package-info.java b/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/package-info.java
deleted file mode 100644
index f07ffe9..0000000
--- a/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * IETF TE Tunnel attributes management implementation.
- */
-package org.onosproject.tetunnel.impl;
\ No newline at end of file
diff --git a/apps/vtn/BUILD b/apps/vtn/BUILD
deleted file mode 100644
index 8331afd..0000000
--- a/apps/vtn/BUILD
+++ /dev/null
@@ -1,14 +0,0 @@
-BUNDLES = [
-    "//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc",
-    "//apps/vtn/sfcmgr:onos-apps-vtn-sfcmgr",
-    "//apps/vtn/vtnmgr:onos-apps-vtn-vtnmgr",
-    "//apps/vtn/vtnweb:onos-apps-vtn-vtnweb",
-]
-
-onos_app(
-    category = "Integration",
-    description = "ONOS framework applications",
-    included_bundles = BUNDLES,
-    title = "OPNFV",
-    url = "http://onosproject.org",
-)
diff --git a/apps/vtn/sfcmgr/BUILD b/apps/vtn/sfcmgr/BUILD
deleted file mode 100644
index e45ac6e..0000000
--- a/apps/vtn/sfcmgr/BUILD
+++ /dev/null
@@ -1,9 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + KRYO + [
-    "//core/store/serializers:onos-core-serializers",
-    "//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc",
-]
-
-osgi_jar_with_tests(
-    test_deps = TEST_ADAPTERS,
-    deps = COMPILE_DEPS,
-)
diff --git a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/SfcFlowRuleInstallerService.java b/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/SfcFlowRuleInstallerService.java
deleted file mode 100644
index fa17aad..0000000
--- a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/SfcFlowRuleInstallerService.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfc.installer;
-
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.NshServicePathId;
-import org.onosproject.vtnrsc.FiveTuple;
-import org.onosproject.vtnrsc.PortChain;
-
-/**
- * Abstraction of an entity which installs flow classification rules in ovs.
- */
-public interface SfcFlowRuleInstallerService {
-
-    /**
-     * Install flow classifier.
-     *
-     * @param portChain port-chain
-     * @param nshSpiId service path index identifier
-     * @return connectPoint the network identifier
-     */
-    ConnectPoint installFlowClassifier(PortChain portChain, NshServicePathId nshSpiId);
-
-    /**
-     * Uninstall flow classifier.
-     *
-     * @param portChain port-chain
-     * @param nshSpiId service path index identifier
-     * @return connectPoint the network identifier
-     */
-    ConnectPoint unInstallFlowClassifier(PortChain portChain, NshServicePathId nshSpiId);
-
-    /**
-     * Install load balanced flow rules.
-     *
-     * @param portChain port-chain
-     * @param fiveTuple five tuple packet information
-     * @param nshSpiId service path index identifier
-     * @return connectPoint the network identifier
-     */
-    ConnectPoint installLoadBalancedFlowRules(PortChain portChain, FiveTuple fiveTuple,
-            NshServicePathId nshSpiId);
-
-    /**
-     * Uninstall load balanced flow rules.
-     *
-     * @param portChain port-chain
-     * @param fiveTuple five tuple packet information
-     * @param nshSpiId service path index identifier
-     * @return connectPoint the network identifier
-     */
-    ConnectPoint unInstallLoadBalancedFlowRules(PortChain portChain, FiveTuple fiveTuple,
-            NshServicePathId nshSpiId);
-
-    /**
-     * Uninstall load balanced classifier rules.
-     *
-     * @param portChain port-chain
-     * @param fiveTuple five tuple packet information
-     * @param nshSpiId service path index identifier
-     * @return connectPoint the network identifier
-     */
-    ConnectPoint unInstallLoadBalancedClassifierRules(PortChain portChain, FiveTuple fiveTuple,
-            NshServicePathId nshSpiId);
-}
diff --git a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/impl/SfcFlowRuleInstallerImpl.java b/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/impl/SfcFlowRuleInstallerImpl.java
deleted file mode 100644
index 3c76e89..0000000
--- a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/impl/SfcFlowRuleInstallerImpl.java
+++ /dev/null
@@ -1,908 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfc.installer.impl;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.net.flow.criteria.ExtensionSelectorType.ExtensionSelectorTypes.NICIRA_MATCH_ENCAP_ETH_TYPE;
-import static org.onosproject.net.flow.criteria.ExtensionSelectorType.ExtensionSelectorTypes.NICIRA_MATCH_NSH_SI;
-import static org.onosproject.net.flow.criteria.ExtensionSelectorType.ExtensionSelectorTypes.NICIRA_MATCH_NSH_SPI;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_ENCAP_ETH_DST;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_ENCAP_ETH_SRC;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_NSH_MDTYPE;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_NSH_NP;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_POP_NSH;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_PUSH_NSH;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_RESUBMIT_TABLE;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_NSH_CH1;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_NSH_CH2;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_NSH_CH3;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_NSH_CH4;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_NSH_SI;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_NSH_SPI;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_TUNNEL_DST;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_TUN_GPE_NP;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Set;
-
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.packet.Ethernet;
-import org.onlab.packet.IPv4;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onlab.packet.TpPort;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Host;
-import org.onosproject.net.HostId;
-import org.onosproject.net.NshContextHeader;
-import org.onosproject.net.NshServiceIndex;
-import org.onosproject.net.NshServicePathId;
-import org.onosproject.net.Port;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.behaviour.BridgeConfig;
-import org.onosproject.net.behaviour.ExtensionSelectorResolver;
-import org.onosproject.net.behaviour.ExtensionTreatmentResolver;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.driver.DriverHandler;
-import org.onosproject.net.driver.DriverService;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flow.criteria.Criteria;
-import org.onosproject.net.flow.criteria.ExtensionSelector;
-import org.onosproject.net.flow.instructions.ExtensionTreatment;
-import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
-import org.onosproject.net.flow.instructions.Instructions;
-import org.onosproject.net.flowobjective.DefaultForwardingObjective;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
-import org.onosproject.net.flowobjective.ForwardingObjective;
-import org.onosproject.net.flowobjective.ForwardingObjective.Flag;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.net.host.HostService;
-import org.onosproject.sfc.installer.SfcFlowRuleInstallerService;
-import org.onosproject.vtnrsc.FiveTuple;
-import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService;
-import org.onosproject.vtnrsc.portpair.PortPairService;
-import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService;
-import org.onosproject.vtnrsc.service.VtnRscService;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-import org.slf4j.Logger;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-
-/**
- * Provides flow classifier installer implementation.
- */
-public class SfcFlowRuleInstallerImpl implements SfcFlowRuleInstallerService {
-    private final Logger log = getLogger(getClass());
-
-    protected VirtualPortService virtualPortService;
-    protected VtnRscService vtnRscService;
-    protected PortPairService portPairService;
-    protected PortPairGroupService portPairGroupService;
-    protected FlowClassifierService flowClassifierService;
-    protected DriverService driverService;
-    protected DeviceService deviceService;
-    protected HostService hostService;
-    protected TenantNetworkService tenantNetworkService;
-    protected FlowObjectiveService flowObjectiveService;
-    protected ApplicationId appId;
-
-    private static final String PORT_CHAIN_NOT_NULL = "Port-Chain cannot be null";
-    private static final int FLOW_CLASSIFIER_PRIORITY = 0xC738;
-    private static final int DEFAULT_FORWARDER_PRIORITY = 0xD6D8;
-    private static final int ENCAP_OUTPUT_PRIORITY = 0x64;
-    private static final int TUNNEL_SEND_PRIORITY = 0xC8;
-    private static final String SWITCH_CHANNEL_ID = "channelId";
-    private static final int ENCAP_OUTPUT_TABLE = 4;
-    private static final int TUNNEL_SEND_TABLE = 7;
-    private static final short ENCAP_ETH_TYPE = (short) 0x894f;
-    private static final String DEFAULT_IP = "0.0.0.0";
-    private static final String VXLANPORT_HEAD = "vxlan-0.0.0.0";
-
-    /* Port chain params */
-    private short nshSi;
-    List<DeviceId> classifierList;
-    List<DeviceId> forwarderList;
-
-    /**
-     * Default constructor.
-     */
-    public SfcFlowRuleInstallerImpl() {
-    }
-
-    /**
-     * Explicit constructor.
-     *
-     * @param appId application id.
-     */
-    public SfcFlowRuleInstallerImpl(ApplicationId appId) {
-        this.appId = checkNotNull(appId, "ApplicationId can not be null");
-        ServiceDirectory serviceDirectory = new DefaultServiceDirectory();
-        this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class);
-        this.driverService = serviceDirectory.get(DriverService.class);
-        this.deviceService = serviceDirectory.get(DeviceService.class);
-        this.hostService = serviceDirectory.get(HostService.class);
-        this.virtualPortService = serviceDirectory.get(VirtualPortService.class);
-        this.vtnRscService = serviceDirectory.get(VtnRscService.class);
-        this.portPairService = serviceDirectory.get(PortPairService.class);
-        this.portPairGroupService = serviceDirectory.get(PortPairGroupService.class);
-        this.flowClassifierService = serviceDirectory.get(FlowClassifierService.class);
-        this.tenantNetworkService = serviceDirectory.get(TenantNetworkService.class);
-        nshSi = 0xff;
-    }
-
-    @Override
-    public ConnectPoint installFlowClassifier(PortChain portChain, NshServicePathId nshSpiId) {
-        checkNotNull(portChain, PORT_CHAIN_NOT_NULL);
-        // Get the portPairGroup
-        List<PortPairGroupId> llPortPairGroupIdList = portChain.portPairGroups();
-        ListIterator<PortPairGroupId> portPairGroupIdListIterator = llPortPairGroupIdList.listIterator();
-        PortPairGroupId portPairGroupId = portPairGroupIdListIterator.next();
-        PortPairGroup portPairGroup = portPairGroupService.getPortPairGroup(portPairGroupId);
-        List<PortPairId> llPortPairIdList = portPairGroup.portPairs();
-
-        // Get port pair
-        ListIterator<PortPairId> portPairListIterator = llPortPairIdList.listIterator();
-        PortPairId portPairId = portPairListIterator.next();
-        PortPair portPair = portPairService.getPortPair(portPairId);
-
-        return installSfcClassifierRules(portChain, portPair, nshSpiId, null, Objective.Operation.ADD);
-    }
-
-    @Override
-    public ConnectPoint unInstallFlowClassifier(PortChain portChain, NshServicePathId nshSpiId) {
-        checkNotNull(portChain, PORT_CHAIN_NOT_NULL);
-        // Get the portPairGroup
-        List<PortPairGroupId> llPortPairGroupIdList = portChain.portPairGroups();
-        ListIterator<PortPairGroupId> portPairGroupIdListIterator = llPortPairGroupIdList.listIterator();
-        PortPairGroupId portPairGroupId = portPairGroupIdListIterator.next();
-        PortPairGroup portPairGroup = portPairGroupService.getPortPairGroup(portPairGroupId);
-        List<PortPairId> llPortPairIdList = portPairGroup.portPairs();
-
-        // Get port pair
-        ListIterator<PortPairId> portPairListIterator = llPortPairIdList.listIterator();
-        PortPairId portPairId = portPairListIterator.next();
-        PortPair portPair = portPairService.getPortPair(portPairId);
-
-        return installSfcClassifierRules(portChain, portPair, nshSpiId, null, Objective.Operation.REMOVE);
-    }
-
-    @Override
-    public ConnectPoint installLoadBalancedFlowRules(PortChain portChain, FiveTuple fiveTuple,
-            NshServicePathId nshSpiId) {
-        checkNotNull(portChain, PORT_CHAIN_NOT_NULL);
-
-        return installSfcFlowRules(portChain, fiveTuple, nshSpiId, Objective.Operation.ADD);
-    }
-
-    @Override
-    public ConnectPoint unInstallLoadBalancedFlowRules(PortChain portChain, FiveTuple fiveTuple,
-            NshServicePathId nshSpiId) {
-        checkNotNull(portChain, PORT_CHAIN_NOT_NULL);
-        return installSfcFlowRules(portChain, fiveTuple, nshSpiId, Objective.Operation.REMOVE);
-    }
-
-    @Override
-    public ConnectPoint unInstallLoadBalancedClassifierRules(PortChain portChain, FiveTuple fiveTuple,
-            NshServicePathId nshSpiId) {
-        checkNotNull(portChain, PORT_CHAIN_NOT_NULL);
-
-        List<PortPairId> portPairs = portChain.getLoadBalancePath(fiveTuple);
-        // Get the first port pair
-        ListIterator<PortPairId> portPairListIterator = portPairs.listIterator();
-        PortPairId portPairId = portPairListIterator.next();
-        PortPair portPair = portPairService.getPortPair(portPairId);
-
-        return installSfcClassifierRules(portChain, portPair, nshSpiId, fiveTuple, Objective.Operation.REMOVE);
-    }
-
-    public ConnectPoint installSfcFlowRules(PortChain portChain, FiveTuple fiveTuple, NshServicePathId nshSpiId,
-            Objective.Operation type) {
-        checkNotNull(portChain, PORT_CHAIN_NOT_NULL);
-
-        classifierList = Lists.newArrayList();
-        forwarderList = Lists.newArrayList();
-
-        // Get the load balanced path
-        List<PortPairId> portPairs = portChain.getLoadBalancePath(fiveTuple);
-
-        // Get the first port pair
-        ListIterator<PortPairId> portPairListIterator = portPairs.listIterator();
-        PortPairId portPairId = portPairListIterator.next();
-        PortPair currentPortPair = portPairService.getPortPair(portPairId);
-
-        ConnectPoint connectPoint = installSfcClassifierRules(portChain, currentPortPair, nshSpiId, fiveTuple, type);
-
-        log.info("Installing encap and output for first port pair");
-
-        installSfcEncapOutputRule(currentPortPair, nshSpiId, type);
-
-        PortPair nextPortPair;
-        while (portPairListIterator.hasNext()) {
-            portPairId = portPairListIterator.next();
-            nextPortPair = portPairService.getPortPair(portPairId);
-            installSfcForwardRule(currentPortPair, nextPortPair, nshSpiId, type);
-            installSfcEncapOutputRule(nextPortPair, nshSpiId, type);
-            currentPortPair = nextPortPair;
-        }
-        installSfcEndRule(currentPortPair, nshSpiId, type);
-
-        if (type.equals(Objective.Operation.ADD)) {
-            portChain.addSfcClassifiers(portChain.getLoadBalanceId(fiveTuple), classifierList);
-            portChain.addSfcForwarders(portChain.getLoadBalanceId(fiveTuple), forwarderList);
-        } else {
-            portChain.removeSfcClassifiers(portChain.getLoadBalanceId(fiveTuple), classifierList);
-            portChain.removeSfcForwarders(portChain.getLoadBalanceId(fiveTuple), forwarderList);
-        }
-        return connectPoint;
-    }
-
-    public void installSfcTunnelReceiveRule(DeviceId deviceId, NshServicePathId nshSpiId, Objective.Operation type) {
-
-        DriverHandler handler = driverService.createHandler(deviceId);
-        ExtensionSelectorResolver selectorResolver = handler.behaviour(ExtensionSelectorResolver.class);
-        ExtensionSelector nshSpiSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_NSH_SPI.type());
-        ExtensionSelector nshSiSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_NSH_SI.type());
-
-        try {
-            nshSpiSelector.setPropertyValue("nshSpi", nshSpiId);
-        } catch (Exception e) {
-            log.error("Failed to set extension selector to match Nsh Spi Id for end rule {}", e.getMessage());
-        }
-        try {
-            nshSiSelector.setPropertyValue("nshSi", NshServiceIndex.of(nshSi));
-        } catch (Exception e) {
-            log.error("Failed to set extension selector to match Nsh Si Id for end rule {}", e.getMessage());
-        }
-
-        TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
-        selector.extension(nshSpiSelector, deviceId);
-        selector.extension(nshSiSelector, deviceId);
-
-        TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-        treatment.transition(ENCAP_OUTPUT_TABLE);
-
-        sendSfcRule(selector, treatment, deviceId, type, DEFAULT_FORWARDER_PRIORITY);
-    }
-
-    public void installSfcTunnelSendRule(DeviceId deviceId, NshServicePathId nshSpiId, Objective.Operation type) {
-
-        // Prepare selector with nsp, nsi and inport from egress of port pair
-        DriverHandler handler = driverService.createHandler(deviceId);
-        ExtensionSelectorResolver selectorResolver = handler.behaviour(ExtensionSelectorResolver.class);
-        ExtensionSelector nshSpiSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_NSH_SPI.type());
-        ExtensionSelector nshSiSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_NSH_SI.type());
-        ExtensionSelector encapEthTypeSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_ENCAP_ETH_TYPE
-                                                                                       .type());
-        try {
-            nshSpiSelector.setPropertyValue("nshSpi", nshSpiId);
-        } catch (Exception e) {
-            log.error("Failed to set extension selector to match Nsh Spi Id for end rule {}", e.getMessage());
-        }
-        try {
-            nshSiSelector.setPropertyValue("nshSi", NshServiceIndex.of(nshSi));
-        } catch (Exception e) {
-            log.error("Failed to set extension selector to match Nsh Si Id for end rule {}", e.getMessage());
-        }
-        try {
-            encapEthTypeSelector.setPropertyValue("encapEthType", ENCAP_ETH_TYPE);
-        } catch (Exception e) {
-            log.error("Failed to set extension selector to match encapEthType {}", deviceId);
-        }
-
-        TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
-        selector.extension(nshSpiSelector, deviceId);
-        selector.extension(nshSiSelector, deviceId);
-
-        ExtensionTreatmentResolver treatmentResolver = handler.behaviour(ExtensionTreatmentResolver.class);
-        ExtensionTreatment tunGpeNpTreatment = treatmentResolver.getExtensionInstruction(NICIRA_TUN_GPE_NP.type());
-        try {
-            tunGpeNpTreatment.setPropertyValue("tunGpeNp", ((byte) 4));
-        } catch (Exception e) {
-            log.error("Failed to get extension instruction to set tunGpeNp {}", deviceId);
-        }
-
-        ExtensionTreatment moveC1ToC1 = treatmentResolver
-                .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes
-                                         .NICIRA_MOV_NSH_C1_TO_C1.type());
-
-        ExtensionTreatment moveC2ToC2 = treatmentResolver
-                .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes
-                                         .NICIRA_MOV_NSH_C2_TO_C2.type());
-
-        ExtensionTreatment moveC3ToC3 = treatmentResolver
-                .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes
-                                         .NICIRA_MOV_NSH_C3_TO_C3.type());
-
-        ExtensionTreatment moveC4ToC4 = treatmentResolver
-                .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes
-                                         .NICIRA_MOV_NSH_C4_TO_C4.type());
-
-        ExtensionTreatment moveTunIpv4DstToTunIpv4Dst = treatmentResolver
-                .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes
-                                         .NICIRA_MOV_TUN_IPV4_DST_TO_TUN_IPV4_DST.type());
-
-        ExtensionTreatment moveTunIdToTunId = treatmentResolver
-                .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes
-                                         .NICIRA_MOV_TUN_ID_TO_TUN_ID.type());
-
-        TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-        treatment.extension(tunGpeNpTreatment, deviceId);
-        treatment.extension(moveC1ToC1, deviceId);
-        treatment.extension(moveC2ToC2, deviceId);
-        treatment.extension(moveC3ToC3, deviceId);
-        treatment.extension(moveC4ToC4, deviceId);
-        treatment.extension(moveTunIpv4DstToTunIpv4Dst, deviceId);
-        treatment.extension(moveTunIdToTunId, deviceId);
-
-        Iterable<Device> devices = deviceService.getAvailableDevices();
-        DeviceId localControllerId = getControllerId(deviceService.getDevice(deviceId), devices);
-        DriverHandler controllerHandler = driverService.createHandler(localControllerId);
-
-        BridgeConfig bridgeConfig = controllerHandler.behaviour(BridgeConfig.class);
-        Set<PortNumber> ports = bridgeConfig.getPortNumbers();
-        String tunnelName = "vxlan-" + DEFAULT_IP;
-        ports.stream()
-        .filter(p -> p.name().equalsIgnoreCase(tunnelName))
-        .forEach(p -> {
-            treatment.setOutput(p);
-            sendSfcRule(selector, treatment, deviceId, type, TUNNEL_SEND_PRIORITY);
-        });
-    }
-
-    public void installSfcEndRule(PortPair portPair, NshServicePathId nshSpiId, Objective.Operation type) {
-        DeviceId deviceId = vtnRscService.getSfToSffMaping(VirtualPortId.portId(portPair.egress()));
-        MacAddress srcMacAddress = virtualPortService.getPort(VirtualPortId.portId(portPair.egress())).macAddress();
-        Host host = hostService.getHost(HostId.hostId(srcMacAddress));
-        PortNumber port = host.location().port();
-
-        // Prepare selector with nsp, nsi and inport from egress of port pair
-        DriverHandler handler = driverService.createHandler(deviceId);
-        ExtensionSelectorResolver selectorResolver = handler.behaviour(ExtensionSelectorResolver.class);
-        ExtensionSelector nshSpiSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_NSH_SPI.type());
-        ExtensionSelector nshSiSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_NSH_SI.type());
-        ExtensionSelector encapEthTypeSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_ENCAP_ETH_TYPE
-                .type());
-        try {
-            nshSpiSelector.setPropertyValue("nshSpi", nshSpiId);
-        } catch (Exception e) {
-            log.error("Failed to set extension selector to match Nsh Spi Id for end rule {}", e.getMessage());
-        }
-        // Decrement the SI
-        nshSi = (short) (nshSi - 1);
-        try {
-            nshSiSelector.setPropertyValue("nshSi", NshServiceIndex.of(nshSi));
-        } catch (Exception e) {
-            log.error("Failed to set extension selector to match Nsh Si Id for end rule {}", e.getMessage());
-        }
-        try {
-            encapEthTypeSelector.setPropertyValue("encapEthType", ENCAP_ETH_TYPE);
-        } catch (Exception e) {
-            log.error("Failed to set extension selector to match encapEthType {}", deviceId);
-        }
-        TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
-        selector.extension(encapEthTypeSelector, deviceId);
-        selector.extension(nshSpiSelector, deviceId);
-        selector.extension(nshSiSelector, deviceId);
-        selector.matchInPort(port);
-
-        // Set treatment to pop nsh header, set tunnel id and resubmit to table
-        // 0.
-        ExtensionTreatmentResolver treatmentResolver = handler.behaviour(ExtensionTreatmentResolver.class);
-        ExtensionTreatment popNshTreatment = treatmentResolver.getExtensionInstruction(NICIRA_POP_NSH.type());
-
-        TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-        treatment.extension(popNshTreatment, deviceId);
-
-        VirtualPort virtualPort = virtualPortService.getPort(VirtualPortId.portId(portPair.ingress()));
-        SegmentationId segmentationId = tenantNetworkService.getNetwork(virtualPort.networkId()).segmentationId();
-        treatment.add(Instructions.modTunnelId(Long.parseLong(segmentationId.toString())));
-
-        ExtensionTreatment resubmitTableTreatment = treatmentResolver.getExtensionInstruction(NICIRA_RESUBMIT_TABLE
-                .type());
-
-        PortNumber vxlanPortNumber = getVxlanPortNumber(deviceId);
-
-        try {
-            resubmitTableTreatment.setPropertyValue("inPort", vxlanPortNumber);
-        } catch (Exception e) {
-            log.error("Failed to set extension treatment for resubmit table in port {}", deviceId);
-        }
-        try {
-            resubmitTableTreatment.setPropertyValue("table", ((short) 0));
-        } catch (Exception e) {
-            log.error("Failed to set extension treatment for resubmit table {}", deviceId);
-        }
-        treatment.extension(resubmitTableTreatment, deviceId);
-
-        sendSfcRule(selector, treatment, deviceId, type, DEFAULT_FORWARDER_PRIORITY);
-    }
-
-    public void installSfcForwardRule(PortPair portPair, PortPair nextPortPair, NshServicePathId nshSpiId,
-            Objective.Operation type) {
-        DeviceId deviceId = vtnRscService.getSfToSffMaping(VirtualPortId.portId(portPair.egress()));
-        MacAddress srcMacAddress = virtualPortService.getPort(VirtualPortId.portId(portPair.egress())).macAddress();
-        Host host = hostService.getHost(HostId.hostId(srcMacAddress));
-        PortNumber port = host.location().port();
-
-        DriverHandler handler = driverService.createHandler(deviceId);
-        ExtensionSelectorResolver resolver = handler.behaviour(ExtensionSelectorResolver.class);
-
-        // Prepare selector with nsp, nsi and inport from egress of port pair
-        ExtensionSelector nshSpiSelector = resolver.getExtensionSelector(NICIRA_MATCH_NSH_SPI.type());
-        ExtensionSelector nshSiSelector = resolver.getExtensionSelector(NICIRA_MATCH_NSH_SI.type());
-        try {
-            nshSpiSelector.setPropertyValue("nshSpi", nshSpiId);
-        } catch (Exception e) {
-            log.error("Failed to set extension selector to match Nsh Spi Id for forward rule {}", e.getMessage());
-        }
-        // Decrement the SI
-        nshSi = (short) (nshSi - 1);
-        try {
-            nshSiSelector.setPropertyValue("nshSi", NshServiceIndex.of(nshSi));
-        } catch (Exception e) {
-            log.error("Failed to set extension selector to match Nsh Si Id for forward rule {}", e.getMessage());
-        }
-        TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
-        selector.extension(nshSpiSelector, deviceId);
-        selector.extension(nshSiSelector, deviceId);
-        selector.matchInPort(port);
-
-        DeviceId nextDeviceId = vtnRscService.getSfToSffMaping(VirtualPortId.portId(nextPortPair.ingress()));
-        if (deviceId.equals(nextDeviceId)) {
-
-            // Treatment with transition
-            TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-            treatment.transition(ENCAP_OUTPUT_TABLE);
-
-            sendSfcRule(selector, treatment, deviceId, type, DEFAULT_FORWARDER_PRIORITY);
-        } else {
-            // Treatment with with transition to send on tunnel
-            ExtensionTreatmentResolver treatmentResolver = handler.behaviour(ExtensionTreatmentResolver.class);
-            ExtensionTreatment moveC2ToTunId = treatmentResolver
-                    .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes
-                                             .NICIRA_MOV_NSH_C2_TO_TUN_ID.type());
-
-            Device remoteDevice = deviceService.getDevice(nextDeviceId);
-            String url = remoteDevice.annotations().value(SWITCH_CHANNEL_ID);
-            String remoteControllerIp = url.substring(0, url.lastIndexOf(":"));
-            if (remoteControllerIp == null) {
-                log.error("Can't find remote controller of device: {}", nextDeviceId.toString());
-                return;
-            }
-
-            ExtensionTreatment tunnelDsttreatment = treatmentResolver.getExtensionInstruction(NICIRA_SET_TUNNEL_DST
-                                                                                              .type());
-            try {
-                tunnelDsttreatment.setPropertyValue("tunnelDst", Ip4Address.valueOf(remoteControllerIp));
-            } catch (Exception e) {
-                log.error("Failed to get extension instruction to set tunnel dst {}", deviceId);
-            }
-
-            TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-            treatment.extension(moveC2ToTunId, deviceId);
-            treatment.extension(tunnelDsttreatment, deviceId);
-            treatment.transition(TUNNEL_SEND_TABLE);
-
-            sendSfcRule(selector, treatment, deviceId, type, DEFAULT_FORWARDER_PRIORITY);
-
-            installSfcTunnelSendRule(deviceId, nshSpiId, type);
-            installSfcTunnelReceiveRule(nextDeviceId, nshSpiId, type);
-        }
-    }
-
-    public void installSfcEncapOutputRule(PortPair portPair, NshServicePathId nshSpiId, Objective.Operation type) {
-
-        DeviceId deviceId = vtnRscService.getSfToSffMaping(VirtualPortId.portId(portPair.ingress()));
-        MacAddress srcMacAddress = virtualPortService.getPort(VirtualPortId.portId(portPair.ingress())).macAddress();
-        Host host = hostService.getHost(HostId.hostId(srcMacAddress));
-        PortNumber port = host.location().port();
-
-        DriverHandler handler = driverService.createHandler(deviceId);
-        ExtensionSelectorResolver resolver = handler.behaviour(ExtensionSelectorResolver.class);
-
-        // Prepare selector with nsp, nsi and encap eth type
-        ExtensionSelector nshSpiSelector = resolver.getExtensionSelector(NICIRA_MATCH_NSH_SPI.type());
-        ExtensionSelector nshSiSelector = resolver.getExtensionSelector(NICIRA_MATCH_NSH_SI.type());
-        ExtensionSelector nshEncapEthTypeSelector = resolver.getExtensionSelector(NICIRA_MATCH_ENCAP_ETH_TYPE.type());
-
-        try {
-            nshSpiSelector.setPropertyValue("nshSpi", nshSpiId);
-        } catch (Exception e) {
-            log.error("Failed to set extension selector to match Nsh Spi Id for encap rule {}", e.getMessage());
-        }
-        try {
-            nshSiSelector.setPropertyValue("nshSi", NshServiceIndex.of(nshSi));
-        } catch (Exception e) {
-            log.error("Failed to set extension selector to match Nsh Si Id for encap rule {}", e.getMessage());
-        }
-        try {
-            nshEncapEthTypeSelector.setPropertyValue("encapEthType", ENCAP_ETH_TYPE);
-        } catch (Exception e) {
-            log.error("Failed to set extension selector to match Nsh Si Id {}", deviceId);
-        }
-        TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
-        selector.extension(nshSpiSelector, deviceId);
-        selector.extension(nshSiSelector, deviceId);
-
-        ExtensionTreatmentResolver treatmentResolver = handler.behaviour(ExtensionTreatmentResolver.class);
-        ExtensionTreatment encapEthSrcTreatment = treatmentResolver
-                .getExtensionInstruction(NICIRA_ENCAP_ETH_SRC.type());
-        ExtensionTreatment encapEthDstTreatment = treatmentResolver
-                .getExtensionInstruction(NICIRA_ENCAP_ETH_DST.type());
-
-        try {
-            encapEthDstTreatment.setPropertyValue("encapEthDst", srcMacAddress);
-        } catch (Exception e) {
-            log.error("Failed to set extension treatment to set encap eth dst {}", deviceId);
-        }
-        // TODO: move from packet source mac address
-        try {
-            encapEthSrcTreatment.setPropertyValue("encapEthSrc", srcMacAddress);
-        } catch (Exception e) {
-            log.error("Failed to set extension treatment to set encap eth src {}", deviceId);
-        }
-
-        TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-        treatment.extension(encapEthSrcTreatment, deviceId);
-        treatment.extension(encapEthDstTreatment, deviceId);
-        treatment.setOutput(port);
-
-        sendSfcRule(selector, treatment, deviceId, type, ENCAP_OUTPUT_PRIORITY);
-        forwarderList.add(deviceId);
-    }
-
-    public ConnectPoint installSfcClassifierRules(PortChain portChain, PortPair portPair, NshServicePathId nshSpiId,
-            FiveTuple fiveTuple, Objective.Operation type) {
-
-        DeviceId deviceIdfromPortPair = vtnRscService.getSfToSffMaping(VirtualPortId.portId(portPair.ingress()));
-        MacAddress srcMacAddress = virtualPortService.getPort(VirtualPortId.portId(portPair.ingress())).macAddress();
-        VirtualPort virtualPort = virtualPortService.getPort(VirtualPortId.portId(portPair.ingress()));
-        Host host = hostService.getHost(HostId.hostId(srcMacAddress));
-        PortNumber port = host.location().port();
-
-        DeviceId deviceId = deviceIdfromPortPair;
-
-        // get flow classifiers
-        List<FlowClassifierId> llFlowClassifierList = portChain.flowClassifiers();
-        ListIterator<FlowClassifierId> flowClassifierListIterator = llFlowClassifierList.listIterator();
-
-        while (flowClassifierListIterator.hasNext()) {
-            FlowClassifierId flowclassifierId = flowClassifierListIterator.next();
-            FlowClassifier flowClassifier = flowClassifierService.getFlowClassifier(flowclassifierId);
-
-            if ((flowClassifier.srcPort() != null) && (!flowClassifier.srcPort().portId().isEmpty())) {
-                deviceId = vtnRscService.getSfToSffMaping(flowClassifier.srcPort());
-            }
-
-            // Build Traffic selector.
-            TrafficSelector.Builder selector = packClassifierSelector(flowClassifier, fiveTuple);
-
-            if (fiveTuple == null) {
-                // Send the packet to controller
-                log.info("Downloading rule to send packet to controller");
-                TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-                treatment.setOutput(PortNumber.CONTROLLER);
-                sendSfcRule(selector, treatment, deviceId, type, FLOW_CLASSIFIER_PRIORITY);
-                continue;
-            }
-
-            if (deviceId != null && !deviceId.equals(deviceIdfromPortPair)) {
-                // First SF is in another device. Set tunnel ipv4 destination to
-                // treatment
-                Device remoteDevice = deviceService.getDevice(deviceIdfromPortPair);
-                String url = remoteDevice.annotations().value(SWITCH_CHANNEL_ID);
-                String remoteControllerIp = url.substring(0, url.lastIndexOf(":"));
-                if (remoteControllerIp == null) {
-                    log.error("Can't find remote controller of device: {}", deviceIdfromPortPair.toString());
-                    return null;
-                }
-
-                DriverHandler handler = driverService.createHandler(deviceId);
-                ExtensionTreatmentResolver resolver = handler.behaviour(ExtensionTreatmentResolver.class);
-                ExtensionTreatment tunnelDsttreatment = resolver.getExtensionInstruction(NICIRA_SET_TUNNEL_DST.type());
-                try {
-                    tunnelDsttreatment.setPropertyValue("tunnelDst", Ip4Address.valueOf(remoteControllerIp));
-                } catch (Exception e) {
-                    log.error("Failed to get extension instruction to set tunnel dst {}", deviceId);
-                }
-
-                TrafficTreatment.Builder treatment = packClassifierTreatment(deviceId, virtualPort, port,
-                                                                             nshSpiId, flowClassifier);
-                treatment.extension(tunnelDsttreatment, deviceId);
-                treatment.transition(TUNNEL_SEND_TABLE);
-                sendSfcRule(selector, treatment, deviceId, type, flowClassifier.priority());
-
-                selector.matchInPort(PortNumber.CONTROLLER);
-                sendSfcRule(selector, treatment, deviceId, type, flowClassifier.priority());
-                classifierList.add(deviceId);
-
-                installSfcTunnelSendRule(deviceId, nshSpiId, type);
-                installSfcTunnelReceiveRule(deviceIdfromPortPair, nshSpiId, type);
-
-            } else {
-                // classifier and port pair are in the same OVS. So directly
-                // send packet to first port pair
-                TrafficTreatment.Builder treatment = packClassifierTreatment(deviceIdfromPortPair, virtualPort, port,
-                                                                             nshSpiId, flowClassifier);
-                treatment.transition(ENCAP_OUTPUT_TABLE);
-                sendSfcRule(selector, treatment, deviceIdfromPortPair, type, flowClassifier.priority());
-
-                selector.matchInPort(PortNumber.CONTROLLER);
-                sendSfcRule(selector, treatment, deviceId, type, flowClassifier.priority());
-                classifierList.add(deviceIdfromPortPair);
-            }
-        }
-
-        return host.location();
-    }
-
-    /**
-     * Pack Traffic selector.
-     *
-     * @param flowClassifier flow-classifier
-     * @param fiveTuple five tuple info for the packet
-     * @return traffic selector
-     */
-    public TrafficSelector.Builder packClassifierSelector(FlowClassifier flowClassifier, FiveTuple fiveTuple) {
-
-        TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
-
-        if ((flowClassifier.srcIpPrefix() != null) && (flowClassifier.srcIpPrefix().prefixLength() != 0)) {
-            selector.matchIPSrc(flowClassifier.srcIpPrefix());
-        } else if (fiveTuple != null && fiveTuple.ipSrc() != null) {
-            selector.matchIPSrc(IpPrefix.valueOf(fiveTuple.ipSrc(), 24));
-        }
-
-        if ((flowClassifier.dstIpPrefix() != null) && (flowClassifier.dstIpPrefix().prefixLength() != 0)) {
-            selector.matchIPDst(flowClassifier.dstIpPrefix());
-        } else if (fiveTuple != null && fiveTuple.ipDst() != null) {
-            selector.matchIPDst(IpPrefix.valueOf(fiveTuple.ipDst(), 24));
-        }
-
-        if ((flowClassifier.protocol() != null) && (!flowClassifier.protocol().isEmpty())) {
-            if ("TCP".equalsIgnoreCase(flowClassifier.protocol())) {
-                selector.add(Criteria.matchIPProtocol(IPv4.PROTOCOL_TCP));
-            } else if ("UDP".equalsIgnoreCase(flowClassifier.protocol())) {
-                selector.add(Criteria.matchIPProtocol(IPv4.PROTOCOL_UDP));
-            } else if ("ICMP".equalsIgnoreCase(flowClassifier.protocol())) {
-                selector.add(Criteria.matchIPProtocol(IPv4.PROTOCOL_ICMP));
-            }
-        } else if (fiveTuple != null && fiveTuple.protocol() != 0) {
-            selector.add(Criteria.matchIPProtocol(fiveTuple.protocol()));
-        }
-
-        if (((flowClassifier.etherType() != null) && (!flowClassifier.etherType().isEmpty()))
-                && ("IPv4".equals(flowClassifier.etherType()) || "IPv6".equals(flowClassifier.etherType()))) {
-            if ("IPv4".equals(flowClassifier.etherType())) {
-                selector.matchEthType(Ethernet.TYPE_IPV4);
-            } else {
-                selector.matchEthType(Ethernet.TYPE_IPV6);
-            }
-        }
-
-        if ((flowClassifier.srcPort() != null) && (!flowClassifier.srcPort().portId().isEmpty())) {
-            VirtualPortId vPortId = VirtualPortId.portId(flowClassifier.srcPort().portId());
-            MacAddress macAddress = virtualPortService.getPort(vPortId).macAddress();
-            Host host = hostService.getHost(HostId.hostId(macAddress));
-            selector.matchInPort(host.location().port());
-        }
-
-        // Take the port information from five tuple only when the protocol is
-        // TCP.
-        if (fiveTuple != null && fiveTuple.protocol() == IPv4.PROTOCOL_TCP) {
-            selector.matchTcpSrc(TpPort.tpPort((int) fiveTuple.portSrc().toLong()));
-            selector.matchTcpDst(TpPort.tpPort((int) fiveTuple.portDst().toLong()));
-        } else {
-            // For udp packets take the port information from flow classifier
-            List<TpPort> srcPortRange = new LinkedList<>();
-            List<TpPort> dstPortRange = new LinkedList<>();
-            if ((flowClassifier.minSrcPortRange() != 0) && flowClassifier.maxSrcPortRange() != 0
-                    && flowClassifier.minDstPortRange() != 0 && flowClassifier.maxDstPortRange() != 0) {
-
-                for (int port = flowClassifier.minSrcPortRange(); port <= flowClassifier.maxSrcPortRange(); port++) {
-                    srcPortRange.add(TpPort.tpPort(port));
-                }
-                for (int port = flowClassifier.minDstPortRange(); port <= flowClassifier.maxDstPortRange(); port++) {
-                    dstPortRange.add(TpPort.tpPort(port));
-                }
-            }
-
-            for (TpPort inPort : srcPortRange) {
-                selector.matchUdpSrc(inPort);
-            }
-            for (TpPort outPort : dstPortRange) {
-                selector.matchUdpDst(outPort);
-            }
-        }
-        return selector;
-    }
-
-    /**
-     * Pack traffic treatment.
-     *
-     * @param deviceId device id
-     * @param virtualPort virtual port
-     * @param port port number
-     * @param nshSpi nsh spi
-     * @param flowClassifier flow-classifier
-     * @return traffic treatment
-     */
-    public TrafficTreatment.Builder packClassifierTreatment(DeviceId deviceId, VirtualPort virtualPort,
-            PortNumber port, NshServicePathId nshSpi, FlowClassifier flowClassifier) {
-
-        TrafficTreatment.Builder treatmentBuilder = DefaultTrafficTreatment.builder();
-
-        // set tunnel id
-        SegmentationId segmentationId = tenantNetworkService.getNetwork(virtualPort.networkId()).segmentationId();
-        treatmentBuilder.add(Instructions.modTunnelId(Long.parseLong(segmentationId.toString())));
-
-        // Set all NSH header fields
-        DriverHandler handler = driverService.createHandler(deviceId);
-        ExtensionTreatmentResolver resolver = handler.behaviour(ExtensionTreatmentResolver.class);
-        ExtensionTreatment nspIdTreatment = resolver.getExtensionInstruction(NICIRA_SET_NSH_SPI.type());
-        ExtensionTreatment nsiIdTreatment = resolver.getExtensionInstruction(NICIRA_SET_NSH_SI.type());
-        ExtensionTreatment pushNshTreatment = resolver.getExtensionInstruction(NICIRA_PUSH_NSH.type());
-
-        ExtensionTreatment nshCh1Treatment = resolver.getExtensionInstruction(NICIRA_SET_NSH_CH1.type());
-        ExtensionTreatment nshCh2Treatment = resolver.getExtensionInstruction(NICIRA_SET_NSH_CH2.type());
-        ExtensionTreatment nshCh3Treatment = resolver.getExtensionInstruction(NICIRA_SET_NSH_CH3.type());
-        ExtensionTreatment nshCh4Treatment = resolver.getExtensionInstruction(NICIRA_SET_NSH_CH4.type());
-        ExtensionTreatment nshMdTypeTreatment = resolver.getExtensionInstruction(NICIRA_NSH_MDTYPE.type());
-        ExtensionTreatment nshNpTreatment = resolver.getExtensionInstruction(NICIRA_NSH_NP.type());
-
-        try {
-            nshMdTypeTreatment.setPropertyValue("nshMdType", ((byte) 1));
-        } catch (Exception e) {
-            log.error("Failed to get extension instruction to set nshMdType {}", deviceId);
-        }
-        try {
-            nshNpTreatment.setPropertyValue("nshNp", ((byte) 3));
-        } catch (Exception e) {
-            log.error("Failed to get extension instruction to set nshNp {}", deviceId);
-        }
-        try {
-            nspIdTreatment.setPropertyValue("nshSpi", nshSpi);
-        } catch (Exception e) {
-            log.error("Failed to get extension instruction to set Nsh Spi Id {}", deviceId);
-        }
-        try {
-            nsiIdTreatment.setPropertyValue("nshSi", NshServiceIndex.of(nshSi));
-        } catch (Exception e) {
-            log.error("Failed to get extension instruction to set Nsh Si Id {}", deviceId);
-        }
-        try {
-            nshCh1Treatment.setPropertyValue("nshCh", NshContextHeader.of(1));
-        } catch (Exception e) {
-            log.error("Failed to get extension instruction to set NshCh1 {}", deviceId);
-        }
-        try {
-            nshCh2Treatment.setPropertyValue("nshCh", NshContextHeader.of(Integer.parseInt(segmentationId.toString())));
-        } catch (Exception e) {
-            log.error("Failed to get extension instruction to set NshCh2 {}", deviceId);
-        }
-        try {
-            nshCh3Treatment.setPropertyValue("nshCh", NshContextHeader.of(3));
-        } catch (Exception e) {
-            log.error("Failed to get extension instruction to set NshCh3 {}", deviceId);
-        }
-        try {
-            nshCh4Treatment.setPropertyValue("nshCh", NshContextHeader.of(4));
-        } catch (Exception e) {
-            log.error("Failed to get extension instruction to set NshCh4 {}", deviceId);
-        }
-        treatmentBuilder.extension(pushNshTreatment, deviceId);
-        treatmentBuilder.extension(nshMdTypeTreatment, deviceId);
-        treatmentBuilder.extension(nshNpTreatment, deviceId);
-        treatmentBuilder.extension(nspIdTreatment, deviceId);
-        treatmentBuilder.extension(nsiIdTreatment, deviceId);
-        treatmentBuilder.extension(nshCh1Treatment, deviceId);
-        treatmentBuilder.extension(nshCh2Treatment, deviceId);
-        treatmentBuilder.extension(nshCh3Treatment, deviceId);
-        treatmentBuilder.extension(nshCh4Treatment, deviceId);
-
-        return treatmentBuilder;
-    }
-
-    /**
-     * Get the ControllerId from the device .
-     *
-     * @param device Device
-     * @param devices Devices
-     * @return Controller Id
-     */
-    public DeviceId getControllerId(Device device, Iterable<Device> devices) {
-        for (Device d : devices) {
-            if (d.type() == Device.Type.CONTROLLER && d.id().toString()
-                    .contains(getControllerIpOfSwitch(device))) {
-                return d.id();
-            }
-        }
-        log.info("Can not find controller for device : {}", device.id());
-        return null;
-    }
-
-    /**
-     * Get the ControllerIp from the device .
-     *
-     * @param device Device
-     * @return Controller Ip
-     */
-    public String getControllerIpOfSwitch(Device device) {
-        String url = device.annotations().value(SWITCH_CHANNEL_ID);
-        return url.substring(0, url.lastIndexOf(":"));
-    }
-
-    /**
-     * Send service-function-forwarder to OVS.
-     *
-     * @param selector traffic selector
-     * @param treatment traffic treatment
-     * @param deviceId device id
-     * @param type operation type
-     * @param priority priority of classifier
-     */
-    public void sendSfcRule(TrafficSelector.Builder selector, TrafficTreatment.Builder treatment, DeviceId deviceId,
-            Objective.Operation type, int priority) {
-
-        log.info("Sending sfc flow rule. Selector {}, Treatment {}", selector.toString(),
-                 treatment.toString());
-        ForwardingObjective.Builder objective = DefaultForwardingObjective.builder().withTreatment(treatment.build())
-                .withSelector(selector.build()).fromApp(appId).makePermanent().withFlag(Flag.VERSATILE)
-                .withPriority(priority);
-
-        if (type.equals(Objective.Operation.ADD)) {
-            log.debug("flowClassifierRules-->ADD");
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            log.debug("flowClassifierRules-->REMOVE");
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-    }
-
-    private PortNumber getVxlanPortNumber(DeviceId deviceId) {
-        Iterable<Port> ports = deviceService.getPorts(deviceId);
-        Port vxlanPort = Sets.newHashSet(ports).stream()
-                .filter(p -> !p.number().equals(PortNumber.LOCAL))
-                .filter(p -> p.annotations().value(AnnotationKeys.PORT_NAME)
-                        .startsWith(VXLANPORT_HEAD))
-                .findFirst().get();
-        return vxlanPort.number();
-    }
-}
diff --git a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/impl/package-info.java b/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/impl/package-info.java
deleted file mode 100644
index dd047f4..0000000
--- a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of Service for installing flow classifier rules in OVS.
- */
-package org.onosproject.sfc.installer.impl;
diff --git a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/package-info.java b/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/package-info.java
deleted file mode 100644
index 989a676..0000000
--- a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service for installing flow classifier rules in OVS.
- */
-package org.onosproject.sfc.installer;
diff --git a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/SfcService.java b/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/SfcService.java
deleted file mode 100644
index 231438a..0000000
--- a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/SfcService.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.sfc.manager;
-
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.PortChain;
-
-/**
- * SFC application that applies flows to the device.
- */
-public interface SfcService {
-
-    /**
-     * When port-pair is created, check whether Forwarding Rule needs to be
-     * updated in OVS.
-     *
-     * @param portPair port-pair
-     */
-    void onPortPairCreated(PortPair portPair);
-
-    /**
-     * When port-pair is deleted, check whether Forwarding Rule needs to be
-     * updated in OVS.
-     *
-     * @param portPair port-pair
-     */
-    void onPortPairDeleted(PortPair portPair);
-
-    /**
-     * When port-pair-group is created, check whether Forwarding Rule needs to
-     * be updated in OVS.
-     *
-     * @param portPairGroup port-pair-group
-     */
-    void onPortPairGroupCreated(PortPairGroup portPairGroup);
-
-    /**
-     * When port-pair-group is deleted, check whether Forwarding Rule needs to
-     * be updated in OVS.
-     *
-     * @param portPairGroup port-pair-group
-     */
-    void onPortPairGroupDeleted(PortPairGroup portPairGroup);
-
-    /**
-     * When flow-classifier is created, check whether Forwarding Rule needs to
-     * be updated in OVS.
-     *
-     * @param flowClassifier flow-classifier
-     */
-    void onFlowClassifierCreated(FlowClassifier flowClassifier);
-
-    /**
-     * When flow-classifier is deleted, check whether Forwarding Rule needs to
-     * be updated in OVS.
-     *
-     * @param flowClassifier flow-classifier
-     */
-    void onFlowClassifierDeleted(FlowClassifier flowClassifier);
-
-    /**
-     * When port-chain is created, check whether Forwarding Rule needs to be
-     * updated in OVS.
-     *
-     * @param portChain port-chain
-     */
-    void onPortChainCreated(PortChain portChain);
-
-    /**
-     * When port-chain is deleted, check whether Forwarding Rule needs to be
-     * updated in OVS.
-     *
-     * @param portChain port-chain
-     */
-    void onPortChainDeleted(PortChain portChain);
-}
diff --git a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/impl/SfcManager.java b/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/impl/SfcManager.java
deleted file mode 100644
index d403502..0000000
--- a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/impl/SfcManager.java
+++ /dev/null
@@ -1,675 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.sfc.manager.impl;
-
-import com.google.common.collect.Lists;
-import org.onlab.packet.Ethernet;
-import org.onlab.packet.IPv4;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onlab.packet.TCP;
-import org.onlab.packet.UDP;
-import org.onlab.util.ItemNotFoundException;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.core.IdGenerator;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.NshServicePathId;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.packet.DefaultOutboundPacket;
-import org.onosproject.net.packet.OutboundPacket;
-import org.onosproject.net.packet.PacketContext;
-import org.onosproject.net.packet.PacketProcessor;
-import org.onosproject.net.packet.PacketService;
-import org.onosproject.sfc.installer.impl.SfcFlowRuleInstallerImpl;
-import org.onosproject.sfc.manager.SfcService;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.DistributedSet;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.Serializer;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.WallClockTimestamp;
-import org.onosproject.vtnrsc.DefaultFiveTuple;
-import org.onosproject.vtnrsc.FiveTuple;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.LoadBalanceId;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortChainId;
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.event.VtnRscEvent;
-import org.onosproject.vtnrsc.event.VtnRscListener;
-import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService;
-import org.onosproject.vtnrsc.portchain.PortChainService;
-import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService;
-import org.onosproject.vtnrsc.service.VtnRscService;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Set;
-import java.util.UUID;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provides implementation of SFC Service.
- */
-@Component(immediate = true, service = SfcService.class)
-public class SfcManager implements SfcService {
-
-    private final Logger log = getLogger(getClass());
-
-    private String nshSpiIdTopic = "nsh-spi-id";
-    private static final String APP_ID = "org.onosproject.app.vtn";
-    private static final int SFC_PRIORITY = 1000;
-    private static final int MAX_NSH_SPI_ID = 0x7FFFF;
-    private static final int MAX_LOAD_BALANCE_ID = 0x20;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected VtnRscService vtnRscService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PacketService packetService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PortChainService portChainService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PortPairGroupService portPairGroupService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected FlowClassifierService flowClassifierService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected VirtualPortService virtualPortService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    protected SfcPacketProcessor processor = new SfcPacketProcessor();
-
-    protected ApplicationId appId;
-    protected IdGenerator nshSpiIdGenerator;
-    protected EventuallyConsistentMap<PortChainId, Integer> nshSpiPortChainMap;
-    protected EventuallyConsistentMap<PortChainId, List<FiveTuple>> portChainFiveTupleMap;
-    protected DistributedSet<Integer> nshSpiIdFreeList;
-
-    private final VtnRscListener vtnRscListener = new InnerVtnRscListener();
-
-    @Activate
-    public void activate() {
-        appId = coreService.registerApplication(APP_ID);
-        nshSpiIdGenerator = coreService.getIdGenerator(nshSpiIdTopic);
-
-        vtnRscService.addListener(vtnRscListener);
-
-        KryoNamespace.Builder serializer = KryoNamespace
-                .newBuilder()
-                .register(PortChainId.class, UUID.class, FiveTuple.class, IpAddress.class, PortNumber.class,
-                          DefaultFiveTuple.class, IpAddress.Version.class, TenantId.class);
-
-        nshSpiPortChainMap = storageService.<PortChainId, Integer>eventuallyConsistentMapBuilder()
-                .withName("nshSpiPortChainMap").withSerializer(serializer)
-                .withTimestampProvider((k, v) -> new WallClockTimestamp()).build();
-
-        portChainFiveTupleMap = storageService.<PortChainId, List<FiveTuple>>eventuallyConsistentMapBuilder()
-                .withName("portChainFiveTupleMap").withSerializer(serializer)
-                .withTimestampProvider((k, v) -> new WallClockTimestamp()).build();
-
-        nshSpiIdFreeList = storageService.<Integer>setBuilder()
-                .withName("nshSpiIdDeletedList")
-                .withSerializer(Serializer.using(KryoNamespaces.API))
-                .build()
-                .asDistributedSet();
-
-        packetService.addProcessor(processor, PacketProcessor.director(SFC_PRIORITY));
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        vtnRscService.removeListener(vtnRscListener);
-        packetService.removeProcessor(processor);
-        log.info("Stopped");
-    }
-
-    /*
-     * Handle events.
-     */
-    private class InnerVtnRscListener implements VtnRscListener {
-        @Override
-        public void event(VtnRscEvent event) {
-
-            if (VtnRscEvent.Type.PORT_PAIR_PUT == event.type()) {
-                PortPair portPair = event.subject().portPair();
-                onPortPairCreated(portPair);
-            } else if (VtnRscEvent.Type.PORT_PAIR_DELETE == event.type()) {
-                PortPair portPair = event.subject().portPair();
-                onPortPairDeleted(portPair);
-            } else if (VtnRscEvent.Type.PORT_PAIR_UPDATE == event.type()) {
-                PortPair portPair = event.subject().portPair();
-                onPortPairDeleted(portPair);
-                onPortPairCreated(portPair);
-            } else if (VtnRscEvent.Type.PORT_PAIR_GROUP_PUT == event.type()) {
-                PortPairGroup portPairGroup = event.subject().portPairGroup();
-                onPortPairGroupCreated(portPairGroup);
-            } else if (VtnRscEvent.Type.PORT_PAIR_GROUP_DELETE == event.type()) {
-                PortPairGroup portPairGroup = event.subject().portPairGroup();
-                onPortPairGroupDeleted(portPairGroup);
-            } else if (VtnRscEvent.Type.PORT_PAIR_GROUP_UPDATE == event.type()) {
-                PortPairGroup portPairGroup = event.subject().portPairGroup();
-                onPortPairGroupDeleted(portPairGroup);
-                onPortPairGroupCreated(portPairGroup);
-            } else if (VtnRscEvent.Type.FLOW_CLASSIFIER_PUT == event.type()) {
-                FlowClassifier flowClassifier = event.subject().flowClassifier();
-                onFlowClassifierCreated(flowClassifier);
-            } else if (VtnRscEvent.Type.FLOW_CLASSIFIER_DELETE == event.type()) {
-                FlowClassifier flowClassifier = event.subject().flowClassifier();
-                onFlowClassifierDeleted(flowClassifier);
-            } else if (VtnRscEvent.Type.FLOW_CLASSIFIER_UPDATE == event.type()) {
-                FlowClassifier flowClassifier = event.subject().flowClassifier();
-                onFlowClassifierDeleted(flowClassifier);
-                onFlowClassifierCreated(flowClassifier);
-            } else if (VtnRscEvent.Type.PORT_CHAIN_PUT == event.type()) {
-                PortChain portChain = event.subject().portChain();
-                if (portChain.oldPortChain() != null) {
-                    onPortChainDeleted(portChain.oldPortChain());
-                }
-                onPortChainCreated(portChain);
-            } else if (VtnRscEvent.Type.PORT_CHAIN_DELETE == event.type()) {
-                PortChain portChain = event.subject().portChain();
-                onPortChainDeleted(portChain);
-                portChainFiveTupleMap.remove(portChain.portChainId());
-            } else if (VtnRscEvent.Type.PORT_CHAIN_UPDATE == event.type()) {
-                PortChain portChain = event.subject().portChain();
-                onPortChainDeleted(portChain);
-                onPortChainCreated(portChain);
-            }
-        }
-    }
-
-    @Override
-    public void onPortPairCreated(PortPair portPair) {
-        log.debug("onPortPairCreated");
-        // Do nothing
-    }
-
-    @Override
-    public void onPortPairDeleted(PortPair portPair) {
-        log.debug("onPortPairDeleted");
-        // Do nothing
-    }
-
-    @Override
-    public void onPortPairGroupCreated(PortPairGroup portPairGroup) {
-        log.debug("onPortPairGroupCreated");
-        // Do nothing
-    }
-
-    @Override
-    public void onPortPairGroupDeleted(PortPairGroup portPairGroup) {
-        log.debug("onPortPairGroupDeleted");
-        // Do nothing
-    }
-
-    @Override
-    public void onFlowClassifierCreated(FlowClassifier flowClassifier) {
-        log.debug("onFlowClassifierCreated");
-        // Do nothing
-    }
-
-    @Override
-    public void onFlowClassifierDeleted(FlowClassifier flowClassifier) {
-        log.debug("onFlowClassifierDeleted");
-        // Do nothing
-    }
-
-    @Override
-    public void onPortChainCreated(PortChain portChain) {
-        NshServicePathId nshSpi;
-        log.info("On port chain created");
-
-        int spi = getNextNshSpi();
-        if (spi > MAX_NSH_SPI_ID) {
-            log.error("Reached max limit of service path index." + "Failed to install SFC for port chain {}",
-                      portChain.portChainId().toString());
-            return;
-        }
-        nshSpi = NshServicePathId.of(spi);
-        nshSpiPortChainMap.put(portChain.portChainId(), new Integer(spi));
-        if (!portChainFiveTupleMap.containsKey(portChain.portChainId())) {
-            portChainFiveTupleMap.put(portChain.portChainId(), Lists.newArrayList());
-        }
-        // Install classifier rule to send the packet to controller
-        SfcFlowRuleInstallerImpl flowRuleInstaller = new SfcFlowRuleInstallerImpl(appId);
-        flowRuleInstaller.installFlowClassifier(portChain, nshSpi);
-
-        // Install rules for already identified five tuples.
-        List<FiveTuple> list = portChainFiveTupleMap.get(portChain.portChainId());
-        for (FiveTuple fiveTuple : list) {
-            LoadBalanceId id = loadBalanceSfc(portChain.portChainId(), fiveTuple);
-            // Get nsh service path index
-            nshSpi = NshServicePathId.of(getNshServicePathId(id, spi));
-            // download the required flow rules for classifier and
-            // forwarding
-            flowRuleInstaller.installLoadBalancedFlowRules(portChain, fiveTuple, nshSpi);
-        }
-    }
-
-    @Override
-    public void onPortChainDeleted(PortChain portChain) {
-        log.info("onPortChainDeleted");
-        if (!nshSpiPortChainMap.containsKey(portChain.portChainId())) {
-            throw new ItemNotFoundException("Unable to find NSH SPI");
-        }
-
-        int nshSpiId = nshSpiPortChainMap.get(portChain.portChainId());
-        // Uninstall classifier rules
-        SfcFlowRuleInstallerImpl flowRuleInstaller = new SfcFlowRuleInstallerImpl(appId);
-        flowRuleInstaller.unInstallFlowClassifier(portChain, NshServicePathId.of(nshSpiId));
-        // remove from nshSpiPortChainMap and add to nshSpiIdFreeList
-        nshSpiPortChainMap.remove(portChain.portChainId());
-        nshSpiIdFreeList.add(nshSpiId);
-
-        // Uninstall load balanced classifier and forwarding rules.
-        NshServicePathId nshSpi;
-        LoadBalanceId id;
-        List<LoadBalanceId> processedIdList = Lists.newArrayList();
-        Set<FiveTuple> fiveTupleSet = portChain.getLoadBalanceIdMapKeys();
-        for (FiveTuple fiveTuple : fiveTupleSet) {
-            id = portChain.getLoadBalanceId(fiveTuple);
-            nshSpi = NshServicePathId.of(getNshServicePathId(id, nshSpiId));
-            if (processedIdList.contains(id)) {
-                // Multiple five tuple can have single path. In this case only
-                // the classifier rule need to delete
-                flowRuleInstaller.unInstallLoadBalancedClassifierRules(portChain, fiveTuple, nshSpi);
-                continue;
-            } else {
-                processedIdList.add(id);
-            }
-            flowRuleInstaller.unInstallLoadBalancedFlowRules(portChain, fiveTuple, nshSpi);
-        }
-
-        // Reset load for all the port pairs
-        List<PortPairGroupId> ppgIdlist = portChain.portPairGroups();
-        ListIterator<PortPairGroupId> ppgIdListIterator = ppgIdlist.listIterator();
-        while (ppgIdListIterator.hasNext()) {
-            PortPairGroupId portPairGroupId = ppgIdListIterator.next();
-            PortPairGroup ppg = portPairGroupService.getPortPairGroup(portPairGroupId);
-            ppg.resetLoad();
-        }
-    }
-
-    /**
-     * Get next nsh service path identifier.
-     *
-     * @return value of service path identifier
-     */
-    int getNextNshSpi() {
-        // If there is any free id use it. Otherwise generate new id.
-        if (nshSpiIdFreeList.isEmpty()) {
-            return (int) nshSpiIdGenerator.getNewId();
-        }
-        Iterator<Integer> it = nshSpiIdFreeList.iterator();
-        Integer value = it.next();
-        nshSpiIdFreeList.remove(value);
-        return value;
-    }
-
-    private class SfcPacketProcessor implements PacketProcessor {
-
-        /**
-         * Check for given ip match with the fixed ips for the virtual port.
-         *
-         * @param vPortId virtual port id
-         * @param ip ip address to match
-         * @return true if the ip match with the fixed ips in virtual port false otherwise
-         */
-        private boolean checkIpInVirtualPort(VirtualPortId vPortId, IpAddress ip) {
-            boolean found = false;
-            Set<FixedIp> ips = virtualPortService.getPort(vPortId).fixedIps();
-            for (FixedIp fixedIp : ips) {
-                if (fixedIp.ip().equals(ip)) {
-                    found = true;
-                    break;
-                }
-            }
-            return found;
-        }
-
-        /**
-         * Find the port chain for the received packet.
-         *
-         * @param fiveTuple five tuple info from the packet
-         * @return portChainId id of port chain, null if portChain is not found
-         */
-        private PortChainId findPortChainFromFiveTuple(FiveTuple fiveTuple) {
-
-            PortChainId portChainId = null;
-
-            Iterable<PortChain> portChains = portChainService.getPortChains();
-            if (portChains == null) {
-                log.error("Could not retrieve port chain list");
-                return null;
-            }
-
-            // Identify the port chain to which the packet belongs
-            for (final PortChain portChain : portChains) {
-
-                if (!portChain.tenantId().equals(fiveTuple.tenantId())) {
-                    continue;
-                }
-
-                Iterable<FlowClassifierId> flowClassifiers = portChain.flowClassifiers();
-
-                // One port chain can have multiple flow classifiers.
-                for (final FlowClassifierId flowClassifierId : flowClassifiers) {
-
-                    FlowClassifier flowClassifier = flowClassifierService.getFlowClassifier(flowClassifierId);
-                    boolean match = false;
-                    // Check whether protocol is set in flow classifier
-                    if (flowClassifier.protocol() != null) {
-                        if (("TCP".equalsIgnoreCase(flowClassifier.protocol())
-                                && fiveTuple.protocol() == IPv4.PROTOCOL_TCP)
-                                || ("UDP".equalsIgnoreCase(flowClassifier.protocol())
-                                        && fiveTuple.protocol() == IPv4.PROTOCOL_UDP)
-                                        || ("ICMP".equalsIgnoreCase(flowClassifier.protocol())
-                                                && fiveTuple.protocol() == IPv4.PROTOCOL_ICMP)) {
-                            match = true;
-                        } else {
-                            continue;
-                        }
-                    }
-
-                    // Check whether source ip prefix is set in flow classifier
-                    if (flowClassifier.srcIpPrefix() != null) {
-                        if (flowClassifier.srcIpPrefix().contains(fiveTuple.ipSrc())) {
-                            match = true;
-                        } else {
-                            continue;
-                        }
-                    }
-
-                    // Check whether destination ip prefix is set in flow classifier
-                    if (flowClassifier.dstIpPrefix() != null) {
-                        if (flowClassifier.dstIpPrefix().contains(fiveTuple.ipDst())) {
-                            match = true;
-                        } else {
-                            continue;
-                        }
-                    }
-
-                    // Check whether source port is set in flow classifier
-                    if (fiveTuple.portSrc().toLong() >= flowClassifier.minSrcPortRange() &&
-                            fiveTuple.portSrc().toLong() <= flowClassifier.maxSrcPortRange()) {
-                        match = true;
-                    } else {
-                        continue;
-                    }
-
-                    // Check whether destination port is set in flow classifier
-                    if (fiveTuple.portDst().toLong() >= flowClassifier.minSrcPortRange() &&
-                            fiveTuple.portDst().toLong() <= flowClassifier.maxSrcPortRange()) {
-                        match = true;
-                    } else {
-                        continue;
-                    }
-
-                    // Check whether neutron source port is set in flow classifier
-                    if ((flowClassifier.srcPort() != null) && (!flowClassifier.srcPort().portId().isEmpty())) {
-                        match = checkIpInVirtualPort(VirtualPortId.portId(flowClassifier.srcPort().portId()),
-                                                     fiveTuple.ipSrc());
-                        if (!match) {
-                            continue;
-                        }
-                    }
-
-                    // Check whether destination neutron destination port is set in flow classifier
-                    if ((flowClassifier.dstPort() != null) && (!flowClassifier.dstPort().portId().isEmpty())) {
-                        match = checkIpInVirtualPort(VirtualPortId.portId(flowClassifier.dstPort().portId()),
-                                                     fiveTuple.ipDst());
-                        if (!match) {
-                            continue;
-                        }
-                    }
-
-                    if (match) {
-                        portChainId = portChain.portChainId();
-                        break;
-                    }
-                }
-            }
-            return portChainId;
-        }
-
-        /**
-         * Get the tenant id for the given mac address.
-         *
-         * @param mac mac address
-         * @return tenantId tenant id for the given mac address
-         */
-        private TenantId getTenantId(MacAddress mac) {
-            Collection<VirtualPort> virtualPorts = virtualPortService.getPorts();
-            for (VirtualPort virtualPort : virtualPorts) {
-                if (virtualPort.macAddress().equals(mac)) {
-                    return virtualPort.tenantId();
-                }
-            }
-            return null;
-        }
-
-        @Override
-        public void process(PacketContext context) {
-            Ethernet packet = context.inPacket().parsed();
-            if (packet == null || portChainService.getPortChainCount() == 0) {
-                return;
-            }
-            // get the five tuple parameters for the packet
-            short ethType = packet.getEtherType();
-            IpAddress ipSrc = null;
-            IpAddress ipDst = null;
-            int portSrc = 0;
-            int portDst = 0;
-            byte protocol = 0;
-            MacAddress macSrc = packet.getSourceMAC();
-            MacAddress macDst = packet.getDestinationMAC();
-            TenantId tenantId = getTenantId(macSrc);
-
-            if (ethType == Ethernet.TYPE_IPV4) {
-                IPv4 ipv4Packet = (IPv4) packet.getPayload();
-                ipSrc = IpAddress.valueOf(ipv4Packet.getSourceAddress());
-                ipDst = IpAddress.valueOf(ipv4Packet.getDestinationAddress());
-                protocol = ipv4Packet.getProtocol();
-                if (protocol == IPv4.PROTOCOL_TCP) {
-                    TCP tcpPacket = (TCP) ipv4Packet.getPayload();
-                    portSrc = tcpPacket.getSourcePort();
-                    portDst = tcpPacket.getDestinationPort();
-                } else if (protocol == IPv4.PROTOCOL_UDP) {
-                    UDP udpPacket = (UDP) ipv4Packet.getPayload();
-                    portSrc = udpPacket.getSourcePort();
-                    portDst = udpPacket.getDestinationPort();
-                } else if (protocol == IPv4.PROTOCOL_ICMP) {
-                    // do nothing
-                } else {
-                    // No need to process other packets received by controller.
-                    return;
-                }
-            } else {
-                return;
-            }
-
-            FiveTuple fiveTuple = DefaultFiveTuple.builder()
-                    .setIpSrc(ipSrc)
-                    .setIpDst(ipDst)
-                    .setPortSrc(PortNumber.portNumber(portSrc))
-                    .setPortDst(PortNumber.portNumber(portDst))
-                    .setProtocol(protocol)
-                    .setTenantId(tenantId)
-                    .setMacSrc(macSrc)
-                    .setMacDst(macDst)
-                    .build();
-
-            PortChainId portChainId = findPortChainFromFiveTuple(fiveTuple);
-
-            if (portChainId == null) {
-                return;
-            }
-
-            // Once the 5 tuple and port chain are identified, give this input for load balancing
-            addToPortChainIdFiveTupleMap(portChainId, fiveTuple);
-            LoadBalanceId id = loadBalanceSfc(portChainId, fiveTuple);
-            // Get nsh service path index
-            NshServicePathId nshSpi;
-            PortChain portChain = portChainService.getPortChain(portChainId);
-            if (nshSpiPortChainMap.containsKey(portChain.portChainId())) {
-                int nshSpiId = nshSpiPortChainMap.get(portChain.portChainId());
-                nshSpi = NshServicePathId.of(getNshServicePathId(id, nshSpiId));
-            } else {
-                int nshSpiId = getNextNshSpi();
-                if (nshSpiId > MAX_NSH_SPI_ID) {
-                    log.error("Reached max limit of service path index."
-                            + "Failed to install SFC for port chain {}", portChain.portChainId());
-                    return;
-                }
-                nshSpi = NshServicePathId.of(getNshServicePathId(id, nshSpiId));
-                nshSpiPortChainMap.put(portChain.portChainId(), new Integer(nshSpiId));
-            }
-            // download the required flow rules for classifier and forwarding
-            // install in OVS.
-            SfcFlowRuleInstallerImpl flowRuleInstaller = new SfcFlowRuleInstallerImpl(appId);
-            flowRuleInstaller.installLoadBalancedFlowRules(portChain, fiveTuple, nshSpi);
-            sendPacket(context);
-        }
-
-        /**
-         * Send packet back to classifier.
-         *
-         * @param context packet context
-         */
-        private void sendPacket(PacketContext context) {
-
-            ConnectPoint sourcePoint = context.inPacket().receivedFrom();
-
-            TrafficTreatment treatment = DefaultTrafficTreatment.builder().setOutput(PortNumber.TABLE).build();
-            OutboundPacket packet = new DefaultOutboundPacket(sourcePoint.deviceId(), treatment, context.inPacket()
-                    .unparsed());
-            packetService.emit(packet);
-            log.trace("Sending packet: {}", packet);
-        }
-    }
-
-    /**
-     * Encapsulate 5 bit load balance id to nsh spi.
-     *
-     * @param id load balance identifier
-     * @param nshSpiId nsh service path index
-     * @return updated service path index
-     */
-    protected int getNshServicePathId(LoadBalanceId id, int nshSpiId) {
-        int nshSpiNew = nshSpiId << 5;
-        nshSpiNew = nshSpiNew | id.loadBalanceId();
-        return nshSpiNew;
-    }
-
-    private void addToPortChainIdFiveTupleMap(PortChainId portChainId, FiveTuple fiveTuple) {
-        List<FiveTuple> list = portChainFiveTupleMap.get(portChainId);
-        list.add(fiveTuple);
-        portChainFiveTupleMap.put(portChainId, list);
-    }
-
-    /**
-     * Find the load balanced path set it to port chain for the given five
-     * tuple.
-     *
-     * @param portChainId port chain id
-     * @param fiveTuple five tuple info
-     * @return load balance id
-     */
-    private LoadBalanceId loadBalanceSfc(PortChainId portChainId, FiveTuple fiveTuple) {
-
-        // Get the port chain
-        PortChain portChain = portChainService.getPortChain(portChainId);
-        List<PortPairId> loadBalancePath = Lists.newArrayList();
-        LoadBalanceId id;
-        int paths = portChain.getLoadBalancePathSize();
-        if (paths >= MAX_LOAD_BALANCE_ID) {
-            log.info("Max limit reached for load balance paths. "
-                    + "Reusing the created path for port chain {} with five tuple {}", portChainId, fiveTuple);
-            id = LoadBalanceId.of((byte) ((paths + 1) % MAX_LOAD_BALANCE_ID));
-            portChain.addLoadBalancePath(fiveTuple, id, portChain.getLoadBalancePath(id));
-        }
-
-        // Get the list of port pair groups from port chain
-        Iterable<PortPairGroupId> portPairGroups = portChain.portPairGroups();
-        for (final PortPairGroupId portPairGroupId : portPairGroups) {
-            PortPairGroup portPairGroup = portPairGroupService.getPortPairGroup(portPairGroupId);
-
-            // Get the list of port pair ids from port pair group.
-            Iterable<PortPairId> portPairs = portPairGroup.portPairs();
-            int minLoad = 0xFFF;
-            PortPairId minLoadPortPairId = null;
-            for (final PortPairId portPairId : portPairs) {
-                int load = portPairGroup.getLoad(portPairId);
-                if (load == 0) {
-                    minLoadPortPairId = portPairId;
-                    break;
-                } else {
-                    // Check the port pair which has min load.
-                    if (load < minLoad) {
-                        minLoad = load;
-                        minLoadPortPairId = portPairId;
-                    }
-                }
-            }
-            if (minLoadPortPairId != null) {
-                loadBalancePath.add(minLoadPortPairId);
-                portPairGroup.addLoad(minLoadPortPairId);
-            }
-        }
-
-        // Check if the path already exists, if not create a new id
-        id = portChain.matchPath(loadBalancePath);
-        if (id == null) {
-            id = LoadBalanceId.of((byte) (paths + 1));
-        }
-
-        portChain.addLoadBalancePath(fiveTuple, id, loadBalancePath);
-        return id;
-    }
-
-}
diff --git a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/impl/package-info.java b/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/impl/package-info.java
deleted file mode 100644
index 99a01b0..0000000
--- a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * SFC Service manager for interacting with SFC.
- */
-package org.onosproject.sfc.manager.impl;
diff --git a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/package-info.java b/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/package-info.java
deleted file mode 100644
index 47d993a..0000000
--- a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service for interacting with SFC.
- */
-package org.onosproject.sfc.manager;
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/installer/impl/SfcFlowRuleInstallerImplTest.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/installer/impl/SfcFlowRuleInstallerImplTest.java
deleted file mode 100644
index a984e5f..0000000
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/installer/impl/SfcFlowRuleInstallerImplTest.java
+++ /dev/null
@@ -1,417 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfc.installer.impl;
-
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-import static org.onosproject.net.Device.Type.SWITCH;
-import static org.onosproject.net.Port.Type.COPPER;
-
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.junit.Test;
-import org.onlab.packet.ChassisId;
-import org.onlab.packet.IPv4;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.DefaultApplicationId;
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.net.Annotations;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultDevice;
-import org.onosproject.net.DefaultPort;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.HostLocation;
-import org.onosproject.net.NshServicePathId;
-import org.onosproject.net.Port;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.device.DeviceServiceAdapter;
-import org.onosproject.net.driver.DriverHandler;
-import org.onosproject.net.driver.DriverService;
-import org.onosproject.net.flow.criteria.Criterion;
-import org.onosproject.net.flow.criteria.PortCriterion;
-import org.onosproject.net.flow.instructions.Instruction;
-import org.onosproject.net.flow.instructions.Instructions.OutputInstruction;
-import org.onosproject.net.flowobjective.FlowObjectiveServiceAdapter;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
-import org.onosproject.net.flowobjective.ForwardingObjective;
-import org.onosproject.net.host.HostService;
-import org.onosproject.net.host.HostServiceAdapter;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.sfc.util.FlowClassifierAdapter;
-import org.onosproject.sfc.util.MockDriverHandler;
-import org.onosproject.sfc.util.PortPairAdapter;
-import org.onosproject.sfc.util.PortPairGroupAdapter;
-import org.onosproject.sfc.util.TenantNetworkAdapter;
-import org.onosproject.sfc.util.VirtualPortAdapter;
-import org.onosproject.sfc.util.VtnRscAdapter;
-import org.onosproject.vtnrsc.AllowedAddressPair;
-import org.onosproject.vtnrsc.BindingHostId;
-import org.onosproject.vtnrsc.DefaultFiveTuple;
-import org.onosproject.vtnrsc.DefaultFlowClassifier;
-import org.onosproject.vtnrsc.DefaultPortChain;
-import org.onosproject.vtnrsc.DefaultPortPair;
-import org.onosproject.vtnrsc.DefaultPortPairGroup;
-import org.onosproject.vtnrsc.DefaultTenantNetwork;
-import org.onosproject.vtnrsc.DefaultVirtualPort;
-import org.onosproject.vtnrsc.FiveTuple;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.LoadBalanceId;
-import org.onosproject.vtnrsc.PhysicalNetwork;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortChainId;
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.SecurityGroup;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetwork;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService;
-import org.onosproject.vtnrsc.portpair.PortPairService;
-import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService;
-import org.onosproject.vtnrsc.service.VtnRscService;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
-public class SfcFlowRuleInstallerImplTest {
-
-    FlowObjectiveService flowObjectiveService = new FlowObjectiveServiceAdapter();
-    DeviceService deviceService = new DeviceServiceAdapter(createPortList());
-
-    HostService hostService = new HostServiceAdapter();
-    VirtualPortService virtualPortService = new VirtualPortAdapter();
-    VtnRscService vtnRscService = new VtnRscAdapter();
-    PortPairService portPairService = new PortPairAdapter();
-    PortPairGroupService portPairGroupService = new PortPairGroupAdapter();
-    FlowClassifierService flowClassifierService = new FlowClassifierAdapter();
-    TenantNetworkService tenantNetworkService = new TenantNetworkAdapter();
-
-    final DriverService driverService = createMock(DriverService.class);
-
-    private final String networkIdStr = "123";
-
-    final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
-    final TenantId tenantId = TenantId.tenantId("1");
-    final String name = "PortChain";
-    final String description = "PortChain";
-    final List<PortPairGroupId> portPairGroups = new LinkedList<PortPairGroupId>();
-    final List<FlowClassifierId> flowClassifiers = new LinkedList<FlowClassifierId>();
-    PortPairGroupId portPairGroupId1 = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
-    PortPairGroupId portPairGroupId2 = PortPairGroupId.of("73343531-fc23-aeb6-f44b-56dc5e2fb3af");
-
-    PortPairId portPairId1 = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
-    PortPairId portPairId2 = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
-
-    FlowClassifierId flowClassifierId1 = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
-    FlowClassifierId flowClassifierId2 = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af");
-
-    final String ppName = "PortPair";
-    final String ppDescription = "PortPair";
-    final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1";
-    final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345";
-
-    final String ppgName = "PortPairGroup";
-    final String ppgDescription = "PortPairGroup";
-    final List<PortPairId> portPairList = new LinkedList<PortPairId>();
-
-    VirtualPortId id1 = VirtualPortId.portId(ingress);
-    VirtualPortId id2 = VirtualPortId.portId("3414");
-
-    DeviceId deviceId = DeviceId.deviceId("of:000000000000001");
-
-    final DriverHandler driverHandler = new MockDriverHandler();
-
-    private List<Port> createPortList() {
-        List<Port> portList = Lists.newArrayList();
-        long sp1 = 1_000_000;
-        ProviderId pid = new ProviderId("of", "foo");
-        ChassisId cid = new ChassisId();
-        Device device = new DefaultDevice(pid, deviceId, SWITCH, "whitebox", "1.1.x", "3.9.1", "43311-12345", cid);
-        Annotations annotations = DefaultAnnotations
-                .builder()
-                .set(AnnotationKeys.PORT_NAME, "vxlan-0.0.0.0").build();
-        Port p1 = new DefaultPort(device, PortNumber.ANY, true, COPPER, sp1, annotations);
-        portList.add(p1);
-        return portList;
-    }
-
-    private PortPair createPortPair(PortPairId ppId) {
-        DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder();
-        PortPair portPair = portPairBuilder.setId(ppId).setName(ppName).setTenantId(tenantId)
-                .setDescription(ppDescription).setIngress(ingress).setEgress(egress).build();
-        return portPair;
-    }
-
-    private PortPairGroup createPortPairGroup(PortPairGroupId ppgId) {
-
-        portPairList.clear();
-        // Create same two port-pair-group objects.
-        portPairList.add(portPairId1);
-        portPairList.add(portPairId2);
-
-        DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder();
-        PortPairGroup portPairGroup = portPairGroupBuilder.setId(ppgId).setTenantId(tenantId)
-                .setName(ppgName).setDescription(ppgDescription).setPortPairs(portPairList).build();
-
-        return portPairGroup;
-
-    }
-
-    private PortChain createPortChain() {
-
-        portPairGroups.clear();
-        flowClassifiers.clear();
-        // create list of Port Pair Groups.
-
-        portPairGroups.add(portPairGroupId1);
-        portPairGroups.add(portPairGroupId2);
-        // create list of Flow classifiers.
-        flowClassifiers.add(flowClassifierId1);
-        flowClassifiers.add(flowClassifierId2);
-
-        DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder();
-        final PortChain portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name)
-                .setDescription(description).setPortPairGroups(portPairGroups).setFlowClassifiers(flowClassifiers)
-                .build();
-
-        return portChain;
-    }
-
-    private FlowClassifier createFlowClassifier(FlowClassifierId id) {
-        final String name = "FlowClassifier1";
-        final String description = "FlowClassifier1";
-        final String ethType = "IPv4";
-        final String protocol = "tcp";
-        final int minSrcPortRange = 5;
-        final int maxSrcPortRange = 10;
-        final int minDstPortRange = 5;
-        final int maxDstPortRange = 10;
-        final TenantId tenantId = TenantId.tenantId("1");
-        final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0");
-        final IpPrefix dstIpPrefix = IpPrefix.valueOf("10.10.10.10/0");
-        final VirtualPortId virtualSrcPort = id1;
-        final VirtualPortId virtualDstPort = id2;
-
-        DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder();
-        final FlowClassifier flowClassifier = flowClassifierBuilder.setFlowClassifierId(id)
-                .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType)
-                .setProtocol(protocol).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange)
-                .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix)
-                .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build();
-        return flowClassifier;
-    }
-
-    private VirtualPort createVirtualPort(VirtualPortId id) {
-        Set<FixedIp> fixedIps;
-        Map<String, String> propertyMap;
-        Set<AllowedAddressPair> allowedAddressPairs;
-        Set<SecurityGroup> securityGroups = Sets.newHashSet();
-
-        String macAddressStr = "fa:12:3e:56:ee:a2";
-        String ipAddress = "10.1.1.1";
-        String subnet = "1212";
-        String hostIdStr = "fa:e2:3e:56:ee:a2";
-        String deviceOwner = "james";
-        propertyMap = Maps.newHashMap();
-        propertyMap.putIfAbsent("deviceOwner", deviceOwner);
-
-        TenantNetworkId networkId = TenantNetworkId.networkId(networkIdStr);
-        MacAddress macAddress = MacAddress.valueOf(macAddressStr);
-        BindingHostId bindingHostId = BindingHostId.bindingHostId(hostIdStr);
-        FixedIp fixedIp = FixedIp.fixedIp(SubnetId.subnetId(subnet),
-                                          IpAddress.valueOf(ipAddress));
-        fixedIps = Sets.newHashSet();
-        fixedIps.add(fixedIp);
-
-        allowedAddressPairs = Sets.newHashSet();
-        AllowedAddressPair allowedAddressPair = AllowedAddressPair
-                .allowedAddressPair(IpAddress.valueOf(ipAddress),
-                                    MacAddress.valueOf(macAddressStr));
-        allowedAddressPairs.add(allowedAddressPair);
-
-        VirtualPort d1 = new DefaultVirtualPort(id, networkId, true,
-                                                propertyMap,
-                                                VirtualPort.State.ACTIVE,
-                                                macAddress, tenantId, deviceId,
-                                                fixedIps, bindingHostId,
-                                                allowedAddressPairs,
-                                                securityGroups);
-        return d1;
-    }
-
-    @Test
-    public void testInstallFlowClassifier() {
-
-        ApplicationId appId = new DefaultApplicationId(1, "test");
-        SfcFlowRuleInstallerImpl flowClassifierInstaller = new SfcFlowRuleInstallerImpl();
-        flowClassifierInstaller.virtualPortService = virtualPortService;
-        flowClassifierInstaller.vtnRscService = vtnRscService;
-        flowClassifierInstaller.portPairService = portPairService;
-        flowClassifierInstaller.portPairGroupService = portPairGroupService;
-        flowClassifierInstaller.flowClassifierService = flowClassifierService;
-        flowClassifierInstaller.driverService = driverService;
-        flowClassifierInstaller.deviceService = deviceService;
-        flowClassifierInstaller.hostService = hostService;
-        flowClassifierInstaller.flowObjectiveService = flowObjectiveService;
-        flowClassifierInstaller.appId = appId;
-
-        final PortChain portChain = createPortChain();
-        NshServicePathId nshSpiId = NshServicePathId.of(10);
-
-        portPairGroupService.createPortPairGroup(createPortPairGroup(portPairGroupId1));
-        portPairGroupService.createPortPairGroup(createPortPairGroup(portPairGroupId2));
-        portPairService.createPortPair(createPortPair(portPairId1));
-        portPairService.createPortPair(createPortPair(portPairId2));
-        FlowClassifier fc1 = createFlowClassifier(flowClassifierId1);
-        FlowClassifier fc2 = createFlowClassifier(flowClassifierId2);
-        flowClassifierService.createFlowClassifier(fc1);
-        flowClassifierService.createFlowClassifier(fc2);
-
-        List<VirtualPort> virtualPortList = Lists.newArrayList();
-        virtualPortList.add(createVirtualPort(VirtualPortId.portId(ingress)));
-        virtualPortService.createPorts(virtualPortList);
-
-        expect(driverService.createHandler(deviceId)).andReturn(driverHandler).anyTimes();
-        replay(driverService);
-
-        ConnectPoint connectPoint = flowClassifierInstaller.installFlowClassifier(portChain, nshSpiId);
-
-        assertThat(connectPoint, is(HostLocation.NONE));
-    }
-
-    @Test
-    public void testInstallLoadBalancedFlowRules() {
-        ApplicationId appId = new DefaultApplicationId(1, "test");
-        SfcFlowRuleInstallerImpl flowRuleInstaller = new SfcFlowRuleInstallerImpl();
-        flowRuleInstaller.virtualPortService = virtualPortService;
-        flowRuleInstaller.vtnRscService = vtnRscService;
-        flowRuleInstaller.portPairService = portPairService;
-        flowRuleInstaller.portPairGroupService = portPairGroupService;
-        flowRuleInstaller.flowClassifierService = flowClassifierService;
-        flowRuleInstaller.driverService = driverService;
-        flowRuleInstaller.deviceService = deviceService;
-        flowRuleInstaller.hostService = hostService;
-        flowRuleInstaller.flowObjectiveService = flowObjectiveService;
-        flowRuleInstaller.tenantNetworkService = tenantNetworkService;
-        flowRuleInstaller.appId = appId;
-
-        final PortChain portChain = createPortChain();
-
-        final String ppName1 = "PortPair1";
-        final String ppDescription1 = "PortPair1";
-        final String ingress1 = "d3333333-24fc-4fae-af4b-321c5e2eb3d1";
-        final String egress1 = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345";
-        DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder();
-        PortPair portPair1 = portPairBuilder.setId(portPairId1).setName(ppName1).setTenantId(tenantId)
-                .setDescription(ppDescription1).setIngress(ingress1).setEgress(egress1).build();
-
-        final String ppName2 = "PortPair2";
-        final String ppDescription2 = "PortPair2";
-        final String ingress2 = "d5555555-24fc-4fae-af4b-321c5e2eb3d1";
-        final String egress2 = "a6666666-4a56-2a6e-cd3a-9dee4e2ec345";
-        PortPair portPair2 = portPairBuilder.setId(portPairId2).setName(ppName2).setTenantId(tenantId)
-                .setDescription(ppDescription2).setIngress(ingress2).setEgress(egress2).build();
-
-        portPairService.createPortPair(portPair1);
-        portPairService.createPortPair(portPair2);
-
-        FlowClassifier fc1 = createFlowClassifier(flowClassifierId1);
-        FlowClassifier fc2 = createFlowClassifier(flowClassifierId2);
-        flowClassifierService.createFlowClassifier(fc1);
-        flowClassifierService.createFlowClassifier(fc2);
-
-        NshServicePathId nshSpiId = NshServicePathId.of(10);
-        FiveTuple fiveTuple = DefaultFiveTuple.builder().setIpSrc(IpAddress.valueOf("3.3.3.3"))
-                .setIpDst(IpAddress.valueOf("4.4.4.4"))
-                .setPortSrc(PortNumber.portNumber(1500))
-                .setPortDst(PortNumber.portNumber(2000))
-                .setProtocol(IPv4.PROTOCOL_UDP)
-                .setTenantId(TenantId.tenantId("bbb"))
-                .build();
-        LoadBalanceId id = LoadBalanceId.of((byte) 1);
-
-        List<PortPairId> path = Lists.newArrayList();
-        path.add(portPairId1);
-        path.add(portPairId2);
-
-        List<VirtualPort> virtualPortList = Lists.newArrayList();
-        virtualPortList.add(createVirtualPort(VirtualPortId.portId(ingress1)));
-        virtualPortList.add(createVirtualPort(VirtualPortId.portId(egress1)));
-        virtualPortList.add(createVirtualPort(VirtualPortId.portId(ingress2)));
-        virtualPortList.add(createVirtualPort(VirtualPortId.portId(egress2)));
-        virtualPortService.createPorts(virtualPortList);
-
-        portChain.addLoadBalancePath(fiveTuple, id, path);
-
-        String physicalNetworkStr = "1234";
-        String segmentationIdStr = "1";
-        SegmentationId segmentationID = SegmentationId
-                .segmentationId(segmentationIdStr);
-        TenantNetworkId networkid1 = TenantNetworkId.networkId(networkIdStr);
-        PhysicalNetwork physicalNetwork = PhysicalNetwork
-                .physicalNetwork(physicalNetworkStr);
-        TenantNetwork p1 = new DefaultTenantNetwork(networkid1, name, false,
-                                                    TenantNetwork.State.ACTIVE,
-                                                    false, tenantId, false,
-                                                    TenantNetwork.Type.LOCAL,
-                                                    physicalNetwork,
-                                                    segmentationID);
-        tenantNetworkService.createNetworks(Collections.singletonList(p1));
-
-        expect(driverService.createHandler(deviceId)).andReturn(driverHandler).anyTimes();
-        replay(driverService);
-
-        flowRuleInstaller.installLoadBalancedFlowRules(portChain, fiveTuple, nshSpiId);
-
-        ForwardingObjective forObj = ((FlowObjectiveServiceAdapter) flowObjectiveService).forwardingObjective();
-
-        // Check for Selector
-        assertThat(forObj.selector().getCriterion(Criterion.Type.IN_PORT), instanceOf(PortCriterion.class));
-
-        // Check for treatment
-        List<Instruction> instructions = forObj.treatment().allInstructions();
-        for (Instruction instruction : instructions) {
-            if (instruction.type() == Instruction.Type.OUTPUT) {
-                assertThat(((OutputInstruction) instruction).port(), is(PortNumber.P0));
-            }
-        }
-    }
-}
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/manager/impl/SfcManagerTest.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/manager/impl/SfcManagerTest.java
deleted file mode 100644
index 8deb164..0000000
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/manager/impl/SfcManagerTest.java
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.sfc.manager.impl;
-
-import org.junit.Test;
-
-import java.util.List;
-import java.util.LinkedList;
-
-import org.onlab.packet.IpPrefix;
-import org.onosproject.sfc.manager.SfcService;
-import org.onosproject.vtnrsc.DefaultPortChain;
-import org.onosproject.vtnrsc.DefaultPortPair;
-import org.onosproject.vtnrsc.DefaultPortPairGroup;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortChainId;
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.DefaultFlowClassifier;
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.FlowClassifier;
-
-/**
- * Unit tests for SfcManager class.
- */
-public class SfcManagerTest {
-    /**
-     * Checks the operation of onPortPairCreated() method.
-     */
-    @Test
-    public void testOnPortPairCreated() {
-        final PortPairId portPairId = PortPairId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final TenantId tenantId = TenantId.tenantId("1");
-        final String name = "PortPair";
-        final String description = "PortPair";
-        final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1";
-        final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345";
-        DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder();
-        PortPair portPair = null;
-        SfcService sfcService = new SfcManager();
-
-        // create port pair
-        portPair = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name).setDescription(description)
-                .setIngress(ingress).setEgress(egress).build();
-        sfcService.onPortPairCreated(portPair);
-    }
-
-    /**
-     * Checks the operation of onPortPairDeleted() method.
-     */
-    @Test
-    public void testOnPortPairDeleted() {
-        final PortPairId portPairId = PortPairId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final TenantId tenantId = TenantId.tenantId("1");
-        final String name = "PortPair";
-        final String description = "PortPair";
-        final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1";
-        final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345";
-        DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder();
-        PortPair portPair = null;
-        SfcService sfcService = new SfcManager();
-
-        // create port pair
-        portPair = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name).setDescription(description)
-                .setIngress(ingress).setEgress(egress).build();
-        sfcService.onPortPairDeleted(portPair);
-    }
-
-    /**
-     * Checks the operation of onPortPairGroupCreated() method.
-     */
-    @Test
-    public void testOnPortPairGroupCreated() {
-        final PortPairGroupId portPairGroupId = PortPairGroupId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final TenantId tenantId = TenantId.tenantId("1");
-        final String name = "PortPairGroup";
-        final String description = "PortPairGroup";
-        final List<PortPairId> portPairIdList = new LinkedList<PortPairId>();
-        DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder();
-        PortPairGroup portPairGroup = null;
-        SfcService sfcService = new SfcManager();
-
-        // create port-pair-id list
-        PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairIdList.add(portPairId);
-        portPairId = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairIdList.add(portPairId);
-
-        // create port pair
-        portPairGroup = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId).setName(name)
-                .setDescription(description).setPortPairs(portPairIdList).build();
-        sfcService.onPortPairGroupCreated(portPairGroup);
-    }
-
-    /**
-     * Checks the operation of onPortPairGroupDeleted() method.
-     */
-    @Test
-    public void testOnPortPairGroupDeleted() {
-        final PortPairGroupId portPairGroupId = PortPairGroupId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final TenantId tenantId = TenantId.tenantId("1");
-        final String name = "PortPairGroup";
-        final String description = "PortPairGroup";
-        final List<PortPairId> portPairIdList = new LinkedList<PortPairId>();
-        DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder();
-        PortPairGroup portPairGroup = null;
-        SfcService sfcService = new SfcManager();
-
-        // create port-pair-id list
-        PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairIdList.add(portPairId);
-        portPairId = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairIdList.add(portPairId);
-
-        // create port pair
-        portPairGroup = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId).setName(name)
-                .setDescription(description).setPortPairs(portPairIdList).build();
-        sfcService.onPortPairGroupDeleted(portPairGroup);
-    }
-
-    /**
-     * Checks the operation of onFlowClassifierCreated() method.
-     */
-    @Test
-    public void testOnFlowClassifierCreated() {
-        final String name = "FlowClassifier";
-        final String description = "FlowClassifier";
-        final String ethType = "IPv4";
-        final String protocol = "udp";
-        final int minSrcPortRange = 1024;
-        final int maxSrcPortRange = 5000;
-        final int minDstPortRange = 1024;
-        final int maxDstPortRange = 5000;
-        final FlowClassifierId flowClassifierId = FlowClassifierId.of("71111111-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final TenantId tenantId = TenantId.tenantId("8");
-        final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0");
-        final IpPrefix dstIpPrefix = IpPrefix.valueOf("100.100.100.100/0");
-        final VirtualPortId virtualSrcPort = VirtualPortId.portId("100");
-        final VirtualPortId virtualDstPort = VirtualPortId.portId("200");
-        DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder();
-        FlowClassifier flowClassifier = null;
-        SfcService sfcService = new SfcManager();
-
-        // create flow classifier
-        flowClassifier = flowClassifierBuilder.setFlowClassifierId(flowClassifierId).setTenantId(tenantId)
-                .setName(name).setDescription(description).setEtherType(ethType).setProtocol(protocol)
-                .setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange)
-                .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix)
-                .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build();
-        sfcService.onFlowClassifierCreated(flowClassifier);
-    }
-
-    /**
-     * Checks the operation of onFlowClassifierDeleted() method.
-     */
-    @Test
-    public void testOnFlowClassifierDeleted() {
-        final String name = "FlowClassifier";
-        final String description = "FlowClassifier";
-        final String ethType = "IPv4";
-        final String protocol = "udp";
-        final int minSrcPortRange = 1024;
-        final int maxSrcPortRange = 5000;
-        final int minDstPortRange = 1024;
-        final int maxDstPortRange = 5000;
-        final FlowClassifierId flowClassifierId = FlowClassifierId.of("71111111-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final TenantId tenantId = TenantId.tenantId("8");
-        final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0");
-        final IpPrefix dstIpPrefix = IpPrefix.valueOf("100.100.100.100/0");
-        final VirtualPortId virtualSrcPort = VirtualPortId.portId("100");
-        final VirtualPortId virtualDstPort = VirtualPortId.portId("200");
-        DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder();
-        FlowClassifier flowClassifier = null;
-        SfcService sfcService = new SfcManager();
-
-        // create flow classifier
-        flowClassifier = flowClassifierBuilder.setFlowClassifierId(flowClassifierId).setTenantId(tenantId)
-                .setName(name).setDescription(description).setEtherType(ethType).setProtocol(protocol)
-                .setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange)
-                .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix)
-                .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build();
-        sfcService.onFlowClassifierDeleted(flowClassifier);
-    }
-
-    /**
-     * Checks the operation of onPortChainCreated() method.
-     */
-    @Test
-    public void testOnPortChainCreated() {
-        final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final TenantId tenantId = TenantId.tenantId("1");
-        final String name = "PortChain";
-        final String description = "PortChain";
-        final List<PortPairGroupId> portPairGroupList = new LinkedList<PortPairGroupId>();
-        final List<FlowClassifierId> flowClassifierList = new LinkedList<FlowClassifierId>();
-        DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder();
-        DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder();
-        PortChain portChain = null;
-        SfcService sfcService = new SfcManager();
-
-        // create list of Port Pair Groups.
-        PortPairGroupId portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairGroupList.add(portPairGroupId);
-        portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3af");
-        portPairGroupList.add(portPairGroupId);
-
-        // create list of Flow classifiers.
-        FlowClassifierId flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
-        flowClassifierList.add(flowClassifierId);
-        flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af");
-        flowClassifierList.add(flowClassifierId);
-
-        // create port chain
-        portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name).setDescription(description)
-                .setPortPairGroups(portPairGroupList).setFlowClassifiers(flowClassifierList).build();
-        //sfcService.onPortChainCreated(portChain);
-    }
-
-    /**
-     * Checks the operation of onPortChainDeleted() method.
-     */
-    @Test
-    public void testOnPortChainDeleted() {
-        final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final TenantId tenantId = TenantId.tenantId("1");
-        final String name = "PortChain";
-        final String description = "PortChain";
-        final List<PortPairGroupId> portPairGroupList = new LinkedList<PortPairGroupId>();
-        final List<FlowClassifierId> flowClassifierList = new LinkedList<FlowClassifierId>();
-        DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder();
-        DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder();
-        PortChain portChain = null;
-        SfcService sfcService = new SfcManager();
-
-        // create list of Port Pair Groups.
-        PortPairGroupId portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairGroupList.add(portPairGroupId);
-        portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3af");
-        portPairGroupList.add(portPairGroupId);
-
-        // create list of Flow classifiers.
-        FlowClassifierId flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
-        flowClassifierList.add(flowClassifierId);
-        flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af");
-        flowClassifierList.add(flowClassifierId);
-
-        // create port chain
-        portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name).setDescription(description)
-                .setPortPairGroups(portPairGroupList).setFlowClassifiers(flowClassifierList).build();
-        //sfcService.onPortChainDeleted(portChain);
-    }
-}
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowClassifierAdapter.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowClassifierAdapter.java
deleted file mode 100644
index fbd1527..0000000
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowClassifierAdapter.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfc.util;
-
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.flowclassifier.FlowClassifierListener;
-import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService;
-
-import com.google.common.collect.ImmutableList;
-
-/**
- * Provides implementation of the Flow Classifier Service.
- */
-public class FlowClassifierAdapter implements FlowClassifierService {
-
-    private final ConcurrentMap<FlowClassifierId, FlowClassifier> flowClassifierStore = new ConcurrentHashMap<>();
-
-    @Override
-    public boolean exists(FlowClassifierId id) {
-        return flowClassifierStore.containsKey(id);
-    }
-
-    @Override
-    public int getFlowClassifierCount() {
-        return flowClassifierStore.size();
-    }
-
-    @Override
-    public Iterable<FlowClassifier> getFlowClassifiers() {
-        return ImmutableList.copyOf(flowClassifierStore.values());
-    }
-
-    @Override
-    public FlowClassifier getFlowClassifier(FlowClassifierId id) {
-        return flowClassifierStore.get(id);
-    }
-
-    @Override
-    public boolean createFlowClassifier(FlowClassifier flowClassifier) {
-        FlowClassifierId id = flowClassifier.flowClassifierId();
-
-        flowClassifierStore.put(id, flowClassifier);
-        if (!flowClassifierStore.containsKey(id)) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updateFlowClassifier(FlowClassifier flowClassifier) {
-
-        if (!flowClassifierStore.containsKey(flowClassifier.flowClassifierId())) {
-            return false;
-        }
-
-        flowClassifierStore.put(flowClassifier.flowClassifierId(), flowClassifier);
-
-        if (!flowClassifier.equals(flowClassifierStore.get(flowClassifier.flowClassifierId()))) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removeFlowClassifier(FlowClassifierId id) {
-        return true;
-    }
-
-    @Override
-    public void addListener(FlowClassifierListener listener) {
-    }
-
-    @Override
-    public void removeListener(FlowClassifierListener listener) {
-    }
-}
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockDriverHandler.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockDriverHandler.java
deleted file mode 100644
index c9f1754..0000000
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockDriverHandler.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfc.util;
-
-import org.onosproject.net.behaviour.ExtensionSelectorResolver;
-import org.onosproject.net.behaviour.ExtensionTreatmentResolver;
-import org.onosproject.net.driver.Behaviour;
-import org.onosproject.net.driver.Driver;
-import org.onosproject.net.driver.DriverData;
-import org.onosproject.net.driver.DriverHandler;
-
-public class MockDriverHandler implements DriverHandler {
-
-    @Override
-    public Driver driver() {
-        return null;
-    }
-
-    @Override
-    public DriverData data() {
-        return null;
-    }
-
-    @Override
-    public <T extends Behaviour> T behaviour(Class<T> behaviourClass) {
-        if (behaviourClass == ExtensionSelectorResolver.class) {
-            return (T) new MockExtensionSelectorResolver();
-        } else if (behaviourClass == ExtensionTreatmentResolver.class) {
-            return (T) new MockExtensionTreatmentResolver();
-        }
-        return null;
-    }
-
-    @Override
-    public <T> T get(Class<T> serviceClass) {
-        return null;
-    }
-}
\ No newline at end of file
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelector.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelector.java
deleted file mode 100644
index 914484f..0000000
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelector.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfc.util;
-
-import java.util.List;
-
-import org.onosproject.net.flow.criteria.ExtensionSelector;
-import org.onosproject.net.flow.criteria.ExtensionSelectorType;
-import org.onosproject.net.flow.instructions.ExtensionPropertyException;
-
-public class MockExtensionSelector implements ExtensionSelector {
-
-    private ExtensionSelectorType type;
-
-    public MockExtensionSelector(ExtensionSelectorType type) {
-        this.type = type;
-    }
-
-    @Override
-    public <T> void setPropertyValue(String key, T value) throws ExtensionPropertyException {
-    }
-
-    @Override
-    public <T> T getPropertyValue(String key) throws ExtensionPropertyException {
-        return null;
-    }
-
-    @Override
-    public List<String> getProperties() {
-        return null;
-    }
-
-    @Override
-    public byte[] serialize() {
-        return null;
-    }
-
-    @Override
-    public void deserialize(byte[] data) {
-    }
-
-    @Override
-    public ExtensionSelectorType type() {
-        return type;
-    }
-}
\ No newline at end of file
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelectorResolver.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelectorResolver.java
deleted file mode 100644
index 17ac6aa..0000000
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelectorResolver.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfc.util;
-
-import org.onosproject.net.behaviour.ExtensionSelectorResolver;
-import org.onosproject.net.driver.DriverData;
-import org.onosproject.net.driver.DriverHandler;
-import org.onosproject.net.flow.criteria.ExtensionSelector;
-import org.onosproject.net.flow.criteria.ExtensionSelectorType;
-
-public class MockExtensionSelectorResolver implements ExtensionSelectorResolver {
-
-    @Override
-    public DriverHandler handler() {
-        return null;
-    }
-
-    @Override
-    public void setHandler(DriverHandler handler) {
-    }
-
-    @Override
-    public DriverData data() {
-        return null;
-    }
-
-    @Override
-    public void setData(DriverData data) {
-    }
-
-    @Override
-    public ExtensionSelector getExtensionSelector(ExtensionSelectorType type) {
-        return new MockExtensionSelector(type);
-    }
-}
\ No newline at end of file
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatment.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatment.java
deleted file mode 100644
index 8491616..0000000
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatment.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfc.util;
-
-import java.util.List;
-
-import org.onosproject.net.flow.instructions.ExtensionPropertyException;
-import org.onosproject.net.flow.instructions.ExtensionTreatment;
-import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
-
-public class MockExtensionTreatment implements ExtensionTreatment {
-
-    private ExtensionTreatmentType type;
-
-    public MockExtensionTreatment(ExtensionTreatmentType type) {
-        this.type = type;
-    }
-
-    @Override
-    public <T> void setPropertyValue(String key, T value) throws ExtensionPropertyException {
-    }
-
-    @Override
-    public <T> T getPropertyValue(String key) throws ExtensionPropertyException {
-        return null;
-    }
-
-    @Override
-    public List<String> getProperties() {
-        return null;
-    }
-
-    @Override
-    public byte[] serialize() {
-        return null;
-    }
-
-    @Override
-    public void deserialize(byte[] data) {
-    }
-
-    @Override
-    public ExtensionTreatmentType type() {
-        return type;
-    }
-
-}
\ No newline at end of file
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatmentResolver.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatmentResolver.java
deleted file mode 100644
index c2ec674..0000000
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatmentResolver.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfc.util;
-
-import org.onosproject.net.behaviour.ExtensionTreatmentResolver;
-import org.onosproject.net.driver.DriverData;
-import org.onosproject.net.driver.DriverHandler;
-import org.onosproject.net.flow.instructions.ExtensionTreatment;
-import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
-
-public class MockExtensionTreatmentResolver implements ExtensionTreatmentResolver {
-
-    @Override
-    public DriverHandler handler() {
-        return null;
-    }
-
-    @Override
-    public void setHandler(DriverHandler handler) {
-    }
-
-    @Override
-    public DriverData data() {
-        return null;
-    }
-
-    @Override
-    public void setData(DriverData data) {
-    }
-
-    @Override
-    public ExtensionTreatment getExtensionInstruction(ExtensionTreatmentType type) {
-        return new MockExtensionTreatment(type);
-    }
-
-}
\ No newline at end of file
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortChainAdapter.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortChainAdapter.java
deleted file mode 100644
index ff6920d..0000000
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortChainAdapter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfc.util;
-
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.Collections;
-
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortChainId;
-import org.onosproject.vtnrsc.portchain.PortChainService;
-import org.onosproject.vtnrsc.portchain.PortChainEvent;
-import org.onosproject.vtnrsc.portchain.PortChainListener;
-import org.onosproject.event.AbstractListenerManager;
-
-/**
- * Provides implementation of the portChainService.
- */
-public class PortChainAdapter
-            extends AbstractListenerManager<PortChainEvent, PortChainListener>
-            implements PortChainService {
-
-    private ConcurrentMap<PortChainId, PortChain> portChainStore = new ConcurrentHashMap<>();
-
-    @Override
-    public boolean exists(PortChainId portChainId) {
-        return portChainStore.containsKey(portChainId);
-    }
-
-    @Override
-    public int getPortChainCount() {
-        return portChainStore.size();
-    }
-
-    @Override
-    public Iterable<PortChain> getPortChains() {
-        return Collections.unmodifiableCollection(portChainStore.values());
-    }
-
-    @Override
-    public PortChain getPortChain(PortChainId portChainId) {
-        return portChainStore.get(portChainId);
-    }
-
-    @Override
-    public boolean createPortChain(PortChain portChain) {
-        portChainStore.put(portChain.portChainId(), portChain);
-        if (!portChainStore.containsKey(portChain.portChainId())) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updatePortChain(PortChain portChain) {
-        if (!portChainStore.containsKey(portChain.portChainId())) {
-            return false;
-        }
-
-        portChainStore.put(portChain.portChainId(), portChain);
-
-        if (!portChain.equals(portChainStore.get(portChain.portChainId()))) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removePortChain(PortChainId portChainId) {
-        return true;
-    }
-}
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairAdapter.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairAdapter.java
deleted file mode 100644
index 20e1321..0000000
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairAdapter.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfc.util;
-
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.Collections;
-
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.portpair.PortPairListener;
-import org.onosproject.vtnrsc.portpair.PortPairService;
-
-/**
- * Provides implementation of the portPairService.
- */
-public class PortPairAdapter implements PortPairService {
-
-    private ConcurrentMap<PortPairId, PortPair> portPairStore = new ConcurrentHashMap<>();
-
-    @Override
-    public boolean exists(PortPairId portPairId) {
-        return portPairStore.containsKey(portPairId);
-    }
-
-    @Override
-    public int getPortPairCount() {
-        return portPairStore.size();
-    }
-
-    @Override
-    public Iterable<PortPair> getPortPairs() {
-        return Collections.unmodifiableCollection(portPairStore.values());
-    }
-
-    @Override
-    public PortPair getPortPair(PortPairId portPairId) {
-        return portPairStore.get(portPairId);
-    }
-
-    @Override
-    public boolean createPortPair(PortPair portPair) {
-        portPairStore.put(portPair.portPairId(), portPair);
-        if (!portPairStore.containsKey(portPair.portPairId())) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updatePortPair(PortPair portPair) {
-        if (!portPairStore.containsKey(portPair.portPairId())) {
-            return false;
-        }
-
-        portPairStore.put(portPair.portPairId(), portPair);
-
-        if (!portPair.equals(portPairStore.get(portPair.portPairId()))) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removePortPair(PortPairId portPairId) {
-        return true;
-    }
-
-    @Override
-    public void addListener(PortPairListener listener) {
-    }
-
-    @Override
-    public void removeListener(PortPairListener listener) {
-    }
-}
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairGroupAdapter.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairGroupAdapter.java
deleted file mode 100644
index 5326899..0000000
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairGroupAdapter.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfc.util;
-
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.Collections;
-
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.portpairgroup.PortPairGroupListener;
-import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService;
-
-/**
- * Provides implementation of the portPairGroupService.
- */
-public class PortPairGroupAdapter implements PortPairGroupService {
-
-    private ConcurrentMap<PortPairGroupId, PortPairGroup> portPairGroupStore = new ConcurrentHashMap<>();
-
-    @Override
-    public boolean exists(PortPairGroupId portPairGroupId) {
-        return portPairGroupStore.containsKey(portPairGroupId);
-    }
-
-    @Override
-    public int getPortPairGroupCount() {
-        return portPairGroupStore.size();
-    }
-
-    @Override
-    public Iterable<PortPairGroup> getPortPairGroups() {
-        return Collections.unmodifiableCollection(portPairGroupStore.values());
-    }
-
-    @Override
-    public PortPairGroup getPortPairGroup(PortPairGroupId portPairGroupId) {
-        return portPairGroupStore.get(portPairGroupId);
-    }
-
-    @Override
-    public boolean createPortPairGroup(PortPairGroup portPairGroup) {
-        portPairGroupStore.put(portPairGroup.portPairGroupId(), portPairGroup);
-        if (!portPairGroupStore.containsKey(portPairGroup.portPairGroupId())) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updatePortPairGroup(PortPairGroup portPairGroup) {
-        if (!portPairGroupStore.containsKey(portPairGroup.portPairGroupId())) {
-            return false;
-        }
-
-        portPairGroupStore.put(portPairGroup.portPairGroupId(), portPairGroup);
-
-        if (!portPairGroup.equals(portPairGroupStore.get(portPairGroup.portPairGroupId()))) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removePortPairGroup(PortPairGroupId portPairGroupId) {
-        return true;
-    }
-
-    @Override
-    public void addListener(PortPairGroupListener listener) {
-    }
-
-    @Override
-    public void removeListener(PortPairGroupListener listener) {
-    }
-}
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/TenantNetworkAdapter.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/TenantNetworkAdapter.java
deleted file mode 100644
index 142e4bb..0000000
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/TenantNetworkAdapter.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfc.util;
-
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-import org.onosproject.vtnrsc.TenantNetwork;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-
-import com.google.common.collect.ImmutableList;
-
-/**
- * Provides implementation of the VtnRsc service.
- */
-public class TenantNetworkAdapter implements TenantNetworkService {
-
-    private final ConcurrentMap<TenantNetworkId, TenantNetwork> tenantNetworkStore = new ConcurrentHashMap<>();
-
-    @Override
-    public boolean exists(TenantNetworkId networkId) {
-        return tenantNetworkStore.containsKey(networkId);
-    }
-
-    @Override
-    public int getNetworkCount() {
-        return tenantNetworkStore.size();
-    }
-
-    @Override
-    public Iterable<TenantNetwork> getNetworks() {
-        return ImmutableList.copyOf(tenantNetworkStore.values());
-    }
-
-    @Override
-    public TenantNetwork getNetwork(TenantNetworkId networkId) {
-        return tenantNetworkStore.get(networkId);
-    }
-
-    @Override
-    public boolean createNetworks(Iterable<TenantNetwork> networks) {
-        for (TenantNetwork network : networks) {
-            tenantNetworkStore.put(network.id(), network);
-            if (!tenantNetworkStore.containsKey(network.id())) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updateNetworks(Iterable<TenantNetwork> networks) {
-        return false;
-    }
-
-    @Override
-    public boolean removeNetworks(Iterable<TenantNetworkId> networksIds) {
-        return false;
-    }
-
-}
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VirtualPortAdapter.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VirtualPortAdapter.java
deleted file mode 100644
index ba4fc0e..0000000
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VirtualPortAdapter.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfc.util;
-
-import java.util.Collection;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.DeviceId;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.virtualport.VirtualPortListener;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-
-/**
- * Provides implementation of the VirtualPort APIs.
- */
-public class VirtualPortAdapter implements VirtualPortService {
-
-    protected ConcurrentMap<VirtualPortId, VirtualPort> vPortStore = new ConcurrentHashMap<>();
-
-    @Override
-    public boolean exists(VirtualPortId vPortId) {
-        return vPortStore.containsKey(vPortId);
-    }
-
-    @Override
-    public VirtualPort getPort(VirtualPortId vPortId) {
-        return vPortStore.get(vPortId);
-    }
-
-    @Override
-    public VirtualPort getPort(FixedIp fixedIP) {
-        return null;
-    }
-
-    @Override
-    public VirtualPort getPort(MacAddress mac) {
-        return null;
-    }
-
-    @Override
-    public Collection<VirtualPort> getPorts() {
-        return null;
-    }
-
-    @Override
-    public Collection<VirtualPort> getPorts(TenantNetworkId networkId) {
-        return null;
-    }
-
-    @Override
-    public Collection<VirtualPort> getPorts(TenantId tenantId) {
-        return null;
-    }
-
-    @Override
-    public Collection<VirtualPort> getPorts(DeviceId deviceId) {
-        return null;
-    }
-
-    @Override
-    public VirtualPort getPort(TenantNetworkId networkId, IpAddress ipAddress) {
-        return null;
-    }
-
-    @Override
-    public boolean createPorts(Iterable<VirtualPort> vPorts) {
-        for (VirtualPort vPort : vPorts) {
-            vPortStore.put(vPort.portId(), vPort);
-            if (!vPortStore.containsKey(vPort.portId())) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updatePorts(Iterable<VirtualPort> vPorts) {
-        return true;
-    }
-
-    @Override
-    public boolean removePorts(Iterable<VirtualPortId> vPortIds) {
-        return true;
-    }
-
-    @Override
-    public void addListener(VirtualPortListener listener) {
-    }
-
-    @Override
-    public void removeListener(VirtualPortListener listener) {
-    }
-}
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VtnRscAdapter.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VtnRscAdapter.java
deleted file mode 100644
index 62a4cee..0000000
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VtnRscAdapter.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfc.util;
-
-import java.util.Iterator;
-
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Host;
-import org.onosproject.net.HostId;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantRouter;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.event.VtnRscListener;
-import org.onosproject.vtnrsc.service.VtnRscService;
-
-/**
- * Provides implementation of the VtnRsc service.
- */
-public class VtnRscAdapter implements VtnRscService {
-    @Override
-    public void addListener(VtnRscListener listener) {
-    }
-
-    @Override
-    public void removeListener(VtnRscListener listener) {
-    }
-
-    @Override
-    public SegmentationId getL3vni(TenantId tenantId) {
-        return null;
-    }
-
-    @Override
-    public Iterator<Device> getClassifierOfTenant(TenantId tenantId) {
-        return null;
-    }
-
-    @Override
-    public Iterator<Device> getSffOfTenant(TenantId tenantId) {
-        return null;
-    }
-
-    @Override
-    public MacAddress getGatewayMac(HostId hostId) {
-        return null;
-    }
-
-    @Override
-    public boolean isServiceFunction(VirtualPortId portId) {
-        return false;
-    }
-
-    @Override
-    public DeviceId getSfToSffMaping(VirtualPortId portId) {
-        return DeviceId.deviceId("of:000000000000001");
-    }
-
-    @Override
-    public void addDeviceIdOfOvsMap(VirtualPortId virtualPortId,
-                                    TenantId tenantId, DeviceId deviceId) {
-    }
-
-    @Override
-    public void removeDeviceIdOfOvsMap(Host host, TenantId tenantId,
-                                       DeviceId deviceId) {
-    }
-
-    @Override
-    public SegmentationId getL3vni(TenantRouter tenantRouter) {
-        return null;
-    }
-}
diff --git a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcLink.java b/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcLink.java
deleted file mode 100644
index 6f31752..0000000
--- a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcLink.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfcweb;
-
-import org.onosproject.net.Link;
-import org.onosproject.net.LinkKey;
-import org.onosproject.ui.topo.BiLink;
-import org.onosproject.ui.topo.LinkHighlight;
-import org.onosproject.ui.topo.LinkHighlight.Flavor;
-
-/**
- * Bi-directional link capable of different highlights.
- */
-public class SfcLink extends BiLink {
-
-    private boolean primary = false;
-    private boolean secondary = false;
-
-    public SfcLink(LinkKey key, Link link) {
-        super(key, link);
-    }
-
-    @Override
-    public LinkHighlight highlight(Enum<?> anEnum) {
-        Flavor flavor = primary ? Flavor.PRIMARY_HIGHLIGHT :
-            (secondary ? Flavor.SECONDARY_HIGHLIGHT : Flavor.NO_HIGHLIGHT);
-        return new LinkHighlight(this.linkId(), Flavor.PRIMARY_HIGHLIGHT);
-    }
-}
diff --git a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcLinkMap.java b/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcLinkMap.java
deleted file mode 100644
index d75514e..0000000
--- a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcLinkMap.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfcweb;
-
-import org.onosproject.net.Link;
-import org.onosproject.net.LinkKey;
-import org.onosproject.ui.topo.BiLinkMap;
-
-/**
- * Sfc concrete link map.
- */
-public class SfcLinkMap extends BiLinkMap<SfcLink> {
-    @Override
-    protected SfcLink create(LinkKey linkKey, Link link) {
-        return new SfcLink(linkKey, link);
-    }
-}
diff --git a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovComponent.java b/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovComponent.java
deleted file mode 100644
index ddd6fa2..0000000
--- a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovComponent.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfcweb;
-
-import com.google.common.collect.ImmutableList;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.ui.UiExtension;
-import org.onosproject.ui.UiExtensionService;
-import org.onosproject.ui.UiMessageHandlerFactory;
-import org.onosproject.ui.UiTopoOverlayFactory;
-import org.onosproject.ui.UiView;
-import org.onosproject.ui.UiViewHidden;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-
-/**
- * Skeletal ONOS UI Topology-Overlay application component.
- */
-@Component(immediate = true)
-public class SfcwebUiTopovComponent {
-
-    private static final ClassLoader CL = SfcwebUiTopovComponent.class.getClassLoader();
-    private static final String VIEW_ID = "sfcwebTopov";
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected UiExtensionService uiExtensionService;
-
-    // List of application views
-    private final List<UiView> uiViews = ImmutableList.of(
-            new UiViewHidden(VIEW_ID)
-    );
-
-    // Factory for UI message handlers
-    private final UiMessageHandlerFactory messageHandlerFactory =
-            () -> ImmutableList.of(
-                    new SfcwebUiTopovMessageHandler()
-            );
-
-    // Factory for UI topology overlays
-    private final UiTopoOverlayFactory topoOverlayFactory =
-            () -> ImmutableList.of(
-                    new SfcwebUiTopovOverlay()
-            );
-
-    // Application UI extension
-    protected UiExtension extension =
-            new UiExtension.Builder(CL, uiViews)
-                    .resourcePath(VIEW_ID)
-                    .messageHandlerFactory(messageHandlerFactory)
-                    .topoOverlayFactory(topoOverlayFactory)
-                    .build();
-
-    @Activate
-    protected void activate() {
-        uiExtensionService.register(extension);
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        uiExtensionService.unregister(extension);
-        log.info("Stopped");
-    }
-
-}
diff --git a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovMessageHandler.java b/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovMessageHandler.java
deleted file mode 100644
index 3fa9ec0..0000000
--- a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovMessageHandler.java
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfcweb;
-
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Element;
-import org.onosproject.net.Host;
-import org.onosproject.net.HostId;
-import org.onosproject.net.Link;
-import org.onosproject.net.host.HostService;
-import org.onosproject.net.link.LinkService;
-import org.onosproject.ui.RequestHandler;
-import org.onosproject.ui.UiConnection;
-import org.onosproject.ui.UiMessageHandler;
-import org.onosproject.ui.topo.DeviceHighlight;
-import org.onosproject.ui.topo.Highlights;
-import org.onosproject.ui.topo.HostHighlight;
-import org.onosproject.ui.topo.NodeBadge;
-import org.onosproject.ui.topo.TopoJson;
-import org.onosproject.vtnrsc.FiveTuple;
-import org.onosproject.vtnrsc.LoadBalanceId;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortChainId;
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.portchain.PortChainService;
-import org.onosproject.vtnrsc.portpair.PortPairService;
-import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService;
-import org.onosproject.vtnrsc.service.VtnRscService;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Set;
-import java.util.TimerTask;
-
-import static org.onosproject.net.DefaultEdgeLink.createEdgeLink;
-
-/**
- * SFC web gui topology-overlay message handler.
- */
-public class SfcwebUiTopovMessageHandler extends UiMessageHandler {
-
-    private static final String SAMPLE_TOPOV_DISPLAY_START = "sfcwebTopovDisplayStart";
-    private static final String SAMPLE_TOPOV_DISPLAY_SFC = "showSfcInfo";
-    private static final String SAMPLE_TOPOV_DISPLAY_STOP = "sfcTopovClear";
-    private static final String CONFIG_SFP_MSG = "configSfpMessage";
-    private static final String SAMPLE_TOPOV_SHOW_SFC_PATH = "showSfcPath";
-    private static final String ID = "id";
-    private static final String MODE = "mode";
-    private static final String CLASSIFIER = "CLS";
-    private static final String FORWARDER = "SFF";
-
-    private static final Link[] EMPTY_LINK_SET = new Link[0];
-
-    private enum Mode {
-        IDLE, MOUSE, LINK
-    }
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private HostService hostService;
-    private LinkService linkService;
-    private TimerTask demoTask = null;
-    private Mode currentMode = Mode.IDLE;
-    private Element elementOfNote;
-    private Link[] linkSet = EMPTY_LINK_SET;
-
-    protected PortPairService portPairService;
-    protected VtnRscService vtnRscService;
-    protected VirtualPortService virtualPortService;
-    protected PortChainService portChainService;
-    protected PortPairGroupService portPairGroupService;
-
-    @Override
-    public void init(UiConnection connection, ServiceDirectory directory) {
-        super.init(connection, directory);
-        hostService = directory.get(HostService.class);
-        linkService = directory.get(LinkService.class);
-        portChainService = directory.get(PortChainService.class);
-        portPairService = directory.get(PortPairService.class);
-        portPairGroupService = directory.get(PortPairGroupService.class);
-    }
-
-    @Override
-    protected Collection<RequestHandler> createRequestHandlers() {
-        return ImmutableSet.of(
-                new DisplayStartHandler(),
-                new DisplayStopHandler(),
-                new ConfigSfpMsg()
-        );
-    }
-
-    /**
-     * Handler classes.
-     */
-    private final class DisplayStartHandler extends RequestHandler {
-        public DisplayStartHandler() {
-            super(SAMPLE_TOPOV_DISPLAY_START);
-        }
-
-        @Override
-        public void process(ObjectNode payload) {
-            String mode = string(payload, MODE);
-            PortChainService pcs = get(PortChainService.class);
-            Iterable<PortChain> portChains = pcs.getPortChains();
-            ObjectNode result = objectNode();
-
-            ArrayNode arrayNode = arrayNode();
-
-            for (final PortChain portChain : portChains) {
-                arrayNode.add(portChain.portChainId().value().toString());
-            }
-            result.putArray("a").addAll(arrayNode);
-
-            sendMessage(SAMPLE_TOPOV_DISPLAY_SFC, result);
-        }
-    }
-
-    private final class DisplayStopHandler extends RequestHandler {
-        public DisplayStopHandler() {
-            super(SAMPLE_TOPOV_DISPLAY_STOP);
-        }
-
-        @Override
-        public void process(ObjectNode payload) {
-            log.debug("Stop Display");
-            clearState();
-            clearForMode();
-            cancelTask();
-        }
-    }
-
-    private final class ConfigSfpMsg extends RequestHandler {
-        public ConfigSfpMsg() {
-            super(CONFIG_SFP_MSG);
-        }
-
-        @Override
-        public void process(ObjectNode payload) {
-            String id = string(payload, ID);
-            ServiceDirectory serviceDirectory = new DefaultServiceDirectory();
-            vtnRscService = serviceDirectory.get(VtnRscService.class);
-            virtualPortService = serviceDirectory.get(VirtualPortService.class);
-
-            List<String> sfcPathList = Lists.newArrayList();
-
-            Highlights highlights = new Highlights();
-            SfcLinkMap linkMap = new SfcLinkMap();
-
-            PortChainId portChainId = PortChainId.of(id);
-            boolean portChainIdExist = portChainService.exists(portChainId);
-            if (!portChainIdExist) {
-                log.info("portchain id doesn't exist");
-                return;
-            }
-
-            PortChain portChain = portChainService.getPortChain(portChainId);
-
-            Set<FiveTuple> fiveTupleSet = portChain.getLoadBalanceIdMapKeys();
-            for (FiveTuple fiveTuple : fiveTupleSet) {
-                List<PortPairId> path = portChain.getLoadBalancePath(fiveTuple);
-                LoadBalanceId lbId = portChain.getLoadBalanceId(fiveTuple);
-                ListIterator<PortPairId> pathIterator = path.listIterator();
-
-                // Add source
-                Host srcHost = hostService.getHost(HostId.hostId(fiveTuple.macSrc()));
-
-                HostHighlight hSrc = new HostHighlight(srcHost.id().toString());
-                hSrc.setBadge(NodeBadge.text("SRC"));
-                String sfcPath = "SRC -> ";
-                highlights.add(hSrc);
-
-                DeviceId previousDeviceId = null;
-                while (pathIterator.hasNext()) {
-
-                    PortPairId portPairId = pathIterator.next();
-                    PortPair portPair = portPairService.getPortPair(portPairId);
-                    DeviceId deviceId = vtnRscService.getSfToSffMaping(VirtualPortId.portId(portPair.egress()));
-                    VirtualPort vPort = virtualPortService.getPort(VirtualPortId.portId(portPair.egress()));
-                    MacAddress dstMacAddress = vPort.macAddress();
-                    Host host = hostService.getHost(HostId.hostId(dstMacAddress));
-
-                    addEdgeLinks(linkMap, host);
-                    log.info("before check");
-                    if (previousDeviceId != null) {
-                        log.info("pdid not null");
-                        if (!deviceId.equals(previousDeviceId)) {
-                            // Highlight the link between devices.
-
-                            Link link = getLinkBetweenDevices(deviceId, previousDeviceId);
-                            if (link != null) {
-                                linkMap.add(link);
-                            }
-                        }
-                    }
-
-                    DeviceHighlight dh = new DeviceHighlight(deviceId.toString());
-                    if (portChain.getSfcClassifiers(lbId).contains(deviceId)) {
-                        dh.setBadge(NodeBadge.text(CLASSIFIER));
-                    } else {
-                        dh.setBadge(NodeBadge.text(FORWARDER));
-                    }
-
-                    highlights.add(dh);
-
-                    HostHighlight hhDst = new HostHighlight(host.id().toString());
-                    hhDst.setBadge(NodeBadge.text(portPair.name()));
-                    sfcPath = sfcPath + portPair.name() + "(" + vPort.fixedIps().iterator().next().ip() + ") -> ";
-
-                    if (!portPair.ingress().equals(portPair.egress())) {
-                        MacAddress srcMacAddress = virtualPortService.getPort(VirtualPortId
-                                .portId(portPair.ingress()))
-                                .macAddress();
-                        Host hostSrc = hostService.getHost(HostId.hostId(srcMacAddress));
-                        HostHighlight hhSrc = new HostHighlight(hostSrc.id().toString());
-                        hhSrc.setBadge(NodeBadge.text(portPair.name()));
-                        highlights.add(hhSrc);
-                    }
-                    highlights.add(hhDst);
-                    previousDeviceId = deviceId;
-                }
-
-                // Add destination
-                Host dstHost = hostService.getHost(HostId.hostId(fiveTuple.macDst()));
-
-                HostHighlight hDst = new HostHighlight(dstHost.id().toString());
-                hDst.setBadge(NodeBadge.text("DST"));
-                sfcPath = sfcPath + "DST";
-                highlights.add(hDst);
-                sfcPathList.add(sfcPath);
-            }
-
-            for (SfcLink sfcLink : linkMap.biLinks()) {
-                highlights.add(sfcLink.highlight(null));
-            }
-            sendHighlights(highlights);
-
-            ObjectNode result = objectNode();
-            ArrayNode arrayNode = arrayNode();
-            for (String path : sfcPathList) {
-                arrayNode.add(path);
-            }
-            result.putArray("sfcPathList").addAll(arrayNode);
-
-            sendMessage(SAMPLE_TOPOV_SHOW_SFC_PATH, result);
-        }
-    }
-
-    private Link getLinkBetweenDevices(DeviceId deviceId, DeviceId previousDeviceId) {
-        Set<Link> deviceLinks = linkService.getDeviceEgressLinks(deviceId);
-        Set<Link> previousDeviceLinks = linkService.getDeviceIngressLinks(previousDeviceId);
-        for (Link link : deviceLinks) {
-            previousDeviceLinks.contains(link);
-            return link;
-        }
-        return null;
-    }
-
-    private void addEdgeLinks(SfcLinkMap linkMap, Host host1) {
-        linkMap.add(createEdgeLink(host1, true));
-        linkMap.add(createEdgeLink(host1, false));
-    }
-
-    private synchronized void cancelTask() {
-        if (demoTask != null) {
-            demoTask.cancel();
-            demoTask = null;
-        }
-    }
-
-    private void clearState() {
-        currentMode = Mode.IDLE;
-        elementOfNote = null;
-        linkSet = EMPTY_LINK_SET;
-    }
-
-    private void clearForMode() {
-        sendHighlights(new Highlights());
-    }
-
-    private void sendHighlights(Highlights highlights) {
-        sendMessage(TopoJson.highlightsMessage(highlights));
-    }
-
-}
diff --git a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovOverlay.java b/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovOverlay.java
deleted file mode 100644
index 392d423..0000000
--- a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovOverlay.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.sfcweb;
-
-import org.onlab.packet.MacAddress;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Host;
-import org.onosproject.net.HostId;
-import org.onosproject.net.host.HostService;
-import org.onosproject.ui.UiTopoOverlay;
-import org.onosproject.ui.topo.PropertyPanel;
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.portpair.PortPairService;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-
-/**
- * Our sfcweb topology overlay.
- */
-public class SfcwebUiTopovOverlay extends UiTopoOverlay {
-
-    // NOTE: this must match the ID defined in sfcwebTopov.js
-    private static final String OVERLAY_ID = "SFC-Service-overlay";
-    private static final String MY_DEVICE_TITLE = "SFF specific device details";
-    private static final String MY_HOST_TITLE = "SF specific host details";
-
-    public SfcwebUiTopovOverlay() {
-        super(OVERLAY_ID);
-    }
-
-    @Override
-    public void modifyDeviceDetails(PropertyPanel pp, DeviceId deviceId) {
-        pp.title(MY_DEVICE_TITLE);
-        pp.removeAllProps();
-        pp.addProp("SFF Device Id", deviceId.toString());
-    }
-
-    @Override
-    public void modifyHostDetails(PropertyPanel pp, HostId hostId) {
-        pp.title(MY_HOST_TITLE);
-        pp.removeAllProps();
-        PortPairService portPairService = AbstractShellCommand.get(PortPairService.class);
-        VirtualPortService virtualPortService = AbstractShellCommand.get(VirtualPortService.class);
-        HostService hostService = AbstractShellCommand.get(HostService.class);
-        Iterable<PortPair> portPairs = portPairService.getPortPairs();
-        for (PortPair portPair : portPairs) {
-            VirtualPort vPort = virtualPortService.getPort(VirtualPortId.portId(portPair.ingress()));
-            MacAddress dstMacAddress = vPort.macAddress();
-            Host host = hostService.getHost(HostId.hostId(dstMacAddress));
-            if (hostId.toString().equals(host.id().toString())) {
-                pp.addProp("SF Name", portPair.name());
-                pp.addProp("SF Ip", vPort.fixedIps().iterator().next().ip());
-            }
-        }
-        pp.addProp("SF host Address", hostId.toString());
-    }
-
-}
diff --git a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/package-info.java b/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/package-info.java
deleted file mode 100644
index 3d0d1b1..0000000
--- a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * SFC service topology view overlay.
- */
-package org.onosproject.sfcweb;
diff --git a/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopov.css b/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopov.css
deleted file mode 100644
index 8729afe..0000000
--- a/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopov.css
+++ /dev/null
@@ -1 +0,0 @@
-/* css for sfcweb app topology overlay  */
diff --git a/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopov.html b/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopov.html
deleted file mode 100644
index 4a420ea..0000000
--- a/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopov.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<!-- partial HTML -->
-<div id="ov-sfcweb-topov">
-    <p>This is a hidden view .. just a placeholder to house the javascript</p>
-</div>
diff --git a/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopovDemo.js b/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopovDemo.js
deleted file mode 100644
index ce55be0..0000000
--- a/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopovDemo.js
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/*
- sfc web gui overlay implementation.
- */
-
-(function () {
-    'use strict';
-
-    // injected refs
-    var $log, fs, flash, wss, tds, ds, handlerMap = {};
-
-    // constants
-    var displayStart     = 'sfcwebTopovDisplayStart',
-        showSfcInf       = 'showSfcInfo',
-        clearMessage     = 'sfcTopovClear',
-        configSfpMessage = 'configSfpMessage',
-        sfcPath          = 'showSfcPath' ;
-
-    // internal state
-    var currentMode = null;
-    var sfpInfo;
-
-    // === Main API functions
-
-    function start() {
-        handlerMap[showSfcInf] = showSfcInformation;
-        handlerMap[sfcPath] = showSfcPath;
-        wss.bindHandlers(handlerMap);
-        wss.sendEvent(displayStart);
-    }
-
-    function dOkSfp() {
-        var tdString;
-        var i = 0;
-
-        sfpInfo.a.forEach( function () {
-            var sfpId = d3.select("#sfp-value-id-"+i).property("checked");
-            if (sfpId)
-            {
-                tdString = sfpInfo.a[i];
-            }
-            i++;
-        } );
-
-        if (!tdString) {
-            $log.debug("No SFP ID is selected.");
-        }
-
-       wss.sendEvent(configSfpMessage, {
-            id: tdString
-        });
-
-        flash.flash('SFP ID query:');
-    }
-
-    function dClose() {
-        $log.debug('Dialog Close button clicked (or Esc pressed)');
-    }
-
-    function createUserTextSfp(data) {
-        console.log(data);
-
-        var content = ds.createDiv();
-        var form = content.append('form');
-        var p = form.append('p');
-        var i = 0;
-
-        p.append('span').text('SFP IDs');
-        p.append('br');
-        sfpInfo = data;
-        data.a.forEach( function () {
-
-            p.append('input').attr({
-                id: 'sfp-value-id-'+i,
-                type: 'radio',
-                name: 'sfp-id-name',
-                value: data.a[i]
-            });
-
-            p.append('span').text(data.a[i]);
-            p.append('br');
-            i++;
-        } );
-
-        return content;
-    }
-
-    function showSfcInformation(data) {
-        tds.openDialog()
-            .setTitle('List of active service functions')
-            .addContent(createUserTextSfp(data))
-            .addOk(dOkSfp, 'Select SFP ID')
-            .addCancel(dClose, 'Close')
-            .bindKeys();
-
-    }
-
-    function createSfcPathText(data) {
-
-        var content = ds.createDiv();
-        var form = content.append('form');
-        var p = form.append('p');
-        var i = 0;
-
-        p.append('span').text('SFC Path');
-        p.append('br');
-        data.sfcPathList.forEach( function (val, idx) {
-            p.append('span').text(val);
-            p.append('br')
-        } );
-
-        return content;
-    }
-
-    function showSfcPath(data) {
-        tds.openDialog()
-            .setTitle('Service function path')
-            .addContent(createSfcPathText(data))
-            .addCancel(dClose, 'Close')
-            .bindKeys();
-    }
-
-    function clear() {
-        wss.sendEvent(clearMessage);
-        flash.flash('Cleared SFC overlay');
-    }
-
-    // === ---------------------------
-    // === Module Factory Definition
-    angular.module('ovSfcwebTopov', [])
-        .factory('SfcwebTopovDemoService',
-        ['$log', 'FnService', 'FlashService', 'WebSocketService', 'TopoDialogService', 'DialogService',
-        function (_$log_, _fs_, _flash_, _wss_, _tds_, _ds_) {
-            $log = _$log_;
-            fs = _fs_;
-            flash = _flash_;
-            wss = _wss_;
-            tds = _tds_;
-            ds = _ds_;
-            return {
-                start: start,
-                showSfcInformation: showSfcInformation,
-                showSfcPath : showSfcPath,
-                clear: clear
-            };
-        }]);
-
-}());
diff --git a/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopovOverlay.js b/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopovOverlay.js
deleted file mode 100644
index 5f5c118..0000000
--- a/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopovOverlay.js
+++ /dev/null
@@ -1,71 +0,0 @@
-// sfcweb topology overlay - client side
-//
-// This is the glue that binds our business logic (in sfcwebTopovDemo.js)
-// to the overlay framework.
-
-(function () {
-    'use strict';
-
-    // injected refs
-    var $log, tov, pps;
-    var longPrefix = 'M15.9,19.1h-8v-13h8V19.1z M90.5,6.1H75.6v13h14.9V6.1' +
-            'z M71.9,6.1H56.9v13h14.9V6.1z M53.2,6.1H38.3v13h14.9V6.1z M34.5,' +
-            '6.1H19.6v13h14.9V6.1z M102.2,6.1h-8v13h8V6.1z' ;
-
-    // our overlay definition
-    var overlay = {
-        // NOTE: this must match the ID defined in SfcWebUiTopovOverlay
-        overlayId: 'SFC-Service-overlay',
-        glyphId: '*star4',
-        tooltip: 'SFC web service Topo Overlay',
-
-        // These glyphs get installed using the overlayId as a prefix.
-        // e.g. 'star4' is installed as 'meowster-overlay-star4'
-        // They can be referenced (from this overlay) as '*star4'
-        // That is, the '*' prefix stands in for 'meowster-overlay-'
-        glyphs: {
-            star4: {
-                vb: '0 0 8 8',
-                d: 'M1,4l2,-1l1,-2l1,2l2,1l-2,1l-1,2l-1,-2z'
-            }
-        },
-        activate: function () {
-            $log.debug("SFC service topology overlay ACTIVATED");
-        },
-        deactivate: function () {
-            pps.clear();
-            $log.debug("SFC service topology overlay DEACTIVATED");
-        },
-
-        // Key bindings for traffic overlay buttons
-        // NOTE: fully qual. button ID is derived from overlay-id and key-name
-        // FIXME: find better keys for shortest paths & disjoint paths modes
-        keyBindings: {
-            4: {
-                cb: function () {
-                    pps.start();
-                },
-                tt: 'Query SFP active list information',
-                gid: 'summary'
-            },
-
-            _keyOrder: [
-                '4'
-            ]
-        }
-
-    };
-
-    // invoke code to register with the overlay service
-    angular.module('ovSfcwebTopov')
-        .run(['$log', 'TopoOverlayService', 'SfcwebTopovDemoService',
-
-        function (_$log_, _tov_, _pps_) {
-            $log = _$log_;
-            tov = _tov_;
-            pps = _pps_;
-            tov.register(overlay);
-            $log.debug('ovSfcwebTopov run');
-        }]);
-
-}());
diff --git a/apps/vtn/sfcweb/src/main/resources/sfcwebTopov/css.html b/apps/vtn/sfcweb/src/main/resources/sfcwebTopov/css.html
deleted file mode 100644
index 4e201d7..0000000
--- a/apps/vtn/sfcweb/src/main/resources/sfcwebTopov/css.html
+++ /dev/null
@@ -1 +0,0 @@
-<link rel="stylesheet" href="app/view/sfcwebTopov/sfcwebTopov.css">
\ No newline at end of file
diff --git a/apps/vtn/sfcweb/src/main/resources/sfcwebTopov/js.html b/apps/vtn/sfcweb/src/main/resources/sfcwebTopov/js.html
deleted file mode 100644
index 4a6ab75..0000000
--- a/apps/vtn/sfcweb/src/main/resources/sfcwebTopov/js.html
+++ /dev/null
@@ -1,2 +0,0 @@
-<script src="app/view/sfcwebTopov/sfcwebTopovDemo.js"></script>
-<script src="app/view/sfcwebTopov/sfcwebTopovOverlay.js"></script>
diff --git a/apps/vtn/vtnmgr/BUILD b/apps/vtn/vtnmgr/BUILD
deleted file mode 100644
index d399cdc..0000000
--- a/apps/vtn/vtnmgr/BUILD
+++ /dev/null
@@ -1,11 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + JACKSON + KRYO + CLI + [
-    "//core/store/serializers:onos-core-serializers",
-    "//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc",
-]
-
-osgi_jar_with_tests(
-    karaf_command_packages = ["org.onosproject.vtn.cli"],
-    resources = glob(["src/main/resources/**"]),
-    resources_root = "src/main/resources",
-    deps = COMPILE_DEPS,
-)
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/cli/VtnCommand.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/cli/VtnCommand.java
deleted file mode 100644
index 1fed65f..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/cli/VtnCommand.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.cli;
-
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtn.manager.impl.VtnManager;
-
-/**
- * Supports for updating the external gateway virtualPort.
- */
-@Service
-@Command(scope = "onos", name = "externalportname-set",
-        description = "Supports for setting the external port name.")
-public class VtnCommand extends AbstractShellCommand {
-
-    @Option(name = "-n", aliases = "--name", description = "external port name.", required = true,
-            multiValued = false)
-    String exPortName = "";
-
-    @Override
-    protected void doExecute() {
-        VtnManager.setExPortName(exPortName);
-    }
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/cli/package-info.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/cli/package-info.java
deleted file mode 100644
index 64ac33d..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/cli/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * VTN application that applies configuration and flows to the device.
- */
-package org.onosproject.vtn.cli;
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/VtnService.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/VtnService.java
deleted file mode 100644
index caec3fa..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/VtnService.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.manager;
-
-import org.onosproject.net.Device;
-import org.onosproject.net.Host;
-import org.onosproject.vtnrsc.event.VtnRscEventFeedback;
-
-/**
- * VTN application that applies configuration and flows to the device.
- */
-public interface VtnService {
-
-    /**
-     * Creates a vxlan tunnel and creates the ovs when a ovs controller node is
-     * detected.
-     *
-     * @param device controller-type device
-     */
-    void onControllerDetected(Device device);
-
-    /**
-     * Drops a vxlan tunnel and drops the ovs when a ovs controller node is
-     * vanished.
-     *
-     * @param device controller-type device
-     */
-    void onControllerVanished(Device device);
-
-    /**
-     * Applies default forwarding flows when a ovs is detected.
-     *
-     * @param device switch-type device
-     */
-    void onOvsDetected(Device device);
-
-    /**
-     * Remove default forwarding flows when a ovs is vanished.
-     *
-     * @param device switch-type device
-     */
-    void onOvsVanished(Device device);
-
-    /**
-     * Applies multicast flows and tunnel flows when a VM is detected.
-     *
-     * @param host a VM
-     */
-    void onHostDetected(Host host);
-
-    /**
-     * Remove multicast flows and tunnel flows when a VM is vanished.
-     *
-     * @param host a VM
-     */
-    void onHostVanished(Host host);
-
-    /**
-     * Applies east west flows when neutron created router interface.
-     *
-     * @param l3Feedback VtnrscEventFeedback
-     */
-    void onRouterInterfaceDetected(VtnRscEventFeedback l3Feedback);
-
-    /**
-     * Remove east west flows when neutron removed router interface.
-     *
-     * @param l3Feedback VtnrscEventFeedback
-     */
-    void onRouterInterfaceVanished(VtnRscEventFeedback l3Feedback);
-
-    /**
-     * Applies north south flows when neutron bind floating ip.
-     *
-     * @param l3Feedback VtnrscEventFeedback
-     */
-    void onFloatingIpDetected(VtnRscEventFeedback l3Feedback);
-
-    /**
-     * Applies north south flows when neutron unbind floating ip.
-     *
-     * @param l3Feedback VtnrscEventFeedback
-     */
-    void onFloatingIpVanished(VtnRscEventFeedback l3Feedback);
-
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/impl/VtnManager.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/impl/VtnManager.java
deleted file mode 100644
index 427aba8..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/impl/VtnManager.java
+++ /dev/null
@@ -1,1657 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.manager.impl;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-import org.onlab.packet.ARP;
-import org.onlab.packet.Ethernet;
-import org.onlab.packet.IPv4;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.mastership.MastershipService;
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Host;
-import org.onosproject.net.HostId;
-import org.onosproject.net.Port;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.behaviour.BridgeConfig;
-import org.onosproject.net.behaviour.BridgeDescription;
-import org.onosproject.net.behaviour.ExtensionTreatmentResolver;
-import org.onosproject.net.config.NetworkConfigService;
-import org.onosproject.net.config.basics.BasicDeviceConfig;
-import org.onosproject.net.config.basics.BasicHostConfig;
-import org.onosproject.net.device.DeviceEvent;
-import org.onosproject.net.device.DeviceListener;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.driver.DriverHandler;
-import org.onosproject.net.driver.DriverService;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.FlowEntry;
-import org.onosproject.net.flow.FlowRuleService;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flow.TrafficTreatment.Builder;
-import org.onosproject.net.flow.criteria.Criterion;
-import org.onosproject.net.flow.instructions.ExtensionTreatment;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.net.group.DefaultGroupBucket;
-import org.onosproject.net.group.DefaultGroupDescription;
-import org.onosproject.net.group.DefaultGroupKey;
-import org.onosproject.net.group.GroupBucket;
-import org.onosproject.net.group.GroupBuckets;
-import org.onosproject.net.group.GroupDescription;
-import org.onosproject.net.group.GroupKey;
-import org.onosproject.net.group.GroupService;
-import org.onosproject.net.host.HostEvent;
-import org.onosproject.net.host.HostListener;
-import org.onosproject.net.host.HostService;
-import org.onosproject.net.packet.DefaultOutboundPacket;
-import org.onosproject.net.packet.InboundPacket;
-import org.onosproject.net.packet.OutboundPacket;
-import org.onosproject.net.packet.PacketContext;
-import org.onosproject.net.packet.PacketProcessor;
-import org.onosproject.net.packet.PacketService;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.ConsistentMap;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.LogicalClockService;
-import org.onosproject.store.service.Serializer;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.Versioned;
-import org.onosproject.vtn.manager.VtnService;
-import org.onosproject.vtn.table.ArpService;
-import org.onosproject.vtn.table.ClassifierService;
-import org.onosproject.vtn.table.DnatService;
-import org.onosproject.vtn.table.L2ForwardService;
-import org.onosproject.vtn.table.L3ForwardService;
-import org.onosproject.vtn.table.SnatService;
-import org.onosproject.vtn.table.impl.ArpServiceImpl;
-import org.onosproject.vtn.table.impl.ClassifierServiceImpl;
-import org.onosproject.vtn.table.impl.DnatServiceImpl;
-import org.onosproject.vtn.table.impl.L2ForwardServiceImpl;
-import org.onosproject.vtn.table.impl.L3ForwardServiceImpl;
-import org.onosproject.vtn.table.impl.SnatServiceImpl;
-import org.onosproject.vtn.util.DataPathIdGenerator;
-import org.onosproject.vtn.util.IpUtil;
-import org.onosproject.vtn.util.VtnConfig;
-import org.onosproject.vtn.util.VtnData;
-import org.onosproject.vtnrsc.AllowedAddressPair;
-import org.onosproject.vtnrsc.BindingHostId;
-import org.onosproject.vtnrsc.DefaultFloatingIp;
-import org.onosproject.vtnrsc.DefaultVirtualPort;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.FloatingIp;
-import org.onosproject.vtnrsc.FloatingIpId;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.RouterInterface;
-import org.onosproject.vtnrsc.SecurityGroup;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.onosproject.vtnrsc.Subnet;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetwork;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.TenantRouter;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.event.VtnRscEvent;
-import org.onosproject.vtnrsc.event.VtnRscEventFeedback;
-import org.onosproject.vtnrsc.event.VtnRscListener;
-import org.onosproject.vtnrsc.floatingip.FloatingIpService;
-import org.onosproject.vtnrsc.routerinterface.RouterInterfaceService;
-import org.onosproject.vtnrsc.service.VtnRscService;
-import org.onosproject.vtnrsc.subnet.SubnetService;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Collectors;
-
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_TUNNEL_DST;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provides implementation of VTNService.
- */
-@Component(immediate = true, service = VtnService.class)
-public class VtnManager implements VtnService {
-    private final Logger log = getLogger(getClass());
-    private static final String APP_ID = "org.onosproject.app.vtn";
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigService configService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceService deviceService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected HostService hostService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TenantNetworkService tenantNetworkService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected VirtualPortService virtualPortService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DriverService driverService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LogicalClockService clockService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected MastershipService mastershipService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected GroupService groupService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected SubnetService subnetService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected VtnRscService vtnRscService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected FloatingIpService floatingIpService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected RouterInterfaceService routerInterfaceService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected FlowRuleService flowRuleService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigService networkConfigService;
-
-    private ApplicationId appId;
-    private ClassifierService classifierService;
-    private L2ForwardService l2ForwardService;
-    private ArpService arpService;
-    private L3ForwardService l3ForwardService;
-    private SnatService snatService;
-    private DnatService dnatService;
-
-    private final HostListener hostListener = new InnerHostListener();
-    private final DeviceListener deviceListener = new InnerDeviceListener();
-    private final VtnRscListener l3EventListener = new VtnL3EventListener();
-
-    private static final String EX_PORT_KEY = "exPortKey";
-    private static final String IFACEID = "ifaceid";
-    private static final String CONTROLLER_IP_KEY = "ipaddress";
-    public static final String DRIVER_NAME = "onosfw";
-    private static final String VIRTUALPORT = "vtn-virtual-port";
-    private static final String SWITCHES_OF_CONTROLLER = "switchesOfController";
-    private static final String SWITCH_OF_LOCAL_HOST_PORTS = "switchOfLocalHostPorts";
-    private static final String ROUTERINF_FLAG_OF_TENANTROUTER = "routerInfFlagOfTenantRouter";
-    private static final String HOSTS_OF_SUBNET = "hostsOfSubnet";
-    private static final String EX_PORT_OF_DEVICE = "exPortOfDevice";
-    private static final String EX_PORT_MAP = "exPortMap";
-    private static final String DEFAULT_IP = "0.0.0.0";
-    private static final String FLOATINGSTORE = "vtn-floatingIp";
-    private static final String USERDATA_IP = "169.254.169.254";
-    private static final int SUBNET_NUM = 2;
-    private static final int SNAT_TABLE = 40;
-    private static final int SNAT_DEFAULT_RULE_PRIORITY = 0;
-    private static final byte[] ZERO_MAC_ADDRESS = MacAddress.ZERO.toBytes();
-
-    private EventuallyConsistentMap<VirtualPortId, VirtualPort> vPortStore;
-    private EventuallyConsistentMap<IpAddress, Boolean> switchesOfController;
-    private EventuallyConsistentMap<DeviceId, NetworkOfLocalHostPorts> switchOfLocalHostPorts;
-    private EventuallyConsistentMap<SubnetId, Map<HostId, Host>> hostsOfSubnet;
-    private EventuallyConsistentMap<TenantRouter, Boolean> routerInfFlagOfTenantRouter;
-    private EventuallyConsistentMap<DeviceId, Port> exPortOfDevice;
-    private EventuallyConsistentMap<IpAddress, FloatingIp> floatingIpStore;
-    private static ConsistentMap<String, String> exPortMap;
-
-    private VtnL3PacketProcessor l3PacketProcessor = new VtnL3PacketProcessor();
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PacketService packetService;
-
-    @Activate
-    public void activate() {
-        appId = coreService.registerApplication(APP_ID);
-        classifierService = new ClassifierServiceImpl(appId);
-        l2ForwardService = new L2ForwardServiceImpl(appId);
-        arpService = new ArpServiceImpl(appId);
-        l3ForwardService = new L3ForwardServiceImpl(appId);
-        snatService = new SnatServiceImpl(appId);
-        dnatService = new DnatServiceImpl(appId);
-
-        deviceService.addListener(deviceListener);
-        hostService.addListener(hostListener);
-        vtnRscService.addListener(l3EventListener);
-
-        KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
-                                .register(KryoNamespaces.API)
-                                .register(NetworkOfLocalHostPorts.class)
-                                .register(TenantNetworkId.class)
-                                .register(Host.class)
-                                .register(TenantNetwork.class)
-                                .register(TenantNetworkId.class)
-                                .register(TenantId.class)
-                                .register(SubnetId.class)
-                                .register(VirtualPortId.class)
-                                .register(VirtualPort.State.class)
-                                .register(AllowedAddressPair.class)
-                                .register(FixedIp.class)
-                                .register(FloatingIp.class)
-                                .register(FloatingIpId.class)
-                                .register(FloatingIp.Status.class)
-                                .register(UUID.class)
-                                .register(DefaultFloatingIp.class)
-                                .register(BindingHostId.class)
-                                .register(SecurityGroup.class)
-                                .register(IpAddress.class)
-                                .register(DefaultVirtualPort.class)
-                                .register(RouterId.class)
-                                .register(TenantRouter.class);
-        floatingIpStore = storageService
-                .<IpAddress, FloatingIp>eventuallyConsistentMapBuilder()
-                .withName(FLOATINGSTORE).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> clockService.getTimestamp())
-                .build();
-
-        vPortStore = storageService
-                .<VirtualPortId, VirtualPort>eventuallyConsistentMapBuilder()
-                .withName(VIRTUALPORT).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> clockService.getTimestamp())
-                .build();
-
-        switchesOfController = storageService
-                .<IpAddress, Boolean>eventuallyConsistentMapBuilder()
-                .withName(SWITCHES_OF_CONTROLLER).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> clockService.getTimestamp())
-                .build();
-
-        switchOfLocalHostPorts = storageService
-                .<DeviceId, NetworkOfLocalHostPorts>eventuallyConsistentMapBuilder()
-                .withName(SWITCH_OF_LOCAL_HOST_PORTS).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> clockService.getTimestamp())
-                .build();
-
-        hostsOfSubnet = storageService
-                .<SubnetId, Map<HostId, Host>>eventuallyConsistentMapBuilder()
-                .withName(HOSTS_OF_SUBNET).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> clockService.getTimestamp())
-                .build();
-
-        routerInfFlagOfTenantRouter = storageService
-                .<TenantRouter, Boolean>eventuallyConsistentMapBuilder()
-                .withName(ROUTERINF_FLAG_OF_TENANTROUTER).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> clockService.getTimestamp())
-                .build();
-
-        exPortOfDevice = storageService
-                .<DeviceId, Port>eventuallyConsistentMapBuilder()
-                .withName(EX_PORT_OF_DEVICE).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> clockService.getTimestamp())
-                .build();
-
-        exPortMap = storageService
-                .<String, String>consistentMapBuilder()
-                .withName(EX_PORT_MAP)
-                .withApplicationId(appId)
-                .withPurgeOnUninstall()
-                .withSerializer(Serializer.using(Arrays.asList(KryoNamespaces.API)))
-                .build();
-
-        packetService.addProcessor(l3PacketProcessor, PacketProcessor.director(0));
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        deviceService.removeListener(deviceListener);
-        hostService.removeListener(hostListener);
-        vtnRscService.removeListener(l3EventListener);
-        log.info("Stopped");
-    }
-
-    @Override
-    public void onControllerDetected(Device controllerDevice) {
-        if (controllerDevice == null) {
-            log.error("The controller device is null");
-            return;
-        }
-        String localIpAddress = controllerDevice.annotations()
-                .value(CONTROLLER_IP_KEY);
-        IpAddress localIp = IpAddress.valueOf(localIpAddress);
-        DeviceId controllerDeviceId = controllerDevice.id();
-        DriverHandler handler = driverService.createHandler(controllerDeviceId);
-        if (mastershipService.isLocalMaster(controllerDeviceId)) {
-            // Get DataPathIdGenerator
-            String ipaddress = controllerDevice.annotations().value("ipaddress");
-            DataPathIdGenerator dpidGenerator = DataPathIdGenerator.builder()
-                                            .addIpAddress(ipaddress).build();
-            DeviceId deviceId = dpidGenerator.getDeviceId();
-            String dpid = dpidGenerator.getDpId();
-            // Inject pipeline driver name
-            BasicDeviceConfig config = configService.addConfig(deviceId,
-                                                               BasicDeviceConfig.class);
-            config.driver(DRIVER_NAME);
-            configService.applyConfig(deviceId, BasicDeviceConfig.class, config.node());
-            // Add Bridge
-            Versioned<String> exPortVersioned = exPortMap.get(EX_PORT_KEY);
-            if (exPortVersioned != null) {
-                VtnConfig.applyBridgeConfig(handler, dpid, exPortVersioned.value());
-                log.info("A new ovs is created in node {}", localIp.toString());
-            }
-            switchesOfController.put(localIp, true);
-        }
-        // Create tunnel in br-int on all controllers
-        programTunnelConfig(controllerDeviceId, localIp, handler);
-    }
-
-    @Override
-    public void onControllerVanished(Device controllerDevice) {
-        if (controllerDevice == null) {
-            log.error("The device is null");
-            return;
-        }
-        String dstIp = controllerDevice.annotations().value(CONTROLLER_IP_KEY);
-        IpAddress dstIpAddress = IpAddress.valueOf(dstIp);
-        DeviceId controllerDeviceId = controllerDevice.id();
-        if (mastershipService.isLocalMaster(controllerDeviceId)) {
-            switchesOfController.remove(dstIpAddress);
-        }
-    }
-
-    @Override
-    public void onOvsDetected(Device device) {
-        if (device == null) {
-            log.error("The device is null");
-            return;
-        }
-        if (!mastershipService.isLocalMaster(device.id())) {
-            return;
-        }
-        // Create tunnel out flow rules
-        applyTunnelOut(device, Objective.Operation.ADD);
-        // apply L3 arp flows
-        Iterable<RouterInterface> interfaces = routerInterfaceService
-                .getRouterInterfaces();
-        interfaces.forEach(routerInf -> {
-            VirtualPort gwPort = virtualPortService.getPort(routerInf.portId());
-            if (gwPort == null) {
-                gwPort = VtnData.getPort(vPortStore, routerInf.portId());
-            }
-            applyL3ArpFlows(device.id(), gwPort, Objective.Operation.ADD);
-        });
-    }
-
-    @Override
-    public void onOvsVanished(Device device) {
-        if (device == null) {
-            log.error("The device is null");
-            return;
-        }
-        if (!mastershipService.isLocalMaster(device.id())) {
-            return;
-        }
-        // Remove Tunnel out flow rules
-        applyTunnelOut(device, Objective.Operation.REMOVE);
-        // apply L3 arp flows
-        Iterable<RouterInterface> interfaces = routerInterfaceService
-                .getRouterInterfaces();
-        interfaces.forEach(routerInf -> {
-            VirtualPort gwPort = virtualPortService.getPort(routerInf.portId());
-            if (gwPort == null) {
-                gwPort = VtnData.getPort(vPortStore, routerInf.portId());
-            }
-            applyL3ArpFlows(device.id(), gwPort, Objective.Operation.REMOVE);
-        });
-    }
-
-    @Override
-    public void onHostDetected(Host host) {
-        DeviceId deviceId = host.location().deviceId();
-        if (!mastershipService.isLocalMaster(deviceId)) {
-            return;
-        }
-        String ifaceId = host.annotations().value(IFACEID);
-        if (ifaceId == null) {
-            log.error("The ifaceId of Host is null");
-            return;
-        }
-        programSffAndClassifierHost(host, Objective.Operation.ADD);
-        // apply L2 openflow rules
-        applyHostMonitoredL2Rules(host, Objective.Operation.ADD);
-        // apply L3 openflow rules
-        applyHostMonitoredL3Rules(host, Objective.Operation.ADD);
-    }
-
-    @Override
-    public void onHostVanished(Host host) {
-        DeviceId deviceId = host.location().deviceId();
-        if (!mastershipService.isLocalMaster(deviceId)) {
-            return;
-        }
-        String ifaceId = host.annotations().value(IFACEID);
-        if (ifaceId == null) {
-            log.error("The ifaceId of Host is null");
-            return;
-        }
-        programSffAndClassifierHost(host, Objective.Operation.REMOVE);
-        // apply L2 openflow rules
-        applyHostMonitoredL2Rules(host, Objective.Operation.REMOVE);
-        // apply L3 openflow rules
-        applyHostMonitoredL3Rules(host, Objective.Operation.REMOVE);
-        VirtualPortId virtualPortId = VirtualPortId.portId(ifaceId);
-        vPortStore.remove(virtualPortId);
-    }
-
-    private void programTunnelConfig(DeviceId localDeviceId, IpAddress localIp,
-                                     DriverHandler localHandler) {
-        if (mastershipService.isLocalMaster(localDeviceId)) {
-            VtnConfig.applyTunnelConfig(localHandler, localIp);
-            log.info("Add tunnel on {}", localIp);
-        }
-    }
-
-    private void applyTunnelOut(Device device, Objective.Operation type) {
-        String controllerIp = VtnData.getControllerIpOfSwitch(device);
-        if (controllerIp == null) {
-            log.error("Can't find controller of device: {}",
-                      device.id().toString());
-            return;
-        }
-        IpAddress ipAddress = IpAddress.valueOf(controllerIp);
-        if (!switchesOfController.containsKey(ipAddress)) {
-            log.error("Can't find controller of device: {}",
-                      device.id().toString());
-            return;
-        }
-        if (type == Objective.Operation.ADD) {
-            // Save external port
-            Port export = getExPort(device.id());
-            if (export != null) {
-                classifierService.programExportPortArpClassifierRules(export,
-                                                                      device.id(),
-                                                                      type);
-                exPortOfDevice.put(device.id(), export);
-            }
-            switchOfLocalHostPorts.put(device.id(), new NetworkOfLocalHostPorts());
-        } else if (type == Objective.Operation.REMOVE) {
-            exPortOfDevice.remove(device.id());
-            switchOfLocalHostPorts.remove(device.id());
-        }
-        Iterable<Device> devices = deviceService.getAvailableDevices();
-        DeviceId localControllerId = VtnData.getControllerId(device, devices);
-        DriverHandler handler = driverService.createHandler(localControllerId);
-        Set<PortNumber> ports = VtnConfig.getPortNumbers(handler);
-        Iterable<Host> allHosts = hostService.getHosts();
-        String tunnelName = "vxlan-" + DEFAULT_IP;
-        if (allHosts != null) {
-            Sets.newHashSet(allHosts).forEach(host -> {
-                MacAddress hostMac = host.mac();
-                String ifaceId = host.annotations().value(IFACEID);
-                if (ifaceId == null) {
-                    log.error("The ifaceId of Host is null");
-                    return;
-                }
-                VirtualPortId virtualPortId = VirtualPortId.portId(ifaceId);
-                VirtualPort virtualPort = virtualPortService
-                        .getPort(virtualPortId);
-                TenantNetwork network = tenantNetworkService
-                        .getNetwork(virtualPort.networkId());
-                SegmentationId segmentationId = network.segmentationId();
-                DeviceId remoteDeviceId = host.location().deviceId();
-                Device remoteDevice = deviceService.getDevice(remoteDeviceId);
-                String remoteControllerIp = VtnData
-                        .getControllerIpOfSwitch(remoteDevice);
-                if (remoteControllerIp == null) {
-                    log.error("Can't find remote controller of device: {}",
-                            remoteDeviceId.toString());
-                    return;
-                }
-                IpAddress remoteIpAddress = IpAddress
-                        .valueOf(remoteControllerIp);
-                ports.stream()
-                        .filter(p -> p.name().equalsIgnoreCase(tunnelName))
-                        .forEach(p -> {
-                            l2ForwardService
-                                    .programTunnelOut(device.id(), segmentationId, p,
-                                            hostMac, type, remoteIpAddress);
-                        });
-            });
-        }
-    }
-
-    private void programSffAndClassifierHost(Host host, Objective.Operation type) {
-        DeviceId deviceId = host.location().deviceId();
-        String ifaceId = host.annotations().value(IFACEID);
-        VirtualPortId virtualPortId = VirtualPortId.portId(ifaceId);
-        VirtualPort virtualPort = virtualPortService.getPort(virtualPortId);
-        if (virtualPort == null) {
-            virtualPort = VtnData.getPort(vPortStore, virtualPortId);
-        }
-        TenantId tenantId = virtualPort.tenantId();
-        if (Objective.Operation.ADD == type) {
-            vtnRscService.addDeviceIdOfOvsMap(virtualPortId, tenantId, deviceId);
-        } else if (Objective.Operation.REMOVE == type) {
-            vtnRscService.removeDeviceIdOfOvsMap(host, tenantId, deviceId);
-        }
-    }
-
-    private void applyHostMonitoredL2Rules(Host host, Objective.Operation type) {
-        DeviceId deviceId = host.location().deviceId();
-        if (!mastershipService.isLocalMaster(deviceId)) {
-            return;
-        }
-        String ifaceId = host.annotations().value(IFACEID);
-        if (ifaceId == null) {
-            log.error("The ifaceId of Host is null");
-            return;
-        }
-        VirtualPortId virtualPortId = VirtualPortId.portId(ifaceId);
-        VirtualPort virtualPort = virtualPortService.getPort(virtualPortId);
-        if (virtualPort == null) {
-            virtualPort = VtnData.getPort(vPortStore, virtualPortId);
-        }
-        Iterator<FixedIp> fixip = virtualPort.fixedIps().iterator();
-        SubnetId subnetId = null;
-        if (fixip.hasNext()) {
-            subnetId = fixip.next().subnetId();
-        }
-        if (subnetId != null) {
-            Map<HostId, Host> hosts = new ConcurrentHashMap();
-            if (hostsOfSubnet.get(subnetId) != null) {
-                hosts = hostsOfSubnet.get(subnetId);
-            }
-            if (type == Objective.Operation.ADD) {
-                hosts.put(host.id(), host);
-                hostsOfSubnet.put(subnetId, hosts);
-            } else if (type == Objective.Operation.REMOVE) {
-                hosts.remove(host.id());
-                if (hosts.size() != 0) {
-                    hostsOfSubnet.put(subnetId, hosts);
-                } else {
-                    hostsOfSubnet.remove(subnetId);
-                }
-            }
-        }
-
-        Iterable<Device> devices = deviceService.getAvailableDevices();
-        PortNumber inPort = host.location().port();
-        MacAddress mac = host.mac();
-        Device device = deviceService.getDevice(deviceId);
-        String controllerIp = VtnData.getControllerIpOfSwitch(device);
-        IpAddress ipAddress = IpAddress.valueOf(controllerIp);
-        TenantNetwork network = tenantNetworkService.getNetwork(virtualPort.networkId());
-        if (network == null) {
-            log.error("Can't find network of the host");
-            return;
-        }
-        SegmentationId segmentationId = network.segmentationId();
-        // Get all the tunnel PortNumber in the current node
-        Iterable<Port> ports = deviceService.getPorts(deviceId);
-        Collection<PortNumber> localTunnelPorts = VtnData.getLocalTunnelPorts(ports);
-        // Get all the local vm's PortNumber in the current node
-        Map<TenantNetworkId, Set<PortNumber>> localHostPorts = switchOfLocalHostPorts
-                .get(deviceId).getNetworkOfLocalHostPorts();
-        Set<PortNumber> networkOflocalHostPorts = localHostPorts.get(network.id());
-        for (PortNumber p : localTunnelPorts) {
-            programGroupTable(deviceId, appId, p, devices, type);
-        }
-        Subnet subnet = subnetService.getSubnet(subnetId);
-        String deviceOwner = virtualPort.deviceOwner();
-        if (deviceOwner != null) {
-            if ("network:dhcp".equalsIgnoreCase(deviceOwner)) {
-                Sets.newHashSet(devices).stream()
-                        .filter(d -> d.type() == Device.Type.SWITCH)
-                        .forEach(d -> {
-                            if (subnet != null) {
-                                IpAddress dstIp = IpAddress
-                                        .valueOf(USERDATA_IP);
-                                classifierService
-                                        .programUserdataClassifierRules(d.id(),
-                                                                        subnet.cidr(),
-                                                                        dstIp,
-                                                                        mac,
-                                                                        segmentationId,
-                                                                        type);
-                            }
-                        });
-            }
-        }
-        if (type == Objective.Operation.ADD) {
-            vPortStore.put(virtualPortId, virtualPort);
-            if (networkOflocalHostPorts == null) {
-                networkOflocalHostPorts = new HashSet<PortNumber>();
-                localHostPorts.putIfAbsent(network.id(), networkOflocalHostPorts);
-            }
-            networkOflocalHostPorts.add(inPort);
-            l2ForwardService.programLocalBcastRules(deviceId, segmentationId,
-                                                    inPort, networkOflocalHostPorts,
-                                                    localTunnelPorts,
-                                                    type);
-            classifierService.programTunnelIn(deviceId, segmentationId,
-                                              localTunnelPorts,
-                                              type);
-        } else if (type == Objective.Operation.REMOVE) {
-            if (networkOflocalHostPorts != null) {
-                l2ForwardService.programLocalBcastRules(deviceId, segmentationId,
-                                                        inPort, networkOflocalHostPorts,
-                                                        localTunnelPorts,
-                                                        type);
-                networkOflocalHostPorts.remove(inPort);
-                if (networkOflocalHostPorts.isEmpty()) {
-                    classifierService.programTunnelIn(deviceId, segmentationId,
-                                                      localTunnelPorts,
-                                                      type);
-                    switchOfLocalHostPorts.get(deviceId).getNetworkOfLocalHostPorts()
-                                                .remove(virtualPort.networkId());
-                }
-            }
-        }
-
-        l2ForwardService.programLocalOut(deviceId, segmentationId, inPort, mac,
-                                         type);
-
-        l2ForwardService.programTunnelBcastRules(deviceId, segmentationId,
-                                                 networkOflocalHostPorts,
-                                                 localTunnelPorts,
-                                                 type);
-
-        programTunnelOuts(devices, ipAddress, segmentationId, mac,
-                          type);
-
-        classifierService.programLocalIn(deviceId, segmentationId, inPort, mac,
-                                         appId, type);
-    }
-
-    private void programTunnelOuts(Iterable<Device> devices,
-                                   IpAddress ipAddress,
-                                   SegmentationId segmentationId,
-                                   MacAddress dstMac,
-                                   Objective.Operation type) {
-        String tunnelName = "vxlan-" + DEFAULT_IP;
-        Sets.newHashSet(devices).stream()
-                .filter(d -> d.type() == Device.Type.CONTROLLER)
-                .filter(d -> !("ovsdb:" + ipAddress).equals(d.id().toString()))
-                .forEach(d -> {
-                    DriverHandler handler = driverService.createHandler(d.id());
-                    BridgeConfig bridgeConfig = handler.behaviour(BridgeConfig.class);
-                    Collection<BridgeDescription> bridgeDescriptions = bridgeConfig.getBridges();
-                    for (BridgeDescription sw : bridgeDescriptions) {
-                        if (sw.name().equals(VtnConfig.DEFAULT_BRIDGE_NAME) &&
-                                sw.deviceId().isPresent()) {
-                            List<Port> ports = deviceService.getPorts(sw.deviceId().get());
-                            ports.stream().filter(p -> p.annotations().value(AnnotationKeys.PORT_NAME)
-                                    .equalsIgnoreCase(tunnelName))
-                                    .forEach(p -> l2ForwardService.programTunnelOut(
-                                            sw.deviceId().get(), segmentationId, p.number(),
-                                            dstMac, type, ipAddress));
-                            break;
-                        }
-                    }
-                });
-    }
-
-    private class InnerDeviceListener implements DeviceListener {
-
-        @Override
-        public void event(DeviceEvent event) {
-            Device device = event.subject();
-            if (Device.Type.CONTROLLER == device.type()) {
-                if (DeviceEvent.Type.DEVICE_ADDED == event.type()) {
-                    onControllerDetected(device);
-                }
-                if (DeviceEvent.Type.DEVICE_AVAILABILITY_CHANGED == event.type()) {
-                    if (deviceService.isAvailable(device.id())) {
-                        onControllerDetected(device);
-                    } else {
-                        onControllerVanished(device);
-                    }
-                }
-            } else if (Device.Type.SWITCH == device.type()) {
-                if (DeviceEvent.Type.DEVICE_ADDED == event.type()) {
-                    onOvsDetected(device);
-                }
-                if (DeviceEvent.Type.DEVICE_AVAILABILITY_CHANGED == event.type()) {
-                    if (deviceService.isAvailable(device.id())) {
-                        onOvsDetected(device);
-                    } else {
-                        onOvsVanished(device);
-                    }
-                }
-            } else {
-                log.info("Do nothing for this device type");
-            }
-        }
-    }
-
-    private class InnerHostListener implements HostListener {
-
-        @Override
-        public void event(HostEvent event) {
-            Host host = event.subject();
-            if (HostEvent.Type.HOST_ADDED == event.type()) {
-                onHostDetected(host);
-            } else if (HostEvent.Type.HOST_REMOVED == event.type()) {
-                onHostVanished(host);
-            } else if (HostEvent.Type.HOST_UPDATED == event.type()) {
-                onHostVanished(host);
-                onHostDetected(host);
-            }
-        }
-
-    }
-
-    // Local Host Ports of Network.
-    private class NetworkOfLocalHostPorts {
-        private final Map<TenantNetworkId, Set<PortNumber>> networkOfLocalHostPorts =
-                                      new HashMap<TenantNetworkId, Set<PortNumber>>();
-
-        public Map<TenantNetworkId, Set<PortNumber>> getNetworkOfLocalHostPorts() {
-            return networkOfLocalHostPorts;
-        }
-    }
-
-    private void programGroupTable(DeviceId deviceId, ApplicationId appid,
-                                   PortNumber portNumber, Iterable<Device> devices, Objective.Operation type) {
-        if (type.equals(Objective.Operation.REMOVE)) {
-            return;
-        }
-
-        List<GroupBucket> buckets = Lists.newArrayList();
-        Sets.newHashSet(devices)
-        .stream()
-        .filter(d -> d.type() == Device.Type.CONTROLLER)
-        .filter(d -> !deviceId.equals(d.id()))
-        .forEach(d -> {
-                    String ipAddress = d.annotations()
-                             .value(CONTROLLER_IP_KEY);
-                    Ip4Address dst = Ip4Address.valueOf(ipAddress);
-                    Builder builder = DefaultTrafficTreatment.builder();
-
-                    DriverHandler handler = driverService.createHandler(deviceId);
-                    ExtensionTreatmentResolver resolver =  handler.behaviour(ExtensionTreatmentResolver.class);
-                    ExtensionTreatment treatment = resolver.getExtensionInstruction(NICIRA_SET_TUNNEL_DST.type());
-                    try {
-                        treatment.setPropertyValue("tunnelDst", dst);
-                    } catch (Exception e) {
-                       log.error("Failed to get extension instruction to set tunnel dst {}", deviceId);
-                    }
-
-                    builder.extension(treatment, deviceId);
-                    builder.setOutput(portNumber);
-                    GroupBucket bucket = DefaultGroupBucket
-                            .createAllGroupBucket(builder.build());
-                    buckets.add(bucket);
-                 });
-        final GroupKey key = new DefaultGroupKey(APP_ID.getBytes());
-        GroupDescription groupDescription = new DefaultGroupDescription(deviceId,
-                                                                        GroupDescription.Type.ALL,
-                                                                        new GroupBuckets(buckets),
-                                                                        key,
-                                                                        L2ForwardServiceImpl.GROUP_ID,
-                                                                        appid);
-        groupService.addGroup(groupDescription);
-    }
-
-    private class VtnL3EventListener implements VtnRscListener {
-        @Override
-        public void event(VtnRscEvent event) {
-            VtnRscEventFeedback l3Feedback = event.subject();
-            if (VtnRscEvent.Type.ROUTER_INTERFACE_PUT == event.type()) {
-                onRouterInterfaceDetected(l3Feedback);
-            } else if (VtnRscEvent.Type.ROUTER_INTERFACE_DELETE == event.type()) {
-                onRouterInterfaceVanished(l3Feedback);
-            } else if (VtnRscEvent.Type.FLOATINGIP_BIND == event.type()) {
-                onFloatingIpDetected(l3Feedback);
-            } else if (VtnRscEvent.Type.FLOATINGIP_UNBIND == event.type()) {
-                onFloatingIpVanished(l3Feedback);
-            } else if (VtnRscEvent.Type.VIRTUAL_PORT_PUT == event.type()) {
-                onVirtualPortCreated(l3Feedback);
-            } else if (VtnRscEvent.Type.VIRTUAL_PORT_DELETE == event.type()) {
-                onVirtualPortDeleted(l3Feedback);
-            }
-        }
-
-    }
-
-    @Override
-    public void onRouterInterfaceDetected(VtnRscEventFeedback l3Feedback) {
-        Objective.Operation operation = Objective.Operation.ADD;
-        RouterInterface routerInf = l3Feedback.routerInterface();
-        VirtualPort gwPort = virtualPortService.getPort(routerInf.portId());
-        vPortStore.put(gwPort.portId(), gwPort);
-        Iterable<RouterInterface> interfaces = routerInterfaceService
-                .getRouterInterfaces();
-        Set<RouterInterface> interfacesSet = Sets.newHashSet(interfaces).stream()
-                .filter(r -> r.tenantId().equals(routerInf.tenantId()))
-                .filter(r -> r.routerId().equals(routerInf.routerId()))
-                .collect(Collectors.toSet());
-        TenantRouter tenantRouter = TenantRouter
-                .tenantRouter(routerInf.tenantId(), routerInf.routerId());
-        if (routerInfFlagOfTenantRouter.get(tenantRouter) != null) {
-            programRouterInterface(routerInf, operation);
-        } else {
-            if (interfacesSet.size() >= SUBNET_NUM) {
-                programInterfacesSet(interfacesSet, operation);
-            }
-        }
-        // apply L3 arp flows
-        applyL3ArpFlows(null, gwPort, operation);
-    }
-
-    @Override
-    public void onRouterInterfaceVanished(VtnRscEventFeedback l3Feedback) {
-        Objective.Operation operation = Objective.Operation.REMOVE;
-        RouterInterface routerInf = l3Feedback.routerInterface();
-        Iterable<RouterInterface> interfaces = routerInterfaceService
-                .getRouterInterfaces();
-        Set<RouterInterface> interfacesSet = Sets.newHashSet(interfaces)
-                .stream().filter(r -> r.tenantId().equals(routerInf.tenantId()))
-                .collect(Collectors.toSet());
-        TenantRouter tenantRouter = TenantRouter
-                .tenantRouter(routerInf.tenantId(), routerInf.routerId());
-        if (routerInfFlagOfTenantRouter.get(tenantRouter) != null) {
-            programRouterInterface(routerInf, operation);
-            if (interfacesSet.size() == 1) {
-                routerInfFlagOfTenantRouter.remove(tenantRouter);
-                interfacesSet.forEach(r -> {
-                    programRouterInterface(r, operation);
-                });
-            }
-        }
-        VirtualPort gwPort = virtualPortService.getPort(routerInf.portId());
-        if (gwPort == null) {
-            gwPort = VtnData.getPort(vPortStore, routerInf.portId());
-        }
-        vPortStore.remove(gwPort.portId());
-        // apply L3 arp flows
-        applyL3ArpFlows(null, gwPort, operation);
-    }
-
-    @Override
-    public void onFloatingIpDetected(VtnRscEventFeedback l3Feedback) {
-        floatingIpStore.put(l3Feedback.floatingIp().floatingIp(),
-                            l3Feedback.floatingIp());
-        programFloatingIpEvent(l3Feedback, VtnRscEvent.Type.FLOATINGIP_BIND);
-    }
-
-    @Override
-    public void onFloatingIpVanished(VtnRscEventFeedback l3Feedback) {
-        floatingIpStore.remove(l3Feedback.floatingIp().floatingIp());
-        programFloatingIpEvent(l3Feedback, VtnRscEvent.Type.FLOATINGIP_UNBIND);
-    }
-
-    public void onVirtualPortCreated(VtnRscEventFeedback l3Feedback) {
-        VirtualPort vPort = l3Feedback.virtualPort();
-        BasicHostConfig basicHostConfig = networkConfigService.addConfig(HostId.hostId(vPort.macAddress()),
-                                                                         BasicHostConfig.class);
-        Set<IpAddress> ips = new HashSet<>();
-        for (FixedIp fixedIp : vPort.fixedIps()) {
-            ips.add(fixedIp.ip());
-        }
-        basicHostConfig.setIps(ips).apply();
-    }
-
-    public void onVirtualPortDeleted(VtnRscEventFeedback l3Feedback) {
-        VirtualPort vPort = l3Feedback.virtualPort();
-        HostId hostId = HostId.hostId(vPort.macAddress());
-        BasicHostConfig basicHostConfig = networkConfigService.addConfig(hostId,
-                                                                         BasicHostConfig.class);
-        Set<IpAddress> oldIps = hostService.getHost(hostId).ipAddresses();
-        // Copy to a new set as oldIps is unmodifiable set.
-        Set<IpAddress> newIps = new HashSet<>();
-        newIps.addAll(oldIps);
-        for (FixedIp fixedIp : vPort.fixedIps()) {
-            newIps.remove(fixedIp.ip());
-        }
-        basicHostConfig.setIps(newIps).apply();
-    }
-
-    private void programInterfacesSet(Set<RouterInterface> interfacesSet,
-                                      Objective.Operation operation) {
-        int subnetVmNum = 0;
-        for (RouterInterface r : interfacesSet) {
-            // Get all the host of the subnet
-            Map<HostId, Host> hosts = hostsOfSubnet.get(r.subnetId());
-            if (hosts != null && hosts.size() > 0) {
-                subnetVmNum++;
-                if (subnetVmNum >= SUBNET_NUM) {
-                    TenantRouter tenantRouter = TenantRouter
-                            .tenantRouter(r.tenantId(), r.routerId());
-                    routerInfFlagOfTenantRouter.put(tenantRouter, true);
-                    interfacesSet.forEach(f -> {
-                        programRouterInterface(f, operation);
-                    });
-                    break;
-                }
-            }
-        }
-    }
-
-    private void programRouterInterface(RouterInterface routerInf,
-                                        Objective.Operation operation) {
-        TenantRouter tenantRouter = TenantRouter
-                .tenantRouter(routerInf.tenantId(), routerInf.routerId());
-        SegmentationId l3vni = vtnRscService.getL3vni(tenantRouter);
-        // Get all the host of the subnet
-        Map<HostId, Host> hosts = hostsOfSubnet.get(routerInf.subnetId());
-        hosts.values().forEach(h -> {
-            applyEastWestL3Flows(h, l3vni, operation);
-        });
-    }
-
-    private void applyL3ArpFlows(DeviceId deviceId, VirtualPort gwPort,
-                                 Objective.Operation operation) {
-        IpAddress ip = null;
-        Iterator<FixedIp> gwIps = gwPort.fixedIps().iterator();
-        if (gwIps.hasNext()) {
-            ip = gwIps.next().ip();
-        }
-        IpAddress gwIp = ip;
-        MacAddress gwMac = gwPort.macAddress();
-        TenantNetwork network = tenantNetworkService
-                .getNetwork(gwPort.networkId());
-        if (deviceId != null) {
-            // Arp rules
-            DriverHandler handler = driverService.createHandler(deviceId);
-            arpService.programArpRules(handler, deviceId, gwIp,
-                                       network.segmentationId(), gwMac,
-                                       operation);
-        } else {
-            Iterable<Device> devices = deviceService.getAvailableDevices();
-            Sets.newHashSet(devices).stream()
-            .filter(d -> Device.Type.SWITCH == d.type()).forEach(d -> {
-                // Arp rules
-                DriverHandler handler = driverService.createHandler(d.id());
-                arpService.programArpRules(handler, d.id(), gwIp,
-                                           network.segmentationId(), gwMac,
-                                           operation);
-            });
-        }
-    }
-
-    private void applyEastWestL3Flows(Host h, SegmentationId l3vni,
-                                      Objective.Operation operation) {
-        if (!mastershipService.isLocalMaster(h.location().deviceId())) {
-            log.debug("not master device:{}", h.location().deviceId());
-            return;
-        }
-        String ifaceId = h.annotations().value(IFACEID);
-        VirtualPort hPort = virtualPortService
-                .getPort(VirtualPortId.portId(ifaceId));
-        if (hPort == null) {
-            hPort = VtnData.getPort(vPortStore, VirtualPortId.portId(ifaceId));
-        }
-        IpAddress srcIp = null;
-        IpAddress srcGwIp = null;
-        MacAddress srcVmGwMac = null;
-        SubnetId srcSubnetId = null;
-        Iterator<FixedIp> srcIps = hPort.fixedIps().iterator();
-        if (srcIps.hasNext()) {
-            FixedIp fixedIp = srcIps.next();
-            srcIp = fixedIp.ip();
-            srcSubnetId = fixedIp.subnetId();
-            srcGwIp = subnetService.getSubnet(srcSubnetId).gatewayIp();
-            FixedIp fixedGwIp = FixedIp.fixedIp(srcSubnetId, srcGwIp);
-            VirtualPort gwPort = virtualPortService.getPort(fixedGwIp);
-            if (gwPort == null) {
-                gwPort = VtnData.getPort(vPortStore, fixedGwIp);
-            }
-            srcVmGwMac = gwPort.macAddress();
-        }
-        TenantNetwork network = tenantNetworkService
-                .getNetwork(hPort.networkId());
-        IpAddress dstVmIP = srcIp;
-        MacAddress dstVmGwMac = srcVmGwMac;
-        TenantId tenantId = hPort.tenantId();
-        // Classifier rules
-        if (operation == Objective.Operation.ADD) {
-            sendEastWestL3Flows(h, srcVmGwMac, l3vni, srcGwIp, network,
-                                dstVmIP, dstVmGwMac, operation);
-        } else if (operation == Objective.Operation.REMOVE) {
-            FloatingIp floatingIp = null;
-            Iterable<FloatingIp> floatingIps = floatingIpService.getFloatingIps();
-            Set<FloatingIp> floatingIpSet = Sets.newHashSet(floatingIps).stream()
-                    .filter(f -> f.tenantId().equals(tenantId))
-                    .collect(Collectors.toSet());
-            for (FloatingIp f : floatingIpSet) {
-                IpAddress fixedIp = f.fixedIp();
-                if (fixedIp != null && fixedIp.equals(srcIp)) {
-                    floatingIp = f;
-                    break;
-                }
-            }
-            if (floatingIp == null) {
-                sendEastWestL3Flows(h, srcVmGwMac, l3vni, srcGwIp, network,
-                                    dstVmIP, dstVmGwMac, operation);
-            }
-        }
-    }
-
-    private void sendEastWestL3Flows(Host h, MacAddress srcVmGwMac,
-                                     SegmentationId l3vni, IpAddress srcGwIp,
-                                     TenantNetwork network, IpAddress dstVmIP,
-                                     MacAddress dstVmGwMac,
-                                     Objective.Operation operation) {
-        classifierService
-                .programL3InPortClassifierRules(h.location().deviceId(),
-                                                h.location().port(), h.mac(),
-                                                srcVmGwMac, l3vni, operation);
-        classifierService
-                .programArpClassifierRules(h.location().deviceId(),
-                                           h.location().port(), srcGwIp,
-                                           network.segmentationId(), operation);
-        Iterable<Device> devices = deviceService.getAvailableDevices();
-        Sets.newHashSet(devices).stream()
-                .filter(d -> Device.Type.SWITCH == d.type()).forEach(d -> {
-                    // L3FWD rules
-                    l3ForwardService.programRouteRules(d.id(), l3vni, dstVmIP,
-                                                       network.segmentationId(),
-                                                       dstVmGwMac, h.mac(),
-                                                       operation);
-                });
-    }
-
-    private void programFloatingIpEvent(VtnRscEventFeedback l3Feedback,
-                                       VtnRscEvent.Type type) {
-        FloatingIp floaingIp = l3Feedback.floatingIp();
-        if (floaingIp != null) {
-            VirtualPortId vmPortId = floaingIp.portId();
-            VirtualPort vmPort = virtualPortService.getPort(vmPortId);
-            VirtualPort fipPort = virtualPortService
-                    .getPort(floaingIp.networkId(), floaingIp.floatingIp());
-            if (vmPort == null) {
-                vmPort = VtnData.getPort(vPortStore, vmPortId);
-            }
-            if (fipPort == null) {
-                fipPort = VtnData.getPort(vPortStore, floaingIp.networkId(),
-                                          floaingIp.floatingIp());
-            }
-            Set<Host> hostSet = hostService.getHostsByMac(vmPort.macAddress());
-            Host host = null;
-            for (Host h : hostSet) {
-                String ifaceid = h.annotations().value(IFACEID);
-                if (ifaceid != null && ifaceid.equals(vmPortId.portId())) {
-                    host = h;
-                    break;
-                }
-            }
-            if (host != null && fipPort != null) {
-                DeviceId deviceId = host.location().deviceId();
-                Port exPort = exPortOfDevice.get(deviceId);
-                TenantRouter tenantRouter = TenantRouter
-                        .tenantRouter(floaingIp.tenantId(), floaingIp.routerId());
-                SegmentationId l3vni = vtnRscService.getL3vni(tenantRouter);
-                // Floating ip BIND
-                if (type == VtnRscEvent.Type.FLOATINGIP_BIND) {
-                    vPortStore.put(fipPort.portId(), fipPort);
-                    applyNorthSouthL3Flows(deviceId, false, tenantRouter, host,
-                                           vmPort, fipPort, floaingIp, l3vni,
-                                           exPort, Objective.Operation.ADD);
-                } else if (type == VtnRscEvent.Type.FLOATINGIP_UNBIND) {
-                    // Floating ip UNBIND
-                    applyNorthSouthL3Flows(deviceId, false, tenantRouter, host,
-                                           vmPort, fipPort, floaingIp, l3vni,
-                                           exPort,
-                                           Objective.Operation.REMOVE);
-                    vPortStore.remove(fipPort.portId());
-                }
-            }
-        }
-    }
-
-    private void sendNorthSouthL3Flows(DeviceId deviceId, FloatingIp floatingIp,
-                                       IpAddress dstVmGwIp,
-                                       MacAddress dstVmGwMac,
-                                       SegmentationId l3vni,
-                                       TenantNetwork vmNetwork,
-                                       VirtualPort vmPort, Host host,
-                                       Objective.Operation operation) {
-        l3ForwardService
-                .programRouteRules(deviceId, l3vni, floatingIp.fixedIp(),
-                                   vmNetwork.segmentationId(), dstVmGwMac,
-                                   vmPort.macAddress(), operation);
-        classifierService.programL3InPortClassifierRules(deviceId,
-                                                         host.location().port(),
-                                                         host.mac(), dstVmGwMac,
-                                                         l3vni, operation);
-        classifierService.programArpClassifierRules(deviceId, host.location()
-                .port(), dstVmGwIp, vmNetwork.segmentationId(), operation);
-    }
-
-    private void applyNorthSouthL3Flows(DeviceId deviceId, boolean hostFlag,
-                                        TenantRouter tenantRouter, Host host,
-                                        VirtualPort vmPort, VirtualPort fipPort,
-                                        FloatingIp floatingIp,
-                                        SegmentationId l3vni, Port exPort,
-                                        Objective.Operation operation) {
-        if (!mastershipService.isLocalMaster(deviceId)) {
-            log.debug("not master device:{}", deviceId);
-            return;
-        }
-        List gwIpMac = getGwIpAndMac(vmPort);
-        IpAddress dstVmGwIp = (IpAddress) gwIpMac.get(0);
-        MacAddress dstVmGwMac = (MacAddress) gwIpMac.get(1);
-        TenantNetwork vmNetwork = tenantNetworkService
-                .getNetwork(vmPort.networkId());
-        TenantNetwork fipNetwork = tenantNetworkService
-                .getNetwork(fipPort.networkId());
-        // L3 downlink traffic flow
-        MacAddress exPortMac = MacAddress.valueOf(exPort.annotations()
-                                                  .value(AnnotationKeys.PORT_MAC));
-        classifierService.programL3ExPortClassifierRules(deviceId, exPort.number(),
-                                                         floatingIp.floatingIp(), operation);
-        dnatService.programRules(deviceId, floatingIp.floatingIp(),
-                                 exPortMac, floatingIp.fixedIp(),
-                                     l3vni, operation);
-
-        Subnet subnet = getSubnetOfFloatingIP(floatingIp);
-        IpPrefix ipPrefix = subnet.cidr();
-        snatService.programSnatSameSegmentUploadControllerRules(deviceId, l3vni,
-                                                                floatingIp.fixedIp(),
-                                                                floatingIp.floatingIp(),
-                                                                ipPrefix,
-                                                                operation);
-        // L3 uplink traffic flow
-        if (operation == Objective.Operation.ADD) {
-            sendNorthSouthL3Flows(deviceId, floatingIp, dstVmGwIp, dstVmGwMac,
-                                  l3vni, vmNetwork, vmPort, host, operation);
-            l2ForwardService
-                    .programExternalOut(deviceId, fipNetwork.segmentationId(),
-                                        exPort.number(), exPortMac, operation);
-        } else if (operation == Objective.Operation.REMOVE) {
-            if (hostFlag || (routerInfFlagOfTenantRouter.get(tenantRouter) == null)) {
-                sendNorthSouthL3Flows(deviceId, floatingIp, dstVmGwIp, dstVmGwMac,
-                                      l3vni, vmNetwork, vmPort, host, operation);
-            }
-            Iterable<FloatingIp> floatingIps = floatingIpService.getFloatingIps();
-            boolean exPortFlag = true;
-            if (floatingIps != null) {
-                Set<FloatingIp> floatingIpSet = Sets.newHashSet(floatingIps);
-                for (FloatingIp fip : floatingIpSet) {
-                    if (fip.fixedIp() != null) {
-                        exPortFlag = false;
-                        break;
-                    }
-                }
-            }
-            if (exPortFlag) {
-                l2ForwardService.programExternalOut(deviceId,
-                                                    fipNetwork.segmentationId(),
-                                                    exPort.number(), exPortMac,
-                                                    operation);
-            }
-            removeRulesInSnat(deviceId, floatingIp.fixedIp());
-        }
-    }
-
-    private Port getExPort(DeviceId deviceId) {
-        List<Port> ports = deviceService.getPorts(deviceId);
-        Port exPort = null;
-        for (Port port : ports) {
-            String portName = port.annotations().value(AnnotationKeys.PORT_NAME);
-            Versioned<String> exPortVersioned = exPortMap.get(EX_PORT_KEY);
-            if (portName != null && exPortVersioned != null && portName.
-                    equals(exPortVersioned.value())) {
-                exPort = port;
-                break;
-            }
-        }
-        return exPort;
-    }
-
-    private List getGwIpAndMac(VirtualPort port) {
-        List list = new ArrayList();
-        MacAddress gwMac = null;
-        SubnetId subnetId = null;
-        IpAddress gwIp = null;
-        Iterator<FixedIp> fixips = port.fixedIps().iterator();
-        if (fixips.hasNext()) {
-            FixedIp fixip = fixips.next();
-            subnetId = fixip.subnetId();
-            gwIp = subnetService.getSubnet(subnetId).gatewayIp();
-            FixedIp fixedGwIp = FixedIp.fixedIp(fixip.subnetId(), gwIp);
-            VirtualPort gwPort = virtualPortService.getPort(fixedGwIp);
-            if (gwPort == null) {
-                gwPort = VtnData.getPort(vPortStore, fixedGwIp);
-            }
-            gwMac = gwPort.macAddress();
-        }
-        list.add(gwIp);
-        list.add(gwMac);
-        return list;
-    }
-
-    private void applyHostMonitoredL3Rules(Host host,
-                                           Objective.Operation operation) {
-        String ifaceId = host.annotations().value(IFACEID);
-        DeviceId deviceId = host.location().deviceId();
-        VirtualPortId portId = VirtualPortId.portId(ifaceId);
-        VirtualPort port = virtualPortService.getPort(portId);
-        if (port == null) {
-            port = VtnData.getPort(vPortStore, portId);
-        }
-        TenantId tenantId = port.tenantId();
-        Port exPort = exPortOfDevice.get(deviceId);
-        Iterator<FixedIp> fixips = port.fixedIps().iterator();
-        SubnetId sid = null;
-        IpAddress hostIp = null;
-        if (fixips.hasNext()) {
-            FixedIp fixip = fixips.next();
-            sid = fixip.subnetId();
-            hostIp = fixip.ip();
-        }
-        final SubnetId subnetId = sid;
-        // L3 internal network access to each other
-        Iterable<RouterInterface> interfaces = routerInterfaceService
-                .getRouterInterfaces();
-        Set<RouterInterface> hostInterfaces = Sets.newHashSet(interfaces)
-                .stream().filter(r -> r.tenantId().equals(tenantId))
-                .filter(r -> r.subnetId().equals(subnetId))
-                .collect(Collectors.toSet());
-        hostInterfaces.forEach(routerInf -> {
-            Set<RouterInterface> interfacesSet = Sets.newHashSet(interfaces)
-                    .stream().filter(r -> r.tenantId().equals(tenantId))
-                    .filter(r -> r.routerId().equals(routerInf.routerId()))
-                    .collect(Collectors.toSet());
-            long count = interfacesSet.stream()
-                    .filter(r -> !r.subnetId().equals(subnetId)).count();
-            if (count > 0) {
-                TenantRouter tenantRouter = TenantRouter
-                        .tenantRouter(routerInf.tenantId(), routerInf.routerId());
-                SegmentationId l3vni = vtnRscService.getL3vni(tenantRouter);
-                if (operation == Objective.Operation.ADD) {
-                    if (routerInfFlagOfTenantRouter.get(tenantRouter) != null) {
-                        applyEastWestL3Flows(host, l3vni, operation);
-                    } else {
-                        if (interfacesSet.size() > 1) {
-                            programInterfacesSet(interfacesSet, operation);
-                        }
-                    }
-                } else if (operation == Objective.Operation.REMOVE) {
-                    if (routerInfFlagOfTenantRouter.get(tenantRouter) != null) {
-                        applyEastWestL3Flows(host, l3vni, operation);
-                    }
-                }
-            }
-        });
-        // L3 external and internal network access to each other
-        FloatingIp floatingIp = null;
-        Iterable<FloatingIp> floatingIps = floatingIpService.getFloatingIps();
-        Set<FloatingIp> floatingIpSet = Sets.newHashSet(floatingIps).stream()
-                .filter(f -> f.tenantId().equals(tenantId))
-                .collect(Collectors.toSet());
-        for (FloatingIp f : floatingIpSet) {
-            IpAddress fixedIp = f.fixedIp();
-            if (fixedIp != null && fixedIp.equals(hostIp)) {
-                floatingIp = f;
-                break;
-            }
-        }
-        if (floatingIp != null) {
-            TenantRouter tenantRouter = TenantRouter
-                    .tenantRouter(floatingIp.tenantId(), floatingIp.routerId());
-            SegmentationId l3vni = vtnRscService.getL3vni(tenantRouter);
-            VirtualPort fipPort = virtualPortService
-                    .getPort(floatingIp.networkId(), floatingIp.floatingIp());
-            if (fipPort == null) {
-                fipPort = VtnData.getPort(vPortStore, floatingIp.networkId(),
-                                          floatingIp.floatingIp());
-            }
-            applyNorthSouthL3Flows(deviceId, true, tenantRouter, host, port,
-                                   fipPort, floatingIp, l3vni, exPort,
-                                   operation);
-        }
-    }
-
-    public static void setExPortName(String name) {
-        exPortMap.put(EX_PORT_KEY, name);
-    }
-
-    /**
-     * Packet processor responsible for forwarding packets along their paths.
-     */
-    private class VtnL3PacketProcessor implements PacketProcessor {
-
-        @Override
-        public void process(PacketContext context) {
-            InboundPacket pkt = context.inPacket();
-            ConnectPoint connectPoint = pkt.receivedFrom();
-            DeviceId deviceId = connectPoint.deviceId();
-            Ethernet ethPkt = pkt.parsed();
-            if (ethPkt == null) {
-                return;
-            }
-            if (ethPkt.getEtherType() == Ethernet.TYPE_ARP) {
-                ARP arpPacket = (ARP) ethPkt.getPayload();
-                if ((arpPacket.getOpCode() == ARP.OP_REQUEST)) {
-                    arprequestProcess(arpPacket, deviceId);
-                } else if (arpPacket.getOpCode() == ARP.OP_REPLY) {
-                    arpresponceProcess(arpPacket, deviceId);
-                }
-            } else if (ethPkt.getEtherType() == Ethernet.TYPE_IPV4) {
-                if (ethPkt.getDestinationMAC().isMulticast()) {
-                    return;
-                }
-                IPv4 ip = (IPv4) ethPkt.getPayload();
-                upStreamPacketProcessor(ip, deviceId);
-
-            } else {
-                return;
-            }
-        }
-
-        private void arprequestProcess(ARP arpPacket, DeviceId deviceId) {
-            MacAddress dstMac = MacAddress
-                    .valueOf(arpPacket.getSenderHardwareAddress());
-            IpAddress srcIp = IpAddress.valueOf(IPv4
-                    .toIPv4Address(arpPacket.getTargetProtocolAddress()));
-            IpAddress dstIp = IpAddress.valueOf(IPv4
-                    .toIPv4Address(arpPacket.getSenderProtocolAddress()));
-            FloatingIp floatingIp = floatingIpStore.get(srcIp);
-            if (floatingIp == null) {
-                return;
-            }
-            DeviceId deviceIdOfFloatingIp = getDeviceIdOfFloatingIP(floatingIp);
-            if (!deviceId.equals(deviceIdOfFloatingIp)) {
-                return;
-            }
-            Port exPort = exPortOfDevice.get(deviceId);
-            MacAddress srcMac = MacAddress.valueOf(exPort.annotations()
-                    .value(AnnotationKeys.PORT_MAC));
-            if (!downloadSnatRules(deviceId, srcMac, srcIp, dstMac, dstIp,
-                                   floatingIp)) {
-                return;
-            }
-            Ethernet ethernet = buildArpResponse(dstIp, dstMac, srcIp, srcMac);
-            if (ethernet != null) {
-                sendPacketOut(deviceId, exPort.number(), ethernet);
-            }
-        }
-
-        private void arpresponceProcess(ARP arpPacket, DeviceId deviceId) {
-            MacAddress srcMac = MacAddress
-                    .valueOf(arpPacket.getTargetHardwareAddress());
-            MacAddress dstMac = MacAddress
-                    .valueOf(arpPacket.getSenderHardwareAddress());
-            IpAddress srcIp = IpAddress.valueOf(IPv4
-                    .toIPv4Address(arpPacket.getTargetProtocolAddress()));
-            IpAddress dstIp = IpAddress.valueOf(IPv4
-                    .toIPv4Address(arpPacket.getSenderProtocolAddress()));
-            FloatingIp floatingIp = floatingIpStore.get(srcIp);
-            if (floatingIp == null) {
-                return;
-            }
-            DeviceId deviceIdOfFloatingIp = getDeviceIdOfFloatingIP(floatingIp);
-            if (!deviceId.equals(deviceIdOfFloatingIp)) {
-                return;
-            }
-            if (!downloadSnatRules(deviceId, srcMac, srcIp, dstMac, dstIp,
-                                   floatingIp)) {
-                return;
-            }
-        }
-
-        private void upStreamPacketProcessor(IPv4 ipPacket, DeviceId deviceId) {
-            IpAddress srcIp = IpAddress.valueOf(ipPacket.getSourceAddress());
-            IpAddress dstIp = IpAddress.valueOf(ipPacket.getDestinationAddress());
-            FloatingIp floatingIp = null;
-            Collection<FloatingIp> floatingIps = floatingIpService
-                    .getFloatingIps();
-            Set<FloatingIp> floatingIpSet = Sets.newHashSet(floatingIps)
-                    .stream().collect(Collectors.toSet());
-            for (FloatingIp f : floatingIpSet) {
-                IpAddress fixIp = f.fixedIp();
-                if (fixIp != null && fixIp.equals(srcIp)) {
-                    floatingIp = f;
-                    break;
-                }
-            }
-            if (floatingIp == null) {
-                return;
-            }
-            Subnet subnet = getSubnetOfFloatingIP(floatingIp);
-            IpAddress gwIp = subnet.gatewayIp();
-            Port exportPort = exPortOfDevice.get(deviceId);
-            MacAddress exPortMac = MacAddress.valueOf(exportPort.annotations()
-                    .value(AnnotationKeys.PORT_MAC));
-            IpPrefix ipPrefix = subnet.cidr();
-            if (ipPrefix == null) {
-                return;
-            }
-            int mask = ipPrefix.prefixLength();
-            if (mask <= 0) {
-                return;
-            }
-            Ethernet ethernet = null;
-            // if the same ip segment
-            if (IpUtil.checkSameSegment(floatingIp.floatingIp(), dstIp, mask)) {
-                ethernet = buildArpRequest(dstIp, floatingIp.floatingIp(),
-                                           exPortMac);
-            } else {
-                ethernet = buildArpRequest(gwIp, floatingIp.floatingIp(),
-                                           exPortMac);
-            }
-            if (ethernet != null) {
-                sendPacketOut(deviceId, exportPort.number(), ethernet);
-            }
-        }
-    }
-
-    private Ethernet buildArpRequest(IpAddress targetIp, IpAddress sourceIp,
-                                     MacAddress sourceMac) {
-        ARP arp = new ARP();
-        arp.setHardwareType(ARP.HW_TYPE_ETHERNET)
-           .setHardwareAddressLength((byte) Ethernet.DATALAYER_ADDRESS_LENGTH)
-           .setProtocolType(ARP.PROTO_TYPE_IP)
-           .setProtocolAddressLength((byte) Ip4Address.BYTE_LENGTH)
-           .setOpCode(ARP.OP_REQUEST);
-
-        arp.setSenderHardwareAddress(sourceMac.toBytes())
-           .setSenderProtocolAddress(sourceIp.getIp4Address().toInt())
-           .setTargetHardwareAddress(ZERO_MAC_ADDRESS)
-           .setTargetProtocolAddress(targetIp.getIp4Address().toInt());
-
-        Ethernet ethernet = new Ethernet();
-        ethernet.setEtherType(Ethernet.TYPE_ARP)
-                .setDestinationMACAddress(MacAddress.BROADCAST)
-                .setSourceMACAddress(sourceMac)
-                .setPayload(arp);
-
-        ethernet.setPad(true);
-        return ethernet;
-    }
-
-    private Ethernet buildArpResponse(IpAddress targetIp, MacAddress targetMac,
-                                      IpAddress sourceIp, MacAddress sourceMac) {
-        ARP arp = new ARP();
-        arp.setHardwareType(ARP.HW_TYPE_ETHERNET)
-           .setHardwareAddressLength((byte) Ethernet.DATALAYER_ADDRESS_LENGTH)
-           .setProtocolType(ARP.PROTO_TYPE_IP)
-           .setProtocolAddressLength((byte) Ip4Address.BYTE_LENGTH)
-           .setOpCode(ARP.OP_REPLY);
-
-        arp.setSenderHardwareAddress(sourceMac.toBytes())
-           .setSenderProtocolAddress(sourceIp.getIp4Address().toInt())
-           .setTargetHardwareAddress(targetMac.toBytes())
-           .setTargetProtocolAddress(targetIp.getIp4Address().toInt());
-
-        Ethernet ethernet = new Ethernet();
-        ethernet.setEtherType(Ethernet.TYPE_ARP)
-                .setDestinationMACAddress(targetMac)
-                .setSourceMACAddress(sourceMac)
-                .setPayload(arp);
-
-        ethernet.setPad(true);
-
-        return ethernet;
-    }
-
-    private void sendPacketOut(DeviceId deviceId, PortNumber portNumber,
-                               Ethernet payload) {
-        TrafficTreatment treatment = DefaultTrafficTreatment.builder()
-                .setOutput(portNumber).build();
-        OutboundPacket packet = new DefaultOutboundPacket(deviceId, treatment,
-                                                          ByteBuffer
-                                                                  .wrap(payload
-                                                                          .serialize()));
-        packetService.emit(packet);
-    }
-
-    private Subnet getSubnetOfFloatingIP(FloatingIp floatingIp) {
-        DeviceId exVmPortId = DeviceId
-                .deviceId(floatingIp.id().floatingIpId().toString());
-        Collection<VirtualPort> exVmPortList = virtualPortService
-                .getPorts(exVmPortId);
-        VirtualPort exVmPort = null;
-        if (exVmPortList != null) {
-            exVmPort = exVmPortList.iterator().next();
-        }
-        if (exVmPort == null) {
-            log.debug("exVM Port is null {}.", floatingIp);
-            return null;
-        }
-        Set<FixedIp> fixedIps = exVmPort.fixedIps();
-        SubnetId subnetId = null;
-        for (FixedIp f : fixedIps) {
-            IpAddress fp = f.ip();
-            if (fp.equals(floatingIp.floatingIp())) {
-                subnetId = f.subnetId();
-                break;
-            }
-        }
-        if (subnetId == null) {
-            log.debug("subnetId is null {}.", floatingIp);
-            return null;
-        }
-        Subnet subnet = subnetService.getSubnet(subnetId);
-        return subnet;
-    }
-
-    private DeviceId getDeviceIdOfFloatingIP(FloatingIp floatingIp) {
-        VirtualPortId vmPortId = floatingIp.portId();
-        VirtualPort vmPort = virtualPortService.getPort(vmPortId);
-        if (vmPort == null) {
-            vmPort = VtnData.getPort(vPortStore, vmPortId);
-        }
-        Set<Host> hostSet = hostService.getHostsByMac(vmPort.macAddress());
-        Host host = null;
-        for (Host h : hostSet) {
-            String ifaceid = h.annotations().value(IFACEID);
-            if (ifaceid != null && ifaceid.equals(vmPortId.portId())) {
-                host = h;
-                break;
-            }
-        }
-        if (host == null) {
-            log.debug("Host is null {}.", floatingIp);
-            return null;
-        } else {
-            return host.location().deviceId();
-        }
-    }
-
-    private boolean downloadSnatRules(DeviceId deviceId, MacAddress srcMac,
-                                      IpAddress srcIp, MacAddress dstMac,
-                                      IpAddress dstIp, FloatingIp floatingIp) {
-        TenantNetwork exNetwork = tenantNetworkService
-                .getNetwork(floatingIp.networkId());
-        IpAddress fixedIp = floatingIp.fixedIp();
-        VirtualPortId vmPortId = floatingIp.portId();
-        VirtualPort vmPort = virtualPortService.getPort(vmPortId);
-        if (vmPort == null) {
-            vmPort = VtnData.getPort(vPortStore, vmPortId);
-        }
-        Subnet subnet = getSubnetOfFloatingIP(floatingIp);
-        IpPrefix ipPrefix = subnet.cidr();
-        IpAddress gwIp = subnet.gatewayIp();
-        if (ipPrefix == null) {
-            return false;
-        }
-        int mask = ipPrefix.prefixLength();
-        if (mask <= 0) {
-            return false;
-        }
-        TenantRouter tenantRouter = TenantRouter
-                .tenantRouter(floatingIp.tenantId(), floatingIp.routerId());
-        SegmentationId l3vni = vtnRscService.getL3vni(tenantRouter);
-        // if the same ip segment
-        if (IpUtil.checkSameSegment(srcIp, dstIp, mask)) {
-            snatService.programSnatSameSegmentRules(deviceId, l3vni, fixedIp,
-                                                    dstIp, dstMac, srcMac,
-                                                    srcIp,
-                                                    exNetwork.segmentationId(),
-                                                    Objective.Operation.ADD);
-            if (dstIp.equals(gwIp)) {
-                snatService
-                        .programSnatDiffSegmentRules(deviceId, l3vni, fixedIp,
-                                                     dstMac, srcMac, srcIp,
-                                                     exNetwork.segmentationId(),
-                                                     Objective.Operation.ADD);
-            }
-        }
-        return true;
-    }
-
-    private void removeRulesInSnat(DeviceId deviceId, IpAddress fixedIp) {
-        for (FlowEntry f : flowRuleService.getFlowEntries(deviceId)) {
-            if (f.tableId() == SNAT_TABLE
-                    && f.priority() > SNAT_DEFAULT_RULE_PRIORITY) {
-                String srcIp = f.selector()
-                        .getCriterion(Criterion.Type.IPV4_SRC).toString();
-                int priority = f.priority();
-                if (srcIp != null && srcIp.contains(fixedIp.toString())) {
-                    log.info("Match snat rules bob");
-                    TrafficSelector selector = f.selector();
-                    TrafficTreatment treatment = f.treatment();
-                    snatService.removeSnatRules(deviceId, selector, treatment,
-                                                priority,
-                                                Objective.Operation.REMOVE);
-
-                }
-            }
-        }
-    }
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/impl/package-info.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/impl/package-info.java
deleted file mode 100644
index 0c10369..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * VTN application that applies configuration and flows to the device.
- */
-package org.onosproject.vtn.manager.impl;
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/package-info.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/package-info.java
deleted file mode 100644
index 4da1e7a..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * VTN application that applies configuration and flows to the device.
- */
-package org.onosproject.vtn.manager;
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ArpService.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ArpService.java
deleted file mode 100644
index 8dad2bf..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ArpService.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.table;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.driver.DriverHandler;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtnrsc.SegmentationId;
-
-
-/**
- * ArpService interface providing the rules in ARP table which is Table(10).
- */
-public interface ArpService {
-
-    /**
-     * Assemble the arp rules.
-     * Match: arp type, vnid and destination ip.
-     * Action: set arp_operation, move arp_eth_src to arp_eth_dst, set arp_eth_src,
-     * move arp_ip_src to arp_ip_dst, set arp_ip_src, set output port.
-     *
-     * @param hander DriverHandler
-     * @param deviceId Device Id
-     * @param dstIP destination ip
-     * @param matchVni the vni of the source network (l2vni)
-     * @param dstMac destination mac
-     * @param type the operation type of the flow rules
-     */
-    void programArpRules(DriverHandler hander, DeviceId deviceId, IpAddress dstIP,
-                                SegmentationId matchVni, MacAddress dstMac,
-                                Objective.Operation type);
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ClassifierService.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ClassifierService.java
deleted file mode 100644
index fb08e2a..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ClassifierService.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.table;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Port;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.net.flowobjective.Objective.Operation;
-import org.onosproject.vtnrsc.SegmentationId;
-
-/**
- * Applies classifier flows to the device. Classifier table is Table(0).
- */
-public interface ClassifierService {
-
-    /**
-     * The port rule that message from host matches Table(0) Match: host mac and
-     * ingress port Action: set vnid and go to L2Forward Table(50).
-     *
-     * @param deviceId Device Id
-     * @param segmentationId the vnid of the host belong to
-     * @param inPort the ingress port of the host
-     * @param srcMac the mac of the host
-     * @param appId the application ID of the vtn
-     * @param type the operation of the flow
-     */
-    void programLocalIn(DeviceId deviceId, SegmentationId segmentationId,
-                        PortNumber inPort, MacAddress srcMac,
-                        ApplicationId appId, Objective.Operation type);
-
-    /**
-     * The port rule that message from tunnel Table(0) Match: tunnel port and
-     * vnid Action: go to L2Forward Table(50).
-     *
-     * @param deviceId Device Id
-     * @param segmentationId the vnid of the host belong to
-     * @param localTunnelPorts the tunnel pors of the device
-     * @param type the operation of the flow
-     */
-    void programTunnelIn(DeviceId deviceId, SegmentationId segmentationId,
-                         Iterable<PortNumber> localTunnelPorts,
-                         Objective.Operation type);
-
-    /**
-     * Assemble the L3 Classifier table rules which are sended from external port.
-     * Match: ipv4 type, ingress port and destination ip.
-     * Action: go to DNAT Table(20).
-     *
-     * @param deviceId Device Id
-     * @param inPort external port
-     * @param dstIp floating ip
-     * @param type the operation type of the flow rules
-     */
-    void programL3ExPortClassifierRules(DeviceId deviceId, PortNumber inPort,
-                                        IpAddress dstIp,
-                                        Objective.Operation type);
-
-    /**
-     * Assemble the L3 Classifier table rules which are sended from internal port.
-     * Match: ingress port, source mac and destination mac.
-     * Action: set vnid and go to L3Forward Table(30).
-     *
-     * @param deviceId Device Id
-     * @param inPort the ingress port of the host
-     * @param srcMac source mac
-     * @param dstMac destination vm gateway mac
-     * @param actionVni the vni of L3 network
-     * @param type the operation type of the flow rules
-     */
-    void programL3InPortClassifierRules(DeviceId deviceId,
-                                          PortNumber inPort, MacAddress srcMac,
-                                          MacAddress dstMac,
-                                          SegmentationId actionVni,
-                                          Objective.Operation type);
-
-    /**
-     * Assemble the Arp Classifier table rules.
-     * Match: arp type and destination ip.
-     * Action: set vnid and go to ARP Table(10).
-     *
-     * @param deviceId Device Id
-     * @param dstIp source gateway ip
-     * @param actionVni the vni of the source network (l2vni)
-     * @param type the operation type of the flow rules
-     */
-    void programArpClassifierRules(DeviceId deviceId, IpAddress dstIp,
-                                   SegmentationId actionVni,
-                                   Objective.Operation type);
-
-    /**
-     * Assemble the Arp Classifier table rules.
-     * Match: arp type and destination ip.
-     * Action: set vnid and go to ARP Table(10).
-     *
-     * @param deviceId Device Id
-     * @param inPort the ingress port of the host
-     * @param dstIp source gateway ip
-     * @param actionVni the vni of the source network (l2vni)
-     * @param type the operation type of the flow rules
-     */
-    void programArpClassifierRules(DeviceId deviceId, PortNumber inPort,
-                                   IpAddress dstIp, SegmentationId actionVni,
-                                   Objective.Operation type);
-
-    /**
-     * Assemble the Userdata Classifier table rules.
-     * Match: subnet ip prefix and destination ip.
-     * Action: add flow rule to specific ip for userdata.
-     *
-     * @param deviceId Device Id
-     * @param ipPrefix source ip prefix
-     * @param dstIp userdata ip
-     * @param dstmac dst mac
-     * @param actionVni the vni of the source network (l2vni)
-     * @param type the operation type of the flow rules
-     */
-    void programUserdataClassifierRules(DeviceId deviceId, IpPrefix ipPrefix,
-                                        IpAddress dstIp, MacAddress dstmac,
-                                        SegmentationId actionVni,
-                                        Objective.Operation type);
-
-    /**
-     * Assemble the export port Arp Classifier table rules.
-     * Match: export port.
-     * Action: upload packet to controller.
-     *
-     * @param exportPort export port of ovs
-     * @param deviceId Device Id
-     * @param type the operation type of the flow rules
-     */
-    void programExportPortArpClassifierRules(Port exportPort, DeviceId deviceId,
-                                             Operation type);
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/DnatService.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/DnatService.java
deleted file mode 100644
index 1634027..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/DnatService.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.table;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtnrsc.SegmentationId;
-
-/**
- * DnatService interface provides the rules in DNAT table which is Table(20) for ovs pipeline.
- * DNAT means Destination Network Address Translation, it is acronym for network terminology.
- * Handle the downward flows.
- */
-public interface DnatService {
-
-    /**
-     * Assemble the DNAT table rules.
-     * Match: ipv4 type and destination ip.
-     * Action: set eth_src, set ip_dst, set vnid and goto L3Forward Table(30).
-     *
-     * @param deviceId Device Id
-     * @param dstIp floating ip
-     * @param ethSrc floating ip gateway mac
-     * @param ipDst destination vm ip
-     * @param actionVni the vni of L3 network
-     * @param type the operation type of the flow rules
-     */
-    void programRules(DeviceId deviceId, IpAddress dstIp,
-                          MacAddress ethSrc, IpAddress ipDst,
-                          SegmentationId actionVni, Objective.Operation type);
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L2ForwardService.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L2ForwardService.java
deleted file mode 100644
index 68af8bb..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L2ForwardService.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.table;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtnrsc.SegmentationId;
-
-/**
- * Applies L2 flows to the device. L2Forward table is Table(50).
- */
-public interface L2ForwardService {
-
-    /**
-     * The local broadcast rule that message matches Table(50).
-     * Match: broadcast mac and vnid.
-     * Action: set output port.
-     *
-     * @param deviceId Device Id
-     * @param segmentationId the vnid of the host belong to
-     * @param inPort the ingress port of the host
-     * @param localVmPorts the local ports of the network which connect host
-     * @param localTunnelPorts the tunnel pors of the device
-     * @param type the operation of the flow
-     */
-    void programLocalBcastRules(DeviceId deviceId,
-                                SegmentationId segmentationId,
-                                PortNumber inPort,
-                                Iterable<PortNumber> localVmPorts,
-                                Iterable<PortNumber> localTunnelPorts,
-                                Objective.Operation type);
-
-    /**
-     * The tunnel broadcast rule that message matches Table(50).
-     * Match: broadcast mac and vnid.
-     * Action: output port.
-     *
-     * @param deviceId Device Id
-     * @param segmentationId the vnid of the host belong to
-     * @param localVmPorts the local ports of the network which connect host
-     * @param localTunnelPorts the tunnel pors of the device
-     * @param type the operation of the flow
-     */
-    void programTunnelBcastRules(DeviceId deviceId,
-                                 SegmentationId segmentationId,
-                                 Iterable<PortNumber> localVmPorts,
-                                 Iterable<PortNumber> localTunnelPorts,
-                                 Objective.Operation type);
-
-    /**
-     * The local out rule that message matches Table(50).
-     * Match: local host mac and vnid.
-     * Action: output local host port.
-     *
-     * @param deviceId Device Id
-     * @param segmentationId the vnid of the host belong to
-     * @param outPort the ingress port of the host
-     * @param sourceMac the mac of the host
-     * @param type the operation of the flow
-     */
-    void programLocalOut(DeviceId deviceId, SegmentationId segmentationId,
-                         PortNumber outPort, MacAddress sourceMac,
-                         Objective.Operation type);
-
-    /**
-     * The external out rule that message matches Table(50).
-     * Match: external port mac and vnid.
-     * Action: output external port.
-     *
-     * @param deviceId Device Id
-     * @param segmentationId the vnid of the host belong to
-     * @param outPort the ingress port of the external port
-     * @param sourceMac the mac of the external port
-     * @param type the operation of the flow
-     */
-    void programExternalOut(DeviceId deviceId, SegmentationId segmentationId,
-                         PortNumber outPort, MacAddress sourceMac,
-                         Objective.Operation type);
-
-    /**
-     * The tunnel out rule that message matches Table(50).
-     * Match: host mac and vnid.
-     * Action: output tunnel port.
-     *
-     * @param deviceId Device Id
-     * @param segmentationId the vnid of the host belong to
-     * @param tunnelOutPort the port of the tunnel
-     * @param dstMac the mac of the host
-     * @param type the operation of the flow
-     * @param ipAddress the ipAddress of the node
-     */
-    void programTunnelOut(DeviceId deviceId, SegmentationId segmentationId,
-                          PortNumber tunnelOutPort, MacAddress dstMac,
-                          Objective.Operation type, IpAddress ipAddress);
-
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L3ForwardService.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L3ForwardService.java
deleted file mode 100644
index 47677e6..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L3ForwardService.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.table;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtnrsc.SegmentationId;
-
-/**
- * L3ForwardService interface provide the rules in L3Forward table which is Table(30).
- */
-public interface L3ForwardService {
-
-    /**
-     * Assemble the L3Forward table rules.
-     * Match: ipv4 type, vnid and destination ip.
-     * Action: set eth_src, set eth_dst, set vnid and goto L2Forward Table(50).
-     *
-     * @param deviceId Device Id
-     * @param l3Vni the vni of L3 network
-     * @param dstVmIP destination vm ip
-     * @param dstVni the vni of the destination network (l2vni)
-     * @param dstVmGwMac destination VM gateway mac
-     * @param dstVmMac destination VM mac
-     * @param type the operation type of the flow rules
-     */
-    void programRouteRules(DeviceId deviceId, SegmentationId l3Vni,
-                           IpAddress dstVmIP, SegmentationId dstVni,
-                           MacAddress dstVmGwMac, MacAddress dstVmMac,
-                           Objective.Operation type);
-
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/SnatService.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/SnatService.java
deleted file mode 100644
index 30db4ec..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/SnatService.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.table;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtnrsc.SegmentationId;
-
-/**
- * SnatService interface provides the rules in SNAT table which is Table(40) for ovs pipeline.
- * SNAT means Source Network Address Translation, it is acronym for network terminology.
- * Handle the upward flows.
- */
-public interface SnatService {
-
-    /**
-     * Assemble the SNAT table rules.
-     * Match: ipv4 type, vnid, destination ip and source ip.
-     * Action: set eth_src, set eth_dst, set ip_src, set vnid and goto L2Forward Table(50).
-     *
-     * @param deviceId Device Id
-     * @param matchVni the vni of L3 network
-     * @param srcIP source ip
-     * @param dstIP destination ip
-     * @param ethDst external gateway mac
-     * @param ethSrc external port mac
-     * @param ipSrc floating ip
-     * @param actionVni external network VNI
-     * @param type the operation type of the flow rules
-     */
-    void programSnatSameSegmentRules(DeviceId deviceId, SegmentationId matchVni,
-                          IpAddress srcIP, IpAddress dstIP, MacAddress ethDst,
-                          MacAddress ethSrc, IpAddress ipSrc,
-                          SegmentationId actionVni, Objective.Operation type);
-    /**
-     * Assemble the SNAT table rules.
-     * Match: ipv4 type, vnid and source ip.
-     * Action: set eth_src, set eth_dst, set ip_src, set vnid and goto L2Forward Table(50).
-     *
-     * @param deviceId Device Id
-     * @param matchVni the vni of L3 network
-     * @param srcIP source ip
-     * @param ethDst external gateway mac
-     * @param ethSrc external port mac
-     * @param ipSrc floating ip
-     * @param actionVni external network VNI
-     * @param type the operation type of the flow rules
-     */
-    void programSnatDiffSegmentRules(DeviceId deviceId, SegmentationId matchVni,
-                          IpAddress srcIP, MacAddress ethDst,
-                          MacAddress ethSrc, IpAddress ipSrc,
-                          SegmentationId actionVni, Objective.Operation type);
-
-    /**
-     * Assemble the SNAT table rules.
-     * Match: ipv4 type, vnid, destination ip and source ip.
-     * Action: upload to controller.
-     *
-     * @param deviceId Device Id
-     * @param matchVni the vni of L3 network
-     * @param srcIP source ip
-     * @param dstIP destination ip
-     * @param prefix prefix
-     * @param type the operation type of the flow rules
-     */
-    void programSnatSameSegmentUploadControllerRules(DeviceId deviceId,
-                                                     SegmentationId matchVni,
-                                                     IpAddress srcIP,
-                                                     IpAddress dstIP,
-                                                     IpPrefix prefix,
-                                                     Objective.Operation type);
-
-    /**
-     * Remove the SNAT table rules.
-     *
-     * @param deviceId Device Id
-     * @param selector selector of rules
-     * @param treatment treatment of rules
-     * @param priority priority of rules
-     * @param type the operation type of the flow rules
-     */
-    void removeSnatRules(DeviceId deviceId, TrafficSelector selector,
-                         TrafficTreatment treatment, int priority,
-                         Objective.Operation type);
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ArpServiceImpl.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ArpServiceImpl.java
deleted file mode 100644
index f8c99be..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ArpServiceImpl.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.table.impl;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.packet.EthType.EtherType;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.behaviour.ExtensionTreatmentResolver;
-import org.onosproject.net.driver.DriverHandler;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flow.instructions.ExtensionTreatment;
-import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
-import org.onosproject.net.flowobjective.DefaultForwardingObjective;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
-import org.onosproject.net.flowobjective.ForwardingObjective;
-import org.onosproject.net.flowobjective.ForwardingObjective.Flag;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.net.flowobjective.Objective.Operation;
-import org.onosproject.vtn.table.ArpService;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.slf4j.Logger;
-
-/**
- * ArpTable class providing the rules in ARP table.
- */
-public class ArpServiceImpl implements ArpService {
-    private final Logger log = getLogger(getClass());
-
-    private static final int ARP_PRIORITY = 0xffff;
-    private static final short ARP_RESPONSE = 0x2;
-    private static final EtherType ARP_TYPE = EtherType.ARP;
-
-    private final FlowObjectiveService flowObjectiveService;
-    private final ApplicationId appId;
-
-    /**
-     * Construct a ArpServiceImpl object.
-     *
-     * @param appId the application id of vtn
-     */
-    public ArpServiceImpl(ApplicationId appId) {
-        this.appId = checkNotNull(appId, "ApplicationId can not be null");
-        ServiceDirectory serviceDirectory = new DefaultServiceDirectory();
-        this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class);
-    }
-
-    @Override
-    public void programArpRules(DriverHandler hander, DeviceId deviceId,
-                                IpAddress dstIP, SegmentationId srcVni,
-                                     MacAddress dstMac, Operation type) {
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchEthType(ARP_TYPE.ethType().toShort())
-                .matchArpTpa(Ip4Address.valueOf(dstIP.toString()))
-                .matchTunnelId(Long.parseLong(srcVni.segmentationId())).build();
-
-        ExtensionTreatmentResolver resolver = hander
-                .behaviour(ExtensionTreatmentResolver.class);
-        ExtensionTreatment ethSrcToDst = resolver
-                .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes
-                                         .NICIRA_MOV_ETH_SRC_TO_DST.type());
-        ExtensionTreatment arpShaToTha = resolver
-                .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes
-                                         .NICIRA_MOV_ARP_SHA_TO_THA.type());
-        ExtensionTreatment arpSpaToTpa = resolver
-                .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes
-                                         .NICIRA_MOV_ARP_SPA_TO_TPA.type());
-        TrafficTreatment treatment = DefaultTrafficTreatment.builder()
-                .extension(ethSrcToDst, deviceId)
-                .setEthSrc(dstMac).setArpOp(ARP_RESPONSE)
-                .extension(arpShaToTha, deviceId)
-                .extension(arpSpaToTpa, deviceId)
-                .setArpSha(dstMac).setArpSpa(dstIP)
-                .setOutput(PortNumber.IN_PORT).build();
-
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment).withSelector(selector)
-                .fromApp(appId).withFlag(Flag.SPECIFIC)
-                .withPriority(ARP_PRIORITY);
-
-        if (type.equals(Objective.Operation.ADD)) {
-            log.debug("PrivateArpRules-->ADD");
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            log.debug("PrivateArpRules-->REMOVE");
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-    }
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ClassifierServiceImpl.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ClassifierServiceImpl.java
deleted file mode 100644
index 9df4663..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ClassifierServiceImpl.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.table.impl;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.packet.EthType.EtherType;
-import org.onlab.packet.Ethernet;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Port;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flow.criteria.Criteria;
-import org.onosproject.net.flow.instructions.Instructions;
-import org.onosproject.net.flowobjective.DefaultForwardingObjective;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
-import org.onosproject.net.flowobjective.ForwardingObjective;
-import org.onosproject.net.flowobjective.ForwardingObjective.Flag;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.net.flowobjective.Objective.Operation;
-import org.onosproject.vtn.table.ClassifierService;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.slf4j.Logger;
-
-import com.google.common.collect.Sets;
-
-/**
- * Provides implementation of ClassifierService.
- */
-public class ClassifierServiceImpl implements ClassifierService {
-    private final Logger log = getLogger(getClass());
-
-    private static final EtherType ETH_TYPE = EtherType.ARP;
-    private static final int ARP_CLASSIFIER_PRIORITY = 60000;
-    private static final int L3_CLASSIFIER_PRIORITY = 0xffff;
-    private static final int L2_CLASSIFIER_PRIORITY = 50000;
-    private static final int USERDATA_CLASSIFIER_PRIORITY = 65535;
-    private final FlowObjectiveService flowObjectiveService;
-    private final ApplicationId appId;
-
-    /**
-     * Constructor.
-     *
-     * @param appId the application id of vtn
-     */
-    public ClassifierServiceImpl(ApplicationId appId) {
-        this.appId = checkNotNull(appId, "ApplicationId can not be null");
-        ServiceDirectory serviceDirectory = new DefaultServiceDirectory();
-        this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class);
-    }
-
-    @Override
-    public void programLocalIn(DeviceId deviceId,
-                               SegmentationId segmentationId, PortNumber inPort,
-                               MacAddress srcMac, ApplicationId appid,
-                               Objective.Operation type) {
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchInPort(inPort).matchEthSrc(srcMac).build();
-        TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-        treatment.add(Instructions
-                .modTunnelId(Long.parseLong(segmentationId.toString())));
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment.build())
-                .withSelector(selector).fromApp(appId).makePermanent()
-                .withFlag(Flag.SPECIFIC).withPriority(L2_CLASSIFIER_PRIORITY);
-        if (type.equals(Objective.Operation.ADD)) {
-            log.debug("programLocalIn-->ADD");
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            log.debug("programLocalIn-->REMOVE");
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-    }
-
-    @Override
-    public void programTunnelIn(DeviceId deviceId,
-                                SegmentationId segmentationId,
-                                Iterable<PortNumber> localTunnelPorts,
-                                Objective.Operation type) {
-        if (localTunnelPorts == null) {
-            log.info("No tunnel port in device");
-            return;
-        }
-        Sets.newHashSet(localTunnelPorts).forEach(tp -> {
-            TrafficSelector selector = DefaultTrafficSelector.builder()
-                    .matchInPort(tp).add(Criteria.matchTunnelId(Long
-                            .parseLong(segmentationId.toString())))
-                    .build();
-
-            TrafficTreatment treatment = DefaultTrafficTreatment.builder()
-                    .build();
-            ForwardingObjective.Builder objective = DefaultForwardingObjective
-                    .builder().withTreatment(treatment).withSelector(selector)
-                    .fromApp(appId).makePermanent().withFlag(Flag.SPECIFIC)
-                    .withPriority(L2_CLASSIFIER_PRIORITY);
-            if (type.equals(Objective.Operation.ADD)) {
-                log.debug("programTunnelIn-->ADD");
-                flowObjectiveService.forward(deviceId, objective.add());
-            } else {
-                log.debug("programTunnelIn-->REMOVE");
-                flowObjectiveService.forward(deviceId, objective.remove());
-            }
-        });
-    }
-
-    @Override
-    public void programL3ExPortClassifierRules(DeviceId deviceId, PortNumber inPort,
-                                               IpAddress dstIp,
-                                               Objective.Operation type) {
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchEthType(Ethernet.TYPE_IPV4).matchInPort(inPort)
-                .matchIPDst(IpPrefix.valueOf(dstIp, 32)).build();
-        TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment).withSelector(selector)
-                .fromApp(appId).withFlag(Flag.SPECIFIC)
-                .withPriority(L3_CLASSIFIER_PRIORITY);
-        if (type.equals(Objective.Operation.ADD)) {
-            log.debug("L3ExToInClassifierRules-->ADD");
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            log.debug("L3ExToInClassifierRules-->REMOVE");
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-    }
-
-    @Override
-    public void programL3InPortClassifierRules(DeviceId deviceId, PortNumber inPort,
-                                               MacAddress srcMac, MacAddress dstMac,
-                                               SegmentationId actionVni,
-                                               Objective.Operation type) {
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchInPort(inPort).matchEthSrc(srcMac).matchEthDst(dstMac)
-                .build();
-        TrafficTreatment treatment = DefaultTrafficTreatment.builder()
-                .setTunnelId(Long.parseLong(actionVni.segmentationId())).build();
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment).withSelector(selector)
-                .fromApp(appId).withFlag(Flag.SPECIFIC)
-                .withPriority(L3_CLASSIFIER_PRIORITY);
-        if (type.equals(Objective.Operation.ADD)) {
-            log.debug("L3InternalClassifierRules-->ADD");
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            log.debug("L3InternalClassifierRules-->REMOVE");
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-    }
-
-    @Override
-    public void programArpClassifierRules(DeviceId deviceId, IpAddress dstIp,
-                                          SegmentationId actionVni,
-                                          Objective.Operation type) {
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchEthType(ETH_TYPE.ethType().toShort())
-                .matchArpTpa(Ip4Address.valueOf(dstIp.toString()))
-                .build();
-        TrafficTreatment treatment = DefaultTrafficTreatment.builder()
-                .setTunnelId(Long.parseLong(actionVni.segmentationId()))
-                .build();
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment).withSelector(selector)
-                .fromApp(appId).withFlag(Flag.SPECIFIC)
-                .withPriority(ARP_CLASSIFIER_PRIORITY);
-        if (type.equals(Objective.Operation.ADD)) {
-            log.debug("ArpClassifierRules-->ADD");
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            log.debug("ArpClassifierRules-->REMOVE");
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-    }
-
-    @Override
-    public void programArpClassifierRules(DeviceId deviceId, PortNumber inPort,
-                                          IpAddress dstIp,
-                                          SegmentationId actionVni,
-                                          Objective.Operation type) {
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchInPort(inPort).matchEthType(ETH_TYPE.ethType().toShort())
-                .matchArpTpa(Ip4Address.valueOf(dstIp.toString())).build();
-        TrafficTreatment treatment = DefaultTrafficTreatment.builder()
-                .setTunnelId(Long.parseLong(actionVni.segmentationId()))
-                .build();
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment).withSelector(selector)
-                .fromApp(appId).withFlag(Flag.SPECIFIC)
-                .withPriority(ARP_CLASSIFIER_PRIORITY);
-        if (type.equals(Objective.Operation.ADD)) {
-            log.debug("ArpClassifierRules-->ADD");
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            log.debug("ArpClassifierRules-->REMOVE");
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-    }
-
-    @Override
-    public void programUserdataClassifierRules(DeviceId deviceId,
-                                               IpPrefix ipPrefix,
-                                               IpAddress dstIp,
-                                               MacAddress dstmac,
-                                               SegmentationId actionVni,
-                                               Objective.Operation type) {
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchEthType(Ethernet.TYPE_IPV4).matchIPSrc(ipPrefix)
-                .matchIPDst(IpPrefix.valueOf(dstIp, 32)).build();
-        TrafficTreatment treatment = DefaultTrafficTreatment.builder()
-                .setTunnelId(Long.parseLong(actionVni.segmentationId()))
-                .setEthDst(dstmac).build();
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment).withSelector(selector)
-                .fromApp(appId).withFlag(Flag.SPECIFIC)
-                .withPriority(USERDATA_CLASSIFIER_PRIORITY);
-        if (type.equals(Objective.Operation.ADD)) {
-            log.debug("UserdataClassifierRules-->ADD");
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            log.debug("UserdataClassifierRules-->REMOVE");
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-    }
-
-    @Override
-    public void programExportPortArpClassifierRules(Port exportPort,
-                                                    DeviceId deviceId,
-                                                    Operation type) {
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchEthType(EtherType.ARP.ethType().toShort())
-                .matchInPort(exportPort.number()).build();
-        TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-        treatment.add(Instructions.createOutput(PortNumber.CONTROLLER));
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment.build())
-                .withSelector(selector).fromApp(appId).withFlag(Flag.SPECIFIC)
-                .withPriority(L3_CLASSIFIER_PRIORITY);
-        if (type.equals(Objective.Operation.ADD)) {
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-    }
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/DnatServiceImpl.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/DnatServiceImpl.java
deleted file mode 100644
index 7753486..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/DnatServiceImpl.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.table.impl;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.packet.Ethernet;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flowobjective.DefaultForwardingObjective;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
-import org.onosproject.net.flowobjective.ForwardingObjective;
-import org.onosproject.net.flowobjective.ForwardingObjective.Flag;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtn.table.DnatService;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.slf4j.Logger;
-
-/**
- * Provides implementation of DnatService.
- */
-public class DnatServiceImpl implements DnatService {
-    private final Logger log = getLogger(getClass());
-
-    private static final int DNAT_PRIORITY = 0xffff;
-    private static final int PREFIX_LENGTH = 32;
-
-    private final FlowObjectiveService flowObjectiveService;
-    private final ApplicationId appId;
-
-    /**
-     * Construct a DnatServiceImpl object.
-     *
-     * @param appId the application id of vtn
-     */
-    public DnatServiceImpl(ApplicationId appId) {
-        this.appId = checkNotNull(appId, "ApplicationId can not be null");
-        ServiceDirectory serviceDirectory = new DefaultServiceDirectory();
-        this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class);
-    }
-
-    @Override
-    public void programRules(DeviceId deviceId, IpAddress dstIp,
-                             MacAddress ethSrc, IpAddress ipDst,
-                             SegmentationId actionVni, Objective.Operation type) {
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchEthType(Ethernet.TYPE_IPV4)
-                .matchIPDst(IpPrefix.valueOf(dstIp, PREFIX_LENGTH)).build();
-
-        TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-        treatment.setEthSrc(ethSrc).setIpDst(ipDst)
-                .setTunnelId(Long.parseLong(actionVni.segmentationId()));
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment.build())
-                .withSelector(selector).fromApp(appId).withFlag(Flag.SPECIFIC)
-                .withPriority(DNAT_PRIORITY);
-        if (type.equals(Objective.Operation.ADD)) {
-            log.debug("RouteRules-->ADD");
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            log.debug("RouteRules-->REMOVE");
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-    }
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L2ForwardServiceImpl.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L2ForwardServiceImpl.java
deleted file mode 100644
index 41089e0..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L2ForwardServiceImpl.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.table.impl;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_TUNNEL_DST;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.GroupId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.behaviour.ExtensionTreatmentResolver;
-import org.onosproject.net.driver.DriverHandler;
-import org.onosproject.net.driver.DriverService;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flow.TrafficTreatment.Builder;
-import org.onosproject.net.flow.criteria.Criteria;
-import org.onosproject.net.flow.instructions.ExtensionTreatment;
-import org.onosproject.net.flowobjective.DefaultForwardingObjective;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
-import org.onosproject.net.flowobjective.ForwardingObjective;
-import org.onosproject.net.flowobjective.ForwardingObjective.Flag;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtn.table.L2ForwardService;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.slf4j.Logger;
-
-import com.google.common.collect.Sets;
-
-/**
- * Provides implementation of L2ForwardService.
- */
-public final class L2ForwardServiceImpl implements L2ForwardService {
-    private final Logger log = getLogger(getClass());
-
-    private static final int MAC_PRIORITY = 0xffff;
-    public static final Integer GROUP_ID = 1;
-    private final FlowObjectiveService flowObjectiveService;
-    private final ApplicationId appId;
-    private final DriverService driverService;
-    /**
-     * Constructor.
-     *
-     * @param appId the application id of vtn
-     */
-    public L2ForwardServiceImpl(ApplicationId appId) {
-        this.appId = checkNotNull(appId, "ApplicationId can not be null");
-        ServiceDirectory serviceDirectory = new DefaultServiceDirectory();
-        this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class);
-        this.driverService = serviceDirectory.get(DriverService.class);
-    }
-
-    @Override
-    public void programLocalBcastRules(DeviceId deviceId,
-                                       SegmentationId segmentationId,
-                                       PortNumber inPort,
-                                       Iterable<PortNumber> localVmPorts,
-                                       Iterable<PortNumber> localTunnelPorts,
-                                       Objective.Operation type) {
-        if (localVmPorts == null || localTunnelPorts == null) {
-            log.info("No other host port and tunnel in the device");
-            return;
-        }
-        Sets.newHashSet(localVmPorts).forEach(lp -> {
-            TrafficSelector selector = DefaultTrafficSelector.builder()
-                    .matchInPort(lp).matchEthDst(MacAddress.BROADCAST)
-                    .add(Criteria.matchTunnelId(Long
-                            .parseLong(segmentationId.toString())))
-                    .build();
-            TrafficTreatment.Builder treatment = DefaultTrafficTreatment
-                    .builder();
-            boolean flag = false;
-            for (PortNumber outPort : localVmPorts) {
-                flag = true;
-                if (outPort != lp) {
-                    treatment.setOutput(outPort);
-                }
-            }
-            if (type == Objective.Operation.REMOVE && inPort.equals(lp)) {
-                flag = false;
-            }
-            treatment.group(new GroupId(GROUP_ID));
-            ForwardingObjective.Builder objective = DefaultForwardingObjective
-                    .builder().withTreatment(treatment.build())
-                    .withSelector(selector).fromApp(appId).makePermanent()
-                    .withFlag(Flag.SPECIFIC).withPriority(MAC_PRIORITY);
-            if (flag) {
-                flowObjectiveService.forward(deviceId, objective.add());
-            } else {
-                flowObjectiveService.forward(deviceId, objective.remove());
-            }
-        });
-    }
-
-    @Override
-    public void programTunnelBcastRules(DeviceId deviceId,
-                                        SegmentationId segmentationId,
-                                        Iterable<PortNumber> localVmPorts,
-                                        Iterable<PortNumber> localTunnelPorts,
-                                        Objective.Operation type) {
-        if (localVmPorts == null || localTunnelPorts == null) {
-            log.info("No other host port or tunnel ports in the device");
-            return;
-        }
-        Sets.newHashSet(localTunnelPorts).forEach(tp -> {
-            TrafficSelector selector = DefaultTrafficSelector.builder()
-                    .matchInPort(tp)
-                    .add(Criteria.matchTunnelId(Long
-                            .parseLong(segmentationId.toString())))
-                    .matchEthDst(MacAddress.BROADCAST).build();
-            TrafficTreatment.Builder treatment = DefaultTrafficTreatment
-                    .builder();
-
-            for (PortNumber outPort : localVmPorts) {
-                treatment.setOutput(outPort);
-            }
-
-            ForwardingObjective.Builder objective = DefaultForwardingObjective
-                    .builder().withTreatment(treatment.build())
-                    .withSelector(selector).fromApp(appId).makePermanent()
-                    .withFlag(Flag.SPECIFIC).withPriority(MAC_PRIORITY);
-            if (type.equals(Objective.Operation.ADD)) {
-                if (Sets.newHashSet(localVmPorts).isEmpty()) {
-                    flowObjectiveService.forward(deviceId, objective.remove());
-                } else {
-                    flowObjectiveService.forward(deviceId, objective.add());
-                }
-            } else {
-                flowObjectiveService.forward(deviceId, objective.remove());
-            }
-        });
-    }
-
-    @Override
-    public void programLocalOut(DeviceId deviceId,
-                                SegmentationId segmentationId,
-                                PortNumber outPort, MacAddress sourceMac,
-                                Objective.Operation type) {
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchTunnelId(Long.parseLong(segmentationId.toString()))
-                .matchEthDst(sourceMac).build();
-        TrafficTreatment treatment = DefaultTrafficTreatment.builder()
-                .setOutput(outPort).build();
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment).withSelector(selector)
-                .fromApp(appId).withFlag(Flag.SPECIFIC)
-                .withPriority(MAC_PRIORITY);
-        if (type.equals(Objective.Operation.ADD)) {
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-
-    }
-
-    @Override
-    public void programExternalOut(DeviceId deviceId,
-                                SegmentationId segmentationId,
-                                PortNumber outPort, MacAddress sourceMac,
-                                Objective.Operation type) {
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchTunnelId(Long.parseLong(segmentationId.toString()))
-                .matchEthSrc(sourceMac).build();
-        TrafficTreatment treatment = DefaultTrafficTreatment.builder()
-                .setOutput(outPort).build();
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment).withSelector(selector)
-                .fromApp(appId).withFlag(Flag.SPECIFIC)
-                .withPriority(MAC_PRIORITY);
-        if (type.equals(Objective.Operation.ADD)) {
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-
-    }
-
-    @Override
-    public void programTunnelOut(DeviceId deviceId,
-                                 SegmentationId segmentationId,
-                                 PortNumber tunnelOutPort, MacAddress dstMac,
-                                 Objective.Operation type, IpAddress ipAddress) {
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchEthDst(dstMac).add(Criteria.matchTunnelId(Long
-                        .parseLong(segmentationId.toString())))
-                .build();
-
-        DriverHandler handler = driverService.createHandler(deviceId);
-        ExtensionTreatmentResolver resolver =  handler.behaviour(ExtensionTreatmentResolver.class);
-        ExtensionTreatment treatment = resolver.getExtensionInstruction(NICIRA_SET_TUNNEL_DST.type());
-        try {
-            treatment.setPropertyValue("tunnelDst", Ip4Address.valueOf(ipAddress.toString()));
-        } catch (Exception e) {
-           log.error("Failed to get extension instruction to set tunnel dst {}", deviceId);
-        }
-
-        Builder builder = DefaultTrafficTreatment.builder();
-        builder.extension(treatment, deviceId)
-                .setOutput(tunnelOutPort).build();
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(builder.build()).withSelector(selector)
-                .fromApp(appId).withFlag(Flag.SPECIFIC)
-                .withPriority(MAC_PRIORITY);
-        if (type.equals(Objective.Operation.ADD)) {
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-
-    }
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L3ForwardServiceImpl.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L3ForwardServiceImpl.java
deleted file mode 100644
index 0841d36..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L3ForwardServiceImpl.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.table.impl;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.packet.Ethernet;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flow.instructions.Instructions;
-import org.onosproject.net.flowobjective.DefaultForwardingObjective;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
-import org.onosproject.net.flowobjective.ForwardingObjective;
-import org.onosproject.net.flowobjective.ForwardingObjective.Flag;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.net.flowobjective.Objective.Operation;
-import org.onosproject.vtn.table.L3ForwardService;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.slf4j.Logger;
-
-/**
- * Provides implementation of L3ForwardService.
- */
-public class L3ForwardServiceImpl implements L3ForwardService {
-    private final Logger log = getLogger(getClass());
-
-    private static final int L3FWD_PRIORITY = 0xffff;
-    private static final short IP_TYPE = Ethernet.TYPE_IPV4;
-    private static final int PREFIX_LENGTH = 32;
-
-    private final FlowObjectiveService flowObjectiveService;
-    private final ApplicationId appId;
-
-    /**
-     * Construct a L3ForwardServiceImpl object.
-     *
-     * @param appId the application id of vtn
-     */
-    public L3ForwardServiceImpl(ApplicationId appId) {
-        this.appId = checkNotNull(appId, "ApplicationId can not be null");
-        ServiceDirectory serviceDirectory = new DefaultServiceDirectory();
-        this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class);
-    }
-
-    @Override
-    public void programRouteRules(DeviceId deviceId, SegmentationId l3Vni,
-                                  IpAddress dstVmIP, SegmentationId dstVni,
-                                  MacAddress dstVmGwMac, MacAddress dstVmMac,
-                                  Operation type) {
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchEthType(IP_TYPE)
-                .matchTunnelId(Long.parseLong(l3Vni.segmentationId()))
-                .matchIPDst(IpPrefix.valueOf(dstVmIP, PREFIX_LENGTH)).build();
-        TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-        treatment.setEthSrc(dstVmGwMac)
-                .setEthDst(dstVmMac)
-                .add(Instructions.modTunnelId(Long.parseLong(dstVni
-                             .segmentationId())));
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment.build())
-                .withSelector(selector).fromApp(appId).withFlag(Flag.SPECIFIC)
-                .withPriority(L3FWD_PRIORITY);
-        if (type.equals(Objective.Operation.ADD)) {
-            log.debug("RouteRules-->ADD");
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            log.debug("RouteRules-->REMOVE");
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-    }
-
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/SnatServiceImpl.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/SnatServiceImpl.java
deleted file mode 100644
index 8b44938..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/SnatServiceImpl.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.table.impl;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.packet.Ethernet;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flow.instructions.Instructions;
-import org.onosproject.net.flowobjective.DefaultForwardingObjective;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
-import org.onosproject.net.flowobjective.ForwardingObjective;
-import org.onosproject.net.flowobjective.ForwardingObjective.Flag;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.net.flowobjective.Objective.Operation;
-import org.onosproject.vtn.table.SnatService;
-import org.onosproject.vtnrsc.SegmentationId;
-
-/**
- * Provides implementation of SnatService.
- */
-public class SnatServiceImpl implements SnatService {
-
-    private static final int SNAT_SAME_SEG_PRIORITY = 0xffff;
-    private static final int SNAT_SAME_SEG_CON_PRIORITY = 0xfff0;
-    private static final int SNAT_DIFF_SEG_PRIORITY = 0xffe0;
-    private static final int PREFIC_LENGTH = 32;
-
-    private final FlowObjectiveService flowObjectiveService;
-    private final ApplicationId appId;
-
-    /**
-     * Construct a SnatServiceImpl object.
-     *
-     * @param appId the application id of vtn
-     */
-    public SnatServiceImpl(ApplicationId appId) {
-        this.appId = checkNotNull(appId, "ApplicationId can not be null");
-        ServiceDirectory serviceDirectory = new DefaultServiceDirectory();
-        this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class);
-    }
-
-    @Override
-    public void programSnatSameSegmentRules(DeviceId deviceId, SegmentationId matchVni,
-                             IpAddress srcIP, IpAddress dstIP, MacAddress ethDst,
-                             MacAddress ethSrc, IpAddress ipSrc,
-                             SegmentationId actionVni, Objective.Operation type) {
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchEthType(Ethernet.TYPE_IPV4)
-                .matchTunnelId(Long.parseLong(matchVni.segmentationId()))
-                .matchIPSrc(IpPrefix.valueOf(srcIP, PREFIC_LENGTH))
-                .matchIPDst(IpPrefix.valueOf(dstIP, PREFIC_LENGTH)).build();
-
-        TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-        treatment.setEthDst(ethDst).setEthSrc(ethSrc).setIpSrc(ipSrc)
-                .setTunnelId(Long.parseLong(actionVni.segmentationId()));
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment.build())
-                .withSelector(selector).fromApp(appId).withFlag(Flag.SPECIFIC)
-                .withPriority(SNAT_SAME_SEG_PRIORITY);
-        if (type.equals(Objective.Operation.ADD)) {
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-    }
-
-    @Override
-    public void programSnatDiffSegmentRules(DeviceId deviceId, SegmentationId matchVni,
-                             IpAddress srcIP, MacAddress ethDst,
-                             MacAddress ethSrc, IpAddress ipSrc,
-                             SegmentationId actionVni, Objective.Operation type) {
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchEthType(Ethernet.TYPE_IPV4)
-                .matchTunnelId(Long.parseLong(matchVni.segmentationId()))
-                .matchIPSrc(IpPrefix.valueOf(srcIP, PREFIC_LENGTH)).build();
-
-        TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-        treatment.setEthDst(ethDst).setEthSrc(ethSrc).setIpSrc(ipSrc)
-                .setTunnelId(Long.parseLong(actionVni.segmentationId()));
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment.build())
-                .withSelector(selector).fromApp(appId).withFlag(Flag.SPECIFIC)
-                .withPriority(SNAT_DIFF_SEG_PRIORITY);
-        if (type.equals(Objective.Operation.ADD)) {
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-    }
-
-    @Override
-    public void programSnatSameSegmentUploadControllerRules(DeviceId deviceId,
-                                                            SegmentationId matchVni,
-                                                            IpAddress srcIP,
-                                                            IpAddress dstIP,
-                                                            IpPrefix prefix,
-                                                            Operation type) {
-
-        TrafficSelector selector = DefaultTrafficSelector.builder()
-                .matchEthType(Ethernet.TYPE_IPV4)
-                .matchTunnelId(Long.parseLong(matchVni.segmentationId()))
-                .matchIPSrc(IpPrefix.valueOf(srcIP, PREFIC_LENGTH))
-                .matchIPDst(IpPrefix.valueOf(dstIP, prefix.prefixLength()))
-                .build();
-        TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-        treatment.add(Instructions.createOutput(PortNumber.CONTROLLER));
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment.build())
-                .withSelector(selector).fromApp(appId).withFlag(Flag.SPECIFIC)
-                .withPriority(SNAT_SAME_SEG_CON_PRIORITY);
-        if (type.equals(Objective.Operation.ADD)) {
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-    }
-
-    @Override
-    public void removeSnatRules(DeviceId deviceId, TrafficSelector selector,
-                                TrafficTreatment treatment, int priority,
-                                Objective.Operation type) {
-        ForwardingObjective.Builder objective = DefaultForwardingObjective
-                .builder().withTreatment(treatment).withSelector(selector)
-                .fromApp(appId).withFlag(Flag.SPECIFIC).withPriority(priority);
-        if (type.equals(Objective.Operation.ADD)) {
-            flowObjectiveService.forward(deviceId, objective.add());
-        } else {
-            flowObjectiveService.forward(deviceId, objective.remove());
-        }
-    }
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/package-info.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/package-info.java
deleted file mode 100644
index eb81a89..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * VTN application that applies configuration and flows to the device.
- */
-package org.onosproject.vtn.table.impl;
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/package-info.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/package-info.java
deleted file mode 100644
index a4bda37..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * VTN application that applies configuration and flows to the device.
- */
-package org.onosproject.vtn.table;
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/DataPathIdGenerator.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/DataPathIdGenerator.java
deleted file mode 100644
index f164ea0..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/DataPathIdGenerator.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.util;
-
-import static org.onlab.util.Tools.toHex;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Calendar;
-
-import org.onosproject.core.IdGenerator;
-import org.onosproject.net.DeviceId;
-
-public final class DataPathIdGenerator implements IdGenerator {
-    private static final String SCHEME = "of";
-    private String ipAddress;
-    private String timeStamp;
-
-    private DataPathIdGenerator(Builder builder) {
-        this.ipAddress = builder.ipAddress;
-        Calendar cal = Calendar.getInstance();
-        this.timeStamp = String.valueOf(cal.get(Calendar.SECOND))
-                + String.valueOf(cal.get(Calendar.MILLISECOND));
-    }
-
-    @Override
-    public long getNewId() {
-        String dpid = ipAddress.replace(".", "") + timeStamp;
-        return Long.parseLong(dpid);
-    }
-
-    public String getDpId() {
-        return toHex(getNewId());
-    }
-
-    public DeviceId getDeviceId() {
-        try {
-            URI uri = new URI(SCHEME, toHex(getNewId()), null);
-            return DeviceId.deviceId(uri);
-        } catch (URISyntaxException e) {
-            return null;
-        }
-    }
-
-    /**
-     * Returns a new builder.
-     *
-     * @return new builder
-     */
-    public static Builder builder() {
-        return new Builder();
-    }
-
-    public static final class Builder {
-        private String ipAddress;
-
-        public Builder addIpAddress(String ipAddress) {
-            this.ipAddress = ipAddress;
-            return this;
-        }
-
-        public DataPathIdGenerator build() {
-            return new DataPathIdGenerator(this);
-        }
-    }
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/IpUtil.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/IpUtil.java
deleted file mode 100644
index afc8ab3..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/IpUtil.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtn.util;
-
-import org.onlab.packet.IpAddress;
-
-/**
- * IpUtil utility class.
- */
-public final class IpUtil {
-
-    private IpUtil() {
-    }
-
-    /**
-     * check source Ip and destination Ip in same Subnet.
-     *
-     * @param srcIp source Ip
-     * @param dstIp destination
-     * @param mask netmask length
-     * @return boolean
-     */
-    public static boolean checkSameSegment(IpAddress srcIp, IpAddress dstIp,
-                                           int mask) {
-        String[] ips = srcIp.toString().split("\\.");
-        int ipAddr = (Integer.parseInt(ips[0]) << 24)
-                | (Integer.parseInt(ips[1]) << 16)
-                | (Integer.parseInt(ips[2]) << 8)
-                | Integer.parseInt(ips[3]);
-        int netmask = 0xFFFFFFFF << (32 - mask);
-        String[] cidrIps = dstIp.toString().split("\\.");
-        int cidrIpAddr = (Integer.parseInt(cidrIps[0]) << 24)
-                | (Integer.parseInt(cidrIps[1]) << 16)
-                | (Integer.parseInt(cidrIps[2]) << 8)
-                | Integer.parseInt(cidrIps[3]);
-
-        return (ipAddr & netmask) == (cidrIpAddr & netmask);
-    }
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/VtnConfig.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/VtnConfig.java
deleted file mode 100644
index 859818d..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/VtnConfig.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.util;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-import org.onlab.packet.IpAddress;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.behaviour.BridgeConfig;
-import org.onosproject.net.behaviour.BridgeDescription;
-import org.onosproject.net.behaviour.BridgeName;
-import org.onosproject.net.behaviour.DefaultBridgeDescription;
-import org.onosproject.net.behaviour.DefaultTunnelDescription;
-import org.onosproject.net.behaviour.InterfaceConfig;
-import org.onosproject.net.behaviour.TunnelDescription;
-import org.onosproject.net.behaviour.TunnelEndPoints;
-import org.onosproject.net.behaviour.TunnelKeys;
-import org.onosproject.net.driver.DriverHandler;
-
-/**
- * Applies configuration to the device.
- */
-public final class VtnConfig {
-
-    public static final String DEFAULT_BRIDGE_NAME = "br-int";
-    private static final String DEFAULT_TUNNEL = "vxlan-0.0.0.0";
-    private static final Map<String, String> DEFAULT_TUNNEL_OPTIONS = new HashMap<String, String>() {
-        {
-            put("key", "flow");
-            put("remote_ip", "flow");
-            put("dst_port", "4790");
-            put("in_nsi", "flow");
-            put("in_nsp", "flow");
-            put("out_nsi", "flow");
-            put("out_nsp", "flow");
-            put("in_nshc1", "flow");
-            put("out_nshc1", "flow");
-            put("in_nshc2", "flow");
-            put("out_nshc2", "flow");
-            put("in_nshc3", "flow");
-            put("out_nshc3", "flow");
-            put("in_nshc4", "flow");
-            put("out_nshc4", "flow");
-            put("exts", "gpe");
-        }
-    };
-    /**
-     * Constructs a vtn config object. Utility classes should not have a
-     * public or default constructor, otherwise IDE will compile unsuccessfully. This
-     * class should not be instantiated.
-     */
-    private VtnConfig() {
-    }
-
-    /**
-     * Creates or update bridge in the controller device.
-     *
-     * @param handler DriverHandler
-     * @param dpid datapath id
-     * @param exPortName external port name
-     */
-    public static void applyBridgeConfig(DriverHandler handler, String dpid, String exPortName) {
-        BridgeConfig bridgeConfig = handler.behaviour(BridgeConfig.class);
-        BridgeDescription bridgeDesc = DefaultBridgeDescription.builder()
-                .name(DEFAULT_BRIDGE_NAME)
-                .failMode(BridgeDescription.FailMode.SECURE)
-                .datapathId(dpid)
-                .disableInBand()
-                .enableLocalController()
-                .build();
-
-        bridgeConfig.addBridge(bridgeDesc);
-        bridgeConfig.addPort(BridgeName.bridgeName(DEFAULT_BRIDGE_NAME), exPortName);
-    }
-
-    /**
-     * Creates or update tunnel in the controller device.
-     *
-     * @param handler DriverHandler
-     * @param srcIp the ipAddress of the local controller device
-     */
-    public static void applyTunnelConfig(DriverHandler handler, IpAddress srcIp) {
-        DefaultAnnotations.Builder optionBuilder = DefaultAnnotations.builder();
-        for (String key : DEFAULT_TUNNEL_OPTIONS.keySet()) {
-            optionBuilder.set(key, DEFAULT_TUNNEL_OPTIONS.get(key));
-        }
-
-        InterfaceConfig interfaceConfig = handler.behaviour(InterfaceConfig.class);
-        TunnelDescription tunnel = DefaultTunnelDescription.builder()
-                .deviceId(DEFAULT_BRIDGE_NAME)
-                .ifaceName(DEFAULT_TUNNEL)
-                .type(TunnelDescription.Type.VXLAN)
-                .local(TunnelEndPoints.ipTunnelEndpoint(srcIp))
-                .remote(TunnelEndPoints.flowTunnelEndpoint())
-                .key(TunnelKeys.flowTunnelKey())
-                .otherConfigs(optionBuilder.build())
-                .build();
-        interfaceConfig.addTunnelMode(DEFAULT_TUNNEL, tunnel);
-    }
-
-    /**
-     * Creates or update tunnel in the controller device.
-     *
-     * @param handler DriverHandler
-     */
-    public static void removeTunnelConfig(DriverHandler handler) {
-        InterfaceConfig interfaceConfig = handler.behaviour(InterfaceConfig.class);
-        interfaceConfig.removeTunnelMode(DEFAULT_TUNNEL);
-    }
-
-    /**
-     * Gets ports in the controller device.
-     *
-     * @param handler DriverHandler
-     * @return set of port numbers
-     */
-    public static Set<PortNumber> getPortNumbers(DriverHandler handler) {
-        BridgeConfig bridgeConfig = handler.behaviour(BridgeConfig.class);
-        return bridgeConfig.getPortNumbers();
-    }
-
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/VtnData.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/VtnData.java
deleted file mode 100644
index f401bde..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/VtnData.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtn.util;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.onlab.packet.IpAddress;
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Port;
-import org.onosproject.net.PortNumber;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.collect.Sets;
-
-/**
- * VtnData utility class.
- */
-public final class VtnData {
-
-    private static final Logger log = LoggerFactory.getLogger(VtnData.class);
-    private static final String SWITCH_CHANNEL_ID = "channelId";
-    private static final String PORT_HEAD = "vxlan";
-
-    /**
-     * Constructs a VtnData object. Utility classes should not have a public or
-     * default constructor, otherwise IDE will compile unsuccessfully. This
-     * class should not be instantiated.
-     */
-    private VtnData() {
-    }
-
-    /**
-     * Get the ControllerIp from the device .
-     *
-     * @param device Device
-     * @return Controller Ip
-     */
-    public static String getControllerIpOfSwitch(Device device) {
-        String url = device.annotations().value(SWITCH_CHANNEL_ID);
-        return url.substring(0, url.lastIndexOf(":"));
-    }
-
-    /**
-     * Get the ControllerId from the device .
-     *
-     * @param device Device
-     * @param devices Devices
-     * @return Controller Id
-     */
-    public static DeviceId getControllerId(Device device,
-                                           Iterable<Device> devices) {
-        for (Device d : devices) {
-            if (d.type() == Device.Type.CONTROLLER && d.id().toString()
-                    .contains(getControllerIpOfSwitch(device))) {
-                return d.id();
-            }
-        }
-        log.info("Can not find controller for device : {}", device.id());
-        return null;
-    }
-
-    /**
-     * Get local tunnel ports.
-     *
-     * @param ports Iterable of Port
-     * @return Collection of PortNumber
-     */
-    public static Collection<PortNumber> getLocalTunnelPorts(Iterable<Port> ports) {
-        Collection<PortNumber> localTunnelPorts = new ArrayList<>();
-        Sets.newHashSet(ports).stream()
-                .filter(p -> !p.number().equals(PortNumber.LOCAL))
-                .forEach(p -> {
-                    if (p.annotations().value(AnnotationKeys.PORT_NAME)
-                            .startsWith(PORT_HEAD)) {
-                        localTunnelPorts.add(p.number());
-                    }
-                });
-        return localTunnelPorts;
-    }
-
-    /**
-     * Get VirtualPort.
-     *
-     * @param vPortStore EventuallyConsistentMap of VirtualPort
-     * @param vPortId VirtualPortId of the VirtualPort
-     * @return VirtualPort
-     */
-    public static VirtualPort getPort(EventuallyConsistentMap<VirtualPortId, VirtualPort> vPortStore,
-                                      VirtualPortId vPortId) {
-        if (vPortStore != null) {
-            return vPortStore.get(vPortId);
-        }
-        return null;
-    }
-
-    /**
-     * Get VirtualPort.
-     *
-     * @param vPortStore EventuallyConsistentMap of VirtualPort
-     * @param fixedIP FixedIp of the VirtualPort
-     * @return VirtualPort
-     */
-    public static VirtualPort getPort(EventuallyConsistentMap<VirtualPortId, VirtualPort> vPortStore,
-                                      FixedIp fixedIP) {
-        if (vPortStore != null) {
-            List<VirtualPort> vPorts = new ArrayList<>();
-            vPortStore.values().forEach(p -> {
-                Iterator<FixedIp> fixedIps = p.fixedIps().iterator();
-                while (fixedIps.hasNext()) {
-                    if (fixedIps.next().equals(fixedIP)) {
-                        vPorts.add(p);
-                        break;
-                    }
-                }
-            });
-            if (vPorts.isEmpty()) {
-                return null;
-            }
-            return vPorts.get(0);
-        }
-        return null;
-    }
-
-    /**
-     * Get VirtualPort.
-     *
-     * @param vPortStore EventuallyConsistentMap of VirtualPort
-     * @param networkId TenantNetworkId of the VirtualPort
-     * @param ip IpAddress of the VirtualPort
-     * @return VirtualPort
-     */
-    public static VirtualPort getPort(EventuallyConsistentMap<VirtualPortId, VirtualPort> vPortStore,
-                                      TenantNetworkId networkId, IpAddress ip) {
-        if (vPortStore != null) {
-            List<VirtualPort> vPorts = new ArrayList<>();
-            vPortStore.values().stream()
-                    .filter(p -> p.networkId().equals(networkId))
-                    .forEach(p -> {
-                        Iterator<FixedIp> fixedIps = p.fixedIps().iterator();
-                        while (fixedIps.hasNext()) {
-                            if (fixedIps.next().ip().equals(ip)) {
-                                vPorts.add(p);
-                                break;
-                            }
-                        }
-                    });
-            if (vPorts.isEmpty()) {
-                return null;
-            }
-            return vPorts.get(0);
-        }
-        return null;
-    }
-
-}
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/package-info.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/package-info.java
deleted file mode 100644
index 5b82f88..0000000
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * VTN application that applies configuration and flows to the device.
- */
-package org.onosproject.vtn.util;
diff --git a/apps/vtn/vtnrsc/BUILD b/apps/vtn/vtnrsc/BUILD
deleted file mode 100644
index 167e717..0000000
--- a/apps/vtn/vtnrsc/BUILD
+++ /dev/null
@@ -1,21 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + KRYO + CLI + [
-    "//core/store/serializers:onos-core-serializers",
-]
-
-osgi_jar_with_tests(
-    exclude_tests = [
-        "org/onosproject/vtnrsc/util/VtnEventuallyConsistentMapTest",
-        "org/onosproject/vtnrsc/util/VtnStorageServiceTest",
-    ],
-    karaf_command_packages = [
-        "org.onosproject.vtnrsc.cli",
-        "org.onosproject.vtnrsc.cli.virtualport",
-        "org.onosproject.vtnrsc.cli.subnet",
-        "org.onosproject.vtnrsc.cli.routerinterface",
-        "org.onosproject.vtnrsc.cli.router",
-        "org.onosproject.vtnrsc.cli.network",
-        "org.onosproject.vtnrsc.cli.floatingip",
-    ],
-    test_deps = TEST_REST,
-    deps = COMPILE_DEPS,
-)
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/AllocationPool.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/AllocationPool.java
deleted file mode 100644
index 4701577..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/AllocationPool.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.packet.IpAddress;
-
-/**
- * The continuous IP address range between the start address and the end address for the allocation pools.
- */
-public interface AllocationPool {
-
-    /**
-     * The start address for the allocation pool.
-     *
-     * @return startIp
-     */
-    IpAddress startIp();
-
-    /**
-     * The end address for the allocation pool.
-     *
-     * @return endIp
-     */
-    IpAddress endIp();
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/AllowedAddressPair.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/AllowedAddressPair.java
deleted file mode 100644
index 7ea093a..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/AllowedAddressPair.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Objects;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-
-/**
- * Immutable representation of a allowed address pair.
- */
-public final class AllowedAddressPair {
-    private final IpAddress ip;
-    private final MacAddress mac;
-    // Public construction is prohibited
-    private AllowedAddressPair(IpAddress ip, MacAddress mac) {
-        checkNotNull(ip, "IpAddress cannot be null");
-        checkNotNull(mac, "MacAddress cannot be null");
-        this.ip = ip;
-        this.mac = mac;
-    }
-    /**
-     * Returns the AllowedAddressPair ip address.
-     *
-     * @return ip address
-     */
-    public IpAddress ip() {
-        return ip;
-    }
-
-    /**
-     * Returns the AllowedAddressPair MAC address.
-     *
-     * @return MAC address
-     */
-    public MacAddress mac() {
-        return mac;
-    }
-
-
-    /**
-     * Creates a allowedAddressPair using the supplied ipAddress &amp;
-     * macAddress.
-     *
-     * @param ip IP address
-     * @param mac MAC address
-     * @return AllowedAddressPair
-     */
-    public static AllowedAddressPair allowedAddressPair(IpAddress ip,
-                                                        MacAddress mac) {
-        return new AllowedAddressPair(ip, mac);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(ip, mac);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof AllowedAddressPair) {
-            final AllowedAddressPair that = (AllowedAddressPair) obj;
-            return Objects.equals(this.ip, that.ip)
-                    && Objects.equals(this.mac, that.mac);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("ip", ip).add("mac", mac).toString();
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/BindingHostId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/BindingHostId.java
deleted file mode 100644
index 1e7e825..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/BindingHostId.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.util.Identifier;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-public final class BindingHostId extends Identifier<String> {
-    // Public construction is prohibited
-    private BindingHostId(String bindingHostId) {
-        super(checkNotNull(bindingHostId, "BindingHosttId cannot be null"));
-    }
-
-    /**
-     * Creates a BindingHostId identifier.
-     *
-     * @param bindingHostId the bindingHostId identifier
-     * @return the bindingHostId identifier
-     */
-    public static BindingHostId bindingHostId(String bindingHostId) {
-        return new BindingHostId(bindingHostId);
-    }
-
-    /**
-     * Returns the bindingHostId identifier.
-     *
-     * @return the bindingHostId identifier
-     */
-    public String bindingHostId() {
-        return identifier;
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultAllocationPool.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultAllocationPool.java
deleted file mode 100644
index aa9120a..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultAllocationPool.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-import java.util.Objects;
-
-import org.onlab.packet.IpAddress;
-
-/**
- * The continuous IP address range between the start address and the end address
- * for the allocation pools.
- */
-public final class DefaultAllocationPool implements AllocationPool {
-
-    private final IpAddress startIp;
-    private final IpAddress endIp;
-
-    /**
-     * Creates an AllocationPool by using the start IP address and the end IP
-     * address.
-     *
-     * @param startIp the start IP address of the allocation pool
-     * @param endIp the end IP address of the allocation pool
-     */
-    public DefaultAllocationPool(IpAddress startIp, IpAddress endIp) {
-        checkNotNull(startIp, "StartIp cannot be null");
-        checkNotNull(endIp, "EndIp cannot be null");
-        this.startIp = startIp;
-        this.endIp = endIp;
-    }
-
-    @Override
-    public IpAddress startIp() {
-        return startIp;
-    }
-
-    @Override
-    public IpAddress endIp() {
-        return endIp;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(startIp, endIp);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultAllocationPool) {
-            final DefaultAllocationPool other = (DefaultAllocationPool) obj;
-            return Objects.equals(this.startIp, other.startIp)
-                    && Objects.equals(this.endIp, other.endIp);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("startIp", startIp).add("endIp", endIp)
-                .toString();
-    }
-}
-
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFiveTuple.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFiveTuple.java
deleted file mode 100644
index 3ba25bb..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFiveTuple.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkArgument;
-
-import java.util.Objects;
-
-import org.onlab.packet.IPv4;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.PortNumber;
-
-/**
- * Representation for five tuple information from packet.
- */
-public final class DefaultFiveTuple implements FiveTuple {
-
-    private final MacAddress macSrc;
-    private final MacAddress macDst;
-    private final IpAddress ipSrc;
-    private final IpAddress ipDst;
-    private final PortNumber portSrc;
-    private final PortNumber portDst;
-    private final byte protocol;
-    private final TenantId tenantId;
-
-    /**
-     * Constructor for packet five tuple information.
-     *
-     * @param protocol protocol of the packet
-     * @param ipSrc source ip address of the packet
-     * @param ipDst destination ip address of the packet
-     * @param portSrc source port of the packet
-     * @param portDst destination port of the packet
-     */
-    private DefaultFiveTuple(byte protocol, IpAddress ipSrc, IpAddress ipDst, PortNumber portSrc, PortNumber portDst,
-                             TenantId tenantId, MacAddress macSrc, MacAddress macDst) {
-
-        this.protocol = protocol;
-        this.ipSrc = ipSrc;
-        this.ipDst = ipDst;
-        this.portSrc = portSrc;
-        this.portDst = portDst;
-        this.tenantId = tenantId;
-        this.macSrc = macSrc;
-        this.macDst = macDst;
-    }
-
-    @Override
-    public byte protocol() {
-        return protocol;
-    }
-
-    @Override
-    public IpAddress ipSrc() {
-        return ipSrc;
-    }
-
-    @Override
-    public IpAddress ipDst() {
-        return ipDst;
-    }
-
-    @Override
-    public PortNumber portSrc() {
-        return portSrc;
-    }
-
-    @Override
-    public PortNumber portDst() {
-        return portDst;
-    }
-
-    @Override
-    public MacAddress macSrc() {
-        return macSrc;
-    }
-
-    @Override
-    public MacAddress macDst() {
-        return macDst;
-    }
-
-    @Override
-    public TenantId tenantId() {
-        return tenantId;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultFiveTuple) {
-            final DefaultFiveTuple other = (DefaultFiveTuple) obj;
-            return Objects.equals(this.protocol, other.protocol) &&
-                    Objects.equals(this.ipSrc, other.ipSrc) &&
-                    Objects.equals(this.ipDst, other.ipDst) &&
-                    Objects.equals(this.portSrc, other.portSrc) &&
-                    Objects.equals(this.portDst, other.portDst);
-        }
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(this.protocol, this.ipSrc, this.ipDst, this.portSrc, this.portDst);
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .omitNullValues()
-                .add("protocol", protocol)
-                .add("ipSrc", ipSrc)
-                .add("ipDst", ipDst)
-                .add("portSrc", portSrc)
-                .add("portDst", portDst)
-                .toString();
-    }
-
-    /**
-     * To create an instance of the builder.
-     *
-     * @return instance of builder
-     */
-    public static Builder builder() {
-        return new Builder();
-    }
-
-    /**
-     * Builder class for Five tuple info.
-     */
-    public static final class Builder implements FiveTuple.Builder {
-
-        private IpAddress ipSrc;
-        private IpAddress ipDst;
-        private PortNumber portSrc;
-        private PortNumber portDst;
-        private byte protocol;
-        private TenantId tenantId;
-        private MacAddress macSrc;
-        private MacAddress macDst;
-
-        @Override
-        public Builder setIpSrc(IpAddress ipSrc) {
-            this.ipSrc = ipSrc;
-            return this;
-        }
-
-        @Override
-        public Builder setIpDst(IpAddress ipDst) {
-            this.ipDst = ipDst;
-            return this;
-        }
-
-        @Override
-        public Builder setPortSrc(PortNumber portSrc) {
-            this.portSrc = portSrc;
-            return this;
-        }
-
-        @Override
-        public Builder setPortDst(PortNumber portDst) {
-            this.portDst = portDst;
-            return this;
-        }
-
-        @Override
-        public Builder setProtocol(byte protocol) {
-            this.protocol = protocol;
-            return this;
-        }
-
-        @Override
-        public Builder setTenantId(TenantId tenantId) {
-            this.tenantId = tenantId;
-            return this;
-        }
-
-        @Override
-        public Builder setMacSrc(MacAddress macSrc) {
-            this.macSrc = macSrc;
-            return this;
-        }
-
-        @Override
-        public Builder setMacDst(MacAddress macDst) {
-            this.macDst = macDst;
-            return this;
-        }
-
-        @Override
-        public FiveTuple build() {
-            checkArgument(protocol == IPv4.PROTOCOL_TCP || protocol == IPv4.PROTOCOL_UDP ||
-                    protocol == IPv4.PROTOCOL_ICMP, "Unsupported value for protocol while creating five tuple");
-
-            return new DefaultFiveTuple(protocol, ipSrc, ipDst, portSrc, portDst, tenantId, macSrc, macDst);
-        }
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFloatingIp.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFloatingIp.java
deleted file mode 100644
index 34eb25f..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFloatingIp.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Objects;
-
-import org.onlab.packet.IpAddress;
-
-/**
- * Default implementation of FloatingIp interface.
- */
-public final class DefaultFloatingIp implements FloatingIp {
-
-    private final FloatingIpId id;
-    private final TenantId tenantId;
-    private final TenantNetworkId networkId;
-    private final VirtualPortId portId;
-    private final RouterId routerId;
-    private final IpAddress floatingIp;
-    private final IpAddress fixedIp;
-    private final Status status;
-
-    /**
-     *
-     * Creates a floating Ip object.
-     *
-     * @param id  floatingIp identifier
-     * @param tenantId  tenant identifier
-     * @param networkId  the identifier of network associated with the floating Ip
-     * @param portId  port identifier
-     * @param routerId  router identifier
-     * @param floatingIp  floatingIp address
-     * @param fixedIp  the fixed Ip associated with the floating Ip
-     * @param status  the floating Ip status
-     */
-    public DefaultFloatingIp(FloatingIpId id, TenantId tenantId,
-                             TenantNetworkId networkId, VirtualPortId portId,
-                             RouterId routerId, IpAddress floatingIp,
-                             IpAddress fixedIp, Status status) {
-        this.id = checkNotNull(id, "id cannot be null");
-        this.tenantId = checkNotNull(tenantId, "tenantId cannot be null");
-        this.networkId = checkNotNull(networkId, "networkId cannot be null");
-        this.portId = portId;
-        this.routerId = routerId;
-        this.floatingIp = checkNotNull(floatingIp, "floatingIp cannot be null");
-        this.fixedIp = fixedIp;
-        this.status = checkNotNull(status, "status cannot be null");
-    }
-
-    @Override
-    public FloatingIpId id() {
-        return id;
-    }
-
-    @Override
-    public TenantId tenantId() {
-        return tenantId;
-    }
-
-    @Override
-    public TenantNetworkId networkId() {
-        return networkId;
-    }
-
-    @Override
-    public VirtualPortId portId() {
-        return portId;
-    }
-
-    @Override
-    public RouterId routerId() {
-        return routerId;
-    }
-
-    @Override
-    public IpAddress floatingIp() {
-        return floatingIp;
-    }
-
-    @Override
-    public IpAddress fixedIp() {
-        return fixedIp;
-    }
-
-    @Override
-    public Status status() {
-        return status;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(id, tenantId, networkId, portId, routerId,
-                            floatingIp, fixedIp, status);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultFloatingIp) {
-            final DefaultFloatingIp that = (DefaultFloatingIp) obj;
-            return Objects.equals(this.id, that.id)
-                    && Objects.equals(this.tenantId, that.tenantId)
-                    && Objects.equals(this.networkId, that.networkId)
-                    && Objects.equals(this.portId, that.portId)
-                    && Objects.equals(this.routerId, that.routerId)
-                    && Objects.equals(this.floatingIp, that.floatingIp)
-                    && Objects.equals(this.fixedIp, that.fixedIp)
-                    && Objects.equals(this.status, that.status);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("id", id).add("tenantId", tenantId)
-                .add("networkId", networkId).add("portId", portId)
-                .add("routerId", routerId).add("floatingIp", floatingIp)
-                .add("fixedIp", fixedIp).add("floatingIpStatus", status)
-                .toString();
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFlowClassifier.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFlowClassifier.java
deleted file mode 100644
index b944b4f..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFlowClassifier.java
+++ /dev/null
@@ -1,433 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Objects;
-
-import org.onlab.packet.IpPrefix;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Default flow classifier.
- */
-public final class DefaultFlowClassifier implements FlowClassifier {
-
-    private final FlowClassifierId flowClassifierId;
-    private final TenantId tenantId;
-    private final String name;
-    private final String description;
-    private final String etherType;
-    private final String protocol;
-    private final int priority;
-    private final int minSrcPortRange;
-    private final int maxSrcPortRange;
-    private final int minDstPortRange;
-    private final int maxDstPortRange;
-    private final IpPrefix srcIpPrefix;
-    private final IpPrefix dstIpPrefix;
-    private final VirtualPortId srcPort;
-    private final VirtualPortId dstPort;
-    private static final int NULL_PORT = 0;
-    private static final String FLOW_CLASSIFIER_ID_NOT_NULL = "FlowClassifier id can not be null.";
-    private static final String TENANT_ID_NOT_NULL = "Tenant id can not be null.";
-    private static final String NAME_NOT_NULL = "Name can not be null.";
-    private static final String ETHER_TYPE_NOT_NULL = "Ether Type can not be null.";
-    private static final int DEFAULT_CLASSIFIER_PRIORITY = 0xCB20;
-
-    /**
-     * Constructor to create default flow classifier.
-     *
-     * @param flowClassifierId      flow classifier Id
-     * @param tenantId              Tenant ID
-     * @param name                  flow classifier name
-     * @param description           flow classifier description
-     * @param etherType             etherType
-     * @param protocol              IP protocol
-     * @param priority              priority for classification
-     * @param minSrcPortRange       Minimum Source port range
-     * @param maxSrcPortRange       Maximum Source port range
-     * @param minDstPortRange       Minimum destination port range
-     * @param maxDstPortRange       Maximum destination port range
-     * @param srcIpPrefix           Source IP prefix
-     * @param dstIpPrefix           destination IP prefix
-     * @param srcPort               Source VirtualPort
-     * @param dstPort               destination VirtualPort
-     */
-    private DefaultFlowClassifier(FlowClassifierId flowClassifierId, TenantId tenantId, String name,
-                                  String description, String etherType, String protocol, int priority,
-                                  int minSrcPortRange, int maxSrcPortRange, int minDstPortRange, int maxDstPortRange,
-                                  IpPrefix srcIpPrefix, IpPrefix dstIpPrefix, VirtualPortId srcPort,
-                                  VirtualPortId dstPort) {
-        this.flowClassifierId = flowClassifierId;
-        this.tenantId = tenantId;
-        this.name = name;
-        this.description = description;
-        this.etherType = etherType;
-        this.protocol = protocol;
-        this.priority = priority;
-        this.minSrcPortRange = minSrcPortRange;
-        this.maxSrcPortRange = maxSrcPortRange;
-        this.minDstPortRange = minDstPortRange;
-        this.maxDstPortRange = maxDstPortRange;
-        this.srcIpPrefix = srcIpPrefix;
-        this.dstIpPrefix = dstIpPrefix;
-        this.srcPort = srcPort;
-        this.dstPort = dstPort;
-    }
-
-    @Override
-    public FlowClassifierId flowClassifierId() {
-        return flowClassifierId;
-    }
-
-    @Override
-    public TenantId tenantId() {
-        return tenantId;
-    }
-
-    @Override
-    public String name() {
-        return name;
-    }
-
-    @Override
-    public String description() {
-        return description;
-    }
-
-    @Override
-    public String etherType() {
-        return etherType;
-    }
-
-    @Override
-    public String protocol() {
-        return protocol;
-    }
-
-    @Override
-    public int priority() {
-        return priority;
-    }
-
-    @Override
-    public int minSrcPortRange() {
-        return minSrcPortRange;
-    }
-
-    @Override
-    public int maxSrcPortRange() {
-        return maxSrcPortRange;
-    }
-
-    @Override
-    public int minDstPortRange() {
-        return minDstPortRange;
-    }
-
-    @Override
-    public int maxDstPortRange() {
-        return maxDstPortRange;
-    }
-
-    @Override
-    public IpPrefix srcIpPrefix() {
-        return srcIpPrefix;
-    }
-
-    @Override
-    public IpPrefix dstIpPrefix() {
-        return dstIpPrefix;
-    }
-
-    @Override
-    public VirtualPortId srcPort() {
-        return srcPort;
-    }
-
-    @Override
-    public VirtualPortId dstPort() {
-        return dstPort;
-    }
-
-    /**
-     * Builder class for constructing Flow classifier.
-     */
-    public static class Builder implements FlowClassifier.Builder {
-
-        private FlowClassifierId flowClassifierId;
-        private TenantId tenantId;
-        private String name;
-        private String description;
-        private boolean isFlowClassifierDescriptionSet = false;
-        private String etherType;
-        private String protocol;
-        private boolean isProtocolSet = false;
-        private int priority;
-        private boolean isPrioritySet = false;
-        private int minSrcPortRange;
-        private boolean isMinSrcPortRangeSet = false;
-        private int maxSrcPortRange;
-        private boolean isMaxSrcPortRangeSet = false;
-        private int minDstPortRange;
-        private boolean isMinDstPortRangeSet = false;
-        private int maxDstPortRange;
-        private boolean isMaxDstPortRangeSet = false;
-        private IpPrefix srcIpPrefix;
-        private boolean isSrcIpPrefixSet = false;
-        private IpPrefix dstIpPrefix;
-        private boolean isDstIpPrefixSet = false;
-        private VirtualPortId srcPort;
-        private boolean isSrcPortSet = false;
-        private VirtualPortId dstPort;
-        private boolean isDstPortSet = false;
-
-        @Override
-        public FlowClassifier build() {
-
-            checkNotNull(flowClassifierId, FLOW_CLASSIFIER_ID_NOT_NULL);
-            checkNotNull(tenantId, TENANT_ID_NOT_NULL);
-            checkNotNull(name, NAME_NOT_NULL);
-            checkNotNull(etherType, ETHER_TYPE_NOT_NULL);
-            String description = null;
-            String protocol = null;
-            int priority = DEFAULT_CLASSIFIER_PRIORITY;
-            int minSrcPortRange = NULL_PORT;
-            int maxSrcPortRange = NULL_PORT;
-            int minDstPortRange = NULL_PORT;
-            int maxDstPortRange = NULL_PORT;
-            IpPrefix srcIpPrefix = null;
-            IpPrefix dstIpPrefix = null;
-            VirtualPortId srcPort = null;
-            VirtualPortId dstPort = null;
-
-            if (isFlowClassifierDescriptionSet) {
-                description = this.description;
-            }
-            if (isProtocolSet) {
-                protocol = this.protocol;
-            }
-            if (isPrioritySet) {
-                priority = this.priority;
-            }
-            if (isMinSrcPortRangeSet) {
-                minSrcPortRange = this.minSrcPortRange;
-            }
-            if (isMaxSrcPortRangeSet) {
-                maxSrcPortRange = this.maxSrcPortRange;
-            }
-            if (isMinDstPortRangeSet) {
-                minDstPortRange = this.minDstPortRange;
-            }
-            if (isMaxDstPortRangeSet) {
-                maxDstPortRange = this.maxDstPortRange;
-            }
-            if (isSrcIpPrefixSet) {
-                srcIpPrefix = this.srcIpPrefix;
-            }
-            if (isDstIpPrefixSet) {
-                dstIpPrefix = this.dstIpPrefix;
-            }
-            if (isSrcPortSet) {
-                srcPort = this.srcPort;
-            }
-            if (isDstPortSet) {
-                dstPort = this.dstPort;
-            }
-
-            return new DefaultFlowClassifier(flowClassifierId, tenantId, name, description, etherType, protocol,
-                                             priority, minSrcPortRange, maxSrcPortRange, minDstPortRange,
-                                             maxDstPortRange, srcIpPrefix, dstIpPrefix, srcPort, dstPort);
-        }
-
-        @Override
-        public Builder setFlowClassifierId(FlowClassifierId flowClassifierId) {
-            this.flowClassifierId = flowClassifierId;
-            return this;
-        }
-
-        @Override
-        public Builder setTenantId(TenantId tenantId) {
-            this.tenantId = tenantId;
-            return this;
-        }
-
-        @Override
-        public Builder setName(String name) {
-            this.name = name;
-            return this;
-        }
-
-        @Override
-        public Builder setDescription(String description) {
-            this.description = description;
-            this.isFlowClassifierDescriptionSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setEtherType(String etherType) {
-            this.etherType = etherType;
-            return this;
-        }
-
-        @Override
-        public Builder setProtocol(String protocol) {
-            this.protocol = protocol;
-            this.isProtocolSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setPriority(int priority) {
-            this.priority = priority;
-            this.isPrioritySet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setMinSrcPortRange(int minSrcPortRange) {
-            this.minSrcPortRange = minSrcPortRange;
-            this.isMinSrcPortRangeSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setMaxSrcPortRange(int maxSrcPortRange) {
-            this.maxSrcPortRange = maxSrcPortRange;
-            this.isMaxSrcPortRangeSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setMinDstPortRange(int minDstPortRange) {
-            this.minDstPortRange = minDstPortRange;
-            this.isMinDstPortRangeSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setMaxDstPortRange(int maxDstPortRange) {
-            this.maxDstPortRange = maxDstPortRange;
-            this.isMaxDstPortRangeSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setSrcIpPrefix(IpPrefix srcIpPrefix) {
-            this.srcIpPrefix = srcIpPrefix;
-            this.isSrcIpPrefixSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setDstIpPrefix(IpPrefix dstIpPrefix) {
-            this.dstIpPrefix = dstIpPrefix;
-            this.isDstIpPrefixSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setSrcPort(VirtualPortId srcPort) {
-            this.srcPort = srcPort;
-            this.isSrcPortSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setDstPort(VirtualPortId dstPort) {
-            this.dstPort = dstPort;
-            this.isDstPortSet = true;
-            return this;
-        }
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(flowClassifierId, tenantId, name, description, etherType, protocol, minSrcPortRange,
-                maxSrcPortRange, minDstPortRange, maxDstPortRange, srcIpPrefix, dstIpPrefix, srcPort, dstPort);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultFlowClassifier) {
-            DefaultFlowClassifier other = (DefaultFlowClassifier) obj;
-            return Objects.equals(this.flowClassifierId, other.flowClassifierId)
-                    && Objects.equals(this.tenantId, other.tenantId)
-                    && Objects.equals(this.name, other.name)
-                    && Objects.equals(this.description, other.description)
-                    && Objects.equals(this.etherType, other.etherType)
-                    && Objects.equals(this.protocol, other.protocol)
-                    && Objects.equals(this.priority, other.priority)
-                    && Objects.equals(this.minSrcPortRange, other.minSrcPortRange)
-                    && Objects.equals(this.maxSrcPortRange, other.maxSrcPortRange)
-                    && Objects.equals(this.minDstPortRange, other.minDstPortRange)
-                    && Objects.equals(this.maxDstPortRange, other.maxDstPortRange)
-                    && Objects.equals(this.srcIpPrefix, other.srcIpPrefix)
-                    && Objects.equals(this.dstIpPrefix, other.dstIpPrefix)
-                    && Objects.equals(this.srcPort, other.srcPort)
-                    && Objects.equals(this.dstPort, other.dstPort);
-        }
-        return false;
-    }
-
-    @Override
-    public boolean exactMatch(FlowClassifier flowClassifier) {
-        return this.equals(flowClassifier)
-                && Objects.equals(this.flowClassifierId, flowClassifier.flowClassifierId())
-                && Objects.equals(this.tenantId, flowClassifier.tenantId())
-                && Objects.equals(this.name, flowClassifier.name())
-                && Objects.equals(this.description, flowClassifier.description())
-                && Objects.equals(this.etherType, flowClassifier.etherType())
-                && Objects.equals(this.protocol, flowClassifier.protocol())
-                && Objects.equals(this.priority, flowClassifier.priority())
-                && Objects.equals(this.minSrcPortRange, flowClassifier.minSrcPortRange())
-                && Objects.equals(this.maxSrcPortRange, flowClassifier.maxSrcPortRange())
-                && Objects.equals(this.minDstPortRange, flowClassifier.minDstPortRange())
-                && Objects.equals(this.maxDstPortRange, flowClassifier.maxDstPortRange())
-                && Objects.equals(this.srcIpPrefix, flowClassifier.srcIpPrefix())
-                && Objects.equals(this.dstIpPrefix, flowClassifier.dstIpPrefix())
-                && Objects.equals(this.srcPort, flowClassifier.srcPort())
-                && Objects.equals(this.dstPort, flowClassifier.dstPort());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("FlowClassifierId", flowClassifierId)
-                .add("TenantId", tenantId)
-                .add("Name", name)
-                .add("Description", description)
-                .add("String", etherType)
-                .add("Protocol", protocol)
-                .add("Priority", priority)
-                .add("MinSrcPortRange", minSrcPortRange)
-                .add("MaxSrcPortRange", maxSrcPortRange)
-                .add("MinDstPortRange", minDstPortRange)
-                .add("MaxDstPortRange", maxDstPortRange)
-                .add("SrcIpPrefix", srcIpPrefix)
-                .add("DstIpPrefix", dstIpPrefix)
-                .add("SrcPort", srcPort)
-                .add("DstPort", dstPort)
-                .toString();
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultHostRoute.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultHostRoute.java
deleted file mode 100644
index ca75035..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultHostRoute.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-import java.util.Objects;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-
-/**
- * Host route dictionaries for the subnet.
- */
-public final class DefaultHostRoute implements HostRoute {
-
-    private final IpAddress nexthop;
-    private final IpPrefix destination;
-
-    /**
-     *
-     * Creates a DefaultHostRoute by using the next hop and the destination.
-     *
-     * @param nexthop of the DefaultHostRoute
-     * @param destination of the DefaultHostRoute
-     */
-    public DefaultHostRoute(IpAddress nexthop, IpPrefix destination) {
-        this.nexthop = nexthop;
-        this.destination = destination;
-    }
-
-    @Override
-    public IpAddress nexthop() {
-        return nexthop;
-    }
-
-    @Override
-    public IpPrefix destination() {
-        return destination;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("nexthop", nexthop)
-                .add("destination", destination).toString();
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(nexthop, destination);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultHostRoute) {
-            final DefaultHostRoute other = (DefaultHostRoute) obj;
-            return Objects.equals(this.nexthop, other.nexthop)
-                    && Objects.equals(this.destination, other.destination);
-        }
-        return false;
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortChain.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortChain.java
deleted file mode 100644
index dd67d84..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortChain.java
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.onosproject.net.DeviceId;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-
-/**
- * Implementation of port chain.
- */
-public final class DefaultPortChain implements PortChain {
-
-    private final PortChainId portChainId;
-    private final TenantId tenantId;
-    private final String name;
-    private final String description;
-    private final List<PortPairGroupId> portPairGroupList;
-    private final List<FlowClassifierId> flowClassifierList;
-    private final PortChain oldPortChain;
-
-    private final Map<FiveTuple, LoadBalanceId> sfcLoadBalanceIdMap = new ConcurrentHashMap<>();
-    private final Map<LoadBalanceId, List<PortPairId>> sfcLoadBalancePathMap = new ConcurrentHashMap<>();
-    private final Map<LoadBalanceId, List<DeviceId>> sfcClassifiersMap = new ConcurrentHashMap<>();
-    private final Map<LoadBalanceId, List<DeviceId>> sfcForwardersMap = new ConcurrentHashMap<>();
-
-    /**
-     * Default constructor to create port chain.
-     *
-     * @param portChainId port chain id
-     * @param tenantId tenant id
-     * @param name name of port chain
-     * @param description description of port chain
-     * @param portPairGroupList port pair group list
-     * @param flowClassifierList flow classifier list
-     */
-    private DefaultPortChain(PortChainId portChainId, TenantId tenantId,
-            String name, String description,
-            List<PortPairGroupId> portPairGroupList,
-            List<FlowClassifierId> flowClassifierList,
-            PortChain portChain) {
-
-        this.portChainId = portChainId;
-        this.tenantId = tenantId;
-        this.name = name;
-        this.description = description;
-        this.portPairGroupList = portPairGroupList;
-        this.flowClassifierList = flowClassifierList;
-        this.oldPortChain = portChain;
-    }
-
-    /**
-     * To create port chain for update with old port chain.
-     *
-     * @param newPortChain updated port chain
-     * @param oldPortChain old port chain
-     * @return port chain
-     */
-    public static PortChain create(PortChain newPortChain, PortChain oldPortChain) {
-        return new DefaultPortChain(newPortChain.portChainId(), newPortChain.tenantId(),
-                                    newPortChain.name(), newPortChain.description(),
-                                    newPortChain.portPairGroups(), newPortChain.flowClassifiers(), oldPortChain);
-    }
-
-    /**
-     * Match for two given paths.
-     *
-     * @param path1 path of sfc
-     * @param path2 path of sfc
-     * @return true if the given path are same false otherwise
-     */
-    private boolean comparePath(List<PortPairId> path1, List<PortPairId> path2) {
-        Iterator it = path1.iterator();
-        for (PortPairId portPairId: path2) {
-            if (!portPairId.equals(it.next())) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public PortChainId portChainId() {
-        return portChainId;
-    }
-
-    @Override
-    public TenantId tenantId() {
-        return tenantId;
-    }
-
-    @Override
-    public String name() {
-        return name;
-    }
-
-    @Override
-    public String description() {
-        return description;
-    }
-
-    @Override
-    public List<PortPairGroupId> portPairGroups() {
-        return ImmutableList.copyOf(portPairGroupList);
-    }
-
-    @Override
-    public List<FlowClassifierId> flowClassifiers() {
-        return ImmutableList.copyOf(flowClassifierList);
-    }
-
-    @Override
-    public PortChain oldPortChain() {
-        return oldPortChain;
-    }
-
-    @Override
-    public void addLoadBalancePath(FiveTuple fiveTuple, LoadBalanceId id,
-                                   List<PortPairId> path) {
-        this.sfcLoadBalanceIdMap.put(fiveTuple, id);
-        this.sfcLoadBalancePathMap.put(id, path);
-    }
-
-    @Override
-    public void addSfcClassifiers(LoadBalanceId id, List<DeviceId> classifierList) {
-        this.sfcClassifiersMap.put(id, classifierList);
-    }
-
-    @Override
-    public void addSfcForwarders(LoadBalanceId id, List<DeviceId> forwarderList) {
-        this.sfcForwardersMap.put(id, forwarderList);
-    }
-
-    @Override
-    public void removeSfcClassifiers(LoadBalanceId id, List<DeviceId> classifierList) {
-        List<DeviceId> list = sfcClassifiersMap.get(id);
-        list.removeAll(classifierList);
-        this.sfcForwardersMap.put(id, list);
-    }
-
-    @Override
-    public void removeSfcForwarders(LoadBalanceId id, List<DeviceId> forwarderList) {
-        List<DeviceId> list = sfcForwardersMap.get(id);
-        list.removeAll(forwarderList);
-        this.sfcForwardersMap.put(id, list);
-    }
-
-    @Override
-    public List<DeviceId> getSfcClassifiers(LoadBalanceId id) {
-        return ImmutableList.copyOf(this.sfcClassifiersMap.get(id));
-    }
-
-    @Override
-    public List<DeviceId> getSfcForwarders(LoadBalanceId id) {
-        return ImmutableList.copyOf(this.sfcForwardersMap.get(id));
-    }
-
-    @Override
-    public LoadBalanceId getLoadBalanceId(FiveTuple fiveTuple) {
-        return this.sfcLoadBalanceIdMap.get(fiveTuple);
-    }
-
-    @Override
-    public Set<FiveTuple> getLoadBalanceIdMapKeys() {
-        return ImmutableSet.copyOf(sfcLoadBalanceIdMap.keySet());
-    }
-
-    @Override
-    public Set<LoadBalanceId> getLoadBalancePathMapKeys() {
-        return ImmutableSet.copyOf(sfcLoadBalancePathMap.keySet());
-    }
-
-    @Override
-    public List<PortPairId> getLoadBalancePath(LoadBalanceId id) {
-        return ImmutableList.copyOf(this.sfcLoadBalancePathMap.get(id));
-    }
-
-    @Override
-    public List<PortPairId> getLoadBalancePath(FiveTuple fiveTuple) {
-        return ImmutableList.copyOf(this.sfcLoadBalancePathMap.get(this.sfcLoadBalanceIdMap.get(fiveTuple)));
-    }
-
-    @Override
-    public int getLoadBalancePathSize() {
-        if (sfcLoadBalanceIdMap.isEmpty()) {
-            return 0;
-        }
-        return sfcLoadBalanceIdMap.size();
-    }
-
-    @Override
-    public LoadBalanceId matchPath(List<PortPairId> path) {
-
-        LoadBalanceId id = null;
-        for (Map.Entry<LoadBalanceId, List<PortPairId>> entry : sfcLoadBalancePathMap.entrySet()) {
-            List<PortPairId> tempPath = entry.getValue();
-            if (comparePath(path, tempPath)) {
-                id = entry.getKey();
-                break;
-            }
-        }
-        return id;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(portChainId, tenantId, name, description,
-                            portPairGroupList, flowClassifierList);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultPortChain) {
-            DefaultPortChain that = (DefaultPortChain) obj;
-            return Objects.equals(portChainId, that.portChainId) &&
-                    Objects.equals(tenantId, that.tenantId) &&
-                    Objects.equals(name, that.name) &&
-                    Objects.equals(description, that.description) &&
-                    Objects.equals(portPairGroupList, that.portPairGroupList) &&
-                    Objects.equals(flowClassifierList, that.flowClassifierList);
-        }
-        return false;
-    }
-
-    @Override
-    public boolean exactMatch(PortChain portChain) {
-        return this.equals(portChain) &&
-                Objects.equals(this.portChainId, portChain.portChainId()) &&
-                Objects.equals(this.tenantId, portChain.tenantId());
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("id", portChainId.toString())
-                .add("tenantId", tenantId.toString())
-                .add("name", name)
-                .add("description", description)
-                .add("portPairGroupList", portPairGroupList)
-                .add("flowClassifier", flowClassifierList)
-                .toString();
-    }
-
-    /**
-     * To create an instance of the builder.
-     *
-     * @return instance of builder
-     */
-    public static Builder builder() {
-        return new Builder();
-    }
-
-    /**
-     * Builder class for Port chain.
-     */
-    public static final class Builder implements PortChain.Builder {
-
-        private PortChainId portChainId;
-        private TenantId tenantId;
-        private String name;
-        private String description;
-        private List<PortPairGroupId> portPairGroupList;
-        private List<FlowClassifierId> flowClassifierList;
-        private PortChain portChain;
-
-        @Override
-        public Builder setId(PortChainId portChainId) {
-            this.portChainId = portChainId;
-            return this;
-        }
-
-        @Override
-        public Builder setTenantId(TenantId tenantId) {
-            this.tenantId = tenantId;
-            return this;
-        }
-
-        @Override
-        public Builder setName(String name) {
-            this.name = name;
-            return this;
-        }
-
-        @Override
-        public Builder setDescription(String description) {
-            this.description = description;
-            return this;
-        }
-
-        @Override
-        public Builder setPortPairGroups(List<PortPairGroupId> portPairGroups) {
-            this.portPairGroupList = portPairGroups;
-            return this;
-        }
-
-        @Override
-        public Builder setFlowClassifiers(List<FlowClassifierId> flowClassifiers) {
-            this.flowClassifierList = flowClassifiers;
-            return this;
-        }
-
-        @Override
-        public PortChain build() {
-
-            checkNotNull(portChainId, "Port chain id cannot be null");
-            checkNotNull(tenantId, "Tenant id cannot be null");
-            checkNotNull(portPairGroupList, "Port pair groups cannot be null");
-
-            return new DefaultPortChain(portChainId, tenantId, name, description,
-                                        portPairGroupList, flowClassifierList, portChain);
-        }
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortPair.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortPair.java
deleted file mode 100644
index 84dc531..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortPair.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Objects;
-
-/**
- * Implementation of port pair.
- */
-public final class DefaultPortPair implements PortPair {
-
-    private final PortPairId portPairId;
-    private final TenantId tenantId;
-    private final String name;
-    private final String description;
-    private final String ingress;
-    private final String egress;
-
-    /**
-     * Default constructor to create Port Pair.
-     *
-     * @param portPairId port pair id
-     * @param tenantId tenant id
-     * @param name name of port pair
-     * @param description description of port pair
-     * @param ingress ingress port
-     * @param egress egress port
-     */
-    private DefaultPortPair(PortPairId portPairId, TenantId tenantId,
-                            String name, String description,
-                            String ingress, String egress) {
-
-        this.portPairId = portPairId;
-        this.tenantId = tenantId;
-        this.name = name;
-        this.description = description;
-        this.ingress = ingress;
-        this.egress = egress;
-    }
-
-    @Override
-    public PortPairId portPairId() {
-        return portPairId;
-    }
-
-    @Override
-    public TenantId tenantId() {
-        return tenantId;
-    }
-
-    @Override
-    public String name() {
-        return name;
-    }
-
-    @Override
-    public String description() {
-        return description;
-    }
-
-    @Override
-    public String ingress() {
-        return ingress;
-    }
-
-    @Override
-    public String egress() {
-        return egress;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(portPairId, tenantId, name, description,
-                            ingress, egress);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultPortPair) {
-            DefaultPortPair that = (DefaultPortPair) obj;
-            return Objects.equals(portPairId, that.portPairId) &&
-                    Objects.equals(tenantId, that.tenantId) &&
-                    Objects.equals(name, that.name) &&
-                    Objects.equals(description, that.description) &&
-                    Objects.equals(ingress, that.ingress) &&
-                    Objects.equals(egress, that.egress);
-        }
-        return false;
-    }
-
-    @Override
-    public boolean exactMatch(PortPair portPair) {
-        return this.equals(portPair) &&
-                Objects.equals(this.portPairId, portPair.portPairId()) &&
-                Objects.equals(this.tenantId, portPair.tenantId());
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("id", portPairId.toString())
-                .add("tenantId", tenantId.tenantId())
-                .add("name", name)
-                .add("description", description)
-                .add("ingress", ingress)
-                .add("egress", egress)
-                .toString();
-    }
-
-    /**
-     * To create an instance of the builder.
-     *
-     * @return instance of builder
-     */
-    public static Builder builder() {
-        return new Builder();
-    }
-
-    /**
-     * Builder class for Port pair.
-     */
-    public static final class Builder implements PortPair.Builder {
-
-        private PortPairId portPairId;
-        private TenantId tenantId;
-        private String name;
-        private String description;
-        private String ingress;
-        private String egress;
-
-        @Override
-        public Builder setId(PortPairId portPairId) {
-            this.portPairId = portPairId;
-            return this;
-        }
-
-        @Override
-        public Builder setTenantId(TenantId tenantId) {
-            this.tenantId = tenantId;
-            return this;
-        }
-
-        @Override
-        public Builder setName(String name) {
-            this.name = name;
-            return this;
-        }
-
-        @Override
-        public Builder setDescription(String description) {
-            this.description = description;
-            return this;
-        }
-
-        @Override
-        public Builder setIngress(String ingress) {
-            this.ingress = ingress;
-            return this;
-        }
-
-        @Override
-        public Builder setEgress(String egress) {
-            this.egress = egress;
-            return this;
-        }
-
-        @Override
-        public PortPair build() {
-
-            checkNotNull(portPairId, "Port pair id cannot be null");
-            checkNotNull(tenantId, "Tenant id cannot be null");
-            checkNotNull(ingress, "Ingress of a port pair cannot be null");
-            checkNotNull(egress, "Egress of a port pair cannot be null");
-
-            return new DefaultPortPair(portPairId, tenantId, name, description,
-                                       ingress, egress);
-        }
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortPairGroup.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortPairGroup.java
deleted file mode 100644
index a3a5780..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortPairGroup.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.concurrent.ConcurrentHashMap;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-
-/**
- * Implementation of port pair group.
- */
-public final class DefaultPortPairGroup implements PortPairGroup {
-
-    private final PortPairGroupId portPairGroupId;
-    private final TenantId tenantId;
-    private final String name;
-    private final String description;
-    private final List<PortPairId> portPairList;
-    private final Map<PortPairId, Integer> portPairLoadMap;
-
-    /**
-     * Default constructor to create Port Pair Group.
-     *
-     * @param portPairGroupId port pair group id
-     * @param tenantId tenant id
-     * @param name name of port pair group
-     * @param description description of port pair group
-     * @param portPairList list of port pairs
-     */
-    private DefaultPortPairGroup(PortPairGroupId portPairGroupId, TenantId tenantId,
-                                 String name, String description,
-                                 List<PortPairId> portPairList) {
-
-        this.portPairGroupId = portPairGroupId;
-        this.tenantId = tenantId;
-        this.name = name;
-        this.description = description;
-        this.portPairList = portPairList;
-        portPairLoadMap = new ConcurrentHashMap<>();
-        for (PortPairId portPairId : portPairList) {
-            portPairLoadMap.put(portPairId, new Integer(0));
-        }
-    }
-
-    @Override
-    public PortPairGroupId portPairGroupId() {
-        return portPairGroupId;
-    }
-
-    @Override
-    public TenantId tenantId() {
-        return tenantId;
-    }
-
-    @Override
-    public String name() {
-        return name;
-    }
-
-    @Override
-    public String description() {
-        return description;
-    }
-
-    @Override
-    public List<PortPairId> portPairs() {
-        return ImmutableList.copyOf(portPairList);
-    }
-
-    @Override
-    public void addLoad(PortPairId portPairId) {
-        int load = portPairLoadMap.get(portPairId);
-        load = load + 1;
-        portPairLoadMap.put(portPairId, new Integer(load));
-    }
-
-    @Override
-    public void resetLoad() {
-        for (PortPairId portPairId : portPairList) {
-            portPairLoadMap.put(portPairId, new Integer(0));
-        }
-    }
-
-    @Override
-    public int getLoad(PortPairId portPairId) {
-        return portPairLoadMap.get(portPairId);
-    }
-
-    @Override
-    public Map<PortPairId, Integer> portPairLoadMap() {
-        return ImmutableMap.copyOf(portPairLoadMap);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(portPairGroupId, tenantId, name, description,
-                            portPairList);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultPortPairGroup) {
-            DefaultPortPairGroup that = (DefaultPortPairGroup) obj;
-            return Objects.equals(portPairGroupId, that.portPairGroupId) &&
-                    Objects.equals(tenantId, that.tenantId) &&
-                    Objects.equals(name, that.name) &&
-                    Objects.equals(description, that.description) &&
-                    Objects.equals(portPairList, that.portPairList);
-        }
-        return false;
-    }
-
-    @Override
-    public boolean exactMatch(PortPairGroup portPairGroup) {
-        return this.equals(portPairGroup) &&
-                Objects.equals(this.portPairGroupId, portPairGroup.portPairGroupId()) &&
-                Objects.equals(this.tenantId, portPairGroup.tenantId());
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("id", portPairGroupId.toString())
-                .add("tenantId", tenantId.toString())
-                .add("name", name)
-                .add("description", description)
-                .add("portPairGroupList", portPairList)
-                .toString();
-    }
-
-    /**
-     * To create an instance of the builder.
-     *
-     * @return instance of builder
-     */
-    public static Builder builder() {
-        return new Builder();
-    }
-
-    /**
-     * Builder class for Port pair group.
-     */
-    public static final class Builder implements PortPairGroup.Builder {
-
-        private PortPairGroupId portPairGroupId;
-        private TenantId tenantId;
-        private String name;
-        private String description;
-        private List<PortPairId> portPairList;
-
-        @Override
-        public Builder setId(PortPairGroupId portPairGroupId) {
-            this.portPairGroupId = portPairGroupId;
-            return this;
-        }
-
-        @Override
-        public Builder setTenantId(TenantId tenantId) {
-            this.tenantId = tenantId;
-            return this;
-        }
-
-        @Override
-        public Builder setName(String name) {
-            this.name = name;
-            return this;
-        }
-
-        @Override
-        public Builder setDescription(String description) {
-            this.description = description;
-            return this;
-        }
-
-        @Override
-        public Builder setPortPairs(List<PortPairId> portPairs) {
-            this.portPairList = portPairs;
-            return this;
-        }
-
-        @Override
-        public PortPairGroup build() {
-
-            checkNotNull(portPairGroupId, "Port pair group id cannot be null");
-            checkNotNull(tenantId, "Tenant id cannot be null");
-            checkNotNull(portPairList, "Port pairs cannot be null");
-
-            return new DefaultPortPairGroup(portPairGroupId, tenantId, name, description,
-                                            portPairList);
-        }
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultRouter.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultRouter.java
deleted file mode 100644
index fc8bbe5..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultRouter.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * Default implementation of router interface.
- */
-public final class DefaultRouter implements Router {
-    private final RouterId id;
-    private final String name;
-    private final boolean adminStateUp;
-    private final Status status;
-    private final boolean distributed;
-    private final RouterGateway externalGatewayInfo;
-    private final VirtualPortId gatewayPortId;
-    private final TenantId tenantId;
-    private final List<String> routes;
-
-    /**
-     * Creates router object.
-     *
-     * @param id  router identifier
-     * @param routerName  the name of router
-     * @param adminStateUp  the status of admin state
-     * @param status  the status of router
-     * @param distributed  the status of router distributed
-     * @param externalGatewayInfo  the gateway info of router
-     * @param gatewayPortId  the port identifier of router gateway
-     * @param tenantId  the tenant identifier
-     * @param routes  the routes configure
-     */
-    public DefaultRouter(RouterId id, String routerName, boolean adminStateUp,
-                         Status status, boolean distributed,
-                         RouterGateway externalGatewayInfo,
-                         VirtualPortId gatewayPortId, TenantId tenantId,
-                         List<String> routes) {
-        this.id = checkNotNull(id, "id cannot be null");
-        this.name = routerName;
-        this.adminStateUp = adminStateUp;
-        this.status = checkNotNull(status, "status cannot be null");
-        this.distributed = distributed;
-        this.externalGatewayInfo = externalGatewayInfo;
-        this.gatewayPortId = gatewayPortId;
-        this.tenantId = checkNotNull(tenantId, "tenantId cannot be null");
-        this.routes = routes;
-    }
-
-    @Override
-    public RouterId id() {
-        return id;
-    }
-
-    @Override
-    public String name() {
-        return name;
-    }
-
-    @Override
-    public boolean adminStateUp() {
-        return adminStateUp;
-    }
-
-    @Override
-    public Status status() {
-        return status;
-    }
-
-    @Override
-    public boolean distributed() {
-        return distributed;
-    }
-
-    @Override
-    public RouterGateway externalGatewayInfo() {
-        return externalGatewayInfo;
-    }
-
-    @Override
-    public VirtualPortId gatewayPortid() {
-        return gatewayPortId;
-    }
-
-    @Override
-    public TenantId tenantId() {
-        return tenantId;
-    }
-
-    @Override
-    public List<String> routes() {
-        return routes;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(id, name, adminStateUp, status, distributed,
-                            externalGatewayInfo, gatewayPortId, routes);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultRouter) {
-            final DefaultRouter that = (DefaultRouter) obj;
-            return Objects.equals(this.id, that.id)
-                    && Objects.equals(this.name, that.name)
-                    && Objects.equals(this.adminStateUp, that.adminStateUp)
-                    && Objects.equals(this.status, that.status)
-                    && Objects.equals(this.distributed, that.distributed)
-                    && Objects.equals(this.externalGatewayInfo,
-                                      that.externalGatewayInfo)
-                    && Objects.equals(this.gatewayPortId, that.gatewayPortId)
-                    && Objects.equals(this.routes, that.routes);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("id", id).add("routerName", name)
-                .add("adminStateUp", adminStateUp).add("status", status)
-                .add("distributed", distributed)
-                .add("externalGatewayInfo", externalGatewayInfo)
-                .add("gatewayPortid", gatewayPortId).add("routes", routes).toString();
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultSubnet.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultSubnet.java
deleted file mode 100644
index dc0af7e..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultSubnet.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-import java.util.Objects;
-import java.util.Set;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpAddress.Version;
-import org.onlab.packet.IpPrefix;
-
-/**
- * Default implementation of Subnet interface .
- */
-public final class DefaultSubnet implements Subnet {
-    private final SubnetId id;
-    private final String subnetName;
-    private final TenantNetworkId networkId;
-    private final TenantId tenantId;
-    private final Version ipVersion;
-    private final IpPrefix cidr;
-    private final IpAddress gatewayIp;
-    private final boolean dhcpEnabled;
-    private final boolean shared;
-    private final Mode ipV6AddressMode;
-    private final Mode ipV6RaMode;
-    private final Set<HostRoute> hostRoutes;
-    private final Set<AllocationPool> allocationPools;
-
-    /**
-     * Creates a subnet object.
-     *
-     * @param id subnet identifier
-     * @param subnetName the name of subnet
-     * @param networkId network identifier
-     * @param tenantId tenant identifier
-     * @param ipVersion Version of ipv4 or ipv6
-     * @param cidr the cidr
-     * @param gatewayIp gateway ip
-     * @param dhcpEnabled dhcp enabled or not
-     * @param shared indicates whether this network is shared across all
-     *            tenants, By default, only administrative user can change this
-     *            value
-     * @param hostRoutes a collection of host routes
-     * @param ipV6AddressMode ipV6AddressMode
-     * @param ipV6RaMode ipV6RaMode
-     * @param allocationPoolsIt a collection of allocationPools
-     */
-    public DefaultSubnet(SubnetId id, String subnetName,
-                         TenantNetworkId networkId, TenantId tenantId,
-                         Version ipVersion, IpPrefix cidr, IpAddress gatewayIp,
-                         boolean dhcpEnabled, boolean shared,
-                         Set<HostRoute> hostRoutes, Mode ipV6AddressMode,
-                         Mode ipV6RaMode,
-                         Set<AllocationPool> allocationPoolsIt) {
-        this.id = id;
-        this.subnetName = subnetName;
-        this.networkId = networkId;
-        this.tenantId = tenantId;
-        this.ipVersion = ipVersion;
-        this.cidr = cidr;
-        this.gatewayIp = gatewayIp;
-        this.dhcpEnabled = dhcpEnabled;
-        this.shared = shared;
-        this.ipV6AddressMode = ipV6AddressMode;
-        this.ipV6RaMode = ipV6RaMode;
-        this.hostRoutes = hostRoutes;
-        this.allocationPools = allocationPoolsIt;
-    }
-
-    @Override
-    public SubnetId id() {
-        return id;
-    }
-
-    @Override
-    public String subnetName() {
-        return subnetName;
-    }
-
-    @Override
-    public TenantNetworkId networkId() {
-        return networkId;
-    }
-
-    @Override
-    public TenantId tenantId() {
-        return tenantId;
-    }
-
-    @Override
-    public Version ipVersion() {
-        return ipVersion;
-    }
-
-    @Override
-    public IpPrefix cidr() {
-        return cidr;
-    }
-
-    @Override
-    public IpAddress gatewayIp() {
-        return gatewayIp;
-    }
-
-    @Override
-    public boolean dhcpEnabled() {
-        return dhcpEnabled;
-    }
-
-    @Override
-    public boolean shared() {
-        return shared;
-    }
-
-    @Override
-    public Iterable<HostRoute> hostRoutes() {
-        return hostRoutes;
-    }
-
-    @Override
-    public Mode ipV6AddressMode() {
-        return ipV6AddressMode;
-    }
-
-    @Override
-    public Mode ipV6RaMode() {
-        return ipV6RaMode;
-    }
-
-    @Override
-    public Iterable<AllocationPool> allocationPools() {
-        return allocationPools;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(id, subnetName, ipVersion, cidr, gatewayIp,
-                            dhcpEnabled, shared, tenantId);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultSubnet) {
-            final DefaultSubnet that = (DefaultSubnet) obj;
-            return Objects.equals(this.id, that.id)
-                    && Objects.equals(this.subnetName, that.subnetName)
-                    && Objects.equals(this.ipVersion, that.ipVersion)
-                    && Objects.equals(this.cidr, that.cidr)
-                    && Objects.equals(this.shared, that.shared)
-                    && Objects.equals(this.gatewayIp, that.gatewayIp)
-                    && Objects.equals(this.dhcpEnabled, that.dhcpEnabled);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("id", id).add("subnetName", subnetName)
-                .add("ipVersion", ipVersion).add("cidr", cidr)
-                .add("shared", shared).add("gatewayIp", gatewayIp)
-                .add("dhcpEnabled", dhcpEnabled).toString();
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultTenantNetwork.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultTenantNetwork.java
deleted file mode 100644
index 8271cd8..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultTenantNetwork.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-import java.util.Objects;
-
-/**
- * Default implementation of  TenantNetwork interface.
- */
-public final class DefaultTenantNetwork implements TenantNetwork {
-    private final TenantNetworkId id;
-    private final String name;
-    private final boolean adminStateUp;
-    private final State state;
-    private final boolean shared;
-    private final Type type;
-    private final TenantId tenantId;
-    private final boolean routerExternal;
-    private final PhysicalNetwork physicalNetwork;
-    private final SegmentationId segmentationId;
-
-    /**
-     * Creates a neutronNetwork element attributed to the specified provider.
-     *
-     * @param id  network identifier
-     * @param name the network name
-     * @param adminStateUp administrative state of the network
-     * @param state the network state
-     * @param shared indicates whether this network is shared across all
-     *            tenants, By default, only administrative user can change this
-     *            value
-     * @param tenantId tenant identifier
-     * @param routerExternal network routerExternal
-     * @param type the network type
-     * @param physicalNetwork physicalNetwork identifier
-     * @param segmentationId segmentation identifier
-     */
-    public DefaultTenantNetwork(TenantNetworkId id, String name,
-                                boolean adminStateUp, State state,
-                                boolean shared, TenantId tenantId,
-                                boolean routerExternal, Type type,
-                                PhysicalNetwork physicalNetwork,
-                                SegmentationId segmentationId) {
-        this.id = id;
-        this.name = name;
-        this.adminStateUp = adminStateUp;
-        this.state = state;
-        this.shared = shared;
-        this.type = type;
-        this.tenantId = tenantId;
-        this.routerExternal = routerExternal;
-        this.physicalNetwork = physicalNetwork;
-        this.segmentationId = segmentationId;
-    }
-
-    @Override
-    public TenantNetworkId id() {
-        return id;
-    }
-
-    @Override
-    public String name() {
-        return name;
-    }
-
-    @Override
-    public boolean adminStateUp() {
-        return adminStateUp;
-    }
-
-    @Override
-    public State state() {
-        return state;
-    }
-
-    @Override
-    public boolean shared() {
-        return shared;
-    }
-
-    @Override
-    public TenantId tenantId() {
-        return tenantId;
-    }
-
-    @Override
-    public boolean routerExternal() {
-        return routerExternal;
-    }
-
-    @Override
-    public Type type() {
-        return type;
-    }
-
-    @Override
-    public PhysicalNetwork physicalNetwork() {
-        return physicalNetwork;
-    }
-
-    @Override
-    public SegmentationId segmentationId() {
-        return segmentationId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(id, name, adminStateUp, state, shared, tenantId,
-                            routerExternal, type, physicalNetwork,
-                            segmentationId);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultTenantNetwork) {
-            final DefaultTenantNetwork that = (DefaultTenantNetwork) obj;
-            return Objects.equals(this.id, that.id)
-                    && Objects.equals(this.name, that.name)
-                    && Objects.equals(this.adminStateUp, that.adminStateUp)
-                    && Objects.equals(this.state, that.state)
-                    && Objects.equals(this.shared, that.shared)
-                    && Objects.equals(this.tenantId, that.tenantId)
-                    && Objects.equals(this.routerExternal, that.routerExternal)
-                    && Objects.equals(this.type, that.type)
-                    && Objects.equals(this.physicalNetwork,
-                                      that.physicalNetwork)
-                    && Objects.equals(this.segmentationId, that.segmentationId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("id", id).add("name", name)
-                .add("adminStateUp", adminStateUp).add("state", state)
-                .add("shared", shared).add("tenantId", tenantId)
-                .add("routeExternal", routerExternal).add("type", type)
-                .add("physicalNetwork", physicalNetwork)
-                .add("segmentationId", segmentationId).toString();
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultVirtualPort.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultVirtualPort.java
deleted file mode 100644
index a034f3d..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultVirtualPort.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.DeviceId;
-
-/**
- * Default implementation of VirtualPort interface .
- */
-public final class DefaultVirtualPort implements VirtualPort {
-    private final VirtualPortId id;
-    private final TenantNetworkId networkId;
-    private final Boolean adminStateUp;
-    private final String name;
-    private final State state;
-    private final MacAddress macAddress;
-    private final TenantId tenantId;
-    private final String deviceOwner;
-    private final DeviceId deviceId;
-    private final Set<FixedIp> fixedIps;
-    private final BindingHostId bindingHostId;
-    private final String bindingVnicType;
-    private final String bindingVifType;
-    private final String bindingVifDetails;
-    private final Set<AllowedAddressPair> allowedAddressPairs;
-    private final Set<SecurityGroup> securityGroups;
-
-    /**
-     * Creates a VirtualPort object.
-     *
-     * @param id the virtual port identifier
-     * @param networkId the network identifier
-     * @param adminStateUp adminStateup true or false
-     * @param strMap the map of properties of virtual port
-     * @param state virtual port state
-     * @param macAddress the MAC address
-     * @param tenantId the tenant identifier
-     * @param deviceId the device identifier
-     * @param fixedIps set of fixed IP
-     * @param bindingHostId the binding host identifier
-     * @param allowedAddressPairs the collection of allowdeAddressPairs
-     * @param securityGroups the collection of securityGroups
-     */
-    public DefaultVirtualPort(VirtualPortId id,
-                              TenantNetworkId networkId,
-                              Boolean adminStateUp,
-                              Map<String, String> strMap,
-                              State state,
-                              MacAddress macAddress,
-                              TenantId tenantId,
-                              DeviceId deviceId,
-                              Set<FixedIp> fixedIps,
-                              BindingHostId bindingHostId,
-                              Set<AllowedAddressPair> allowedAddressPairs,
-                              Set<SecurityGroup> securityGroups) {
-        this.id = id;
-        this.networkId = networkId;
-        this.adminStateUp = adminStateUp;
-        this.name = strMap.get("name");
-        this.state = state;
-        this.macAddress = macAddress;
-        this.tenantId = tenantId;
-        this.deviceOwner = strMap.get("deviceOwner");
-        this.deviceId = deviceId;
-        this.fixedIps = fixedIps;
-        this.bindingHostId = bindingHostId;
-        this.bindingVnicType = strMap.get("bindingVnicType");
-        this.bindingVifType = strMap.get("bindingVifType");
-        this.bindingVifDetails = strMap.get("bindingVifDetails");
-        this.allowedAddressPairs = allowedAddressPairs;
-        this.securityGroups = securityGroups;
-    }
-
-    @Override
-    public VirtualPortId portId() {
-        return id;
-    }
-
-    @Override
-    public TenantNetworkId networkId() {
-        return networkId;
-    }
-
-    @Override
-    public String name() {
-        return name;
-    }
-
-    @Override
-    public boolean adminStateUp() {
-        return adminStateUp;
-    }
-
-    @Override
-    public State state() {
-        return state;
-    }
-
-    @Override
-    public MacAddress macAddress() {
-        return macAddress;
-    }
-
-    @Override
-    public TenantId tenantId() {
-        return tenantId;
-    }
-
-    @Override
-    public DeviceId deviceId() {
-        return deviceId;
-    }
-
-    @Override
-    public String deviceOwner() {
-        return deviceOwner;
-    }
-
-    @Override
-    public Collection<AllowedAddressPair> allowedAddressPairs() {
-        return allowedAddressPairs;
-    }
-
-    @Override
-    public Set<FixedIp> fixedIps() {
-        return fixedIps;
-    }
-
-    @Override
-    public BindingHostId bindingHostId() {
-        return bindingHostId;
-    }
-
-    @Override
-    public String bindingVnicType() {
-        return bindingVifType;
-    }
-
-    @Override
-    public String bindingVifType() {
-        return bindingVifType;
-    }
-
-    @Override
-    public String bindingVifDetails() {
-        return bindingVifDetails;
-    }
-
-    @Override
-    public Collection<SecurityGroup> securityGroups() {
-        return securityGroups;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(id, networkId, adminStateUp, name, state,
-                            macAddress, tenantId, deviceId, deviceOwner,
-                            allowedAddressPairs, fixedIps, bindingHostId,
-                            bindingVnicType, bindingVifType, bindingVifDetails,
-                            securityGroups);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultVirtualPort) {
-            final DefaultVirtualPort that = (DefaultVirtualPort) obj;
-            return Objects.equals(this.id, that.id)
-                    && Objects.equals(this.networkId, that.networkId)
-                    && Objects.equals(this.adminStateUp, that.adminStateUp)
-                    && Objects.equals(this.state, that.state)
-                    && Objects.equals(this.name, that.name)
-                    && Objects.equals(this.tenantId, that.tenantId)
-                    && Objects.equals(this.macAddress, that.macAddress)
-                    && Objects.equals(this.deviceId, that.deviceId)
-                    && Objects.equals(this.deviceOwner, that.deviceOwner)
-                    && Objects.equals(this.allowedAddressPairs,
-                                      that.allowedAddressPairs)
-                    && Objects.equals(this.fixedIps, that.fixedIps)
-                    && Objects.equals(this.bindingHostId, that.bindingHostId)
-                    && Objects.equals(this.bindingVifDetails,
-                                      that.bindingVifDetails)
-                    && Objects.equals(this.bindingVifType, that.bindingVifType)
-                    && Objects.equals(this.bindingVnicType,
-                                      that.bindingVnicType)
-                    && Objects.equals(this.securityGroups, that.securityGroups);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("id", id).add("network_id", networkId)
-                .add("adminStateUp", adminStateUp).add("state", state)
-                .add("name", name).add("state", state)
-                .add("macAddress", macAddress).add("tenantId", tenantId)
-                .add("deviced", deviceId).add("deviceOwner", deviceOwner)
-                .add("allowedAddressPairs", allowedAddressPairs)
-                .add("fixedIp", fixedIps).add("bindingHostId", bindingHostId)
-                .add("bindingVnicType", bindingVnicType)
-                .add("bindingVifDetails", bindingVifDetails)
-                .add("bindingVifType", bindingVifType)
-                .add("securityGroups", securityGroups).toString();
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FiveTuple.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FiveTuple.java
deleted file mode 100644
index 10d47fa..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FiveTuple.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.PortNumber;
-
-/**
- * Abstraction of an entity to provide five tuple information from packet.
- * Five tuple means source ip address, destination ip address, source port number,
- * destination port number and protocol of the packet.
- */
-public interface FiveTuple {
-
-    /**
-     * Returns the protocol value.
-     *
-     * @return protocol value IPv4.PROTOCOL_TCP(0x06), IPv4.PROTOCOL_UDP(0x11), IPv4.PROTOCOL_ICMP(0x01)
-     */
-    byte protocol();
-
-    /**
-     * Returns source ip address.
-     *
-     * @return ipSrc
-     */
-    IpAddress ipSrc();
-
-    /**
-     * Returns destination ip address.
-     *
-     * @return ipDst
-     */
-    IpAddress ipDst();
-
-    /**
-     * Returns source port.
-     *
-     * @return portSrc
-     */
-    PortNumber portSrc();
-
-    /**
-     * Returns destination port.
-     *
-     * @return portDst
-     */
-    PortNumber portDst();
-
-    /**
-     * Returns source mac.
-     *
-     * @return srcMac
-     */
-    MacAddress macSrc();
-
-    /**
-     * Returns destination mac.
-     *
-     * @return dstMac
-     */
-    MacAddress macDst();
-
-    /**
-     * Returns the tenant id.
-     *
-     * @return tenantId
-     */
-    TenantId tenantId();
-
-    /**
-     * Builder class for Five tuple info.
-     */
-    interface Builder {
-
-        /**
-         * Assign the source ip address to this object.
-         *
-         * @param ipSrc source ip address
-         * @return this the builder object
-         */
-        Builder setIpSrc(IpAddress ipSrc);
-
-        /**
-         * Assign the destination ip address to this object.
-         *
-         * @param ipDst destination ip address
-         * @return this the builder object
-         */
-        Builder setIpDst(IpAddress ipDst);
-
-        /**
-         * Assign the source port to this object.
-         *
-         * @param portSrc source port
-         * @return this the builder object
-         */
-        Builder setPortSrc(PortNumber portSrc);
-
-        /**
-         * Assign the destination port to this object.
-         *
-         * @param portDst destination port
-         * @return this the builder object
-         */
-        Builder setPortDst(PortNumber portDst);
-
-        /**
-         * Assign the source mac address to this object.
-         *
-         * @param macSrc source mac address
-         * @return this the builder object
-         */
-        Builder setMacSrc(MacAddress macSrc);
-
-        /**
-         * Assign the destination mac address to this object.
-         *
-         * @param macDst destination mac address
-         * @return this the builder object
-         */
-        Builder setMacDst(MacAddress macDst);
-
-        /**
-         * Assign the protocol to this object.
-         *
-         * @param protocol packet protocol
-         * @return this the builder object
-         */
-        Builder setProtocol(byte protocol);
-
-        /**
-         * Assign the tenant id to this object.
-         *
-         * @param tenantId tenant id
-         * @return this the builder object
-         */
-        Builder setTenantId(TenantId tenantId);
-
-        /**
-         * Builds a FiveTuple object.
-         *
-         * @return instance of FiveTuple
-         */
-        FiveTuple build();
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FixedIp.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FixedIp.java
deleted file mode 100644
index 081e9eb..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FixedIp.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Objects;
-
-import org.onlab.packet.IpAddress;
-
-/**
- * Immutable representation of a IP address for the port, Include the IP address
- * and subnet identity.
- */
-public final class FixedIp {
-    private final SubnetId subnetId;
-    private final IpAddress ip;
-    // Public construction is prohibited
-    private FixedIp(SubnetId subnetId, IpAddress ip) {
-        checkNotNull(subnetId, "SubnetId cannot be null");
-        checkNotNull(ip, "IpAddress cannot be null");
-        this.subnetId = subnetId;
-        this.ip = ip;
-    }
-
-    /**
-     * Returns the FixedIp subnet identifier.
-     *
-     * @return subnet identifier
-     */
-    public SubnetId subnetId() {
-        return subnetId;
-    }
-
-    /**
-     * Returns the FixedIp IP address.
-     *
-     * @return IP address
-     */
-    public IpAddress ip() {
-        return ip;
-    }
-
-    /**
-     * Creates a fixed ip using the supplied fixedIp.
-     *
-     * @param subnetId subnet identity
-     * @param ip IP address
-     * @return FixedIp
-     */
-    public static FixedIp fixedIp(SubnetId subnetId, IpAddress ip) {
-        return new FixedIp(subnetId, ip);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(subnetId, ip);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof FixedIp) {
-            final FixedIp that = (FixedIp) obj;
-            return Objects.equals(this.subnetId, that.subnetId)
-                    && Objects.equals(this.ip, that.ip);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("subnetId", subnetId).add("ip", ip)
-                .toString();
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FloatingIp.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FloatingIp.java
deleted file mode 100644
index dc38735..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FloatingIp.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.packet.IpAddress;
-
-/**
- * Representation of a floatingIp.
- */
-public interface FloatingIp {
-
-    /**
-     * Coarse classification of the type of the FloatingIp.
-     */
-    public enum Status {
-        /**
-         * Signifies that a floating Ip is currently active.
-         */
-        ACTIVE,
-        /**
-         * Signifies that a floating Ip is currently inactive.
-         */
-        INACTIVE
-    }
-
-    /**
-     * Returns the floatingIp identifier.
-     *
-     * @return identifier
-     */
-    FloatingIpId id();
-
-    /**
-     * Returns the tenant identifier.
-     *
-     * @return the tenant identifier
-     */
-    TenantId tenantId();
-
-    /**
-     * Returns the network identifier.
-     *
-     * @return the network identifier
-     */
-    TenantNetworkId networkId();
-
-    /**
-     * Returns the port identifier.
-     *
-     * @return the port identifier
-     */
-    VirtualPortId portId();
-
-    /**
-     * Returns the router identifier.
-     *
-     * @return the router identifier
-     */
-    RouterId routerId();
-
-    /**
-     * Returns the floating ip address.
-     *
-     * @return floatingIp
-     */
-    IpAddress floatingIp();
-
-    /**
-     * Returns the fixed ip address.
-     *
-     * @return fixedIp
-     */
-    IpAddress fixedIp();
-
-    /**
-     * Returns the status of floating ip.
-     *
-     * @return floatingIpStatus
-     */
-    Status status();
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FloatingIpId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FloatingIpId.java
deleted file mode 100644
index 6258df9..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FloatingIpId.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.util.Identifier;
-
-import java.util.UUID;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Immutable representation of a floating IP identifier.
- */
-public final class FloatingIpId extends Identifier<UUID> {
-    // Public construction is prohibited
-    private FloatingIpId(UUID floatingIpId) {
-        super(checkNotNull(floatingIpId, "floatingIpId cannot be null"));
-    }
-
-    /**
-     * Creates a floating IP identifier.
-     *
-     * @param floatingIpId the UUID id of floating IP identifier
-     * @return object of floating IP identifier
-     */
-    public static FloatingIpId of(UUID floatingIpId) {
-        return new FloatingIpId(floatingIpId);
-    }
-
-    /**
-     * Creates a floating IP identifier.
-     *
-     * @param floatingIpId the floating IP identifier in string
-     * @return object of floating IP identifier
-     */
-    public static FloatingIpId of(String floatingIpId) {
-        return new FloatingIpId(UUID.fromString(floatingIpId));
-    }
-
-    /**
-     * Returns the floating IP identifier.
-     *
-     * @return the floating IP identifier
-     */
-    public UUID floatingIpId() {
-        return identifier;
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FlowClassifier.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FlowClassifier.java
deleted file mode 100644
index f7a9bcc..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FlowClassifier.java
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.packet.IpPrefix;
-
-/**
- * Abstraction of an entity which provides flow classifier for service function chain.
- * FlowClassifier classify the traffic based on the criteria defined in the request.
- * The classification can be based on port range or source and destination IP address or
- * other flow classifier elements.
- */
-public interface FlowClassifier {
-
-    /**
-     * Returns flow classifier ID.
-     *
-     * @return flow classifier id
-     */
-    FlowClassifierId flowClassifierId();
-
-    /**
-     * Returns Tenant ID.
-     *
-     * @return tenant Id
-     */
-    TenantId tenantId();
-
-    /**
-     * Returns flow classifier name.
-     *
-     * @return flow classifier name
-     */
-    String name();
-
-    /**
-     * Returns flow classifier description.
-     *
-     * @return flow classifier description
-     */
-    String description();
-
-    /**
-     * Returns EtherType.
-     *
-     * @return EtherType
-     */
-    String etherType();
-
-    /**
-     * Returns IP Protocol.
-     *
-     * @return IP protocol
-     */
-    String protocol();
-
-    /**
-     * Returns priority.
-     *
-     * @return priority
-     */
-    int priority();
-
-    /**
-     * Returns minimum source port range.
-     *
-     * @return minimum source port range
-     */
-    int minSrcPortRange();
-
-    /**
-     * Returns maximum source port range.
-     *
-     * @return maximum source port range
-     */
-    int maxSrcPortRange();
-
-    /**
-     * Returns minimum destination port range.
-     *
-     * @return minimum destination port range
-     */
-    int minDstPortRange();
-
-    /**
-     * Returns maximum destination port range.
-     *
-     * @return maximum destination port range.
-     */
-    int maxDstPortRange();
-
-    /**
-     * Returns Source IP prefix.
-     *
-     * @return Source IP prefix
-     */
-    IpPrefix srcIpPrefix();
-
-    /**
-     * Returns Destination IP prefix.
-     *
-     * @return Destination IP prefix
-     */
-    IpPrefix dstIpPrefix();
-
-    /**
-     * Returns Source virtual port.
-     *
-     * @return Source virtual port
-     */
-    VirtualPortId srcPort();
-
-    /**
-     * Returns Destination virtual port.
-     *
-     * @return Destination virtual port
-     */
-    VirtualPortId dstPort();
-
-    /**
-     * Returns whether this Flow classifier is an exact match to the
-     * Flow classifier given in the argument.
-     *
-     * @param flowClassifier other flowClassifier to match against
-     * @return true if the flowClassifiers are an exact match, otherwise false
-     */
-    boolean exactMatch(FlowClassifier flowClassifier);
-
-    /**
-     * Builder for flow Classifier.
-     */
-    interface Builder {
-
-        /**
-         * Returns Flow Classifier.
-         *
-         * @return flow classifier.
-         */
-        FlowClassifier build();
-
-        /**
-         * Sets Flow Classifier ID.
-         *
-         * @param flowClassifierId flow classifier id.
-         * @return Builder object by setting flow classifier Id.
-         */
-        Builder setFlowClassifierId(FlowClassifierId flowClassifierId);
-
-        /**
-         * Sets Tenant ID.
-         *
-         * @param tenantId tenant id.
-         * @return Builder object by setting Tenant ID.
-         */
-        Builder setTenantId(TenantId tenantId);
-
-        /**
-         * Sets Flow classifier name.
-         *
-         * @param name flow classifier name
-         * @return builder object by setting flow classifier name
-         */
-        Builder setName(String name);
-
-        /**
-         * Sets flow classifier description.
-         *
-         * @param description flow classifier description
-         * @return flow classifier description
-         */
-        Builder setDescription(String description);
-
-        /**
-         * Sets EtherType.
-         *
-         * @param etherType EtherType
-         * @return EtherType
-         */
-        Builder setEtherType(String etherType);
-
-        /**
-         * Sets IP protocol.
-         *
-         * @param protocol IP protocol
-         * @return builder object by setting IP protocol
-         */
-        Builder setProtocol(String protocol);
-
-        /**
-         * Sets priority.
-         *
-         * @param priority priority
-         * @return builder object by setting priority
-         */
-        Builder setPriority(int priority);
-
-        /**
-         * Set minimum source port range.
-         *
-         * @param minRange minimum source port range
-         * @return builder object by setting minimum source port range
-         */
-        Builder setMinSrcPortRange(int minRange);
-
-        /**
-         * Sets maximum source port range.
-         *
-         * @param maxRange maximum source port range
-         * @return builder object by setting maximum source port range
-         */
-        Builder setMaxSrcPortRange(int maxRange);
-
-        /**
-         * Sets minimum destination port range.
-         *
-         * @param minRange minimum destination port range
-         * @return builder object by setting minimum destination port range
-         */
-        Builder setMinDstPortRange(int minRange);
-
-        /**
-         * Sets maximum destination port range.
-         *
-         * @param maxRange maximum destination port range.
-         * @return builder object by setting maximum destination port range.
-         */
-        Builder setMaxDstPortRange(int maxRange);
-
-        /**
-         * Sets Source IP prefix.
-         *
-         * @param srcIpPrefix Source IP prefix
-         * @return builder object by setting Source IP prefix
-         */
-        Builder setSrcIpPrefix(IpPrefix srcIpPrefix);
-
-        /**
-         * Sets Destination IP prefix.
-         *
-         * @param dstIpPrefix Destination IP prefix
-         * @return builder object by setting Destination IP prefix
-         */
-        Builder setDstIpPrefix(IpPrefix dstIpPrefix);
-
-        /**
-         * Sets Source virtual port.
-         *
-         * @param srcPort Source virtual port
-         * @return builder object by setting Source virtual port
-         */
-        Builder setSrcPort(VirtualPortId srcPort);
-
-        /**
-         * Sets Destination virtual port.
-         *
-         * @param dstPort Destination virtual port
-         * @return builder object by setting Destination virtual port
-         */
-        Builder setDstPort(VirtualPortId dstPort);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FlowClassifierId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FlowClassifierId.java
deleted file mode 100644
index 2c74d9e..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FlowClassifierId.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.util.Identifier;
-
-import java.util.UUID;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Flow classification identifier.
- */
-public final class FlowClassifierId extends Identifier<UUID> {
-    /**
-     * Constructor to create flow classifier id.
-     *
-     * @param flowClassifierId flow classifier id.
-     */
-    private FlowClassifierId(final UUID flowClassifierId) {
-        super(checkNotNull(flowClassifierId, "Flow classifier id can not be null"));
-    }
-
-    /**
-     * Returns new flow classifier id.
-     *
-     * @param flowClassifierId flow classifier id
-     * @return new flow classifier id
-     */
-    public static FlowClassifierId of(final UUID flowClassifierId) {
-        return new FlowClassifierId(flowClassifierId);
-    }
-
-    /**
-     * Returns new flow classifier id.
-     *
-     * @param flowClassifierId flow classifier id
-     * @return new flow classifier id
-     */
-    public static FlowClassifierId of(final String flowClassifierId) {
-        return new FlowClassifierId(UUID.fromString(flowClassifierId));
-    }
-
-    /**
-     * Returns the value of flow classifier id.
-     *
-     * @return flow classifier id.
-     */
-    public UUID value() {
-        return identifier;
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/HostRoute.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/HostRoute.java
deleted file mode 100644
index 3f6824d..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/HostRoute.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-
-/**
- * Host route dictionaries for the subnet.
- */
-public interface HostRoute {
-
-    /**
-     * Returns the next hop address.
-     *
-     * @return next hop address
-     */
-    IpAddress nexthop();
-
-    /**
-     * Returns the destination address.
-     *
-     * @return destination address
-     */
-    IpPrefix destination();
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/LoadBalanceId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/LoadBalanceId.java
deleted file mode 100644
index ffd3168..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/LoadBalanceId.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.util.Identifier;
-
-import static com.google.common.base.Preconditions.checkArgument;
-
-/*
- * Representation of 5 bit load balance identifier for a service function
- */
-public final class LoadBalanceId extends Identifier<Byte> {
-
-    private static final byte MAX_ID = 0x1F;
-
-    /**
-     * Default constructor.
-     *
-     * @param loadBalanceId service function chain path's load balance identifier
-     */
-    private LoadBalanceId(byte loadBalanceId) {
-        super(loadBalanceId);
-        checkArgument(loadBalanceId <= MAX_ID, "Load balance id should not be more than 5 bit identifier");
-    }
-
-    /**
-     * Returns the SfcLoadBalanceId by setting its value.
-     *
-     * @param loadBalanceId service function chain path's load balance identifier
-     * @return LoadBalanceId
-     */
-    public static LoadBalanceId of(byte loadBalanceId) {
-        return new LoadBalanceId(loadBalanceId);
-    }
-
-
-    /**
-     * Returns load balance identifier for a service function.
-     *
-     * @return loadBalanceId
-     */
-    public byte loadBalanceId() {
-        return identifier;
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PhysicalNetwork.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PhysicalNetwork.java
deleted file mode 100644
index d2d9a0c..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PhysicalNetwork.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import java.util.Objects;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Immutable representation of a physical network identity.
- */
-public final class PhysicalNetwork {
-
-    private final String physicalNetwork;
-
-    // Public construction is prohibited
-    private PhysicalNetwork(String physicalNetwork) {
-        checkNotNull(physicalNetwork, "PhysicalNetwork cannot be null");
-        this.physicalNetwork = physicalNetwork;
-    }
-
-    /**
-     * Creates a PhysicalNetwork object.
-     *
-     * @param physicalNetwork physical network
-     * @return physical network
-     */
-    public static PhysicalNetwork physicalNetwork(String physicalNetwork) {
-        return new PhysicalNetwork(physicalNetwork);
-    }
-
-    /**
-     * Returns a physicalNetwork.
-     *
-     * @return physical network
-     */
-    public String physicalNetwork() {
-        return physicalNetwork;
-    }
-
-    @Override
-    public int hashCode() {
-        return physicalNetwork.hashCode();
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof PhysicalNetwork) {
-            final PhysicalNetwork that = (PhysicalNetwork) obj;
-            return this.getClass() == that.getClass()
-                    && Objects.equals(this.physicalNetwork,
-                                      that.physicalNetwork);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return physicalNetwork;
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChain.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChain.java
deleted file mode 100644
index e276f43..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChain.java
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import java.util.List;
-import java.util.Set;
-
-import org.onosproject.net.DeviceId;
-
-/**
- * Abstraction of an entity providing Port Chain information.
- * A Port Chain (Service Function Path) consists of
- * a set of Neutron ports, to define the sequence of service functions
- * a set of flow classifiers, to specify the classified traffic flows to enter the chain
- */
-public interface PortChain {
-
-    /**
-     * Returns the ID of this port chain.
-     *
-     * @return the port chain id
-     */
-    PortChainId portChainId();
-
-    /**
-     * Returns the tenant id of this port chain.
-     *
-     * @return the tenant id
-     */
-    TenantId tenantId();
-
-    /**
-     * Returns the name of this port chain.
-     *
-     * @return name of port chain
-     */
-    String name();
-
-    /**
-     * Returns the description of this port chain.
-     *
-     * @return description of port chain
-     */
-    String description();
-
-    /**
-     * Returns the list of port pair groups associated with
-     * this port chain.
-     *
-     * @return list of port pair groups
-     */
-    List<PortPairGroupId> portPairGroups();
-
-    /**
-     * Returns the list of flow classifiers associated with
-     * this port chain.
-     *
-     * @return list of flow classifiers
-     */
-    List<FlowClassifierId> flowClassifiers();
-
-    /**
-     * Returns the old port chain.
-     *
-     * @return old port chain
-     */
-    PortChain oldPortChain();
-
-    /**
-     * Adds a new load balanced path.
-     *
-     * @param fiveTuple five tuple from the packet
-     * @param id load balance path identifier
-     * @param path load balanced path of list of port pairs
-     */
-    void addLoadBalancePath(FiveTuple fiveTuple, LoadBalanceId id,
-                            List<PortPairId> path);
-
-    /**
-     * Adds sfc classifiers to the given load balance id for a port chain.
-     *
-     * @param id load balance path identifier
-     * @param classifierList list of classifier devices
-     */
-    void addSfcClassifiers(LoadBalanceId id, List<DeviceId> classifierList);
-
-    /**
-     * Adds sfc forwarders to the given load balance id for a port chain.
-     *
-     * @param id load balance path identifier
-     * @param forwarderList list of forwarder devices
-     */
-    void addSfcForwarders(LoadBalanceId id, List<DeviceId> forwarderList);
-
-    /**
-     * Removes sfc classifiers to the given load balance id for a port chain.
-     *
-     * @param id load balance path identifier
-     * @param classifierList list of classifier devices
-     */
-    void removeSfcClassifiers(LoadBalanceId id, List<DeviceId> classifierList);
-
-    /**
-     * Removes sfc forwarders to the given load balance id for a port chain.
-     *
-     * @param id load balance path identifier
-     * @param forwarderList list of forwarder devices
-     */
-    void removeSfcForwarders(LoadBalanceId id, List<DeviceId> forwarderList);
-
-    /**
-     * Returns sfc classifiers to the given load balance id for a port chain.
-     *
-     * @param id load balance path identifier
-     * @return list of classifier devices
-     */
-    List<DeviceId> getSfcClassifiers(LoadBalanceId id);
-
-    /**
-     * Returns sfc forwarders to the given load balance id for a port chain.
-     *
-     * @param id load balance path identifier
-     * @return list of forwarder devices
-     */
-    List<DeviceId> getSfcForwarders(LoadBalanceId id);
-
-    /**
-     * Returns the load balance id from five tuple.
-     *
-     * @param fiveTuple five tuple from the packet
-     * @return load balance identifier for the given packet
-     */
-    LoadBalanceId getLoadBalanceId(FiveTuple fiveTuple);
-
-    /**
-     * Returns the keys set from load balance id map.
-     *
-     * @return set of five tuple info
-     */
-    Set<FiveTuple> getLoadBalanceIdMapKeys();
-
-    /**
-     * Returns the keys set from load balance path map.
-     *
-     * @return set of load balance id's
-     */
-    Set<LoadBalanceId> getLoadBalancePathMapKeys();
-
-    /**
-     * Returns the load balanced path from load balance Id.
-     *
-     * @param id load balance id.
-     * @return path containing list of port pairs
-     */
-    List<PortPairId> getLoadBalancePath(LoadBalanceId id);
-
-    /**
-     * Returns the load balanced path from five tuple.
-     *
-     * @param fiveTuple five tuple from the packet
-     * @return path containing list of port pairs
-     */
-    List<PortPairId> getLoadBalancePath(FiveTuple fiveTuple);
-
-    /**
-     * Returns the no of load balance paths created.
-     *
-     * @return size of load balanced paths
-     */
-    int getLoadBalancePathSize();
-
-    /**
-     * Match the given path with existing load balanced paths.
-     *
-     * @param path load balanced path
-     * @return load balance id if the path matches, null otherwise.
-     */
-    LoadBalanceId matchPath(List<PortPairId> path);
-
-    /**
-     * Returns whether this port chain is an exact match to the port chain given
-     * in the argument.
-     * <p>
-     * Exact match means the port pair groups and flow classifiers match
-     * with the given port chain. It does not consider the port chain id, name
-     * and description.
-     * </p>
-     *
-     * @param portChain other port chain to match against
-     * @return true if the port chains are an exact match, otherwise false
-     */
-    boolean exactMatch(PortChain portChain);
-
-    /**
-     * A port chain builder..
-     */
-    interface Builder {
-
-        /**
-         * Assigns the port chain id to this object.
-         *
-         * @param portChainId the port chain id
-         * @return this the builder object
-         */
-        Builder setId(PortChainId portChainId);
-
-        /**
-         * Assigns tenant id to this object.
-         *
-         * @param tenantId tenant id of the port chain
-         * @return this the builder object
-         */
-        Builder setTenantId(TenantId tenantId);
-
-        /**
-         * Assigns the name to this object.
-         *
-         * @param name name of the port chain
-         * @return this the builder object
-         */
-        Builder setName(String name);
-
-        /**
-         * Assigns the description to this object.
-         *
-         * @param description description of the port chain
-         * @return this the builder object
-         */
-        Builder setDescription(String description);
-
-        /**
-         * Assigns the port pair groups associated with the port chain
-         * to this object.
-         *
-         * @param portPairGroups list of port pair groups
-         * @return this the builder object
-         */
-        Builder setPortPairGroups(List<PortPairGroupId> portPairGroups);
-
-        /**
-         * Assigns the flow classifiers associated with the port chain
-         * to this object.
-         *
-         * @param flowClassifiers list of flow classifiers
-         * @return this the builder object
-         */
-        Builder setFlowClassifiers(List<FlowClassifierId> flowClassifiers);
-
-        /**
-         * Builds a port chain object.
-         *
-         * @return a port chain.
-         */
-        PortChain build();
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChainId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChainId.java
deleted file mode 100644
index 34c2afa..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChainId.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.util.Identifier;
-
-import java.util.UUID;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Representation of a Port Chain ID.
- */
-public final class PortChainId extends Identifier<UUID> {
-    /**
-     * Private constructor for port chain id.
-     *
-     * @param id UUID id of port chain
-     */
-    private PortChainId(UUID id) {
-        super(checkNotNull(id, "Port chain id can not be null"));
-    }
-
-    /**
-     * Returns newly created port chain id object.
-     *
-     * @param id UUID of port chain
-     * @return object of port chain id
-     */
-    public static PortChainId of(UUID id) {
-        return new PortChainId(id);
-    }
-
-    /**
-     * Returns newly created port chain id object.
-     *
-     * @param id port chain id in string
-     * @return object of port chain id
-     */
-    public static PortChainId of(String id) {
-        return new PortChainId(UUID.fromString(id));
-    }
-
-    /**
-     * Returns the value of port chain id.
-     *
-     * @return port chain id
-     */
-    public UUID value() {
-        return identifier;
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPair.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPair.java
deleted file mode 100644
index 520c213..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPair.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-
-/**
- * Abstraction of an entity providing Port Pair information.
- * A port pair represents a service function instance.
- */
-public interface PortPair {
-
-    /**
-     * Returns the ID of this port Pair.
-     *
-     * @return the port pair id
-     */
-    PortPairId portPairId();
-
-    /**
-     * Returns the tenant id of this port pair.
-     *
-     * @return an tenant id
-     */
-    TenantId tenantId();
-
-    /**
-     * Returns the description of this port pair.
-     *
-     * @return description of port pair
-     */
-    String name();
-
-    /**
-     * Returns the description of this port pair.
-     *
-     * @return description of port pair
-     */
-    String description();
-
-    /**
-     * Returns the ingress port of this port pair.
-     *
-     * @return ingress of port pair
-     */
-    String ingress();
-
-    /**
-     * Returns the egress port of this port pair.
-     *
-     * @return egress of port pair
-     */
-    String egress();
-
-    /**
-     * Returns whether this port pair is an exact match to the port pair given
-     * in the argument.
-     * <p>
-     * Exact match means the Port port pairs match with the given port pair.
-     * It does not consider the port pair id, name and description.
-     * </p>
-     * @param portPair other port pair to match against
-     * @return true if the port pairs are an exact match, otherwise false
-     */
-    boolean exactMatch(PortPair portPair);
-
-    /**
-     * A port pair builder..
-     */
-    interface Builder {
-
-        /**
-         * Assigns the port pair id to this object.
-         *
-         * @param portPairId the port pair id
-         * @return this the builder object
-         */
-        Builder setId(PortPairId portPairId);
-
-        /**
-         * Assigns tenant id to this object.
-         *
-         * @param tenantId tenant id of the port pair
-         * @return this the builder object
-         */
-        Builder setTenantId(TenantId tenantId);
-
-        /**
-         * Assigns the name to this object.
-         *
-         * @param name name of the port pair
-         * @return this the builder object
-         */
-        Builder setName(String name);
-
-        /**
-         * Assigns the description to this object.
-         *
-         * @param description description of the port pair
-         * @return this the builder object
-         */
-        Builder setDescription(String description);
-
-        /**
-         * Assigns the ingress port to this object.
-         *
-         * @param port ingress port of the port pair
-         * @return this the builder object
-         */
-        Builder setIngress(String port);
-
-        /**
-         * Assigns the egress port to this object.
-         *
-         * @param port egress port of the port pair
-         * @return this the builder object
-         */
-        Builder setEgress(String port);
-
-        /**
-         * Builds a port pair object.
-         *
-         * @return a port pair.
-         */
-        PortPair build();
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairGroup.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairGroup.java
deleted file mode 100644
index 64fe723..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairGroup.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * Abstraction of an entity providing Port Pair Group information.
- * A port pair group consists of one or more port pairs.
- */
-public interface PortPairGroup {
-
-    /**
-     * Returns the ID of this port pair group.
-     *
-     * @return the port pair group id
-     */
-    PortPairGroupId portPairGroupId();
-
-    /**
-     * Returns the tenant id of this port pair group.
-     *
-     * @return the tenant id
-     */
-    TenantId tenantId();
-
-    /**
-     * Returns the name of this port pair group.
-     *
-     * @return name of port pair group
-     */
-    String name();
-
-    /**
-     * Returns the description of this port pair group.
-     *
-     * @return description of port pair group
-     */
-    String description();
-
-    /**
-     * Returns the list of port pairs associated with this port pair group.
-     *
-     * @return list of port pairs
-     */
-    List<PortPairId> portPairs();
-
-    /**
-     * Adds the load on the given port pair id.
-     *
-     * @param portPairId port pair id.
-     */
-    void addLoad(PortPairId portPairId);
-
-    /**
-     * Reset the load for all the port pairs in the group.
-     */
-    void resetLoad();
-
-    /**
-     * Get the load on the given port pair id.
-     *
-     * @param portPairId port pair id
-     * @return load on the given port pair id.
-     */
-    int getLoad(PortPairId portPairId);
-
-    /**
-     * Get the map of port pair id and its load.
-     *
-     * @return port pair and load map
-     */
-    Map<PortPairId, Integer> portPairLoadMap();
-
-    /**
-     * Returns whether this port pair group is an exact match to the
-     * port pair group given in the argument.
-     * <p>
-     * Exact match means the Port pairs match with the given port pair group.
-     * It does not consider the port pair group id, name and description.
-     * </p>
-     * @param portPairGroup other port pair group to match against
-     * @return true if the port pairs are an exact match, otherwise false
-     */
-    boolean exactMatch(PortPairGroup portPairGroup);
-
-    /**
-     * A port pair group builder..
-     */
-    interface Builder {
-
-        /**
-         * Assigns the port pair group id to this object.
-         *
-         * @param portPairGroupId the port pair group id
-         * @return this the builder object
-         */
-        Builder setId(PortPairGroupId portPairGroupId);
-
-        /**
-         * Assigns tenant id to this object.
-         *
-         * @param tenantId tenant id of port pair group
-         * @return this the builder object
-         */
-        Builder setTenantId(TenantId tenantId);
-
-        /**
-         * Assigns the name to this object.
-         *
-         * @param name name of the port pair group
-         * @return this the builder object
-         */
-        Builder setName(String name);
-
-        /**
-         * Assigns the description to this object.
-         *
-         * @param description description of the port pair group
-         * @return this the builder object
-         */
-        Builder setDescription(String description);
-
-        /**
-         * Assigns the port pairs associated with the port pair group
-         * to this object.
-         *
-         * @param portPairs list of port pairs
-         * @return this the builder object
-         */
-        Builder setPortPairs(List<PortPairId> portPairs);
-
-        /**
-         * Builds a port pair group object.
-         *
-         * @return a port pair group object.
-         */
-        PortPairGroup build();
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairGroupId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairGroupId.java
deleted file mode 100644
index 0699c34..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairGroupId.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.util.Identifier;
-
-import java.util.UUID;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Representation of a Port Pair Group ID.
- */
-public final class PortPairGroupId extends Identifier<UUID> {
-    /**
-     * Private constructor for port pair group id.
-     *
-     * @param id UUID id of port pair group
-     */
-    private PortPairGroupId(UUID id) {
-        super(checkNotNull(id, "Port pair group id can not be null"));
-    }
-
-    /**
-     * Returns newly created port pair group id object.
-     *
-     * @param id port pair group id in UUID
-     * @return object of port pair group id
-     */
-    public static PortPairGroupId of(UUID id) {
-        return new PortPairGroupId(id);
-    }
-
-    /**
-     * Returns newly created port pair group id object.
-     *
-     * @param id port pair group id in string
-     * @return object of port pair group id
-     */
-    public static PortPairGroupId of(String id) {
-        return new PortPairGroupId(UUID.fromString(id));
-    }
-
-    /**
-     * Returns the value of port pair group id.
-     *
-     * @return port pair group id
-     */
-    public UUID value() {
-        return identifier;
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairId.java
deleted file mode 100644
index 0b44761..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairId.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.util.Identifier;
-
-import java.util.UUID;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Representation of a Port Pair ID.
- */
-public final class PortPairId extends Identifier<UUID> {
-    /**
-     * Private constructor for port pair id.
-     *
-     * @param id UUID id of port pair
-     */
-    private PortPairId(UUID id) {
-        super(checkNotNull(id, "Port chain id can not be null"));
-    }
-
-    /**
-     * Returns newly created port pair id object.
-     *
-     * @param id UUID of port pair id
-     * @return object of port pair id
-     */
-    public static PortPairId of(UUID id) {
-        return new PortPairId(id);
-    }
-
-    /**
-     * Returns newly created port pair id object.
-     *
-     * @param id port pair id in string
-     * @return object of port pair id
-     */
-    public static PortPairId of(String id) {
-        return new PortPairId(UUID.fromString(id));
-    }
-
-    /**
-     * Returns the value of port pair id.
-     *
-     * @return port pair id
-     */
-    public UUID value() {
-        return identifier;
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/Router.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/Router.java
deleted file mode 100644
index d821bbe..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/Router.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import java.util.List;
-
-/**
- * Representation of a Router.
- */
-public interface Router {
-
-    /**
-     * Coarse classification of the type of the Router.
-     */
-    public enum Status {
-        /**
-         * Signifies that a router is currently active.
-         */
-        ACTIVE,
-        /**
-         * Signifies that a router is currently inactive.
-         */
-        INACTIVE
-    }
-
-    /**
-     * Returns the router identifier.
-     *
-     * @return identifier
-     */
-    RouterId id();
-
-    /**
-     * Returns the router Name.
-     *
-     * @return routerName
-     */
-    String name();
-
-    /**
-     * Returns the router admin state.
-     *
-     * @return true or false
-     */
-    boolean adminStateUp();
-
-    /**
-     * Returns the status of router.
-     *
-     * @return RouterStatus
-     */
-    Status status();
-
-    /**
-     * Returns the distributed status of this router.
-     * If true, indicates a distributed router.
-     *
-     * @return true or false
-     */
-    boolean distributed();
-
-    /**
-     * Returns the RouterGateway of router.
-     *
-     * @return routerGateway
-     */
-    RouterGateway externalGatewayInfo();
-
-    /**
-     * Returns the gatewayPortid of router.
-     *
-     * @return virtualPortId
-     */
-    VirtualPortId gatewayPortid();
-
-    /**
-     * Returns the owner(tenant) of this router.
-     *
-     * @return tenantId
-     */
-    TenantId tenantId();
-
-    /**
-     * Returns the router list of router.
-     *
-     * @return routes
-     */
-    List<String> routes();
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterGateway.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterGateway.java
deleted file mode 100644
index 6aef24e..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterGateway.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Collection;
-import java.util.Objects;
-import java.util.Set;
-
-/**
- * Representation of a Router gateway.
- */
-public final class RouterGateway {
-
-    private final TenantNetworkId networkId;
-    private final boolean enableSnat;
-    private final Set<FixedIp> externalFixedIps;
-
-    // Public construction is prohibited
-    private RouterGateway(TenantNetworkId networkId, boolean enableSnat,
-                         Set<FixedIp> externalFixedIps) {
-        this.networkId = checkNotNull(networkId, "networkId cannot be null");
-        this.enableSnat = enableSnat;
-        this.externalFixedIps = checkNotNull(externalFixedIps, "externalFixedIps cannot be null");
-    }
-
-    /**
-     * Creates router gateway object.
-     *
-     * @param networkId network identifier
-     * @param enableSnat SNAT enable or not
-     * @param externalFixedIps external fixed IP
-     * @return RouterGateway
-     */
-    public static RouterGateway routerGateway(TenantNetworkId networkId, boolean enableSnat,
-                                              Set<FixedIp> externalFixedIps) {
-        return new RouterGateway(networkId, enableSnat, externalFixedIps);
-    }
-
-    /**
-     * Returns network identifier.
-     *
-     * @return networkId
-     */
-    public TenantNetworkId networkId() {
-        return networkId;
-    }
-
-    /**
-     * Return SNAT enable or not.
-     *
-     * @return enableSnat
-     */
-    public boolean enableSnat() {
-        return enableSnat;
-    }
-
-    /**
-     * Return external fixed Ip.
-     *
-     * @return externalFixedIps
-     */
-    public Collection<FixedIp> externalFixedIps() {
-        return externalFixedIps;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(networkId, enableSnat, externalFixedIps);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof RouterGateway) {
-            final RouterGateway that = (RouterGateway) obj;
-            return Objects.equals(this.networkId, that.networkId)
-                    && Objects.equals(this.enableSnat, that.enableSnat)
-                    && Objects.equals(this.externalFixedIps, that.externalFixedIps);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("networkId", networkId)
-                .add("enableSnat", enableSnat)
-                .add("externalFixedIps", externalFixedIps)
-                .toString();
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterId.java
deleted file mode 100644
index 3527f80..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterId.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.util.Identifier;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Immutable representation of a router identifier.
- */
-public final class RouterId extends Identifier<String> {
-    // Public construction is prohibited
-    private RouterId(String routerId) {
-        super(checkNotNull(routerId, "routerId cannot be null"));
-    }
-
-    /**
-     * Creates a router identifier.
-     *
-     * @param routerId the router identifier
-     * @return the router identifier
-     */
-    public static RouterId valueOf(String routerId) {
-        return new RouterId(routerId);
-    }
-
-    /**
-     * Returns the router identifier.
-     *
-     * @return the router identifier
-     */
-    public String routerId() {
-        return identifier;
-    }
-}
-
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterInterface.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterInterface.java
deleted file mode 100644
index 84164b2..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterInterface.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Objects;
-
-/**
- * Representation of a Router interface.
- */
-public final class RouterInterface {
-    private final SubnetId subnetId;
-    private final VirtualPortId portId;
-    private final RouterId routerId;
-    private final TenantId tenantId;
-
-    // Public construction is prohibited
-    private RouterInterface(SubnetId subnetId, VirtualPortId portId,
-                            RouterId routerId, TenantId tenantId) {
-        this.subnetId = checkNotNull(subnetId, "subnetId cannot be null");
-        this.portId = checkNotNull(portId, "portId cannot be null");
-        this.routerId = checkNotNull(routerId, "routerId cannot be null");
-        this.tenantId = checkNotNull(tenantId, "tenantId cannot be null");
-    }
-
-    /**
-     * Creates router interface object.
-     *
-     * @param subnetId subnet identifier
-     * @param portId port identifier
-     * @param routerId router identifier
-     * @param tenantId tenant identifier
-     * @return RouterInterface
-     */
-    public static RouterInterface routerInterface(SubnetId subnetId,
-                                                  VirtualPortId portId,
-                                                  RouterId routerId,
-                                                  TenantId tenantId) {
-        return new RouterInterface(subnetId, portId, routerId, tenantId);
-    }
-
-    /**
-     * Returns subnet identifier.
-     *
-     * @return subnetId the subnet identifier
-     */
-    public SubnetId subnetId() {
-        return subnetId;
-    }
-
-    /**
-     * Returns port identifier.
-     *
-     * @return portId the port identifier
-     */
-    public VirtualPortId portId() {
-        return portId;
-    }
-
-    /**
-     * Returns router identifier.
-     *
-     * @return routerId the router identifier
-     */
-    public RouterId routerId() {
-        return routerId;
-    }
-
-    /**
-     * Returns tenant identifier.
-     *
-     * @return tenantId the tenant identifier
-     */
-    public TenantId tenantId() {
-        return tenantId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(subnetId, portId, routerId, tenantId);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof RouterInterface) {
-            final RouterInterface that = (RouterInterface) obj;
-            return Objects.equals(this.subnetId, that.subnetId)
-                    && Objects.equals(this.portId, that.portId)
-                    && Objects.equals(this.routerId, that.routerId)
-                    && Objects.equals(this.tenantId, that.tenantId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("subnetId", subnetId)
-                .add("portId", portId).add("routerId", routerId)
-                .add("tenantId", tenantId).toString();
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SecurityGroup.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SecurityGroup.java
deleted file mode 100644
index ee56ba9..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SecurityGroup.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import java.util.Objects;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Immutable representation of a security group.
- */
-public final class SecurityGroup {
-    private final String securityGroup;
-
-    /**
-     * Returns the securityGroup.
-     *
-     * @return securityGroup
-     */
-    public String securityGroup() {
-        return securityGroup;
-    }
-    // Public construction is prohibited
-    private SecurityGroup(String securityGroup) {
-        checkNotNull(securityGroup, "SecurityGroup cannot be null");
-        this.securityGroup = securityGroup;
-    }
-
-    /**
-     * Creates a securityGroup using the supplied securityGroup.
-     *
-     * @param securityGroup security group
-     * @return securityGroup
-     */
-    public static SecurityGroup securityGroup(String securityGroup) {
-        return new SecurityGroup(securityGroup);
-    }
-
-    @Override
-    public int hashCode() {
-        return securityGroup.hashCode();
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof SecurityGroup) {
-            final SecurityGroup that = (SecurityGroup) obj;
-            return this.getClass() == that.getClass()
-                    && Objects.equals(this.securityGroup, that.securityGroup);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this).add("securityGroup", securityGroup)
-                .toString();
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SegmentationId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SegmentationId.java
deleted file mode 100644
index 414894c..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SegmentationId.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.util.Identifier;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Immutable representation of a Segmentation identifier.
- */
-public final class SegmentationId extends Identifier<String> {
-    // Public construction is prohibited
-    private SegmentationId(String segmentationId) {
-        super(checkNotNull(segmentationId, "SegmentationId cannot be null"));
-    }
-
-    /**
-     * Creates a  SegmentationId object.
-     *
-     * @param segmentationId segmentation identifier
-     * @return SegmentationId
-     */
-    public static SegmentationId segmentationId(String segmentationId) {
-        return new SegmentationId(segmentationId);
-    }
-
-    /**
-     * Returns the segmentation identifier.
-     *
-     * @return segmentationId
-     */
-    public String segmentationId() {
-        return identifier;
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/ServiceFunctionGroup.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/ServiceFunctionGroup.java
deleted file mode 100644
index 2aed223..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/ServiceFunctionGroup.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-import java.util.Map;
-import java.util.Objects;
-
-import com.google.common.collect.ImmutableMap;
-
-/**
- * Implementation of ServiceFunctionGroup class.
- */
-public final class ServiceFunctionGroup {
-
-    private final String name;
-    private final String description;
-    private final Map<PortPairId, Integer> portPairLoadMap;
-
-    /**
-     * Creates an instance of service function group.
-     *
-     * @param name name of port pair
-     * @param description description of port pair
-     * @param portPairLoadMap map of port pair id and its load
-     */
-    public ServiceFunctionGroup(String name, String description,
-                                Map<PortPairId, Integer> portPairLoadMap) {
-        this.name = name;
-        this.description = description;
-        this.portPairLoadMap = portPairLoadMap;
-    }
-
-    /**
-     * Returns name of service function group.
-     *
-     * @return name of service function group
-     */
-    public String name() {
-        return name;
-    }
-
-    /**
-     * Returns description of service function group.
-     *
-     * @return description of service function group.
-     */
-    public String description() {
-        return description;
-    }
-
-    /**
-     * Returns port pair load map.
-     *
-     * @return port pair load map
-     */
-    public Map<PortPairId, Integer> portPairLoadMap() {
-        return ImmutableMap.copyOf(portPairLoadMap);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(name, description, portPairLoadMap);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof ServiceFunctionGroup) {
-            ServiceFunctionGroup that = (ServiceFunctionGroup) obj;
-            return Objects.equals(name, that.name()) &&
-                    Objects.equals(description, that.description()) &&
-                    Objects.equals(portPairLoadMap, that.portPairLoadMap());
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("name", name)
-                .add("description", description)
-                .add("portPairLoadMap", portPairLoadMap)
-                .toString();
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/Subnet.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/Subnet.java
deleted file mode 100644
index 29551f8..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/Subnet.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpAddress.Version;
-import org.onlab.packet.IpPrefix;
-
-/**
- * Representation of a subnet.
- */
-public interface Subnet {
-
-    /**
-     * Coarse classification of the type of the ipV6Mode.
-     */
-    enum Mode {
-        DHCPV6_STATEFUL, DHCPV6_STATELESS, SLAAC
-    }
-
-    /**
-     * Returns the subnet identifier.
-     *
-     * @return identifier
-     */
-    SubnetId id();
-
-    /**
-     * Returns the name of the subnet.
-     *
-     * @return subnetName
-     */
-    String subnetName();
-
-    /**
-     * Returns the network identifier.
-     *
-     * @return the network identifier
-     */
-    TenantNetworkId networkId();
-
-    /**
-     * Returns tenant identifier.
-     *
-     * @return the tenant identifier
-     */
-    TenantId tenantId();
-
-    /**
-     * Returns the IP version, which is 4 or 6.
-     *
-     * @return ipVersion
-     */
-    Version ipVersion();
-
-    /**
-     * Returns the cidr.
-     *
-     * @return cidr
-     */
-    IpPrefix cidr();
-
-    /**
-     * Returns the gateway IP address.
-     *
-     * @return gatewayIp
-     */
-    IpAddress gatewayIp();
-
-    /**
-     * Returns true if DHCP is enabled and return false if DHCP is disabled.
-     *
-     * @return true or false
-     */
-    boolean dhcpEnabled();
-
-    /**
-     * Indicates whether this tenantNetwork is shared across all tenants. By
-     * default, only administrative user can change this value.
-     *
-     * @return true or false
-     */
-    boolean shared();
-
-    /**
-     * Returns a collection of hostRoutes.
-     *
-     * @return a collection of hostRoutes
-     */
-    Iterable<HostRoute> hostRoutes();
-
-    /**
-     * Returns the ipV6AddressMode. A valid value is dhcpv6-stateful,
-     * dhcpv6-stateless, or slaac.
-     *
-     * @return ipV6AddressMode whose value is dhcpv6-stateful, dhcpv6-stateless
-     *         or slaac
-     */
-    Mode ipV6AddressMode();
-
-    /**
-     * Returns the ipV6RaMode.A valid value is dhcpv6-stateful,
-     * dhcpv6-stateless, or slaac.
-     *
-     * @return ipV6RaMode whose value is dhcpv6-stateful, dhcpv6-stateless or
-     *         slaac
-     */
-    Mode ipV6RaMode();
-
-    /**
-     * Returns a collection of allocation_pools.
-     *
-     * @return a collection of allocationPools
-     */
-    Iterable<AllocationPool> allocationPools();
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SubnetId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SubnetId.java
deleted file mode 100644
index 77f0a44..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SubnetId.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.util.Identifier;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Immutable representation of a subnet identifier.
- */
-public final class SubnetId extends Identifier<String> {
-    // Public construction is prohibited
-    private SubnetId(String subnetId) {
-        super(checkNotNull(subnetId, "SubnetId cannot be null"));
-    }
-
-    /**
-     * Creates a Subnet identifier.
-     *
-     * @param subnetId the subnet identifier
-     * @return the subnet identifier
-     */
-    public static SubnetId subnetId(String subnetId) {
-        return new SubnetId(subnetId);
-    }
-
-    /**
-     * Returns the subnet identifier.
-     *
-     * @return the subnet identifier
-     */
-    public String subnetId() {
-        return identifier;
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantId.java
deleted file mode 100644
index 120a305..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantId.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.util.Identifier;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Immutable representation of a tenant identifier.
- */
-public final class TenantId extends Identifier<String> {
-    // Public construction is prohibited
-    private TenantId(String tenantId) {
-        super(tenantId);
-    }
-
-    /**
-     * Creates a network id using the tenantid.
-     *
-     * @param tenantid network String
-     * @return TenantId
-     */
-    public static TenantId tenantId(String tenantid) {
-        checkNotNull(tenantid, "Tenant id can not be null");
-        return new TenantId(tenantid);
-    }
-
-    /**
-     * Returns the tenant identifier.
-     *
-     * @return the tenant identifier
-     */
-    public String tenantId() {
-        return identifier;
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantNetwork.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantNetwork.java
deleted file mode 100644
index 701b13a..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantNetwork.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-/**
- * Representation of the tenantNetwork.
- */
-public interface TenantNetwork {
-
-    /**
-     * Coarse classification of the state of the tenantNetwork.
-     */
-    enum State {
-        /**
-         * Signifies that a tenantNetwork is currently active.This state means
-         * that this network is available.
-         */
-        ACTIVE,
-        /**
-         * Signifies that a tenantNetwork is currently built.
-         */
-        BUILD,
-        /**
-         * Signifies that a tenantNetwork is currently unavailable.
-         */
-        DOWN,
-        /**
-         * Signifies that a tenantNetwork is currently error.
-         */
-        ERROR
-    }
-
-    /**
-     * Coarse classification of the type of the tenantNetwork.
-     */
-    enum Type {
-        /**
-         * Signifies that a tenantNetwork is local.
-         */
-        LOCAL
-    }
-
-    /**
-     * Returns the tenantNetwork identifier.
-     *
-     * @return tenantNetwork identifier
-     */
-    TenantNetworkId id();
-
-    /**
-     * Returns the tenantNetwork name.
-     *
-     * @return tenantNetwork name
-     */
-    String name();
-
-    /**
-     * Returns the administrative state of the tenantNetwork,which is up(true)
-     * or down(false).
-     *
-     * @return true or false
-     */
-    boolean adminStateUp();
-
-    /**
-     * Returns the tenantNetwork state.
-     *
-     * @return tenant network state
-     */
-    State state();
-
-    /**
-     * Indicates whether this tenantNetwork is shared across all tenants. By
-     * default,only administrative user can change this value.
-     *
-     * @return true or false
-     */
-    boolean shared();
-
-    /**
-     * Returns the UUID of the tenant that will own the tenantNetwork. This
-     * tenant can be different from the tenant that makes the create
-     * tenantNetwork request.
-     *
-     * @return the tenant identifier
-     */
-    TenantId tenantId();
-
-    /**
-     * Returns the routerExternal.Indicates whether this network is externally
-     * accessible.
-     *
-     * @return true or false
-     */
-    boolean routerExternal();
-
-    /**
-     * Returns the tenantNetwork Type.
-     *
-     * @return tenantNetwork Type
-     */
-    Type type();
-
-    /**
-     * Returns the tenantNetwork physical network.
-     *
-     * @return tenantNetwork physical network
-     */
-    PhysicalNetwork physicalNetwork();
-
-    /**
-     * Returns the tenantNetwork segmentation id.
-     *
-     * @return tenantNetwork segmentation id
-     */
-    SegmentationId segmentationId();
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantNetworkId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantNetworkId.java
deleted file mode 100644
index 6921ba5..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantNetworkId.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.util.Identifier;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Immutable representation of a tenantNetwork identity.
- */
-public final class TenantNetworkId extends Identifier<String> {
-    // Public construction is prohibited
-    private TenantNetworkId(String networkId) {
-        super(networkId);
-    }
-
-    /**
-     * Creates a TenantNetwork identifier.
-     *
-     * @param networkId tenantNetwork identify string
-     * @return the attached tenantNetwork identifier
-     */
-    public static TenantNetworkId networkId(String networkId) {
-        checkNotNull(networkId, "Networkid cannot be null");
-        return new TenantNetworkId(networkId);
-    }
-
-    /**
-     * Returns tenantNetwork identifier.
-     *
-     * @return the tenantNetwork identifier
-     */
-    public String networkId() {
-        return identifier;
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantRouter.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantRouter.java
deleted file mode 100644
index ca221c7a..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantRouter.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Objects;
-
-public final class TenantRouter {
-    private final TenantId tenantId;
-    private final RouterId routerId;
-
-    /**
-     * Construct a TenantRouter object.
-     *
-     * @param tenantId  the tenant identifier
-     * @param routerId  router identifier
-     */
-    private TenantRouter(TenantId tenantId, RouterId routerId) {
-        this.tenantId = checkNotNull(tenantId, "tenantId cannot be null");
-        this.routerId = checkNotNull(routerId, "routerId cannot be null");
-    }
-
-    /**
-     * Create a TenantRouter object.
-     *
-     * @param tenantId  the tenant identifier
-     * @param routerId  router identifier
-     * @return TenantRouter
-     */
-    public static TenantRouter tenantRouter(TenantId tenantId, RouterId routerId) {
-        return new TenantRouter(tenantId, routerId);
-    }
-
-    public TenantId tenantId() {
-        return tenantId;
-    }
-
-    public RouterId routerId() {
-        return routerId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(tenantId, routerId);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof TenantRouter) {
-            final TenantRouter that = (TenantRouter) obj;
-            return this.getClass() == that.getClass()
-                    && Objects.equals(this.tenantId, that.tenantId)
-                    && Objects.equals(this.routerId, that.routerId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("tenantId", tenantId)
-                .add("routerId", routerId)
-                .toString();
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/VirtualPort.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/VirtualPort.java
deleted file mode 100644
index 94b166f..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/VirtualPort.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import java.util.Collection;
-import java.util.Set;
-
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.DeviceId;
-
-/**
- * Representation of the VirtualPort.
- */
-public interface VirtualPort {
-    /**
-     * Coarse classification of the type of the virtual port.
-     */
-    enum State {
-        /**
-         * Signifies that a virtualPort is currently active,This state mean that
-         * this virtualPort is available.
-         */
-        ACTIVE,
-        /**
-         * Signifies that a virtualPort is currently unavailable.
-         */
-        DOWN
-    }
-
-    /**
-     * Returns the virtualPort identifier.
-     *
-     * @return virtualPort identifier
-     */
-    VirtualPortId portId();
-
-    /**
-     * Returns the network identifier.
-     *
-     * @return tenantNetwork identifier
-     */
-    TenantNetworkId networkId();
-
-    /**
-     * Returns the symbolic name for the virtualPort.
-     *
-     * @return virtualPort name
-     */
-    String name();
-
-    /**
-     * Returns the administrative status of the port,which is up(true) or
-     * down(false).
-     *
-     * @return true if the administrative status of the port is up
-     */
-    boolean adminStateUp();
-
-    /**
-     * Returns the state.
-     *
-     * @return state
-     */
-    State state();
-
-    /**
-     * Returns the MAC address.
-     *
-     * @return MAC Address
-     */
-    MacAddress macAddress();
-
-    /**
-     * Returns the port tenantId.
-     *
-     * @return port tenantId
-     */
-    TenantId tenantId();
-
-    /**
-     * Returns the device identifier.
-     *
-     * @return deviceId
-     */
-    DeviceId deviceId();
-
-    /**
-     * Returns the identifier of the entity that uses this port.
-     *
-     * @return deviceOwner
-     */
-    String deviceOwner();
-
-    /**
-     * Returns the virtualPort allowedAddressPairs.
-     *
-     * @return virtualPort allowedAddressPairs
-     */
-    Collection<AllowedAddressPair> allowedAddressPairs();
-
-    /**
-     * Returns set of IP addresses for the port, include the IP addresses and subnet
-     * identity.
-     *
-     * @return FixedIps Set of fixedIp
-     */
-    Set<FixedIp> fixedIps();
-
-    /**
-     * Returns the virtualPort bindinghostId.
-     *
-     * @return virtualPort bindinghostId
-     */
-    BindingHostId bindingHostId();
-
-    /**
-     * Returns the virtualPort bindingVnicType.
-     *
-     * @return virtualPort bindingVnicType
-     */
-    String bindingVnicType();
-
-    /**
-     * Returns the virtualPort bindingVifType.
-     *
-     * @return virtualPort bindingVifType
-     */
-    String bindingVifType();
-
-    /**
-     * Returns the virtualPort bindingvifDetail.
-     *
-     * @return virtualPort bindingvifDetail
-     */
-    String bindingVifDetails();
-
-    /**
-     * Returns the security groups.
-     *
-     * @return port security groups
-     */
-    Iterable<SecurityGroup> securityGroups();
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/VirtualPortId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/VirtualPortId.java
deleted file mode 100644
index 1a5594a..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/VirtualPortId.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.onlab.util.Identifier;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Immutable representation of a virtual port identifier.
- */
-public final class VirtualPortId extends Identifier<String> {
-    // Public construction is prohibited
-    private VirtualPortId(String virtualPortId) {
-        super(checkNotNull(virtualPortId, "VirtualPortId cannot be null"));
-    }
-
-    public String portId() {
-        return identifier;
-    }
-
-    /**
-     * Creates a virtualPort id using the supplied portId.
-     *
-     * @param portId virtualport identifier
-     * @return VirtualPortId
-     */
-    public static VirtualPortId portId(String portId) {
-        return new VirtualPortId(portId);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/ClassifierService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/ClassifierService.java
deleted file mode 100644
index 9f2c354..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/ClassifierService.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.classifier;
-
-import org.onosproject.net.DeviceId;
-
-/**
- * Provides Services for Classifier.
- */
-public interface ClassifierService {
-
-    /**
-     * Get Classifier devices for sfc.
-     *
-     * @return list of device id's for classifiers
-     */
-    Iterable<DeviceId> getClassifiers();
-
-    /**
-     * Add Classifier device for sfc.
-     *
-     * @param deviceId device id
-     */
-    void addClassifier(DeviceId deviceId);
-
-    /**
-     * Remove Classifier device for sfc.
-     *
-     * @param deviceId deviceId
-     */
-    void removeClassifier(DeviceId deviceId);
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/impl/ClassifierManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/impl/ClassifierManager.java
deleted file mode 100644
index 74bf8b6..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/impl/ClassifierManager.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.classifier.impl;
-
-import com.google.common.collect.ImmutableList;
-import org.onosproject.net.DeviceId;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.DistributedSet;
-import org.onosproject.store.service.Serializer;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.vtnrsc.classifier.ClassifierService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provides implementation of the Classifier Service.
- */
-@Component(immediate = true, service = ClassifierService.class)
-public class ClassifierManager implements ClassifierService {
-
-    private final Logger log = getLogger(ClassifierManager.class);
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    private DistributedSet<DeviceId> classifierList;
-
-    @Activate
-    protected void activate() {
-        classifierList = storageService.<DeviceId>setBuilder()
-                .withName("classifier")
-                .withSerializer(Serializer.using(KryoNamespaces.API))
-                .build()
-                .asDistributedSet();
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        log.info("Stopped");
-    }
-
-    @Override
-    public void addClassifier(DeviceId deviceId) {
-        classifierList.add(deviceId);
-    }
-
-    @Override
-    public Iterable<DeviceId> getClassifiers() {
-        return ImmutableList.copyOf(classifierList);
-    }
-
-    @Override
-    public void removeClassifier(DeviceId deviceId) {
-        classifierList.remove(deviceId);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/impl/package-info.java
deleted file mode 100644
index 7fac017..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of the Classifier service.
- */
-package org.onosproject.vtnrsc.classifier.impl;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/package-info.java
deleted file mode 100644
index 520554f..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service for interacting with Classifier of SFC.
- */
-package org.onosproject.vtnrsc.classifier;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpCreateCommand.java
deleted file mode 100644
index e21cbc3..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpCreateCommand.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.floatingip;
-
-import java.util.Set;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onlab.packet.IpAddress;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.DefaultFloatingIp;
-import org.onosproject.vtnrsc.FloatingIpId;
-import org.onosproject.vtnrsc.FloatingIp;
-import org.onosproject.vtnrsc.FloatingIp.Status;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.floatingip.FloatingIpService;
-
-import com.google.common.collect.Sets;
-
-/**
- * Supports for create a floating IP.
- */
-@Service
-@Command(scope = "onos", name = "floatingip-create",
-        description = "Supports for creating a floating IP")
-public class FloatingIpCreateCommand extends AbstractShellCommand {
-    @Argument(index = 0, name = "id", description = "The floating IP identifier",
-            required = true, multiValued = false)
-    String id = null;
-
-    @Argument(index = 1, name = "networkId", description = "The network identifier of floating IP",
-            required = true, multiValued = false)
-    String networkId = null;
-
-    @Argument(index = 2, name = "tenantId", description = "The tenant identifier of floating IP",
-            required = true, multiValued = false)
-    String tenantId = null;
-
-    @Argument(index = 3, name = "routerId", description = "The router identifier of floating IP",
-            required = true, multiValued = false)
-    String routerId = null;
-
-    @Argument(index = 4, name = "fixedIp", description = "The fixed IP of floating IP",
-            required = true, multiValued = false)
-    String fixedIp = null;
-
-    @Argument(index = 5, name = "floatingIp", description = "The floating IP of floating IP",
-            required = true, multiValued = false)
-    String floatingIp = null;
-
-    @Option(name = "-p", aliases = "--portId", description = "The port identifier of floating IP",
-            required = false, multiValued = false)
-    String portId = null;
-
-    @Option(name = "-s", aliases = "--status", description = "The status of floating IP",
-            required = false, multiValued = false)
-    String status = null;
-
-    @Override
-    protected void doExecute() {
-        FloatingIpService service = get(FloatingIpService.class);
-        try {
-            FloatingIp floatingIpObj = new DefaultFloatingIp(
-                                                          FloatingIpId.of(id),
-                                                          TenantId.tenantId(tenantId),
-                                                          TenantNetworkId.networkId(networkId),
-                                                          VirtualPortId.portId(portId),
-                                                          RouterId.valueOf(routerId),
-                                                          floatingIp == null ? null : IpAddress.valueOf(floatingIp),
-                                                          fixedIp == null ? null : IpAddress.valueOf(fixedIp),
-                                                          status == null ? Status.ACTIVE
-                                                                         : Status.valueOf(status));
-            Set<FloatingIp> floatingIpSet = Sets.newHashSet(floatingIpObj);
-            service.createFloatingIps(floatingIpSet);
-        } catch (Exception e) {
-            print(null, e.getMessage());
-        }
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpQueryCommand.java
deleted file mode 100644
index d4b08a7..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpQueryCommand.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.floatingip;
-
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.FloatingIpId;
-import org.onosproject.vtnrsc.FloatingIp;
-import org.onosproject.vtnrsc.floatingip.FloatingIpService;
-
-/**
- * Supports for query a floating IP.
- */
-@Service
-@Command(scope = "onos", name = "floatingips", description = "Supports for querying a floating IP")
-public class FloatingIpQueryCommand extends AbstractShellCommand {
-    @Option(name = "-I", aliases = "--id", description = "The floating IP identifier",
-            required = false, multiValued = false)
-    String id = null;
-
-    @Option(name = "-i", aliases = "--fixedIp", description = "The fixed IP of floating IP",
-            required = false, multiValued = false)
-    String fixedIp = null;
-
-    @Option(name = "-l", aliases = "--floatingIp", description = "The floating IP of floating IP",
-            required = false, multiValued = false)
-    String floatingIp = null;
-
-    private static final String FMT = "floatingIpId=%s, networkId=%s, tenantId=%s, portId=%s,"
-            + "routerId=%s, fixedIp=%s, floatingIp=%s, status=%s";
-
-    @Override
-    protected void doExecute() {
-        FloatingIpService service = get(FloatingIpService.class);
-        if (id != null) {
-            FloatingIp floatingIp = service.getFloatingIp(FloatingIpId
-                    .of(id));
-            printFloatingIp(floatingIp);
-        } else if (fixedIp != null || floatingIp != null) {
-            Iterable<FloatingIp> floatingIps = service.getFloatingIps();
-            if (floatingIps == null) {
-                return;
-            }
-            if (fixedIp != null) {
-                for (FloatingIp floatingIp : floatingIps) {
-                    if (floatingIp.fixedIp().toString().equals(fixedIp)) {
-                        printFloatingIp(floatingIp);
-                        return;
-                    }
-                }
-                print(null, "The fixedIp is not existed");
-            }
-            if (floatingIp != null) {
-                for (FloatingIp floatingIpObj : floatingIps) {
-                    if (floatingIpObj.fixedIp().toString().equals(floatingIp)) {
-                        printFloatingIp(floatingIpObj);
-                        return;
-                    }
-                }
-                print(null, "The floatingIp is not existed");
-            }
-        } else {
-            Iterable<FloatingIp> floatingIps = service.getFloatingIps();
-            if (floatingIps == null) {
-                return;
-            }
-            for (FloatingIp floatingIp : floatingIps) {
-                printFloatingIp(floatingIp);
-            }
-        }
-    }
-
-    private void printFloatingIp(FloatingIp floatingIp) {
-        print(FMT, floatingIp.id(), floatingIp.networkId(),
-              floatingIp.tenantId(), floatingIp.portId(),
-              floatingIp.routerId(), floatingIp.fixedIp(),
-              floatingIp.floatingIp(), floatingIp.status());
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpRemoveCommand.java
deleted file mode 100644
index 4071cd8..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpRemoveCommand.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.floatingip;
-
-import java.util.Set;
-
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.FloatingIp;
-import org.onosproject.vtnrsc.FloatingIpId;
-import org.onosproject.vtnrsc.floatingip.FloatingIpService;
-
-import com.google.common.collect.Sets;
-
-/**
- * Supports for remove a floating IP.
- */
-@Service
-@Command(scope = "onos", name = "floatingip-remove", description = "Supports for removing a floating IP")
-public class FloatingIpRemoveCommand extends AbstractShellCommand {
-    @Option(name = "-I", aliases = "--id", description = "The floating IP identifier",
-            required = false, multiValued = false)
-    String id = null;
-
-    @Option(name = "-i", aliases = "--fixedIp", description = "The fixed IP of floating IP",
-            required = false, multiValued = false)
-    String fixedIp = null;
-
-    @Option(name = "-l", aliases = "--floatingIp", description = "The floating IP of floating IP",
-            required = false, multiValued = false)
-    String floatingIp = null;
-
-    @Override
-    protected void doExecute() {
-        FloatingIpService service = get(FloatingIpService.class);
-        if (id == null && fixedIp == null && floatingIp == null) {
-            print(null, "one of id, fixedIp, floatingIp should not be null");
-        }
-        try {
-            Set<FloatingIpId> floatingIpSet = Sets.newHashSet();
-            if (id != null) {
-                floatingIpSet.add(FloatingIpId.of(id));
-                service.removeFloatingIps(floatingIpSet);
-            } else {
-                Iterable<FloatingIp> floatingIps = service.getFloatingIps();
-                if (floatingIps == null) {
-                    return;
-                }
-                if (fixedIp != null) {
-                    for (FloatingIp floatingIp : floatingIps) {
-                        if (floatingIp.fixedIp().toString().equals(fixedIp)) {
-                            floatingIpSet.add(floatingIp.id());
-                            service.removeFloatingIps(floatingIpSet);
-                            return;
-                        }
-                    }
-                    print(null, "The fixedIp is not existed");
-                    return;
-                }
-                if (floatingIp != null) {
-                    for (FloatingIp floatingIpObj : floatingIps) {
-                        if (floatingIpObj.fixedIp().toString()
-                                .equals(floatingIp)) {
-                            floatingIpSet.add(floatingIpObj.id());
-                            service.removeFloatingIps(floatingIpSet);
-                            return;
-                        }
-                    }
-                    print(null, "The floatingIp is not existed");
-                    return;
-                }
-            }
-        } catch (Exception e) {
-            print(null, e.getMessage());
-        }
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpUpdateCommand.java
deleted file mode 100644
index 5ec16c9..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpUpdateCommand.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.floatingip;
-
-import java.util.Set;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onlab.packet.IpAddress;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.DefaultFloatingIp;
-import org.onosproject.vtnrsc.FloatingIpId;
-import org.onosproject.vtnrsc.FloatingIp;
-import org.onosproject.vtnrsc.FloatingIp.Status;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.floatingip.FloatingIpService;
-
-import com.google.common.collect.Sets;
-
-/**
- * Supports for update a floating IP.
- */
-@Service
-@Command(scope = "onos", name = "floatingip-update",
-        description = "Supports for updating a floating IP")
-public class FloatingIpUpdateCommand extends AbstractShellCommand {
-    @Argument(index = 0, name = "id", description = "The floating IP identifier",
-            required = true, multiValued = false)
-    String id = null;
-
-    @Option(name = "-n", aliases = "--networkId", description = "The network identifier of floating IP",
-            required = false, multiValued = false)
-    String networkId = null;
-
-    @Option(name = "-t", aliases = "--tenantId", description = "The tenant identifier of floating IP",
-            required = false, multiValued = false)
-    String tenantId = null;
-
-    @Option(name = "-r", aliases = "--routerId", description = "The router identifier of floating IP",
-            required = false, multiValued = false)
-    String routerId = null;
-
-    @Option(name = "-p", aliases = "--portId", description = "The port identifier of floating IP",
-            required = false, multiValued = false)
-    String portId = null;
-
-    @Option(name = "-s", aliases = "--status", description = "The status of floating IP",
-            required = false, multiValued = false)
-    String status = null;
-
-    @Option(name = "-i", aliases = "--fixedIp", description = "The fixed IP of floating IP",
-            required = false, multiValued = false)
-    String fixedIp = null;
-
-    @Option(name = "-l", aliases = "--floatingIp", description = "The floating IP of floating IP",
-            required = false, multiValued = false)
-    String floatingIp = null;
-
-    @Override
-    protected void doExecute() {
-        FloatingIpService service = get(FloatingIpService.class);
-        FloatingIpId floatingIpId = FloatingIpId.of(id);
-        FloatingIp floatingIpStore = get(FloatingIpService.class).getFloatingIp(floatingIpId);
-        try {
-            FloatingIp floatingIpObj = new DefaultFloatingIp(
-                                                          floatingIpId,
-                                                          tenantId == null ? floatingIpStore.tenantId()
-                                                                           :  TenantId.tenantId(tenantId),
-                                                          networkId == null ? floatingIpStore.networkId()
-                                                                            : TenantNetworkId.networkId(networkId),
-                                                          portId == null ? floatingIpStore.portId()
-                                                                         : VirtualPortId.portId(portId),
-                                                          routerId == null ? floatingIpStore.routerId()
-                                                                           : RouterId.valueOf(routerId),
-                                                          floatingIp == null ? floatingIpStore.floatingIp()
-                                                                             : IpAddress.valueOf(floatingIp),
-                                                          fixedIp == null ? floatingIpStore.fixedIp()
-                                                                          : IpAddress.valueOf(fixedIp),
-                                                          status == null ? floatingIpStore.status()
-                                                                         : Status.valueOf(status));
-            Set<FloatingIp> floatingIpSet = Sets.newHashSet(floatingIpObj);
-            service.updateFloatingIps(floatingIpSet);
-        } catch (Exception e) {
-            print(null, e.getMessage());
-        }
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/package-info.java
deleted file mode 100644
index 715e4a6..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Command line interface for floatingIP.
- */
-package org.onosproject.vtnrsc.cli.floatingip;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkCreateCommand.java
deleted file mode 100644
index 40669cb..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkCreateCommand.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.network;
-
-import java.util.Set;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.DefaultTenantNetwork;
-import org.onosproject.vtnrsc.PhysicalNetwork;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetwork;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-
-import com.google.common.collect.Sets;
-
-/**
- * Supports for creating a TenantNetwork.
- */
-@Service
-@Command(scope = "onos", name = "tenantnetwork-create",
-        description = "Supports for creating a TenantNetwork")
-public class TenantNetworkCreateCommand extends AbstractShellCommand {
-
-    @Argument(index = 0, name = "id", description = "TenantNetwork network id", required = true,
-            multiValued = false)
-    String id = null;
-
-    @Argument(index = 1, name = "tenantID", description = "The tenant id of TenantNetwork",
-            required = true, multiValued = false)
-    String tenantID = null;
-
-    @Argument(index = 2, name = "type", description = "The type of TenantNetwork", required = true,
-            multiValued = false)
-    String type = null;
-
-    @Argument(index = 3, name = "segmentationID", description = "The segmentation id of TenantNetwork",
-            required = true, multiValued = false)
-    String segmentationID = "";
-
-    @Option(name = "-n", aliases = "--name", description = "TenantNetwork name", required = false,
-            multiValued = false)
-    String name = null;
-
-    @Option(name = "-a", aliases = "--adminStateUp", description = "TenantNetwork adminStateUp is true or false",
-            required = false, multiValued = false)
-    boolean adminStateUp = false;
-
-    @Option(name = "-s", aliases = "--state", description = "The state of TenantNetwork",
-            required = false, multiValued = false)
-    String state = null;
-
-    @Option(name = "-d", aliases = "--shared", description = "TenantNetwork is shared or not",
-            required = false, multiValued = false)
-    boolean shared = false;
-
-    @Option(name = "-r", aliases = "--routerExternal",
-            description = "TenantNetwork is routerExternal or not", required = false,
-            multiValued = false)
-    boolean routerExternal = false;
-
-    @Option(name = "-p", aliases = "--physicalNetwork", description = "The physical network of Tenant",
-            required = false, multiValued = false)
-    String physicalNetwork = "";
-
-    @Override
-    protected void doExecute() {
-        TenantNetworkService service = get(TenantNetworkService.class);
-        TenantNetwork network = new DefaultTenantNetwork(TenantNetworkId.networkId(id), name,
-                                                         adminStateUp,
-                                                         TenantNetwork.State.valueOf(state),
-                                                         shared, TenantId.tenantId(tenantID),
-                                                         routerExternal,
-                                                         TenantNetwork.Type.valueOf(type),
-                                                         PhysicalNetwork.physicalNetwork(physicalNetwork),
-                                                         SegmentationId.segmentationId(segmentationID));
-
-        Set<TenantNetwork> networksSet = Sets.newHashSet(network);
-        service.createNetworks(networksSet);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkQueryCommand.java
deleted file mode 100644
index 7521eff..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkQueryCommand.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.network;
-
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.TenantNetwork;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-
-/**
- * Supports for querying TenantNetworks by network id.
- */
-@Service
-@Command(scope = "onos", name = "tenantnetworks", description = "Supports for querying"
-        + "tenantNetworks by networkid")
-public class TenantNetworkQueryCommand extends AbstractShellCommand {
-
-    @Option(name = "-i", aliases = "--id", description = "TenantNetwork id", required = false,
-            multiValued = false)
-    String id = null;
-
-    private static final String FMT = "networkId=%s, networkName=%s, segmentationId=%s,"
-            + "tenantId=%s, type=%s, adminStateUp=%s";
-
-    @Override
-    protected void doExecute() {
-        TenantNetworkService service = get(TenantNetworkService.class);
-        if (id != null) {
-            TenantNetwork network = service.getNetwork(TenantNetworkId.networkId(id));
-            printNetwork(network);
-        } else {
-            Iterable<TenantNetwork> networks = service.getNetworks();
-            for (TenantNetwork network : networks) {
-                printNetwork(network);
-            }
-        }
-    }
-
-    private void printNetwork(TenantNetwork network) {
-        if (network == null) {
-            return;
-        }
-        print(FMT, network.id(), network.name(), network.segmentationId(),
-              network.tenantId(), network.type(), network.adminStateUp());
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkRemoveCommand.java
deleted file mode 100644
index d6a8673..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkRemoveCommand.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.network;
-
-import java.util.Set;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-
-import com.google.common.collect.Sets;
-
-/**
- * Supports for removing a TenantNetwork by network id.
- */
-@Service
-@Command(scope = "onos", name = "tenantnetwork-remove", description = "Supports for removing"
-        + " a tenantNetwork by tenantNetworkid")
-public class TenantNetworkRemoveCommand extends AbstractShellCommand {
-
-    @Argument(index = 0, name = "id", description = "TenantNetwork neutronNetwork Id",
-            required = true, multiValued = false)
-    String id = null;
-
-    @Override
-    protected void doExecute() {
-        TenantNetworkService service = get(TenantNetworkService.class);
-        Set<TenantNetworkId> networkIds = Sets.newHashSet(TenantNetworkId.networkId(id));
-        service.removeNetworks(networkIds);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkUpdateCommand.java
deleted file mode 100644
index 88c342e..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkUpdateCommand.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.network;
-
-import java.util.Set;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.DefaultTenantNetwork;
-import org.onosproject.vtnrsc.PhysicalNetwork;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetwork;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-
-import com.google.common.collect.Sets;
-
-/**
- * Supports for updating a TenantNetwork.
- */
-@Service
-@Command(scope = "onos", name = "tenantnetwork-update",
-        description = "Supports for updating a TenantNetwork")
-public class TenantNetworkUpdateCommand extends AbstractShellCommand {
-
-    @Argument(index = 0, name = "id", description = "TenantNetwork network id", required = true,
-            multiValued = false)
-    String id = null;
-
-    @Argument(index = 1, name = "tenantID", description = "The tenant id of TenantNetwork",
-            required = true, multiValued = false)
-    String tenantID = null;
-
-    @Argument(index = 2, name = "type", description = "The type of TenantNetwork", required = true,
-            multiValued = false)
-    String type = null;
-
-    @Argument(index = 3, name = "segmentationID", description = "The segmentation id of TenantNetwork",
-            required = true, multiValued = false)
-    String segmentationID = "";
-
-    @Option(name = "-n", aliases = "--name", description = "TenantNetwork name", required = false,
-            multiValued = false)
-    String name = null;
-
-    @Option(name = "-a", aliases = "--adminStateUp", description = "TenantNetwork adminStateUp is true or false",
-            required = false, multiValued = false)
-    boolean adminStateUp = false;
-
-    @Option(name = "-s", aliases = "--state", description = "The state of TenantNetwork",
-            required = false, multiValued = false)
-    String state = null;
-
-    @Option(name = "-d", aliases = "--shared", description = "TenantNetwork is shared or not",
-            required = false, multiValued = false)
-    boolean shared = false;
-
-    @Option(name = "-r", aliases = "--routerExternal",
-            description = "TenantNetwork is routerExternal or not", required = false,
-            multiValued = false)
-    boolean routerExternal = false;
-
-    @Option(name = "-p", aliases = "--physicalNetwork", description = "The physical network of Tenant",
-            required = false, multiValued = false)
-    String physicalNetwork = "";
-
-    @Override
-    protected void doExecute() {
-        TenantNetworkService service = get(TenantNetworkService.class);
-        TenantNetwork network = new DefaultTenantNetwork(TenantNetworkId.networkId(id), name,
-                                                         adminStateUp,
-                                                         TenantNetwork.State.valueOf(state),
-                                                         shared, TenantId.tenantId(tenantID),
-                                                         routerExternal,
-                                                         TenantNetwork.Type.valueOf(type),
-                                                         PhysicalNetwork.physicalNetwork(physicalNetwork),
-                                                         SegmentationId.segmentationId(segmentationID));
-
-        Set<TenantNetwork> networksSet = Sets.newHashSet();
-        networksSet.add(network);
-        service.updateNetworks(networksSet);
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/package-info.java
deleted file mode 100644
index b2ecfe1..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Command line interface for tenant networks.
- */
-package org.onosproject.vtnrsc.cli.network;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterCreateCommand.java
deleted file mode 100644
index 4c0aee4..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterCreateCommand.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.router;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.DefaultRouter;
-import org.onosproject.vtnrsc.Router;
-import org.onosproject.vtnrsc.Router.Status;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.router.RouterService;
-
-import com.google.common.collect.Sets;
-
-/**
- * Supports for create a router.
- */
-@Service
-@Command(scope = "onos", name = "router-create",
-        description = "Supports for creating a router")
-public class RouterCreateCommand extends AbstractShellCommand {
-    @Argument(index = 0, name = "id", description = "The router identifier",
-            required = true, multiValued = false)
-    String id = null;
-
-    @Argument(index = 1, name = "routerName", description = "The name of router",
-            required = true, multiValued = false)
-    String routerName = null;
-
-    @Argument(index = 2, name = "tenantId", description = "The tenant identifier of router",
-            required = true, multiValued = false)
-    String tenantId = null;
-
-    @Option(name = "-g", aliases = "--gatewayPortId", description = "The gatewayPort identifier of router",
-            required = false, multiValued = false)
-    String gatewayPortId = null;
-
-    @Option(name = "-e", aliases = "--externalGatewayInfo", description = "The external gateway info of router",
-            required = false, multiValued = false)
-    String externalGatewayInfo = null;
-
-    @Option(name = "-s", aliases = "--status", description = "The status of router",
-            required = false, multiValued = false)
-    String status = null;
-
-    @Option(name = "-a", aliases = "--adminStateUp", description = "The boolean adminStateUp of router",
-            required = false, multiValued = false)
-    boolean adminStateUp = true;
-
-    @Option(name = "-d", aliases = "--distributed", description = "The boolean distributed of router",
-            required = false, multiValued = false)
-    boolean distributed = false;
-
-    @Override
-    protected void doExecute() {
-        RouterService service = get(RouterService.class);
-        try {
-            List<String> routes = new ArrayList<String>();
-            Router router = new DefaultRouter(
-                                              RouterId.valueOf(id),
-                                              routerName,
-                                              adminStateUp,
-                                              status == null ? Status.ACTIVE
-                                                            : Status.valueOf(status),
-                                              distributed,
-                                              null,
-                                              VirtualPortId.portId(gatewayPortId),
-                                              TenantId.tenantId(tenantId),
-                                              routes);
-            Set<Router> routerSet = Sets.newHashSet(router);
-            service.createRouters(routerSet);
-        } catch (Exception e) {
-            print(null, e.getMessage());
-        }
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterQueryCommand.java
deleted file mode 100644
index dc447d6..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterQueryCommand.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.router;
-
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.Router;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.router.RouterService;
-
-/**
- * Supports for query a list of router.
- */
-@Service
-@Command(scope = "onos", name = "routers", description = "Supports for creating a router")
-public class RouterQueryCommand extends AbstractShellCommand {
-    @Option(name = "-i", aliases = "--id", description = "The router identifier",
-            required = false, multiValued = false)
-    String id = null;
-
-    @Option(name = "-n", aliases = "--routerName", description = "The name of router",
-            required = false, multiValued = false)
-    String routerName = null;
-
-    private static final String FMT = "routerId=%s, routerName=%s, tenantId=%s, gatewayPortId=%s,"
-            + "externalGatewayInfo=%s, status=%s, adminStateUp=%s, distributed=%s, routers=%s";
-
-    @Override
-    protected void doExecute() {
-        RouterService service = get(RouterService.class);
-        if (id != null) {
-            Router router = service.getRouter(RouterId.valueOf(id));
-            printFloatingIp(router);
-        } else if (routerName != null) {
-            Iterable<Router> routers = service.getRouters();
-            if (routers == null) {
-                return;
-            }
-            for (Router router : routers) {
-                if (router.name().equals(routerName)) {
-                    printFloatingIp(router);
-                    return;
-                }
-            }
-            print(null, "The routerName is not existed");
-        } else {
-            Iterable<Router> routers = service.getRouters();
-            if (routers == null) {
-                return;
-            }
-            for (Router router : routers) {
-                printFloatingIp(router);
-            }
-        }
-    }
-
-    private void printFloatingIp(Router router) {
-        print(FMT, router.id(), router.name(), router.tenantId(),
-              router.gatewayPortid(), router.externalGatewayInfo(),
-              router.status(), router.adminStateUp(), router.distributed(),
-              router.routes());
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterRemoveCommand.java
deleted file mode 100644
index 45d642c..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterRemoveCommand.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.router;
-
-import java.util.Set;
-
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.Router;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.router.RouterService;
-
-import com.google.common.collect.Sets;
-
-/**
- * Supports for remove a router.
- */
-@Service
-@Command(scope = "onos", name = "router-remove", description = "Supports for removing a router")
-public class RouterRemoveCommand extends AbstractShellCommand {
-    @Option(name = "-i", aliases = "--id", description = "The router identifier",
-            required = false, multiValued = false)
-    String id = null;
-
-    @Option(name = "-n", aliases = "--routerName", description = "The name of router",
-            required = false, multiValued = false)
-    String routerName = null;
-
-    @Override
-    protected void doExecute() {
-        RouterService service = get(RouterService.class);
-        if (id == null && routerName == null) {
-            print(null, "one of id, routerName should not be null");
-        }
-        try {
-            Set<RouterId> routerSet = Sets.newHashSet();
-            if (id != null) {
-                routerSet.add(RouterId.valueOf(id));
-                service.removeRouters(routerSet);
-            } else {
-                Iterable<Router> routers = service.getRouters();
-                if (routers == null) {
-                    return;
-                }
-                for (Router router : routers) {
-                    if (router.name().equals(routerName)) {
-                        routerSet.add(router.id());
-                        service.removeRouters(routerSet);
-                        return;
-                    }
-                }
-            }
-        } catch (Exception e) {
-            print(null, e.getMessage());
-        }
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterUpdateCommand.java
deleted file mode 100644
index 0b2d89f..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterUpdateCommand.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.router;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.DefaultRouter;
-import org.onosproject.vtnrsc.Router;
-import org.onosproject.vtnrsc.Router.Status;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.router.RouterService;
-
-import com.google.common.collect.Sets;
-
-/**
- * Supports for update a router.
- */
-@Service
-@Command(scope = "onos", name = "router-update", description = "Supports for updating a router")
-public class RouterUpdateCommand extends AbstractShellCommand {
-    @Argument(index = 0, name = "id", description = "The router identifier",
-            required = true, multiValued = false)
-    String id = null;
-
-    @Option(name = "-r", aliases = "--routerName", description = "The name of router",
-            required = false, multiValued = false)
-    String routerName = null;
-
-    @Option(name = "-t", aliases = "--tenantId", description = "The tenant identifier of router",
-            required = false, multiValued = false)
-    String tenantId = null;
-
-    @Option(name = "-g", aliases = "--gatewayPortId", description = "The gatewayPort identifier of router",
-            required = false, multiValued = false)
-    String gatewayPortId = null;
-
-    @Option(name = "-e", aliases = "--externalGatewayInfo", description = "The externalGatewayInfo of router",
-            required = false, multiValued = false)
-    String externalGatewayInfo = null;
-
-    @Option(name = "-s", aliases = "--status", description = "The status of router",
-            required = false, multiValued = false)
-    String status = null;
-
-    @Option(name = "-a", aliases = "--adminStateUp", description = "The boolean adminStateUp of router",
-            required = false, multiValued = false)
-    boolean adminStateUp = true;
-
-    @Option(name = "-d", aliases = "--distributed", description = "The boolean distributed of router",
-            required = false, multiValued = false)
-    boolean distributed = false;
-
-    @Override
-    protected void doExecute() {
-        RouterService service = get(RouterService.class);
-        RouterId routerId = RouterId.valueOf(id);
-        Router router = get(RouterService.class).getRouter(routerId);
-        try {
-            List<String> routes = new ArrayList<String>();
-            Router routerObj = new DefaultRouter(
-                                                 RouterId.valueOf(id),
-                                                 routerName == null ? router.name() : routerName,
-                                                 adminStateUp,
-                                                 status == null ? Status.ACTIVE
-                                                               : Status.valueOf(status),
-                                                 distributed,
-                                                 null,
-                                                 gatewayPortId == null ? router.gatewayPortid()
-                                                                      : VirtualPortId.portId(gatewayPortId),
-                                                 tenantId == null ? router.tenantId()
-                                                                  : TenantId.tenantId(tenantId),
-                                                 routes);
-            Set<Router> routerSet = Sets.newHashSet(routerObj);
-            service.createRouters(routerSet);
-        } catch (Exception e) {
-            print(null, e.getMessage());
-        }
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/package-info.java
deleted file mode 100644
index d217bfb..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Command line interface for router.
- */
-package org.onosproject.vtnrsc.cli.router;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceCreateCommand.java
deleted file mode 100644
index c8c39cb..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceCreateCommand.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.routerinterface;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.RouterInterface;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.routerinterface.RouterInterfaceService;
-
-/**
- * Supports for create a router interface.
- */
-@Service
-@Command(scope = "onos", name = "routerinterface-create", description = "Supports for creating a router interface")
-public class RouterInterfaceCreateCommand extends AbstractShellCommand {
-    @Argument(index = 0, name = "routerId", description = "The router identifier of router interface",
-            required = true, multiValued = false)
-    String routerId = null;
-
-    @Argument(index = 1, name = "tenantId", description = "The tenant identifier of router interface",
-            required = true, multiValued = false)
-    String tenantId = null;
-
-    @Argument(index = 2, name = "portId", description = "The port identifier of router interface",
-            required = true, multiValued = false)
-    String portId = null;
-
-    @Argument(index = 3, name = "subnetId", description = "The subnet identifier of router interface",
-            required = true, multiValued = false)
-    String subnetId = null;
-
-    @Override
-    protected void doExecute() {
-        RouterInterfaceService service = get(RouterInterfaceService.class);
-        try {
-            RouterInterface routerInterface = RouterInterface.routerInterface(
-                                                                  SubnetId.subnetId(subnetId),
-                                                                  VirtualPortId.portId(portId),
-                                                                  RouterId.valueOf(routerId),
-                                                                  TenantId.tenantId(tenantId));
-            service.addRouterInterface(routerInterface);
-        } catch (Exception e) {
-            print(null, e.getMessage());
-        }
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceQueryCommand.java
deleted file mode 100644
index 7486c12..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceQueryCommand.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.routerinterface;
-
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.RouterInterface;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.routerinterface.RouterInterfaceService;
-
-/**
- * Supports for query a router interface.
- */
-@Service
-@Command(scope = "onos", name = "routerinterfaces", description = "Supports for querying a router interface")
-public class RouterInterfaceQueryCommand extends AbstractShellCommand {
-    @Option(name = "-s", aliases = "--subnetId", description = "The subnet identifier of router interface",
-            required = false, multiValued = false)
-    String subnetId = null;
-
-    private static final String FMT = "subnetId=%s, tenantId=%s, portId=%s, routerId=%s";
-
-    @Override
-    protected void doExecute() {
-        RouterInterfaceService service = get(RouterInterfaceService.class);
-        if (subnetId != null) {
-            RouterInterface routerInterface = service
-                    .getRouterInterface(SubnetId.subnetId(subnetId));
-            printRouterInterface(routerInterface);
-        } else {
-            Iterable<RouterInterface> routerInterfaces = service
-                    .getRouterInterfaces();
-            for (RouterInterface routerInterface : routerInterfaces) {
-                printRouterInterface(routerInterface);
-            }
-        }
-    }
-
-    private void printRouterInterface(RouterInterface routerInterface) {
-        print(FMT, routerInterface.subnetId(), routerInterface.tenantId(),
-              routerInterface.portId(), routerInterface.routerId());
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceRemoveCommand.java
deleted file mode 100644
index 3bfd7d2..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceRemoveCommand.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.routerinterface;
-
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.RouterInterface;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.routerinterface.RouterInterfaceService;
-
-/**
- * Supports for remove a router interface.
- */
-@Service
-@Command(scope = "onos", name = "routerinterface-remove", description = "Supports for removing a router interface")
-public class RouterInterfaceRemoveCommand extends AbstractShellCommand {
-    @Option(name = "-s", aliases = "--subnetId", description = "The subnet identifier of router interface",
-            required = true, multiValued = false)
-    String subnetId = null;
-
-    @Override
-    protected void doExecute() {
-        RouterInterfaceService service = get(RouterInterfaceService.class);
-        try {
-            RouterInterface routerInterface = service
-                    .getRouterInterface(SubnetId.subnetId(subnetId));
-            if (routerInterface == null) {
-                print(null, "subnet ID of interface doesn't exist");
-                return;
-            }
-            service.removeRouterInterface(routerInterface);
-        } catch (Exception e) {
-            print(null, e.getMessage());
-        }
-
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/package-info.java
deleted file mode 100644
index e89b421..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Command line interface for router interface.
- */
-package org.onosproject.vtnrsc.cli.routerinterface;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetCreateCommand.java
deleted file mode 100644
index 8a0a034..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetCreateCommand.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.subnet;
-
-import java.util.Set;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpAddress.Version;
-import org.onlab.packet.IpPrefix;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.AllocationPool;
-import org.onosproject.vtnrsc.DefaultSubnet;
-import org.onosproject.vtnrsc.HostRoute;
-import org.onosproject.vtnrsc.Subnet;
-import org.onosproject.vtnrsc.Subnet.Mode;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.subnet.SubnetService;
-
-import com.google.common.collect.Sets;
-
-/**
- * Supports for creating a subnet.
- */
-@Service
-@Command(scope = "onos", name = "subnet-create", description = "Supports for creating a subnet")
-public class SubnetCreateCommand extends AbstractShellCommand {
-
-    @Argument(index = 0, name = "id", description = "Subnet Id", required = true,
-            multiValued = false)
-    String id = null;
-
-    @Argument(index = 1, name = "subnetName", description = "Subnet String name", required = true,
-            multiValued = false)
-    String subnetName = null;
-
-    @Argument(index = 2, name = "networkId", description = "Subnet Network Id", required = true,
-            multiValued = false)
-    String networkId = null;
-
-    @Argument(index = 3, name = "tenantId", description = "Subnet Tenant Id", required = true,
-            multiValued = false)
-    String tenantId = null;
-
-    @Option(name = "-i", aliases = "--ipVersion", description = "Subnet Version ipVersion",
-            required = false, multiValued = false)
-    Version ipVersion = null;
-
-    @Option(name = "-c", aliases = "--cidr", description = "Subnet IpPrefix cidr",
-            required = false, multiValued = false)
-    String cidr = "0.0.0.0/0";
-
-    @Option(name = "-g", aliases = "--gatewayIp", description = "Subnet IpAddress gatewayIp",
-            required = false, multiValued = false)
-    String gatewayIp = "0.0.0.0";
-
-    @Option(name = "-d", aliases = "--dhcpEnabled", description = "Subnet boolean dhcpEnabled",
-            required = false, multiValued = false)
-    boolean dhcpEnabled = false;
-
-    @Option(name = "-s", aliases = "--shared", description = "Subnet boolean shared",
-            required = false, multiValued = false)
-    boolean shared = false;
-
-    @Option(name = "-m", aliases = "--ipV6AddressMode",
-            description = "Subnet Mode ipV6AddressMode", required = false, multiValued = false)
-    String ipV6AddressMode = null;
-
-    @Option(name = "-r", aliases = "--ipV6RaMode", description = "Subnet Mode ipV6RaMode",
-            required = false, multiValued = false)
-    String ipV6RaMode = null;
-
-    @Option(name = "-h", aliases = "--hostRoutes", description = "Subnet jsonnode hostRoutes",
-            required = false, multiValued = false)
-    Set<HostRoute> hostRoutes = Sets.newHashSet();
-
-    @Option(name = "-a", aliases = "--allocationPools",
-            description = "Subnet jsonnode allocationPools", required = false, multiValued = false)
-    Set<AllocationPool> allocationPools = Sets.newHashSet();
-
-    @Override
-    protected void doExecute() {
-        SubnetService service = get(SubnetService.class);
-        if (id == null || networkId == null || tenantId == null) {
-            print("id,networkId,tenantId can not be null");
-            return;
-        }
-        Subnet subnet = new DefaultSubnet(SubnetId.subnetId(id), subnetName,
-                                          TenantNetworkId.networkId(networkId),
-                                          TenantId.tenantId(tenantId), ipVersion,
-                                          cidr == null ? null : IpPrefix.valueOf(cidr),
-                                          gatewayIp == null ? null : IpAddress.valueOf(gatewayIp),
-                                          dhcpEnabled, shared, hostRoutes,
-                                          ipV6AddressMode == null ? null : Mode.valueOf(ipV6AddressMode),
-                                          ipV6RaMode == null ? null : Mode.valueOf(ipV6RaMode),
-                                          allocationPools);
-
-        Set<Subnet> subnetsSet = Sets.newHashSet(subnet);
-        service.createSubnets(subnetsSet);
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetQueryCommand.java
deleted file mode 100644
index 9cc3269..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetQueryCommand.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.subnet;
-
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.Subnet;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.subnet.SubnetService;
-
-/**
- * Supports for querying a subnet.
- */
-@Service
-@Command(scope = "onos", name = "subnets", description = "Supports for querying a subnet")
-public class SubnetQueryCommand extends AbstractShellCommand {
-
-    @Option(name = "-i", aliases = "--id", description = "Subnet id", required = false,
-            multiValued = false)
-    String id = null;
-
-    private static final String FMT = "subnetId=%s, networkId=%s, subnetName=%s,"
-            + "tenantId=%s, cidr=%s, dhcpEnabled=%s, gatewayIp=%s," + "ipVersion=%s";
-
-    @Override
-    protected void doExecute() {
-        SubnetService service = get(SubnetService.class);
-        if (id != null) {
-            Subnet subnet = service.getSubnet(SubnetId.subnetId(id));
-            printSubnet(subnet);
-        } else {
-            Iterable<Subnet> subnets = service.getSubnets();
-            if (subnets == null) {
-                return;
-            }
-            for (Subnet subnet : subnets) {
-                printSubnet(subnet);
-            }
-        }
-    }
-
-    private void printSubnet(Subnet subnet) {
-        print(FMT, subnet.id(), subnet.networkId(), subnet.subnetName(),
-              subnet.tenantId(), subnet.cidr(), subnet.dhcpEnabled(), subnet
-                      .gatewayIp(), subnet.ipVersion());
-
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetRemoveCommand.java
deleted file mode 100644
index 4955bc9..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetRemoveCommand.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.subnet;
-
-import java.util.Set;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.subnet.SubnetService;
-
-import com.google.common.collect.Sets;
-
-/**
- * Supports for removing a subnet.
- */
-@Service
-@Command(scope = "onos", name = "subnet-remove", description = "Supports for removing a subnet")
-public class SubnetRemoveCommand extends AbstractShellCommand {
-
-    @Argument(index = 0, name = "id", description = "Subnet SubnetId Id", required = true,
-            multiValued = false)
-    String id = null;
-
-    @Override
-    protected void doExecute() {
-        SubnetService service = get(SubnetService.class);
-        Set<SubnetId> subnetsSet = Sets.newHashSet();
-        subnetsSet.add(SubnetId.subnetId(id));
-        service.removeSubnets(subnetsSet);
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetUpdateCommand.java
deleted file mode 100644
index 50cfaa2..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetUpdateCommand.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.subnet;
-
-import java.util.Set;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpAddress.Version;
-import org.onlab.packet.IpPrefix;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.AllocationPool;
-import org.onosproject.vtnrsc.DefaultSubnet;
-import org.onosproject.vtnrsc.HostRoute;
-import org.onosproject.vtnrsc.Subnet;
-import org.onosproject.vtnrsc.Subnet.Mode;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.subnet.SubnetService;
-
-import com.google.common.collect.Sets;
-
-/**
- * Supports for updating a subnet.
- */
-@Service
-@Command(scope = "onos", name = "subnet-update", description = "Supports for updating a subnet")
-public class SubnetUpdateCommand extends AbstractShellCommand {
-
-    @Argument(index = 0, name = "id", description = "Subnet Id", required = true,
-            multiValued = false)
-    String id = null;
-
-    @Argument(index = 1, name = "subnetName", description = "Subnet String name", required = true,
-            multiValued = false)
-    String subnetName = null;
-
-    @Argument(index = 2, name = "networkId", description = "Subnet Network Id", required = true,
-            multiValued = false)
-    String networkId = null;
-
-    @Argument(index = 3, name = "tenantId", description = "Subnet Tenant Id", required = true,
-            multiValued = false)
-    String tenantId = null;
-
-    @Option(name = "-i", aliases = "--ipVersion", description = "Subnet Version ipVersion",
-            required = false, multiValued = false)
-    Version ipVersion = null;
-
-    @Option(name = "-c", aliases = "--cidr", description = "Subnet IpPrefix cidr", required = false,
-            multiValued = false)
-    String cidr = "0.0.0.0/0";
-
-    @Option(name = "-g", aliases = "--gatewayIp", description = "Subnet IpAddress gatewayIp",
-            required = false, multiValued = false)
-    String gatewayIp = "0.0.0.0";
-
-    @Option(name = "-d", aliases = "--dhcpEnabled", description = "Subnet boolean dhcpEnabled",
-            required = false, multiValued = false)
-    boolean dhcpEnabled = false;
-
-    @Option(name = "-s", aliases = "--shared", description = "Subnet boolean shared", required = false,
-            multiValued = false)
-    boolean shared = false;
-
-    @Option(name = "-m", aliases = "--ipV6AddressMode", description = "Subnet Mode ipV6AddressMode",
-            required = false, multiValued = false)
-    String ipV6AddressMode = null;
-
-    @Option(name = "-r", aliases = "--ipV6RaMode", description = "Subnet Mode ipV6RaMode",
-            required = false, multiValued = false)
-    String ipV6RaMode = null;
-
-    @Option(name = "-h", aliases = "--hostRoutes", description = "Subnet jsonnode hostRoutes",
-            required = false, multiValued = false)
-    Set<HostRoute> hostRoutes = Sets.newHashSet();
-
-    @Option(name = "-a", aliases = "--allocationPools",
-            description = "Subnet jsonnode allocationPools", required = false, multiValued = false)
-    Set<AllocationPool> allocationPools = Sets.newHashSet();
-
-    @Override
-    protected void doExecute() {
-        SubnetService service = get(SubnetService.class);
-        if (id == null || networkId == null || tenantId == null) {
-            print("id,networkId,tenantId can not be null");
-            return;
-        }
-        Subnet subnet = new DefaultSubnet(SubnetId.subnetId(id), subnetName,
-                                          TenantNetworkId.networkId(networkId),
-                                          TenantId.tenantId(tenantId), ipVersion,
-                                          cidr == null ? null : IpPrefix.valueOf(cidr),
-                                          gatewayIp == null ? null : IpAddress.valueOf(gatewayIp),
-                                          dhcpEnabled, shared, hostRoutes,
-                                          ipV6AddressMode == null ? null : Mode.valueOf(ipV6AddressMode),
-                                          ipV6RaMode == null ? null : Mode.valueOf(ipV6RaMode),
-                                          allocationPools);
-        Set<Subnet> subnetsSet = Sets.newHashSet();
-        subnetsSet.add(subnet);
-        service.updateSubnets(subnetsSet);
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/package-info.java
deleted file mode 100644
index cabb4a4..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Command line interface for subnets.
- */
-package org.onosproject.vtnrsc.cli.subnet;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortCreateCommand.java
deleted file mode 100644
index 4bf53ff..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortCreateCommand.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.virtualport;
-
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onlab.packet.MacAddress;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.net.DeviceId;
-import org.onosproject.vtnrsc.AllowedAddressPair;
-import org.onosproject.vtnrsc.BindingHostId;
-import org.onosproject.vtnrsc.DefaultVirtualPort;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.SecurityGroup;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
-/**
- * Supports for creating a virtualPort.
- */
-@Service
-@Command(scope = "onos", name = "virtualport-create",
-        description = "Supports for creating a virtualPort.")
-public class VirtualPortCreateCommand extends AbstractShellCommand {
-
-    @Argument(index = 0, name = "id", description = "virtualPort id.", required = true,
-            multiValued = false)
-    String id = null;
-
-    @Argument(index = 1, name = "networkId", description = "network id.", required = true,
-            multiValued = false)
-    String networkId = null;
-
-    @Argument(index = 2, name = "name", description = "virtualPort name.", required = true,
-            multiValued = false)
-    String name = null;
-
-    @Argument(index = 3, name = "tenantId", description = "tenant id.", required = true,
-            multiValued = false)
-    String tenantId = null;
-
-    @Argument(index = 4, name = "deviceId", description = "device id.", required = true,
-            multiValued = false)
-    String deviceId = null;
-
-    @Option(name = "-a", aliases = "--adminStateUp",
-            description = "administrative status of the virtualPort which is true or false.",
-            required = false, multiValued = false)
-    Boolean adminStateUp = false;
-
-    @Option(name = "-s", aliases = "--state", description = "virtualPort state.", required = false,
-            multiValued = false)
-    String state = null;
-
-    @Option(name = "-m", aliases = "--macAddress", description = "MAC address.", required = false,
-            multiValued = false)
-    String macAddress = "";
-
-    @Option(name = "-d", aliases = "--deviceOwner", description = "ID of the entity that uses this "
-            + "virtualPort.", required = false, multiValued = false)
-    String deviceOwner = null;
-
-    @Option(name = "-f", aliases = "--fixedIp",
-            description = "The IP address for the port,include the IP address "
-                    + "and subnet identity.", required = false, multiValued = false)
-    FixedIp fixedIp = null;
-
-    @Option(name = "-i", aliases = "--bindingHostId", description = "virtualPort bindingHostId.",
-            required = false, multiValued = false)
-    String bindingHostId = null;
-
-    @Option(name = "-t", aliases = "--bindingvnicType", description = "virtualPort bindingvnicType.",
-            required = false, multiValued = false)
-    String bindingvnicType = null;
-
-    @Option(name = "-v", aliases = "--bindingvifType", description = "virtualPort bindingvifType.",
-            required = false, multiValued = false)
-    String bindingvifType = null;
-
-    @Option(name = "-b", aliases = "--bindingvnicDetails",
-            description = "virtualPort bindingvnicDetails.", required = false, multiValued = false)
-    String bindingvnicDetails = null;
-
-    @Option(name = "-l", aliases = "--allowedAddress", description = "virtual allowedAddressPair.",
-            required = false, multiValued = false)
-    Set<AllowedAddressPair> allowedAddressPairs = Sets.newHashSet();
-
-    @Option(name = "-e", aliases = "--securityGroups", description = "virtualPort securityGroups.",
-            required = false, multiValued = false)
-    Set<SecurityGroup> securityGroups = Sets.newHashSet();
-
-    @Override
-    protected void doExecute() {
-        Map<String, String> strMap = Maps.newHashMap();
-        strMap.putIfAbsent("name", name);
-        strMap.putIfAbsent("deviceOwner", deviceOwner);
-        strMap.putIfAbsent("bindingvnicType", bindingvnicType);
-        strMap.putIfAbsent("bindingvifType", bindingvifType);
-        strMap.putIfAbsent("bindingvnicDetails", bindingvnicDetails);
-        VirtualPortService service = get(VirtualPortService.class);
-        VirtualPort virtualPort = new DefaultVirtualPort(VirtualPortId.portId(id),
-                                       TenantNetworkId.networkId(networkId),
-                                       false, strMap, VirtualPort.State.ACTIVE,
-                                       MacAddress.valueOf(macAddress),
-                                       TenantId.tenantId(tenantId),
-                                       DeviceId.deviceId(deviceId), Sets.newHashSet(fixedIp),
-                                       BindingHostId.bindingHostId(bindingHostId),
-                                       allowedAddressPairs, securityGroups);
-        Set<VirtualPort> virtualPorts = Sets.newHashSet(virtualPort);
-        service.createPorts(virtualPorts);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortExGwUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortExGwUpdateCommand.java
deleted file mode 100644
index 113fd44..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortExGwUpdateCommand.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.virtualport;
-
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.net.DeviceId;
-import org.onosproject.vtnrsc.BindingHostId;
-import org.onosproject.vtnrsc.DefaultVirtualPort;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.Subnet;
-import org.onosproject.vtnrsc.TenantNetwork;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.subnet.SubnetService;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
-/**
- * Supports for updating the external gateway virtualPort.
- */
-@Service
-@Command(scope = "onos", name = "externalgateway-update",
-        description = "Supports for updating the external gateway virtualPort.")
-public class VirtualPortExGwUpdateCommand extends AbstractShellCommand {
-
-    @Option(name = "-m", aliases = "--macAddress", description = "MAC address.", required = true,
-            multiValued = false)
-    String macAddress = "";
-
-    @Override
-    protected void doExecute() {
-        VirtualPortService service = get(VirtualPortService.class);
-        SubnetService subnetService = get(SubnetService.class);
-        TenantNetworkService tenantNetworkService = get(TenantNetworkService.class);
-        Iterable<TenantNetwork> networks = tenantNetworkService.getNetworks();
-        if (networks != null) {
-            for (TenantNetwork network : networks) {
-                if (network.routerExternal()) {
-                    Iterable<Subnet> subnets = subnetService.getSubnets();
-                    if (subnets != null) {
-                        for (Subnet subnet : subnets) {
-                            if (network.id().networkId().equals(subnet.networkId().networkId())) {
-                                IpAddress exgwip = subnet.gatewayIp();
-                                FixedIp fixedGwIp = FixedIp.fixedIp(subnet.id(), exgwip);
-                                VirtualPort exgwPort = service.getPort(fixedGwIp);
-                                if (exgwPort == null) {
-                                    createExGwPort(network, subnet, fixedGwIp);
-                                } else {
-                                    updateExGwPort(exgwPort);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    private void createExGwPort(TenantNetwork network, Subnet subnet, FixedIp fixedGwIp) {
-        VirtualPortService service = get(VirtualPortService.class);
-        Map<String, String> strMap = Maps.newHashMap();
-        VirtualPort virtualPort = new DefaultVirtualPort(VirtualPortId.portId("externalgateway-update-id"),
-                                                         network.id(),
-                                                         false, strMap,
-                                                         VirtualPort.State.DOWN,
-                                                         MacAddress.valueOf(macAddress),
-                                                         subnet.tenantId(),
-                                                         DeviceId.deviceId(""),
-                                                         Sets.newHashSet(fixedGwIp),
-                                                         BindingHostId.bindingHostId(""),
-                                                         Sets.newHashSet(),
-                                                         Sets.newHashSet());
-        Set<VirtualPort> virtualPorts = Sets.newHashSet(virtualPort);
-        service.createPorts(virtualPorts);
-    }
-
-    private void updateExGwPort(VirtualPort exgwPort) {
-        VirtualPortService service = get(VirtualPortService.class);
-        Map<String, String> strMap = Maps.newHashMap();
-        strMap.putIfAbsent("name", exgwPort.name());
-        strMap.putIfAbsent("deviceOwner", exgwPort.deviceOwner());
-        strMap.putIfAbsent("bindingvnicType", exgwPort.bindingVnicType());
-        strMap.putIfAbsent("bindingvifType", exgwPort.bindingVifType());
-        strMap.putIfAbsent("bindingvnicDetails", exgwPort.bindingVifDetails());
-        VirtualPort virtualPort = new DefaultVirtualPort(exgwPort.portId(),
-                                                         exgwPort.networkId(),
-                                                         false, strMap,
-                                                         VirtualPort.State.DOWN,
-                                                         MacAddress.valueOf(macAddress),
-                                                         exgwPort.tenantId(),
-                                                         exgwPort.deviceId(),
-                                                         exgwPort.fixedIps(),
-                                                         exgwPort.bindingHostId(),
-                                                         Sets.newHashSet(exgwPort
-                                                                .allowedAddressPairs()),
-                                                         Sets.newHashSet(exgwPort
-                                                                .securityGroups()));
-        Set<VirtualPort> virtualPorts = Sets.newHashSet(virtualPort);
-        service.updatePorts(virtualPorts);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortQueryCommand.java
deleted file mode 100644
index b667dab..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortQueryCommand.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.virtualport;
-
-import java.util.Collection;
-
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.net.DeviceId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-
-/**
- * Supports for querying virtualPorts.
- */
-@Service
-@Command(scope = "onos", name = "virtualports", description = "Supports for querying virtualPorts.")
-public class VirtualPortQueryCommand extends AbstractShellCommand {
-
-    @Option(name = "-v", aliases = "--vPortId", description = "virtualPort ID.", required = false,
-            multiValued = false)
-    String vPortId;
-
-    @Option(name = "-n", aliases = "--networkId", description = "network ID.", required = false,
-            multiValued = false)
-    String networkId;
-
-    @Option(name = "-d", aliases = "--deviceId", description = "device ID.", required = false,
-            multiValued = false)
-    String deviceId;
-
-    @Option(name = "-t", aliases = "--tenantId", description = "tenant ID.", required = false,
-            multiValued = false)
-    String tenantId;
-
-    private static final String FMT = "virtualPortId=%s, networkId=%s, name=%s,"
-            + " tenantId=%s, deviceId=%s, adminStateUp=%s, state=%s,"
-            + " macAddress=%s, deviceOwner=%s, fixedIp=%s, bindingHostId=%s,"
-            + " bindingvnicType=%s, bindingvifType=%s, bindingvnicDetails=%s,"
-            + " allowedAddress=%s, securityGroups=%s";
-
-    @Override
-    protected void doExecute() {
-        VirtualPortService service = get(VirtualPortService.class);
-        if (vPortId != null && networkId == null && deviceId == null && tenantId == null) {
-            VirtualPort port = service.getPort(VirtualPortId.portId(vPortId));
-            printPort(port);
-        } else if (vPortId == null && networkId != null && deviceId == null && tenantId == null) {
-            Collection<VirtualPort> ports = service.getPorts(TenantNetworkId.networkId(networkId));
-            printPorts(ports);
-        } else if (vPortId == null && networkId == null && deviceId != null && tenantId == null) {
-            Collection<VirtualPort> ports = service.getPorts(DeviceId.deviceId(deviceId));
-            printPorts(ports);
-        } else if (vPortId == null && networkId == null && deviceId == null && tenantId != null) {
-            Collection<VirtualPort> ports = service.getPorts(DeviceId.deviceId(tenantId));
-            printPorts(ports);
-        } else if (vPortId == null && networkId == null && deviceId == null) {
-            Collection<VirtualPort> ports = service.getPorts();
-            printPorts(ports);
-        } else {
-            print("cannot input more than one parameter");
-        }
-
-    }
-
-    private void printPorts(Collection<VirtualPort> ports) {
-        for (VirtualPort port : ports) {
-            printPort(port);
-        }
-    }
-
-    private void printPort(VirtualPort port) {
-        print(FMT, port.portId(), port.networkId(), port.name(), port.tenantId(), port.deviceId(),
-              port.adminStateUp(), port.state(), port.macAddress(), port.deviceOwner(), port
-                      .fixedIps(), port.bindingHostId(), port.bindingVnicType(),
-              port.bindingVifType(), port.bindingVifDetails(), port.allowedAddressPairs(),
-              port.securityGroups());
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortRemoveCommand.java
deleted file mode 100644
index 4984099..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortRemoveCommand.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.virtualport;
-
-import java.util.Set;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-
-import com.google.common.collect.Sets;
-
-/**
- * Supports for removing a virtualPort.
- */
-@Service
-@Command(scope = "onos", name = "virtualport-remove",
-        description = "Supports for removing a virtualPort.")
-public class VirtualPortRemoveCommand extends AbstractShellCommand {
-
-    @Argument(index = 0, name = "id", description = "virtualPort id.", required = true,
-            multiValued = false)
-    String id = null;
-
-    @Override
-    protected void doExecute() {
-        VirtualPortService service = get(VirtualPortService.class);
-        Set<VirtualPortId> virtualPorts = Sets.newHashSet(VirtualPortId.portId(id));
-        service.removePorts(virtualPorts);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortUpdateCommand.java
deleted file mode 100644
index 6cd7791..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortUpdateCommand.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.cli.virtualport;
-
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.Option;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onlab.packet.MacAddress;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.net.DeviceId;
-import org.onosproject.vtnrsc.AllowedAddressPair;
-import org.onosproject.vtnrsc.BindingHostId;
-import org.onosproject.vtnrsc.DefaultVirtualPort;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.SecurityGroup;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
-/**
- * Supports for updating a virtualPort.
- */
-@Service
-@Command(scope = "onos", name = "virtualport-update",
-        description = "Supports for updating a virtualPort.")
-public class VirtualPortUpdateCommand extends AbstractShellCommand {
-
-    @Argument(index = 0, name = "id", description = "virtualPort id.", required = true,
-            multiValued = false)
-    String id = null;
-
-    @Argument(index = 1, name = "networkId", description = "network id.", required = true,
-            multiValued = false)
-    String networkId = null;
-
-    @Argument(index = 2, name = "name", description = "virtualPort name.", required = true,
-            multiValued = false)
-    String name = null;
-
-    @Argument(index = 3, name = "tenantId", description = "tenant id.", required = true,
-            multiValued = false)
-    String tenantId = null;
-
-    @Argument(index = 4, name = "deviceId", description = "device id.", required = true,
-            multiValued = false)
-    String deviceId = null;
-
-    @Option(name = "-a", aliases = "--adminStateUp",
-            description = "administrative status of the virtualPort which is true or false.",
-            required = false, multiValued = false)
-    Boolean adminStateUp = false;
-
-    @Option(name = "-s", aliases = "--state", description = "virtualPort state.", required = false,
-            multiValued = false)
-    String state = null;
-
-    @Option(name = "-m", aliases = "--macAddress", description = "MAC address.", required = false,
-            multiValued = false)
-    String macAddress = "";
-
-    @Option(name = "-d", aliases = "--deviceOwner",
-            description = "ID of the entity that uses this " + "virtualPort.", required = false,
-            multiValued = false)
-    String deviceOwner = null;
-
-    @Option(name = "-f", aliases = "--fixedIp",
-            description = "The IP address for the port,include the IP address "
-                    + "and subnet identity.", required = false, multiValued = false)
-    FixedIp fixedIp = null;
-
-    @Option(name = "-i", aliases = "--bindingHostId", description = "virtualPort bindingHostId.",
-            required = false, multiValued = false)
-    String bindingHostId = "";
-
-    @Option(name = "-t", aliases = "--bindingvnicType",
-            description = "virtualPort bindingvnicType.", required = false, multiValued = false)
-    String bindingvnicType = null;
-
-    @Option(name = "-v", aliases = "--bindingvifType", description = "virtualPort bindingvifType.",
-            required = false, multiValued = false)
-    String bindingvifType = null;
-
-    @Option(name = "-b", aliases = "--bindingvnicDetails",
-            description = "virtualPort bindingvnicDetails.", required = false, multiValued = false)
-    String bindingvnicDetails = null;
-
-    @Option(name = "-l", aliases = "--allowedAddress", description = "virtual allowedAddressPair.",
-            required = false, multiValued = false)
-    Set<AllowedAddressPair> allowedAddressPairs = Sets.newHashSet();
-
-    @Option(name = "-e", aliases = "--securityGroups", description = "virtualPort securityGroups.",
-            required = false, multiValued = false)
-    Set<SecurityGroup> securityGroups = Sets.newHashSet();
-
-    @Override
-    protected void doExecute() {
-        VirtualPortService service = get(VirtualPortService.class);
-        Map<String, String> strMap = Maps.newHashMap();
-        strMap.putIfAbsent("name", name);
-        strMap.putIfAbsent("deviceOwner", deviceOwner);
-        strMap.putIfAbsent("bindingvnicType", bindingvnicType);
-        strMap.putIfAbsent("bindingvifType", bindingvifType);
-        strMap.putIfAbsent("bindingvnicDetails", bindingvnicDetails);
-        VirtualPort virtualPort = new DefaultVirtualPort(VirtualPortId.portId(id),
-                                                         TenantNetworkId.networkId(networkId),
-                                                         false, strMap, VirtualPort.State.ACTIVE,
-                                                         MacAddress.valueOf(macAddress),
-                                                         TenantId.tenantId(tenantId),
-                                                         DeviceId.deviceId(deviceId), Sets.newHashSet(fixedIp),
-                                                         BindingHostId.bindingHostId(bindingHostId),
-                                                         allowedAddressPairs, securityGroups);
-        Set<VirtualPort> virtualPorts = Sets.newHashSet(virtualPort);
-        service.updatePorts(virtualPorts);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/package-info.java
deleted file mode 100644
index aef5c22..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Command line interface for virtual ports.
- */
-package org.onosproject.vtnrsc.cli.virtualport;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscEvent.java
deleted file mode 100644
index 0c8dc64..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscEvent.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.event;
-
-import org.onosproject.event.AbstractEvent;
-
-
-/**
- * Describes network vtnrsc event.
- */
-public class VtnRscEvent
-        extends AbstractEvent<VtnRscEvent.Type, VtnRscEventFeedback> {
-
-    /**
-     * Type of vtnrsc events.
-     */
-    public enum Type {
-        /**
-         * Signifies that floating IP has create.
-         */
-        FLOATINGIP_PUT,
-        /**
-         * Signifies that floating IP has delete.
-         */
-        FLOATINGIP_DELETE,
-        /**
-         * Signifies that Floating IP has been bound.
-         */
-        FLOATINGIP_BIND,
-        /**
-         * Signifies that Floating IP has been unbound.
-         */
-        FLOATINGIP_UNBIND,
-        /**
-         * Signifies that router has create.
-         */
-        ROUTER_PUT,
-        /**
-         * Signifies that router has delete.
-         */
-        ROUTER_DELETE,
-        /**
-         * Signifies that router interface has add.
-         */
-        ROUTER_INTERFACE_PUT,
-        /**
-         * Signifies that router interface has remove.
-         */
-        ROUTER_INTERFACE_DELETE,
-        /**
-         * Signifies that port-pair has add.
-         */
-        PORT_PAIR_PUT,
-        /**
-         * Signifies that port-pair has remove.
-         */
-        PORT_PAIR_DELETE,
-        /**
-         * Signifies that port-pair has update.
-         */
-        PORT_PAIR_UPDATE,
-        /**
-         * Signifies that port-pair-group has add.
-         */
-        PORT_PAIR_GROUP_PUT,
-        /**
-         * Signifies that port-pair-group has remove.
-         */
-        PORT_PAIR_GROUP_DELETE,
-        /**
-         * Signifies that port-pair-group has update.
-         */
-        PORT_PAIR_GROUP_UPDATE,
-        /**
-         * Signifies that flow-classifier has add.
-         */
-        FLOW_CLASSIFIER_PUT,
-        /**
-         * Signifies that flow-classifier has remove.
-         */
-        FLOW_CLASSIFIER_DELETE,
-        /**
-         * Signifies that flow-classifier has update.
-         */
-        FLOW_CLASSIFIER_UPDATE,
-        /**
-         * Signifies that port-chain has add.
-         */
-        PORT_CHAIN_PUT,
-        /**
-         * Signifies that port-chain has remove.
-         */
-        PORT_CHAIN_DELETE,
-        /**
-         * Signifies that port-chain has update.
-         */
-        PORT_CHAIN_UPDATE,
-        /**
-         * Signifies that virtual-port has created.
-         */
-        VIRTUAL_PORT_PUT,
-        /**
-         * Signifies that virtual-port has removed.
-         */
-        VIRTUAL_PORT_DELETE
-    }
-
-    /**
-     * Creates an event of a given type and for the specified vtn event feedback.
-     *
-     * @param type Vtnrsc event type
-     * @param vtnFeedback event VtnrscEventFeedback subject
-     */
-    public VtnRscEvent(Type type, VtnRscEventFeedback vtnFeedback) {
-        super(type, vtnFeedback);
-    }
-
-    /**
-     * Creates an event of a given type and for the specified vtn event feedback.
-     *
-     * @param type Vtnrsc event type
-     * @param vtnFeedback event VtnrscEventFeedback subject
-     * @param time occurrence time
-     */
-    public VtnRscEvent(Type type, VtnRscEventFeedback vtnFeedback, long time) {
-        super(type, vtnFeedback, time);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscEventFeedback.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscEventFeedback.java
deleted file mode 100644
index 1e3f849..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscEventFeedback.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.event;
-
-import java.util.Objects;
-
-import org.onosproject.vtnrsc.FloatingIp;
-import org.onosproject.vtnrsc.Router;
-import org.onosproject.vtnrsc.RouterInterface;
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.VirtualPort;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Representation of a VtnRsc event feedback.
- */
-public class VtnRscEventFeedback {
-    private final FloatingIp floaingtIp;
-    private final Router router;
-    private final RouterInterface routerInterface;
-    private final PortPair portPair;
-    private final PortPairGroup portPairGroup;
-    private final FlowClassifier flowClassifier;
-    private final PortChain portChain;
-    private final VirtualPort virtualPort;
-
-    /**
-     * Creates VtnRscEventFeedback object.
-     *
-     * @param floatingIp the floating Ip
-     */
-    public VtnRscEventFeedback(FloatingIp floatingIp) {
-        this.floaingtIp = checkNotNull(floatingIp, "floaintIp cannot be null");
-        this.router = null;
-        this.routerInterface = null;
-        this.portPair = null;
-        this.portPairGroup = null;
-        this.flowClassifier = null;
-        this.portChain = null;
-        this.virtualPort = null;
-    }
-
-    /**
-     * Creates VtnRscEventFeedback object.
-     *
-     * @param router the router
-     */
-    public VtnRscEventFeedback(Router router) {
-        this.floaingtIp = null;
-        this.router = checkNotNull(router, "router cannot be null");
-        this.routerInterface = null;
-        this.portPair = null;
-        this.portPairGroup = null;
-        this.flowClassifier = null;
-        this.portChain = null;
-        this.virtualPort = null;
-    }
-
-    /**
-     * Creates VtnRscEventFeedback object.
-     *
-     * @param routerInterface the router interface
-     */
-    public VtnRscEventFeedback(RouterInterface routerInterface) {
-        this.floaingtIp = null;
-        this.router = null;
-        this.routerInterface = checkNotNull(routerInterface,
-                                            "routerInterface cannot be null");
-        this.portPair = null;
-        this.portPairGroup = null;
-        this.flowClassifier = null;
-        this.portChain = null;
-        this.virtualPort = null;
-    }
-
-    /**
-     * Creates VtnRscEventFeedback object.
-     *
-     * @param portPair the Port-Pair
-     */
-    public VtnRscEventFeedback(PortPair portPair) {
-        this.floaingtIp = null;
-        this.router = null;
-        this.routerInterface = null;
-        this.portPair = checkNotNull(portPair,
-                                     "Port-Pair cannot be null");
-        this.portPairGroup = null;
-        this.flowClassifier = null;
-        this.portChain = null;
-        this.virtualPort = null;
-    }
-
-    /**
-     * Creates VtnRscEventFeedback object.
-     *
-     * @param portPairGroup the Port-Pair-Group
-     */
-    public VtnRscEventFeedback(PortPairGroup portPairGroup) {
-        this.floaingtIp = null;
-        this.router = null;
-        this.routerInterface = null;
-        this.portPair = null;
-        this.portPairGroup = checkNotNull(portPairGroup,
-                "Port-Pair-Group cannot be null");
-        this.flowClassifier = null;
-        this.portChain = null;
-        this.virtualPort = null;
-    }
-
-    /**
-     * Creates VtnRscEventFeedback object.
-     *
-     * @param flowClassifier the Flow-Classifier
-     */
-    public VtnRscEventFeedback(FlowClassifier flowClassifier) {
-        this.floaingtIp = null;
-        this.router = null;
-        this.routerInterface = null;
-        this.portPair = null;
-        this.portPairGroup = null;
-        this.flowClassifier = checkNotNull(flowClassifier,
-                "Flow-Classifier cannot be null");
-        this.portChain = null;
-        this.virtualPort = null;
-    }
-
-    /**
-     * Creates VtnRscEventFeedback object.
-     *
-     * @param portChain the Port-Chain
-     */
-    public VtnRscEventFeedback(PortChain portChain) {
-        this.floaingtIp = null;
-        this.router = null;
-        this.routerInterface = null;
-        this.portPair = null;
-        this.portPairGroup = null;
-        this.flowClassifier = null;
-        this.portChain = checkNotNull(portChain,
-                "Port-Chain cannot be null");
-        this.virtualPort = null;
-    }
-
-    /**
-     * Creates VtnRscEventFeedback object.
-     *
-     * @param virtualPort the Virtual-Port
-     */
-    public VtnRscEventFeedback(VirtualPort virtualPort) {
-        this.floaingtIp = null;
-        this.router = null;
-        this.routerInterface = null;
-        this.portPair = null;
-        this.portPairGroup = null;
-        this.flowClassifier = null;
-        this.portChain = null;
-        this.virtualPort = checkNotNull(virtualPort,
-                "Virtual-port cannot be null");
-    }
-
-    /**
-     * Returns floating IP.
-     *
-     * @return floaingtIp the floating IP
-     */
-    public FloatingIp floatingIp() {
-        return floaingtIp;
-    }
-
-    /**
-     * Returns router.
-     *
-     * @return router the router
-     */
-    public Router router() {
-        return router;
-    }
-
-    /**
-     * Returns router interface.
-     *
-     * @return routerInterface the router interface
-     */
-    public RouterInterface routerInterface() {
-        return routerInterface;
-    }
-
-    /**
-     * Returns Port-Pair.
-     *
-     * @return portPair the Port-Pair
-     */
-    public PortPair portPair() {
-        return portPair;
-    }
-
-    /**
-     * Returns Port-Pair-Group.
-     *
-     * @return portPairGroup the Port-Pair-Group
-     */
-    public PortPairGroup portPairGroup() {
-        return portPairGroup;
-    }
-
-    /**
-     * Returns Flow-Classifier.
-     *
-     * @return flowClassifier the Flow-Classifier
-     */
-    public FlowClassifier flowClassifier() {
-        return flowClassifier;
-    }
-
-    /**
-     * Returns Port-Chain.
-     *
-     * @return portChain the Port-Chain
-     */
-    public PortChain portChain() {
-        return portChain;
-    }
-
-    /**
-     * Returns Virtual-Port.
-     *
-     * @return virtualPort the Virtual-Port
-     */
-    public VirtualPort virtualPort() {
-        return virtualPort;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(floaingtIp, router, routerInterface, portPair,
-                            portPairGroup, flowClassifier, portChain, virtualPort);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof VtnRscEventFeedback) {
-            final VtnRscEventFeedback that = (VtnRscEventFeedback) obj;
-            return Objects.equals(this.floaingtIp, that.floaingtIp)
-                    && Objects.equals(this.router, that.router)
-                    && Objects.equals(this.routerInterface, that.routerInterface)
-                    && Objects.equals(this.portPair, that.portPair)
-                    && Objects.equals(this.portPairGroup, that.portPairGroup)
-                    && Objects.equals(this.flowClassifier, that.flowClassifier)
-                    && Objects.equals(this.portChain, that.portChain)
-                    && Objects.equals(this.virtualPort, that.virtualPort);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("router", router)
-                .add("floaingtIp", floaingtIp)
-                .add("routerInterface", routerInterface)
-                .add("portPair", portPair)
-                .add("portPairGroup", portPairGroup)
-                .add("flowClassifier", flowClassifier)
-                .add("portChain", portChain)
-                .add("virtualPort", virtualPort)
-                .toString();
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscListener.java
deleted file mode 100644
index 0ae4e31..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscListener.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.event;
-
-import org.onosproject.event.EventListener;
-
-/**
- * Entity capable of VtnRsc related events.
- */
-public interface VtnRscListener extends EventListener<VtnRscEvent> {
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/package-info.java
deleted file mode 100644
index 9e7adb0..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Event of VtnRsc for VtnRsc service.
- */
-package org.onosproject.vtnrsc.event;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpEvent.java
deleted file mode 100644
index 2bbd329..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpEvent.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.floatingip;
-
-import org.onosproject.event.AbstractEvent;
-import org.onosproject.vtnrsc.FloatingIp;
-
-/**
- * Describes network Floating IP event.
- */
-public class FloatingIpEvent
-        extends AbstractEvent<FloatingIpEvent.Type, FloatingIp> {
-    /**
-     * Type of Floating IP events.
-     */
-    public enum Type {
-        /**
-         * Signifies that Floating IP has been created.
-         */
-        FLOATINGIP_PUT,
-        /**
-         * Signifies that Floating IP has been deleted.
-         */
-        FLOATINGIP_DELETE,
-        /**
-         * Signifies that Floating IP has been bound.
-         */
-        FLOATINGIP_BIND,
-        /**
-         * Signifies that Floating IP has been unbound.
-         */
-        FLOATINGIP_UNBIND
-    }
-
-    /**
-     * Creates an event of a given type and for the specified Floating IP.
-     *
-     * @param type Floating IP event type
-     * @param floagingIp Floating IP subject
-     */
-    public FloatingIpEvent(Type type, FloatingIp floagingIp) {
-        super(type, floagingIp);
-    }
-
-    /**
-     * Creates an event of a given type and for the specified Floating IP.
-     *
-     * @param type Floating IP event type
-     * @param floagingIp Floating IP subject
-     * @param time occurrence time
-     */
-    public FloatingIpEvent(Type type, FloatingIp floagingIp, long time) {
-        super(type, floagingIp, time);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpListener.java
deleted file mode 100644
index b650f4c..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.floatingip;
-
-import org.onosproject.event.EventListener;
-
-/**
- * Entity capable of Floating IP related events.
- */
-public interface FloatingIpListener extends EventListener<FloatingIpEvent> {
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpService.java
deleted file mode 100644
index 307c6c4..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpService.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.floatingip;
-
-import java.util.Collection;
-
-import org.onlab.packet.IpAddress;
-import org.onosproject.vtnrsc.FloatingIp;
-import org.onosproject.vtnrsc.FloatingIpId;
-import org.onosproject.vtnrsc.TenantId;
-
-/**
- * Service for interacting with the inventory of floating IP.
- */
-public interface FloatingIpService {
-    /**
-     * Returns exists or not of specific floatingIp identifier.
-     *
-     * @param floatingIpId floatingIp identifier
-     * @return true or false
-     */
-    boolean exists(FloatingIpId floatingIpId);
-
-    /**
-     * Returns is used or not of specific floating IP address.
-     *
-     * @param floatingIpAddr floatingIp address
-     * @param floatingIpId floatingIp identifier
-     * @return true or false
-     */
-    boolean floatingIpIsUsed(IpAddress floatingIpAddr, FloatingIpId floatingIpId);
-
-    /**
-     * Returns is used or not of specific fixed IP address.
-     *
-     * @param fixedIpAddr fixedIp address
-     * @param tenantId the tenant identifier of floating IP
-     * @param floatingIpId floatingIp identifier
-     * @return true or false
-     */
-    boolean fixedIpIsUsed(IpAddress fixedIpAddr, TenantId tenantId, FloatingIpId floatingIpId);
-
-    /**
-     * Returns a collection of the currently known floating IP.
-     *
-     * @return collection of floating IP
-     */
-    Collection<FloatingIp> getFloatingIps();
-
-    /**
-     * Returns the floatingIp with the specified identifier.
-     *
-     * @param floatingIpId floatingIp identifier
-     * @return floatingIp or null if one with the given identifier is not known
-     */
-    FloatingIp getFloatingIp(FloatingIpId floatingIpId);
-
-    /**
-     * Creates new floatingIps.
-     *
-     * @param floatingIps the collection of floatingIp
-     * @return true if the identifier floatingIp has been created right
-     */
-    boolean createFloatingIps(Collection<FloatingIp> floatingIps);
-
-    /**
-     * Updates existing floatingIps.
-     *
-     * @param floatingIps the collection of floatingIp
-     * @return true if all floatingIp were updated successfully
-     */
-    boolean updateFloatingIps(Collection<FloatingIp> floatingIps);
-
-    /**
-     * Removes the specified floatingIp from the store.
-     *
-     * @param floatingIpIds the collection of floatingIp identifier
-     * @return true if remove identifier floatingIp successfully
-     */
-    boolean removeFloatingIps(Collection<FloatingIpId> floatingIpIds);
-
-    /**
-     * Adds the specified listener to floating Ip manager.
-     *
-     * @param listener floating Ip listener
-     */
-    void addListener(FloatingIpListener listener);
-
-    /**
-     * Removes the specified listener to floating Ip manager.
-     *
-     * @param listener floating Ip listener
-     */
-    void removeListener(FloatingIpListener listener);
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/impl/FloatingIpManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/impl/FloatingIpManager.java
deleted file mode 100644
index 196d889..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/impl/FloatingIpManager.java
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.floatingip.impl;
-
-import com.google.common.collect.Sets;
-import org.onlab.packet.IpAddress;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.EventuallyConsistentMapEvent;
-import org.onosproject.store.service.EventuallyConsistentMapListener;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.WallClockTimestamp;
-import org.onosproject.vtnrsc.DefaultFloatingIp;
-import org.onosproject.vtnrsc.FloatingIp;
-import org.onosproject.vtnrsc.FloatingIpId;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.floatingip.FloatingIpEvent;
-import org.onosproject.vtnrsc.floatingip.FloatingIpListener;
-import org.onosproject.vtnrsc.floatingip.FloatingIpService;
-import org.onosproject.vtnrsc.router.RouterService;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Set;
-import java.util.UUID;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provides implementation of the FloatingIp service.
- */
-@Component(immediate = true, service = FloatingIpService.class)
-public class FloatingIpManager implements FloatingIpService {
-    private static final String FLOATINGIP_ID_NOT_NULL = "Floatingip ID cannot be null";
-    private static final String FLOATINGIP_NOT_NULL = "Floatingip cannot be null";
-    private static final String FLOATINGIPSTORE = "vtn-floatingip-store";
-    private static final String FLOATINGIPBINDSTORE = "vtn-floatingip-bind-store";
-    private static final String VTNRSC_APP = "org.onosproject.vtnrsc";
-    private static final String LISTENER_NOT_NULL = "Listener cannot be null";
-    private static final String EVENT_NOT_NULL = "event cannot be null";
-
-    private final Logger log = getLogger(getClass());
-    private final Set<FloatingIpListener> listeners = Sets
-            .newCopyOnWriteArraySet();
-    private EventuallyConsistentMapListener<FloatingIpId, FloatingIp> floatingIpListener =
-            new InnerFloatingIpStoreListener();
-    protected EventuallyConsistentMap<FloatingIpId, FloatingIp> floatingIpStore;
-    protected EventuallyConsistentMap<FloatingIpId, FloatingIp> floatingIpBindStore;
-    protected ApplicationId appId;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TenantNetworkService tenantNetworkService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected VirtualPortService virtualPortService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected RouterService routerService;
-
-    @Activate
-    public void activate() {
-        appId = coreService.registerApplication(VTNRSC_APP);
-        KryoNamespace.Builder serializer = KryoNamespace
-                .newBuilder()
-                .register(KryoNamespaces.API)
-                .register(FloatingIp.class, FloatingIpId.class,
-                          TenantNetworkId.class, TenantId.class,
-                          FloatingIp.Status.class, RouterId.class,
-                          VirtualPortId.class, DefaultFloatingIp.class,
-                          UUID.class);
-        floatingIpStore = storageService
-                .<FloatingIpId, FloatingIp>eventuallyConsistentMapBuilder()
-                .withName(FLOATINGIPSTORE).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> new WallClockTimestamp())
-                .build();
-        floatingIpBindStore = storageService
-                .<FloatingIpId, FloatingIp>eventuallyConsistentMapBuilder()
-                .withName(FLOATINGIPBINDSTORE).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> new WallClockTimestamp())
-                .build();
-        floatingIpStore.addListener(floatingIpListener);
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        floatingIpStore.removeListener(floatingIpListener);
-        floatingIpStore.destroy();
-        floatingIpBindStore.destroy();
-        listeners.clear();
-        log.info("Stopped");
-    }
-
-    @Override
-    public Collection<FloatingIp> getFloatingIps() {
-        return Collections.unmodifiableCollection(floatingIpStore.values());
-    }
-
-    @Override
-    public FloatingIp getFloatingIp(FloatingIpId floatingIpId) {
-        checkNotNull(floatingIpId, FLOATINGIP_ID_NOT_NULL);
-        return floatingIpStore.get(floatingIpId);
-    }
-
-    @Override
-    public boolean exists(FloatingIpId floatingIpId) {
-        checkNotNull(floatingIpId, FLOATINGIP_ID_NOT_NULL);
-        return floatingIpStore.containsKey(floatingIpId);
-    }
-
-    @Override
-    public boolean floatingIpIsUsed(IpAddress floatingIpAddr,
-                                    FloatingIpId floatingIpId) {
-        checkNotNull(floatingIpAddr, "Floating IP address cannot be null");
-        checkNotNull(floatingIpId, "Floating IP Id cannot be null");
-        Collection<FloatingIp> floatingIps = getFloatingIps();
-        for (FloatingIp floatingIp : floatingIps) {
-            if (floatingIp.floatingIp().equals(floatingIpAddr)
-                    && !floatingIp.id().equals(floatingIpId)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public boolean fixedIpIsUsed(IpAddress fixedIpAddr, TenantId tenantId,
-                                 FloatingIpId floatingIpId) {
-        checkNotNull(fixedIpAddr, "Fixed IP address cannot be null");
-        checkNotNull(tenantId, "Tenant Id cannot be null");
-        checkNotNull(floatingIpId, "Floating IP Id cannot be null");
-        Collection<FloatingIp> floatingIps = getFloatingIps();
-        for (FloatingIp floatingIp : floatingIps) {
-            IpAddress fixedIp = floatingIp.fixedIp();
-            if (fixedIp != null) {
-                if (fixedIp.equals(fixedIpAddr)
-                        && floatingIp.tenantId().equals(tenantId)
-                        && !floatingIp.id().equals(floatingIpId)) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public boolean createFloatingIps(Collection<FloatingIp> floatingIps) {
-        checkNotNull(floatingIps, FLOATINGIP_NOT_NULL);
-        boolean result = true;
-        for (FloatingIp floatingIp : floatingIps) {
-            verifyFloatingIpData(floatingIp);
-            floatingIpStore.put(floatingIp.id(), floatingIp);
-            if (!floatingIpStore.containsKey(floatingIp.id())) {
-                log.debug("The floating Ip is created failed whose identifier is {}",
-                          floatingIp.id().toString());
-                result = false;
-            }
-        }
-        return result;
-    }
-
-    @Override
-    public boolean updateFloatingIps(Collection<FloatingIp> floatingIps) {
-        checkNotNull(floatingIps, FLOATINGIP_NOT_NULL);
-        boolean result = true;
-        for (FloatingIp floatingIp : floatingIps) {
-            verifyFloatingIpData(floatingIp);
-            FloatingIp oldFloatingIp = floatingIpStore.get(floatingIp.id());
-            floatingIpBindStore.put(floatingIp.id(), oldFloatingIp);
-            floatingIpStore.put(floatingIp.id(), floatingIp);
-            if (!floatingIpStore.containsKey(floatingIp.id())) {
-                log.debug("The floating Ip is updated failed whose identifier is {}",
-                          floatingIp.id().toString());
-                result = false;
-            }
-        }
-        return result;
-    }
-
-    @Override
-    public boolean removeFloatingIps(Collection<FloatingIpId> floatingIpIds) {
-        checkNotNull(floatingIpIds, FLOATINGIP_ID_NOT_NULL);
-        boolean result = true;
-        for (FloatingIpId floatingIpId : floatingIpIds) {
-            if (!floatingIpStore.containsKey(floatingIpId)) {
-                log.debug("The floatingIp is not exist whose identifier is {}",
-                          floatingIpId.toString());
-                throw new IllegalArgumentException(
-                                                   "FloatingIP ID doesn't exist");
-            }
-            FloatingIp floatingIp = floatingIpStore.get(floatingIpId);
-            floatingIpStore.remove(floatingIpId, floatingIp);
-            floatingIpBindStore.remove(floatingIpId);
-            if (floatingIpStore.containsKey(floatingIpId)) {
-                log.debug("The floating Ip is deleted failed whose identifier is {}",
-                          floatingIpId.toString());
-                result = false;
-            }
-        }
-        return result;
-    }
-
-    @Override
-    public void addListener(FloatingIpListener listener) {
-        checkNotNull(listener, LISTENER_NOT_NULL);
-        listeners.add(listener);
-    }
-
-    @Override
-    public void removeListener(FloatingIpListener listener) {
-        checkNotNull(listener, LISTENER_NOT_NULL);
-        listeners.remove(listener);
-    }
-
-    /**
-     * Verifies validity of FloatingIp data.
-     *
-     * @param floatingIps floatingIp instance
-     */
-    private void verifyFloatingIpData(FloatingIp floatingIps) {
-        checkNotNull(floatingIps, FLOATINGIP_NOT_NULL);
-        if (!tenantNetworkService.exists(floatingIps.networkId())) {
-            log.debug("The network identifier {} that the floating Ip {} create for is not exist",
-                      floatingIps.networkId().toString(), floatingIps.id()
-                              .toString());
-            throw new IllegalArgumentException(
-                                               "Floating network ID doesn't exist");
-        }
-
-        VirtualPortId portId = floatingIps.portId();
-        if (portId != null && !virtualPortService.exists(portId)) {
-            log.debug("The port identifier {} that the floating Ip {} create for is not exist",
-                      floatingIps.portId().toString(), floatingIps.id()
-                              .toString());
-            throw new IllegalArgumentException("Port ID doesn't exist");
-        }
-
-        RouterId routerId = floatingIps.routerId();
-        if (routerId != null && !routerService.exists(routerId)) {
-            log.debug("The router identifier {} that the floating Ip {} create for is not exist",
-                      floatingIps.routerId().toString(), floatingIps.id()
-                              .toString());
-            throw new IllegalArgumentException("Router ID doesn't exist");
-        }
-
-        if (floatingIpIsUsed(floatingIps.floatingIp(), floatingIps.id())) {
-            log.debug("The floaing Ip {} that the floating Ip {} create for is used",
-                      floatingIps.floatingIp().toString(), floatingIps.id()
-                              .toString());
-            throw new IllegalArgumentException(
-                                               "The floating IP address is used");
-        }
-
-        IpAddress fixedIp = floatingIps.fixedIp();
-        if (fixedIp != null
-                && fixedIpIsUsed(fixedIp, floatingIps.tenantId(),
-                                 floatingIps.id())) {
-            log.debug("The fixed Ip {} that the floating Ip {} create for is used",
-                      floatingIps.fixedIp().toString(), floatingIps.id()
-                              .toString());
-            throw new IllegalArgumentException("The fixed IP address is used");
-        }
-    }
-
-    private class InnerFloatingIpStoreListener
-            implements
-            EventuallyConsistentMapListener<FloatingIpId, FloatingIp> {
-
-        @Override
-        public void event(EventuallyConsistentMapEvent<FloatingIpId, FloatingIp> event) {
-            checkNotNull(event, EVENT_NOT_NULL);
-            FloatingIp floatingIp = event.value();
-            if (EventuallyConsistentMapEvent.Type.PUT == event.type()) {
-                notifyListeners(new FloatingIpEvent(
-                                                    FloatingIpEvent.Type.FLOATINGIP_PUT,
-                                                    floatingIp));
-                if (floatingIp.portId() != null) {
-                    notifyListeners(new FloatingIpEvent(
-                                                        FloatingIpEvent.Type.FLOATINGIP_BIND,
-                                                        floatingIp));
-                } else {
-                    FloatingIp oldFloatingIp = floatingIpBindStore.get(floatingIp.id());
-                    if (oldFloatingIp != null) {
-                        notifyListeners(new FloatingIpEvent(
-                                                            FloatingIpEvent.Type.FLOATINGIP_UNBIND,
-                                                            oldFloatingIp));
-                    }
-                }
-            }
-            if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) {
-                notifyListeners(new FloatingIpEvent(
-                                                    FloatingIpEvent.Type.FLOATINGIP_DELETE,
-                                                    floatingIp));
-                if (floatingIp.portId() != null) {
-                    notifyListeners(new FloatingIpEvent(
-                                                        FloatingIpEvent.Type.FLOATINGIP_UNBIND,
-                                                        floatingIp));
-                }
-            }
-        }
-    }
-
-    /**
-     * Notifies specify event to all listeners.
-     *
-     * @param event Floating IP event
-     */
-    private void notifyListeners(FloatingIpEvent event) {
-        checkNotNull(event, EVENT_NOT_NULL);
-        listeners.forEach(listener -> listener.event(event));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/impl/package-info.java
deleted file mode 100644
index c632e99..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of the FloatingIp service.
- */
-package org.onosproject.vtnrsc.floatingip.impl;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/package-info.java
deleted file mode 100644
index b17b9c0..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service for interacting with the inventory of FloatingIp.
- */
-package org.onosproject.vtnrsc.floatingip;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierEvent.java
deleted file mode 100644
index 463a208..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierEvent.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.flowclassifier;
-
-import org.onosproject.event.AbstractEvent;
-import org.onosproject.vtnrsc.FlowClassifier;
-
-/**
- * Describes network Flow-Classifier event.
- */
-public class FlowClassifierEvent extends AbstractEvent<FlowClassifierEvent.Type, FlowClassifier> {
-    /**
-     * Type of flow-classifier events.
-     */
-    public enum Type {
-        /**
-         * Signifies that flow-classifier has been created.
-         */
-        FLOW_CLASSIFIER_PUT,
-        /**
-         * Signifies that flow-classifier has been deleted.
-         */
-        FLOW_CLASSIFIER_DELETE,
-        /**
-         * Signifies that flow-classifier has been updated.
-         */
-        FLOW_CLASSIFIER_UPDATE
-    }
-
-    /**
-     * Creates an event of a given type and for the specified Flow-Classifier.
-     *
-     * @param type Flow-Classifier event type
-     * @param flowClassifier Flow-Classifier subject
-     */
-    public FlowClassifierEvent(Type type, FlowClassifier flowClassifier) {
-        super(type, flowClassifier);
-    }
-
-    /**
-     * Creates an event of a given type and for the specified Flow-Classifier.
-     *
-     * @param type Flow-Classifier event type
-     * @param flowClassifier Flow-Classifier subject
-     * @param time occurrence time
-     */
-    public FlowClassifierEvent(Type type, FlowClassifier flowClassifier, long time) {
-        super(type, flowClassifier, time);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierListener.java
deleted file mode 100644
index eedbac1..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.flowclassifier;
-
-import org.onosproject.event.EventListener;
-
-/**
- * Entity capable of Flow-Classifier related events.
- */
-public interface FlowClassifierListener extends EventListener<FlowClassifierEvent> {
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierService.java
deleted file mode 100644
index 0924bb9..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierService.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.flowclassifier;
-
-import org.onosproject.event.ListenerService;
-import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.FlowClassifierId;
-
-/**
- * Provides Services for Flow Classifier.
- */
-public interface FlowClassifierService extends ListenerService<FlowClassifierEvent, FlowClassifierListener> {
-
-    /**
-     * Check whether Flow Classifier is present based on given Flow Classifier
-     * Id.
-     *
-     * @param id flow classifier identifier
-     * @return true if flow classifier is present otherwise return false
-     */
-    boolean exists(FlowClassifierId id);
-
-    /**
-     * Returns the number of flow classifiers known to the system.
-     *
-     * @return number of flow classifiers
-     */
-    int getFlowClassifierCount();
-
-    /**
-     * Store Flow Classifier.
-     *
-     * @param flowClassifier flow classifier
-     * @return true if adding flow classifier into store is success otherwise
-     *         return false
-     */
-    boolean createFlowClassifier(FlowClassifier flowClassifier);
-
-    /**
-     * Return the existing collection of Flow Classifier.
-     *
-     * @return flow classifier collections
-     */
-    Iterable<FlowClassifier> getFlowClassifiers();
-
-    /**
-     * Retrieve the Flow Classifier based on given Flow Classifier id.
-     *
-     * @param id flow classifier identifier
-     * @return flow classifier if present otherwise returns null
-     */
-    FlowClassifier getFlowClassifier(FlowClassifierId id);
-
-    /**
-     * Update Flow Classifier based on given Flow Classifier Id.
-     *
-     * @param flowClassifier flow classifier
-     * @return true if flow classifier update is success otherwise return false
-     */
-    boolean updateFlowClassifier(FlowClassifier flowClassifier);
-
-    /**
-     * Remove Flow Classifier from store based on given Flow Classifier Id.
-     *
-     * @param id flow classifier identifier
-     * @return true if flow classifier removal is success otherwise return
-     *         false
-     */
-    boolean removeFlowClassifier(FlowClassifierId id);
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManager.java
deleted file mode 100644
index 216a2c5..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManager.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.flowclassifier.impl;
-
-import com.google.common.collect.ImmutableList;
-import org.onlab.packet.IpPrefix;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.event.AbstractListenerManager;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.EventuallyConsistentMapEvent;
-import org.onosproject.store.service.EventuallyConsistentMapListener;
-import org.onosproject.store.service.MultiValuedTimestamp;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.WallClockTimestamp;
-import org.onosproject.vtnrsc.DefaultFlowClassifier;
-import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.flowclassifier.FlowClassifierEvent;
-import org.onosproject.vtnrsc.flowclassifier.FlowClassifierListener;
-import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.UUID;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provides implementation of the Flow Classifier Service.
- */
-@Component(immediate = true, service = FlowClassifierService.class)
-public class FlowClassifierManager extends AbstractListenerManager<FlowClassifierEvent, FlowClassifierListener>
-        implements FlowClassifierService {
-
-    private static final String FLOW_CLASSIFIER_NOT_NULL = "Flow Classifier cannot be null";
-    private static final String FLOW_CLASSIFIER_ID_NOT_NULL = "Flow Classifier Id cannot be null";
-    private static final String LISTENER_NOT_NULL = "Listener cannot be null";
-    private static final String EVENT_NOT_NULL = "event cannot be null";
-
-    private final Logger log = getLogger(FlowClassifierManager.class);
-
-    private EventuallyConsistentMap<FlowClassifierId, FlowClassifier> flowClassifierStore;
-
-    private EventuallyConsistentMapListener<FlowClassifierId, FlowClassifier> flowClassifierListener =
-            new InnerFlowClassifierStoreListener();
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Activate
-    protected void activate() {
-        eventDispatcher.addSink(FlowClassifierEvent.class, listenerRegistry);
-        KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
-                .register(KryoNamespaces.API)
-                .register(MultiValuedTimestamp.class)
-                .register(FlowClassifier.class, FlowClassifierId.class, UUID.class, IpPrefix.class,
-                          VirtualPortId.class, DefaultFlowClassifier.class, TenantId.class);
-        flowClassifierStore = storageService
-                .<FlowClassifierId, FlowClassifier>eventuallyConsistentMapBuilder()
-                .withName("flowclassifierstore").withSerializer(serializer)
-                .withTimestampProvider((k, v) -> new WallClockTimestamp()).build();
-        flowClassifierStore.addListener(flowClassifierListener);
-        log.info("Flow Classifier service activated");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        eventDispatcher.removeSink(FlowClassifierEvent.class);
-        flowClassifierStore.destroy();
-        log.info("Flow Classifier service deactivated");
-    }
-
-    @Override
-    public boolean exists(FlowClassifierId id) {
-        checkNotNull(id, FLOW_CLASSIFIER_ID_NOT_NULL);
-        return flowClassifierStore.containsKey(id);
-    }
-
-    @Override
-    public int getFlowClassifierCount() {
-        return flowClassifierStore.size();
-    }
-
-    @Override
-    public Iterable<FlowClassifier> getFlowClassifiers() {
-        return ImmutableList.copyOf(flowClassifierStore.values());
-    }
-
-    @Override
-    public FlowClassifier getFlowClassifier(FlowClassifierId id) {
-        checkNotNull(id, FLOW_CLASSIFIER_ID_NOT_NULL);
-        return flowClassifierStore.get(id);
-    }
-
-    @Override
-    public boolean createFlowClassifier(FlowClassifier flowClassifier) {
-        log.debug("createFlowClassifier");
-        checkNotNull(flowClassifier, FLOW_CLASSIFIER_NOT_NULL);
-        FlowClassifierId id = flowClassifier.flowClassifierId();
-
-        flowClassifierStore.put(id, flowClassifier);
-        if (!flowClassifierStore.containsKey(id)) {
-            log.debug("Flow Classifier creation is failed whose identifier is {}.", id.toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updateFlowClassifier(FlowClassifier flowClassifier) {
-        checkNotNull(flowClassifier, FLOW_CLASSIFIER_NOT_NULL);
-
-        if (!flowClassifierStore.containsKey(flowClassifier.flowClassifierId())) {
-            log.debug("The flowClassifier is not exist whose identifier was {} ", flowClassifier.flowClassifierId()
-                    .toString());
-            return false;
-        }
-
-        flowClassifierStore.put(flowClassifier.flowClassifierId(), flowClassifier);
-
-        if (!flowClassifier.equals(flowClassifierStore.get(flowClassifier.flowClassifierId()))) {
-            log.debug("Updation of flowClassifier is failed whose identifier was {} ", flowClassifier
-                    .flowClassifierId().toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removeFlowClassifier(FlowClassifierId id) {
-        checkNotNull(id, FLOW_CLASSIFIER_ID_NOT_NULL);
-        flowClassifierStore.remove(id);
-        if (flowClassifierStore.containsKey(id)) {
-            log.debug("The Flow Classifier removal is failed whose identifier is {}", id.toString());
-            return false;
-        }
-        return true;
-    }
-
-    private class InnerFlowClassifierStoreListener
-            implements
-            EventuallyConsistentMapListener<FlowClassifierId, FlowClassifier> {
-
-        @Override
-        public void event(EventuallyConsistentMapEvent<FlowClassifierId, FlowClassifier> event) {
-            checkNotNull(event, EVENT_NOT_NULL);
-            FlowClassifier flowClassifier = event.value();
-            if (EventuallyConsistentMapEvent.Type.PUT == event.type()) {
-                notifyListeners(new FlowClassifierEvent(
-                        FlowClassifierEvent.Type.FLOW_CLASSIFIER_PUT,
-                        flowClassifier));
-            }
-            if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) {
-                notifyListeners(new FlowClassifierEvent(
-                        FlowClassifierEvent.Type.FLOW_CLASSIFIER_DELETE,
-                        flowClassifier));
-            }
-        }
-    }
-
-    /**
-     * Notifies specify event to all listeners.
-     *
-     * @param event flow classifier event
-     */
-    private void notifyListeners(FlowClassifierEvent event) {
-        checkNotNull(event, EVENT_NOT_NULL);
-        post(event);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/package-info.java
deleted file mode 100644
index abcbe8b..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of the flow Classifier service.
- */
-package org.onosproject.vtnrsc.flowclassifier.impl;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/package-info.java
deleted file mode 100644
index ea4aca2..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service for interacting with flow Classifier of SFC.
- */
-package org.onosproject.vtnrsc.flowclassifier;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/package-info.java
deleted file mode 100644
index 1e663dd..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * VTN resources that used by virtual tenant network.
- */
-package org.onosproject.vtnrsc;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainEvent.java
deleted file mode 100644
index bbc7c0f..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainEvent.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.portchain;
-
-import org.onosproject.event.AbstractEvent;
-import org.onosproject.vtnrsc.PortChain;
-
-/**
- * Describes network Port-Chain event.
- */
-public class PortChainEvent extends AbstractEvent<PortChainEvent.Type, PortChain> {
-    /**
-     * Type of port-chain events.
-     */
-    public enum Type {
-        /**
-         * Signifies that port-chain has been created.
-         */
-        PORT_CHAIN_PUT,
-        /**
-         * Signifies that port-chain has been deleted.
-         */
-        PORT_CHAIN_DELETE,
-        /**
-         * Signifies that port-chain has been updated.
-         */
-        PORT_CHAIN_UPDATE
-    }
-
-    /**
-     * Creates an event of a given type and for the specified Port-Chain.
-     *
-     * @param type Port-Chain event type
-     * @param portChain Port-Chain subject
-     */
-    public PortChainEvent(Type type, PortChain portChain) {
-        super(type, portChain);
-    }
-
-    /**
-     * Creates an event of a given type and for the specified Port-Chain.
-     *
-     * @param type Port-Chain event type
-     * @param portChain Port-Chain subject
-     * @param time occurrence time
-     */
-    public PortChainEvent(Type type, PortChain portChain, long time) {
-        super(type, portChain, time);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainListener.java
deleted file mode 100644
index 9448ebd..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.portchain;
-
-import org.onosproject.event.EventListener;
-
-/**
- * Entity capable of Port-Chain related events.
- */
-public interface PortChainListener extends EventListener<PortChainEvent> {
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainService.java
deleted file mode 100644
index 3b8727c..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainService.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.portchain;
-
-import org.onosproject.event.ListenerService;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortChainId;
-
-/**
- * Service for interacting with the inventory of port chains.
- */
-public interface PortChainService extends ListenerService<PortChainEvent, PortChainListener> {
-
-    /**
-     * Returns if the port chain is existed.
-     *
-     * @param portChainId port chain identifier
-     * @return true or false if one with the given identifier exists.
-     */
-    boolean exists(PortChainId portChainId);
-
-    /**
-     * Returns the number of port chains known to the system.
-     *
-     * @return number of port chains.
-     */
-    int getPortChainCount();
-
-    /**
-     * Returns an iterable collection of the currently known port chains.
-     *
-     * @return collection of port chains.
-     */
-    Iterable<PortChain> getPortChains();
-
-    /**
-     * Returns the portChain with the given identifier.
-     *
-     * @param portChainId port chain identifier
-     * @return PortChain or null if port chain with the given identifier is not
-     *         known.
-     */
-    PortChain getPortChain(PortChainId portChainId);
-
-    /**
-     * Creates a PortChain in the store.
-     *
-     * @param portChain the port chain to create
-     * @return true if given port chain is created successfully.
-     */
-    boolean createPortChain(PortChain portChain);
-
-    /**
-     * Updates the portChain in the store.
-     *
-     * @param portChain the port chain to update
-     * @return true if given port chain is updated successfully.
-     */
-    boolean updatePortChain(PortChain portChain);
-
-    /**
-     * Deletes portChain by given portChainId.
-     *
-     * @param portChainId id of port chain to remove
-     * @return true if the give port chain is deleted successfully.
-     */
-    boolean removePortChain(PortChainId portChainId);
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/impl/PortChainManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/impl/PortChainManager.java
deleted file mode 100644
index 6aa6bf3..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/impl/PortChainManager.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.portchain.impl;
-
-import org.onlab.util.KryoNamespace;
-import org.onosproject.event.AbstractListenerManager;
-import org.onosproject.net.DeviceId;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.EventuallyConsistentMapEvent;
-import org.onosproject.store.service.EventuallyConsistentMapListener;
-import org.onosproject.store.service.MultiValuedTimestamp;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.WallClockTimestamp;
-import org.onosproject.vtnrsc.DefaultPortChain;
-import org.onosproject.vtnrsc.FiveTuple;
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.LoadBalanceId;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortChainId;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.portchain.PortChainEvent;
-import org.onosproject.vtnrsc.portchain.PortChainListener;
-import org.onosproject.vtnrsc.portchain.PortChainService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.Collections;
-import java.util.UUID;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provides implementation of the portChainService.
- */
-@Component(immediate = true, service = PortChainService.class)
-public class PortChainManager extends AbstractListenerManager<PortChainEvent, PortChainListener> implements
-        PortChainService {
-
-    private static final String PORT_CHAIN_ID_NULL = "PortChain ID cannot be null";
-    private static final String PORT_CHAIN_NULL = "PortChain cannot be null";
-    private static final String EVENT_NOT_NULL = "event cannot be null";
-
-    private final Logger log = getLogger(getClass());
-    private EventuallyConsistentMap<PortChainId, PortChain> portChainStore;
-
-    private EventuallyConsistentMapListener<PortChainId, PortChain> portChainListener =
-            new InnerPortChainStoreListener();
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Activate
-    public void activate() {
-
-        eventDispatcher.addSink(PortChainEvent.class, listenerRegistry);
-
-        KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
-                .register(KryoNamespaces.API)
-                .register(MultiValuedTimestamp.class)
-                .register(PortChain.class, PortChainId.class, UUID.class, PortPairGroupId.class,
-                          FlowClassifierId.class, FiveTuple.class, LoadBalanceId.class, DeviceId.class,
-                          DefaultPortChain.class, PortPairId.class, TenantId.class);
-
-        portChainStore = storageService
-                .<PortChainId, PortChain>eventuallyConsistentMapBuilder()
-                .withName("portchainstore").withSerializer(serializer)
-                .withTimestampProvider((k, v) -> new WallClockTimestamp()).build();
-
-        portChainStore.addListener(portChainListener);
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        eventDispatcher.removeSink(PortChainEvent.class);
-        portChainStore.removeListener(portChainListener);
-        portChainStore.destroy();
-        log.info("Stopped");
-    }
-
-    @Override
-    public boolean exists(PortChainId portChainId) {
-        checkNotNull(portChainId, PORT_CHAIN_ID_NULL);
-        return portChainStore.containsKey(portChainId);
-    }
-
-    @Override
-    public int getPortChainCount() {
-        return portChainStore.size();
-    }
-
-    @Override
-    public Iterable<PortChain> getPortChains() {
-        return Collections.unmodifiableCollection(portChainStore.values());
-    }
-
-    @Override
-    public PortChain getPortChain(PortChainId portChainId) {
-        checkNotNull(portChainId, PORT_CHAIN_ID_NULL);
-        return portChainStore.get(portChainId);
-    }
-
-    @Override
-    public boolean createPortChain(PortChain portChain) {
-        checkNotNull(portChain, PORT_CHAIN_NULL);
-
-        portChainStore.put(portChain.portChainId(), portChain);
-        if (!portChainStore.containsKey(portChain.portChainId())) {
-            log.error("The portChain created is failed which identifier was {}", portChain.portChainId()
-                      .toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updatePortChain(PortChain portChain) {
-        checkNotNull(portChain, PORT_CHAIN_NULL);
-        PortChain oldPortChain = null;
-        if (!portChainStore.containsKey(portChain.portChainId())) {
-            log.warn("The portChain is not exist whose identifier was {} ",
-                     portChain.portChainId().toString());
-            return false;
-        } else {
-            oldPortChain = portChainStore.get(portChain.portChainId());
-        }
-        PortChain newPortChain = DefaultPortChain.create(portChain, oldPortChain);
-        portChainStore.put(newPortChain.portChainId(), newPortChain);
-
-        if (!newPortChain.equals(portChainStore.get(newPortChain.portChainId()))) {
-            log.debug("The portChain is updated failed whose identifier was {} ",
-                      newPortChain.portChainId().toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removePortChain(PortChainId portChainId) {
-        checkNotNull(portChainId, PORT_CHAIN_NULL);
-
-        portChainStore.remove(portChainId);
-        if (portChainStore.containsKey(portChainId)) {
-            log.debug("The portChain is removed failed whose identifier was {}",
-                      portChainId.toString());
-            return false;
-        }
-        return true;
-    }
-
-    private class InnerPortChainStoreListener
-            implements
-            EventuallyConsistentMapListener<PortChainId, PortChain> {
-
-        @Override
-        public void event(EventuallyConsistentMapEvent<PortChainId, PortChain> event) {
-            checkNotNull(event, EVENT_NOT_NULL);
-            PortChain portChain = event.value();
-            if (EventuallyConsistentMapEvent.Type.PUT == event.type()) {
-                notifyListeners(new PortChainEvent(
-                        PortChainEvent.Type.PORT_CHAIN_PUT,
-                        portChain));
-            }
-            if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) {
-                notifyListeners(new PortChainEvent(
-                        PortChainEvent.Type.PORT_CHAIN_DELETE,
-                        portChain));
-            }
-        }
-    }
-
-    /**
-     * Notifies specify event to all listeners.
-     *
-     * @param event port chain event
-     */
-    private void notifyListeners(PortChainEvent event) {
-        checkNotNull(event, EVENT_NOT_NULL);
-        post(event);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/impl/package-info.java
deleted file mode 100644
index 84ac7d7..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of service for interacting with the inventory of port chains.
- */
-package org.onosproject.vtnrsc.portchain.impl;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/package-info.java
deleted file mode 100644
index 896e646..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service for interacting with the inventory of port chains.
- */
-package org.onosproject.vtnrsc.portchain;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/PortChainSfMapService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/PortChainSfMapService.java
deleted file mode 100644
index 33189e0..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/PortChainSfMapService.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnrsc.portchainsfmap;
-
-import java.util.List;
-
-import org.onosproject.vtnrsc.PortChainId;
-import org.onosproject.vtnrsc.ServiceFunctionGroup;
-
-/**
- * Service for interacting with the inventory of service functions for a given port chain.
- */
-public interface PortChainSfMapService {
-
-    /**
-     * Returns true if the port chain exists.
-     *
-     * @param portChainId port chain identifier
-     * @return true or false if one with the given identifier exists.
-     */
-    boolean exists(PortChainId portChainId);
-
-    /**
-     * Returns the list of service function groups available in the given port chain.
-     *
-     * @param portChainId port chain id
-     * @return list of service functions
-     */
-    List<ServiceFunctionGroup> getServiceFunctions(PortChainId portChainId);
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/impl/PortChainSfMapManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/impl/PortChainSfMapManager.java
deleted file mode 100644
index 78737b3..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/impl/PortChainSfMapManager.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnrsc.portchainsfmap.impl;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortChainId;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.ServiceFunctionGroup;
-import org.onosproject.vtnrsc.portchain.PortChainService;
-import org.onosproject.vtnrsc.portchainsfmap.PortChainSfMapService;
-import org.onosproject.vtnrsc.portpair.PortPairService;
-import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.List;
-import java.util.ListIterator;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provides implementation of the PortChainSfMapService.
- * A port pair group is nothing but group of similar service functions.
- * A port pair is nothing but a service function.
- */
-@Component(immediate = true, service = PortChainSfMapService.class)
-public class PortChainSfMapManager implements PortChainSfMapService {
-
-    private static final String PORT_CHAIN_ID_NULL = "PortChain ID cannot be null";
-
-    private final Logger log = getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PortChainService portChainService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PortPairGroupService portPairGroupService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PortPairService portPairService;
-
-    @Activate
-    public void activate() {
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        log.info("Stopped");
-    }
-
-    @Override
-    public boolean exists(PortChainId portChainId) {
-        checkNotNull(portChainId, PORT_CHAIN_ID_NULL);
-        return portChainService.exists(portChainId);
-    }
-
-    @Override
-    public List<ServiceFunctionGroup> getServiceFunctions(PortChainId portChainId) {
-        List<ServiceFunctionGroup> serviceFunctionGroupList = Lists.newArrayList();
-        PortChain portChain = portChainService.getPortChain(portChainId);
-        // Go through the port pair group list
-        List<PortPairGroupId> portPairGrpList = portChain.portPairGroups();
-        ListIterator<PortPairGroupId> listGrpIterator = portPairGrpList.listIterator();
-
-        while (listGrpIterator.hasNext()) {
-            PortPairGroupId portPairGroupId = listGrpIterator.next();
-            PortPairGroup portPairGroup = portPairGroupService.getPortPairGroup(portPairGroupId);
-            ServiceFunctionGroup sfg = new ServiceFunctionGroup(portPairGroup.name(), portPairGroup.description(),
-                                                                portPairGroup.portPairLoadMap());
-            serviceFunctionGroupList.add(sfg);
-        }
-        return ImmutableList.copyOf(serviceFunctionGroupList);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/impl/package-info.java
deleted file mode 100644
index dd75dbc..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service for interacting with the inventory of port chains to get details of service functions and stats.
- */
-package org.onosproject.vtnrsc.portchainsfmap.impl;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/package-info.java
deleted file mode 100644
index 1fb4183..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service for interacting with the inventory of port chains to get details of service functions and stats.
- */
-package org.onosproject.vtnrsc.portchainsfmap;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairEvent.java
deleted file mode 100644
index b08b0b2..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairEvent.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.portpair;
-
-import org.onosproject.event.AbstractEvent;
-import org.onosproject.vtnrsc.PortPair;
-
-/**
- * Describes network Port-Pair event.
- */
-public class PortPairEvent extends AbstractEvent<PortPairEvent.Type, PortPair> {
-    /**
-     * Type of port-pair events.
-     */
-    public enum Type {
-        /**
-         * Signifies that port-pair has been created.
-         */
-        PORT_PAIR_PUT,
-        /**
-         * Signifies that port-pair has been deleted.
-         */
-        PORT_PAIR_DELETE,
-        /**
-         * Signifies that port-pair has been updated.
-         */
-        PORT_PAIR_UPDATE
-    }
-
-    /**
-     * Creates an event of a given type and for the specified Port-Pair.
-     *
-     * @param type Port-Pair event type
-     * @param portPair Port-Pair subject
-     */
-    public PortPairEvent(Type type, PortPair portPair) {
-        super(type, portPair);
-    }
-
-    /**
-     * Creates an event of a given type and for the specified Port-Pair.
-     *
-     * @param type Port-Pair event type
-     * @param portPair Port-Pair subject
-     * @param time occurrence time
-     */
-    public PortPairEvent(Type type, PortPair portPair, long time) {
-        super(type, portPair, time);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairListener.java
deleted file mode 100644
index 75d9dc9..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.portpair;
-
-import org.onosproject.event.EventListener;
-
-/**
- * Entity capable of Port-Pair related events.
- */
-public interface PortPairListener extends EventListener<PortPairEvent> {
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairService.java
deleted file mode 100644
index add238f..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairService.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.portpair;
-
-import org.onosproject.event.ListenerService;
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairId;
-/**
- * Service for interacting with the inventory of port pairs.
- */
-public interface PortPairService extends ListenerService<PortPairEvent, PortPairListener> {
-
-    /**
-     * Returns if the port pair is existed.
-     *
-     * @param portPairId port pair identifier
-     * @return true or false if one with the given identifier exists.
-     */
-    boolean exists(PortPairId portPairId);
-
-    /**
-     * Returns the number of port pairs known to the system.
-     *
-     * @return number of port pairs.
-     */
-    int getPortPairCount();
-
-    /**
-     * Returns an iterable collection of the currently known port pairs.
-     *
-     * @return collection of port pairs.
-     */
-    Iterable<PortPair> getPortPairs();
-
-    /**
-     * Returns the portPair with the given identifier.
-     *
-     * @param portPairId port pair identifier
-     * @return PortPair or null if port pair with the given identifier is not
-     *         known.
-     */
-    PortPair getPortPair(PortPairId portPairId);
-
-    /**
-     * Creates a PortPair in the store.
-     *
-     * @param portPair the port pair to create
-     * @return true if given port pair is created successfully.
-     */
-    boolean createPortPair(PortPair portPair);
-
-    /**
-     * Updates the portPair in the store.
-     *
-     * @param portPair the port pair to update
-     * @return true if given port pair is updated successfully.
-     */
-    boolean updatePortPair(PortPair portPair);
-
-    /**
-     * Deletes portPair by given portPairId.
-     *
-     * @param portPairId id of port pair to remove
-     * @return true if the give port pair is deleted successfully.
-     */
-    boolean removePortPair(PortPairId portPairId);
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/PortPairManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/PortPairManager.java
deleted file mode 100644
index 47dbe1c..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/PortPairManager.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.portpair.impl;
-
-import org.onlab.util.KryoNamespace;
-import org.onosproject.event.AbstractListenerManager;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.EventuallyConsistentMapEvent;
-import org.onosproject.store.service.EventuallyConsistentMapListener;
-import org.onosproject.store.service.MultiValuedTimestamp;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.WallClockTimestamp;
-import org.onosproject.vtnrsc.DefaultPortPair;
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.portpair.PortPairEvent;
-import org.onosproject.vtnrsc.portpair.PortPairListener;
-import org.onosproject.vtnrsc.portpair.PortPairService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.Collections;
-import java.util.UUID;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provides implementation of the portPairService.
- */
-@Component(immediate = true, service = PortPairService.class)
-public class PortPairManager extends AbstractListenerManager<PortPairEvent, PortPairListener> implements
-        PortPairService {
-
-    private static final String PORT_PAIR_ID_NULL = "PortPair ID cannot be null";
-    private static final String PORT_PAIR_NULL = "PortPair cannot be null";
-    private static final String LISTENER_NOT_NULL = "Listener cannot be null";
-    private static final String EVENT_NOT_NULL = "event cannot be null";
-
-    private final Logger log = getLogger(getClass());
-
-    private EventuallyConsistentMap<PortPairId, PortPair> portPairStore;
-
-    private EventuallyConsistentMapListener<PortPairId, PortPair> portPairListener =
-            new InnerPortPairStoreListener();
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Activate
-    public void activate() {
-
-        eventDispatcher.addSink(PortPairEvent.class, listenerRegistry);
-        KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
-                .register(KryoNamespaces.API)
-                .register(MultiValuedTimestamp.class)
-                .register(PortPair.class, PortPairId.class, UUID.class, DefaultPortPair.class, TenantId.class);
-
-        portPairStore = storageService.<PortPairId, PortPair>eventuallyConsistentMapBuilder()
-                .withName("portpairstore")
-                .withSerializer(serializer)
-                .withTimestampProvider((k, v) -> new WallClockTimestamp())
-                .build();
-
-        portPairStore.addListener(portPairListener);
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        eventDispatcher.removeSink(PortPairEvent.class);
-        portPairStore.destroy();
-        log.info("Stopped");
-    }
-
-    @Override
-    public boolean exists(PortPairId portPairId) {
-        checkNotNull(portPairId, PORT_PAIR_ID_NULL);
-        return portPairStore.containsKey(portPairId);
-    }
-
-    @Override
-    public int getPortPairCount() {
-        return portPairStore.size();
-    }
-
-    @Override
-    public Iterable<PortPair> getPortPairs() {
-        return Collections.unmodifiableCollection(portPairStore.values());
-    }
-
-    @Override
-    public PortPair getPortPair(PortPairId portPairId) {
-        checkNotNull(portPairId, PORT_PAIR_ID_NULL);
-        return portPairStore.get(portPairId);
-    }
-
-    @Override
-    public boolean createPortPair(PortPair portPair) {
-        checkNotNull(portPair, PORT_PAIR_NULL);
-
-        portPairStore.put(portPair.portPairId(), portPair);
-        if (!portPairStore.containsKey(portPair.portPairId())) {
-            log.debug("The portPair is created failed which identifier was {}", portPair.portPairId().toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updatePortPair(PortPair portPair) {
-        checkNotNull(portPair, PORT_PAIR_NULL);
-
-        if (!portPairStore.containsKey(portPair.portPairId())) {
-            log.debug("The portPair is not exist whose identifier was {} ", portPair.portPairId().toString());
-            return false;
-        }
-
-        portPairStore.put(portPair.portPairId(), portPair);
-
-        if (!portPair.equals(portPairStore.get(portPair.portPairId()))) {
-            log.debug("The portPair is updated failed whose identifier was {} ", portPair.portPairId().toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removePortPair(PortPairId portPairId) {
-        checkNotNull(portPairId, PORT_PAIR_NULL);
-
-        portPairStore.remove(portPairId);
-        if (portPairStore.containsKey(portPairId)) {
-            log.debug("The portPair is removed failed whose identifier was {}", portPairId.toString());
-            return false;
-        }
-        return true;
-    }
-
-    private class InnerPortPairStoreListener
-            implements
-            EventuallyConsistentMapListener<PortPairId, PortPair> {
-
-        @Override
-        public void event(EventuallyConsistentMapEvent<PortPairId, PortPair> event) {
-            checkNotNull(event, EVENT_NOT_NULL);
-            PortPair portPair = event.value();
-            if (EventuallyConsistentMapEvent.Type.PUT == event.type()) {
-                notifyListeners(new PortPairEvent(
-                        PortPairEvent.Type.PORT_PAIR_PUT,
-                        portPair));
-            }
-            if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) {
-                notifyListeners(new PortPairEvent(
-                        PortPairEvent.Type.PORT_PAIR_DELETE,
-                        portPair));
-            }
-        }
-    }
-
-    /**
-     * Notifies specify event to all listeners.
-     *
-     * @param event port pair event
-     */
-    private void notifyListeners(PortPairEvent event) {
-        checkNotNull(event, EVENT_NOT_NULL);
-        post(event);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/package-info.java
deleted file mode 100644
index f4b5583..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of service for interacting with the inventory of port pairs.
- */
-package org.onosproject.vtnrsc.portpair.impl;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/package-info.java
deleted file mode 100644
index 449c3bd..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service for interacting with the inventory of port pairs.
- */
-package org.onosproject.vtnrsc.portpair;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupEvent.java
deleted file mode 100644
index 917e6dc..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupEvent.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.portpairgroup;
-
-import org.onosproject.event.AbstractEvent;
-import org.onosproject.vtnrsc.PortPairGroup;
-
-/**
- * Describes network Port-Pair-Group event.
- */
-public class PortPairGroupEvent extends AbstractEvent<PortPairGroupEvent.Type, PortPairGroup> {
-    /**
-     * Type of port-pair-group events.
-     */
-    public enum Type {
-        /**
-         * Signifies that port-pair-group has been created.
-         */
-        PORT_PAIR_GROUP_PUT,
-        /**
-         * Signifies that port-pair-group has been deleted.
-         */
-        PORT_PAIR_GROUP_DELETE,
-        /**
-         * Signifies that port-pair-group has been updated.
-         */
-        PORT_PAIR_GROUP_UPDATE
-    }
-
-    /**
-     * Creates an event of a given type and for the specified Port-Pair-Group.
-     *
-     * @param type Port-Pair-Group event type
-     * @param portPairGroup Port-Pair-Group subject
-     */
-    public PortPairGroupEvent(Type type, PortPairGroup portPairGroup) {
-        super(type, portPairGroup);
-    }
-
-    /**
-     * Creates an event of a given type and for the specified Port-Pair-Group.
-     *
-     * @param type Port-Pair-Group event type
-     * @param portPairGroup Port-Pair-Group subject
-     * @param time occurrence time
-     */
-    public PortPairGroupEvent(Type type, PortPairGroup portPairGroup, long time) {
-        super(type, portPairGroup, time);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupListener.java
deleted file mode 100644
index e591be4..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.portpairgroup;
-
-import org.onosproject.event.EventListener;
-
-/**
- * Entity capable of Port-Pair-Group related events.
- */
-public interface PortPairGroupListener extends EventListener<PortPairGroupEvent> {
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupService.java
deleted file mode 100644
index f78dccf..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupService.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.portpairgroup;
-
-import org.onosproject.event.ListenerService;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.PortPairGroupId;
-
-/**
- * Service for interacting with the inventory of port pair groups.
- */
-public interface PortPairGroupService extends ListenerService<PortPairGroupEvent, PortPairGroupListener> {
-
-    /**
-     * Returns if the port pair group is existed.
-     *
-     * @param portPairGroupId port pair group identifier
-     * @return true or false if one with the given identifier exists.
-     */
-    boolean exists(PortPairGroupId portPairGroupId);
-
-    /**
-     * Returns the number of port pair groups known to the system.
-     *
-     * @return number of port pair groups.
-     */
-    int getPortPairGroupCount();
-
-    /**
-     * Returns an iterable collection of the currently known port pair groups.
-     *
-     * @return collection of port pair groups.
-     */
-    Iterable<PortPairGroup> getPortPairGroups();
-
-    /**
-     * Returns the portPairGroup with the given identifier.
-     *
-     * @param portPairGroupId port pair group identifier
-     * @return PortPairGroup or null if port pair group with the given identifier is not
-     *         known.
-     */
-    PortPairGroup getPortPairGroup(PortPairGroupId portPairGroupId);
-
-    /**
-     * Creates a PortPairGroup in the store.
-     *
-     * @param portPairGroup the port pair group to create
-     * @return true if given port pair group is created successfully.
-     */
-    boolean createPortPairGroup(PortPairGroup portPairGroup);
-
-    /**
-     * Updates the portPairGroup in the store.
-     *
-     * @param portPairGroup the port pair group to update
-     * @return true if given port pair group is updated successfully.
-     */
-    boolean updatePortPairGroup(PortPairGroup portPairGroup);
-
-    /**
-     * Deletes portPairGroup by given portPairGroupId.
-     *
-     * @param portPairGroupId id of port pair group to remove
-     * @return true if the give port pair group is deleted successfully.
-     */
-    boolean removePortPairGroup(PortPairGroupId portPairGroupId);
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManager.java
deleted file mode 100644
index f5ff8e8..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManager.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.portpairgroup.impl;
-
-import org.onlab.util.KryoNamespace;
-import org.onosproject.event.AbstractListenerManager;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.EventuallyConsistentMapEvent;
-import org.onosproject.store.service.EventuallyConsistentMapListener;
-import org.onosproject.store.service.MultiValuedTimestamp;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.WallClockTimestamp;
-import org.onosproject.vtnrsc.DefaultPortPairGroup;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.portpairgroup.PortPairGroupEvent;
-import org.onosproject.vtnrsc.portpairgroup.PortPairGroupListener;
-import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.Collections;
-import java.util.UUID;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provides implementation of the portPairGroupService.
- */
-@Component(immediate = true, service = PortPairGroupService.class)
-public class PortPairGroupManager extends AbstractListenerManager<PortPairGroupEvent, PortPairGroupListener> implements
-        PortPairGroupService {
-
-    private static final String PORT_PAIR_GROUP_ID_NULL = "PortPairGroup ID cannot be null";
-    private static final String PORT_PAIR_GROUP_NULL = "PortPairGroup cannot be null";
-    private static final String LISTENER_NOT_NULL = "Listener cannot be null";
-    private static final String EVENT_NOT_NULL = "event cannot be null";
-
-    private final Logger log = getLogger(getClass());
-
-    private EventuallyConsistentMap<PortPairGroupId, PortPairGroup> portPairGroupStore;
-
-    private EventuallyConsistentMapListener<PortPairGroupId, PortPairGroup> portPairGroupListener =
-            new InnerPortPairGroupStoreListener();
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Activate
-    public void activate() {
-        eventDispatcher.addSink(PortPairGroupEvent.class, listenerRegistry);
-        KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
-                .register(KryoNamespaces.API)
-                .register(MultiValuedTimestamp.class)
-                .register(PortPairGroup.class, PortPairGroupId.class, UUID.class, DefaultPortPairGroup.class,
-                          TenantId.class, PortPairId.class);
-
-        portPairGroupStore = storageService
-                .<PortPairGroupId, PortPairGroup>eventuallyConsistentMapBuilder()
-                .withName("portpairgroupstore").withSerializer(serializer)
-                .withTimestampProvider((k, v) -> new WallClockTimestamp()).build();
-
-        portPairGroupStore.addListener(portPairGroupListener);
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        eventDispatcher.removeSink(PortPairGroupEvent.class);
-        portPairGroupStore.destroy();
-        log.info("Stopped");
-    }
-
-    @Override
-    public boolean exists(PortPairGroupId portPairGroupId) {
-        checkNotNull(portPairGroupId, PORT_PAIR_GROUP_ID_NULL);
-        return portPairGroupStore.containsKey(portPairGroupId);
-    }
-
-    @Override
-    public int getPortPairGroupCount() {
-        return portPairGroupStore.size();
-    }
-
-    @Override
-    public Iterable<PortPairGroup> getPortPairGroups() {
-        return Collections.unmodifiableCollection(portPairGroupStore.values());
-    }
-
-    @Override
-    public PortPairGroup getPortPairGroup(PortPairGroupId portPairGroupId) {
-        checkNotNull(portPairGroupId, PORT_PAIR_GROUP_ID_NULL);
-        return portPairGroupStore.get(portPairGroupId);
-    }
-
-    @Override
-    public boolean createPortPairGroup(PortPairGroup portPairGroup) {
-        checkNotNull(portPairGroup, PORT_PAIR_GROUP_NULL);
-
-        portPairGroupStore.put(portPairGroup.portPairGroupId(), portPairGroup);
-        if (!portPairGroupStore.containsKey(portPairGroup.portPairGroupId())) {
-            log.debug("The portPairGroup is created failed which identifier was {}", portPairGroup.portPairGroupId()
-                    .toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updatePortPairGroup(PortPairGroup portPairGroup) {
-        checkNotNull(portPairGroup, PORT_PAIR_GROUP_NULL);
-
-        if (!portPairGroupStore.containsKey(portPairGroup.portPairGroupId())) {
-            log.debug("The portPairGroup is not exist whose identifier was {} ",
-                      portPairGroup.portPairGroupId().toString());
-            return false;
-        }
-
-        portPairGroupStore.put(portPairGroup.portPairGroupId(), portPairGroup);
-
-        if (!portPairGroup.equals(portPairGroupStore.get(portPairGroup.portPairGroupId()))) {
-            log.debug("The portPairGroup is updated failed whose identifier was {} ",
-                      portPairGroup.portPairGroupId().toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removePortPairGroup(PortPairGroupId portPairGroupId) {
-        checkNotNull(portPairGroupId, PORT_PAIR_GROUP_NULL);
-
-        portPairGroupStore.remove(portPairGroupId);
-        if (portPairGroupStore.containsKey(portPairGroupId)) {
-            log.debug("The portPairGroup is removed failed whose identifier was {}",
-                      portPairGroupId.toString());
-            return false;
-        }
-        return true;
-    }
-
-
-    private class InnerPortPairGroupStoreListener
-            implements
-            EventuallyConsistentMapListener<PortPairGroupId, PortPairGroup> {
-
-        @Override
-        public void event(EventuallyConsistentMapEvent<PortPairGroupId, PortPairGroup> event) {
-            checkNotNull(event, EVENT_NOT_NULL);
-            PortPairGroup portPairGroup = event.value();
-            if (EventuallyConsistentMapEvent.Type.PUT == event.type()) {
-                notifyListeners(new PortPairGroupEvent(
-                        PortPairGroupEvent.Type.PORT_PAIR_GROUP_PUT,
-                        portPairGroup));
-            }
-            if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) {
-                notifyListeners(new PortPairGroupEvent(
-                        PortPairGroupEvent.Type.PORT_PAIR_GROUP_DELETE,
-                        portPairGroup));
-            }
-        }
-    }
-
-    /**
-     * Notifies specify event to all listeners.
-     *
-     * @param event PortPairGroup event
-     */
-    private void notifyListeners(PortPairGroupEvent event) {
-        checkNotNull(event, EVENT_NOT_NULL);
-        post(event);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/package-info.java
deleted file mode 100644
index 1286ca7..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of service for interacting with the inventory of port pair groups.
- */
-package org.onosproject.vtnrsc.portpairgroup.impl;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/package-info.java
deleted file mode 100644
index 506448e..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service for interacting with the inventory of port pair groups.
- */
-package org.onosproject.vtnrsc.portpairgroup;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterEvent.java
deleted file mode 100644
index cacbf0d..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterEvent.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.router;
-
-import org.onosproject.event.AbstractEvent;
-import org.onosproject.vtnrsc.Router;
-
-/**
- * Describes network Router event.
- */
-public class RouterEvent extends AbstractEvent<RouterEvent.Type, Router> {
-    /**
-     * Type of Router events.
-     */
-    public enum Type {
-        /**
-         * Signifies that router has been created.
-         */
-        ROUTER_PUT,
-        /**
-         * Signifies that router has been deleted.
-         */
-        ROUTER_DELETE
-    }
-
-    /**
-     * Creates an event of a given type and for the specified Router.
-     *
-     * @param type Router event type
-     * @param router Router subject
-     */
-    public RouterEvent(Type type, Router router) {
-        super(type, router);
-    }
-
-    /**
-     * Creates an event of a given type and for the specified Router.
-     *
-     * @param type Router event type
-     * @param router Router subject
-     * @param time occurrence time
-     */
-    public RouterEvent(Type type, Router router, long time) {
-        super(type, router, time);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterListener.java
deleted file mode 100644
index b75cef5..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.router;
-
-import org.onosproject.event.EventListener;
-
-/**
- * Entity capable of Router related events.
- */
-public interface RouterListener extends EventListener<RouterEvent> {
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterService.java
deleted file mode 100644
index 001b01e..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterService.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.router;
-
-import java.util.Collection;
-
-import org.onosproject.vtnrsc.Router;
-import org.onosproject.vtnrsc.RouterId;
-
-/**
- * Service for interacting with the inventory of Routers.
- */
-public interface RouterService {
-    /**
-     * Returns exists or not of specific router identifier.
-     *
-     * @param routerId router identifier
-     * @return true or false
-     */
-    boolean exists(RouterId routerId);
-
-    /**
-     * Returns a collection of the currently known Routers.
-     *
-     * @return collection of Routers
-     */
-    Collection<Router> getRouters();
-
-    /**
-     * Returns the Router with the specified identifier.
-     *
-     * @param routerId Router identifier
-     * @return Router or null if one with the given identifier is not known
-     */
-    Router getRouter(RouterId routerId);
-
-    /**
-     * Creates new Routers.
-     *
-     * @param routers the collection of Routers
-     * @return true if the identifier Router has been created right.
-     *         false if the identifier Router is failed to store
-     */
-    boolean createRouters(Collection<Router> routers);
-
-    /**
-     * Updates existing Routers.
-     *
-     * @param routers the collection of Routers
-     * @return true if Routers were updated successfully.
-     *         false if Routers were updated failed
-     */
-    boolean updateRouters(Collection<Router> routers);
-
-    /**
-     * Removes the specified Routers from the store.
-     *
-     * @param routerIds the collection of Routers identifier
-     * @return true if remove identifier Routers successfully. false if remove
-     *         identifier Routers failed
-     */
-    boolean removeRouters(Collection<RouterId> routerIds);
-
-    /**
-     * Adds the specified listener to Router manager.
-     *
-     * @param listener Router listener
-     */
-    void addListener(RouterListener listener);
-
-    /**
-     * Removes the specified listener to Router manager.
-     *
-     * @param listener Router listener
-     */
-    void removeListener(RouterListener listener);
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/impl/RouterManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/impl/RouterManager.java
deleted file mode 100644
index 8954a38..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/impl/RouterManager.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.router.impl;
-
-import com.google.common.collect.Sets;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.EventuallyConsistentMapEvent;
-import org.onosproject.store.service.EventuallyConsistentMapListener;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.WallClockTimestamp;
-import org.onosproject.vtnrsc.DefaultRouter;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.Router;
-import org.onosproject.vtnrsc.RouterGateway;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.router.RouterEvent;
-import org.onosproject.vtnrsc.router.RouterListener;
-import org.onosproject.vtnrsc.router.RouterService;
-import org.onosproject.vtnrsc.subnet.SubnetService;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provides implementation of the Router service.
- */
-@Component(immediate = true, service = RouterService.class)
-public class RouterManager implements RouterService {
-
-    private static final String ROUTER_ID_NULL = "Router ID cannot be null";
-    private static final String ROUTER_NOT_NULL = "Router cannot be null";
-    private static final String ROUTER = "vtn-router-store";
-    private static final String VTNRSC_APP = "org.onosproject.vtnrsc";
-    private static final String LISTENER_NOT_NULL = "Listener cannot be null";
-    private static final String EVENT_NOT_NULL = "event cannot be null";
-
-    private final Logger log = getLogger(getClass());
-    private final Set<RouterListener> listeners = Sets.newCopyOnWriteArraySet();
-    private EventuallyConsistentMapListener<RouterId, Router> routerListener = new InnerRouterStoreListener();
-    protected EventuallyConsistentMap<RouterId, Router> routerStore;
-    protected ApplicationId appId;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TenantNetworkService tenantNetworkService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected VirtualPortService virtualPortService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected SubnetService subnetService;
-
-    @Activate
-    public void activate() {
-        appId = coreService.registerApplication(VTNRSC_APP);
-        KryoNamespace.Builder serializer = KryoNamespace
-                .newBuilder()
-                .register(KryoNamespaces.API)
-                .register(Router.class, RouterId.class, DefaultRouter.class,
-                          TenantNetworkId.class, TenantId.class,
-                          VirtualPortId.class, DefaultRouter.class,
-                          RouterGateway.class, Router.Status.class,
-                          SubnetId.class, FixedIp.class);
-        routerStore = storageService
-                .<RouterId, Router>eventuallyConsistentMapBuilder()
-                .withName(ROUTER).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> new WallClockTimestamp())
-                .build();
-        routerStore.addListener(routerListener);
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        routerStore.removeListener(routerListener);
-        routerStore.destroy();
-        listeners.clear();
-        log.info("Stopped");
-    }
-
-    @Override
-    public boolean exists(RouterId routerId) {
-        checkNotNull(routerId, ROUTER_ID_NULL);
-        return routerStore.containsKey(routerId);
-    }
-
-    @Override
-    public Collection<Router> getRouters() {
-        return Collections.unmodifiableCollection(routerStore.values());
-    }
-
-    @Override
-    public Router getRouter(RouterId routerId) {
-        checkNotNull(routerId, ROUTER_ID_NULL);
-        return routerStore.get(routerId);
-    }
-
-    @Override
-    public boolean createRouters(Collection<Router> routers) {
-        checkNotNull(routers, ROUTER_NOT_NULL);
-        for (Router router : routers) {
-            verifyRouterData(router);
-            routerStore.put(router.id(), router);
-            if (!routerStore.containsKey(router.id())) {
-                log.debug("The router is created failed whose identifier is {}",
-                          router.id().toString());
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updateRouters(Collection<Router> routers) {
-        checkNotNull(routers, ROUTER_NOT_NULL);
-        for (Router router : routers) {
-            if (!routerStore.containsKey(router.id())) {
-                log.debug("The routers is not exist whose identifier is {}",
-                          router.id().toString());
-                throw new IllegalArgumentException(
-                                                   "routers ID doesn't exist");
-            }
-            verifyRouterData(router);
-            routerStore.put(router.id(), router);
-            if (!router.equals(routerStore.get(router.id()))) {
-                log.debug("The router is updated failed whose identifier is {}",
-                          router.id().toString());
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removeRouters(Collection<RouterId> routerIds) {
-        checkNotNull(routerIds, ROUTER_ID_NULL);
-        for (RouterId routerId : routerIds) {
-            if (!routerStore.containsKey(routerId)) {
-                log.debug("The router is not exist whose identifier is {}",
-                          routerId.toString());
-                throw new IllegalArgumentException(
-                                                   "router ID doesn't exist");
-            }
-            Router router = routerStore.get(routerId);
-            routerStore.remove(routerId, router);
-            if (routerStore.containsKey(routerId)) {
-                log.debug("The router deleted is failed whose identifier is {}",
-                          routerId.toString());
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public void addListener(RouterListener listener) {
-        checkNotNull(listener, LISTENER_NOT_NULL);
-        listeners.add(listener);
-    }
-
-    @Override
-    public void removeListener(RouterListener listener) {
-        checkNotNull(listener, LISTENER_NOT_NULL);
-        listeners.remove(listener);
-    }
-
-    /**
-     * Verifies validity of Router data.
-     *
-     * @param routers router instance
-     */
-    private void verifyRouterData(Router routers) {
-        checkNotNull(routers, ROUTER_NOT_NULL);
-        if (routers.gatewayPortid() != null
-                && !virtualPortService.exists(routers.gatewayPortid())) {
-            log.debug("The gateway port ID is not exist whose identifier is {}",
-                      routers.gatewayPortid().toString());
-            throw new IllegalArgumentException("gateway port ID doesn't exist");
-        }
-
-        if (routers.externalGatewayInfo() != null) {
-            RouterGateway routerGateway = routers.externalGatewayInfo();
-            if (!tenantNetworkService.exists(routerGateway.networkId())) {
-                log.debug("The network ID of gateway info is not exist whose identifier is {}",
-                          routers.id().toString());
-                throw new IllegalArgumentException(
-                                                   "network ID of gateway info doesn't exist");
-            }
-            Iterable<FixedIp> fixedIps = routerGateway.externalFixedIps();
-            for (FixedIp fixedIp : fixedIps) {
-                if (!subnetService.exists(fixedIp.subnetId())) {
-                    log.debug("The subnet ID of gateway info is not exist whose identifier is {}",
-                              routers.id().toString());
-                    throw new IllegalArgumentException(
-                                                       "subnet ID of gateway info doesn't exist");
-                }
-            }
-        }
-    }
-
-    private class InnerRouterStoreListener
-            implements EventuallyConsistentMapListener<RouterId, Router> {
-
-        @Override
-        public void event(EventuallyConsistentMapEvent<RouterId, Router> event) {
-            checkNotNull(event, EVENT_NOT_NULL);
-            Router router = event.value();
-            if (EventuallyConsistentMapEvent.Type.PUT == event.type()) {
-                notifyListeners(new RouterEvent(RouterEvent.Type.ROUTER_PUT,
-                                                router));
-            }
-            if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) {
-                notifyListeners(new RouterEvent(RouterEvent.Type.ROUTER_DELETE,
-                                                router));
-            }
-        }
-    }
-
-    /**
-     * Notifies specify event to all listeners.
-     *
-     * @param event Floating IP event
-     */
-    private void notifyListeners(RouterEvent event) {
-        checkNotNull(event, EVENT_NOT_NULL);
-        listeners.forEach(listener -> listener.event(event));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/impl/package-info.java
deleted file mode 100644
index 38cbc44..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of the Router service.
- */
-package org.onosproject.vtnrsc.router.impl;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/package-info.java
deleted file mode 100644
index 4da56b8..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service for interacting with the inventory of Router.
- */
-package org.onosproject.vtnrsc.router;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceEvent.java
deleted file mode 100644
index b6754b1..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceEvent.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.routerinterface;
-
-import org.onosproject.event.AbstractEvent;
-import org.onosproject.vtnrsc.RouterInterface;
-
-/**
- * Describes network Router Interface event.
- */
-public class RouterInterfaceEvent
-        extends AbstractEvent<RouterInterfaceEvent.Type, RouterInterface> {
-
-    /**
-     * Type of Router Interface events.
-     */
-    public enum Type {
-        /**
-         * Signifies that router interface has been added.
-         */
-        ROUTER_INTERFACE_PUT,
-        /**
-         * Signifies that router interface has been removed.
-         */
-        ROUTER_INTERFACE_DELETE
-    }
-
-    /**
-     * Creates an event of a given type and for the specified Router Interface.
-     *
-     * @param type Router Interface event type
-     * @param routerInterface Router Interface subject
-     */
-    public RouterInterfaceEvent(Type type, RouterInterface routerInterface) {
-        super(type, routerInterface);
-    }
-
-    /**
-     * Creates an event of a given type and for the specified Router Interface.
-     *
-     * @param type Router Interface event type.
-     * @param routerInterface Router Interface subject
-     * @param time occurrence time
-     */
-    public RouterInterfaceEvent(Type type, RouterInterface routerInterface,
-                                long time) {
-        super(type, routerInterface, time);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceListener.java
deleted file mode 100644
index e1fdae4..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceListener.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.routerinterface;
-
-import org.onosproject.event.EventListener;
-
-/**
- * Entity capable of Router Interface related events.
- */
-public interface RouterInterfaceListener
-        extends EventListener<RouterInterfaceEvent> {
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceService.java
deleted file mode 100644
index 76ea44b..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceService.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.routerinterface;
-
-import java.util.Collection;
-
-import org.onosproject.vtnrsc.RouterInterface;
-import org.onosproject.vtnrsc.SubnetId;
-
-/**
- * Service for interacting with the inventory of Router interface.
- */
-public interface RouterInterfaceService {
-    /**
-     * Returns exists or not of specific subnet identifier.
-     *
-     * @param subnetId subnet identifier
-     * @return true or false
-     */
-    boolean exists(SubnetId subnetId);
-
-    /**
-     * Returns a collection of the currently known Router interface.
-     *
-     * @return collection of RouterInterface
-     */
-    Collection<RouterInterface> getRouterInterfaces();
-
-    /**
-     * Returns the Router interface with the specified subnet identifier.
-     *
-     * @param subnetId subnet identifier
-     * @return RouterInterface or null if one with the given identifier is not
-     *         known
-     */
-    RouterInterface getRouterInterface(SubnetId subnetId);
-
-    /**
-     * Adds the specified RouterInterface.
-     *
-     * @param routerInterface the interface add to router
-     * @return true if add router interface successfully
-     */
-    boolean addRouterInterface(RouterInterface routerInterface);
-
-    /**
-     * Removes the specified RouterInterface.
-     *
-     * @param routerInterface the interface remove from router
-     * @return true if remove router interface successfully
-     */
-    boolean removeRouterInterface(RouterInterface routerInterface);
-
-    /**
-     * Adds the specified listener to Router Interface manager.
-     *
-     * @param listener Router Interface listener
-     */
-    void addListener(RouterInterfaceListener listener);
-
-    /**
-     * Removes the specified listener to RouterInterface manager.
-     *
-     * @param listener Router Interface listener
-     */
-    void removeListener(RouterInterfaceListener listener);
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/impl/RouterInterfaceManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/impl/RouterInterfaceManager.java
deleted file mode 100644
index 854efd9..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/impl/RouterInterfaceManager.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.routerinterface.impl;
-
-import com.google.common.collect.Sets;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.EventuallyConsistentMapEvent;
-import org.onosproject.store.service.EventuallyConsistentMapListener;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.WallClockTimestamp;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.RouterInterface;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.router.RouterService;
-import org.onosproject.vtnrsc.routerinterface.RouterInterfaceEvent;
-import org.onosproject.vtnrsc.routerinterface.RouterInterfaceListener;
-import org.onosproject.vtnrsc.routerinterface.RouterInterfaceService;
-import org.onosproject.vtnrsc.subnet.SubnetService;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provides implementation of the Router interface service.
- */
-@Component(immediate = true, service = RouterInterfaceService.class)
-public class RouterInterfaceManager implements RouterInterfaceService {
-    private static final String SUBNET_ID_NULL = "Subnet ID cannot be null";
-    private static final String ROUTER_INTERFACE_NULL = "Router Interface cannot be null";
-    private static final String ROUTER_INTERFACE = "vtn-router-interface-store";
-    private static final String VTNRSC_APP = "org.onosproject.vtnrsc";
-    private static final String LISTENER_NOT_NULL = "Listener cannot be null";
-    private static final String EVENT_NOT_NULL = "event cannot be null";
-
-    private final Logger log = getLogger(getClass());
-    private final Set<RouterInterfaceListener> listeners = Sets
-            .newCopyOnWriteArraySet();
-    private EventuallyConsistentMapListener<SubnetId, RouterInterface> routerInterfaceListener =
-            new InnerRouterInterfaceStoreListener();
-    protected EventuallyConsistentMap<SubnetId, RouterInterface> routerInterfaceStore;
-    protected ApplicationId appId;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected VirtualPortService virtualPortService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected SubnetService subnetService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected RouterService routerService;
-
-    @Activate
-    public void activate() {
-        appId = coreService.registerApplication(VTNRSC_APP);
-        KryoNamespace.Builder serializer = KryoNamespace
-                .newBuilder()
-                .register(KryoNamespaces.API)
-                .register(RouterId.class, TenantId.class, VirtualPortId.class,
-                          RouterInterface.class, SubnetId.class);
-        routerInterfaceStore = storageService
-                .<SubnetId, RouterInterface>eventuallyConsistentMapBuilder()
-                .withName(ROUTER_INTERFACE).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> new WallClockTimestamp())
-                .build();
-        routerInterfaceStore.addListener(routerInterfaceListener);
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        routerInterfaceStore.removeListener(routerInterfaceListener);
-        routerInterfaceStore.destroy();
-        listeners.clear();
-        log.info("Stopped");
-    }
-
-    @Override
-    public boolean exists(SubnetId subnetId) {
-        checkNotNull(subnetId, SUBNET_ID_NULL);
-        return routerInterfaceStore.containsKey(subnetId);
-    }
-
-    @Override
-    public Collection<RouterInterface> getRouterInterfaces() {
-        return Collections
-                .unmodifiableCollection(routerInterfaceStore.values());
-    }
-
-    @Override
-    public RouterInterface getRouterInterface(SubnetId subnetId) {
-        checkNotNull(subnetId, SUBNET_ID_NULL);
-        return routerInterfaceStore.get(subnetId);
-    }
-
-    @Override
-    public boolean addRouterInterface(RouterInterface routerInterface) {
-        checkNotNull(routerInterface, ROUTER_INTERFACE_NULL);
-        if (!virtualPortService.exists(routerInterface.portId())) {
-            log.debug("The port ID of interface is not exist whose identifier is {}",
-                      routerInterface.portId().toString());
-            throw new IllegalArgumentException(
-                                               "port ID of interface doesn't exist");
-        }
-        verifyRouterInterfaceData(routerInterface);
-        routerInterfaceStore.put(routerInterface.subnetId(), routerInterface);
-        if (!routerInterfaceStore.containsKey(routerInterface.subnetId())) {
-            log.debug("The router interface is created failed whose identifier is {}",
-                      routerInterface.subnetId().toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removeRouterInterface(RouterInterface routerInterface) {
-        checkNotNull(routerInterface, ROUTER_INTERFACE_NULL);
-        if (!routerInterfaceStore.containsKey(routerInterface.subnetId())) {
-            log.debug("The router interface is not exist whose identifier is {}",
-                      routerInterface.subnetId().toString());
-            throw new IllegalArgumentException("subnet ID doesn't exist");
-        }
-        verifyRouterInterfaceData(routerInterface);
-        routerInterfaceStore
-                .remove(routerInterface.subnetId(), routerInterface);
-        if (routerInterfaceStore.containsKey(routerInterface.subnetId())) {
-            log.debug("The router interface deleted is failed whose identifier is {}",
-                      routerInterface.subnetId().toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public void addListener(RouterInterfaceListener listener) {
-        checkNotNull(listener, LISTENER_NOT_NULL);
-        listeners.add(listener);
-    }
-
-    @Override
-    public void removeListener(RouterInterfaceListener listener) {
-        checkNotNull(listener, LISTENER_NOT_NULL);
-        listeners.remove(listener);
-    }
-
-    /**
-     * Verifies validity of Router interface data.
-     *
-     * @param routers router instance
-     */
-    private void verifyRouterInterfaceData(RouterInterface routerInterface) {
-        checkNotNull(routerInterface, ROUTER_INTERFACE_NULL);
-        if (!subnetService.exists(routerInterface.subnetId())) {
-            log.debug("The subnet ID of interface is not exist whose identifier is {}",
-                      routerInterface.subnetId().toString());
-            throw new IllegalArgumentException(
-                                               "subnet ID of interface doesn't exist");
-        }
-        if (!routerService.exists(routerInterface.routerId())) {
-            log.debug("The router ID of interface is not exist whose identifier is {}",
-                      routerInterface.routerId().toString());
-            throw new IllegalArgumentException(
-                                               "router ID of interface doesn't exist");
-        }
-    }
-
-    private class InnerRouterInterfaceStoreListener
-            implements
-            EventuallyConsistentMapListener<SubnetId, RouterInterface> {
-
-        @Override
-        public void event(EventuallyConsistentMapEvent<SubnetId, RouterInterface> event) {
-            checkNotNull(event, EVENT_NOT_NULL);
-            RouterInterface routerInterface = event.value();
-            if (EventuallyConsistentMapEvent.Type.PUT == event.type()) {
-                notifyListeners(new RouterInterfaceEvent(
-                                                         RouterInterfaceEvent.Type.ROUTER_INTERFACE_PUT,
-                                                         routerInterface));
-            }
-            if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) {
-                notifyListeners(new RouterInterfaceEvent(
-                                                         RouterInterfaceEvent.Type.ROUTER_INTERFACE_DELETE,
-                                                         routerInterface));
-            }
-        }
-    }
-
-    /**
-     * Notifies specify event to all listeners.
-     *
-     * @param event Floating IP event
-     */
-    private void notifyListeners(RouterInterfaceEvent event) {
-        checkNotNull(event, EVENT_NOT_NULL);
-        listeners.forEach(listener -> listener.event(event));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/impl/package-info.java
deleted file mode 100644
index b7824bf..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of the RouterInterface service.
- */
-package org.onosproject.vtnrsc.routerinterface.impl;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/package-info.java
deleted file mode 100644
index 9dea3c3..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service for interacting with the inventory of RouterInterface.
- */
-package org.onosproject.vtnrsc.routerinterface;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/VtnRscService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/VtnRscService.java
deleted file mode 100644
index fd81987..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/VtnRscService.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.service;
-
-import org.onlab.packet.MacAddress;
-import org.onosproject.event.ListenerService;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Host;
-import org.onosproject.net.HostId;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantRouter;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.event.VtnRscEvent;
-import org.onosproject.vtnrsc.event.VtnRscListener;
-
-import java.util.Iterator;
-
-/**
- * Service for interacting with the inventory of Vtn resource.
- */
-public interface VtnRscService extends ListenerService<VtnRscEvent, VtnRscListener> {
-    /**
-     * Returns the SegmentationId of tenant.
-     *
-     * @param tenantId tenant identifier
-     * @return SegmentationId the SegmentationId of tenant
-     */
-    SegmentationId getL3vni(TenantId tenantId);
-
-    /**
-     * Returns the SegmentationId of tenantRouter.
-     *
-     * @param tenantRouter TenantRouter
-     * @return SegmentationId the SegmentationId of tenantRouter
-     */
-    SegmentationId getL3vni(TenantRouter tenantRouter);
-
-    /**
-     * Returns Classifier Ovs list of the specific tenant.
-     *
-     * @param tenantId tenant identifier
-     * @return iterable collection of Device
-     */
-    Iterator<Device> getClassifierOfTenant(TenantId tenantId);
-
-    /**
-     * Returns Service function forwarders Ovs list of the specific tenant.
-     *
-     * @param tenantId tenant identifier
-     * @return iterable collection of Device
-     */
-    Iterator<Device> getSffOfTenant(TenantId tenantId);
-
-    /**
-     * Returns gateway mac address of the specific host.
-     *
-     * @param hostId host identifier
-     * @return MacAddress of host
-     */
-    MacAddress getGatewayMac(HostId hostId);
-
-    /**
-     * Checks if a specific port is a service function.
-     *
-     * @param portId port identifier
-     * @return true or false
-     */
-    boolean isServiceFunction(VirtualPortId portId);
-
-    /**
-     * Returns device identifier mapping to the specific port.
-     *
-     * @param portId port identifier
-     * @return device identifier
-     */
-    DeviceId getSfToSffMaping(VirtualPortId portId);
-
-    /**
-     * Adds specify Device identifier to Service Function Forward OvsMap
-     * or Classifier OvsMap.
-     *
-     * @param virtualPortId the VirtualPort identifier
-     * @param tenantId the tenant identifier
-     * @param deviceId the device identifier
-     */
-    void addDeviceIdOfOvsMap(VirtualPortId virtualPortId, TenantId tenantId, DeviceId deviceId);
-
-    /**
-     * Removes specify Device identifier from Service Function Forward OvsMap
-     * or Classifier OvsMap.
-     *
-     * @param host Host
-     * @param tenantId the tenant identifier
-     * @param deviceId the device identifier
-     */
-    void removeDeviceIdOfOvsMap(Host host, TenantId tenantId, DeviceId deviceId);
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/impl/VtnRscManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/impl/VtnRscManager.java
deleted file mode 100644
index 37f2de4..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/impl/VtnRscManager.java
+++ /dev/null
@@ -1,625 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.service.impl;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.core.CoreService;
-import org.onosproject.event.AbstractListenerManager;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Host;
-import org.onosproject.net.HostId;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.host.HostService;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.LogicalClockService;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.FloatingIp;
-import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.Router;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.RouterInterface;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.onosproject.vtnrsc.Subnet;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantRouter;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.event.VtnRscEvent;
-import org.onosproject.vtnrsc.event.VtnRscEventFeedback;
-import org.onosproject.vtnrsc.event.VtnRscListener;
-import org.onosproject.vtnrsc.floatingip.FloatingIpEvent;
-import org.onosproject.vtnrsc.floatingip.FloatingIpListener;
-import org.onosproject.vtnrsc.floatingip.FloatingIpService;
-import org.onosproject.vtnrsc.flowclassifier.FlowClassifierEvent;
-import org.onosproject.vtnrsc.flowclassifier.FlowClassifierListener;
-import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService;
-import org.onosproject.vtnrsc.portchain.PortChainEvent;
-import org.onosproject.vtnrsc.portchain.PortChainListener;
-import org.onosproject.vtnrsc.portchain.PortChainService;
-import org.onosproject.vtnrsc.portpair.PortPairEvent;
-import org.onosproject.vtnrsc.portpair.PortPairListener;
-import org.onosproject.vtnrsc.portpair.PortPairService;
-import org.onosproject.vtnrsc.portpairgroup.PortPairGroupEvent;
-import org.onosproject.vtnrsc.portpairgroup.PortPairGroupListener;
-import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService;
-import org.onosproject.vtnrsc.router.RouterEvent;
-import org.onosproject.vtnrsc.router.RouterListener;
-import org.onosproject.vtnrsc.router.RouterService;
-import org.onosproject.vtnrsc.routerinterface.RouterInterfaceEvent;
-import org.onosproject.vtnrsc.routerinterface.RouterInterfaceListener;
-import org.onosproject.vtnrsc.routerinterface.RouterInterfaceService;
-import org.onosproject.vtnrsc.service.VtnRscService;
-import org.onosproject.vtnrsc.subnet.SubnetService;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-import org.onosproject.vtnrsc.virtualport.VirtualPortEvent;
-import org.onosproject.vtnrsc.virtualport.VirtualPortListener;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provides implementation of the VtnRsc service.
- */
-@Component(immediate = true, service = VtnRscService.class)
-public class VtnRscManager extends AbstractListenerManager<VtnRscEvent, VtnRscListener>
-                           implements VtnRscService {
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LogicalClockService clockService;
-
-    private final Logger log = getLogger(getClass());
-    private FloatingIpListener floatingIpListener = new InnerFloatingIpListener();
-    private RouterListener routerListener = new InnerRouterListener();
-    private RouterInterfaceListener routerInterfaceListener = new InnerRouterInterfaceListener();
-    private PortPairListener portPairListener = new InnerPortPairListener();
-    private PortPairGroupListener portPairGroupListener = new InnerPortPairGroupListener();
-    private FlowClassifierListener flowClassifierListener = new InnerFlowClassifierListener();
-    private PortChainListener portChainListener = new InnerPortChainListener();
-    private VirtualPortListener virtualPortListener = new InnerVirtualPortListener();
-
-    private EventuallyConsistentMap<TenantId, SegmentationId> l3vniTenantMap;
-    private EventuallyConsistentMap<TenantRouter, SegmentationId> l3vniTenantRouterMap;
-    private EventuallyConsistentMap<TenantId, Set<DeviceId>> classifierOvsMap;
-    private EventuallyConsistentMap<TenantId, Set<DeviceId>> sffOvsMap;
-
-    private static final String IFACEID = "ifaceid";
-    private static final String RUNNELOPTOPOIC = "tunnel-ops-ids";
-    private static final String EVENT_NOT_NULL = "event cannot be null";
-    private static final String TENANTID_NOT_NULL = "tenantId cannot be null";
-    private static final String DEVICEID_NOT_NULL = "deviceId cannot be null";
-    private static final String VIRTUALPORTID_NOT_NULL = "virtualPortId cannot be null";
-    private static final String HOST_NOT_NULL = "host cannot be null";
-    private static final String L3VNITENANTMAP = "l3vniTenantMap";
-    private static final String L3VNITENANTROUTERMAP = "l3vniTenantRouterMap";
-    private static final String CLASSIFIEROVSMAP = "classifierOvsMap";
-    private static final String SFFOVSMAP = "sffOvsMap";
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected RouterService routerService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected FloatingIpService floatingIpService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected RouterInterfaceService routerInterfaceService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected VirtualPortService virtualPortService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected HostService hostService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected SubnetService subnetService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TenantNetworkService tenantNetworkService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceService deviceService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PortPairService portPairService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PortPairGroupService portPairGroupService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected FlowClassifierService flowClassifierService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PortChainService portChainService;
-
-    @Activate
-    public void activate() {
-        eventDispatcher.addSink(VtnRscEvent.class, listenerRegistry);
-        floatingIpService.addListener(floatingIpListener);
-        routerService.addListener(routerListener);
-        routerInterfaceService.addListener(routerInterfaceListener);
-        portPairService.addListener(portPairListener);
-        portPairGroupService.addListener(portPairGroupListener);
-        flowClassifierService.addListener(flowClassifierListener);
-        portChainService.addListener(portChainListener);
-        virtualPortService.addListener(virtualPortListener);
-
-        KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
-                .register(KryoNamespaces.API)
-                .register(TenantId.class, SegmentationId.class,
-                          TenantRouter.class, RouterId.class);
-        l3vniTenantMap = storageService
-                .<TenantId, SegmentationId>eventuallyConsistentMapBuilder()
-                .withName(L3VNITENANTMAP).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> clockService.getTimestamp())
-                .build();
-
-        l3vniTenantRouterMap = storageService
-                .<TenantRouter, SegmentationId>eventuallyConsistentMapBuilder()
-                .withName(L3VNITENANTROUTERMAP).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> clockService.getTimestamp())
-                .build();
-
-        classifierOvsMap = storageService
-                .<TenantId, Set<DeviceId>>eventuallyConsistentMapBuilder()
-                .withName(CLASSIFIEROVSMAP).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> clockService.getTimestamp())
-                .build();
-
-        sffOvsMap = storageService
-                .<TenantId, Set<DeviceId>>eventuallyConsistentMapBuilder()
-                .withName(SFFOVSMAP).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> clockService.getTimestamp())
-                .build();
-    }
-
-    @Deactivate
-    public void deactivate() {
-        eventDispatcher.removeSink(VtnRscEvent.class);
-        floatingIpService.removeListener(floatingIpListener);
-        routerService.removeListener(routerListener);
-        routerInterfaceService.removeListener(routerInterfaceListener);
-        portPairService.removeListener(portPairListener);
-        portPairGroupService.removeListener(portPairGroupListener);
-        flowClassifierService.removeListener(flowClassifierListener);
-        portChainService.removeListener(portChainListener);
-        virtualPortService.removeListener(virtualPortListener);
-
-        l3vniTenantMap.destroy();
-        l3vniTenantRouterMap.destroy();
-        classifierOvsMap.destroy();
-        sffOvsMap.destroy();
-        log.info("Stopped");
-    }
-
-    @Override
-    public SegmentationId getL3vni(TenantId tenantId) {
-        checkNotNull(tenantId, "tenantId cannot be null");
-        SegmentationId l3vni = l3vniTenantMap.get(tenantId);
-        if (l3vni == null) {
-            long segmentationId = coreService.getIdGenerator(RUNNELOPTOPOIC)
-                    .getNewId();
-            l3vni = SegmentationId.segmentationId(String
-                    .valueOf(segmentationId));
-            l3vniTenantMap.put(tenantId, l3vni);
-        }
-        return l3vni;
-    }
-
-    @Override
-    public SegmentationId getL3vni(TenantRouter tenantRouter) {
-        checkNotNull(tenantRouter, "tenantRouter cannot be null");
-        SegmentationId l3vni = l3vniTenantRouterMap.get(tenantRouter);
-        if (l3vni == null) {
-            long segmentationId = coreService.getIdGenerator(RUNNELOPTOPOIC)
-                    .getNewId();
-            l3vni = SegmentationId.segmentationId(String
-                    .valueOf(segmentationId));
-            l3vniTenantRouterMap.put(tenantRouter, l3vni);
-        }
-        return l3vni;
-    }
-
-    private class InnerFloatingIpListener implements FloatingIpListener {
-
-        @Override
-        public void event(FloatingIpEvent event) {
-            checkNotNull(event, EVENT_NOT_NULL);
-            FloatingIp floatingIp = event.subject();
-            if (FloatingIpEvent.Type.FLOATINGIP_PUT == event.type()) {
-                notifyListeners(new VtnRscEvent(
-                                                VtnRscEvent.Type.FLOATINGIP_PUT,
-                                                new VtnRscEventFeedback(
-                                                                        floatingIp)));
-            }
-            if (FloatingIpEvent.Type.FLOATINGIP_DELETE == event.type()) {
-                notifyListeners(new VtnRscEvent(
-                                                VtnRscEvent.Type.FLOATINGIP_DELETE,
-                                                new VtnRscEventFeedback(
-                                                                        floatingIp)));
-            }
-            if (FloatingIpEvent.Type.FLOATINGIP_BIND == event.type()) {
-                notifyListeners(new VtnRscEvent(
-                                                VtnRscEvent.Type.FLOATINGIP_BIND,
-                                                new VtnRscEventFeedback(
-                                                                        floatingIp)));
-            }
-            if (FloatingIpEvent.Type.FLOATINGIP_UNBIND == event.type()) {
-                notifyListeners(new VtnRscEvent(
-                                                VtnRscEvent.Type.FLOATINGIP_UNBIND,
-                                                new VtnRscEventFeedback(
-                                                                        floatingIp)));
-            }
-        }
-    }
-
-    private class InnerRouterListener implements RouterListener {
-
-        @Override
-        public void event(RouterEvent event) {
-            checkNotNull(event, EVENT_NOT_NULL);
-            Router router = event.subject();
-            if (RouterEvent.Type.ROUTER_PUT == event.type()) {
-                notifyListeners(new VtnRscEvent(VtnRscEvent.Type.ROUTER_PUT,
-                                                new VtnRscEventFeedback(router)));
-            }
-            if (RouterEvent.Type.ROUTER_DELETE == event.type()) {
-                notifyListeners(new VtnRscEvent(VtnRscEvent.Type.ROUTER_DELETE,
-                                                new VtnRscEventFeedback(router)));
-            }
-        }
-    }
-
-    private class InnerRouterInterfaceListener
-            implements RouterInterfaceListener {
-
-        @Override
-        public void event(RouterInterfaceEvent event) {
-            checkNotNull(event, EVENT_NOT_NULL);
-            RouterInterface routerInterface = event.subject();
-            if (RouterInterfaceEvent.Type.ROUTER_INTERFACE_PUT == event.type()) {
-                notifyListeners(new VtnRscEvent(
-                                                VtnRscEvent.Type.ROUTER_INTERFACE_PUT,
-                                                new VtnRscEventFeedback(
-                                                                        routerInterface)));
-            }
-            if (RouterInterfaceEvent.Type.ROUTER_INTERFACE_DELETE == event
-                    .type()) {
-                notifyListeners(new VtnRscEvent(
-                                                VtnRscEvent.Type.ROUTER_INTERFACE_DELETE,
-                                                new VtnRscEventFeedback(
-                                                                        routerInterface)));
-            }
-        }
-    }
-
-    private class InnerPortPairListener implements PortPairListener {
-
-        @Override
-        public void event(PortPairEvent event) {
-            checkNotNull(event, EVENT_NOT_NULL);
-            PortPair portPair = event.subject();
-            if (PortPairEvent.Type.PORT_PAIR_PUT == event.type()) {
-                notifyListeners(new VtnRscEvent(VtnRscEvent.Type.PORT_PAIR_PUT,
-                        new VtnRscEventFeedback(portPair)));
-            } else if (PortPairEvent.Type.PORT_PAIR_DELETE == event.type()) {
-                notifyListeners(new VtnRscEvent(
-                        VtnRscEvent.Type.PORT_PAIR_DELETE,
-                        new VtnRscEventFeedback(portPair)));
-            } else if (PortPairEvent.Type.PORT_PAIR_UPDATE == event.type()) {
-                notifyListeners(new VtnRscEvent(
-                        VtnRscEvent.Type.PORT_PAIR_UPDATE,
-                        new VtnRscEventFeedback(portPair)));
-            }
-        }
-    }
-
-    private class InnerPortPairGroupListener implements PortPairGroupListener {
-
-        @Override
-        public void event(PortPairGroupEvent event) {
-            checkNotNull(event, EVENT_NOT_NULL);
-            PortPairGroup portPairGroup = event.subject();
-            if (PortPairGroupEvent.Type.PORT_PAIR_GROUP_PUT == event.type()) {
-                notifyListeners(new VtnRscEvent(
-                        VtnRscEvent.Type.PORT_PAIR_GROUP_PUT,
-                        new VtnRscEventFeedback(portPairGroup)));
-            } else if (PortPairGroupEvent.Type.PORT_PAIR_GROUP_DELETE == event.type()) {
-                notifyListeners(new VtnRscEvent(
-                        VtnRscEvent.Type.PORT_PAIR_GROUP_DELETE,
-                        new VtnRscEventFeedback(portPairGroup)));
-            } else if (PortPairGroupEvent.Type.PORT_PAIR_GROUP_UPDATE == event.type()) {
-                notifyListeners(new VtnRscEvent(
-                        VtnRscEvent.Type.PORT_PAIR_GROUP_UPDATE,
-                        new VtnRscEventFeedback(portPairGroup)));
-            }
-        }
-    }
-
-    private class InnerFlowClassifierListener implements FlowClassifierListener {
-
-        @Override
-        public void event(FlowClassifierEvent event) {
-            checkNotNull(event, EVENT_NOT_NULL);
-            FlowClassifier flowClassifier = event.subject();
-            if (FlowClassifierEvent.Type.FLOW_CLASSIFIER_PUT == event.type()) {
-                notifyListeners(new VtnRscEvent(
-                        VtnRscEvent.Type.FLOW_CLASSIFIER_PUT,
-                        new VtnRscEventFeedback(flowClassifier)));
-            } else if (FlowClassifierEvent.Type.FLOW_CLASSIFIER_DELETE == event.type()) {
-                notifyListeners(new VtnRscEvent(
-                        VtnRscEvent.Type.FLOW_CLASSIFIER_DELETE,
-                        new VtnRscEventFeedback(flowClassifier)));
-            } else if (FlowClassifierEvent.Type.FLOW_CLASSIFIER_UPDATE == event.type()) {
-                notifyListeners(new VtnRscEvent(
-                        VtnRscEvent.Type.FLOW_CLASSIFIER_UPDATE,
-                        new VtnRscEventFeedback(flowClassifier)));
-            }
-        }
-    }
-
-    private class InnerPortChainListener implements PortChainListener {
-
-        @Override
-        public void event(PortChainEvent event) {
-            checkNotNull(event, EVENT_NOT_NULL);
-            PortChain portChain = event.subject();
-            if (PortChainEvent.Type.PORT_CHAIN_PUT == event.type()) {
-                notifyListeners(new VtnRscEvent(
-                        VtnRscEvent.Type.PORT_CHAIN_PUT,
-                        new VtnRscEventFeedback(portChain)));
-            } else if (PortChainEvent.Type.PORT_CHAIN_DELETE == event.type()) {
-                notifyListeners(new VtnRscEvent(
-                        VtnRscEvent.Type.PORT_CHAIN_DELETE,
-                        new VtnRscEventFeedback(portChain)));
-            } else if (PortChainEvent.Type.PORT_CHAIN_UPDATE == event.type()) {
-                notifyListeners(new VtnRscEvent(
-                        VtnRscEvent.Type.PORT_CHAIN_UPDATE,
-                        new VtnRscEventFeedback(portChain)));
-            }
-        }
-    }
-
-    private class InnerVirtualPortListener implements VirtualPortListener {
-
-        @Override
-        public void event(VirtualPortEvent event) {
-            checkNotNull(event, EVENT_NOT_NULL);
-            VirtualPort virtualPort = event.subject();
-            if (VirtualPortEvent.Type.VIRTUAL_PORT_PUT == event.type()) {
-                notifyListeners(new VtnRscEvent(VtnRscEvent.Type.VIRTUAL_PORT_PUT,
-                                                new VtnRscEventFeedback(virtualPort)));
-            } else if (VirtualPortEvent.Type.VIRTUAL_PORT_DELETE == event.type()) {
-                notifyListeners(new VtnRscEvent(VtnRscEvent.Type.VIRTUAL_PORT_DELETE,
-                                                new VtnRscEventFeedback(virtualPort)));
-            }
-        }
-    }
-
-    @Override
-    public Iterator<Device> getClassifierOfTenant(TenantId tenantId) {
-        checkNotNull(tenantId, TENANTID_NOT_NULL);
-        Set<DeviceId> deviceIdSet = classifierOvsMap.get(tenantId);
-        Set<Device> deviceSet = new HashSet<>();
-        if (deviceIdSet != null) {
-            for (DeviceId deviceId : deviceIdSet) {
-                deviceSet.add(deviceService.getDevice(deviceId));
-            }
-        }
-        return deviceSet.iterator();
-    }
-
-    @Override
-    public Iterator<Device> getSffOfTenant(TenantId tenantId) {
-        checkNotNull(tenantId, TENANTID_NOT_NULL);
-        Set<DeviceId> deviceIdSet = sffOvsMap.get(tenantId);
-        Set<Device> deviceSet = new HashSet<>();
-        if (deviceIdSet != null) {
-            for (DeviceId deviceId : deviceIdSet) {
-                deviceSet.add(deviceService.getDevice(deviceId));
-            }
-        }
-        return deviceSet.iterator();
-    }
-
-    @Override
-    public MacAddress getGatewayMac(HostId hostId) {
-        checkNotNull(hostId, "hostId cannot be null");
-        Host host = hostService.getHost(hostId);
-        String ifaceId = host.annotations().value(IFACEID);
-        VirtualPortId hPortId = VirtualPortId.portId(ifaceId);
-        VirtualPort hPort = virtualPortService.getPort(hPortId);
-        SubnetId subnetId = hPort.fixedIps().iterator().next().subnetId();
-        Subnet subnet = subnetService.getSubnet(subnetId);
-        IpAddress gatewayIp = subnet.gatewayIp();
-        Iterable<VirtualPort> virtualPorts = virtualPortService.getPorts();
-        MacAddress macAddress = null;
-        for (VirtualPort port : virtualPorts) {
-            Set<FixedIp> fixedIpSet = port.fixedIps();
-            for (FixedIp fixedIp : fixedIpSet) {
-                if (fixedIp.ip().equals(gatewayIp)) {
-                    macAddress = port.macAddress();
-                }
-            }
-        }
-        return macAddress;
-    }
-
-    @Override
-    public boolean isServiceFunction(VirtualPortId portId) {
-        return portPairService.exists(PortPairId.of(portId.portId()));
-    }
-
-    @Override
-    public DeviceId getSfToSffMaping(VirtualPortId portId) {
-        checkNotNull(portId, "portId cannot be null");
-        VirtualPort vmPort = virtualPortService.getPort(portId);
-        Set<Host> hostSet = hostService.getHostsByMac(vmPort.macAddress());
-        for (Host host : hostSet) {
-            if (host.annotations().value(IFACEID).equals(vmPort.portId().portId())) {
-                return host.location().deviceId();
-            }
-        }
-        return null;
-    }
-
-    @Override
-    public void addDeviceIdOfOvsMap(VirtualPortId virtualPortId,
-                                    TenantId tenantId, DeviceId deviceId) {
-        checkNotNull(virtualPortId, VIRTUALPORTID_NOT_NULL);
-        checkNotNull(tenantId, TENANTID_NOT_NULL);
-        checkNotNull(deviceId, DEVICEID_NOT_NULL);
-        if (isServiceFunction(virtualPortId)) {
-            addDeviceIdToSpecificMap(tenantId, deviceId, sffOvsMap);
-        } else {
-            addDeviceIdToSpecificMap(tenantId, deviceId, classifierOvsMap);
-        }
-    }
-
-    @Override
-    public void removeDeviceIdOfOvsMap(Host host, TenantId tenantId, DeviceId deviceId) {
-        checkNotNull(host, HOST_NOT_NULL);
-        checkNotNull(tenantId, TENANTID_NOT_NULL);
-        checkNotNull(deviceId, DEVICEID_NOT_NULL);
-        if (isLastSFHostOfTenant(host, deviceId, tenantId)) {
-            removeDeviceIdToSpecificMap(tenantId, deviceId, sffOvsMap);
-        }
-        if (isLastClassifierHostOfTenant(host, deviceId, tenantId)) {
-            removeDeviceIdToSpecificMap(tenantId, deviceId, classifierOvsMap);
-        }
-    }
-
-    /**
-     * Checks whether the last Service Function host of a specific tenant in
-     * this device.
-     *
-     * @param host the host on device
-     * @param deviceId the device identifier
-     * @param tenantId the tenant identifier
-     * @return true or false
-     */
-    private boolean isLastSFHostOfTenant(Host host, DeviceId deviceId,
-                                         TenantId tenantId) {
-        Set<Host> hostSet = hostService.getConnectedHosts(deviceId);
-        if (hostSet != null) {
-            for (Host h : hostSet) {
-                String ifaceId = h.annotations().value(IFACEID);
-                if (ifaceId != null) {
-                    VirtualPortId hPortId = VirtualPortId.portId(ifaceId);
-                    if (virtualPortService.getPort(hPortId).tenantId().tenantId()
-                            .equals(tenantId.tenantId())
-                            && isServiceFunction(hPortId)) {
-                        if (!h.equals(host)) {
-                            return false;
-                        }
-                    }
-                }
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Checks whether the last Classifier host of a specific tenant in this
-     * device.
-     *
-     * @param host the host on device
-     * @param deviceId the device identifier
-     * @param tenantId the tenant identifier
-     * @return true or false
-     */
-    private boolean isLastClassifierHostOfTenant(Host host, DeviceId deviceId,
-                                                 TenantId tenantId) {
-        Set<Host> hostSet = hostService.getConnectedHosts(deviceId);
-        if (hostSet != null) {
-            for (Host h : hostSet) {
-                String ifaceId = h.annotations().value(IFACEID);
-                if (ifaceId != null) {
-                    VirtualPortId hPortId = VirtualPortId.portId(ifaceId);
-                    if (virtualPortService.getPort(hPortId).tenantId().tenantId()
-                            .equals(tenantId.tenantId())
-                            && !isServiceFunction(hPortId)) {
-                        if (!h.equals(host)) {
-                            return false;
-                        }
-                    }
-                }
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Adds specify Device identifier to OvsMap.
-     *
-     * @param tenantId the tenant identifier
-     * @param deviceId the device identifier
-     * @param ovsMap the instance of map to store device identifier
-     */
-    private void addDeviceIdToSpecificMap(TenantId tenantId,
-                                     DeviceId deviceId,
-                                     EventuallyConsistentMap<TenantId, Set<DeviceId>> ovsMap) {
-        if (ovsMap.containsKey(tenantId)) {
-            Set<DeviceId> deviceIdSet = ovsMap.get(tenantId);
-            deviceIdSet.add(deviceId);
-            ovsMap.put(tenantId, deviceIdSet);
-        } else {
-            Set<DeviceId> deviceIdSet = new HashSet<>();
-            deviceIdSet.add(deviceId);
-            ovsMap.put(tenantId, deviceIdSet);
-        }
-    }
-
-    /**
-     * Removes specify Device identifier from OvsMap.
-     *
-     * @param tenantId the tenant identifier
-     * @param deviceId the device identifier
-     * @param ovsMap the instance of map to store device identifier
-     */
-    private void removeDeviceIdToSpecificMap(TenantId tenantId,
-                                        DeviceId deviceId,
-                                        EventuallyConsistentMap<TenantId, Set<DeviceId>> ovsMap) {
-        Set<DeviceId> deviceIdSet = ovsMap.get(tenantId);
-        if (deviceIdSet != null && deviceIdSet.size() > 1) {
-            deviceIdSet.remove(deviceId);
-            ovsMap.put(tenantId, deviceIdSet);
-        } else {
-            ovsMap.remove(tenantId);
-        }
-    }
-
-    /**
-     * Notifies specify event to all listeners.
-     *
-     * @param event VtnRsc event
-     */
-    private void notifyListeners(VtnRscEvent event) {
-        checkNotNull(event, EVENT_NOT_NULL);
-        post(event);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/impl/package-info.java
deleted file mode 100644
index 687deec..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of the VtnRsc service.
- */
-package org.onosproject.vtnrsc.service.impl;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/package-info.java
deleted file mode 100644
index f7325ae..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service for interacting with the inventory of Vtn resource.
- */
-package org.onosproject.vtnrsc.service;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/SubnetService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/SubnetService.java
deleted file mode 100644
index 047b244..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/SubnetService.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.subnet;
-
-import org.onosproject.vtnrsc.Subnet;
-import org.onosproject.vtnrsc.SubnetId;
-
-
-/**
- * Service for interacting with the inventory of subnets.
- */
-public interface SubnetService {
-    /**
-     * Returns the subnet with the specified identifier.
-     *
-     * @param subnetId subnet identifier
-     * @return true or false
-     */
-    boolean exists(SubnetId subnetId);
-    /**
-     * Returns a collection of the currently known subnets.
-     *
-     * @return iterable collection of subnets
-     */
-    Iterable<Subnet> getSubnets();
-
-    /**
-     * Returns the subnet with the specified identifier.
-     *
-     * @param subnetId subnet identifier
-     * @return subnet or null if one with the given identifier is not known
-     */
-    Subnet getSubnet(SubnetId subnetId);
-    /**
-     * Creates new subnets.
-     *
-     * @param subnets the iterable collection of subnets
-     * @return true  if the identifier subnet has been created right
-     */
-    boolean createSubnets(Iterable<Subnet> subnets);
-
-    /**
-     * Updates existing subnets.
-     *
-     * @param subnets the iterable collection of subnets
-     * @return true if all subnets were updated successfully
-     */
-    boolean updateSubnets(Iterable<Subnet> subnets);
-
-    /**
-     * Administratively removes the specified subnets from the store.
-     *
-     * @param subnetIds the iterable collection of  subnets identifier
-     * @return true if remove identifier subnets successfully
-     */
-    boolean removeSubnets(Iterable<SubnetId> subnetIds);
-
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/impl/SubnetManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/impl/SubnetManager.java
deleted file mode 100644
index 5d13cb1..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/impl/SubnetManager.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.subnet.impl;
-
-import org.onlab.packet.IpAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.Serializer;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.vtnrsc.AllocationPool;
-import org.onosproject.vtnrsc.DefaultAllocationPool;
-import org.onosproject.vtnrsc.DefaultHostRoute;
-import org.onosproject.vtnrsc.DefaultSubnet;
-import org.onosproject.vtnrsc.HostRoute;
-import org.onosproject.vtnrsc.Subnet;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.subnet.SubnetService;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Map;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provides implementation of the Subnet service.
- */
-@Component(immediate = true, service = SubnetService.class)
-public class SubnetManager implements SubnetService {
-
-    private static final String SUBNET_ID_NULL = "Subnet ID cannot be null";
-    private static final String SUBNET_NOT_NULL = "Subnet cannot be null";
-    private static final String SUBNET = "vtn-subnet-store";
-    private static final String VTNRSC_APP = "org.onosproject.vtnrsc";
-
-
-    private final Logger log = getLogger(getClass());
-
-    protected Map<SubnetId, Subnet> subnetStore;
-    protected ApplicationId appId;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TenantNetworkService tenantNetworkService;
-
-    @Activate
-    public void activate() {
-
-        appId = coreService.registerApplication(VTNRSC_APP);
-
-        subnetStore = storageService.<SubnetId, Subnet>consistentMapBuilder()
-                .withName(SUBNET)
-                .withApplicationId(appId)
-                .withPurgeOnUninstall()
-                .withSerializer(Serializer.using(Arrays.asList(KryoNamespaces.API),
-                                                 Subnet.class,
-                                                 SubnetId.class,
-                                                 TenantNetworkId.class,
-                                                 TenantId.class,
-                                                 HostRoute.class,
-                                                 DefaultHostRoute.class,
-                                                 Subnet.Mode.class,
-                                                 AllocationPool.class,
-                                                 DefaultAllocationPool.class,
-                                                 DefaultSubnet.class,
-                                                 IpAddress.Version.class))
-                .build().asJavaMap();
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        log.info("Stopped");
-    }
-
-    @Override
-    public Iterable<Subnet> getSubnets() {
-        return Collections.unmodifiableCollection(subnetStore.values());
-    }
-
-    @Override
-    public Subnet getSubnet(SubnetId subnetId) {
-        checkNotNull(subnetId, SUBNET_ID_NULL);
-        return subnetStore.get(subnetId);
-    }
-
-    @Override
-    public boolean exists(SubnetId subnetId) {
-        checkNotNull(subnetId, SUBNET_ID_NULL);
-        return subnetStore.containsKey(subnetId);
-    }
-
-    @Override
-    public boolean createSubnets(Iterable<Subnet> subnets) {
-        checkNotNull(subnets, SUBNET_NOT_NULL);
-        for (Subnet subnet : subnets) {
-            if (!tenantNetworkService.exists(subnet.networkId())) {
-                log.debug("The network identifier that the subnet {} belong to is not exist",
-                          subnet.networkId().toString(), subnet.id().toString());
-                return false;
-            }
-            subnetStore.put(subnet.id(), subnet);
-            if (!subnetStore.containsKey(subnet.id())) {
-                log.debug("The identified subnet whose identifier is {}  create failed",
-                          subnet.id().toString());
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updateSubnets(Iterable<Subnet> subnets) {
-        checkNotNull(subnets, SUBNET_NOT_NULL);
-        for (Subnet subnet : subnets) {
-            if (!subnetStore.containsKey(subnet.id())) {
-                log.debug("The subnet is not exist whose identifier is {}",
-                          subnet.id().toString());
-                return false;
-            }
-
-            subnetStore.put(subnet.id(), subnet);
-
-            if (!subnet.equals(subnetStore.get(subnet.id()))) {
-                log.debug("The subnet is updated failed whose identifier is {}",
-                          subnet.id().toString());
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removeSubnets(Iterable<SubnetId> subnetIds) {
-        checkNotNull(subnetIds, SUBNET_ID_NULL);
-        for (SubnetId subnetId : subnetIds) {
-             subnetStore.remove(subnetId);
-            if (subnetStore.containsKey(subnetId)) {
-                log.debug("The subnet created is failed whose identifier is {}",
-                          subnetId.toString());
-                return false;
-            }
-        }
-        return true;
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/impl/package-info.java
deleted file mode 100644
index cff1593..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of the Subnet service.
- */
-package org.onosproject.vtnrsc.subnet.impl;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/package-info.java
deleted file mode 100644
index 26c27ff..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service for interacting with the inventory of subnets.
- */
-package org.onosproject.vtnrsc.subnet;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/TenantNetworkService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/TenantNetworkService.java
deleted file mode 100644
index 296c0e8..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/TenantNetworkService.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.tenantnetwork;
-
-import org.onosproject.vtnrsc.TenantNetwork;
-import org.onosproject.vtnrsc.TenantNetworkId;
-
-/**
- * Service for interacting with the inventory of tenantNetwork.
- */
-public interface TenantNetworkService {
-
-    /**
-     * Returns if the tenantNetwork is existed.
-     *
-     * @param networkId tenantNetwork identifier
-     * @return true or false if one with the given identifier exists.
-     */
-    boolean exists(TenantNetworkId networkId);
-
-    /**
-     * Returns the number of tenantNetwork known to the system.
-     *
-     * @return number of tenantNetwork.
-     */
-    int getNetworkCount();
-
-    /**
-     * Returns an iterable collection of the currently known tenantNetwork.
-     *
-     * @return collection of tenantNetwork.
-     */
-    Iterable<TenantNetwork> getNetworks();
-
-    /**
-     * Returns the tenantNetwork with the identifier.
-     *
-     * @param networkId TenantNetwork identifier
-     * @return TenantNetwork or null if one with the given identifier is not
-     *         known.
-     */
-    TenantNetwork getNetwork(TenantNetworkId networkId);
-
-    /**
-     * Creates tenantNetworks by networks.
-     *
-     * @param networks the collection of tenantNetworks
-     * @return true if all given identifiers created successfully.
-     */
-    boolean createNetworks(Iterable<TenantNetwork> networks);
-
-    /**
-     * Updates tenantNetworks by tenantNetworks.
-     *
-     * @param networks the collection of tenantNetworks
-     * @return true if all given identifiers updated successfully.
-     */
-    boolean updateNetworks(Iterable<TenantNetwork> networks);
-
-    /**
-     * Deletes tenantNetwork by tenantNetworkIds.
-     *
-     * @param networksIds the collection of tenantNetworkIds
-     * @return true if the specified tenantNetworks deleted successfully.
-     */
-    boolean removeNetworks(Iterable<TenantNetworkId> networksIds);
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/impl/TenantNetworkManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/impl/TenantNetworkManager.java
deleted file mode 100644
index 753e38a..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/impl/TenantNetworkManager.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.tenantnetwork.impl;
-
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.Serializer;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.vtnrsc.DefaultTenantNetwork;
-import org.onosproject.vtnrsc.PhysicalNetwork;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetwork;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Map;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provides implementation of the tenantNetworkService.
- */
-@Component(immediate = true, service = TenantNetworkService.class)
-public class TenantNetworkManager implements TenantNetworkService {
-
-    private static final String NETWORK_ID_NULL = "Network ID cannot be null";
-    private static final String NETWORK_NOT_NULL = "Network ID cannot be null";
-    private static final String TENANTNETWORK = "vtn-tenant-network-store";
-    private static final String VTNRSC_APP = "org.onosproject.vtnrsc";
-
-    protected Map<TenantNetworkId, TenantNetwork> networkIdAsKeyStore;
-    protected ApplicationId appId;
-
-    private final Logger log = getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-
-    @Activate
-    public void activate() {
-
-        appId = coreService.registerApplication(VTNRSC_APP);
-
-        networkIdAsKeyStore = storageService.<TenantNetworkId, TenantNetwork>consistentMapBuilder()
-                .withName(TENANTNETWORK)
-                .withApplicationId(appId)
-                .withPurgeOnUninstall()
-                .withSerializer(Serializer.using(Arrays.asList(KryoNamespaces.API),
-                                                 TenantNetworkId.class,
-                                                 DefaultTenantNetwork.class,
-                                                 TenantNetwork.State.class,
-                                                 TenantId.class,
-                                                 TenantNetwork.Type.class,
-                                                 PhysicalNetwork.class,
-                                                 SegmentationId.class))
-                .build().asJavaMap();
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        log.info("Stopped");
-    }
-
-    @Override
-    public boolean exists(TenantNetworkId networkId) {
-        checkNotNull(networkId, NETWORK_ID_NULL);
-        return networkIdAsKeyStore.containsKey(networkId);
-    }
-
-    @Override
-    public int getNetworkCount() {
-        return networkIdAsKeyStore.size();
-    }
-
-    @Override
-    public Iterable<TenantNetwork> getNetworks() {
-        return Collections.unmodifiableCollection(networkIdAsKeyStore.values());
-    }
-
-    @Override
-    public TenantNetwork getNetwork(TenantNetworkId networkId) {
-        checkNotNull(networkId, NETWORK_ID_NULL);
-        return networkIdAsKeyStore.get(networkId);
-    }
-
-    @Override
-    public boolean createNetworks(Iterable<TenantNetwork> networks) {
-        checkNotNull(networks, NETWORK_NOT_NULL);
-        for (TenantNetwork network : networks) {
-            networkIdAsKeyStore.put(network.id(), network);
-            if (!networkIdAsKeyStore.containsKey(network.id())) {
-                log.debug("The tenantNetwork is created failed which identifier was {}", network.id()
-                        .toString());
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updateNetworks(Iterable<TenantNetwork> networks) {
-        checkNotNull(networks, NETWORK_NOT_NULL);
-        for (TenantNetwork network : networks) {
-            if (!networkIdAsKeyStore.containsKey(network.id())) {
-                log.debug("The tenantNetwork is not exist whose identifier was {} ",
-                          network.id().toString());
-                return false;
-            }
-
-            networkIdAsKeyStore.put(network.id(), network);
-
-            if (!network.equals(networkIdAsKeyStore.get(network.id()))) {
-                log.debug("The tenantNetwork is updated failed whose identifier was {} ",
-                          network.id().toString());
-                return false;
-            }
-
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removeNetworks(Iterable<TenantNetworkId> networkIds) {
-        checkNotNull(networkIds, NETWORK_NOT_NULL);
-        for (TenantNetworkId networkId : networkIds) {
-            networkIdAsKeyStore.remove(networkId);
-            if (networkIdAsKeyStore.containsKey(networkId)) {
-                log.debug("The tenantNetwork is removed failed whose identifier was {}",
-                          networkId.toString());
-                return false;
-            }
-        }
-        return true;
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/impl/package-info.java
deleted file mode 100644
index c243f26..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of service for interacting with the inventory of tenant networks.
- */
-package org.onosproject.vtnrsc.tenantnetwork.impl;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/package-info.java
deleted file mode 100644
index a99d3cc..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service for interacting with the inventory of tenant networks.
- */
-package org.onosproject.vtnrsc.tenantnetwork;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortEvent.java
deleted file mode 100644
index e991bf8..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortEvent.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnrsc.virtualport;
-
-import org.onosproject.event.AbstractEvent;
-import org.onosproject.vtnrsc.VirtualPort;
-
-/**
- * Describes virtual port event.
- */
-public class VirtualPortEvent extends AbstractEvent<VirtualPortEvent.Type, VirtualPort> {
-    /**
-     * Type of virtual port events.
-     */
-    public enum Type {
-        /**
-         * Signifies that virtual port has been created.
-         */
-        VIRTUAL_PORT_PUT,
-        /**
-         * Signifies that virtual port has been deleted.
-         */
-        VIRTUAL_PORT_DELETE,
-        /**
-         * Signifies that virtual port has been updated.
-         */
-        VIRTUAL_PORT_UPDATE
-    }
-
-    /**
-     * Creates an event of a given type and for the specified virtual port.
-     *
-     * @param type virtual port event type
-     * @param virtualPort virtual port subject
-     */
-    public VirtualPortEvent(Type type, VirtualPort virtualPort) {
-        super(type, virtualPort);
-    }
-
-    /**
-     * Creates an event of a given type and for the specified virtual port.
-     *
-     * @param type virtual port event type
-     * @param virtualPort virtual port subject
-     * @param time occurrence time
-     */
-    public VirtualPortEvent(Type type, VirtualPort virtualPort, long time) {
-        super(type, virtualPort, time);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortListener.java
deleted file mode 100644
index cc689cf..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnrsc.virtualport;
-
-import org.onosproject.event.EventListener;
-
-/**
- * Entity capable of virtual port related events.
- */
-public interface VirtualPortListener extends EventListener<VirtualPortEvent> {
-
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortService.java
deleted file mode 100644
index 8677c02..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortService.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.virtualport;
-
-import java.util.Collection;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.event.ListenerService;
-import org.onosproject.net.DeviceId;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-
-/**
- * Service for interacting with the inventory of virtualPort.
- */
-public interface VirtualPortService extends ListenerService<VirtualPortEvent, VirtualPortListener> {
-    /**
-     * Returns if the virtualPort is existed.
-     *
-     * @param virtualPortId virtualPort identifier
-     * @return true or false if one with the given identifier is not existed.
-     */
-    boolean exists(VirtualPortId virtualPortId);
-
-    /**
-     * Returns the virtualPort with the identifier.
-     *
-     * @param virtualPortId virtualPort ID
-     * @return VirtualPort or null if one with the given ID is not know.
-     */
-    VirtualPort getPort(VirtualPortId virtualPortId);
-
-    /**
-     * Returns the virtualPort associated with the fixedIP.
-     *
-     * @param fixedIP the fixedIP identifier
-     * @return virtualPort.
-     */
-    VirtualPort getPort(FixedIp fixedIP);
-
-    /**
-     * Returns the virtualPort associated with the mac address.
-     *
-     * @param mac the mac address
-     * @return virtualPort.
-     */
-    VirtualPort getPort(MacAddress mac);
-
-    /**
-     * Returns the virtualPort associated with the networkId and ip.
-     *
-     * @param networkId   the TenantNetworkId identifier
-     * @param ip   the ip identifier
-     * @return virtualPort.
-     */
-    VirtualPort getPort(TenantNetworkId networkId, IpAddress ip);
-
-    /**
-     * Returns the collection of the currently known virtualPort.
-     * @return collection of VirtualPort.
-     */
-    Collection<VirtualPort> getPorts();
-
-    /**
-     * Returns the collection of the virtualPorts associated with the networkId.
-     *
-     * @param networkId  the network identifer
-     * @return collection of virtualPort.
-     */
-    Collection<VirtualPort> getPorts(TenantNetworkId networkId);
-
-    /**
-     * Returns the collection of the virtualPorts associated with the tenantId.
-     *
-     * @param tenantId   the tenant identifier
-     * @return collection of virtualPorts.
-     */
-    Collection<VirtualPort> getPorts(TenantId tenantId);
-
-    /**
-     * Returns the collection of the virtualPorts associated with the deviceId.
-     *
-     * @param deviceId   the device identifier
-     * @return collection of virtualPort.
-     */
-    Collection<VirtualPort> getPorts(DeviceId deviceId);
-
-    /**
-     * Creates virtualPorts by virtualPorts.
-     *
-     * @param virtualPorts the iterable collection of virtualPorts
-     * @return true if all given identifiers created successfully.
-     */
-    boolean createPorts(Iterable<VirtualPort> virtualPorts);
-
-    /**
-     * Updates virtualPorts by virtualPorts.
-     *
-     * @param virtualPorts the iterable  collection of virtualPorts
-     * @return true if all given identifiers updated successfully.
-     */
-    boolean updatePorts(Iterable<VirtualPort> virtualPorts);
-
-    /**
-     * Deletes virtualPortIds by virtualPortIds.
-     *
-     * @param virtualPortIds the iterable collection of virtualPort identifiers
-     * @return true or false if one with the given identifier to delete is
-     *         successfully.
-     */
-    boolean removePorts(Iterable<VirtualPortId> virtualPortIds);
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java
deleted file mode 100644
index 5206e3f..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.virtualport.impl;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.event.AbstractListenerManager;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Host;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.EventuallyConsistentMapEvent;
-import org.onosproject.store.service.EventuallyConsistentMapListener;
-import org.onosproject.store.service.MultiValuedTimestamp;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.WallClockTimestamp;
-import org.onosproject.vtnrsc.AllowedAddressPair;
-import org.onosproject.vtnrsc.BindingHostId;
-import org.onosproject.vtnrsc.DefaultFloatingIp;
-import org.onosproject.vtnrsc.DefaultVirtualPort;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.FloatingIp;
-import org.onosproject.vtnrsc.FloatingIpId;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.SecurityGroup;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetwork;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.TenantRouter;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-import org.onosproject.vtnrsc.virtualport.VirtualPortEvent;
-import org.onosproject.vtnrsc.virtualport.VirtualPortListener;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.UUID;
-import java.util.stream.Collectors;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Provides implementation of the VirtualPort APIs.
- */
-@Component(immediate = true, service = VirtualPortService.class)
-public class VirtualPortManager extends AbstractListenerManager<VirtualPortEvent, VirtualPortListener>
-implements VirtualPortService {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private static final String VIRTUALPORT = "vtn-virtual-port-store";
-    private static final String VTNRSC_APP = "org.onosproject.vtnrsc";
-
-    private static final String VIRTUALPORT_ID_NULL = "VirtualPort ID cannot be null";
-    private static final String VIRTUALPORT_NOT_NULL = "VirtualPort  cannot be null";
-    private static final String TENANTID_NOT_NULL = "TenantId  cannot be null";
-    private static final String NETWORKID_NOT_NULL = "NetworkId  cannot be null";
-    private static final String DEVICEID_NOT_NULL = "DeviceId  cannot be null";
-    private static final String FIXEDIP_NOT_NULL = "FixedIp  cannot be null";
-    private static final String MAC_NOT_NULL = "Mac address  cannot be null";
-    private static final String IP_NOT_NULL = "Ip  cannot be null";
-    private static final String EVENT_NOT_NULL = "event cannot be null";
-
-    protected EventuallyConsistentMap<VirtualPortId, VirtualPort> vPortStore;
-    protected ApplicationId appId;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TenantNetworkService networkService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    private EventuallyConsistentMapListener<VirtualPortId, VirtualPort> virtualPortListener =
-            new InnerVirtualPortStoreListener();
-
-    @Activate
-    public void activate() {
-
-        appId = coreService.registerApplication(VTNRSC_APP);
-
-        eventDispatcher.addSink(VirtualPortEvent.class, listenerRegistry);
-
-        KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
-                .register(KryoNamespaces.API)
-                .register(MultiValuedTimestamp.class)
-                .register(TenantNetworkId.class)
-                .register(Host.class)
-                .register(TenantNetwork.class)
-                .register(TenantNetworkId.class)
-                .register(TenantId.class)
-                .register(SubnetId.class)
-                .register(VirtualPortId.class)
-                .register(VirtualPort.State.class)
-                .register(AllowedAddressPair.class)
-                .register(FixedIp.class)
-                .register(FloatingIp.class)
-                .register(FloatingIpId.class)
-                .register(FloatingIp.Status.class)
-                .register(UUID.class)
-                .register(DefaultFloatingIp.class)
-                .register(BindingHostId.class)
-                .register(SecurityGroup.class)
-                .register(IpAddress.class)
-                .register(DefaultVirtualPort.class)
-                .register(RouterId.class)
-                .register(TenantRouter.class)
-                .register(VirtualPort.class);
-        vPortStore = storageService
-                .<VirtualPortId, VirtualPort>eventuallyConsistentMapBuilder()
-                .withName(VIRTUALPORT).withSerializer(serializer)
-                .withTimestampProvider((k, v) -> new WallClockTimestamp())
-                .build();
-
-        vPortStore.addListener(virtualPortListener);
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        vPortStore.removeListener(virtualPortListener);
-        vPortStore.destroy();
-        log.info("Stoppped");
-    }
-
-    @Override
-    public boolean exists(VirtualPortId vPortId) {
-        checkNotNull(vPortId, VIRTUALPORT_ID_NULL);
-        return vPortStore.containsKey(vPortId);
-    }
-
-    @Override
-    public VirtualPort getPort(VirtualPortId vPortId) {
-        checkNotNull(vPortId, VIRTUALPORT_ID_NULL);
-        return vPortStore.get(vPortId);
-    }
-
-    @Override
-    public VirtualPort getPort(FixedIp fixedIP) {
-        checkNotNull(fixedIP, FIXEDIP_NOT_NULL);
-        List<VirtualPort> vPorts = new ArrayList<>();
-        vPortStore.values().forEach(p -> {
-            Iterator<FixedIp> fixedIps = p.fixedIps().iterator();
-            while (fixedIps.hasNext()) {
-                if (fixedIps.next().equals(fixedIP)) {
-                    vPorts.add(p);
-                    break;
-                }
-            }
-        });
-        if (vPorts.isEmpty()) {
-            return null;
-        }
-        return vPorts.get(0);
-    }
-
-    @Override
-    public VirtualPort getPort(MacAddress mac) {
-        checkNotNull(mac, MAC_NOT_NULL);
-        List<VirtualPort> vPorts = new ArrayList<>();
-        vPortStore.values().forEach(p -> {
-            if (p.macAddress().equals(mac)) {
-                vPorts.add(p);
-            }
-        });
-        if (vPorts.isEmpty()) {
-            return null;
-        }
-        return vPorts.get(0);
-    }
-
-    @Override
-    public VirtualPort getPort(TenantNetworkId networkId, IpAddress ip) {
-        checkNotNull(networkId, NETWORKID_NOT_NULL);
-        checkNotNull(ip, IP_NOT_NULL);
-        List<VirtualPort> vPorts = new ArrayList<>();
-        vPortStore.values().stream().filter(p -> p.networkId().equals(networkId))
-                .forEach(p -> {
-                    Iterator<FixedIp> fixedIps = p.fixedIps().iterator();
-                    while (fixedIps.hasNext()) {
-                        if (fixedIps.next().ip().equals(ip)) {
-                            vPorts.add(p);
-                            break;
-                        }
-                    }
-                });
-        if (vPorts.isEmpty()) {
-            return null;
-        }
-        return vPorts.get(0);
-    }
-
-    @Override
-    public Collection<VirtualPort> getPorts() {
-        return Collections.unmodifiableCollection(vPortStore.values());
-    }
-
-    @Override
-    public Collection<VirtualPort> getPorts(TenantNetworkId networkId) {
-        checkNotNull(networkId, NETWORKID_NOT_NULL);
-        return vPortStore.values().stream().filter(d -> d.networkId().equals(networkId))
-                .collect(Collectors.toList());
-    }
-
-    @Override
-    public Collection<VirtualPort> getPorts(TenantId tenantId) {
-        checkNotNull(tenantId, TENANTID_NOT_NULL);
-        return vPortStore.values().stream().filter(d -> d.tenantId().equals(tenantId))
-                .collect(Collectors.toList());
-    }
-
-    @Override
-    public Collection<VirtualPort> getPorts(DeviceId deviceId) {
-        checkNotNull(deviceId, DEVICEID_NOT_NULL);
-        return vPortStore.values().stream().filter(d -> d.deviceId().equals(deviceId))
-                .collect(Collectors.toList());
-    }
-
-    @Override
-    public boolean createPorts(Iterable<VirtualPort> vPorts) {
-        checkNotNull(vPorts, VIRTUALPORT_NOT_NULL);
-        for (VirtualPort vPort : vPorts) {
-            log.debug("vPortId is  {} ", vPort.portId().toString());
-            vPortStore.put(vPort.portId(), vPort);
-            if (!vPortStore.containsKey(vPort.portId())) {
-                log.debug("The virtualPort is created failed whose identifier is {} ",
-                          vPort.portId().toString());
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean updatePorts(Iterable<VirtualPort> vPorts) {
-        checkNotNull(vPorts, VIRTUALPORT_NOT_NULL);
-        for (VirtualPort vPort : vPorts) {
-            vPortStore.put(vPort.portId(), vPort);
-            if (!vPortStore.containsKey(vPort.portId())) {
-                log.debug("The virtualPort is not exist whose identifier is {}",
-                          vPort.portId().toString());
-                return false;
-            }
-
-            vPortStore.put(vPort.portId(), vPort);
-
-            if (!vPort.equals(vPortStore.get(vPort.portId()))) {
-                log.debug("The virtualPort is updated failed whose  identifier is {}",
-                          vPort.portId().toString());
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removePorts(Iterable<VirtualPortId> vPortIds) {
-        checkNotNull(vPortIds, VIRTUALPORT_ID_NULL);
-        for (VirtualPortId vPortId : vPortIds) {
-            vPortStore.remove(vPortId);
-            if (vPortStore.containsKey(vPortId)) {
-                log.debug("The virtualPort is removed failed whose identifier is {}",
-                          vPortId.toString());
-                return false;
-            }
-        }
-        return true;
-    }
-
-    private class InnerVirtualPortStoreListener
-    implements
-    EventuallyConsistentMapListener<VirtualPortId, VirtualPort> {
-
-        @Override
-        public void event(EventuallyConsistentMapEvent<VirtualPortId, VirtualPort> event) {
-            checkNotNull(event, EVENT_NOT_NULL);
-            log.info("virtual port event raised");
-            VirtualPort virtualPort = event.value();
-            if (EventuallyConsistentMapEvent.Type.PUT == event.type()) {
-                notifyListeners(new VirtualPortEvent(
-                                                     VirtualPortEvent.Type.VIRTUAL_PORT_PUT,
-                                                     virtualPort));
-            }
-            if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) {
-                notifyListeners(new VirtualPortEvent(
-                                                     VirtualPortEvent.Type.VIRTUAL_PORT_DELETE,
-                                                     virtualPort));
-            }
-        }
-    }
-
-    /**
-     * Notifies specify event to all listeners.
-     *
-     * @param event virtual port event
-     */
-    private void notifyListeners(VirtualPortEvent event) {
-        checkNotNull(event, EVENT_NOT_NULL);
-        post(event);
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/package-info.java
deleted file mode 100644
index 4a4bee7..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of service for interacting with the inventory of virtual ports.
- */
-package org.onosproject.vtnrsc.virtualport.impl;
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/package-info.java
deleted file mode 100644
index 77da017..0000000
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service for interacting with the inventory of virtual ports.
- */
-package org.onosproject.vtnrsc.virtualport;
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/AllowedAddressPairTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/AllowedAddressPairTest.java
deleted file mode 100644
index 19e9a62..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/AllowedAddressPairTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.junit.Test;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for AllowedAddressPair class.
- */
-public class AllowedAddressPairTest {
-
-    final IpAddress ip1 = IpAddress.valueOf("192.168.0.1");
-    final IpAddress ip2 = IpAddress.valueOf("192.168.0.2");
-    final MacAddress mac1 = MacAddress.valueOf("fa:16:3e:76:83:88");
-    final MacAddress mac2 = MacAddress.valueOf("aa:16:3e:76:83:88");
-
-    /**
-     * Checks that the AllowedAddressPair class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(AllowedAddressPair.class);
-    }
-
-    /**
-     * Checks the operation of equals().
-     */
-    @Test
-    public void testEquals() {
-        AllowedAddressPair p1 = AllowedAddressPair
-                .allowedAddressPair(ip1, mac1);
-        AllowedAddressPair p2 = AllowedAddressPair
-                .allowedAddressPair(ip1, mac1);
-        AllowedAddressPair p3 = AllowedAddressPair
-                .allowedAddressPair(ip2, mac2);
-        new EqualsTester().addEqualityGroup(p1, p2).addEqualityGroup(p3)
-                .testEquals();
-    }
-
-    /**
-     * Checks the construction of a AllowedAddressPair object.
-     */
-    @Test
-    public void testConstruction() {
-        AllowedAddressPair allowedAddressPair = AllowedAddressPair
-                .allowedAddressPair(ip1, mac1);
-        assertThat(ip1, is(notNullValue()));
-        assertThat(ip1, is(allowedAddressPair.ip()));
-        assertThat(mac1, is(notNullValue()));
-        assertThat(mac1, is(allowedAddressPair.mac()));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultAllocationPoolTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultAllocationPoolTest.java
deleted file mode 100644
index 422da00..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultAllocationPoolTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.junit.Test;
-import org.onlab.packet.IpAddress;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for DefaultAllocationPool class.
- */
-public class DefaultAllocationPoolTest {
-
-    final IpAddress startIP1 = IpAddress.valueOf("192.168.1.1");
-    final IpAddress startIP2 = IpAddress.valueOf("192.168.1.2");
-    final IpAddress endIP1 = IpAddress.valueOf("192.168.1.1");
-    final IpAddress endIP2 = IpAddress.valueOf("192.168.1.2");
-
-    /**
-     * Checks that the DefaultAllocationPool class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(DefaultAllocationPool.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        AllocationPool pool1 = new DefaultAllocationPool(startIP1, endIP1);
-        AllocationPool pool2 = new DefaultAllocationPool(startIP1, endIP1);
-        AllocationPool pool3 = new DefaultAllocationPool(startIP2, endIP2);
-        new EqualsTester().addEqualityGroup(pool1, pool2)
-                .addEqualityGroup(pool3).testEquals();
-    }
-
-    /**
-     * Checks the construction of a DefaultAllocationPool object.
-     */
-    @Test
-    public void testConstruction() {
-        final AllocationPool apool = new DefaultAllocationPool(startIP1, endIP1);
-        assertThat(startIP1, is(apool.startIp()));
-        assertThat(endIP1, is(apool.endIp()));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultFiveTupleTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultFiveTupleTest.java
deleted file mode 100644
index 3015534..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultFiveTupleTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-import org.junit.Test;
-import org.onlab.packet.IPv4;
-import org.onlab.packet.IpAddress;
-import org.onosproject.net.PortNumber;
-
-import com.google.common.testing.EqualsTester;
-
-/**
- * Unit tests for FiveTuple class.
- */
-public class DefaultFiveTupleTest {
-
-
-    final FiveTuple fiveTuple1 = DefaultFiveTuple.builder().setIpSrc(IpAddress.valueOf("1.1.1.1"))
-            .setIpDst(IpAddress.valueOf("2.2.2.2"))
-            .setPortSrc(PortNumber.portNumber(500))
-            .setPortDst(PortNumber.portNumber(1000))
-            .setProtocol(IPv4.PROTOCOL_TCP)
-            .setTenantId(TenantId.tenantId("aaa"))
-            .build();
-
-    final FiveTuple sameAsFiveTuple1 = DefaultFiveTuple.builder().setIpSrc(IpAddress.valueOf("1.1.1.1"))
-            .setIpDst(IpAddress.valueOf("2.2.2.2"))
-            .setPortSrc(PortNumber.portNumber(500))
-            .setPortDst(PortNumber.portNumber(1000))
-            .setProtocol(IPv4.PROTOCOL_TCP)
-            .setTenantId(TenantId.tenantId("aaa"))
-            .build();
-
-    final FiveTuple fiveTuple2 =  DefaultFiveTuple.builder().setIpSrc(IpAddress.valueOf("3.3.3.3"))
-            .setIpDst(IpAddress.valueOf("4.4.4.4"))
-            .setPortSrc(PortNumber.portNumber(1500))
-            .setPortDst(PortNumber.portNumber(2000))
-            .setProtocol(IPv4.PROTOCOL_UDP)
-            .setTenantId(TenantId.tenantId("bbb"))
-            .build();
-
-    /**
-     * Checks that the FiveTuple class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(DefaultFiveTuple.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        new EqualsTester().addEqualityGroup(fiveTuple1, sameAsFiveTuple1).addEqualityGroup(fiveTuple2)
-        .testEquals();
-    }
-
-    /**
-     * Checks the construction of a FiveTuple object.
-     */
-    @Test
-    public void testConstruction() {
-        final FiveTuple fiveTuple1 = DefaultFiveTuple.builder().setIpSrc(IpAddress.valueOf("1.1.1.1"))
-                .setIpDst(IpAddress.valueOf("2.2.2.2"))
-                .setPortSrc(PortNumber.portNumber(500))
-                .setPortDst(PortNumber.portNumber(1000))
-                .setProtocol(IPv4.PROTOCOL_TCP)
-                .setTenantId(TenantId.tenantId("aaa"))
-                .build();
-
-        assertThat(fiveTuple1, is(notNullValue()));
-        assertThat(fiveTuple1.protocol(), is(IPv4.PROTOCOL_TCP));
-        assertThat(fiveTuple1.ipSrc(), is(IpAddress.valueOf("1.1.1.1")));
-        assertThat(fiveTuple1.ipDst(), is(IpAddress.valueOf("2.2.2.2")));
-        assertThat(fiveTuple1.portSrc(), is(PortNumber.portNumber(500)));
-        assertThat(fiveTuple1.portDst(), is(PortNumber.portNumber(1000)));
-        assertThat(fiveTuple1.tenantId(), is(TenantId.tenantId("aaa")));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultFlowClassifierTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultFlowClassifierTest.java
deleted file mode 100644
index 743c5a4..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultFlowClassifierTest.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.junit.Test;
-import org.onlab.packet.IpPrefix;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for DefaultFlowClassifier class.
- */
-public class DefaultFlowClassifierTest {
-    /**
-     * Checks that the DefaultFlowClassifier class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(DefaultFlowClassifier.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        // Create same two flow classifier objects.
-        final String name = "FlowClassifier1";
-        final String description = "FlowClassifier1";
-        final String ethType = "IPv4";
-        final String protocol = "tcp";
-        final int priority = 65535;
-        final int minSrcPortRange = 5;
-        final int maxSrcPortRange = 10;
-        final int minDstPortRange = 5;
-        final int maxDstPortRange = 10;
-        final FlowClassifierId flowClassifierId = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final TenantId tenantId = TenantId.tenantId("1");
-        final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0");
-        final IpPrefix dstIpPrefix = IpPrefix.valueOf("10.10.10.10/0");
-        final VirtualPortId virtualSrcPort = VirtualPortId.portId("1");
-        final VirtualPortId virtualDstPort = VirtualPortId.portId("2");
-
-        DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder();
-        final FlowClassifier flowClassifier1 = flowClassifierBuilder.setFlowClassifierId(flowClassifierId)
-                .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType)
-                .setProtocol(protocol).setPriority(priority).setMinSrcPortRange(minSrcPortRange)
-                .setMaxSrcPortRange(maxSrcPortRange).setMinDstPortRange(minDstPortRange)
-                .setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix).setDstIpPrefix(dstIpPrefix)
-                .setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build();
-
-        flowClassifierBuilder = new DefaultFlowClassifier.Builder();
-        final FlowClassifier sameAsFlowClassifier1 = flowClassifierBuilder.setFlowClassifierId(flowClassifierId)
-                .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType)
-                .setProtocol(protocol).setPriority(priority).setMinSrcPortRange(minSrcPortRange)
-                .setMaxSrcPortRange(maxSrcPortRange).setMinDstPortRange(minDstPortRange)
-                .setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix).setDstIpPrefix(dstIpPrefix)
-                .setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build();
-
-        // Create different classifier object.
-        final String name2 = "FlowClassifier2";
-        final String description2 = "FlowClassifier2";
-        final String ethType2 = "IPv6";
-        final String protocol2 = "udp";
-        final int priority2 = 50000;
-        final int minSrcPortRange2 = 5;
-        final int maxSrcPortRange2 = 10;
-        final int minDstPortRange2 = 5;
-        final int maxDstPortRange2 = 10;
-        final FlowClassifierId flowClassifierId2 = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final TenantId tenantId2 = TenantId.tenantId("2");
-        final IpPrefix srcIpPrefix2 = IpPrefix.valueOf("0.0.0.0/0");
-        final IpPrefix dstIpPrefix2 = IpPrefix.valueOf("10.10.10.10/0");
-        final VirtualPortId virtualSrcPort2 = VirtualPortId.portId("3");
-        final VirtualPortId virtualDstPort2 = VirtualPortId.portId("4");
-
-        DefaultFlowClassifier.Builder flowClassifierBuilder3 = new DefaultFlowClassifier.Builder();
-        final FlowClassifier flowClassifier2 = flowClassifierBuilder3.setFlowClassifierId(flowClassifierId2)
-                .setTenantId(tenantId2).setName(name2).setDescription(description2).setEtherType(ethType2)
-                .setProtocol(protocol2).setMinSrcPortRange(minSrcPortRange2).setMaxSrcPortRange(maxSrcPortRange2)
-                .setMinDstPortRange(minDstPortRange2).setMaxDstPortRange(maxDstPortRange2).setSrcIpPrefix(srcIpPrefix2)
-                .setDstIpPrefix(dstIpPrefix2).setSrcPort(virtualSrcPort2).setDstPort(virtualDstPort2)
-                .setPriority(priority2).build();
-
-        new EqualsTester().addEqualityGroup(flowClassifier1, sameAsFlowClassifier1).addEqualityGroup(flowClassifier2)
-                .testEquals();
-    }
-
-    /**
-     * Checks the construction of a DefaultFlowClassifier object.
-     */
-    @Test
-    public void testConstruction() {
-        final String name = "FlowClassifier";
-        final String description = "FlowClassifier";
-        final String ethType = "IPv4";
-        final String protocol = "tcp";
-        final int priority = 30000;
-        final int minSrcPortRange = 5;
-        final int maxSrcPortRange = 10;
-        final int minDstPortRange = 5;
-        final int maxDstPortRange = 10;
-        final FlowClassifierId flowClassifierId = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final TenantId tenantId = TenantId.tenantId("1");
-        final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0");
-        final IpPrefix dstIpPrefix = IpPrefix.valueOf("10.10.10.10/0");
-        final VirtualPortId virtualSrcPort = VirtualPortId.portId("1");
-        final VirtualPortId virtualDstPort = VirtualPortId.portId("2");
-
-        DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder();
-        final FlowClassifier flowClassifier = flowClassifierBuilder.setFlowClassifierId(flowClassifierId)
-                .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType)
-                .setProtocol(protocol).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange)
-                .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix)
-                .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort)
-                .setPriority(priority).build();
-
-        assertThat(flowClassifierId, is(flowClassifier.flowClassifierId()));
-        assertThat(tenantId, is(flowClassifier.tenantId()));
-        assertThat(name, is(flowClassifier.name()));
-        assertThat(description, is(flowClassifier.description()));
-        assertThat(ethType, is(flowClassifier.etherType()));
-        assertThat(protocol, is(flowClassifier.protocol()));
-        assertThat(priority, is(flowClassifier.priority()));
-        assertThat(minSrcPortRange, is(flowClassifier.minSrcPortRange()));
-        assertThat(maxSrcPortRange, is(flowClassifier.maxSrcPortRange()));
-        assertThat(minDstPortRange, is(flowClassifier.minDstPortRange()));
-        assertThat(maxDstPortRange, is(flowClassifier.maxDstPortRange()));
-        assertThat(srcIpPrefix, is(flowClassifier.srcIpPrefix()));
-        assertThat(dstIpPrefix, is(flowClassifier.dstIpPrefix()));
-        assertThat(virtualSrcPort, is(flowClassifier.srcPort()));
-        assertThat(virtualDstPort, is(flowClassifier.dstPort()));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultHostRouteTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultHostRouteTest.java
deleted file mode 100644
index 8bfde9c..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultHostRouteTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.junit.Test;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for DefaultHostRoute class.
- */
-public class DefaultHostRouteTest {
-    final IpAddress nexthop1 = IpAddress.valueOf("192.168.1.1");
-    final IpAddress nexthop2 = IpAddress.valueOf("192.168.1.2");
-    final IpPrefix destination1 = IpPrefix.valueOf("1.1.1.1/1");
-    final IpPrefix destination2 = IpPrefix.valueOf("1.1.1.1/2");
-
-    /**
-     * Checks that the DefaultHostRoute class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(DefaultHostRoute.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        HostRoute route1 = new DefaultHostRoute(nexthop1, destination1);
-        HostRoute route2 = new DefaultHostRoute(nexthop1, destination1);
-        HostRoute route3 = new DefaultHostRoute(nexthop2, destination2);
-        new EqualsTester().addEqualityGroup(route1, route2)
-                .addEqualityGroup(route3).testEquals();
-    }
-
-    /**
-     * Checks the construction of a DefaultHostRoute object.
-     */
-    @Test
-    public void testConstruction() {
-        final HostRoute host = new DefaultHostRoute(nexthop1, destination1);
-        assertThat(nexthop1, is(host.nexthop()));
-        assertThat(destination1, is(host.destination()));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultNeutronNetworkTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultNeutronNetworkTest.java
deleted file mode 100644
index 93edd8f..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultNeutronNetworkTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for DefaultNeutronNetwork class.
- */
-public class DefaultNeutronNetworkTest {
-
-    private String networkIdStr1 = "123";
-    private String networkIdStr2 = "234";
-    private String physicalNetworkStr = "1234";
-    private String tenantIdStr = "345";
-    private String segmentationIdStr = "1";
-    private String name = "456";
-
-    /**
-     * Checks that the DefaultNeutronNetwork class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(DefaultTenantNetwork.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquality() {
-        TenantNetworkId networkid1 = TenantNetworkId.networkId(networkIdStr1);
-        TenantNetworkId networkid2 = TenantNetworkId.networkId(networkIdStr2);
-        PhysicalNetwork physicalNetwork = PhysicalNetwork
-                .physicalNetwork(physicalNetworkStr);
-        TenantId tenantId = TenantId.tenantId(tenantIdStr);
-        SegmentationId segmentationID = SegmentationId
-                .segmentationId(segmentationIdStr);
-        TenantNetwork p1 = new DefaultTenantNetwork(networkid1, name, false,
-                                                    TenantNetwork.State.ACTIVE,
-                                                    false, tenantId, false,
-                                                    TenantNetwork.Type.LOCAL,
-                                                    physicalNetwork,
-                                                    segmentationID);
-        TenantNetwork p2 = new DefaultTenantNetwork(networkid1, name, false,
-                                                    TenantNetwork.State.ACTIVE,
-                                                    false, tenantId, false,
-                                                    TenantNetwork.Type.LOCAL,
-                                                    physicalNetwork,
-                                                    segmentationID);
-        TenantNetwork p3 = new DefaultTenantNetwork(networkid2, name, false,
-                                                    TenantNetwork.State.ACTIVE,
-                                                    false, tenantId, false,
-                                                    TenantNetwork.Type.LOCAL,
-                                                    physicalNetwork,
-                                                    segmentationID);
-        new EqualsTester().addEqualityGroup(p1, p2).addEqualityGroup(p3)
-                .testEquals();
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortChainTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortChainTest.java
deleted file mode 100644
index dc1d1ac..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortChainTest.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import org.junit.Test;
-import org.onlab.packet.IPv4;
-import org.onlab.packet.IpAddress;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-
-import com.google.common.collect.Lists;
-import com.google.common.testing.EqualsTester;
-
-/**
- * Unit tests for DefaultPortChain class.
- */
-public class DefaultPortChainTest {
-
-    final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
-    final TenantId tenantId = TenantId.tenantId("1");
-    final String name = "PortChain";
-    final String description = "PortChain";
-    final List<PortPairGroupId> portPairGroups = new LinkedList<PortPairGroupId>();
-    final List<FlowClassifierId> flowClassifiers = new LinkedList<FlowClassifierId>();
-
-    private PortChain getPortChain() {
-
-        portPairGroups.clear();
-        flowClassifiers.clear();
-        // create list of Port Pair Groups.
-        PortPairGroupId portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairGroups.add(portPairGroupId);
-        portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3af");
-        portPairGroups.add(portPairGroupId);
-        // create list of Flow classifiers.
-        FlowClassifierId flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
-        flowClassifiers.add(flowClassifierId);
-        flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af");
-        flowClassifiers.add(flowClassifierId);
-
-        DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder();
-        final PortChain portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name)
-                .setDescription(description).setPortPairGroups(portPairGroups).setFlowClassifiers(flowClassifiers)
-                .build();
-
-        return portChain;
-    }
-
-    /**
-     * Checks that the DefaultPortChain class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(DefaultPortChain.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-
-        // Create same two port chain objects.
-        final PortChain portChain1 = getPortChain();
-        final PortChain samePortChain1 = getPortChain();
-
-        // Create different port chain object.
-        final PortChainId portChainId2 = PortChainId.of("79999999-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final TenantId tenantId2 = TenantId.tenantId("2");
-        final String name2 = "PortChain2";
-        final String description2 = "PortChain2";
-        // create list of Port Pair Groups.
-        final List<PortPairGroupId> portPairGroups2 = new LinkedList<PortPairGroupId>();
-        PortPairGroupId portPairGroupId = PortPairGroupId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairGroups2.add(portPairGroupId);
-        portPairGroupId = PortPairGroupId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3af");
-        portPairGroups2.add(portPairGroupId);
-        // create list of Flow classifiers.
-        final List<FlowClassifierId> flowClassifiers2 = new LinkedList<FlowClassifierId>();
-        FlowClassifierId flowClassifierId = FlowClassifierId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3ae");
-        flowClassifiers2.add(flowClassifierId);
-        flowClassifierId = FlowClassifierId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3af");
-        flowClassifiers2.add(flowClassifierId);
-
-        DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder();
-        final PortChain portChain2 = portChainBuilder.setId(portChainId2).setTenantId(tenantId2).setName(name2)
-                .setDescription(description2).setPortPairGroups(portPairGroups2).setFlowClassifiers(flowClassifiers2)
-                .build();
-
-        new EqualsTester().addEqualityGroup(portChain1, samePortChain1).addEqualityGroup(portChain2).testEquals();
-    }
-
-    /**
-     * Checks the construction of a DefaultPortChain object.
-     */
-    @Test
-    public void testConstruction() {
-
-        final PortChain portChain = getPortChain();
-
-        assertThat(portChainId, is(portChain.portChainId()));
-        assertThat(tenantId, is(portChain.tenantId()));
-        assertThat(name, is(portChain.name()));
-        assertThat(description, is(portChain.description()));
-        assertThat(portPairGroups, is(portChain.portPairGroups()));
-        assertThat(flowClassifiers, is(portChain.flowClassifiers()));
-    }
-
-    /**
-     * Verifies the load balance data structures.
-     */
-    @Test
-    public void testLoadBalanceIdMap() {
-
-        final PortChain portChain = getPortChain();
-
-        final FiveTuple fiveTuple1 = DefaultFiveTuple.builder().setIpSrc(IpAddress.valueOf("1.1.1.1"))
-                .setIpDst(IpAddress.valueOf("2.2.2.2"))
-                .setPortSrc(PortNumber.portNumber(500))
-                .setPortDst(PortNumber.portNumber(1000))
-                .setProtocol(IPv4.PROTOCOL_TCP)
-                .build();
-
-        PortPairId portPairId = PortPairId.of("a4444444-4a56-2a6e-cd3a-9dee4e2ec345");
-
-        final LoadBalanceId id1 = LoadBalanceId.of((byte) 1);
-
-        List<PortPairId> tempPath = Lists.newArrayList();
-        tempPath.add(portPairId);
-
-        portChain.addLoadBalancePath(fiveTuple1, id1, tempPath);
-        Set<FiveTuple> keys = portChain.getLoadBalanceIdMapKeys();
-        List<PortPairId> path = portChain.getLoadBalancePath(fiveTuple1);
-
-        assertThat(portChain.getLoadBalancePath(fiveTuple1), is(path));
-        assertThat(portChain.getLoadBalancePath(id1), is(path));
-        assertThat(portChain.getLoadBalanceId(fiveTuple1), is(id1));
-        assertThat(keys.contains(fiveTuple1), is(true));
-        assertThat(path.contains(portPairId), is(true));
-    }
-
-    /**
-     * Verifies sfc classifiers.
-     */
-    @Test
-    public void testSfcClassifier() {
-        final PortChain portChain = getPortChain();
-
-        final LoadBalanceId id1 = LoadBalanceId.of((byte) 1);
-        List<DeviceId> classifierList = Lists.newArrayList();
-        DeviceId deviceId1 = DeviceId.deviceId("of:000000001");
-        classifierList.add(deviceId1);
-        DeviceId deviceId2 = DeviceId.deviceId("of:000000002");
-        classifierList.add(deviceId2);
-        portChain.addSfcClassifiers(id1, classifierList);
-
-        assertThat(portChain.getSfcClassifiers(id1).contains(deviceId1), is(true));
-    }
-
-    /**
-     * Verifies sfc forwarders.
-     */
-    @Test
-    public void testSfcForwarder() {
-        final PortChain portChain = getPortChain();
-
-        final LoadBalanceId id1 = LoadBalanceId.of((byte) 1);
-        List<DeviceId> forwarderList = Lists.newArrayList();
-        DeviceId deviceId1 = DeviceId.deviceId("of:000000001");
-        forwarderList.add(deviceId1);
-        DeviceId deviceId2 = DeviceId.deviceId("of:000000002");
-        forwarderList.add(deviceId2);
-        portChain.addSfcForwarders(id1, forwarderList);
-
-        assertThat(portChain.getSfcForwarders(id1).contains(deviceId1), is(true));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortPairGroupTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortPairGroupTest.java
deleted file mode 100644
index 305ded3..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortPairGroupTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-/**
- * Unit tests for DefaultPortPairGroup class.
- */
-public class DefaultPortPairGroupTest {
-
-    final PortPairGroupId portPairGroupId = PortPairGroupId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
-    final TenantId tenantId = TenantId.tenantId("1");
-    final String name = "PortPairGroup1";
-    final String description = "PortPairGroup1";
-    final List<PortPairId> portPairList = new LinkedList<PortPairId>();
-
-    private PortPairGroup getPortPairGroup() {
-
-        portPairList.clear();
-        // Create same two port-pair-group objects.
-        PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairList.add(portPairId);
-        portPairId = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairList.add(portPairId);
-
-        DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder();
-        PortPairGroup portPairGroup = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId)
-                .setName(name).setDescription(description).setPortPairs(portPairList).build();
-
-        return portPairGroup;
-
-    }
-
-    /**
-     * Checks that the DefaultPortPairGroup class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(DefaultPortPairGroup.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-
-        final PortPairGroup portPairGroup1 = getPortPairGroup();
-
-        DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder();
-        final PortPairGroup samePortPairGroup1 = getPortPairGroup();
-
-        // Create different port-pair-group object.
-        final PortPairGroupId portPairGroupId2 = PortPairGroupId.of("79999999-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final TenantId tenantId2 = TenantId.tenantId("2");
-        final String name2 = "PortPairGroup2";
-        final String description2 = "PortPairGroup2";
-        // create port-pair-id list
-        final List<PortPairId> portPairList2 = new LinkedList<PortPairId>();
-        PortPairId portPairId = PortPairId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairList2.add(portPairId);
-        portPairId = PortPairId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairList2.add(portPairId);
-
-        portPairGroupBuilder = new DefaultPortPairGroup.Builder();
-        final PortPairGroup portPairGroup2 = portPairGroupBuilder.setId(portPairGroupId2).setTenantId(tenantId2)
-                .setName(name2).setDescription(description2).setPortPairs(portPairList2).build();
-
-        new EqualsTester().addEqualityGroup(portPairGroup1, samePortPairGroup1).addEqualityGroup(portPairGroup2)
-        .testEquals();
-    }
-
-    /**
-     * Checks the construction of a DefaultPortPairGroup object.
-     */
-    @Test
-    public void testConstruction() {
-
-        final PortPairGroup portPairGroup = getPortPairGroup();
-
-        assertThat(portPairGroupId, is(portPairGroup.portPairGroupId()));
-        assertThat(tenantId, is(portPairGroup.tenantId()));
-        assertThat(name, is(portPairGroup.name()));
-        assertThat(description, is(portPairGroup.description()));
-        assertThat(portPairList, is(portPairGroup.portPairs()));
-    }
-
-    /**
-     * Checks the port pair load map.
-     */
-    @Test
-    public void testPortPairLod() {
-
-        PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final PortPairGroup portPairGroup = getPortPairGroup();
-        int load1 = portPairGroup.getLoad(portPairId);
-        portPairGroup.addLoad(portPairId);
-        int load2 = portPairGroup.getLoad(portPairId);
-
-        assertThat((load1 + 1), is(load2));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortPairTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortPairTest.java
deleted file mode 100644
index 57855f1..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortPairTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for DefaultPortPair class.
- */
-public class DefaultPortPairTest {
-    /**
-     * Checks that the DefaultPortPair class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(DefaultPortPair.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        // Create same two port pair objects.
-        final PortPairId portPairId = PortPairId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final TenantId tenantId = TenantId.tenantId("1");
-        final String name = "PortPair1";
-        final String description = "PortPair1";
-        final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1";
-        final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345";
-
-        DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder();
-        final PortPair portPair1 = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name)
-                .setDescription(description).setIngress(ingress).setEgress(egress).build();
-
-        portPairBuilder = new DefaultPortPair.Builder();
-        final PortPair samePortPair1 = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name)
-                .setDescription(description).setIngress(ingress).setEgress(egress).build();
-
-        // Create different port pair object.
-        final PortPairId portPairId2 = PortPairId.of("79999999-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final TenantId tenantId2 = TenantId.tenantId("2");
-        final String name2 = "PortPair2";
-        final String description2 = "PortPair2";
-        final String ingress2 = "d5555555-24fc-4fae-af4b-321c5e2eb3d1";
-        final String egress2 = "a6666666-4a56-2a6e-cd3a-9dee4e2ec345";
-
-        portPairBuilder = new DefaultPortPair.Builder();
-        final PortPair portPair2 = portPairBuilder.setId(portPairId2).setTenantId(tenantId2).setName(name2)
-                .setDescription(description2).setIngress(ingress2).setEgress(egress2).build();
-
-        new EqualsTester().addEqualityGroup(portPair1, samePortPair1).addEqualityGroup(portPair2).testEquals();
-    }
-
-    /**
-     * Checks the construction of a DefaultPortPair object.
-     */
-    @Test
-    public void testConstruction() {
-        final PortPairId portPairId = PortPairId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
-        final TenantId tenantId = TenantId.tenantId("1");
-        final String name = "PortPair";
-        final String description = "PortPair";
-        final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1";
-        final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345";
-
-        DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder();
-        final PortPair portPair = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name)
-                .setDescription(description).setIngress(ingress).setEgress(egress).build();
-
-        assertThat(portPairId, is(portPair.portPairId()));
-        assertThat(tenantId, is(portPair.tenantId()));
-        assertThat(name, is(portPair.name()));
-        assertThat(description, is(portPair.description()));
-        assertThat(ingress, is(portPair.ingress()));
-        assertThat(egress, is(portPair.egress()));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultVirtualPortTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultVirtualPortTest.java
deleted file mode 100644
index 77f5be3..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultVirtualPortTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import java.util.Map;
-import java.util.Set;
-
-import org.junit.Test;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.DeviceId;
-
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-import com.google.common.testing.EqualsTester;
-
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for DefaultVirtualPort class.
- */
-public class DefaultVirtualPortTest {
-
-    private Set<FixedIp> fixedIps;
-    private Map<String, String> propertyMap;
-    private Set<AllowedAddressPair> allowedAddressPairs;
-    private Set<SecurityGroup> securityGroups;
-    private VirtualPortId id1;
-    private VirtualPortId id2;
-    private String macAddressStr = "fa:12:3e:56:ee:a2";
-    private String ipAddress = "10.1.1.1";
-    private String deviceStr = "of:000000000000001";
-    private String tenantIdStr = "123";
-    private String portId1 = "1241";
-    private String portId2 = "1242";
-    private String tenantNetworkId = "1234567";
-    private String subnet = "1212";
-    private String hostIdStr = "fa:e2:3e:56:ee:a2";
-
-    private void initVirtualPortId() {
-        id1 = VirtualPortId.portId(portId1);
-        id2 = VirtualPortId.portId(portId2);
-    }
-
-    private void initFixedIpSet() {
-        FixedIp fixedIp = FixedIp.fixedIp(SubnetId.subnetId(subnet),
-                                          IpAddress.valueOf(ipAddress));
-        fixedIps = Sets.newHashSet();
-        fixedIps.add(fixedIp);
-    }
-
-    private void initPropertyMap() {
-        String deviceOwner = "james";
-        propertyMap = Maps.newHashMap();
-        propertyMap.putIfAbsent("deviceOwner", deviceOwner);
-    }
-
-    private void initAddressPairSet() {
-        allowedAddressPairs = Sets.newHashSet();
-        AllowedAddressPair allowedAddressPair = AllowedAddressPair
-                .allowedAddressPair(IpAddress.valueOf(ipAddress),
-                                    MacAddress.valueOf(macAddressStr));
-        allowedAddressPairs.add(allowedAddressPair);
-    }
-
-    private void initSecurityGroupSet() {
-        securityGroups = Sets.newHashSet();
-    }
-
-    /**
-     * Checks that the DefaultVirtualPort class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(SecurityGroup.class);
-    }
-
-    /**
-     * Checks the operation of equals().
-     */
-    @Test
-    public void testEquals() {
-        initVirtualPortId();
-        initFixedIpSet();
-        initPropertyMap();
-        initAddressPairSet();
-        initSecurityGroupSet();
-        TenantNetworkId networkId = TenantNetworkId.networkId(tenantNetworkId);
-        MacAddress macAddress = MacAddress.valueOf(macAddressStr);
-        TenantId tenantId = TenantId.tenantId(tenantIdStr);
-        DeviceId deviceId = DeviceId.deviceId(deviceStr);
-        BindingHostId bindingHostId = BindingHostId.bindingHostId(hostIdStr);
-
-        VirtualPort d1 = new DefaultVirtualPort(id1, networkId, true,
-                                                propertyMap,
-                                                VirtualPort.State.ACTIVE,
-                                                macAddress, tenantId, deviceId,
-                                                fixedIps, bindingHostId,
-                                                allowedAddressPairs,
-                                                securityGroups);
-        VirtualPort d2 = new DefaultVirtualPort(id1, networkId, true,
-                                                propertyMap,
-                                                VirtualPort.State.ACTIVE,
-                                                macAddress, tenantId, deviceId,
-                                                fixedIps, bindingHostId,
-                                                allowedAddressPairs,
-                                                securityGroups);
-        VirtualPort d3 = new DefaultVirtualPort(id2, networkId, true,
-                                                propertyMap,
-                                                VirtualPort.State.ACTIVE,
-                                                macAddress, tenantId, deviceId,
-                                                fixedIps, bindingHostId,
-                                                allowedAddressPairs,
-                                                securityGroups);
-        new EqualsTester().addEqualityGroup(d1, d2).addEqualityGroup(d3)
-                .testEquals();
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/FixedIpTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/FixedIpTest.java
deleted file mode 100644
index b387afe..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/FixedIpTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.junit.Test;
-import org.onlab.packet.IpAddress;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for FixedIp class.
- */
-public class FixedIpTest {
-
-    final SubnetId subnetId1 = SubnetId.subnetId("lef11-95w-4er-9c9c");
-    final SubnetId subnetId2 = SubnetId.subnetId("lefaa-95w-4er-9c9c");
-    final IpAddress ip1 = IpAddress.valueOf("192.168.0.1");
-    final IpAddress ip2 = IpAddress.valueOf("192.168.1.1");
-
-    /**
-     * Checks that the FixedIp class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(FixedIp.class);
-    }
-
-    /**
-     * Checks the operation of equals().
-     */
-    @Test
-    public void testEquals() {
-        FixedIp fixedIp1 = FixedIp.fixedIp(subnetId1, ip1);
-        FixedIp fixedIp2 = FixedIp.fixedIp(subnetId1, ip1);
-        FixedIp fixedIp3 = FixedIp.fixedIp(subnetId2, ip2);
-        new EqualsTester().addEqualityGroup(fixedIp1, fixedIp2)
-                .addEqualityGroup(fixedIp3).testEquals();
-    }
-
-    /**
-     * Checks the construction of a FixedIp object.
-     */
-    @Test
-    public void testConstruction() {
-        FixedIp fixedIp = FixedIp.fixedIp(subnetId1, ip1);
-        assertThat(ip1, is(notNullValue()));
-        assertThat(ip1, is(fixedIp.ip()));
-        assertThat(subnetId1, is(notNullValue()));
-        assertThat(subnetId1, is(fixedIp.subnetId()));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/FlowClassifierIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/FlowClassifierIdTest.java
deleted file mode 100644
index dd247c2..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/FlowClassifierIdTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import java.util.UUID;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for FlowClassifierId class.
- */
-public class FlowClassifierIdTest {
-
-    final FlowClassifierId flowClassifierId1 = FlowClassifierId
-            .of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
-    final FlowClassifierId sameAsFlowClassifierId1 = FlowClassifierId
-            .of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
-    final FlowClassifierId flowClassifierId2 = FlowClassifierId
-            .of("dace4513-24fc-4fae-af4b-321c5e2eb3d1");
-
-    /**
-     * Checks that the FlowClassifierId class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(FlowClassifierId.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        new EqualsTester().addEqualityGroup(flowClassifierId1, sameAsFlowClassifierId1)
-        .addEqualityGroup(flowClassifierId2).testEquals();
-    }
-
-    /**
-     * Checks the construction of a FlowClassifierId object.
-     */
-    @Test
-    public void testConstruction() {
-        final String flowClassifierIdValue = "dace4513-24fc-4fae-af4b-321c5e2eb3d1";
-        final FlowClassifierId flowClassifierId = FlowClassifierId.of(flowClassifierIdValue);
-        assertThat(flowClassifierId, is(notNullValue()));
-        assertThat(flowClassifierId.value(), is(UUID.fromString(flowClassifierIdValue)));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/LoadBalanceIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/LoadBalanceIdTest.java
deleted file mode 100644
index 55586b81..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/LoadBalanceIdTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-/**
- * Unit tests for LoadBalanceId class.
- */
-public class LoadBalanceIdTest {
-
-    final LoadBalanceId id1 = LoadBalanceId.of((byte) 1);
-    final LoadBalanceId sameAsId1 = LoadBalanceId.of((byte) 1);
-    final LoadBalanceId id2 = LoadBalanceId.of((byte) 2);
-
-    /**
-     * Checks that the LoadBalanceId class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(LoadBalanceId.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        new EqualsTester().addEqualityGroup(id1, sameAsId1).addEqualityGroup(id2)
-        .testEquals();
-    }
-
-    /**
-     * Checks the construction of a LoadBalanceId object.
-     */
-    @Test
-    public void testConstruction() {
-        final LoadBalanceId id = LoadBalanceId.of((byte) 1);
-        assertThat(id, is(notNullValue()));
-        assertThat(id.loadBalanceId(), is((byte) 1));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PhysicalNetworkTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PhysicalNetworkTest.java
deleted file mode 100644
index 2da0776..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PhysicalNetworkTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for PhysicalNetwork class.
- */
-public class PhysicalNetworkTest {
-
-    final PhysicalNetwork physicalNetwork1 = PhysicalNetwork.physicalNetwork("1");
-    final PhysicalNetwork sameAsPhysicalNetwork1 = PhysicalNetwork.physicalNetwork("1");
-    final PhysicalNetwork physicalNetwork2 = PhysicalNetwork.physicalNetwork("2");
-
-    /**
-     * Checks that the PhysicalNetwork class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(PhysicalNetwork.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        new EqualsTester().addEqualityGroup(physicalNetwork1, sameAsPhysicalNetwork1)
-                .addEqualityGroup(physicalNetwork2).testEquals();
-    }
-
-    /**
-     * Checks the construction of a PhysicalNetwork object.
-     */
-    @Test
-    public void testConstruction() {
-        final String physicalNetworkValue = "s";
-        final PhysicalNetwork physicalNetwork = PhysicalNetwork
-                .physicalNetwork(physicalNetworkValue);
-        assertThat(physicalNetwork, is(notNullValue()));
-        assertThat(physicalNetwork.physicalNetwork(), is(physicalNetworkValue));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortChainIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortChainIdTest.java
deleted file mode 100644
index ac6193e..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortChainIdTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import java.util.UUID;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for PortChainId class.
- */
-public class PortChainIdTest {
-
-    final PortChainId portChainId1 = PortChainId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
-    final PortChainId sameAsPortChainId1 = PortChainId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
-    final PortChainId portChainId2 = PortChainId.of("dace4513-24fc-4fae-af4b-321c5e2eb3d1");
-
-    /**
-     * Checks that the PortChainId class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(PortChainId.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        new EqualsTester().addEqualityGroup(portChainId1, sameAsPortChainId1).addEqualityGroup(portChainId2)
-        .testEquals();
-    }
-
-    /**
-     * Checks the construction of a PortChainId object.
-     */
-    @Test
-    public void testConstruction() {
-        final String portChainIdValue = "dace4513-24fc-4fae-af4b-321c5e2eb3d1";
-        final PortChainId portChainId = PortChainId.of(portChainIdValue);
-        assertThat(portChainId, is(notNullValue()));
-        assertThat(portChainId.value(), is(UUID.fromString(portChainIdValue)));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortPairGroupIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortPairGroupIdTest.java
deleted file mode 100644
index b9142c3..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortPairGroupIdTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import java.util.UUID;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for PortPairGroupId class.
- */
-public class PortPairGroupIdTest {
-
-    final PortPairGroupId portPairGroupId1 = PortPairGroupId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
-    final PortPairGroupId sameAsPortPairGroupId1 = PortPairGroupId
-            .of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
-    final PortPairGroupId portPairGroupId2 = PortPairGroupId.of("dace4513-24fc-4fae-af4b-321c5e2eb3d1");
-
-    /**
-     * Checks that the PortPairGroupId class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(PortPairGroupId.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        new EqualsTester().addEqualityGroup(portPairGroupId1, sameAsPortPairGroupId1)
-                .addEqualityGroup(portPairGroupId2).testEquals();
-    }
-
-    /**
-     * Checks the construction of a PortPairGroupId object.
-     */
-    @Test
-    public void testConstruction() {
-        final String portPairGroupIdValue = "dace4513-24fc-4fae-af4b-321c5e2eb3d1";
-        final PortPairGroupId portPairGroupId = PortPairGroupId.of(portPairGroupIdValue);
-        assertThat(portPairGroupId, is(notNullValue()));
-        assertThat(portPairGroupId.value(), is(UUID.fromString(portPairGroupIdValue)));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortPairIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortPairIdTest.java
deleted file mode 100644
index 5af357e..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortPairIdTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import java.util.UUID;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for PortPairId class.
- */
-public class PortPairIdTest {
-
-    final PortPairId portPairId1 = PortPairId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
-    final PortPairId sameAsPortPairId1 = PortPairId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
-    final PortPairId portPairId2 = PortPairId.of("dace4513-24fc-4fae-af4b-321c5e2eb3d1");
-
-    /**
-     * Checks that the PortPairId class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(PortPairId.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        new EqualsTester().addEqualityGroup(portPairId1, sameAsPortPairId1).addEqualityGroup(portPairId2).testEquals();
-    }
-
-    /**
-     * Checks the construction of a PortPairId object.
-     */
-    @Test
-    public void testConstruction() {
-        final String portPairIdValue = "dace4513-24fc-4fae-af4b-321c5e2eb3d1";
-        final PortPairId portPairId = PortPairId.of(portPairIdValue);
-        assertThat(portPairId, is(notNullValue()));
-        assertThat(portPairId.value(), is(UUID.fromString(portPairIdValue)));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/RouterGatewayTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/RouterGatewayTest.java
deleted file mode 100644
index eeec41e..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/RouterGatewayTest.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for RouterGateway class.
- */
-public class RouterGatewayTest {
-    final TenantNetworkId networkId1 = TenantNetworkId.networkId("1");
-    final TenantNetworkId networkId2 = TenantNetworkId.networkId("2");
-    final Set<FixedIp> fixedIpSet1 = new HashSet<>();
-    final Set<FixedIp> fixedIpSet2 = new HashSet<>();
-
-    /**
-     * Checks that the RouterGateway class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(RouterGateway.class);
-    }
-
-    /**
-     * Checks the operation of equals().
-     */
-    @Test
-    public void testEquals() {
-        RouterGateway routerGateway1 = RouterGateway.routerGateway(networkId1,
-                                                                   true,
-                                                                   fixedIpSet1);
-        RouterGateway routerGateway2 = RouterGateway.routerGateway(networkId1,
-                                                                   true,
-                                                                   fixedIpSet1);
-        RouterGateway routerGateway3 = RouterGateway.routerGateway(networkId2,
-                                                                   true,
-                                                                   fixedIpSet2);
-        new EqualsTester().addEqualityGroup(routerGateway1, routerGateway2)
-                .addEqualityGroup(routerGateway3).testEquals();
-    }
-
-    /**
-     * Checks the construction of a RouterGateway object.
-     */
-    @Test
-    public void testConstruction() {
-        RouterGateway routerGateway = RouterGateway.routerGateway(networkId1,
-                                                                  true,
-                                                                  fixedIpSet1);
-        assertThat(fixedIpSet1, is(notNullValue()));
-        assertThat(fixedIpSet1, is(routerGateway.externalFixedIps()));
-        assertThat(networkId1, is(notNullValue()));
-        assertThat(networkId1, is(routerGateway.networkId()));
-        assertThat(routerGateway.enableSnat(), is(true));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/RouterIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/RouterIdTest.java
deleted file mode 100644
index 134577a..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/RouterIdTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for RouterId class.
- */
-public class RouterIdTest {
-    final RouterId routerId1 = RouterId.valueOf("1");
-    final RouterId sameAsRouterId1 = RouterId.valueOf("1");
-    final RouterId routerId2 = RouterId.valueOf("2");
-
-    /**
-     * Checks that the RouterId class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(RouterId.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        new EqualsTester().addEqualityGroup(routerId1, sameAsRouterId1).addEqualityGroup(routerId2)
-                .testEquals();
-    }
-
-    /**
-     * Checks the construction of a RouterId object.
-     */
-    @Test
-    public void testConstruction() {
-        final String routerIdValue = "s";
-        final RouterId routerId = RouterId.valueOf(routerIdValue);
-        assertThat(routerId, is(notNullValue()));
-        assertThat(routerId.routerId(), is(routerIdValue));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SecurityGroupTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SecurityGroupTest.java
deleted file mode 100644
index 324d8bd..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SecurityGroupTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for SecurityGroup class.
- */
-public class SecurityGroupTest {
-
-    final SecurityGroup securityGroup1 = SecurityGroup.securityGroup("1");
-    final SecurityGroup sameAssecurityGroup = SecurityGroup.securityGroup("1");
-    final SecurityGroup securityGroup2 = SecurityGroup.securityGroup("2");
-
-    /**
-     * Checks that the SecurityGroup class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(SecurityGroup.class);
-    }
-
-    /**
-     * Checks the operation of equals().
-     */
-    @Test
-    public void testEquals() {
-        new EqualsTester().addEqualityGroup(securityGroup1, sameAssecurityGroup)
-                .addEqualityGroup(securityGroup2).testEquals();
-    }
-
-    /**
-     * Checks the construction of a SecurityGroup object.
-     */
-    @Test
-    public void testConstruction() {
-        final String securityGroupValue = "1";
-        final SecurityGroup securityGroup = SecurityGroup.securityGroup(securityGroupValue);
-        assertThat(securityGroup, is(notNullValue()));
-        assertThat(securityGroup.securityGroup(), is(securityGroupValue));
-
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SegmentationIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SegmentationIdTest.java
deleted file mode 100644
index 545d1d4..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SegmentationIdTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for SegmentationId class.
- */
-public class SegmentationIdTest {
-
-    final SegmentationId segmentationID1 = SegmentationId.segmentationId("1");
-    final SegmentationId sameAsSegmentationID1 = SegmentationId.segmentationId("1");
-    final SegmentationId segmentationID2 = SegmentationId.segmentationId("2");
-
-    /**
-     * Checks that the SegmentationId class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(SegmentationId.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        new EqualsTester().addEqualityGroup(segmentationID1, sameAsSegmentationID1)
-                .addEqualityGroup(segmentationID2).testEquals();
-    }
-
-    /**
-     * Checks the construction of a segmentationId object.
-     */
-    @Test
-    public void testConstruction() {
-        final String segmentationIdValue = "s";
-        final SegmentationId segmentationId = SegmentationId.segmentationId(segmentationIdValue);
-        assertThat(segmentationId, is(notNullValue()));
-        assertThat(segmentationId.segmentationId(), is(segmentationIdValue));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/ServiceFunctionGroupTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/ServiceFunctionGroupTest.java
deleted file mode 100644
index c34cdee..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/ServiceFunctionGroupTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-/**
- * Unit tests for ServiceFunctionGroup class.
- */
-public class ServiceFunctionGroupTest {
-
-    /**
-     * Checks that the ServiceFunctionGroup class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(ServiceFunctionGroup.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        String name1 = "Firewall";
-        String description1 = "Firewall service function";
-        Map<PortPairId, Integer> portPairLoadMap1 = new ConcurrentHashMap<>();
-        PortPairId portPairId1 = PortPairId.of("a4444444-4a56-2a6e-cd3a-9dee4e2ec345");
-        portPairLoadMap1.put(portPairId1, Integer.valueOf(2));
-        ServiceFunctionGroup sfg1 = new ServiceFunctionGroup(name1, description1, portPairLoadMap1);
-        ServiceFunctionGroup sameAsSfg1 = new ServiceFunctionGroup(name1, description1, portPairLoadMap1);
-
-        String name2 = "Dpi";
-        String description2 = "Dpi service function";
-        Map<PortPairId, Integer> portPairLoadMap2 = new ConcurrentHashMap<>();
-        PortPairId portPairId2 = PortPairId.of("b6666666-4a56-2a6e-cd3a-9dee4e2ec345");
-        portPairLoadMap2.put(portPairId2, Integer.valueOf(3));
-        ServiceFunctionGroup sfg2 = new ServiceFunctionGroup(name2, description2, portPairLoadMap2);
-
-        new EqualsTester().addEqualityGroup(sfg1, sameAsSfg1).addEqualityGroup(sfg2).testEquals();
-    }
-
-    /**
-     * Checks the construction of a ServiceFunctionGroup object.
-     */
-    @Test
-    public void testConstruction() {
-
-        String name = "Firewall";
-        String description = "Firewall service function";
-        Map<PortPairId, Integer> portPairLoadMap = new ConcurrentHashMap<>();
-        PortPairId portPairId = PortPairId.of("a4444444-4a56-2a6e-cd3a-9dee4e2ec345");
-        portPairLoadMap.put(portPairId, Integer.valueOf(2));
-        ServiceFunctionGroup sfg = new ServiceFunctionGroup(name, description, portPairLoadMap);
-
-        assertThat(name, is(sfg.name()));
-        assertThat(description, is(sfg.description()));
-        assertThat(2, is(sfg.portPairLoadMap().get(portPairId)));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SubnetIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SubnetIdTest.java
deleted file mode 100644
index 2c9d6a9..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SubnetIdTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for SubnetId class.
- */
-public class SubnetIdTest {
-
-    final SubnetId subnetId1 = SubnetId.subnetId("1");
-    final SubnetId sameAsSubnetId1 = SubnetId.subnetId("1");
-    final SubnetId subnetId2 = SubnetId.subnetId("2");
-
-    /**
-     * Checks that the SubnetId class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(SubnetId.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        new EqualsTester().addEqualityGroup(subnetId1, sameAsSubnetId1).addEqualityGroup(subnetId2)
-                .testEquals();
-    }
-
-    /**
-     * Checks the construction of a SubnetId object.
-     */
-    @Test
-    public void testConstruction() {
-        final String subnetIdValue = "s";
-        final SubnetId subnetId = SubnetId.subnetId(subnetIdValue);
-        assertThat(subnetId, is(notNullValue()));
-        assertThat(subnetId.subnetId(), is(subnetIdValue));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/TenantIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/TenantIdTest.java
deleted file mode 100644
index 265fe8c..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/TenantIdTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for TenantId class.
- */
-public class TenantIdTest {
-
-    final TenantId tenantId1 = TenantId.tenantId("1");
-    final TenantId sameAsTenantId1 = TenantId.tenantId("1");
-    final TenantId tenantId2 = TenantId.tenantId("2");
-
-    /**
-     * Checks that the TenantId class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(TenantId.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        new EqualsTester().addEqualityGroup(tenantId1, sameAsTenantId1).addEqualityGroup(tenantId2)
-                .testEquals();
-    }
-
-    /**
-     * Checks the construction of a TenantId object.
-     */
-    @Test
-    public void testConstruction() {
-        final String tenantIdValue = "s";
-        final TenantId tenantId = TenantId.tenantId(tenantIdValue);
-        assertThat(tenantId, is(notNullValue()));
-        assertThat(tenantId.tenantId(), is(tenantIdValue));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/TenantNetworkIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/TenantNetworkIdTest.java
deleted file mode 100644
index 3a11824..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/TenantNetworkIdTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for TenantNetworkId class.
- */
-public class TenantNetworkIdTest {
-
-    final TenantNetworkId networkId1 = TenantNetworkId.networkId("1");
-    final TenantNetworkId sameAsnetworkId1 = TenantNetworkId.networkId("1");
-    final TenantNetworkId networkId2 = TenantNetworkId.networkId("2");
-
-    /**
-     * Checks that the TenantNetworkId class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(TenantNetworkId.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        new EqualsTester().addEqualityGroup(networkId1, sameAsnetworkId1)
-                .addEqualityGroup(networkId2).testEquals();
-    }
-
-    /**
-     * Checks the construction of a TenantNetworkId object.
-     */
-    @Test
-    public void testConstruction() {
-        final String networkIdValue = "s";
-        final TenantNetworkId networkId = TenantNetworkId.networkId(networkIdValue);
-        assertThat(networkId, is(notNullValue()));
-        assertThat(networkId.networkId(), is(networkIdValue));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/VirtualPortIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/VirtualPortIdTest.java
deleted file mode 100644
index 303723d..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/VirtualPortIdTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc;
-
-import org.junit.Test;
-
-import com.google.common.testing.EqualsTester;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * Unit tests for VirtualPortId class.
- */
-public class VirtualPortIdTest {
-
-    final VirtualPortId virtualPortId1 = VirtualPortId.portId("1");
-    final VirtualPortId sameAsVirtualPortId1 = VirtualPortId.portId("1");
-    final VirtualPortId virtualPortId2 = VirtualPortId.portId("2");
-
-    /**
-     * Checks that the VirtualPortId class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(VirtualPortId.class);
-    }
-
-    /**
-     * Checks the operation of equals().
-     */
-    @Test
-    public void testEquals() {
-        new EqualsTester().addEqualityGroup(virtualPortId1, sameAsVirtualPortId1)
-                .addEqualityGroup(virtualPortId2).testEquals();
-    }
-
-    /**
-     * Checks the construction of a VirtualPortId object.
-     */
-    @Test
-    public void testConstruction() {
-        final String vPortIdValue = "aaa";
-        final VirtualPortId virtualPortId = VirtualPortId.portId(vPortIdValue);
-        assertThat(virtualPortId, is(notNullValue()));
-        assertThat(virtualPortId.portId(), is(vPortIdValue));
-
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/floatingip/DefaultFloatingIpTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/floatingip/DefaultFloatingIpTest.java
deleted file mode 100644
index 4ae6d9c..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/floatingip/DefaultFloatingIpTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.floatingip;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-import org.junit.Test;
-import org.onlab.packet.IpAddress;
-import org.onosproject.vtnrsc.DefaultFloatingIp;
-import org.onosproject.vtnrsc.FloatingIp;
-import org.onosproject.vtnrsc.FloatingIpId;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPortId;
-
-import com.google.common.testing.EqualsTester;
-
-/**
- * Unit tests for DefaultFloatingIp class.
- */
-public class DefaultFloatingIpTest {
-
-    private String floatingIpIdStr1 = "5fb63824-4d5c-4b85-9f2f-ebb93c9ce3df";
-    private String floatingIpIdStr2 = "fa44f585-fe02-40d3-afe7-d1d7e5782c99";
-    private String floatingIpStr = "10.1.1.2";
-    private String fixedIpStr = "192.168.1.2";
-    private String tenantIdStr = "123";
-    private String tenantNetworkId = "1234567";
-    private String virtualPortId = "1212";
-    private String routerIdStr = "123";
-
-    /**
-     * Checks that the DefaultFloatingIp class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(DefaultFloatingIp.class);
-    }
-
-    /**
-     * Checks the operation of equals().
-     */
-    @Test
-    public void testEquals() {
-        final TenantId tenantId = TenantId.tenantId(tenantIdStr);
-        final TenantNetworkId networkId = TenantNetworkId
-                .networkId(tenantNetworkId);
-        final VirtualPortId portId = VirtualPortId.portId(virtualPortId);
-        final RouterId routerId = RouterId.valueOf(routerIdStr);
-        final FloatingIpId id1 = FloatingIpId.of(floatingIpIdStr1);
-        final FloatingIpId id2 = FloatingIpId.of(floatingIpIdStr2);
-        final IpAddress floatingIpAddress = IpAddress.valueOf(floatingIpStr);
-        final IpAddress fixedIpAddress = IpAddress.valueOf(fixedIpStr);
-
-        FloatingIp fip1 = new DefaultFloatingIp(id1, tenantId, networkId,
-                                                portId, routerId,
-                                                floatingIpAddress,
-                                                fixedIpAddress,
-                                                FloatingIp.Status.ACTIVE);
-        FloatingIp fip2 = new DefaultFloatingIp(id1, tenantId, networkId,
-                                                portId, routerId,
-                                                floatingIpAddress,
-                                                fixedIpAddress,
-                                                FloatingIp.Status.ACTIVE);
-        FloatingIp fip3 = new DefaultFloatingIp(id2, tenantId, networkId,
-                                                portId, routerId,
-                                                floatingIpAddress,
-                                                fixedIpAddress,
-                                                FloatingIp.Status.ACTIVE);
-
-        new EqualsTester().addEqualityGroup(fip1, fip2).addEqualityGroup(fip3)
-                .testEquals();
-    }
-
-    /**
-     * Checks the construction of a DefaultFloatingIp object.
-     */
-    @Test
-    public void testConstruction() {
-        final TenantId tenantId = TenantId.tenantId(tenantIdStr);
-        final TenantNetworkId networkId = TenantNetworkId
-                .networkId(tenantNetworkId);
-        final VirtualPortId portId = VirtualPortId.portId(virtualPortId);
-        final RouterId routerId = RouterId.valueOf(routerIdStr);
-        final FloatingIpId id = FloatingIpId.of(floatingIpIdStr1);
-        final IpAddress floatingIpAddress = IpAddress.valueOf(floatingIpStr);
-        final IpAddress fixedIpAddress = IpAddress.valueOf(fixedIpStr);
-
-        FloatingIp fip = new DefaultFloatingIp(id, tenantId, networkId, portId,
-                                               routerId, floatingIpAddress,
-                                               fixedIpAddress,
-                                               FloatingIp.Status.ACTIVE);
-        assertThat(id, is(notNullValue()));
-        assertThat(id, is(fip.id()));
-        assertThat(tenantId, is(notNullValue()));
-        assertThat(tenantId, is(fip.tenantId()));
-        assertThat(networkId, is(notNullValue()));
-        assertThat(networkId, is(fip.networkId()));
-        assertThat(portId, is(notNullValue()));
-        assertThat(portId, is(fip.portId()));
-        assertThat(routerId, is(notNullValue()));
-        assertThat(routerId, is(fip.routerId()));
-        assertThat(floatingIpAddress, is(notNullValue()));
-        assertThat(floatingIpAddress, is(fip.floatingIp()));
-        assertThat(fixedIpAddress, is(notNullValue()));
-        assertThat(fixedIpAddress, is(fip.fixedIp()));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/floatingip/FloatingIpIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/floatingip/FloatingIpIdTest.java
deleted file mode 100644
index 22510b2..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/floatingip/FloatingIpIdTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.floatingip;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-import org.junit.Test;
-import org.onosproject.vtnrsc.FloatingIpId;
-
-import com.google.common.testing.EqualsTester;
-
-/**
- * Unit tests for FloatingIpId class.
- */
-public class FloatingIpIdTest {
-    private String floatingIpIdStr1 = "5fb63824-4d5c-4b85-9f2f-ebb93c9ce3df";
-    private String floatingIpIdStr2 = "fa44f585-fe02-40d3-afe7-d1d7e5782c99";
-
-    /**
-     * Checks that the FloatingIpId class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(FloatingIpId.class);
-    }
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        FloatingIpId id1 = FloatingIpId.of(floatingIpIdStr1);
-        FloatingIpId id2 = FloatingIpId.of(floatingIpIdStr1);
-        FloatingIpId id3 = FloatingIpId.of(floatingIpIdStr2);
-        new EqualsTester().addEqualityGroup(id1, id2).addEqualityGroup(id3)
-                .testEquals();
-    }
-
-    /**
-     * Checks the construction of a FloatingIpId object.
-     */
-    @Test
-    public void testConstruction() {
-        final FloatingIpId id = FloatingIpId.of(floatingIpIdStr1);
-        assertThat(id, is(notNullValue()));
-        assertThat(id.floatingIpId().toString(), is(floatingIpIdStr1));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManagerTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManagerTest.java
deleted file mode 100644
index dac4758..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManagerTest.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.flowclassifier.impl;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-import org.junit.Test;
-
-import org.onlab.packet.IpPrefix;
-
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.DefaultFlowClassifier;
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.util.VtnStorageServiceTest;
-import org.onosproject.common.event.impl.TestEventDispatcher;
-
-import static org.onosproject.net.NetTestTools.injectEventDispatcher;
-
-/**
- * Unit tests for FlowClassifierManager class.
- */
-public class FlowClassifierManagerTest {
-
-    final String name = "FlowClassifier";
-    final String description = "FlowClassifier";
-    final String ethType = "IPv4";
-    final String protocol = "udp";
-    final int minSrcPortRange = 1024;
-    final int maxSrcPortRange = 5000;
-    final int minDstPortRange = 1024;
-    final int maxDstPortRange = 5000;
-    final FlowClassifierId flowClassifierId = FlowClassifierId.of("71111111-fc23-aeb6-f44b-56dc5e2fb3ae");
-    final TenantId tenantId = TenantId.tenantId("8");
-    final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0");
-    final IpPrefix dstIpPrefix = IpPrefix.valueOf("100.100.100.100/0");
-    final VirtualPortId virtualSrcPort = VirtualPortId.portId("100");
-    final VirtualPortId virtualDstPort = VirtualPortId.portId("200");
-    DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder();
-    FlowClassifierManager flowClassifierMgr = new FlowClassifierManager();
-    FlowClassifier flowClassifier = null;
-    private final VtnStorageServiceTest storageService = new VtnStorageServiceTest();
-
-    /**
-     * Checks the operation of createFlowClassifier() method.
-     */
-    @Test
-    public void testCreateFlowClassifier() {
-        // initialize flow classifier manager
-        flowClassifierMgr.storageService = storageService;
-        injectEventDispatcher(flowClassifierMgr, new TestEventDispatcher());
-        flowClassifierMgr.activate();
-
-        // create flow classifier
-        flowClassifier = flowClassifierBuilder.setFlowClassifierId(flowClassifierId).setTenantId(tenantId)
-                .setName(name).setDescription(description).setEtherType(ethType).setProtocol(protocol)
-                .setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange)
-                .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix)
-                .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build();
-        assertThat(flowClassifierMgr.createFlowClassifier(flowClassifier), is(true));
-    }
-
-    /**
-     * Checks the operation of exists() method.
-     */
-    @Test
-    public void testExists() {
-        testCreateFlowClassifier();
-        assertThat(flowClassifierMgr.exists(flowClassifierId), is(true));
-    }
-
-    /**
-     * Checks the operation of getFlowClassifierCount() method.
-     */
-    @Test
-    public void testGetFlowClassifierCount() {
-        testCreateFlowClassifier();
-        assertThat(flowClassifierMgr.getFlowClassifierCount(), is(1));
-    }
-
-    /**
-     * Checks the operation of getFlowClassifiers() method.
-     */
-    @Test
-    public void testGetFlowClassifiers() {
-        testCreateFlowClassifier();
-        final Iterable<FlowClassifier> flowClassifierList = flowClassifierMgr.getFlowClassifiers();
-        assertThat(flowClassifierList, is(notNullValue()));
-        assertThat(flowClassifierList.iterator().hasNext(), is(true));
-    }
-
-    /**
-     * Checks the operation of getFlowClassifier() method.
-     */
-    @Test
-    public void testGetFlowClassifier() {
-        testCreateFlowClassifier();
-        assertThat(flowClassifier, is(notNullValue()));
-        assertThat(flowClassifierMgr.getFlowClassifier(flowClassifierId), is(flowClassifier));
-    }
-
-    /**
-     * Checks the operation of updateFlowClassifier() method.
-     */
-    @Test
-    public void testUpdateFlowClassifier() {
-        // create a flow classifier
-        testCreateFlowClassifier();
-
-        // new updates
-        final String name2 = "FlowClassifier2";
-        final String description2 = "FlowClassifier2";
-        final String ethType2 = "IPv6";
-        final String protocol2 = "tcp";
-        final TenantId tenantId2 = TenantId.tenantId("10");
-        final VirtualPortId virtualSrcPort2 = VirtualPortId.portId("300");
-        final VirtualPortId virtualDstPort2 = VirtualPortId.portId("400");
-        flowClassifier = flowClassifierBuilder.setFlowClassifierId(flowClassifierId)
-                .setTenantId(tenantId2).setName(name2).setDescription(description2).setEtherType(ethType2)
-                .setProtocol(protocol2).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange)
-                .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix)
-                .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort2).setDstPort(virtualDstPort2).build();
-        assertThat(flowClassifierMgr.updateFlowClassifier(flowClassifier), is(true));
-    }
-
-    /**
-     * Checks the operation of removeFlowClassifier() method.
-     */
-    @Test
-    public void testRemoveFlowClassifier() {
-        testCreateFlowClassifier();
-        assertThat(flowClassifierMgr.removeFlowClassifier(flowClassifierId), is(true));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/impl/PortChainManagerTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/impl/PortChainManagerTest.java
deleted file mode 100644
index e79d9db..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/impl/PortChainManagerTest.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.portchain.impl;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-import org.junit.Test;
-import java.util.List;
-import java.util.LinkedList;
-
-import org.onosproject.vtnrsc.PortChainId;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.DefaultPortChain;
-import org.onosproject.vtnrsc.DefaultFlowClassifier;
-import org.onosproject.vtnrsc.util.VtnStorageServiceTest;
-import org.onosproject.common.event.impl.TestEventDispatcher;
-
-import static org.onosproject.net.NetTestTools.injectEventDispatcher;
-
-/**
- * Unit tests for PortChainManager class.
- */
-public class PortChainManagerTest {
-    final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
-    final TenantId tenantId = TenantId.tenantId("1");
-    final String name = "PortChain";
-    final String description = "PortChain";
-    final List<PortPairGroupId> portPairGroupList = new LinkedList<PortPairGroupId>();
-    final List<FlowClassifierId> flowClassifierList = new LinkedList<FlowClassifierId>();
-    DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder();
-    DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder();
-    PortChainManager portChainMgr = new PortChainManager();
-    PortChain portChain = null;
-    private final VtnStorageServiceTest storageService = new VtnStorageServiceTest();
-
-    /**
-     * Checks the operation of createPortChain() method.
-     */
-    @Test
-    public void testCreatePortChain() {
-        // initialize port chain manager
-        portChainMgr.storageService = storageService;
-        injectEventDispatcher(portChainMgr, new TestEventDispatcher());
-        portChainMgr.activate();
-
-        // create list of Port Pair Groups.
-        PortPairGroupId portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairGroupList.add(portPairGroupId);
-        portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3af");
-        portPairGroupList.add(portPairGroupId);
-
-        // create list of Flow classifiers.
-        FlowClassifierId flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
-        flowClassifierList.add(flowClassifierId);
-        flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af");
-        flowClassifierList.add(flowClassifierId);
-
-        // create port chain
-        portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name).setDescription(description)
-                .setPortPairGroups(portPairGroupList).setFlowClassifiers(flowClassifierList).build();
-        assertThat(portChainMgr.createPortChain(portChain), is(true));
-    }
-
-    /**
-     * Checks the operation of exists() method.
-     */
-    @Test
-    public void testExists() {
-        testCreatePortChain();
-        assertThat(portChainMgr.exists(portChainId), is(true));
-    }
-
-    /**
-     * Checks the operation of getPortChainCount() method.
-     */
-    @Test
-    public void testGetPortChainCount() {
-        testCreatePortChain();
-        assertThat(portChainMgr.getPortChainCount(), is(1));
-    }
-
-    /**
-     * Checks the operation of getPortChains() method.
-     */
-    @Test
-    public void testGetPortChains() {
-        testCreatePortChain();
-        final Iterable<PortChain> portChainList = portChainMgr.getPortChains();
-        assertThat(portChainList, is(notNullValue()));
-        assertThat(portChainList.iterator().hasNext(), is(true));
-    }
-
-    /**
-     * Checks the operation of getPortChain() method.
-     */
-    @Test
-    public void testGetPortChain() {
-        testCreatePortChain();
-        assertThat(portChain, is(notNullValue()));
-        assertThat(portChainMgr.getPortChain(portChainId), is(portChain));
-    }
-
-    /**
-     * Checks the operation of updatePortChain() method.
-     */
-    @Test
-    public void testUpdatePortChain() {
-        // create a port chain
-        testCreatePortChain();
-
-        // new updates
-        final TenantId tenantId2 = TenantId.tenantId("2");
-        final String name2 = "PortChain2";
-        final String description2 = "PortChain2";
-        // create list of Port Pair Groups.
-        final List<PortPairGroupId> portPairGroupList = new LinkedList<PortPairGroupId>();
-        PortPairGroupId portPairGroupId = PortPairGroupId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairGroupList.add(portPairGroupId);
-        portPairGroupId = PortPairGroupId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3af");
-        portPairGroupList.add(portPairGroupId);
-        // create list of Flow classifiers.
-        final List<FlowClassifierId> flowClassifierList = new LinkedList<FlowClassifierId>();
-        FlowClassifierId flowClassifierId = FlowClassifierId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3ae");
-        flowClassifierList.add(flowClassifierId);
-        flowClassifierId = FlowClassifierId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3af");
-        flowClassifierList.add(flowClassifierId);
-        portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId2).setName(name2)
-                .setDescription(description2).setPortPairGroups(portPairGroupList)
-                .setFlowClassifiers(flowClassifierList).build();
-        assertThat(portChainMgr.updatePortChain(portChain), is(true));
-    }
-
-    /**
-     * Checks the operation of removePortChain() method.
-     */
-    @Test
-    public void testRemovePortChain() {
-        testCreatePortChain();
-        assertThat(portChainMgr.removePortChain(portChainId), is(true));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/impl/PortPairManagerTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/impl/PortPairManagerTest.java
deleted file mode 100644
index 06e3e57..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/impl/PortPairManagerTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.portpair.impl;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-import org.junit.Test;
-
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.DefaultPortPair;
-import org.onosproject.vtnrsc.util.VtnStorageServiceTest;
-import org.onosproject.common.event.impl.TestEventDispatcher;
-
-import static org.onosproject.net.NetTestTools.injectEventDispatcher;
-
-/**
- * Unit tests for PortPairManager class.
- */
-public class PortPairManagerTest {
-    final PortPairId portPairId = PortPairId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
-    final TenantId tenantId = TenantId.tenantId("1");
-    final String name = "PortPair";
-    final String description = "PortPair";
-    final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1";
-    final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345";
-    DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder();
-    PortPairManager portPairMgr = new PortPairManager();
-    PortPair portPair = null;
-    private final VtnStorageServiceTest storageService = new VtnStorageServiceTest();
-
-    /**
-     * Checks the operation of createPortPair() method.
-     */
-    @Test
-    public void testCreatePortPair() {
-        // initialize port pair manager
-        portPairMgr.storageService = storageService;
-        injectEventDispatcher(portPairMgr, new TestEventDispatcher());
-        portPairMgr.activate();
-
-        // create port pair
-        portPair = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name)
-                .setDescription(description).setIngress(ingress).setEgress(egress).build();
-        assertThat(portPairMgr.createPortPair(portPair), is(true));
-    }
-
-    /**
-     * Checks the operation of exists() method.
-     */
-    @Test
-    public void testExists() {
-        testCreatePortPair();
-        assertThat(portPairMgr.exists(portPairId), is(true));
-    }
-
-    /**
-     * Checks the operation of getPortPairCount() method.
-     */
-    @Test
-    public void testGetPortPairCount() {
-        testCreatePortPair();
-        assertThat(portPairMgr.getPortPairCount(), is(1));
-    }
-
-    /**
-     * Checks the operation of getPortPairs() method.
-     */
-    @Test
-    public void testGetPortPairs() {
-        testCreatePortPair();
-        final Iterable<PortPair> portPairList = portPairMgr.getPortPairs();
-        assertThat(portPairList, is(notNullValue()));
-        assertThat(portPairList.iterator().hasNext(), is(true));
-    }
-
-    /**
-     * Checks the operation of getPortPair() method.
-     */
-    @Test
-    public void testGetPortPair() {
-        testCreatePortPair();
-        assertThat(portPair, is(notNullValue()));
-        assertThat(portPairMgr.getPortPair(portPairId), is(portPair));
-    }
-
-    /**
-     * Checks the operation of updatePortPair() method.
-     */
-    @Test
-    public void testUpdatePortPair() {
-        // create a port pair
-        testCreatePortPair();
-
-        // new updates
-        final TenantId tenantId2 = TenantId.tenantId("2");
-        final String name2 = "PortPair2";
-        final String description2 = "PortPair2";
-        final String ingress2 = "d5555555-24fc-4fae-af4b-321c5e2eb3d1";
-        final String egress2 = "a6666666-4a56-2a6e-cd3a-9dee4e2ec345";
-        portPair = portPairBuilder.setId(portPairId).setTenantId(tenantId2).setName(name2)
-                .setDescription(description2).setIngress(ingress2).setEgress(egress2).build();
-        assertThat(portPairMgr.updatePortPair(portPair), is(true));
-    }
-
-    /**
-     * Checks the operation of removePortPair() method.
-     */
-    @Test
-    public void testRemovePortPair() {
-        testCreatePortPair();
-        assertThat(portPairMgr.removePortPair(portPairId), is(true));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManagerTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManagerTest.java
deleted file mode 100644
index 6edcef6..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManagerTest.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.portpairgroup.impl;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-import org.junit.Test;
-import java.util.List;
-import java.util.LinkedList;
-
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.DefaultPortPairGroup;
-import org.onosproject.vtnrsc.util.VtnStorageServiceTest;
-import org.onosproject.common.event.impl.TestEventDispatcher;
-
-import static org.onosproject.net.NetTestTools.injectEventDispatcher;
-
-/**
- * Unit tests for PortPairGroupManager class.
- */
-public class PortPairGroupManagerTest {
-    final PortPairGroupId portPairGroupId = PortPairGroupId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
-    final TenantId tenantId = TenantId.tenantId("1");
-    final String name = "PortPairGroup";
-    final String description = "PortPairGroup";
-    final List<PortPairId> portPairIdList = new LinkedList<PortPairId>();
-    DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder();
-    PortPairGroupManager portPairGroupMgr = new PortPairGroupManager();
-    PortPairGroup portPairGroup = null;
-    private final VtnStorageServiceTest storageService = new VtnStorageServiceTest();
-
-    /**
-     * Checks the operation of createPortPairGroup() method.
-     */
-    @Test
-    public void testCreatePortPairGroup() {
-        // initialize port pair group manager
-        portPairGroupMgr.storageService = storageService;
-        injectEventDispatcher(portPairGroupMgr, new TestEventDispatcher());
-        portPairGroupMgr.activate();
-
-        // create port-pair-id list
-        PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairIdList.add(portPairId);
-        portPairId = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairIdList.add(portPairId);
-
-        // create port pair
-        portPairGroup = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId).setName(name)
-                .setDescription(description).setPortPairs(portPairIdList).build();
-        assertThat(portPairGroupMgr.createPortPairGroup(portPairGroup), is(true));
-    }
-
-    /**
-     * Checks the operation of exists() method.
-     */
-    @Test
-    public void testExists() {
-        testCreatePortPairGroup();
-        assertThat(portPairGroupMgr.exists(portPairGroupId), is(true));
-    }
-
-    /**
-     * Checks the operation of getPortPairGroupCount() method.
-     */
-    @Test
-    public void testGetPortPairGroupCount() {
-        testCreatePortPairGroup();
-        assertThat(portPairGroupMgr.getPortPairGroupCount(), is(1));
-    }
-
-    /**
-     * Checks the operation of getPortPairGroups() method.
-     */
-    @Test
-    public void testGetPortPairGroups() {
-        testCreatePortPairGroup();
-        final Iterable<PortPairGroup> portPairGroupList = portPairGroupMgr.getPortPairGroups();
-        assertThat(portPairGroupList, is(notNullValue()));
-        assertThat(portPairGroupList.iterator().hasNext(), is(true));
-    }
-
-    /**
-     * Checks the operation of getPortPairGroup() method.
-     */
-    @Test
-    public void testGetPortPairGroup() {
-        testCreatePortPairGroup();
-        assertThat(portPairGroup, is(notNullValue()));
-        assertThat(portPairGroupMgr.getPortPairGroup(portPairGroupId), is(portPairGroup));
-    }
-
-    /**
-     * Checks the operation of updatePortPairGroup() method.
-     */
-    @Test
-    public void testUpdatePortPairGroup() {
-        // create a port pair group
-        testCreatePortPairGroup();
-
-        // new updates
-        // create port-pair-id list
-        final TenantId tenantId2 = TenantId.tenantId("2");
-        final String name2 = "PortPairGroup2";
-        final String description2 = "PortPairGroup2";
-        final List<PortPairId> portPairIdList = new LinkedList<PortPairId>();
-        PortPairId portPairId = PortPairId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairIdList.add(portPairId);
-        portPairId = PortPairId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3ae");
-        portPairIdList.add(portPairId);
-
-        // create port pair
-        portPairGroup = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId2).setName(name2)
-                .setDescription(description2).setPortPairs(portPairIdList).build();
-        assertThat(portPairGroupMgr.updatePortPairGroup(portPairGroup), is(true));
-    }
-
-    /**
-     * Checks the operation of removePortPairGroup() method.
-     */
-    @Test
-    public void testRemovePortPairGroup() {
-        testCreatePortPairGroup();
-        assertThat(portPairGroupMgr.removePortPairGroup(portPairGroupId), is(true));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/DefaultRouterTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/DefaultRouterTest.java
deleted file mode 100644
index c2ebe44..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/DefaultRouterTest.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.router;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-import java.util.Collections;
-
-import org.junit.Test;
-import org.onosproject.vtnrsc.DefaultRouter;
-import org.onosproject.vtnrsc.Router;
-import org.onosproject.vtnrsc.RouterGateway;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPortId;
-
-import com.google.common.testing.EqualsTester;
-
-/**
- * Unit tests for DefaultRouter class.
- */
-public class DefaultRouterTest {
-
-    private String tenantIdStr = "123";
-    private String virtualPortId = "1212";
-    private String routeIdStr1 = "1";
-    private String routeIdStr2 = "2";
-    private String routerName = "router";
-    private String tenantNetworkId = "1234567";
-
-    /**
-     * Checks that the DefaultRouter class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(DefaultRouter.class);
-    }
-
-    /**
-     * Checks the operation of equals().
-     */
-    @Test
-    public void testEquals() {
-        final TenantId tenantId = TenantId.tenantId(tenantIdStr);
-        final VirtualPortId portId = VirtualPortId.portId(virtualPortId);
-        final RouterId routerId1 = RouterId.valueOf(routeIdStr1);
-        final RouterId routerId2 = RouterId.valueOf(routeIdStr2);
-        final TenantNetworkId networkId = TenantNetworkId
-                .networkId(tenantNetworkId);
-        final RouterGateway routerGateway = RouterGateway.routerGateway(
-                                                              networkId,
-                                                              true,
-                                                              Collections
-                                                                      .emptySet());
-
-        Router r1 = new DefaultRouter(routerId1, routerName, false,
-                                      Router.Status.ACTIVE, false,
-                                      routerGateway, portId, tenantId, null);
-        Router r2 = new DefaultRouter(routerId1, routerName, false,
-                                      Router.Status.ACTIVE, false,
-                                      routerGateway, portId, tenantId, null);
-        Router r3 = new DefaultRouter(routerId2, routerName, false,
-                                      Router.Status.ACTIVE, false,
-                                      routerGateway, portId, tenantId, null);
-
-        new EqualsTester().addEqualityGroup(r1, r2).addEqualityGroup(r3)
-                .testEquals();
-    }
-
-    /**
-     * Checks the construction of a DefaultRouter object.
-     */
-    @Test
-    public void testConstruction() {
-        final TenantId tenantId = TenantId.tenantId(tenantIdStr);
-        final VirtualPortId portId = VirtualPortId.portId(virtualPortId);
-        final RouterId routerId = RouterId.valueOf(routeIdStr1);
-        final TenantNetworkId networkId = TenantNetworkId
-                .networkId(tenantNetworkId);
-        final RouterGateway routerGateway = RouterGateway.routerGateway(
-                                                              networkId,
-                                                              true,
-                                                              Collections
-                                                                      .emptySet());
-
-        Router r1 = new DefaultRouter(routerId, routerName, false,
-                                      Router.Status.ACTIVE, false,
-                                      routerGateway, portId, tenantId, null);
-        assertThat(routerId, is(notNullValue()));
-        assertThat(routerId, is(r1.id()));
-        assertThat(tenantId, is(notNullValue()));
-        assertThat(tenantId, is(r1.tenantId()));
-        assertThat(routerGateway, is(notNullValue()));
-        assertThat(routerGateway, is(r1.externalGatewayInfo()));
-    }
-
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterInterfaceTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterInterfaceTest.java
deleted file mode 100644
index b937605..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterInterfaceTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.router;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-
-import org.junit.Test;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.RouterInterface;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.VirtualPortId;
-
-import com.google.common.testing.EqualsTester;
-
-/**
- * Unit tests for RouterInterface class.
- */
-public class RouterInterfaceTest {
-    private String tenantIdStr = "123";
-    private String virtualPortId = "1212";
-    private String routeIdStr1 = "1";
-    private String routeIdStr2 = "2";
-    private String subnetIdStr = "1234567";
-
-    /**
-     * Checks that the RouterInterface class is immutable.
-     */
-    @Test
-    public void testImmutability() {
-        assertThatClassIsImmutable(RouterInterface.class);
-    }
-
-    /**
-     * Checks the operation of equals().
-     */
-    @Test
-    public void testEquals() {
-        final TenantId tenantId = TenantId.tenantId(tenantIdStr);
-        final VirtualPortId portId = VirtualPortId.portId(virtualPortId);
-        final RouterId routerId1 = RouterId.valueOf(routeIdStr1);
-        final RouterId routerId2 = RouterId.valueOf(routeIdStr2);
-        final SubnetId subnet = SubnetId.subnetId(subnetIdStr);
-
-        RouterInterface ri1 = RouterInterface.routerInterface(subnet, portId,
-                                                              routerId1,
-                                                              tenantId);
-        RouterInterface ri2 = RouterInterface.routerInterface(subnet, portId,
-                                                              routerId1,
-                                                              tenantId);
-        RouterInterface ri3 = RouterInterface.routerInterface(subnet, portId,
-                                                              routerId2,
-                                                              tenantId);
-
-        new EqualsTester().addEqualityGroup(ri1, ri2).addEqualityGroup(ri3)
-                .testEquals();
-    }
-
-    /**
-     * Checks the construction of a RouterInterface object.
-     */
-    @Test
-    public void testConstruction() {
-        final TenantId tenantId = TenantId.tenantId(tenantIdStr);
-        final VirtualPortId portId = VirtualPortId.portId(virtualPortId);
-        final RouterId routerId1 = RouterId.valueOf(routeIdStr1);
-        final SubnetId subnet = SubnetId.subnetId(subnetIdStr);
-
-        RouterInterface ri1 = RouterInterface.routerInterface(subnet, portId,
-                                                              routerId1,
-                                                              tenantId);
-        assertThat(portId, is(notNullValue()));
-        assertThat(portId, is(ri1.portId()));
-        assertThat(tenantId, is(notNullValue()));
-        assertThat(tenantId, is(ri1.tenantId()));
-        assertThat(routerId1, is(notNullValue()));
-        assertThat(routerId1, is(ri1.routerId()));
-        assertThat(subnet, is(notNullValue()));
-        assertThat(subnet, is(ri1.subnetId()));
-    }
-}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/util/VtnEventuallyConsistentMapTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/util/VtnEventuallyConsistentMapTest.java
deleted file mode 100644
index 3f5e50e..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/util/VtnEventuallyConsistentMapTest.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.util;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-import java.util.function.BiFunction;
-
-import org.onlab.util.KryoNamespace;
-import org.onosproject.cluster.NodeId;
-import org.onosproject.store.Timestamp;
-
-import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.*;
-
-import org.onosproject.store.service.EventuallyConsistentMapAdapter;
-import org.onosproject.store.service.EventuallyConsistentMapListener;
-import org.onosproject.store.service.EventuallyConsistentMapEvent;
-import org.onosproject.store.service.EventuallyConsistentMapBuilder;
-import org.onosproject.store.service.EventuallyConsistentMap;
-
-/**
- * Testing version of an Eventually Consistent Map.
- */
-
-public final class VtnEventuallyConsistentMapTest<K, V> extends EventuallyConsistentMapAdapter<K, V> {
-
-    private final HashMap<K, V> map;
-    private final String mapName;
-    private final List<EventuallyConsistentMapListener<K, V>> listeners;
-    private final BiFunction<K, V, Collection<NodeId>> peerUpdateFunction;
-
-    private VtnEventuallyConsistentMapTest(String mapName,
-            BiFunction<K, V, Collection<NodeId>> peerUpdateFunction) {
-        map = new HashMap<>();
-        listeners = new LinkedList<>();
-        this.mapName = mapName;
-        this.peerUpdateFunction = peerUpdateFunction;
-    }
-
-    /**
-     * Notify all listeners of an event.
-     */
-    private void notifyListeners(EventuallyConsistentMapEvent<K, V> event) {
-        listeners.forEach(
-                listener -> listener.event(event)
-                );
-    }
-
-    @Override
-    public int size() {
-        return map.size();
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return map.isEmpty();
-    }
-
-    @Override
-    public boolean containsKey(K key) {
-        return map.containsKey(key);
-    }
-
-    @Override
-    public boolean containsValue(V value) {
-        return map.containsValue(value);
-    }
-
-    @Override
-    public V get(K key) {
-        return map.get(key);
-    }
-
-    @SuppressWarnings("ReturnValueIgnored")
-    @Override
-    public void put(K key, V value) {
-        map.put(key, value);
-        EventuallyConsistentMapEvent<K, V> addEvent =
-                new EventuallyConsistentMapEvent<>(mapName, PUT, key, value);
-        notifyListeners(addEvent);
-        if (peerUpdateFunction != null) {
-            peerUpdateFunction.apply(key, value);
-        }
-    }
-
-    @Override
-    public V remove(K key) {
-        V result = map.remove(key);
-        if (result != null) {
-            EventuallyConsistentMapEvent<K, V> removeEvent =
-                    new EventuallyConsistentMapEvent<>(mapName, REMOVE,
-                            key, map.get(key));
-            notifyListeners(removeEvent);
-        }
-        return result;
-    }
-
-    @Override
-    public void remove(K key, V value) {
-        boolean removed = map.remove(key, value);
-        if (removed) {
-            EventuallyConsistentMapEvent<K, V> removeEvent =
-                    new EventuallyConsistentMapEvent<>(mapName, REMOVE, key, value);
-            notifyListeners(removeEvent);
-        }
-    }
-
-    @Override
-    public V compute(K key, BiFunction<K, V, V> recomputeFunction) {
-        return map.compute(key, recomputeFunction);
-    }
-
-    @Override
-    public void putAll(Map<? extends K, ? extends V> m) {
-        map.putAll(m);
-    }
-
-    @Override
-    public void clear() {
-        map.clear();
-    }
-
-    @Override
-    public Set<K> keySet() {
-        return map.keySet();
-    }
-
-    @Override
-    public Collection<V> values() {
-        return map.values();
-    }
-
-    @Override
-    public Set<Map.Entry<K, V>> entrySet() {
-        return map.entrySet();
-    }
-
-    public static <K, V> Builder<K, V> builder() {
-        return new Builder<>();
-    }
-
-    @Override
-    public void addListener(EventuallyConsistentMapListener<K, V> listener) {
-        listeners.add(listener);
-    }
-
-    @Override
-    public void removeListener(EventuallyConsistentMapListener<K, V> listener) {
-        listeners.remove(listener);
-    }
-
-    public static class Builder<K, V> implements EventuallyConsistentMapBuilder<K, V> {
-        private String name;
-        private BiFunction<K, V, Collection<NodeId>> peerUpdateFunction;
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withName(String name) {
-            this.name = name;
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withSerializer(KryoNamespace.Builder serializerBuilder) {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withSerializer(KryoNamespace serializer) {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V>
-        withTimestampProvider(BiFunction<K, V, Timestamp> timestampProvider) {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withEventExecutor(ExecutorService executor) {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withCommunicationExecutor(ExecutorService executor) {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withBackgroundExecutor(ScheduledExecutorService executor) {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V>
-        withPeerUpdateFunction(BiFunction<K, V, Collection<NodeId>> peerUpdateFunction) {
-            this.peerUpdateFunction = peerUpdateFunction;
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withTombstonesDisabled() {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withAntiEntropyPeriod(long period, TimeUnit unit) {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withFasterConvergence() {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withPersistence() {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMap<K, V> build() {
-            if (name == null) {
-                name = "test";
-            }
-            return new VtnEventuallyConsistentMapTest<>(name, peerUpdateFunction);
-        }
-    }
-
-}
-
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/util/VtnStorageServiceTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/util/VtnStorageServiceTest.java
deleted file mode 100644
index 90fad47..0000000
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/util/VtnStorageServiceTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnrsc.util;
-
-import org.onosproject.store.service.EventuallyConsistentMapBuilder;
-import org.onosproject.store.service.StorageServiceAdapter;
-
-public class VtnStorageServiceTest extends StorageServiceAdapter {
-    @Override
-    public <K, V> EventuallyConsistentMapBuilder<K, V> eventuallyConsistentMapBuilder() {
-        return VtnEventuallyConsistentMapTest.builder();
-    }
-}
diff --git a/apps/vtn/vtnweb/BUILD b/apps/vtn/vtnweb/BUILD
deleted file mode 100644
index 0142518..0000000
--- a/apps/vtn/vtnweb/BUILD
+++ /dev/null
@@ -1,16 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + JACKSON + REST + [
-    "//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc",
-]
-
-TEST_DEPS = TEST_REST + [
-    "@minimal_json//jar",
-    "//utils/osgi:onlab-osgi-tests",
-    "//web/api:onos-rest-tests",
-]
-
-osgi_jar_with_tests(
-    exclude_tests = ["org.onosproject.vtnweb.resources.VtnResourceTest"],
-    test_deps = TEST_DEPS,
-    web_context = "/onos/vtn",
-    deps = COMPILE_DEPS,
-)
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/SfcUiExtensionManager.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/SfcUiExtensionManager.java
deleted file mode 100644
index 7997d4a..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/SfcUiExtensionManager.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnweb.gui;
-
-import com.google.common.collect.ImmutableList;
-import org.onosproject.ui.UiExtension;
-import org.onosproject.ui.UiExtensionService;
-import org.onosproject.ui.UiMessageHandlerFactory;
-import org.onosproject.ui.UiView;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.List;
-
-import static com.google.common.collect.ImmutableList.of;
-import static org.onosproject.ui.UiView.Category.NETWORK;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * service function chain gui.
- */
-@Component(immediate = true, service = SfcUiExtensionManager.class)
-public class SfcUiExtensionManager {
-    private final Logger log = getLogger(getClass());
-
-    private static final ClassLoader CL =
-            SfcUiExtensionManager.class.getClassLoader();
-    private static final String GUI = "gui";
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected UiExtensionService uiExtensionService;
-
-    // service function chain extension
-    private final UiExtension sfc = createSfcExtension();
-
-    // Creates service function chain UI extension
-    private UiExtension createSfcExtension() {
-        List<UiView> coreViews = of(
-                //TODO add a new type of icon for sfc
-                new UiView(NETWORK, "sfc", "SFC", "nav_sfcs")
-        );
-
-        UiMessageHandlerFactory messageHandlerFactory =
-                () -> ImmutableList.of(
-                        new SfcViewMessageHandler()
-                );
-
-        return new UiExtension.Builder(CL, coreViews)
-                .messageHandlerFactory(messageHandlerFactory)
-                .resourcePath(GUI)
-                .build();
-    }
-
-    @Activate
-    public void activate() {
-        uiExtensionService.register(sfc);
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        uiExtensionService.unregister(sfc);
-        log.info("Stopped");
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/SfcViewMessageHandler.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/SfcViewMessageHandler.java
deleted file mode 100644
index 3b65e8b..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/SfcViewMessageHandler.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnweb.gui;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.onlab.packet.IpAddress;
-import org.onosproject.ui.RequestHandler;
-import org.onosproject.ui.UiMessageHandler;
-import org.onosproject.ui.table.TableModel;
-import org.onosproject.ui.table.TableRequestHandler;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService;
-import org.onosproject.vtnrsc.portchain.PortChainService;
-import org.onosproject.vtnrsc.portpair.PortPairService;
-import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.ImmutableSet;
-
-/**
- * Message handler for service function chain view related messages.
- */
-public class SfcViewMessageHandler extends UiMessageHandler {
-
-    private static final String SLASH = " -> ";
-    private static final String NONE = "none";
-    private static final String SFCTYPE = "Service Function Chain";
-
-    private static final String SFC_DATA_REQ = "sfcDataRequest";
-    private static final String SFC_DATA_RESP = "sfcDataResponse";
-    private static final String SFCS = "sfcs";
-
-    private static final String ID = "id";
-    private static final String STATE = "_iconid_state";
-    private static final String PORTCHAINNAME = "portChainName";
-    private static final String SFS = "sfs";
-    private static final String TYPE = "type";
-    private static final String SRCIP = "srcIp";
-    private static final String DSTIP = "dstIp";
-
-    private static final String[] COL_IDS = {
-                                             ID, STATE, PORTCHAINNAME, SFS, TYPE, SRCIP, DSTIP
-    };
-
-    private static final String ICON_ID_ONLINE = "active";
-    private static final String ICON_ID_OFFLINE = "inactive";
-
-    @Override
-    protected Collection<RequestHandler> createRequestHandlers() {
-        return ImmutableSet.of(new SfcDataRequest());
-    }
-
-    // handler for sfc table requests
-    private final class SfcDataRequest extends TableRequestHandler {
-
-        private static final String NO_ROWS_MESSAGE = "No Service Function Chain found";
-
-        private SfcDataRequest() {
-            super(SFC_DATA_REQ, SFC_DATA_RESP, SFCS);
-        }
-
-        @Override
-        protected String[] getColumnIds() {
-            return COL_IDS;
-        }
-
-        @Override
-        protected String defaultColumnId() {
-            return PORTCHAINNAME;
-        }
-
-        @Override
-        protected String noRowsMessage(ObjectNode payload) {
-            return NO_ROWS_MESSAGE;
-        }
-
-        @Override
-        protected void populateTable(TableModel tm, ObjectNode payload) {
-            PortChainService pcs = get(PortChainService.class);
-            Iterable<PortChain> portChains = pcs.getPortChains();
-            portChains.forEach(pchain -> populateRow(tm.addRow(), pchain));
-        }
-
-        //populate the row of service function chain
-        private void populateRow(TableModel.Row row, PortChain pchain) {
-            PortChainIpRange portChainIpRange = portChainIpRange(pchain);
-            List<VirtualPort> vpList = sfcPorts(pchain);
-            row.cell(ID, pchain.portChainId().value().toString())
-                .cell(STATE, sfcState(vpList))
-                .cell(PORTCHAINNAME, pchain.name())
-                .cell(SFS, sfcHosts(vpList))
-                .cell(TYPE, SFCTYPE)
-                .cell(SRCIP, portChainIpRange.srcip())
-                .cell(DSTIP, portChainIpRange.dstip());
-        }
-
-        //PortChainIpRange
-        private PortChainIpRange portChainIpRange(PortChain pchain) {
-            List<FlowClassifierId> flowClassifierList = pchain.flowClassifiers();
-            FlowClassifierService fcs = get(FlowClassifierService.class);
-            StringBuffer srcipbuf = new StringBuffer();
-            StringBuffer dstipbuf = new StringBuffer();
-            if (flowClassifierList != null) {
-                flowClassifierList.forEach(fcid -> {
-                    FlowClassifier fc = fcs.getFlowClassifier(fcid);
-                    String srcip = fc.srcIpPrefix().toString();
-                    String dstip = fc.dstIpPrefix().toString();
-                    srcipbuf.append(srcip).append(SLASH);
-                    dstipbuf.append(dstip).append(SLASH);
-                });
-            }
-            String srcip = NONE;
-            String dstip = NONE;
-            if (srcipbuf.length() > 0) {
-                srcip = srcipbuf.substring(0, srcipbuf.length() - SLASH.length());
-            }
-            if (dstipbuf.length() > 0) {
-                dstip = dstipbuf.substring(0, dstipbuf.length() - SLASH.length());
-            }
-            PortChainIpRange portChainIpRange = new PortChainIpRange(srcip, dstip);
-            return portChainIpRange;
-        }
-
-        //the VirtualPorts of service function chain
-        private List<VirtualPort> sfcPorts(PortChain pchain) {
-            List<PortPairGroupId> portPairGroupList = pchain.portPairGroups();
-            PortPairGroupService ppgs = get(PortPairGroupService.class);
-            PortPairService pps = get(PortPairService.class);
-            VirtualPortService vps = get(VirtualPortService.class);
-            List<VirtualPort> vpList = new ArrayList<VirtualPort>();
-            if (portPairGroupList != null) {
-                portPairGroupList.forEach(ppgid -> {
-                    PortPairGroup ppg = ppgs.getPortPairGroup(ppgid);
-                    List<PortPairId> portPairList = ppg.portPairs();
-                    if (portPairList != null) {
-                        portPairList.forEach(ppid -> {
-                            PortPair pp = pps.getPortPair(ppid);
-                            VirtualPort vp = vps.getPort(VirtualPortId.portId(pp.ingress()));
-                            vpList.add(vp);
-                        });
-                    }
-                });
-            }
-            return vpList;
-        }
-
-        //the state of service function chain
-        private String sfcState(List<VirtualPort> vpList) {
-            for (VirtualPort vp : vpList) {
-                if (vp.state().equals(VirtualPort.State.DOWN)) {
-                    return ICON_ID_OFFLINE;
-                }
-            }
-            return ICON_ID_ONLINE;
-        }
-
-        //the hosts of service function chain
-        private String sfcHosts(List<VirtualPort> vpList) {
-            StringBuffer hostsbuf = new StringBuffer();
-            for (VirtualPort vp : vpList) {
-                Iterator<FixedIp> fixedIps = vp.fixedIps().iterator();
-                if (fixedIps.hasNext()) {
-                    FixedIp fixedIp = fixedIps.next();
-                    IpAddress ip = fixedIp.ip();
-                    hostsbuf.append(ip.toString()).append(SLASH);
-                }
-            }
-            if (hostsbuf.length() > 0) {
-                return hostsbuf.substring(0, hostsbuf.length() - SLASH.length());
-            }
-            return hostsbuf.toString();
-        }
-
-        //source ip prefix and destination ip prefix
-        private final class PortChainIpRange {
-            private final String srcip;
-            private final String dstip;
-
-            private PortChainIpRange(String srcip, String dstip) {
-                this.srcip = srcip;
-                this.dstip = dstip;
-            }
-
-            public String srcip() {
-                return srcip;
-            }
-
-            public String dstip() {
-                return dstip;
-            }
-        }
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/package-info.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/package-info.java
deleted file mode 100644
index bee6e77..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Service Function Chain gui.
- */
-package org.onosproject.vtnweb.gui;
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/ClassifierWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/ClassifierWebResource.java
deleted file mode 100644
index 991f0fc..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/ClassifierWebResource.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.onosproject.net.DeviceId;
-import org.onosproject.rest.AbstractWebResource;
-import org.onosproject.vtnrsc.classifier.ClassifierService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Query and program classifiers.
- */
-@Path("classifiers")
-public class ClassifierWebResource extends AbstractWebResource {
-
-    private final Logger log = LoggerFactory.getLogger(ClassifierWebResource.class);
-
-    /**
-     * Get the list of classifier devices.
-     *
-     * @return 200 OK
-     */
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response getClassifiers() {
-
-        ObjectNode result = mapper().createObjectNode();
-
-        Iterable<DeviceId> classifierDevices = get(ClassifierService.class).getClassifiers();
-        ArrayNode classifier = result.putArray("classifiers");
-        if (classifierDevices != null) {
-            for (final DeviceId deviceId : classifierDevices) {
-                ObjectNode dev = mapper().createObjectNode()
-                        .put("DeviceId", deviceId.toString());
-                classifier.add(dev);
-            }
-        }
-        return ok(result.toString()).build();
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java
deleted file mode 100644
index 9fc25a8..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Sets;
-import org.onlab.packet.IpAddress;
-import org.onlab.util.ItemNotFoundException;
-import org.onosproject.rest.AbstractWebResource;
-import org.onosproject.vtnrsc.DefaultFloatingIp;
-import org.onosproject.vtnrsc.FloatingIp;
-import org.onosproject.vtnrsc.FloatingIp.Status;
-import org.onosproject.vtnrsc.FloatingIpId;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.floatingip.FloatingIpService;
-import org.onosproject.vtnweb.web.FloatingIpCodec;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
-import static javax.ws.rs.core.Response.Status.CONFLICT;
-import static javax.ws.rs.core.Response.Status.CREATED;
-import static javax.ws.rs.core.Response.Status.NOT_FOUND;
-import static org.onlab.util.Tools.readTreeFromStream;
-
-@Path("floatingips")
-public class FloatingIpWebResource extends AbstractWebResource {
-    private final Logger log = LoggerFactory
-            .getLogger(FloatingIpWebResource.class);
-    public static final String CREATE_FAIL = "Floating IP is failed to create!";
-    public static final String UPDATE_FAIL = "Floating IP is failed to update!";
-    public static final String DELETE_FAIL = "Floating IP is failed to delete!";
-    public static final String GET_FAIL = "Floating IP is failed to get!";
-    public static final String NOT_EXIST = "Floating IP does not exist!";
-    public static final String DELETE_SUCCESS = "Floating IP delete success!";
-    public static final String JSON_NOT_NULL = "JsonNode can not be null";
-
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response listFloatingIps() {
-        Collection<FloatingIp> floatingIps = get(FloatingIpService.class)
-                .getFloatingIps();
-        ObjectNode result = new ObjectMapper().createObjectNode();
-        result.set("floatingips",
-                   new FloatingIpCodec().encode(floatingIps, this));
-        return ok(result.toString()).build();
-    }
-
-    @GET
-    @Path("{floatingIpUUID}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response getFloatingIp(@PathParam("floatingIpUUID") String id,
-                                  @QueryParam("fields") List<String> fields) {
-
-        if (!get(FloatingIpService.class).exists(FloatingIpId.of(id))) {
-            return Response.status(NOT_FOUND).entity(NOT_EXIST).build();
-        }
-        FloatingIp sub = nullIsNotFound(get(FloatingIpService.class)
-                .getFloatingIp(FloatingIpId.of(id)), GET_FAIL);
-
-        ObjectNode result = new ObjectMapper().createObjectNode();
-        if (!fields.isEmpty()) {
-            result.set("floatingip",
-                       new FloatingIpCodec().extracFields(sub, this, fields));
-        } else {
-            result.set("floatingip", new FloatingIpCodec().encode(sub, this));
-        }
-        return ok(result.toString()).build();
-    }
-
-    @POST
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response createFloatingIp(final InputStream input) {
-        try {
-            ObjectMapper mapper = new ObjectMapper();
-            JsonNode subnode = readTreeFromStream(mapper, input);
-            Collection<FloatingIp> floatingIps = createOrUpdateByInputStream(subnode);
-            Boolean result = nullIsNotFound((get(FloatingIpService.class)
-                                                    .createFloatingIps(floatingIps)),
-                                            CREATE_FAIL);
-            if (!result) {
-                return Response.status(CONFLICT).entity(CREATE_FAIL).build();
-            }
-            return Response.status(CREATED).entity(result.toString()).build();
-
-        } catch (Exception e) {
-            return Response.status(BAD_REQUEST).entity(e.getMessage()).build();
-        }
-    }
-
-    @PUT
-    @Path("{floatingIpUUID}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response updateFloatingIp(@PathParam("floatingIpUUID") String id,
-                                     final InputStream input) {
-        try {
-            ObjectMapper mapper = new ObjectMapper();
-            JsonNode subnode = readTreeFromStream(mapper, input);
-            Collection<FloatingIp> floatingIps = createOrUpdateByInputStream(subnode);
-            Boolean result = nullIsNotFound(get(FloatingIpService.class)
-                    .updateFloatingIps(floatingIps), UPDATE_FAIL);
-            if (!result) {
-                return Response.status(CONFLICT).entity(UPDATE_FAIL).build();
-            }
-            return ok(result.toString()).build();
-        } catch (Exception e) {
-            return Response.status(BAD_REQUEST).entity(e.getMessage()).build();
-        }
-    }
-
-    @DELETE
-    @Path("{floatingIpUUID}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response deleteSingleFloatingIp(@PathParam("floatingIpUUID") String id)
-            throws IOException {
-        try {
-            FloatingIpId floatingIpId = FloatingIpId.of(id);
-            Set<FloatingIpId> floatingIpIds = Sets.newHashSet(floatingIpId);
-            Boolean result = nullIsNotFound(get(FloatingIpService.class)
-                    .removeFloatingIps(floatingIpIds), DELETE_FAIL);
-            if (!result) {
-                return Response.status(CONFLICT).entity(DELETE_FAIL).build();
-            }
-            return Response.noContent().entity(DELETE_SUCCESS).build();
-        } catch (Exception e) {
-            return Response.status(NOT_FOUND).entity(e.getMessage()).build();
-        }
-    }
-
-    private Collection<FloatingIp> createOrUpdateByInputStream(JsonNode subnode) {
-        checkNotNull(subnode, JSON_NOT_NULL);
-        Collection<FloatingIp> floatingIps = null;
-        JsonNode floatingIpNodes = subnode.get("floatingips");
-        if (floatingIpNodes == null) {
-            floatingIpNodes = subnode.get("floatingip");
-        }
-        log.debug("floatingNodes is {}", floatingIpNodes.toString());
-
-        if (floatingIpNodes.isArray()) {
-            throw new IllegalArgumentException("only singleton requests allowed");
-        } else {
-            floatingIps = changeJsonToSub(floatingIpNodes);
-        }
-        return floatingIps;
-    }
-
-    /**
-     * Returns a collection of floatingIps from floatingIpNodes.
-     *
-     * @param floatingIpNodes the floatingIp json node
-     * @return floatingIps a collection of floatingIp
-     */
-    public Collection<FloatingIp> changeJsonToSub(JsonNode floatingIpNodes) {
-        checkNotNull(floatingIpNodes, JSON_NOT_NULL);
-        Map<FloatingIpId, FloatingIp> subMap = new HashMap<FloatingIpId, FloatingIp>();
-        if (!floatingIpNodes.hasNonNull("id")) {
-            throw new IllegalArgumentException("id should not be null");
-        } else if (floatingIpNodes.get("id").asText().isEmpty()) {
-            throw new IllegalArgumentException("id should not be empty");
-        }
-        FloatingIpId id = FloatingIpId.of(floatingIpNodes.get("id")
-                .asText());
-
-        if (!floatingIpNodes.hasNonNull("tenant_id")) {
-            throw new IllegalArgumentException("tenant_id should not be null");
-        } else if (floatingIpNodes.get("tenant_id").asText().isEmpty()) {
-            throw new IllegalArgumentException("tenant_id should not be empty");
-        }
-        TenantId tenantId = TenantId.tenantId(floatingIpNodes.get("tenant_id")
-                .asText());
-
-        if (!floatingIpNodes.hasNonNull("floating_network_id")) {
-            throw new IllegalArgumentException(
-                                          "floating_network_id should not be null");
-        } else if (floatingIpNodes.get("floating_network_id").asText()
-                .isEmpty()) {
-            throw new IllegalArgumentException(
-                                          "floating_network_id should not be empty");
-        }
-        TenantNetworkId networkId = TenantNetworkId.networkId(floatingIpNodes
-                .get("floating_network_id").asText());
-
-        VirtualPortId portId = null;
-        if (floatingIpNodes.hasNonNull("port_id")) {
-            portId = VirtualPortId.portId(floatingIpNodes.get("port_id")
-                    .asText());
-        }
-
-        RouterId routerId = null;
-        if (floatingIpNodes.hasNonNull("router_id")) {
-            routerId = RouterId.valueOf(floatingIpNodes.get("router_id")
-                    .asText());
-        }
-
-        IpAddress fixedIp = null;
-        if (floatingIpNodes.hasNonNull("fixed_ip_address")) {
-            fixedIp = IpAddress.valueOf(floatingIpNodes.get("fixed_ip_address")
-                    .asText());
-        }
-
-        if (!floatingIpNodes.hasNonNull("floating_ip_address")) {
-            throw new IllegalArgumentException(
-                                          "floating_ip_address should not be null");
-        } else if (floatingIpNodes.get("floating_ip_address").asText()
-                .isEmpty()) {
-            throw new IllegalArgumentException(
-                                          "floating_ip_address should not be empty");
-        }
-        IpAddress floatingIp = IpAddress.valueOf(floatingIpNodes
-                .get("floating_ip_address").asText());
-
-        if (!floatingIpNodes.hasNonNull("status")) {
-            throw new IllegalArgumentException("status should not be null");
-        } else if (floatingIpNodes.get("status").asText().isEmpty()) {
-            throw new IllegalArgumentException("status should not be empty");
-        }
-        Status status = Status.valueOf(floatingIpNodes.get("status").asText());
-
-        DefaultFloatingIp floatingIpObj = new DefaultFloatingIp(id, tenantId,
-                                                                networkId,
-                                                                portId,
-                                                                routerId,
-                                                                floatingIp,
-                                                                fixedIp, status);
-        subMap.put(id, floatingIpObj);
-        return Collections.unmodifiableCollection(subMap.values());
-    }
-
-    /**
-     * Returns the specified item if that items is null; otherwise throws not
-     * found exception.
-     *
-     * @param item item to check
-     * @param <T> item type
-     * @param message not found message
-     * @return item if not null
-     * @throws org.onlab.util.ItemNotFoundException if item is null
-     */
-    protected <T> T nullIsNotFound(T item, String message) {
-        if (item == null) {
-            throw new ItemNotFoundException(message);
-        }
-        return item;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java
deleted file mode 100644
index 47e249f..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import static javax.ws.rs.core.Response.Status.OK;
-import static org.onlab.util.Tools.nullIsNotFound;
-import static org.onlab.util.Tools.readTreeFromStream;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.onosproject.rest.AbstractWebResource;
-import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Query and program flow classifier.
- */
-@Path("flow_classifiers")
-public class FlowClassifierWebResource extends AbstractWebResource {
-
-    private final Logger log = LoggerFactory.getLogger(FlowClassifierWebResource.class);
-
-    public static final String FLOW_CLASSIFIER_NOT_FOUND = "Flow classifier not found";
-
-    /**
-     * Get all flow classifiers created.
-     *
-     * @return 200 OK
-     */
-    @GET
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getFlowClassifiers() {
-        Iterable<FlowClassifier> flowClassifiers = get(FlowClassifierService.class).getFlowClassifiers();
-        ObjectNode result = mapper().createObjectNode();
-        ArrayNode flowClassifierEntry = result.putArray("flow_classifiers");
-        if (flowClassifiers != null) {
-            for (final FlowClassifier flowClassifier : flowClassifiers) {
-                flowClassifierEntry.add(codec(FlowClassifier.class).encode(flowClassifier, this));
-            }
-        }
-        return ok(result.toString()).build();
-    }
-
-    /**
-     * Get details of a flow classifier.
-     *
-     * @param id
-     *            flow classifier id
-     * @return 200 OK , 404 if given identifier does not exist
-     */
-    @GET
-    @Path("{flow_id}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getFlowClassifier(@PathParam("flow_id") String id) {
-        FlowClassifier flowClassifier = nullIsNotFound(get(FlowClassifierService.class)
-                                         .getFlowClassifier(FlowClassifierId.of(id)), FLOW_CLASSIFIER_NOT_FOUND);
-
-        ObjectNode result = mapper().createObjectNode();
-        result.set("flow_classifier", codec(FlowClassifier.class).encode(flowClassifier, this));
-
-        return ok(result.toString()).build();
-    }
-
-    /**
-     * Creates and stores a new flow classifier.
-     *
-     * @param stream
-     *            flow classifier from JSON
-     * @return status of the request - CREATED if the JSON is correct,
-     *         BAD_REQUEST if the JSON is invalid
-     */
-    @POST
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response createFlowClassifier(InputStream stream) {
-        try {
-            ObjectNode jsonTree = readTreeFromStream(mapper(), stream);
-            JsonNode flow = jsonTree.get("flow_classifier");
-
-            FlowClassifier flowClassifier = codec(FlowClassifier.class).decode((ObjectNode) flow, this);
-            Boolean issuccess = nullIsNotFound(get(FlowClassifierService.class).createFlowClassifier(flowClassifier),
-                                               FLOW_CLASSIFIER_NOT_FOUND);
-            return Response.status(OK).entity(issuccess.toString()).build();
-        } catch (IOException ex) {
-            log.error("Exception while creating flow classifier {}.", ex.toString());
-            throw new IllegalArgumentException(ex);
-        }
-    }
-
-    /**
-     * Update details of a flow classifier.
-     *
-     * @param id
-     *            flow classifier id
-     * @param stream
-     *            InputStream
-     * @return 200 OK, 404 if given identifier does not exist
-     */
-    @PUT
-    @Path("{flow_id}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response updateFlowClassifier(@PathParam("flow_id") String id, final InputStream stream) {
-        try {
-
-            JsonNode jsonTree = readTreeFromStream(mapper(), stream);
-            JsonNode flow = jsonTree.get("flow_classifier");
-            FlowClassifier flowClassifier = codec(FlowClassifier.class).decode((ObjectNode) flow, this);
-            Boolean result = nullIsNotFound(get(FlowClassifierService.class).updateFlowClassifier(flowClassifier),
-                                            FLOW_CLASSIFIER_NOT_FOUND);
-            return Response.status(OK).entity(result.toString()).build();
-        } catch (IOException e) {
-            log.error("Update flow classifier failed because of exception {}.", e.toString());
-            throw new IllegalArgumentException(e);
-        }
-    }
-
-    /**
-     * Delete details of a flow classifier.
-     *
-     * @param id flow classifier id
-     * @return 204 NO CONTENT
-     */
-    @Path("{flow_id}")
-    @DELETE
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response deleteFlowClassifier(@PathParam("flow_id") String id) {
-        log.debug("Deletes flow classifier by identifier {}.", id);
-        FlowClassifierId flowClassifierId = FlowClassifierId.of(id);
-        Boolean issuccess = nullIsNotFound(get(FlowClassifierService.class).removeFlowClassifier(flowClassifierId),
-                                           FLOW_CLASSIFIER_NOT_FOUND);
-        return Response.noContent().build();
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainDeviceMapWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainDeviceMapWebResource.java
deleted file mode 100644
index 8a48afb..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainDeviceMapWebResource.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onlab.util.Tools.nullIsNotFound;
-
-import java.util.Set;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.rest.AbstractWebResource;
-import org.onosproject.vtnrsc.LoadBalanceId;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortChainId;
-import org.onosproject.vtnrsc.portchain.PortChainService;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Query and program port chain.
- */
-
-@Path("portChainDeviceMap")
-public class PortChainDeviceMapWebResource extends AbstractWebResource {
-
-    public static final String PORT_CHAIN_NOT_FOUND = "Port chain not found";
-    public static final String PORT_CHAIN_ID_EXIST = "Port chain exists";
-    public static final String PORT_CHAIN_ID_NOT_EXIST = "Port chain does not exist with identifier";
-
-    private static final String NAME = "name";
-    private static final String ID = "id";
-    private static final String CLASSIFIERS = "classifiers";
-    private static final String FORWARDERS = "forwarders";
-    private static final String LOADBALANCEID = "loadBalanceId";
-
-    /**
-     * Get details of a specified port chain id.
-     *
-     * @param id port chain id
-     * @return 200 OK, 404 if given identifier does not exist
-     */
-    @GET
-    @Path("{chain_id}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response getPortChainDeviceMap(@PathParam("chain_id") String id) {
-
-        PortChain portChain = nullIsNotFound(get(PortChainService.class).getPortChain(PortChainId.of(id)),
-                                             PORT_CHAIN_NOT_FOUND);
-        ObjectNode result = mapper().createObjectNode();
-        result.set("portChainDeviceMap", encode(portChain, this));
-
-        return ok(result.toString()).build();
-    }
-
-    private ObjectNode encode(PortChain portChain, CodecContext context) {
-        checkNotNull(portChain, "portChain cannot be null");
-        ObjectNode result = context.mapper().createObjectNode();
-        result.put(ID, portChain.portChainId().toString())
-        .put(NAME, portChain.name());
-
-        Set<LoadBalanceId> loadBalanceIds = portChain.getLoadBalancePathMapKeys();
-        for (LoadBalanceId id : loadBalanceIds) {
-            result.put(LOADBALANCEID, id.toString())
-            .put(CLASSIFIERS, portChain.getSfcClassifiers(id).toString())
-            .put(FORWARDERS, portChain.getSfcForwarders(id).toString());
-        }
-        return result;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainSfMapWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainSfMapWebResource.java
deleted file mode 100644
index 7d08f88..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainSfMapWebResource.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import static org.onlab.util.Tools.nullIsNotFound;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.onosproject.rest.AbstractWebResource;
-import org.onosproject.vtnrsc.PortChainId;
-import org.onosproject.vtnrsc.ServiceFunctionGroup;
-import org.onosproject.vtnrsc.portchainsfmap.PortChainSfMapService;
-
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Query service function and load details by port chain.
- */
-
-@Path("portChainSfMap")
-public class PortChainSfMapWebResource extends AbstractWebResource {
-
-    public static final String PORT_CHAIN_NOT_FOUND = "Port chain not found";
-    public static final String PORT_CHAIN_ID_EXIST = "Port chain exists";
-    public static final String PORT_CHAIN_ID_NOT_EXIST = "Port chain does not exist with identifier";
-
-    /**
-     * Get service function details of a specified port chain id.
-     *
-     * @param id port chain id
-     * @return 200 OK, 404 if given identifier does not exist
-     */
-    @GET
-    @Path("{chainId}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response getPortChainSfMap(@PathParam("chainId") String id) {
-
-        Iterable<ServiceFunctionGroup> serviceFunctionGroups = nullIsNotFound(get(PortChainSfMapService.class)
-                .getServiceFunctions(PortChainId.of(id)),
-                                                                              PORT_CHAIN_NOT_FOUND);
-        ObjectNode result = mapper().createObjectNode();
-        ArrayNode portChainSfMap = result.putArray("portChainSfMap");
-        if (serviceFunctionGroups != null) {
-            for (final ServiceFunctionGroup serviceFunctionGroup : serviceFunctionGroups) {
-                portChainSfMap.add(codec(ServiceFunctionGroup.class).encode(serviceFunctionGroup, this));
-            }
-        }
-        return ok(result.toString()).build();
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java
deleted file mode 100644
index 1bfa44f..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import static javax.ws.rs.core.Response.Status.OK;
-import static org.onlab.util.Tools.nullIsNotFound;
-import static org.onlab.util.Tools.readTreeFromStream;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.onosproject.rest.AbstractWebResource;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortChainId;
-import org.onosproject.vtnrsc.portchain.PortChainService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Query and program port chain.
- */
-
-@Path("port_chains")
-public class PortChainWebResource extends AbstractWebResource {
-
-    private final Logger log = LoggerFactory.getLogger(PortChainWebResource.class);
-    public static final String PORT_CHAIN_NOT_FOUND = "Port chain not found";
-    public static final String PORT_CHAIN_ID_EXIST = "Port chain exists";
-    public static final String PORT_CHAIN_ID_NOT_EXIST = "Port chain does not exist with identifier";
-
-    /**
-     * Get details of all port chains created.
-     *
-     * @return 200 OK
-     */
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response getPortChains() {
-        Iterable<PortChain> portChains = get(PortChainService.class).getPortChains();
-        ObjectNode result = mapper().createObjectNode();
-        ArrayNode portChainEntry = result.putArray("port_chains");
-        if (portChains != null) {
-            for (final PortChain portChain : portChains) {
-                portChainEntry.add(codec(PortChain.class).encode(portChain, this));
-            }
-        }
-        return ok(result.toString()).build();
-    }
-
-    /**
-     * Get details of a specified port chain id.
-     *
-     * @param id port chain id
-     * @return 200 OK, 404 if given identifier does not exist
-     */
-    @GET
-    @Path("{chain_id}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response getPortPain(@PathParam("chain_id") String id) {
-
-        PortChain portChain = nullIsNotFound(get(PortChainService.class).getPortChain(PortChainId.of(id)),
-                                             PORT_CHAIN_NOT_FOUND);
-        ObjectNode result = mapper().createObjectNode();
-        result.set("port_chain", codec(PortChain.class).encode(portChain, this));
-        return ok(result.toString()).build();
-    }
-
-    /**
-     * Creates a new port chain.
-     *
-     * @param stream port chain from JSON
-     * @return status of the request - CREATED if the JSON is correct,
-     * BAD_REQUEST if the JSON is invalid
-     */
-    @POST
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response createPortChain(InputStream stream) {
-        try {
-            ObjectNode jsonTree = readTreeFromStream(mapper(), stream);
-            JsonNode port = jsonTree.get("port_chain");
-            PortChain portChain = codec(PortChain.class).decode((ObjectNode) port, this);
-            Boolean issuccess = nullIsNotFound(get(PortChainService.class).createPortChain(portChain),
-                                               PORT_CHAIN_NOT_FOUND);
-            return Response.status(OK).entity(issuccess.toString()).build();
-        } catch (IOException e) {
-            log.error("Exception while creating port chain {}.", e.toString());
-            throw new IllegalArgumentException(e);
-        }
-    }
-
-    /**
-     * Update details of a specified port chain id.
-     *
-     * @param id port chain id
-     * @param stream port chain json
-     * @return 200 OK, 404 if given identifier does not exist
-     */
-    @PUT
-    @Path("{chain_id}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response updatePortPain(@PathParam("chain_id") String id,
-                                   final InputStream stream) {
-        try {
-            ObjectNode jsonTree = readTreeFromStream(mapper(), stream);
-            JsonNode port = jsonTree.get("port_chain");
-            PortChain portChain = codec(PortChain.class).decode((ObjectNode) port, this);
-            Boolean result = nullIsNotFound(get(PortChainService.class).updatePortChain(portChain),
-                                            PORT_CHAIN_NOT_FOUND);
-            return Response.status(OK).entity(result.toString()).build();
-        } catch (IOException e) {
-            log.error("Update port chain failed because of exception {}.", e.toString());
-            throw new IllegalArgumentException(e);
-        }
-    }
-
-    /**
-     * Delete details of a specified port chain id.
-     *
-     * @param id port chain id
-     * @return 204 NO CONTENT
-     */
-    @Path("{chain_id}")
-    @DELETE
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response deletePortPain(@PathParam("chain_id") String id) {
-        log.debug("Deletes port chain by identifier {}.", id);
-        PortChainId portChainId = PortChainId.of(id);
-
-        Boolean issuccess = nullIsNotFound(get(PortChainService.class).removePortChain(portChainId),
-                                           PORT_CHAIN_NOT_FOUND);
-        if (!issuccess) {
-            log.debug("Port Chain identifier {} does not exist", id);
-        }
-        return Response.noContent().build();
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java
deleted file mode 100644
index 91793ca..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import static javax.ws.rs.core.Response.Status.OK;
-import static org.onlab.util.Tools.nullIsNotFound;
-import static org.onlab.util.Tools.readTreeFromStream;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.onosproject.rest.AbstractWebResource;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Query and program port pair group.
- */
-
-@Path("port_pair_groups")
-public class PortPairGroupWebResource extends AbstractWebResource {
-
-    private final Logger log = LoggerFactory.getLogger(PortPairGroupWebResource.class);
-    public static final String PORT_PAIR_GROUP_NOT_FOUND = "Port pair group not found";
-    public static final String PORT_PAIR_GROUP_ID_EXIST = "Port pair group exists";
-    public static final String PORT_PAIR_GROUP_ID_NOT_EXIST = "Port pair group does not exist with identifier";
-
-    /**
-     * Get details of all port pair groups created.
-     *
-     * @return 200 OK
-     */
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response getPortPairGroups() {
-        Iterable<PortPairGroup> portPairGroups = get(PortPairGroupService.class).getPortPairGroups();
-        ObjectNode result = mapper().createObjectNode();
-        ArrayNode portPairGroupEntry = result.putArray("port_pair_groups");
-        if (portPairGroups != null) {
-            for (final PortPairGroup portPairGroup : portPairGroups) {
-                portPairGroupEntry.add(codec(PortPairGroup.class).encode(portPairGroup, this));
-            }
-        }
-        return ok(result.toString()).build();
-    }
-
-    /**
-     * Get details of a specified port pair group id.
-     *
-     * @param id port pair group id
-     * @return 200 OK, 404 if given identifier does not exist
-     */
-    @GET
-    @Path("{group_id}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response getPortPairGroup(@PathParam("group_id") String id) {
-        PortPairGroup portPairGroup = nullIsNotFound(get(PortPairGroupService.class)
-                                                     .getPortPairGroup(PortPairGroupId.of(id)),
-                                                     PORT_PAIR_GROUP_NOT_FOUND);
-
-        ObjectNode result = mapper().createObjectNode();
-        result.set("port_pair_group", codec(PortPairGroup.class).encode(portPairGroup, this));
-        return ok(result.toString()).build();
-    }
-
-    /**
-     * Creates a new port pair group.
-     *
-     * @param stream   port pair group from JSON
-     * @return status of the request - CREATED if the JSON is correct,
-     * BAD_REQUEST if the JSON is invalid
-     */
-    @POST
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response createPortPairGroup(InputStream stream) {
-
-        try {
-            ObjectMapper mapper = new ObjectMapper();
-            ObjectNode jsonTree = readTreeFromStream(mapper, stream);
-            JsonNode port = jsonTree.get("port_pair_group");
-
-            PortPairGroup portPairGroup = codec(PortPairGroup.class).decode((ObjectNode) port, this);
-            Boolean issuccess = nullIsNotFound(get(PortPairGroupService.class).createPortPairGroup(portPairGroup),
-                                               PORT_PAIR_GROUP_NOT_FOUND);
-            return Response.status(OK).entity(issuccess.toString()).build();
-        } catch (IOException e) {
-            log.error("Exception while creating port pair group {}.", e.toString());
-            throw new IllegalArgumentException(e);
-        }
-    }
-
-    /**
-     * Update details of a specified port pair group id.
-     *
-     * @param id port pair group id
-     * @param stream port pair group from json
-     * @return 200 OK, 404 if given identifier does not exist
-     */
-    @PUT
-    @Path("{group_id}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response updatePortPairGroup(@PathParam("group_id") String id,
-                                        final InputStream stream) {
-        try {
-            ObjectMapper mapper = new ObjectMapper();
-            ObjectNode jsonTree = readTreeFromStream(mapper, stream);
-            JsonNode port = jsonTree.get("port_pair_group");
-            PortPairGroup portPairGroup = codec(PortPairGroup.class).decode((ObjectNode) port, this);
-            Boolean isSuccess = nullIsNotFound(get(PortPairGroupService.class).updatePortPairGroup(portPairGroup),
-                                               PORT_PAIR_GROUP_NOT_FOUND);
-            return Response.status(OK).entity(isSuccess.toString()).build();
-        } catch (IOException e) {
-            log.error("Update port pair group failed because of exception {}.", e.toString());
-            throw new IllegalArgumentException(e);
-        }
-    }
-
-    /**
-     * Delete details of a specified port pair group id.
-     *
-     * @param id port pair group id
-     * @return 204 NO CONTENT
-     */
-    @Path("{group_id}")
-    @DELETE
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response deletePortPairGroup(@PathParam("group_id") String id) {
-        log.debug("Deletes port pair group by identifier {}.", id);
-        PortPairGroupId portPairGroupId = PortPairGroupId.of(id);
-        Boolean issuccess = nullIsNotFound(get(PortPairGroupService.class).removePortPairGroup(portPairGroupId),
-                                           PORT_PAIR_GROUP_NOT_FOUND);
-        if (!issuccess) {
-            log.debug("Port pair group identifier {} does not exist", id);
-        }
-
-        return Response.noContent().build();
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java
deleted file mode 100644
index 2c88f6f..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import static javax.ws.rs.core.Response.Status.OK;
-import static org.onlab.util.Tools.nullIsNotFound;
-import static org.onlab.util.Tools.readTreeFromStream;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.onosproject.rest.AbstractWebResource;
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.portpair.PortPairService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Query and program port pair.
- */
-@Path("port_pairs")
-public class PortPairWebResource extends AbstractWebResource {
-
-    private final Logger log = LoggerFactory.getLogger(PortPairWebResource.class);
-    public static final String PORT_PAIR_NOT_FOUND = "Port pair not found";
-    public static final String PORT_PAIR_ID_EXIST = "Port pair exists";
-    public static final String PORT_PAIR_ID_NOT_EXIST = "Port pair does not exist with identifier";
-
-    /**
-     * Get details of all port pairs created.
-     *
-     * @return 200 OK
-     */
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response getPortPairs() {
-        Iterable<PortPair> portPairs = get(PortPairService.class).getPortPairs();
-        ObjectNode result = mapper().createObjectNode();
-        ArrayNode portPairEntry = result.putArray("port_pairs");
-        if (portPairs != null) {
-            for (final PortPair portPair : portPairs) {
-                portPairEntry.add(codec(PortPair.class).encode(portPair, this));
-            }
-        }
-        return ok(result.toString()).build();
-    }
-
-    /**
-     * Get details of a specified port pair id.
-     *
-     * @param id port pair id
-     * @return 200 OK, 404 if given identifier does not exist
-     */
-    @GET
-    @Path("{pair_id}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response getPortPair(@PathParam("pair_id") String id) {
-        PortPair portPair = nullIsNotFound(get(PortPairService.class).getPortPair(PortPairId.of(id)),
-                                           PORT_PAIR_NOT_FOUND);
-        ObjectNode result = mapper().createObjectNode();
-        result.set("port_pair", codec(PortPair.class).encode(portPair, this));
-        return ok(result.toString()).build();
-    }
-
-    /**
-     * Creates a new port pair.
-     *
-     * @param stream port pair from JSON
-     * @return status of the request - CREATED if the JSON is correct,
-     * BAD_REQUEST if the JSON is invalid
-     */
-    @POST
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response createPortPair(InputStream stream) {
-        try {
-            ObjectNode jsonTree = readTreeFromStream(mapper(), stream);
-            JsonNode port = jsonTree.get("port_pair");
-            PortPair portPair = codec(PortPair.class).decode((ObjectNode) port, this);
-            Boolean isSuccess = nullIsNotFound(get(PortPairService.class).createPortPair(portPair),
-                                               PORT_PAIR_NOT_FOUND);
-            return Response.status(OK).entity(isSuccess.toString()).build();
-        } catch (IOException e) {
-            log.error("Exception while creating port pair {}.", e.toString());
-            throw new IllegalArgumentException(e);
-        }
-    }
-
-    /**
-     * Update details of a specified port pair id.
-     *
-     * @param id port pair id
-     * @param stream port pair from json
-     * @return 200 OK, 404 if the given identifier does not exist
-     */
-    @PUT
-    @Path("{pair_id}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response updatePortPair(@PathParam("pair_id") String id,
-                                   final InputStream stream) {
-        try {
-            ObjectNode jsonTree = readTreeFromStream(mapper(), stream);
-            JsonNode port = jsonTree.get("port_pair");
-            PortPair portPair = codec(PortPair.class).decode((ObjectNode) port, this);
-            Boolean isSuccess = nullIsNotFound(get(PortPairService.class).updatePortPair(portPair),
-                                               PORT_PAIR_NOT_FOUND);
-            return Response.status(OK).entity(isSuccess.toString()).build();
-        } catch (IOException e) {
-            log.error("Update port pair failed because of exception {}.", e.toString());
-            throw new IllegalArgumentException(e);
-        }
-    }
-
-    /**
-     * Delete details of a specified port pair id.
-     *
-     * @param id port pair id
-     * @return 204 NO CONTENT
-     */
-    @Path("{pair_id}")
-    @DELETE
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response deletePortPair(@PathParam("pair_id") String id) {
-
-        PortPairId portPairId = PortPairId.of(id);
-        Boolean isSuccess = nullIsNotFound(get(PortPairService.class).removePortPair(portPairId), PORT_PAIR_NOT_FOUND);
-        if (!isSuccess) {
-            log.debug("Port pair identifier {} does not exist", id);
-        }
-        return Response.noContent().build();
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java
deleted file mode 100644
index 15d56cf..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java
+++ /dev/null
@@ -1,491 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-import org.onlab.packet.IpAddress;
-import org.onlab.util.ItemNotFoundException;
-import org.onosproject.rest.AbstractWebResource;
-import org.onosproject.vtnrsc.DefaultRouter;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.Router;
-import org.onosproject.vtnrsc.Router.Status;
-import org.onosproject.vtnrsc.RouterGateway;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.RouterInterface;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.router.RouterService;
-import org.onosproject.vtnrsc.routerinterface.RouterInterfaceService;
-import org.onosproject.vtnweb.web.RouterCodec;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentMap;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
-import static javax.ws.rs.core.Response.Status.CONFLICT;
-import static javax.ws.rs.core.Response.Status.CREATED;
-import static javax.ws.rs.core.Response.Status.NOT_FOUND;
-import static org.onlab.util.Tools.readTreeFromStream;
-
-@Path("routers")
-public class RouterWebResource extends AbstractWebResource {
-    private final Logger log = LoggerFactory.getLogger(RouterWebResource.class);
-    public static final String CREATE_FAIL = "Router is failed to create!";
-    public static final String UPDATE_FAIL = "Router is failed to update!";
-    public static final String GET_FAIL = "Router is failed to get!";
-    public static final String NOT_EXIST = "Router does not exist!";
-    public static final String DELETE_SUCCESS = "Router delete success!";
-    public static final String JSON_NOT_NULL = "JsonNode can not be null";
-    public static final String INTFACR_ADD_SUCCESS = "Interface add success";
-    public static final String INTFACR_DEL_SUCCESS = "Interface delete success";
-
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response listRouters() {
-        Collection<Router> routers = get(RouterService.class).getRouters();
-        ObjectNode result = new ObjectMapper().createObjectNode();
-        result.set("routers", new RouterCodec().encode(routers, this));
-        return ok(result.toString()).build();
-    }
-
-    @GET
-    @Path("{routerUUID}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response getRouter(@PathParam("routerUUID") String id,
-                              @QueryParam("fields") List<String> fields) {
-
-        if (!get(RouterService.class).exists(RouterId.valueOf(id))) {
-            return Response.status(NOT_FOUND)
-                    .entity("The Router does not exists").build();
-        }
-        Router sub = nullIsNotFound(get(RouterService.class)
-                .getRouter(RouterId.valueOf(id)), NOT_EXIST);
-
-        ObjectNode result = new ObjectMapper().createObjectNode();
-        if (!fields.isEmpty()) {
-            result.set("router",
-                       new RouterCodec().extracFields(sub, this, fields));
-        } else {
-            result.set("router", new RouterCodec().encode(sub, this));
-        }
-        return ok(result.toString()).build();
-    }
-
-    @POST
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response createRouter(final InputStream input) {
-        try {
-            ObjectMapper mapper = new ObjectMapper();
-            JsonNode subnode = readTreeFromStream(mapper, input);
-            Collection<Router> routers = createOrUpdateByInputStream(subnode);
-
-            Boolean result = nullIsNotFound((get(RouterService.class)
-                    .createRouters(routers)), CREATE_FAIL);
-            if (!result) {
-                return Response.status(CONFLICT).entity(CREATE_FAIL).build();
-            }
-            return Response.status(CREATED).entity(result.toString()).build();
-
-        } catch (IllegalArgumentException | IOException e) {
-            return Response.status(BAD_REQUEST).entity(e.getMessage()).build();
-        }
-    }
-
-    @PUT
-    @Path("{routerUUID}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response updateRouter(@PathParam("routerUUID") String id,
-                                 final InputStream input) {
-        try {
-            ObjectMapper mapper = new ObjectMapper();
-            JsonNode subnode = readTreeFromStream(mapper, input);
-            Collection<Router> routers = changeUpdateJsonToSub(subnode, id);
-            Boolean result = nullIsNotFound(get(RouterService.class)
-                    .updateRouters(routers), UPDATE_FAIL);
-            if (!result) {
-                return Response.status(CONFLICT).entity(UPDATE_FAIL).build();
-            }
-            return ok(result.toString()).build();
-        } catch (Exception e) {
-            return Response.status(BAD_REQUEST).entity(e.getMessage()).build();
-        }
-    }
-
-    @DELETE
-    @Path("{routerUUID}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response deleteSingleRouter(@PathParam("routerUUID") String id)
-            throws IOException {
-        try {
-            RouterId routerId = RouterId.valueOf(id);
-            Set<RouterId> routerIds = Sets.newHashSet(routerId);
-            get(RouterService.class).removeRouters(routerIds);
-            return Response.noContent().entity(DELETE_SUCCESS).build();
-        } catch (Exception e) {
-            return Response.status(BAD_REQUEST).entity(e.getMessage()).build();
-        }
-    }
-
-    @PUT
-    @Path("{routerUUID}/add_router_interface")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response addRouterInterface(@PathParam("routerUUID") String id,
-                                       final InputStream input) {
-        if (!get(RouterService.class).exists(RouterId.valueOf(id))) {
-            return Response.status(NOT_FOUND).entity(NOT_EXIST).build();
-        }
-        try {
-            ObjectMapper mapper = new ObjectMapper();
-            JsonNode subnode = readTreeFromStream(mapper, input);
-            if (!subnode.hasNonNull("id")) {
-                throw new IllegalArgumentException("id should not be null");
-            } else if (subnode.get("id").asText().isEmpty()) {
-                throw new IllegalArgumentException("id should not be empty");
-            }
-            RouterId routerId = RouterId.valueOf(id);
-            if (!subnode.hasNonNull("subnet_id")) {
-                throw new IllegalArgumentException("subnet_id should not be null");
-            } else if (subnode.get("subnet_id").asText().isEmpty()) {
-                throw new IllegalArgumentException("subnet_id should not be empty");
-            }
-            SubnetId subnetId = SubnetId
-                    .subnetId(subnode.get("subnet_id").asText());
-            if (!subnode.hasNonNull("tenant_id")) {
-                throw new IllegalArgumentException("tenant_id should not be null");
-            } else if (subnode.get("tenant_id").asText().isEmpty()) {
-                throw new IllegalArgumentException("tenant_id should not be empty");
-            }
-            TenantId tenantId = TenantId
-                    .tenantId(subnode.get("tenant_id").asText());
-            if (!subnode.hasNonNull("port_id")) {
-                throw new IllegalArgumentException("port_id should not be null");
-            } else if (subnode.get("port_id").asText().isEmpty()) {
-                throw new IllegalArgumentException("port_id should not be empty");
-            }
-            VirtualPortId portId = VirtualPortId
-                    .portId(subnode.get("port_id").asText());
-            RouterInterface routerInterface = RouterInterface
-                    .routerInterface(subnetId, portId, routerId, tenantId);
-            get(RouterInterfaceService.class)
-                    .addRouterInterface(routerInterface);
-            return ok(INTFACR_ADD_SUCCESS).build();
-        } catch (Exception e) {
-            return Response.status(BAD_REQUEST).entity(e.getMessage()).build();
-        }
-    }
-
-    @PUT
-    @Path("{routerUUID}/remove_router_interface")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response removeRouterInterface(@PathParam("routerUUID") String id,
-                                          final InputStream input) {
-        if (!get(RouterService.class).exists(RouterId.valueOf(id))) {
-            return Response.status(NOT_FOUND).entity(NOT_EXIST).build();
-        }
-        try {
-            ObjectMapper mapper = new ObjectMapper();
-            JsonNode subnode = readTreeFromStream(mapper, input);
-            if (!subnode.hasNonNull("id")) {
-                throw new IllegalArgumentException("id should not be null");
-            } else if (subnode.get("id").asText().isEmpty()) {
-                throw new IllegalArgumentException("id should not be empty");
-            }
-            RouterId routerId = RouterId.valueOf(id);
-            if (!subnode.hasNonNull("subnet_id")) {
-                throw new IllegalArgumentException("subnet_id should not be null");
-            } else if (subnode.get("subnet_id").asText().isEmpty()) {
-                throw new IllegalArgumentException("subnet_id should not be empty");
-            }
-            SubnetId subnetId = SubnetId
-                    .subnetId(subnode.get("subnet_id").asText());
-            if (!subnode.hasNonNull("port_id")) {
-                throw new IllegalArgumentException("port_id should not be null");
-            } else if (subnode.get("port_id").asText().isEmpty()) {
-                throw new IllegalArgumentException("port_id should not be empty");
-            }
-            VirtualPortId portId = VirtualPortId
-                    .portId(subnode.get("port_id").asText());
-            if (!subnode.hasNonNull("tenant_id")) {
-                throw new IllegalArgumentException("tenant_id should not be null");
-            } else if (subnode.get("tenant_id").asText().isEmpty()) {
-                throw new IllegalArgumentException("tenant_id should not be empty");
-            }
-            TenantId tenantId = TenantId
-                    .tenantId(subnode.get("tenant_id").asText());
-            RouterInterface routerInterface = RouterInterface
-                    .routerInterface(subnetId, portId, routerId, tenantId);
-            get(RouterInterfaceService.class)
-                    .removeRouterInterface(routerInterface);
-            return ok(INTFACR_DEL_SUCCESS).build();
-        } catch (Exception e) {
-            return Response.status(BAD_REQUEST).entity(e.getMessage()).build();
-        }
-    }
-
-    private Collection<Router> createOrUpdateByInputStream(JsonNode subnode) {
-        checkNotNull(subnode, JSON_NOT_NULL);
-        JsonNode routerNode = subnode.get("routers");
-        if (routerNode == null) {
-            routerNode = subnode.get("router");
-        }
-        log.debug("routerNode is {}", routerNode.toString());
-
-        if (routerNode.isArray()) {
-            throw new IllegalArgumentException("only singleton requests allowed");
-        } else {
-            return changeJsonToSub(routerNode);
-        }
-    }
-
-    /**
-     * Returns a collection of floatingIps from floatingIpNodes.
-     *
-     * @param routerNode the router json node
-     * @return routers a collection of router
-     */
-    public Collection<Router> changeJsonToSub(JsonNode routerNode) {
-        checkNotNull(routerNode, JSON_NOT_NULL);
-        Map<RouterId, Router> subMap = new HashMap<RouterId, Router>();
-        if (!routerNode.hasNonNull("id")) {
-            throw new IllegalArgumentException("id should not be null");
-        } else if (routerNode.get("id").asText().isEmpty()) {
-            throw new IllegalArgumentException("id should not be empty");
-        }
-        RouterId id = RouterId.valueOf(routerNode.get("id").asText());
-
-        if (!routerNode.hasNonNull("tenant_id")) {
-            throw new IllegalArgumentException("tenant_id should not be null");
-        } else if (routerNode.get("tenant_id").asText().isEmpty()) {
-            throw new IllegalArgumentException("tenant_id should not be empty");
-        }
-        TenantId tenantId = TenantId
-                .tenantId(routerNode.get("tenant_id").asText());
-
-        VirtualPortId gwPortId = null;
-        if (routerNode.hasNonNull("gw_port_id")) {
-            gwPortId = VirtualPortId
-                    .portId(routerNode.get("gw_port_id").asText());
-        }
-
-        if (!routerNode.hasNonNull("status")) {
-            throw new IllegalArgumentException("status should not be null");
-        } else if (routerNode.get("status").asText().isEmpty()) {
-            throw new IllegalArgumentException("status should not be empty");
-        }
-        Status status = Status.valueOf(routerNode.get("status").asText());
-
-        String routerName = null;
-        if (routerNode.hasNonNull("name")) {
-            routerName = routerNode.get("name").asText();
-        }
-
-        boolean adminStateUp = true;
-        checkArgument(routerNode.get("admin_state_up").isBoolean(),
-                      "admin_state_up should be boolean");
-        if (routerNode.hasNonNull("admin_state_up")) {
-            adminStateUp = routerNode.get("admin_state_up").asBoolean();
-        }
-        boolean distributed = false;
-        if (routerNode.hasNonNull("distributed")) {
-            distributed = routerNode.get("distributed").asBoolean();
-        }
-        RouterGateway gateway = null;
-        if (routerNode.hasNonNull("external_gateway_info")) {
-            gateway = jsonNodeToGateway(routerNode
-                    .get("external_gateway_info"));
-        }
-        List<String> routes = new ArrayList<String>();
-        DefaultRouter routerObj = new DefaultRouter(id, routerName,
-                                                    adminStateUp, status,
-                                                    distributed, gateway,
-                                                    gwPortId, tenantId, routes);
-        subMap.put(id, routerObj);
-        return Collections.unmodifiableCollection(subMap.values());
-    }
-
-    /**
-     * Returns a collection of floatingIps from floatingIpNodes.
-     *
-     * @param subnode the router json node
-     * @param routerId the router identify
-     * @return routers a collection of router
-     */
-    public Collection<Router> changeUpdateJsonToSub(JsonNode subnode,
-                                                    String routerId) {
-        checkNotNull(subnode, JSON_NOT_NULL);
-        checkNotNull(routerId, "routerId should not be null");
-        Map<RouterId, Router> subMap = new HashMap<RouterId, Router>();
-        JsonNode routerNode = subnode.get("router");
-        RouterId id = RouterId.valueOf(routerId);
-        Router sub = nullIsNotFound(get(RouterService.class).getRouter(id),
-                                    NOT_EXIST);
-        TenantId tenantId = sub.tenantId();
-
-        VirtualPortId gwPortId = null;
-        if (routerNode.hasNonNull("gw_port_id")) {
-            gwPortId = VirtualPortId
-                    .portId(routerNode.get("gw_port_id").asText());
-        }
-        Status status = sub.status();
-
-        String routerName = routerNode.get("name").asText();
-
-        checkArgument(routerNode.get("admin_state_up").isBoolean(),
-                      "admin_state_up should be boolean");
-        boolean adminStateUp = routerNode.get("admin_state_up").asBoolean();
-
-        boolean distributed = sub.distributed();
-        if (routerNode.hasNonNull("distributed")) {
-            distributed = routerNode.get("distributed").asBoolean();
-        }
-        RouterGateway gateway = sub.externalGatewayInfo();
-        if (routerNode.hasNonNull("external_gateway_info")) {
-            gateway = jsonNodeToGateway(routerNode
-                    .get("external_gateway_info"));
-        }
-        List<String> routes = new ArrayList<String>();
-        DefaultRouter routerObj = new DefaultRouter(id, routerName,
-                                                    adminStateUp, status,
-                                                    distributed, gateway,
-                                                    gwPortId, tenantId, routes);
-        subMap.put(id, routerObj);
-        return Collections.unmodifiableCollection(subMap.values());
-    }
-
-    /**
-     * Changes JsonNode Gateway to the Gateway.
-     *
-     * @param gateway the gateway JsonNode
-     * @return gateway
-     */
-    private RouterGateway jsonNodeToGateway(JsonNode gateway) {
-        checkNotNull(gateway, JSON_NOT_NULL);
-        if (!gateway.hasNonNull("network_id")) {
-            throw new IllegalArgumentException("network_id should not be null");
-        } else if (gateway.get("network_id").asText().isEmpty()) {
-            throw new IllegalArgumentException("network_id should not be empty");
-        }
-        TenantNetworkId networkId = TenantNetworkId
-                .networkId(gateway.get("network_id").asText());
-
-        if (!gateway.hasNonNull("enable_snat")) {
-            throw new IllegalArgumentException("enable_snat should not be null");
-        } else if (gateway.get("enable_snat").asText().isEmpty()) {
-            throw new IllegalArgumentException("enable_snat should not be empty");
-        }
-        checkArgument(gateway.get("enable_snat").isBoolean(),
-                      "enable_snat should be boolean");
-        boolean enableSnat = gateway.get("enable_snat").asBoolean();
-
-        if (!gateway.hasNonNull("external_fixed_ips")) {
-            throw new IllegalArgumentException("external_fixed_ips should not be null");
-        } else if (gateway.get("external_fixed_ips").isNull()) {
-            throw new IllegalArgumentException("external_fixed_ips should not be empty");
-        }
-        Iterable<FixedIp> fixedIpList = jsonNodeToFixedIp(gateway
-                .get("external_fixed_ips"));
-        RouterGateway gatewayObj = RouterGateway
-                .routerGateway(networkId, enableSnat, Sets.newHashSet(fixedIpList));
-        return gatewayObj;
-    }
-
-    /**
-     * Changes JsonNode fixedIp to a collection of the fixedIp.
-     *
-     * @param fixedIp the allocationPools JsonNode
-     * @return a collection of fixedIp
-     */
-    private Iterable<FixedIp> jsonNodeToFixedIp(JsonNode fixedIp) {
-        checkNotNull(fixedIp, JSON_NOT_NULL);
-        ConcurrentMap<Integer, FixedIp> fixedIpMaps = Maps.newConcurrentMap();
-        Integer i = 0;
-        for (JsonNode node : fixedIp) {
-            if (!node.hasNonNull("subnet_id")) {
-                throw new IllegalArgumentException("subnet_id should not be null");
-            } else if (node.get("subnet_id").asText().isEmpty()) {
-                throw new IllegalArgumentException("subnet_id should not be empty");
-            }
-            SubnetId subnetId = SubnetId
-                    .subnetId(node.get("subnet_id").asText());
-            if (!node.hasNonNull("ip_address")) {
-                throw new IllegalArgumentException("ip_address should not be null");
-            } else if (node.get("ip_address").asText().isEmpty()) {
-                throw new IllegalArgumentException("ip_address should not be empty");
-            }
-            IpAddress ipAddress = IpAddress
-                    .valueOf(node.get("ip_address").asText());
-            FixedIp fixedIpObj = FixedIp.fixedIp(subnetId, ipAddress);
-
-            fixedIpMaps.putIfAbsent(i, fixedIpObj);
-            i++;
-        }
-        return Collections.unmodifiableCollection(fixedIpMaps.values());
-    }
-
-    /**
-     * Returns the specified item if that items is null; otherwise throws not
-     * found exception.
-     *
-     * @param item item to check
-     * @param <T> item type
-     * @param message not found message
-     * @return item if not null
-     * @throws org.onlab.util.ItemNotFoundException if item is null
-     */
-    protected <T> T nullIsNotFound(T item, String message) {
-        if (item == null) {
-            throw new ItemNotFoundException(message);
-        }
-        return item;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java
deleted file mode 100644
index b0951f4..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
-import static javax.ws.rs.core.Response.Status.NOT_FOUND;
-import static org.onlab.util.Tools.readTreeFromStream;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentMap;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpAddress.Version;
-import org.onlab.packet.IpPrefix;
-import org.onlab.util.ItemNotFoundException;
-import org.onosproject.rest.AbstractWebResource;
-import org.onosproject.vtnrsc.AllocationPool;
-import org.onosproject.vtnrsc.DefaultAllocationPool;
-import org.onosproject.vtnrsc.DefaultHostRoute;
-import org.onosproject.vtnrsc.DefaultSubnet;
-import org.onosproject.vtnrsc.HostRoute;
-import org.onosproject.vtnrsc.Subnet;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.Subnet.Mode;
-import org.onosproject.vtnrsc.subnet.SubnetService;
-import org.onosproject.vtnweb.web.SubnetCodec;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
-@Path("subnets")
-public class SubnetWebResource extends AbstractWebResource {
-    private final Logger log = LoggerFactory.getLogger(SubnetWebResource.class);
-    public static final String SUBNET_NOT_CREATED = "Subnet failed to create!";
-    public static final String SUBNET_NOT_FOUND = "Subnet is not found";
-    public static final String JSON_NOT_NULL = "JsonNode can not be null";
-
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response listSubnets() {
-        Iterable<Subnet> subnets = get(SubnetService.class).getSubnets();
-        ObjectNode result = new ObjectMapper().createObjectNode();
-        result.set("subnets", new SubnetCodec().encode(subnets, this));
-        return ok(result.toString()).build();
-    }
-
-    @GET
-    @Path("{subnetUUID}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response getSubnet(@PathParam("subnetUUID") String id) {
-
-        if (!get(SubnetService.class).exists(SubnetId.subnetId(id))) {
-            return Response.status(NOT_FOUND)
-                    .entity(SUBNET_NOT_FOUND).build();
-        }
-        Subnet sub = nullIsNotFound(get(SubnetService.class)
-                                            .getSubnet(SubnetId.subnetId(id)),
-                                    SUBNET_NOT_FOUND);
-
-        ObjectNode result = new ObjectMapper().createObjectNode();
-        result.set("subnet", new SubnetCodec().encode(sub, this));
-        return ok(result.toString()).build();
-    }
-
-    @POST
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response createSubnet(final InputStream input) {
-
-        try {
-            ObjectMapper mapper = new ObjectMapper();
-            JsonNode subnode = readTreeFromStream(mapper, input);
-            Iterable<Subnet> subnets = createOrUpdateByInputStream(subnode);
-            Boolean result = nullIsNotFound((get(SubnetService.class)
-                                                    .createSubnets(subnets)),
-                                            SUBNET_NOT_CREATED);
-
-            if (!result) {
-                return Response.status(INTERNAL_SERVER_ERROR)
-                        .entity(SUBNET_NOT_CREATED).build();
-            }
-            return Response.status(202).entity(result.toString()).build();
-        } catch (Exception e) {
-            return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString())
-                    .build();
-        }
-    }
-
-    @PUT
-    @Path("{subnetUUID}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response updateSubnet(@PathParam("id") String id,
-                                 final InputStream input) {
-        try {
-            ObjectMapper mapper = new ObjectMapper();
-            JsonNode subnode = readTreeFromStream(mapper, input);
-            Iterable<Subnet> subnets = createOrUpdateByInputStream(subnode);
-            Boolean result = nullIsNotFound(get(SubnetService.class)
-                    .updateSubnets(subnets), SUBNET_NOT_FOUND);
-            if (!result) {
-                return Response.status(INTERNAL_SERVER_ERROR)
-                        .entity(SUBNET_NOT_FOUND).build();
-            }
-            return Response.status(203).entity(result.toString()).build();
-        } catch (Exception e) {
-            return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString())
-                    .build();
-        }
-    }
-
-    @DELETE
-    @Path("{subnetUUID}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response deleteSingleSubnet(@PathParam("subnetUUID") String id)
-            throws IOException {
-        try {
-            SubnetId subId = SubnetId.subnetId(id);
-            Set<SubnetId> subIds = new HashSet<>();
-            subIds.add(subId);
-            get(SubnetService.class).removeSubnets(subIds);
-            return Response.noContent().entity("SUCCESS").build();
-        } catch (Exception e) {
-            return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString())
-                    .build();
-        }
-    }
-
-    private Iterable<Subnet> createOrUpdateByInputStream(JsonNode subnode) {
-        checkNotNull(subnode, JSON_NOT_NULL);
-        Iterable<Subnet> subnets = null;
-        JsonNode subnetNodes = subnode.get("subnets");
-        if (subnetNodes == null) {
-            subnetNodes = subnode.get("subnet");
-        }
-        log.debug("subnetNodes is {}", subnetNodes.toString());
-        if (subnetNodes.isArray()) {
-            subnets = changeJsonToSubs(subnetNodes);
-        } else {
-            subnets = changeJsonToSub(subnetNodes);
-        }
-        return subnets;
-    }
-
-    /**
-     * Returns a collection of subnets from subnetNodes.
-     *
-     * @param subnetNodes the subnet json node
-     * @return subnets a collection of subnets
-     */
-    public Iterable<Subnet> changeJsonToSubs(JsonNode subnetNodes) {
-        checkNotNull(subnetNodes, JSON_NOT_NULL);
-        Map<SubnetId, Subnet> subMap = new HashMap<>();
-        for (JsonNode subnetNode : subnetNodes) {
-            if (!subnetNode.hasNonNull("id")) {
-                return null;
-            }
-            SubnetId id = SubnetId.subnetId(subnetNode.get("id").asText());
-            String subnetName = subnetNode.get("name").asText();
-            TenantId tenantId = TenantId
-                    .tenantId(subnetNode.get("tenant_id").asText());
-            TenantNetworkId networkId = TenantNetworkId
-                    .networkId(subnetNode.get("network_id").asText());
-            String version = subnetNode.get("ip_version").asText();
-            Version ipVersion;
-            switch (version) {
-            case "4":
-                ipVersion = Version.INET;
-                break;
-            case "6":
-                ipVersion = Version.INET;
-                break;
-            default:
-                throw new IllegalArgumentException("ipVersion should be 4 or 6.");
-            }
-            IpPrefix cidr = IpPrefix.valueOf(subnetNode.get("cidr").asText());
-            IpAddress gatewayIp = IpAddress
-                    .valueOf(subnetNode.get("gateway_ip").asText());
-            Boolean dhcpEnabled = subnetNode.get("enable_dhcp").asBoolean();
-            Boolean shared = subnetNode.get("shared").asBoolean();
-            JsonNode hostRoutes = subnetNode.get("host_routes");
-            Iterable<HostRoute> hostRoutesIt = jsonNodeToHostRoutes(hostRoutes);
-            JsonNode allocationPools = subnetNode.get("allocation_pools");
-            Iterable<AllocationPool> allocationPoolsIt = jsonNodeToAllocationPools(allocationPools);
-            Mode ipV6AddressMode = Mode
-                    .valueOf(subnetNode.get("ipv6_address_mode").asText());
-            Mode ipV6RaMode = Mode
-                    .valueOf(subnetNode.get("ipv6_ra_mode").asText());
-            Subnet subnet = new DefaultSubnet(id, subnetName, networkId,
-                                              tenantId, ipVersion, cidr,
-                                              gatewayIp, dhcpEnabled, shared,
-                                              Sets.newHashSet(hostRoutesIt), ipV6AddressMode,
-                                              ipV6RaMode, Sets.newHashSet(allocationPoolsIt));
-            subMap.put(id, subnet);
-        }
-        return Collections.unmodifiableCollection(subMap.values());
-    }
-
-    /**
-     * Returns a collection of subnets from subnetNodes.
-     *
-     * @param subnetNodes the subnet json node
-     * @return subnets a collection of subnets
-     */
-    public Iterable<Subnet> changeJsonToSub(JsonNode subnetNodes) {
-        checkNotNull(subnetNodes, JSON_NOT_NULL);
-        checkArgument(subnetNodes.get("enable_dhcp").isBoolean(), "enable_dhcp should be boolean");
-        checkArgument(subnetNodes.get("shared").isBoolean(), "shared should be boolean");
-        Map<SubnetId, Subnet> subMap = new HashMap<>();
-        if (!subnetNodes.hasNonNull("id")) {
-            return null;
-        }
-        SubnetId id = SubnetId.subnetId(subnetNodes.get("id").asText());
-        String subnetName = subnetNodes.get("name").asText();
-        TenantId tenantId = TenantId
-                .tenantId(subnetNodes.get("tenant_id").asText());
-        TenantNetworkId networkId = TenantNetworkId
-                .networkId(subnetNodes.get("network_id").asText());
-        String version = subnetNodes.get("ip_version").asText();
-        Version ipVersion;
-        switch (version) {
-        case "4":
-            ipVersion = Version.INET;
-            break;
-        case "6":
-            ipVersion = Version.INET;
-            break;
-        default:
-            throw new IllegalArgumentException("ipVersion should be 4 or 6.");
-        }
-
-        IpPrefix cidr = IpPrefix.valueOf(subnetNodes.get("cidr").asText());
-        IpAddress gatewayIp = IpAddress
-                .valueOf(subnetNodes.get("gateway_ip").asText());
-        Boolean dhcpEnabled = subnetNodes.get("enable_dhcp").asBoolean();
-        Boolean shared = subnetNodes.get("shared").asBoolean();
-        JsonNode hostRoutes = subnetNodes.get("host_routes");
-        Iterable<HostRoute> hostRoutesIt = jsonNodeToHostRoutes(hostRoutes);
-        JsonNode allocationPools = subnetNodes.get("allocation_pools");
-        Iterable<AllocationPool> allocationPoolsIt = jsonNodeToAllocationPools(allocationPools);
-
-        Mode ipV6AddressMode = getMode(subnetNodes.get("ipv6_address_mode")
-                .asText());
-        Mode ipV6RaMode = getMode(subnetNodes.get("ipv6_ra_mode").asText());
-
-        Subnet subnet = new DefaultSubnet(id, subnetName, networkId, tenantId,
-                                          ipVersion, cidr, gatewayIp,
-                                          dhcpEnabled, shared, Sets.newHashSet(hostRoutesIt),
-                                          ipV6AddressMode, ipV6RaMode,
-                                          Sets.newHashSet(allocationPoolsIt));
-        subMap.put(id, subnet);
-        return Collections.unmodifiableCollection(subMap.values());
-    }
-
-    /**
-     * Gets ipv6_address_mode or ipv6_ra_mode type.
-     *
-     * @param mode the String value in JsonNode
-     * @return ipV6Mode Mode of the ipV6Mode
-     */
-    private Mode getMode(String mode) {
-        Mode ipV6Mode;
-        if (mode == null) {
-            return null;
-        }
-        switch (mode) {
-        case "dhcpv6-stateful":
-            ipV6Mode = Mode.DHCPV6_STATEFUL;
-            break;
-        case "dhcpv6-stateless":
-            ipV6Mode = Mode.DHCPV6_STATELESS;
-            break;
-        case "slaac":
-            ipV6Mode = Mode.SLAAC;
-            break;
-        default:
-            ipV6Mode = null;
-        }
-        return ipV6Mode;
-    }
-
-    /**
-     * Changes JsonNode alocPools to a collection of the alocPools.
-     *
-     * @param allocationPools the allocationPools JsonNode
-     * @return a collection of allocationPools
-     */
-    public Iterable<AllocationPool> jsonNodeToAllocationPools(JsonNode allocationPools) {
-        checkNotNull(allocationPools, JSON_NOT_NULL);
-        ConcurrentMap<Integer, AllocationPool> alocplMaps = Maps
-                .newConcurrentMap();
-        Integer i = 0;
-        for (JsonNode node : allocationPools) {
-            IpAddress startIp = IpAddress.valueOf(node.get("start").asText());
-            IpAddress endIp = IpAddress.valueOf(node.get("end").asText());
-            AllocationPool alocPls = new DefaultAllocationPool(startIp, endIp);
-            alocplMaps.putIfAbsent(i, alocPls);
-            i++;
-        }
-        return Collections.unmodifiableCollection(alocplMaps.values());
-    }
-
-    /**
-     * Changes hostRoutes JsonNode to a collection of the hostRoutes.
-     *
-     * @param hostRoutes the hostRoutes json node
-     * @return a collection of hostRoutes
-     */
-    public Iterable<HostRoute> jsonNodeToHostRoutes(JsonNode hostRoutes) {
-        checkNotNull(hostRoutes, JSON_NOT_NULL);
-        ConcurrentMap<Integer, HostRoute> hostRouteMaps = Maps
-                .newConcurrentMap();
-        Integer i = 0;
-        for (JsonNode node : hostRoutes) {
-            IpAddress nexthop = IpAddress.valueOf(node.get("nexthop").asText());
-            IpPrefix destination = IpPrefix.valueOf(node.get("destination")
-                    .asText());
-            HostRoute hostRoute = new DefaultHostRoute(nexthop, destination);
-            hostRouteMaps.putIfAbsent(i, hostRoute);
-            i++;
-        }
-        return Collections.unmodifiableCollection(hostRouteMaps.values());
-    }
-
-    /**
-     * Returns the specified item if that items is null; otherwise throws not
-     * found exception.
-     *
-     * @param item item to check
-     * @param <T> item type
-     * @param message not found message
-     * @return item if not null
-     * @throws org.onlab.util.ItemNotFoundException if item is null
-     */
-    protected <T> T nullIsNotFound(T item, String message) {
-        if (item == null) {
-            throw new ItemNotFoundException(message);
-        }
-        return item;
-    }
-
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java
deleted file mode 100644
index a18682c..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Maps;
-import org.onlab.util.ItemNotFoundException;
-import org.onosproject.rest.AbstractWebResource;
-import org.onosproject.vtnrsc.DefaultTenantNetwork;
-import org.onosproject.vtnrsc.PhysicalNetwork;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetwork;
-import org.onosproject.vtnrsc.TenantNetwork.State;
-import org.onosproject.vtnrsc.TenantNetwork.Type;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.service.VtnRscService;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-import org.onosproject.vtnweb.web.TenantNetworkCodec;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.io.InputStream;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.concurrent.ConcurrentMap;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
-import static javax.ws.rs.core.Response.Status.NOT_FOUND;
-import static javax.ws.rs.core.Response.Status.OK;
-import static org.onlab.util.Tools.readTreeFromStream;
-
-/**
- * REST resource for interacting with the inventory of networks.
- */
-@Path("networks")
-public class TenantNetworkWebResource extends AbstractWebResource {
-    public static final String NETWORK_NOT_FOUND = "Network is not found";
-    public static final String NETWORK_ID_EXIST = "Network id is existed";
-    public static final String NETWORK_ID_NOT_EXIST = "Network id is not existed";
-    public static final String CREATE_NETWORK = "create network";
-    public static final String UPDATE_NETWORK = "update network";
-    public static final String DELETE_NETWORK = "delete network";
-    public static final String JSON_NOT_NULL = "JsonNode can not be null";
-
-    private static final Logger log = LoggerFactory
-            .getLogger(TenantNetworkWebResource.class);
-    private final ConcurrentMap<TenantNetworkId, TenantNetwork> networksMap = Maps
-            .newConcurrentMap();
-
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response getNetworks(@QueryParam("id") String queryId,
-                                @QueryParam("name") String queryName,
-                                @QueryParam("admin_state_up") String queryadminStateUp,
-                                @QueryParam("status") String querystate,
-                                @QueryParam("shared") String queryshared,
-                                @QueryParam("tenant_id") String querytenantId,
-                                @QueryParam("router:external") String routerExternal,
-                                @QueryParam("provider:network_type") String type,
-                                @QueryParam("provider:physical_network") String physicalNetwork,
-                                @QueryParam("provider:segmentation_id") String segmentationId) {
-        Iterable<TenantNetwork> networks = get(TenantNetworkService.class)
-                .getNetworks();
-        Iterator<TenantNetwork> networkors = networks.iterator();
-        while (networkors.hasNext()) {
-            TenantNetwork network = networkors.next();
-            if ((queryId == null || queryId.equals(network.id().toString()))
-                    && (queryName == null || queryName.equals(network.name()))
-                    && (queryadminStateUp == null || queryadminStateUp
-                            .equals(Boolean.toString(network.adminStateUp())))
-                    && (querystate == null || querystate.equals(network.state()
-                            .toString()))
-                    && (queryshared == null || queryshared.equals(Boolean.toString(network
-                            .shared())))
-                    && (querytenantId == null || querytenantId.equals(network
-                            .tenantId().toString()))
-                    && (routerExternal == null || routerExternal.equals(Boolean.toString(network
-                    .routerExternal())))
-                    && (type == null || type.equals(network.type().toString()))
-                    && (physicalNetwork == null || physicalNetwork
-                    .equals(network.physicalNetwork().toString()))
-                    && (segmentationId == null || segmentationId.equals(network
-                            .segmentationId().toString()))) {
-                networksMap.putIfAbsent(network.id(), network);
-            }
-        }
-        networks = Collections.unmodifiableCollection(networksMap.values());
-        ObjectNode result = new ObjectMapper().createObjectNode();
-        result.set("networks", new TenantNetworkCodec().encode(networks, this));
-
-        return ok(result.toString()).build();
-    }
-
-    private State isState(String state) {
-        if ("ACTIVE".equals(state)) {
-            return TenantNetwork.State.ACTIVE;
-        } else if ("BUILD".equals(state)) {
-            return TenantNetwork.State.BUILD;
-        } else if ("DOWN".equals(state)) {
-            return TenantNetwork.State.DOWN;
-        } else if ("ERROR".equals(state)) {
-            return TenantNetwork.State.ERROR;
-        } else {
-            return null;
-        }
-    }
-
-    private Type isType(String type) {
-        if ("LOCAL".equals(type)) {
-            return TenantNetwork.Type.LOCAL;
-        } else {
-            return null;
-        }
-    }
-
-    @GET
-    @Path("{id}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response getNetwork(@PathParam("id") String id) {
-
-        if (!get(TenantNetworkService.class).exists(TenantNetworkId
-                                                            .networkId(id))) {
-            return Response.status(NOT_FOUND)
-                    .entity(NETWORK_NOT_FOUND).build();
-        }
-        TenantNetwork network = nullIsNotFound(get(TenantNetworkService.class)
-                .getNetwork(TenantNetworkId.networkId(id)), NETWORK_NOT_FOUND);
-        ObjectNode result = new ObjectMapper().createObjectNode();
-        result.set("network", new TenantNetworkCodec().encode(network, this));
-
-        return ok(result.toString()).build();
-
-    }
-
-    @POST
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response createNetworks(InputStream input) {
-        try {
-            ObjectMapper mapper = new ObjectMapper();
-            JsonNode cfg = readTreeFromStream(mapper, input);
-            JsonNode nodes = null;
-            Iterable<TenantNetwork> networks = null;
-            if (cfg.get("network") != null) {
-                nodes = cfg.get("network");
-                if (nodes.isArray()) {
-                    networks = changeJson2objs(nodes);
-                } else {
-                    networks = changeJson2obj(CREATE_NETWORK, null, nodes);
-                }
-            } else if (cfg.get("networks") != null) {
-                nodes = cfg.get("networks");
-                networks = changeJson2objs(nodes);
-            }
-            Boolean issuccess = nullIsNotFound((get(TenantNetworkService.class)
-                                                       .createNetworks(networks)),
-                                               NETWORK_NOT_FOUND);
-
-            if (!issuccess) {
-                return Response.status(INTERNAL_SERVER_ERROR)
-                        .entity(NETWORK_ID_EXIST).build();
-            }
-            return Response.status(OK).entity(issuccess.toString()).build();
-        } catch (Exception e) {
-            log.error("Creates tenantNetwork exception {}.", e.toString());
-            return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString())
-                    .build();
-        }
-    }
-
-    @PUT
-    @Path("{id}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response updateNetworks(@PathParam("id") String id, InputStream input) {
-        try {
-            ObjectMapper mapper = new ObjectMapper();
-            JsonNode cfg = readTreeFromStream(mapper, input);
-            JsonNode nodes = null;
-            Iterable<TenantNetwork> networks = null;
-            if (cfg.get("network") != null) {
-                nodes = cfg.get("network");
-                if (nodes.isArray()) {
-                    networks = changeJson2objs(nodes);
-                } else {
-                    networks = changeJson2obj(UPDATE_NETWORK,
-                                              TenantNetworkId.networkId(id),
-                                              nodes);
-                }
-            } else if (cfg.get("networks") != null) {
-                nodes = cfg.get("networks");
-                networks = changeJson2objs(nodes);
-            }
-            Boolean issuccess = nullIsNotFound((get(TenantNetworkService.class)
-                                                       .updateNetworks(networks)),
-                                               NETWORK_NOT_FOUND);
-            if (!issuccess) {
-                return Response.status(INTERNAL_SERVER_ERROR)
-                        .entity(NETWORK_ID_NOT_EXIST).build();
-            }
-            return Response.status(OK).entity(issuccess.toString()).build();
-        } catch (Exception e) {
-            log.error("Updates tenantNetwork failed because of exception {}.",
-                      e.toString());
-            return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString())
-                    .build();
-        }
-    }
-
-    @DELETE
-    @Path("{id}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response deleteNetworks(@PathParam("id") String id) {
-        log.debug("Deletes network by identifier {}.", id);
-        Set<TenantNetworkId> networkSet = new HashSet<>();
-        networkSet.add(TenantNetworkId.networkId(id));
-        Boolean issuccess = nullIsNotFound(get(TenantNetworkService.class)
-                .removeNetworks(networkSet), NETWORK_NOT_FOUND);
-        if (!issuccess) {
-            log.debug("Network identifier {} is not existed", id);
-            return Response.status(INTERNAL_SERVER_ERROR)
-                    .entity(NETWORK_ID_NOT_EXIST).build();
-        }
-        return ok(issuccess.toString()).build();
-    }
-
-    /**
-     * Returns a collection of tenantNetworks.
-     *
-     * @param flag the flag
-     * @param networkId network identifier
-     * @param node the network json node
-     * @return a collection of tenantNetworks
-     */
-    public Iterable<TenantNetwork> changeJson2obj(String flag,
-                                                  TenantNetworkId networkId,
-                                                  JsonNode node) {
-        checkNotNull(node, JSON_NOT_NULL);
-        TenantNetwork network = null;
-        ConcurrentMap<TenantNetworkId, TenantNetwork> networksMap = Maps
-                .newConcurrentMap();
-        checkArgument(node.get("admin_state_up").isBoolean(), "admin_state_up should be boolean");
-        checkArgument(node.get("shared").isBoolean(), "shared should be boolean");
-        checkArgument(node.get("router:external").isBoolean(), "router:external should be boolean");
-        String name = node.get("name").asText();
-        boolean adminStateUp = node.get("admin_state_up").asBoolean();
-        String state = node.get("status").asText();
-        boolean shared = node.get("shared").asBoolean();
-        String tenantIdStr = node.get("tenant_id").asText();
-        boolean routerExternal = node.get("router:external").asBoolean();
-        String type = node.get("provider:network_type").asText();
-        String physicalNetwork = node.get("provider:physical_network").asText();
-        String segmentationIdStr = node.get("provider:segmentation_id").asText();
-        SegmentationId segmentationId = SegmentationId.segmentationId(segmentationIdStr);
-        TenantId tenantId = TenantId.tenantId(tenantIdStr);
-        if (segmentationIdStr == null || "null".equals(segmentationIdStr)) {
-            segmentationId = get(VtnRscService.class).getL3vni(tenantId);
-        }
-        TenantNetworkId id = null;
-        if (flag.equals(CREATE_NETWORK)) {
-            id = TenantNetworkId.networkId(node.get("id").asText());
-        } else if (flag.equals(UPDATE_NETWORK)) {
-            id = networkId;
-        }
-        network = new DefaultTenantNetwork(
-                                           id,
-                                           name,
-                                           adminStateUp,
-                                           isState(state),
-                                           shared,
-                                           tenantId,
-                                           routerExternal,
-                                           isType(type),
-                                           PhysicalNetwork
-                                                   .physicalNetwork(physicalNetwork),
-                                           segmentationId);
-        networksMap.putIfAbsent(id, network);
-
-        return Collections.unmodifiableCollection(networksMap.values());
-    }
-
-    /**
-     * Returns a collection of tenantNetworks.
-     *
-     * @param nodes the network jsonnodes
-     * @return a collection of tenantNetworks
-     */
-    public Iterable<TenantNetwork> changeJson2objs(JsonNode nodes) {
-        checkNotNull(nodes, JSON_NOT_NULL);
-        TenantNetwork network = null;
-        ConcurrentMap<TenantNetworkId, TenantNetwork> networksMap = Maps
-                .newConcurrentMap();
-        for (JsonNode node : nodes) {
-            String id = node.get("id").asText();
-            String name = node.get("name").asText();
-            boolean adminStateUp = node.get("admin_state_up").asBoolean();
-            String state = node.get("status").asText();
-            boolean shared = node.get("shared").asBoolean();
-            String tenantIdStr = node.get("tenant_id").asText();
-            boolean routerExternal = node.get("router:external")
-                    .asBoolean();
-            String type = node.get("provider:network_type").asText();
-            String physicalNetwork = node.get("provider:physical_network").asText();
-            String segmentationIdStr = node.get("provider:segmentation_id").asText();
-            SegmentationId segmentationId = SegmentationId.segmentationId(segmentationIdStr);
-            TenantId tenantId = TenantId.tenantId(tenantIdStr);
-            if (segmentationIdStr == null || "null".equals(segmentationIdStr)) {
-                segmentationId = get(VtnRscService.class).getL3vni(tenantId);
-            }
-            network = new DefaultTenantNetwork(
-                                               TenantNetworkId.networkId(id),
-                                               name,
-                                               adminStateUp,
-                                               isState(state),
-                                               shared,
-                                               tenantId,
-                                               routerExternal,
-                                               isType(type),
-                                               PhysicalNetwork.physicalNetwork(physicalNetwork),
-                                               segmentationId);
-            networksMap.putIfAbsent(TenantNetworkId.networkId(id), network);
-        }
-
-        return Collections.unmodifiableCollection(networksMap.values());
-    }
-
-    /**
-     * Returns the specified item if that items is null; otherwise throws not
-     * found exception.
-     *
-     * @param item item to check
-     * @param <T> item type
-     * @param message not found message
-     * @return item if not null
-     * @throws org.onlab.util.ItemNotFoundException if item is null
-     */
-    protected <T> T nullIsNotFound(T item, String message) {
-        if (item == null) {
-            throw new ItemNotFoundException(message);
-        }
-        return item;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java
deleted file mode 100644
index 014b563..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java
+++ /dev/null
@@ -1,415 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onlab.util.ItemNotFoundException;
-import org.onosproject.net.DeviceId;
-import org.onosproject.rest.AbstractWebResource;
-import org.onosproject.vtnrsc.AllowedAddressPair;
-import org.onosproject.vtnrsc.BindingHostId;
-import org.onosproject.vtnrsc.DefaultVirtualPort;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.SecurityGroup;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPort.State;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.virtualport.VirtualPortService;
-import org.onosproject.vtnweb.web.VirtualPortCodec;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.io.InputStream;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentMap;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
-import static javax.ws.rs.core.Response.Status.NOT_FOUND;
-import static javax.ws.rs.core.Response.Status.OK;
-import static org.onlab.util.Tools.readTreeFromStream;
-
-/**
- * REST resource for interacting with the inventory of infrastructure
- * virtualPort.
- */
-@Path("ports")
-public class VirtualPortWebResource extends AbstractWebResource {
-    public static final String VPORT_NOT_FOUND = "VirtualPort is not found";
-    public static final String VPORT_ID_EXIST = "VirtualPort id is exist";
-    public static final String VPORT_ID_NOT_EXIST = "VirtualPort id is not exist";
-    public static final String JSON_NOT_NULL = "JsonNode can not be null";
-    private static final Logger log = LoggerFactory
-            .getLogger(VirtualPortService.class);
-
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response getPorts() {
-        Iterable<VirtualPort> virtualPorts = get(VirtualPortService.class)
-                .getPorts();
-        ObjectNode result = new ObjectMapper().createObjectNode();
-        result.set("ports", new VirtualPortCodec().encode(virtualPorts, this));
-        return ok(result.toString()).build();
-    }
-
-    @GET
-    @Path("{id}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response getportsById(@PathParam("id") String id) {
-
-        if (!get(VirtualPortService.class).exists(VirtualPortId.portId(id))) {
-            return Response.status(NOT_FOUND)
-                    .entity(VPORT_NOT_FOUND).build();
-        }
-        VirtualPort virtualPort = nullIsNotFound(get(VirtualPortService.class)
-                .getPort(VirtualPortId.portId(id)), VPORT_NOT_FOUND);
-        ObjectNode result = new ObjectMapper().createObjectNode();
-        result.set("port", new VirtualPortCodec().encode(virtualPort, this));
-        return ok(result.toString()).build();
-    }
-
-    @POST
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response createPorts(InputStream input) {
-        try {
-            ObjectMapper mapper = new ObjectMapper();
-            JsonNode cfg = readTreeFromStream(mapper, input);
-            Iterable<VirtualPort> vPorts = createOrUpdateByInputStream(cfg);
-            Boolean issuccess = nullIsNotFound(get(VirtualPortService.class)
-                    .createPorts(vPorts), VPORT_NOT_FOUND);
-            if (!issuccess) {
-                return Response.status(INTERNAL_SERVER_ERROR)
-                        .entity(VPORT_ID_NOT_EXIST).build();
-            }
-            return Response.status(OK).entity(issuccess.toString()).build();
-        } catch (Exception e) {
-            log.error("Creates VirtualPort failed because of exception {}",
-                      e.toString());
-            return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString())
-                    .build();
-        }
-    }
-
-    @DELETE
-    @Path("{portUUID}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response deletePorts(@PathParam("portUUID") String id) {
-        Set<VirtualPortId> vPortIds = new HashSet<>();
-        try {
-            if (id != null) {
-                vPortIds.add(VirtualPortId.portId(id));
-            }
-            Boolean issuccess = nullIsNotFound(get(VirtualPortService.class)
-                    .removePorts(vPortIds), VPORT_NOT_FOUND);
-            if (!issuccess) {
-                return Response.status(INTERNAL_SERVER_ERROR)
-                        .entity(VPORT_ID_NOT_EXIST).build();
-            }
-            return ok(issuccess.toString()).build();
-        } catch (Exception e) {
-            log.error("Deletes VirtualPort failed because of exception {}",
-                      e.toString());
-            return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString())
-                    .build();
-        }
-    }
-
-    @PUT
-    @Path("{id}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response updatePorts(@PathParam("id") String id, InputStream input) {
-        try {
-            ObjectMapper mapper = new ObjectMapper();
-            JsonNode cfg = readTreeFromStream(mapper, input);
-            Iterable<VirtualPort> vPorts = createOrUpdateByInputStream(cfg);
-            Boolean issuccess = nullIsNotFound(get(VirtualPortService.class)
-                    .updatePorts(vPorts), VPORT_NOT_FOUND);
-            if (!issuccess) {
-                return Response.status(INTERNAL_SERVER_ERROR)
-                        .entity(VPORT_ID_NOT_EXIST).build();
-            }
-            return Response.status(OK).entity(issuccess.toString()).build();
-        } catch (Exception e) {
-            log.error("Updates failed because of exception {}", e.toString());
-            return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString())
-                    .build();
-        }
-    }
-
-    /**
-     * Returns a Object of the currently known infrastructure virtualPort.
-     *
-     * @param vPortNode the virtualPort json node
-     * @return a collection of virtualPorts
-     */
-    public Iterable<VirtualPort> createOrUpdateByInputStream(JsonNode vPortNode) {
-        checkNotNull(vPortNode, JSON_NOT_NULL);
-        JsonNode vPortNodes = vPortNode.get("ports");
-        if (vPortNodes == null) {
-            vPortNodes = vPortNode.get("port");
-        }
-        if (vPortNodes.isArray()) {
-            return changeJsonToPorts(vPortNodes);
-        } else {
-            return changeJsonToPort(vPortNodes);
-        }
-    }
-
-    /**
-     * Returns the iterable collection of virtualports from subnetNodes.
-     *
-     * @param vPortNodes the virtualPort json node
-     * @return virtualPorts a collection of virtualPorts
-     */
-    public Iterable<VirtualPort> changeJsonToPorts(JsonNode vPortNodes) {
-        checkNotNull(vPortNodes, JSON_NOT_NULL);
-        Map<VirtualPortId, VirtualPort> portMap = new HashMap<>();
-        Map<String, String> strMap = new HashMap<>();
-        for (JsonNode vPortnode : vPortNodes) {
-            VirtualPortId id = VirtualPortId.portId(vPortnode.get("id")
-                    .asText());
-            String name = vPortnode.get("name").asText();
-            TenantId tenantId = TenantId.tenantId(vPortnode.get("tenant_id")
-                    .asText());
-            TenantNetworkId networkId = TenantNetworkId.networkId(vPortnode
-                    .get("network_id").asText());
-            checkArgument(vPortnode.get("admin_state_up").isBoolean(), "admin_state_up should be boolean");
-            Boolean adminStateUp = vPortnode.get("admin_state_up").asBoolean();
-            String state = vPortnode.get("status").asText();
-            MacAddress macAddress = MacAddress.valueOf(vPortnode
-                    .get("mac_address").asText());
-            DeviceId deviceId = DeviceId.deviceId(vPortnode.get("device_id")
-                    .asText());
-            String deviceOwner = vPortnode.get("device_owner").asText();
-            JsonNode fixedIpNodes = vPortNodes.get("fixed_ips");
-            Set<FixedIp> fixedIps = new HashSet<>();
-            for (JsonNode fixedIpNode : fixedIpNodes) {
-                FixedIp fixedIp = jsonNodeToFixedIps(fixedIpNode);
-                fixedIps.add(fixedIp);
-            }
-
-            BindingHostId bindingHostId = BindingHostId
-                    .bindingHostId(vPortnode.get("binding:host_id").asText());
-            String bindingVnicType = vPortnode.get("binding:vnic_type")
-                    .asText();
-            String bindingVifType = vPortnode.get("binding:vif_type").asText();
-            String bindingVifDetails = vPortnode.get("binding:vif_details")
-                    .asText();
-            JsonNode allowedAddressPairJsonNode = vPortnode
-                    .get("allowed_address_pairs");
-            Collection<AllowedAddressPair> allowedAddressPairs =
-                    jsonNodeToAllowedAddressPair(allowedAddressPairJsonNode);
-            JsonNode securityGroupNode = vPortnode.get("security_groups");
-            Collection<SecurityGroup> securityGroups = jsonNodeToSecurityGroup(securityGroupNode);
-            strMap.put("name", name);
-            strMap.put("deviceOwner", deviceOwner);
-            strMap.put("bindingVnicType", bindingVnicType);
-            strMap.put("bindingVifType", bindingVifType);
-            strMap.put("bindingVifDetails", bindingVifDetails);
-            VirtualPort vPort = new DefaultVirtualPort(id, networkId,
-                                                       adminStateUp, strMap,
-                                                       isState(state),
-                                                       macAddress, tenantId,
-                                                       deviceId, fixedIps,
-                                                       bindingHostId,
-                                                       Sets.newHashSet(allowedAddressPairs),
-                                                       Sets.newHashSet(securityGroups));
-            portMap.put(id, vPort);
-        }
-        return Collections.unmodifiableCollection(portMap.values());
-    }
-
-    /**
-     * Returns a collection of virtualPorts from subnetNodes.
-     *
-     * @param vPortNodes the virtualPort json node
-     * @return virtualPorts a collection of virtualPorts
-     */
-    public Iterable<VirtualPort> changeJsonToPort(JsonNode vPortNodes) {
-        checkNotNull(vPortNodes, JSON_NOT_NULL);
-        Map<VirtualPortId, VirtualPort> vportMap = new HashMap<>();
-        Map<String, String> strMap = new HashMap<>();
-        VirtualPortId id = VirtualPortId.portId(vPortNodes.get("id").asText());
-        String name = vPortNodes.get("name").asText();
-        TenantId tenantId = TenantId.tenantId(vPortNodes.get("tenant_id")
-                .asText());
-        TenantNetworkId networkId = TenantNetworkId.networkId(vPortNodes
-                .get("network_id").asText());
-        Boolean adminStateUp = vPortNodes.get("admin_state_up").asBoolean();
-        String state = vPortNodes.get("status").asText();
-        MacAddress macAddress = MacAddress.valueOf(vPortNodes
-                .get("mac_address").asText());
-        DeviceId deviceId = DeviceId.deviceId(vPortNodes.get("device_id")
-                .asText());
-        String deviceOwner = vPortNodes.get("device_owner").asText();
-        JsonNode fixedIpNodes = vPortNodes.get("fixed_ips");
-        Set<FixedIp> fixedIps = new HashSet<>();
-        for (JsonNode fixedIpNode : fixedIpNodes) {
-            FixedIp fixedIp = jsonNodeToFixedIps(fixedIpNode);
-            fixedIps.add(fixedIp);
-        }
-
-        BindingHostId bindingHostId = BindingHostId
-                .bindingHostId(vPortNodes.get("binding:host_id").asText());
-        String bindingVnicType = vPortNodes.get("binding:vnic_type").asText();
-        String bindingVifType = vPortNodes.get("binding:vif_type").asText();
-        String bindingVifDetails = vPortNodes.get("binding:vif_details")
-                .asText();
-        JsonNode allowedAddressPairJsonNode = vPortNodes
-                .get("allowed_address_pairs");
-        Collection<AllowedAddressPair> allowedAddressPairs =
-                jsonNodeToAllowedAddressPair(allowedAddressPairJsonNode);
-        JsonNode securityGroupNode = vPortNodes.get("security_groups");
-        Collection<SecurityGroup> securityGroups = jsonNodeToSecurityGroup(securityGroupNode);
-        strMap.put("name", name);
-        strMap.put("deviceOwner", deviceOwner);
-        strMap.put("bindingVnicType", bindingVnicType);
-        strMap.put("bindingVifType", bindingVifType);
-        strMap.put("bindingVifDetails", bindingVifDetails);
-        VirtualPort vPort = new DefaultVirtualPort(id, networkId, adminStateUp,
-                                                   strMap, isState(state),
-                                                   macAddress, tenantId,
-                                                   deviceId, fixedIps,
-                                                   bindingHostId,
-                                                   Sets.newHashSet(allowedAddressPairs),
-                                                   Sets.newHashSet(securityGroups));
-        vportMap.put(id, vPort);
-
-        return Collections.unmodifiableCollection(vportMap.values());
-    }
-
-    /**
-     * Returns a Object of the currently known infrastructure virtualPort.
-     *
-     * @param allowedAddressPairs the allowedAddressPairs json node
-     * @return a collection of allowedAddressPair
-     */
-    public Collection<AllowedAddressPair> jsonNodeToAllowedAddressPair(JsonNode allowedAddressPairs) {
-        checkNotNull(allowedAddressPairs, JSON_NOT_NULL);
-        ConcurrentMap<Integer, AllowedAddressPair> allowMaps = Maps
-                .newConcurrentMap();
-        int i = 0;
-        for (JsonNode node : allowedAddressPairs) {
-            IpAddress ip = IpAddress.valueOf(node.get("ip_address").asText());
-            MacAddress mac = MacAddress.valueOf(node.get("mac_address")
-                    .asText());
-            AllowedAddressPair allows = AllowedAddressPair
-                    .allowedAddressPair(ip, mac);
-            allowMaps.put(i, allows);
-            i++;
-        }
-        log.debug("The jsonNode of allowedAddressPairallow is {}"
-                + allowedAddressPairs.toString());
-        return Collections.unmodifiableCollection(allowMaps.values());
-    }
-
-    /**
-     * Returns a collection of virtualPorts.
-     *
-     * @param securityGroups the virtualPort jsonnode
-     * @return a collection of securityGroups
-     */
-    public Collection<SecurityGroup> jsonNodeToSecurityGroup(JsonNode securityGroups) {
-        checkNotNull(securityGroups, JSON_NOT_NULL);
-        ConcurrentMap<Integer, SecurityGroup> securMaps = Maps
-                .newConcurrentMap();
-        int i = 0;
-        for (JsonNode node : securityGroups) {
-            SecurityGroup securityGroup = SecurityGroup
-                    .securityGroup(node.asText());
-            securMaps.put(i, securityGroup);
-            i++;
-        }
-        return Collections.unmodifiableCollection(securMaps.values());
-    }
-
-    /**
-     * Returns a collection of fixedIps.
-     *
-     * @param fixedIpNode the fixedIp jsonnode
-     * @return a collection of SecurityGroup
-     */
-    public FixedIp jsonNodeToFixedIps(JsonNode fixedIpNode) {
-        SubnetId subnetId = SubnetId.subnetId(fixedIpNode.get("subnet_id")
-                .asText());
-        IpAddress ipAddress = IpAddress.valueOf(fixedIpNode.get("ip_address")
-                .asText());
-        FixedIp fixedIps = FixedIp.fixedIp(subnetId, ipAddress);
-        return fixedIps;
-    }
-
-    /**
-     * Returns VirtualPort State.
-     *
-     * @param state the virtualport state
-     * @return the virtualPort state
-     */
-    private State isState(String state) {
-        if ("ACTIVE".equals(state)) {
-            return VirtualPort.State.ACTIVE;
-        } else {
-            return VirtualPort.State.DOWN;
-        }
-
-    }
-
-    /**
-     * Returns the specified item if that items is null; otherwise throws not
-     * found exception.
-     *
-     * @param item item to check
-     * @param <T> item type
-     * @param message not found message
-     * @return item if not null
-     * @throws org.onlab.util.ItemNotFoundException if item is null
-     */
-    protected <T> T nullIsNotFound(T item, String message) {
-        if (item == null) {
-            throw new ItemNotFoundException(message);
-        }
-        return item;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VtnWebApplication.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VtnWebApplication.java
deleted file mode 100644
index 64d5060..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VtnWebApplication.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import org.onlab.rest.AbstractWebApplication;
-
-import java.util.Set;
-
-/**
- * VTN REST API web application.
- */
-public class VtnWebApplication extends AbstractWebApplication {
-    @Override
-    public Set<Class<?>> getClasses() {
-        return getClasses(TenantNetworkWebResource.class,
-                          SubnetWebResource.class,
-                          VirtualPortWebResource.class,
-                          FlowClassifierWebResource.class,
-                          PortChainWebResource.class,
-                          PortPairGroupWebResource.class,
-                          PortPairWebResource.class,
-                          FloatingIpWebResource.class,
-                          RouterWebResource.class,
-                          ClassifierWebResource.class,
-                          PortChainSfMapWebResource.class,
-                          PortChainDeviceMapWebResource.class);
-    }
-}
-
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/package-info.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/package-info.java
deleted file mode 100644
index 473ba7e..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * VTN web that used rest to creat vtn resources.
- */
-package org.onosproject.vtnweb.resources;
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllocationPoolsCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllocationPoolsCodec.java
deleted file mode 100644
index e0e1b3f..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllocationPoolsCodec.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.AllocationPool;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Subnet AllocationPool codec.
- */
-public final class AllocationPoolsCodec extends JsonCodec<AllocationPool> {
-
-    @Override
-    public ObjectNode encode(AllocationPool alocPool, CodecContext context) {
-        checkNotNull(alocPool, "AllocationPools cannot be null");
-        ObjectNode result = context.mapper().createObjectNode()
-                .put("start", alocPool.startIp().toString())
-                .put("end", alocPool.endIp().toString());
-        return result;
-    }
-
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllowedAddressPairCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllowedAddressPairCodec.java
deleted file mode 100644
index a6a12be..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllowedAddressPairCodec.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.AllowedAddressPair;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * VirtualPort AllowedAddressPair codec.
- */
-public final class AllowedAddressPairCodec extends JsonCodec<AllowedAddressPair> {
-
-    @Override
-    public ObjectNode encode(AllowedAddressPair alocAddPair, CodecContext context) {
-        checkNotNull(alocAddPair, "AllowedAddressPair cannot be null");
-        ObjectNode result = context.mapper().createObjectNode()
-                .put("ip_address", alocAddPair.ip().toString())
-                .put("mac_address", alocAddPair.mac().toString());
-        return result;
-    }
-
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FixedIpCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FixedIpCodec.java
deleted file mode 100644
index cdfdb42..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FixedIpCodec.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.FixedIp;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * VirtualPort FixedIp codec.
- */
-public final class FixedIpCodec extends JsonCodec<FixedIp> {
-
-    @Override
-    public ObjectNode encode(FixedIp fixIp, CodecContext context) {
-        checkNotNull(fixIp, "FixedIp cannot be null");
-        ObjectNode result = context.mapper().createObjectNode()
-                .put("subnet_id", fixIp.subnetId().toString())
-                .put("ip_address", fixIp.ip().toString());
-        return result;
-    }
-
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FloatingIpCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FloatingIpCodec.java
deleted file mode 100644
index 804f424..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FloatingIpCodec.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.FloatingIp;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * FloatingIp JSON codec.
- */
-public final class FloatingIpCodec extends JsonCodec<FloatingIp> {
-    @Override
-    public ObjectNode encode(FloatingIp floatingIp, CodecContext context) {
-        checkNotNull(floatingIp, "floatingIp cannot be null");
-        ObjectNode result = context
-                .mapper()
-                .createObjectNode()
-                .put("id", floatingIp.id().floatingIpId().toString())
-                .put("floating_network_id", floatingIp.networkId().toString())
-                .put("router_id",
-                     floatingIp.routerId() == null ? null : floatingIp
-                             .routerId().routerId())
-                .put("tenant_id", floatingIp.tenantId().toString())
-                .put("port_id",
-                     floatingIp.portId() == null ? null : floatingIp.portId()
-                             .toString())
-                .put("fixed_ip_address",
-                     floatingIp.fixedIp() == null ? null : floatingIp.fixedIp()
-                             .toString())
-                .put("floating_ip_address", floatingIp.floatingIp().toString())
-                .put("status", floatingIp.status().toString());
-        return result;
-    }
-
-    public ObjectNode extracFields(FloatingIp floatingIp, CodecContext context,
-                                   List<String> fields) {
-        checkNotNull(floatingIp, "floatingIp cannot be null");
-        ObjectNode result = context.mapper().createObjectNode();
-        Iterator<String> i = fields.iterator();
-        while (i.hasNext()) {
-            String s = i.next();
-            if ("floating_network_id".equals(s)) {
-                result.put("floating_network_id", floatingIp.networkId()
-                        .toString());
-            }
-            if ("router_id".equals(s)) {
-                result.put("router_id",
-                           floatingIp.routerId() == null ? null : floatingIp
-                                   .routerId().routerId());
-            }
-            if ("tenant_id".equals(s)) {
-                result.put("tenant_id", floatingIp.tenantId().toString());
-            }
-            if ("port_id".equals(s)) {
-                result.put("port_id",
-                           floatingIp.portId() == null ? null : floatingIp
-                                   .portId().toString());
-            }
-            if ("id".equals(s)) {
-                result.put("id", floatingIp.id().floatingIpId().toString());
-            }
-            if ("fixed_ip_address".equals(s)) {
-                result.put("fixed_ip_address",
-                           floatingIp.fixedIp() == null ? null : floatingIp
-                                   .fixedIp().toString());
-            }
-            if ("floating_ip_address".equals(s)) {
-                result.put("floating_ip_address", floatingIp.floatingIp()
-                        .toString());
-            }
-            if ("status".equals(s)) {
-                result.put("status", floatingIp.status().toString());
-            }
-        }
-        return result;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java
deleted file mode 100644
index 491904a..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onlab.util.Tools.nullIsIllegal;
-
-import org.onlab.packet.IpPrefix;
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.DefaultFlowClassifier;
-import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.VirtualPortId;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Flow Classifier JSON codec.
- */
-public final class FlowClassifierCodec extends JsonCodec<FlowClassifier> {
-
-    private static final String FLOW_CLASSIFIER_ID = "id";
-    private static final String TENANT_ID = "tenant_id";
-    private static final String NAME = "name";
-    private static final String DESCRIPTION = "description";
-    private static final String ETHER_TYPE = "ethertype";
-    private static final String PROTOCOL = "protocol";
-    private static final String PRIORITY = "priority";
-    private static final String MIN_SRC_PORT_RANGE = "source_port_range_min";
-    private static final String MAX_SRC_PORT_RANGE = "source_port_range_max";
-    private static final String MIN_DST_PORT_RANGE = "destination_port_range_min";
-    private static final String MAX_DST_PORT_RANGE = "destination_port_range_max";
-    private static final String SRC_IP_PREFIX = "source_ip_prefix";
-    private static final String DST_IP_PREFIX = "destination_ip_prefix";
-    private static final String SRC_PORT = "logical_source_port";
-    private static final String DST_PORT = "logical_destination_port";
-    private static final String MISSING_MEMBER_MESSAGE = " member is required in Flow Classifier.";
-
-    @Override
-    public FlowClassifier decode(ObjectNode json, CodecContext context) {
-        if (json == null || !json.isObject()) {
-            return null;
-        }
-
-        FlowClassifier.Builder resultBuilder = new DefaultFlowClassifier.Builder();
-
-        String flowClassifierId = nullIsIllegal(json.get(FLOW_CLASSIFIER_ID),
-                FLOW_CLASSIFIER_ID + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setFlowClassifierId(FlowClassifierId.of(flowClassifierId));
-
-        String tenantId = nullIsIllegal(json.get(TENANT_ID), TENANT_ID + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setTenantId(TenantId.tenantId(tenantId));
-
-        String flowClassiferName = nullIsIllegal(json.get(NAME), NAME + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setName(flowClassiferName);
-
-        String flowClassiferDescription = (json.get(DESCRIPTION)).asText();
-        resultBuilder.setDescription(flowClassiferDescription);
-
-        String etherType = nullIsIllegal(json.get(ETHER_TYPE), ETHER_TYPE + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setEtherType(etherType);
-
-        if (json.get(PROTOCOL) != null && !"null".equals((json.get(PROTOCOL)).asText())) {
-            String protocol = (json.get(PROTOCOL)).asText();
-            resultBuilder.setProtocol(protocol);
-        }
-
-        if (json.get(PRIORITY) != null && !"null".equals((json.get(PRIORITY)).asText())) {
-            int priority = (json.get(PRIORITY)).asInt();
-            resultBuilder.setPriority(priority);
-        }
-
-        int minSrcPortRange = (json.get(MIN_SRC_PORT_RANGE)).asInt();
-        resultBuilder.setMinSrcPortRange(minSrcPortRange);
-
-        int maxSrcPortRange = (json.get(MAX_SRC_PORT_RANGE)).asInt();
-        resultBuilder.setMaxSrcPortRange(maxSrcPortRange);
-
-        int minDstPortRange = (json.get(MIN_DST_PORT_RANGE)).asInt();
-        resultBuilder.setMinDstPortRange(minDstPortRange);
-
-        int maxDstPortRange = (json.get(MAX_DST_PORT_RANGE)).asInt();
-        resultBuilder.setMaxDstPortRange(maxDstPortRange);
-
-        if (json.get(SRC_IP_PREFIX) != null && !"null".equals((json.get(SRC_IP_PREFIX)).asText())) {
-            String srcIpPrefix = (json.get(SRC_IP_PREFIX)).asText();
-            resultBuilder.setSrcIpPrefix(IpPrefix.valueOf(srcIpPrefix));
-        }
-
-        if (json.get(DST_IP_PREFIX) != null && !"null".equals((json.get(DST_IP_PREFIX)).asText())) {
-            String dstIpPrefix = (json.get(DST_IP_PREFIX)).asText();
-            resultBuilder.setDstIpPrefix(IpPrefix.valueOf(dstIpPrefix));
-        }
-
-        if (json.get(SRC_PORT) != null && !"null".equals((json.get(SRC_PORT)).asText())) {
-            String srcPort = (json.get(SRC_PORT)).asText();
-            resultBuilder.setSrcPort(VirtualPortId.portId(srcPort));
-        }
-
-        if (json.get(DST_PORT) != null && !"null".equals((json.get(DST_PORT)).asText())) {
-            String dstPort = (json.get(DST_PORT)).asText();
-            resultBuilder.setDstPort(VirtualPortId.portId(dstPort));
-        }
-        return resultBuilder.build();
-    }
-
-    @Override
-    public ObjectNode encode(FlowClassifier flowClassifier, CodecContext context) {
-        checkNotNull(flowClassifier, "flowClassifier cannot be null");
-        ObjectNode result = context.mapper().createObjectNode();
-        result.put(FLOW_CLASSIFIER_ID, flowClassifier.flowClassifierId().toString())
-                .put(TENANT_ID, flowClassifier.tenantId().toString())
-                .put(NAME, flowClassifier.name())
-                .put(DESCRIPTION, flowClassifier.description())
-                .put(ETHER_TYPE, flowClassifier.etherType())
-                .put(PROTOCOL, flowClassifier.protocol())
-                .put(PRIORITY, flowClassifier.priority())
-                .put(MIN_SRC_PORT_RANGE, flowClassifier.minSrcPortRange())
-                .put(MAX_SRC_PORT_RANGE, flowClassifier.maxSrcPortRange())
-                .put(MIN_DST_PORT_RANGE, flowClassifier.minDstPortRange())
-                .put(MAX_DST_PORT_RANGE, flowClassifier.maxDstPortRange());
-
-        if (flowClassifier.srcIpPrefix() != null) {
-            result.put(SRC_IP_PREFIX, flowClassifier.srcIpPrefix().toString());
-        } else {
-            result.put(SRC_IP_PREFIX, "null");
-        }
-        if (flowClassifier.dstIpPrefix() != null) {
-            result.put(DST_IP_PREFIX, flowClassifier.dstIpPrefix().toString());
-        } else {
-            result.put(DST_IP_PREFIX, "null");
-        }
-
-        if (flowClassifier.srcPort() != null) {
-            result.put(SRC_PORT, flowClassifier.srcPort().toString());
-        } else {
-            result.put(SRC_PORT, "null");
-        }
-        if (flowClassifier.dstPort() != null) {
-            result.put(DST_PORT, flowClassifier.dstPort().toString());
-        } else {
-            result.put(DST_PORT, "null");
-        }
-        return result;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/HostRoutesCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/HostRoutesCodec.java
deleted file mode 100644
index 8a0a9a1..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/HostRoutesCodec.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.HostRoute;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Subnet HostRoute codec.
- */
-public final class HostRoutesCodec extends JsonCodec<HostRoute> {
-
-    @Override
-    public ObjectNode encode(HostRoute hostRoute, CodecContext context) {
-        checkNotNull(hostRoute, "HostRoute cannot be null");
-        ObjectNode result = context.mapper().createObjectNode()
-                .put("nexthop", hostRoute.nexthop().toString())
-                .put("destination", hostRoute.destination().toString());
-        return result;
-    }
-
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortChainCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortChainCodec.java
deleted file mode 100644
index 8478a76..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortChainCodec.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onlab.util.Tools.nullIsIllegal;
-
-import java.util.List;
-import java.util.UUID;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.DefaultPortChain;
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortChainId;
-import org.onosproject.vtnrsc.PortPairGroupId;
-
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Lists;
-
-/**
- * Port chain JSON codec.
- */
-public final class PortChainCodec extends JsonCodec<PortChain> {
-
-    private static final String ID = "id";
-    private static final String TENANT_ID = "tenant_id";
-    private static final String NAME = "name";
-    private static final String DESCRIPTION = "description";
-    private static final String PORT_PAIR_GROUPS = "port_pair_groups";
-    private static final String FLOW_CLASSIFIERS = "flow_classifiers";
-    private static final String MISSING_MEMBER_MESSAGE =
-            " member is required in PortChain";
-
-    @Override
-    public PortChain decode(ObjectNode json, CodecContext context) {
-        if (json == null || !json.isObject()) {
-            return null;
-        }
-
-        PortChain.Builder resultBuilder = new DefaultPortChain.Builder();
-
-        String id = nullIsIllegal(json.get(ID),
-                                  ID + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setId(PortChainId.of(id));
-
-        String tenantId = nullIsIllegal(json.get(TENANT_ID),
-                                        TENANT_ID + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setTenantId(TenantId.tenantId(tenantId));
-
-        String name = nullIsIllegal(json.get(NAME),
-                                    NAME + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setName(name);
-
-        String description = nullIsIllegal(json.get(DESCRIPTION),
-                                           DESCRIPTION + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setDescription(description);
-
-        ArrayNode arrayNode = (ArrayNode) json.path(PORT_PAIR_GROUPS);
-        if (arrayNode != null) {
-            List<PortPairGroupId> list = Lists.newArrayList();
-            arrayNode.forEach(i -> list.add(PortPairGroupId.of(i.asText())));
-            resultBuilder.setPortPairGroups(list);
-        }
-
-        arrayNode = (ArrayNode) json.path(FLOW_CLASSIFIERS);
-        if (arrayNode != null) {
-            List<FlowClassifierId> list = Lists.newArrayList();
-            arrayNode.forEach(i -> list.add(FlowClassifierId.of(UUID.fromString(i.asText()))));
-            resultBuilder.setFlowClassifiers(list);
-        }
-
-        return resultBuilder.build();
-    }
-
-    @Override
-    public ObjectNode encode(PortChain portChain, CodecContext context) {
-        checkNotNull(portChain, "port pair cannot be null");
-        ObjectNode result = context.mapper().createObjectNode()
-                .put(ID, portChain.portChainId().toString())
-                .put(TENANT_ID, portChain.tenantId().toString())
-                .put(NAME, portChain.name())
-                .put(DESCRIPTION, portChain.description())
-                .put(PORT_PAIR_GROUPS, portChain.portPairGroups().toString())
-                .put(FLOW_CLASSIFIERS, portChain.flowClassifiers().toString());
-        return result;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairCodec.java
deleted file mode 100644
index 2b63bfe..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairCodec.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onlab.util.Tools.nullIsIllegal;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.core.CoreService;
-import org.onosproject.vtnrsc.DefaultPortPair;
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.TenantId;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Port Pair JSON codec.
- */
-public final class PortPairCodec extends JsonCodec<PortPair> {
-
-    private static final String ID = "id";
-    private static final String TENANT_ID = "tenant_id";
-    private static final String NAME = "name";
-    private static final String DESCRIPTION = "description";
-    private static final String INGRESS = "ingress";
-    private static final String EGRESS = "egress";
-    private static final String MISSING_MEMBER_MESSAGE =
-            " member is required in PortPair";
-
-    @Override
-    public PortPair decode(ObjectNode json, CodecContext context) {
-        if (json == null || !json.isObject()) {
-            return null;
-        }
-
-        PortPair.Builder resultBuilder = new DefaultPortPair.Builder();
-
-        CoreService coreService = context.getService(CoreService.class);
-
-        String id = nullIsIllegal(json.get(ID),
-                                  ID + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setId(PortPairId.of(id));
-
-        String tenantId = nullIsIllegal(json.get(TENANT_ID),
-                                        TENANT_ID + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setTenantId(TenantId.tenantId(tenantId));
-
-        String name = nullIsIllegal(json.get(NAME),
-                                    NAME + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setName(name);
-
-        String description = nullIsIllegal(json.get(DESCRIPTION),
-                                           DESCRIPTION + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setDescription(description);
-
-        String ingressPort = nullIsIllegal(json.get(INGRESS),
-                                           INGRESS + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setIngress(ingressPort);
-
-        String egressPort = nullIsIllegal(json.get(EGRESS),
-                                          EGRESS + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setEgress(egressPort);
-
-        return resultBuilder.build();
-    }
-
-    @Override
-    public ObjectNode encode(PortPair portPair, CodecContext context) {
-        checkNotNull(portPair, "port pair cannot be null");
-        ObjectNode result = context.mapper().createObjectNode()
-                .put(ID, portPair.portPairId().toString())
-                .put(TENANT_ID, portPair.tenantId().toString())
-                .put(NAME, portPair.name())
-                .put(DESCRIPTION, portPair.description())
-                .put(INGRESS, portPair.ingress())
-                .put(EGRESS, portPair.egress());
-        return result;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairGroupCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairGroupCodec.java
deleted file mode 100644
index 76c5d43..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairGroupCodec.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onlab.util.Tools.nullIsIllegal;
-
-import java.util.List;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.core.CoreService;
-import org.onosproject.vtnrsc.DefaultPortPairGroup;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.TenantId;
-
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Lists;
-
-/**
- * Port Pair Group JSON codec.
- */
-public final class PortPairGroupCodec extends JsonCodec<PortPairGroup> {
-
-    private static final String ID = "id";
-    private static final String TENANT_ID = "tenant_id";
-    private static final String NAME = "name";
-    private static final String DESCRIPTION = "description";
-    private static final String PORT_PAIRS = "port_pairs";
-    private static final String MISSING_MEMBER_MESSAGE =
-            " member is required in PortPairGroup";
-
-    @Override
-    public PortPairGroup decode(ObjectNode json, CodecContext context) {
-        if (json == null || !json.isObject()) {
-            return null;
-        }
-
-        PortPairGroup.Builder resultBuilder = new DefaultPortPairGroup.Builder();
-
-        CoreService coreService = context.getService(CoreService.class);
-
-        String id = nullIsIllegal(json.get(ID),
-                                  ID + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setId(PortPairGroupId.of(id));
-
-        String tenantId = nullIsIllegal(json.get(TENANT_ID),
-                                        TENANT_ID + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setTenantId(TenantId.tenantId(tenantId));
-
-        String name = nullIsIllegal(json.get(NAME),
-                                    NAME + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setName(name);
-
-        String description = nullIsIllegal(json.get(DESCRIPTION),
-                                           DESCRIPTION + MISSING_MEMBER_MESSAGE).asText();
-        resultBuilder.setDescription(description);
-
-        List<PortPairId> list = Lists.newArrayList();
-        ArrayNode arrayNode = (ArrayNode) json.path(PORT_PAIRS);
-        arrayNode.forEach(i -> list.add(PortPairId.of(i.asText())));
-        resultBuilder.setPortPairs(list);
-
-        return resultBuilder.build();
-    }
-
-    @Override
-    public ObjectNode encode(PortPairGroup portPairGroup, CodecContext context) {
-        checkNotNull(portPairGroup, "port pair group cannot be null");
-        ObjectNode result = context.mapper().createObjectNode()
-                .put(ID, portPairGroup.portPairGroupId().toString())
-                .put(TENANT_ID, portPairGroup.tenantId().toString())
-                .put(NAME, portPairGroup.name())
-                .put(DESCRIPTION, portPairGroup.description())
-                .put(PORT_PAIRS, portPairGroup.portPairs().toString());
-        return result;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterCodec.java
deleted file mode 100644
index 1b650ad..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterCodec.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.Router;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Router JSON codec.
- */
-public class RouterCodec extends JsonCodec<Router> {
-    @Override
-    public ObjectNode encode(Router router, CodecContext context) {
-        checkNotNull(router, "router cannot be null");
-        ObjectNode result = context
-                .mapper()
-                .createObjectNode()
-                .put("id", router.id().routerId())
-                .put("status", router.status().toString())
-                .put("name", router.name().toString())
-                .put("admin_state_up", router.adminStateUp())
-                .put("tenant_id", router.tenantId().toString())
-                .put("routes",
-                     router.routes() == null ? null : router.routes()
-                             .toString());
-        result.set("external_gateway_info",
-                   router.externalGatewayInfo() == null ? null
-                                                       : new RouterGatewayInfoCodec()
-                                                        .encode(router.externalGatewayInfo(), context));
-
-        return result;
-    }
-
-    public ObjectNode extracFields(Router router, CodecContext context,
-                                   List<String> fields) {
-        checkNotNull(router, "router cannot be null");
-        ObjectNode result = context.mapper().createObjectNode();
-        Iterator<String> i = fields.iterator();
-        while (i.hasNext()) {
-            String s = i.next();
-            if ("id".equals(s)) {
-                result.put("id", router.id().routerId());
-            }
-            if ("status".equals(s)) {
-                result.put("status", router.status().toString());
-            }
-            if ("name".equals(s)) {
-                result.put("name", router.name().toString());
-            }
-            if ("admin_state_up".equals(s)) {
-                result.put("admin_state_up", router.adminStateUp());
-            }
-            if ("tenant_id".equals(s)) {
-                result.put("tenant_id", router.tenantId().toString());
-            }
-            if ("routes".equals(s)) {
-                result.put("routes", router.routes() == null ? null : router
-                        .routes().toString());
-            }
-            if ("external_gateway_info".equals(s)) {
-                result.set("external_gateway_info",
-                           router.externalGatewayInfo() == null ? null
-                                                               : new RouterGatewayInfoCodec()
-                                                                       .encode(router.externalGatewayInfo(),
-                                                                               context));
-            }
-        }
-        return result;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterGatewayInfoCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterGatewayInfoCodec.java
deleted file mode 100644
index 260c873..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterGatewayInfoCodec.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.RouterGateway;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Subnet Router Gateway Info codec.
- */
-public class RouterGatewayInfoCodec extends JsonCodec<RouterGateway> {
-    @Override
-    public ObjectNode encode(RouterGateway routerGateway, CodecContext context) {
-        checkNotNull(routerGateway, "routerGateway cannot be null");
-        ObjectNode result = context.mapper().createObjectNode()
-                .put("network_id", routerGateway.networkId().toString());
-        result.set("external_fixed_ips", new FixedIpCodec()
-                .encode(routerGateway.externalFixedIps(), context));
-        return result;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SecurityGroupCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SecurityGroupCodec.java
deleted file mode 100644
index 6089e3f..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SecurityGroupCodec.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.SecurityGroup;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Virtualport SecurityGroup codec.
- */
-public final class SecurityGroupCodec extends JsonCodec<SecurityGroup> {
-
-    @Override
-    public ObjectNode encode(SecurityGroup securGroup, CodecContext context) {
-        checkNotNull(securGroup, "SecurityGroup cannot be null");
-        ObjectNode result = context.mapper().createObjectNode()
-                .put("security_group", securGroup.securityGroup());
-        return result;
-    }
-
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/ServiceFunctionCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/ServiceFunctionCodec.java
deleted file mode 100644
index 394c6b4..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/ServiceFunctionCodec.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.ServiceFunctionGroup;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Service function JSON codec.
- */
-public final class ServiceFunctionCodec extends JsonCodec<ServiceFunctionGroup> {
-
-    private static final String NAME = "name";
-    private static final String DESCRIPTION = "description";
-    private static final String PORT_PAIR_LOAD = "port_pair_load";
-    @Override
-    public ObjectNode encode(ServiceFunctionGroup serviceFunction, CodecContext context) {
-        checkNotNull(serviceFunction, "service cannot be null");
-        ObjectNode result = context.mapper().createObjectNode()
-                .put(NAME, serviceFunction.name())
-                .put(DESCRIPTION, serviceFunction.description())
-                .put(PORT_PAIR_LOAD, serviceFunction.portPairLoadMap().toString());
-        return result;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SubnetCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SubnetCodec.java
deleted file mode 100644
index a97ab8b..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SubnetCodec.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.Subnet;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Subnet JSON codec.
- */
-public final class SubnetCodec extends JsonCodec<Subnet> {
-    @Override
-    public ObjectNode encode(Subnet subnet, CodecContext context) {
-        checkNotNull(subnet, "Subnet cannot be null");
-        ObjectNode result = context.mapper().createObjectNode()
-                .put("id", subnet.id().toString())
-                .put("gateway_ip", subnet.gatewayIp().toString())
-                .put("network_id", subnet.networkId().toString())
-                .put("name", subnet.subnetName())
-                .put("ip_version", subnet.ipVersion().toString())
-                .put("cidr", subnet.cidr().toString())
-                .put("shared", subnet.shared())
-                .put("enabled_dchp", subnet.dhcpEnabled())
-                .put("tenant_id", subnet.tenantId().toString())
-                .put("ipv6_address_mode", subnet.ipV6AddressMode() == null ? null
-                          : subnet.ipV6AddressMode().toString())
-                .put("ipv6_ra_mode", subnet.ipV6RaMode() == null ? null
-                          : subnet.ipV6RaMode().toString());
-        result.set("allocation_pools", new AllocationPoolsCodec().encode(subnet
-                .allocationPools(), context));
-        result.set("host_routes",
-                   new HostRoutesCodec().encode(subnet.hostRoutes(), context));
-        return result;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/TenantNetworkCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/TenantNetworkCodec.java
deleted file mode 100644
index 7a23d4c..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/TenantNetworkCodec.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.TenantNetwork;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * TenantNetwork JSON codec.
- */
-public final class TenantNetworkCodec extends JsonCodec<TenantNetwork> {
-
-    @Override
-    public ObjectNode encode(TenantNetwork network, CodecContext context) {
-        checkNotNull(network, "Network cannot be null");
-        ObjectNode result = context.mapper().createObjectNode()
-                .put("id", network.id().toString())
-                .put("name", network.name())
-                .put("admin_state_up", network.adminStateUp())
-                .put("status", "" + network.state())
-                .put("shared", network.shared())
-                .put("tenant_id", network.tenantId().toString())
-                .put("router:external", network.routerExternal())
-                .put("provider:network_type", "" + network.type())
-                .put("provider:physical_network", network.physicalNetwork().toString())
-                .put("provider:segmentation_id", network.segmentationId().toString());
-        return result;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VirtualPortCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VirtualPortCodec.java
deleted file mode 100644
index 8cf7823..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VirtualPortCodec.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.VirtualPort;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * VirtualPort JSON codec.
- */
-public final class VirtualPortCodec extends JsonCodec<VirtualPort> {
-    @Override
-    public ObjectNode encode(VirtualPort vPort, CodecContext context) {
-        checkNotNull(vPort, "VPort cannot be null");
-        ObjectNode result = context
-                .mapper()
-                .createObjectNode()
-                .put("id", vPort.portId().toString())
-                .put("network_id", vPort.networkId().toString())
-                .put("admin_state_up", vPort.adminStateUp())
-                .put("name", vPort.name())
-                .put("status", vPort.state().toString())
-                .put("mac_address", vPort.macAddress().toString())
-                .put("tenant_id", vPort.tenantId().toString())
-                .put("device_id", vPort.deviceId().toString())
-                .put("device_owner", vPort.deviceOwner())
-                .put("binding:vnic_type", vPort.bindingVnicType())
-                .put("binding:Vif_type", vPort.bindingVifType())
-                .put("binding:host_id", vPort.bindingHostId().toString())
-                .put("binding:vif_details", vPort.bindingVifDetails());
-        result.set("allowed_address_pairs", new AllowedAddressPairCodec().encode(
-                                                                               vPort.allowedAddressPairs(), context));
-        result.set("fixed_ips", new FixedIpCodec().encode(
-                                                        vPort.fixedIps(), context));
-        result.set("security_groups", new SecurityGroupCodec().encode(
-                                                        vPort.securityGroups(), context));
-        return result;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VtnCodecRegistrator.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VtnCodecRegistrator.java
deleted file mode 100644
index 33581eb..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VtnCodecRegistrator.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.codec.CodecService;
-import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.ServiceFunctionGroup;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Implementation of the JSON codec brokering service for VTN app.
- */
-@Component(immediate = true)
-public class VtnCodecRegistrator {
-
-    private static Logger log = LoggerFactory.getLogger(VtnCodecRegistrator.class);
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CodecService codecService;
-
-    @Activate
-    public void activate() {
-        codecService.registerCodec(PortPair.class, new PortPairCodec());
-        codecService.registerCodec(PortPairGroup.class, new PortPairGroupCodec());
-        codecService.registerCodec(FlowClassifier.class, new FlowClassifierCodec());
-        codecService.registerCodec(PortChain.class, new PortChainCodec());
-        codecService.registerCodec(ServiceFunctionGroup.class, new ServiceFunctionCodec());
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        log.info("Stopped");
-    }
-}
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/package-info.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/package-info.java
deleted file mode 100644
index 84cdade..0000000
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Codecs for virtual tenant objects.
- */
-package org.onosproject.vtnweb.web;
diff --git a/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.css b/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.css
deleted file mode 100644
index 8db5b70..0000000
--- a/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.css
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/*
- ONOS GUI -- SFC View -- CSS file
- */
-
-#ov-sfc h2 {
-    display: inline-block;
-}
-
-#ov-sfc div.ctrl-btns {
-    width: 45px;
-}
\ No newline at end of file
diff --git a/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.html b/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.html
deleted file mode 100644
index adf9e3c..0000000
--- a/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!--
-  ~ Copyright 2016-present Open Networking Foundation
-  ~
-  ~ 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.
-  -->
-
-<!-- SFC partial HTML -->
-<div id="ov-sfc">
-    <div class="tabular-header">
-        <h2>service function chains ({{tableData.length}} total)</h2>
-        <div class="ctrl-btns">
-            <div class="refresh" ng-class="{active: autoRefresh}"
-                 icon icon-size="36" icon-id="refresh"
-                 tooltip tt-msg="autoRefreshTip"
-                 ng-click="toggleRefresh()"></div>
-        </div>
-    </div>
-
-    <div class="summary-list" onos-table-resize>
-        <div class="table-header" onos-sortable-header>
-            <table>
-                <tr>
-                    <td colId="_iconid_state" class="table-icon" sortable></td>
-                    <td colId="portChainName" sortable>PortChainName </td>
-                    <td colId="sfs" sortable>Sfs </td>
-                    <td colId="type" sortable>Type </td>
-                    <td colId="srcIp" sortable>Source IP Prefix </td>
-                    <td colId="dstIp" sortable>Destination IP Prefix </td>
-                </tr>
-            </table>
-        </div>
-
-        <div class="table-body">
-            <table onos-flash-changes id-prop="one">
-                <tr ng-if="!tableData.length" class="no-data">
-                    <td colspan="6">
-                        No Service Function Chain found
-                    </td>
-                </tr>
-
-                <tr ng-repeat="sfc in tableData track by $index"
-                    ng-repeat-complete row-id="{{sfc.id}}">
-                    <td class="table-icon">
-                        <div icon icon-id="{{sfc._iconid_state}}"></div>
-                    </td>
-                    <td>{{sfc.portChainName}}</td>
-                    <td>{{sfc.sfs}}</td>
-                    <td>{{sfc.type}}</td>
-                    <td>{{sfc.srcIp}}</td>
-                    <td>{{sfc.dstIp}}</td>
-                </tr>
-            </table>
-        </div>
-
-    </div>
-
-</div>
diff --git a/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.js b/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.js
deleted file mode 100644
index 60a5cf0..0000000
--- a/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/*
- ONOS GUI -- SFC View Module
- */
-
-(function () {
-    'use strict';
-
-    angular.module('ovSfc', [])
-    .controller('OvSfcCtrl',
-        ['$log', '$scope', '$sce', 'FnService', 'TableBuilderService',
-
-        function ($log, $scope, $sce, fs, tbs) {
-            tbs.buildTable({
-                scope: $scope,
-                tag: 'sfc'
-            });
-
-            $log.log('OvSfcCtrl has been created');
-        }]);
-}());
diff --git a/apps/vtn/vtnweb/src/main/resources/gui/css.html b/apps/vtn/vtnweb/src/main/resources/gui/css.html
deleted file mode 100644
index eced4a3..0000000
--- a/apps/vtn/vtnweb/src/main/resources/gui/css.html
+++ /dev/null
@@ -1 +0,0 @@
-<link rel="stylesheet" href="app/view/sfc/sfc.css">
\ No newline at end of file
diff --git a/apps/vtn/vtnweb/src/main/resources/gui/js.html b/apps/vtn/vtnweb/src/main/resources/gui/js.html
deleted file mode 100644
index b6dcf44..0000000
--- a/apps/vtn/vtnweb/src/main/resources/gui/js.html
+++ /dev/null
@@ -1 +0,0 @@
-<script src="app/view/sfc/sfc.js"></script>
\ No newline at end of file
diff --git a/apps/vtn/vtnweb/src/main/webapp/WEB-INF/web.xml b/apps/vtn/vtnweb/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 8c368d9..0000000
--- a/apps/vtn/vtnweb/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Copyright 2015-present Open Networking Foundation
-  ~
-  ~ 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.
-  -->
-<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
-         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
-         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
-         id="ONOS" version="2.5">
-    <display-name>VTNRSC REST API v1.0</display-name>
-
-    <security-constraint>
-        <web-resource-collection>
-            <web-resource-name>Secured</web-resource-name>
-            <url-pattern>/*</url-pattern>
-        </web-resource-collection>
-        <auth-constraint>
-            <role-name>admin</role-name>
-            <role-name>viewer</role-name>
-        </auth-constraint>
-    </security-constraint>
-
-    <security-role>
-        <role-name>admin</role-name>
-        <role-name>viewer</role-name>
-    </security-role>
-
-    <login-config>
-        <auth-method>BASIC</auth-method>
-        <realm-name>karaf</realm-name>
-    </login-config>
-
-    <servlet>
-        <servlet-name>JAX-RS Service</servlet-name>
-        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
-        <init-param>
-            <param-name>javax.ws.rs.Application</param-name>
-            <param-value>org.onosproject.vtnweb.resources.VtnWebApplication</param-value>
-        </init-param>
-        <load-on-startup>1</load-on-startup>
-    </servlet>
-
-    <servlet-mapping>
-        <servlet-name>JAX-RS Service</servlet-name>
-        <url-pattern>/*</url-pattern>
-    </servlet-mapping>
-</web-app>
diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/ClassifierResourceTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/ClassifierResourceTest.java
deleted file mode 100644
index 5fa977c..0000000
--- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/ClassifierResourceTest.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import com.eclipsesource.json.Json;
-import com.eclipsesource.json.JsonObject;
-import com.google.common.collect.ImmutableList;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.osgi.TestServiceDirectory;
-import org.onosproject.codec.CodecService;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.vtnrsc.classifier.ClassifierService;
-import org.onosproject.vtnweb.web.SfcCodecContext;
-
-import javax.ws.rs.client.WebTarget;
-
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.junit.Assert.assertThat;
-import static org.onosproject.net.NetTestTools.device;
-import static org.onosproject.net.NetTestTools.did;
-
-/**
- * Unit tests for classifier REST APIs.
- */
-public class ClassifierResourceTest extends VtnResourceTest {
-
-    final ClassifierService classifierService = createMock(ClassifierService.class);
-
-    /**
-     * Sets up the global values for all the tests.
-     */
-    @Before
-    public void setUpTest() {
-
-        SfcCodecContext context = new SfcCodecContext();
-        ServiceDirectory testDirectory = new TestServiceDirectory().add(ClassifierService.class, classifierService)
-                .add(CodecService.class, context.codecManager());
-        setServiceDirectory(testDirectory);
-
-    }
-
-    /**
-     * Cleans up.
-     */
-    @After
-    public void tearDownTest() {
-    }
-
-    /**
-     * Tests the result of the rest api GET when there are no classifiers.
-     */
-    @Test
-    public void testClassifiersEmpty() {
-
-        expect(classifierService.getClassifiers()).andReturn(null).anyTimes();
-        replay(classifierService);
-        final WebTarget wt = target();
-        final String response = wt.path("classifiers").request().get(String.class);
-        assertThat(response, is("{\"classifiers\":[]}"));
-    }
-
-    /**
-     * Tests the result of a rest api GET for classifiers.
-     */
-    @Test
-    public void testClassifiers() {
-
-        DeviceId devId1 = did("dev1");
-        Device device1 = device("dev1");
-
-        expect(classifierService.getClassifiers()).andReturn(ImmutableList.of(devId1)).anyTimes();
-        replay(classifierService);
-
-        final WebTarget wt = target();
-        final String response = wt.path("classifiers").request().get(String.class);
-        final JsonObject result = Json.parse(response).asObject();
-        assertThat(result, notNullValue());
-    }
-}
diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/FlowClassifierResourceTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/FlowClassifierResourceTest.java
deleted file mode 100644
index da9d6d8..0000000
--- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/FlowClassifierResourceTest.java
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import com.eclipsesource.json.Json;
-import com.eclipsesource.json.JsonObject;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.osgi.TestServiceDirectory;
-import org.onlab.packet.IpPrefix;
-import org.onosproject.codec.CodecService;
-import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService;
-import org.onosproject.vtnweb.web.SfcCodecContext;
-
-import javax.ws.rs.NotFoundException;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.util.HashSet;
-import java.util.Objects;
-import java.util.Set;
-
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.Matchers.containsString;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
-/**
- * Unit tests for flow classifier REST APIs.
- */
-public class FlowClassifierResourceTest extends VtnResourceTest {
-
-    final FlowClassifierService flowClassifierService = createMock(FlowClassifierService.class);
-
-    FlowClassifierId flowClassifierId1 = FlowClassifierId.of("4a334cd4-fe9c-4fae-af4b-321c5e2eb051");
-    TenantId tenantId1 = TenantId.tenantId("1814726e2d22407b8ca76db5e567dcf1");
-    VirtualPortId srcPortId1 = VirtualPortId.portId("dace4513-24fc-4fae-af4b-321c5e2eb3d1");
-    VirtualPortId dstPortId1 = VirtualPortId.portId("aef3478a-4a56-2a6e-cd3a-9dee4e2ec345");
-
-    final MockFlowClassifier flowClassifier1 = new MockFlowClassifier(flowClassifierId1, tenantId1, "flowClassifier1",
-                                                                      "Mock flow classifier", "IPv4", "IP", 10000,
-                                                                      1001, 1500, 5001, 6000,
-                                                                      IpPrefix.valueOf("1.1.1.1/16"),
-                                                                      IpPrefix.valueOf("22.12.34.45/16"),
-                                                                      srcPortId1, dstPortId1);
-
-    /**
-     * Mock class for a flow classifier.
-     */
-    private static class MockFlowClassifier implements FlowClassifier {
-
-        private final FlowClassifierId flowClassifierId;
-        private final TenantId tenantId;
-        private final String name;
-        private final String description;
-        private final String etherType;
-        private final String protocol;
-        private final int priority;
-        private final int minSrcPortRange;
-        private final int maxSrcPortRange;
-        private final int minDstPortRange;
-        private final int maxDstPortRange;
-        private final IpPrefix srcIpPrefix;
-        private final IpPrefix dstIpPrefix;
-        private final VirtualPortId srcPort;
-        private final VirtualPortId dstPort;
-
-        public MockFlowClassifier(FlowClassifierId flowClassifierId, TenantId tenantId, String name,
-                                  String description, String etherType, String protocol, int priority,
-                                  int minSrcPortRange, int maxSrcPortRange, int minDstPortRange, int maxDstPortRange,
-                                  IpPrefix srcIpPrefix, IpPrefix dstIpPrefix, VirtualPortId srcPort,
-                                  VirtualPortId dstPort) {
-            this.flowClassifierId = flowClassifierId;
-            this.tenantId = tenantId;
-            this.name = name;
-            this.description = description;
-            this.etherType = etherType;
-            this.protocol = protocol;
-            this.priority = priority;
-            this.minSrcPortRange = minSrcPortRange;
-            this.maxSrcPortRange = maxSrcPortRange;
-            this.minDstPortRange = minDstPortRange;
-            this.maxDstPortRange = maxDstPortRange;
-            this.srcIpPrefix = srcIpPrefix;
-            this.dstIpPrefix = dstIpPrefix;
-            this.srcPort = srcPort;
-            this.dstPort = dstPort;
-        }
-
-
-        @Override
-        public FlowClassifierId flowClassifierId() {
-            return flowClassifierId;
-        }
-
-        @Override
-        public TenantId tenantId() {
-            return tenantId;
-        }
-
-        @Override
-        public String name() {
-            return name;
-        }
-
-        @Override
-        public String description() {
-            return description;
-        }
-
-        @Override
-        public String etherType() {
-            return etherType;
-        }
-
-        @Override
-        public String protocol() {
-            return protocol;
-        }
-
-        @Override
-        public int priority() {
-            return priority;
-        }
-
-        @Override
-        public int minSrcPortRange() {
-            return minSrcPortRange;
-        }
-
-        @Override
-        public int maxSrcPortRange() {
-            return maxSrcPortRange;
-        }
-
-        @Override
-        public int minDstPortRange() {
-            return minDstPortRange;
-        }
-
-        @Override
-        public int maxDstPortRange() {
-            return maxDstPortRange;
-        }
-
-        @Override
-        public IpPrefix srcIpPrefix() {
-            return srcIpPrefix;
-        }
-
-        @Override
-        public IpPrefix dstIpPrefix() {
-            return dstIpPrefix;
-        }
-
-        @Override
-        public VirtualPortId srcPort() {
-            return srcPort;
-        }
-
-        @Override
-        public VirtualPortId dstPort() {
-            return dstPort;
-        }
-
-        @Override
-        public boolean exactMatch(FlowClassifier flowClassifier) {
-            return this.equals(flowClassifier) &&
-                    Objects.equals(this.flowClassifierId, flowClassifier.flowClassifierId()) &&
-                    Objects.equals(this.tenantId, flowClassifier.tenantId());
-        }
-    }
-
-    /**
-     * Sets up the global values for all the tests.
-     */
-    @Before
-    public void setUpTest() {
-        SfcCodecContext context = new SfcCodecContext();
-
-        ServiceDirectory testDirectory = new TestServiceDirectory()
-        .add(FlowClassifierService.class, flowClassifierService)
-        .add(CodecService.class, context.codecManager());
-        setServiceDirectory(testDirectory);
-
-    }
-
-    /**
-     * Cleans up.
-     */
-    @After
-    public void tearDownTest() {
-    }
-
-    /**
-     * Tests the result of the rest api GET when there are no flow classifiers.
-     */
-    @Test
-    public void testFlowClassifiersEmpty() {
-
-        expect(flowClassifierService.getFlowClassifiers()).andReturn(null).anyTimes();
-        replay(flowClassifierService);
-        final WebTarget wt = target();
-        final String response = wt.path("flow_classifiers").request().get(String.class);
-        assertThat(response, is("{\"flow_classifiers\":[]}"));
-    }
-
-    /**
-     * Tests the result of a rest api GET for flow classifier id.
-     */
-    @Test
-    public void testGetFlowClassifierId() {
-
-        final Set<FlowClassifier> flowClassifiers = new HashSet<>();
-        flowClassifiers.add(flowClassifier1);
-
-        expect(flowClassifierService.exists(anyObject())).andReturn(true).anyTimes();
-        expect(flowClassifierService.getFlowClassifier(anyObject())).andReturn(flowClassifier1).anyTimes();
-        replay(flowClassifierService);
-
-        final WebTarget wt = target();
-        final String response = wt.path("flow_classifiers/4a334cd4-fe9c-4fae-af4b-321c5e2eb051")
-                                  .request().get(String.class);
-        final JsonObject result = Json.parse(response).asObject();
-        assertThat(result, notNullValue());
-    }
-
-    /**
-     * Tests that a fetch of a non-existent flow classifier object throws an exception.
-     */
-    @Test
-    public void testBadGet() {
-        expect(flowClassifierService.getFlowClassifier(anyObject()))
-        .andReturn(null).anyTimes();
-        replay(flowClassifierService);
-        WebTarget wt = target();
-        try {
-            wt.path("flow_classifiers/78dcd363-fc23-aeb6-f44b-56dc5aafb3ae")
-                    .request().get(String.class);
-            fail("Fetch of non-existent flow classifier did not throw an exception");
-        } catch (NotFoundException ex) {
-            assertThat(ex.getMessage(),
-                       containsString("HTTP 404 Not Found"));
-        }
-    }
-
-    /**
-     * Tests creating a flow classifier with POST.
-     */
-    @Test
-    public void testPost() {
-
-        expect(flowClassifierService.createFlowClassifier(anyObject()))
-        .andReturn(true).anyTimes();
-        replay(flowClassifierService);
-
-        WebTarget wt = target();
-        InputStream jsonStream = FlowClassifierResourceTest.class.getResourceAsStream("post-FlowClassifier.json");
-
-        Response response = wt.path("flow_classifiers")
-                .request(MediaType.APPLICATION_JSON_TYPE)
-                .post(Entity.json(jsonStream));
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
-    }
-
-    /**
-     * Tests deleting a flow classifier.
-     */
-    @Test
-    public void testDelete() {
-        expect(flowClassifierService.removeFlowClassifier(anyObject()))
-        .andReturn(true).anyTimes();
-        replay(flowClassifierService);
-
-        WebTarget wt = target();
-
-        String location = "flow_classifiers/4a334cd4-fe9c-4fae-af4b-321c5e2eb051";
-
-        Response deleteResponse = wt.path(location)
-                .request(MediaType.APPLICATION_JSON_TYPE, MediaType.TEXT_PLAIN_TYPE)
-                .delete();
-        assertThat(deleteResponse.getStatus(),
-                   is(HttpURLConnection.HTTP_NO_CONTENT));
-    }
-}
diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainDeviceMapResourceTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainDeviceMapResourceTest.java
deleted file mode 100644
index 15c2104..0000000
--- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainDeviceMapResourceTest.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import com.eclipsesource.json.Json;
-import com.eclipsesource.json.JsonObject;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.osgi.TestServiceDirectory;
-import org.onosproject.codec.CodecService;
-import org.onosproject.net.DeviceId;
-import org.onosproject.vtnrsc.FiveTuple;
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.LoadBalanceId;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortChainId;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.portchain.PortChainService;
-import org.onosproject.vtnweb.web.SfcCodecContext;
-
-import javax.ws.rs.client.WebTarget;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit tests for port chain device map REST APIs.
- */
-public class PortChainDeviceMapResourceTest extends VtnResourceTest {
-
-    final PortChainService portChainService = createMock(PortChainService.class);
-
-    PortChainId portChainId1 = PortChainId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
-    TenantId tenantId1 = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5");
-    private final List<PortPairGroupId> portPairGroupList1 = Lists.newArrayList();
-    private final List<FlowClassifierId> flowClassifierList1 = Lists.newArrayList();
-
-    final MockPortChain portChain1 = new MockPortChain(portChainId1, tenantId1, "portChain1",
-                                                       "Mock port chain", portPairGroupList1,
-                                                       flowClassifierList1);
-
-    /**
-     * Mock class for a port chain.
-     */
-    private static class MockPortChain implements PortChain {
-
-        private final PortChainId portChainId;
-        private final TenantId tenantId;
-        private final String name;
-        private final String description;
-        private final List<PortPairGroupId> portPairGroupList;
-        private final List<FlowClassifierId> flowClassifierList;
-
-        public MockPortChain(PortChainId portChainId, TenantId tenantId,
-                String name, String description,
-                List<PortPairGroupId> portPairGroupList,
-                List<FlowClassifierId> flowClassifierList) {
-
-            this.portChainId = portChainId;
-            this.tenantId = tenantId;
-            this.name = name;
-            this.description = description;
-            this.portPairGroupList = portPairGroupList;
-            this.flowClassifierList = flowClassifierList;
-        }
-
-        @Override
-        public PortChainId portChainId() {
-            return portChainId;
-        }
-
-        @Override
-        public TenantId tenantId() {
-            return tenantId;
-        }
-
-        @Override
-        public String name() {
-            return name;
-        }
-
-        @Override
-        public String description() {
-            return description;
-        }
-
-        @Override
-        public List<PortPairGroupId> portPairGroups() {
-            return ImmutableList.copyOf(portPairGroupList);
-        }
-
-        @Override
-        public List<FlowClassifierId> flowClassifiers() {
-            return ImmutableList.copyOf(flowClassifierList);
-        }
-
-        @Override
-        public boolean exactMatch(PortChain portChain) {
-            return this.equals(portChain) &&
-                    Objects.equals(this.portChainId, portChain.portChainId()) &&
-                    Objects.equals(this.tenantId, portChain.tenantId());
-        }
-
-        @Override
-        public void addLoadBalancePath(FiveTuple fiveTuple, LoadBalanceId id, List<PortPairId> path) {
-        }
-
-        @Override
-        public LoadBalanceId getLoadBalanceId(FiveTuple fiveTuple) {
-            return null;
-        }
-
-        @Override
-        public Set<FiveTuple> getLoadBalanceIdMapKeys() {
-            return null;
-        }
-
-        @Override
-        public List<PortPairId> getLoadBalancePath(LoadBalanceId id) {
-            return null;
-        }
-
-        @Override
-        public List<PortPairId> getLoadBalancePath(FiveTuple fiveTuple) {
-            return null;
-        }
-
-        @Override
-        public LoadBalanceId matchPath(List<PortPairId> path) {
-            return null;
-        }
-
-        @Override
-        public int getLoadBalancePathSize() {
-            return 0;
-        }
-
-        @Override
-        public void addSfcClassifiers(LoadBalanceId id, List<DeviceId> classifierList) {
-        }
-
-        @Override
-        public void addSfcForwarders(LoadBalanceId id, List<DeviceId> forwarderList) {
-        }
-
-        @Override
-        public void removeSfcClassifiers(LoadBalanceId id, List<DeviceId> classifierList) {
-        }
-
-        @Override
-        public void removeSfcForwarders(LoadBalanceId id, List<DeviceId> forwarderList) {
-        }
-
-        @Override
-        public List<DeviceId> getSfcClassifiers(LoadBalanceId id) {
-            DeviceId deviceId1 = DeviceId.deviceId("of:000000000000001");
-            List<DeviceId> classifierList = Lists.newArrayList();
-            classifierList.add(deviceId1);
-            return classifierList;
-        }
-
-        @Override
-        public List<DeviceId> getSfcForwarders(LoadBalanceId id) {
-            DeviceId deviceId1 = DeviceId.deviceId("of:000000000000002");
-            DeviceId deviceId2 = DeviceId.deviceId("of:000000000000003");
-            List<DeviceId> forwarderList = Lists.newArrayList();
-            forwarderList.add(deviceId1);
-            forwarderList.add(deviceId2);
-            return forwarderList;
-        }
-
-        @Override
-        public Set<LoadBalanceId> getLoadBalancePathMapKeys() {
-            LoadBalanceId id = LoadBalanceId.of((byte) 1);
-            Set<LoadBalanceId> set = new HashSet<LoadBalanceId>();
-            set.add(id);
-            return set;
-        }
-
-        @Override
-        public PortChain oldPortChain() {
-            return null;
-        }
-    }
-
-    /**
-     * Sets up the global values for all the tests.
-     */
-    @Before
-    public void setUpTest() {
-        SfcCodecContext context = new SfcCodecContext();
-        ServiceDirectory testDirectory = new TestServiceDirectory()
-        .add(PortChainService.class, portChainService)
-        .add(CodecService.class, context.codecManager());
-        setServiceDirectory(testDirectory);
-    }
-
-    /**
-     * Cleans up.
-     */
-    @After
-    public void tearDownTest() {
-    }
-
-    /**
-     * Tests the result of a rest api GET for port chain id.
-     */
-    @Test
-    public void testGetPortChainDeviceMap() {
-
-        expect(portChainService.getPortChain(anyObject())).andReturn(portChain1).anyTimes();
-        replay(portChainService);
-
-        final WebTarget wt = target();
-        final String response = wt.path("portChainDeviceMap/1278dcd4-459f-62ed-754b-87fc5e4a6751").request()
-                .get(String.class);
-        final JsonObject result = Json.parse(response).asObject();
-        assertThat(result, notNullValue());
-        assertThat(result.names().get(0), is("portChainDeviceMap"));
-
-    }
-}
diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainResourceTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainResourceTest.java
deleted file mode 100644
index dd81814..0000000
--- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainResourceTest.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import com.eclipsesource.json.Json;
-import com.eclipsesource.json.JsonObject;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.osgi.TestServiceDirectory;
-import org.onosproject.codec.CodecService;
-import org.onosproject.net.DeviceId;
-import org.onosproject.vtnrsc.FiveTuple;
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.LoadBalanceId;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortChainId;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.portchain.PortChainService;
-import org.onosproject.vtnweb.web.SfcCodecContext;
-
-import javax.ws.rs.NotFoundException;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.Matchers.containsString;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
-
-/**
- * Unit tests for port chain REST APIs.
- */
-public class PortChainResourceTest extends VtnResourceTest {
-
-    final PortChainService portChainService = createMock(PortChainService.class);
-
-    PortChainId portChainId1 = PortChainId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
-    TenantId tenantId1 = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5");
-    private final List<PortPairGroupId> portPairGroupList1 = Lists.newArrayList();
-    private final List<FlowClassifierId> flowClassifierList1 = Lists.newArrayList();
-
-
-    final MockPortChain portChain1 = new MockPortChain(portChainId1, tenantId1, "portChain1",
-                                                       "Mock port chain", portPairGroupList1,
-                                                       flowClassifierList1);
-
-    /**
-     * Mock class for a port chain.
-     */
-    private static class MockPortChain implements PortChain {
-
-        private final PortChainId portChainId;
-        private final TenantId tenantId;
-        private final String name;
-        private final String description;
-        private final List<PortPairGroupId> portPairGroupList;
-        private final List<FlowClassifierId> flowClassifierList;
-
-        public MockPortChain(PortChainId portChainId, TenantId tenantId,
-                             String name, String description,
-                             List<PortPairGroupId> portPairGroupList,
-                             List<FlowClassifierId> flowClassifierList) {
-
-            this.portChainId = portChainId;
-            this.tenantId = tenantId;
-            this.name = name;
-            this.description = description;
-            this.portPairGroupList = portPairGroupList;
-            this.flowClassifierList = flowClassifierList;
-        }
-
-        @Override
-        public PortChainId portChainId() {
-            return portChainId;
-        }
-
-        @Override
-        public TenantId tenantId() {
-            return tenantId;
-        }
-
-        @Override
-        public String name() {
-            return name;
-        }
-
-        @Override
-        public String description() {
-            return description;
-        }
-
-        @Override
-        public List<PortPairGroupId> portPairGroups() {
-            return  ImmutableList.copyOf(portPairGroupList);
-        }
-
-        @Override
-        public List<FlowClassifierId> flowClassifiers() {
-            return ImmutableList.copyOf(flowClassifierList);
-        }
-
-        @Override
-        public boolean exactMatch(PortChain portChain) {
-            return this.equals(portChain) &&
-                    Objects.equals(this.portChainId, portChain.portChainId()) &&
-                    Objects.equals(this.tenantId, portChain.tenantId());
-        }
-
-        @Override
-        public void addLoadBalancePath(FiveTuple fiveTuple, LoadBalanceId id, List<PortPairId> path) {
-        }
-
-        @Override
-        public LoadBalanceId getLoadBalanceId(FiveTuple fiveTuple) {
-            return null;
-        }
-
-        @Override
-        public Set<FiveTuple> getLoadBalanceIdMapKeys() {
-            return null;
-        }
-
-        @Override
-        public List<PortPairId> getLoadBalancePath(LoadBalanceId id) {
-            return null;
-        }
-
-        @Override
-        public List<PortPairId> getLoadBalancePath(FiveTuple fiveTuple) {
-            return null;
-        }
-
-        @Override
-        public LoadBalanceId matchPath(List<PortPairId> path) {
-            return null;
-        }
-
-        @Override
-        public int getLoadBalancePathSize() {
-            return 0;
-        }
-
-        @Override
-        public void addSfcClassifiers(LoadBalanceId id, List<DeviceId> classifierList) {
-        }
-
-        @Override
-        public void addSfcForwarders(LoadBalanceId id, List<DeviceId> forwarderList) {
-        }
-
-        @Override
-        public void removeSfcClassifiers(LoadBalanceId id, List<DeviceId> classifierList) {
-        }
-
-        @Override
-        public void removeSfcForwarders(LoadBalanceId id, List<DeviceId> forwarderList) {
-        }
-
-        @Override
-        public List<DeviceId> getSfcClassifiers(LoadBalanceId id) {
-            return null;
-        }
-
-        @Override
-        public List<DeviceId> getSfcForwarders(LoadBalanceId id) {
-            return null;
-        }
-
-        @Override
-        public Set<LoadBalanceId> getLoadBalancePathMapKeys() {
-            return null;
-        }
-
-        @Override
-        public PortChain oldPortChain() {
-            return null;
-        }
-    }
-
-    /**
-     * Sets up the global values for all the tests.
-     */
-    @Before
-    public void setUpTest() {
-        SfcCodecContext context = new SfcCodecContext();
-        ServiceDirectory testDirectory = new TestServiceDirectory()
-        .add(PortChainService.class, portChainService)
-        .add(CodecService.class, context.codecManager());
-        setServiceDirectory(testDirectory);
-
-    }
-
-    /**
-     * Cleans up.
-     */
-    @After
-    public void tearDownTest() {
-    }
-
-    /**
-     * Tests the result of the rest api GET when there are no port chains.
-     */
-    @Test
-    public void testPortChainsEmpty() {
-
-        expect(portChainService.getPortChains()).andReturn(null).anyTimes();
-        replay(portChainService);
-        final WebTarget wt = target();
-        final String response = wt.path("port_chains").request().get(String.class);
-        assertThat(response, is("{\"port_chains\":[]}"));
-    }
-
-    /**
-     * Tests the result of a rest api GET for port chain id.
-     */
-    @Test
-    public void testGetPortChainId() {
-
-        final Set<PortChain> portChains = new HashSet<>();
-        portChains.add(portChain1);
-
-        expect(portChainService.exists(anyObject())).andReturn(true).anyTimes();
-        expect(portChainService.getPortChain(anyObject())).andReturn(portChain1).anyTimes();
-        replay(portChainService);
-
-        final WebTarget wt = target();
-        final String response = wt.path("port_chains/1278dcd4-459f-62ed-754b-87fc5e4a6751")
-                .request().get(String.class);
-        final JsonObject result = Json.parse(response).asObject();
-        assertThat(result, notNullValue());
-    }
-
-    /**
-     * Tests that a fetch of a non-existent port chain object throws an exception.
-     */
-    @Test
-    public void testBadGet() {
-        expect(portChainService.getPortChain(anyObject()))
-        .andReturn(null).anyTimes();
-        replay(portChainService);
-        WebTarget wt = target();
-        try {
-            wt.path("port_chains/78dcd363-fc23-aeb6-f44b-56dc5aafb3ae")
-                    .request().get(String.class);
-            fail("Fetch of non-existent port chain did not throw an exception");
-        } catch (NotFoundException ex) {
-            assertThat(ex.getMessage(),
-                       containsString("HTTP 404 Not Found"));
-        }
-    }
-
-    /**
-     * Tests creating a port chain with POST.
-     */
-    @Test
-    public void testPost() {
-
-        expect(portChainService.createPortChain(anyObject()))
-        .andReturn(true).anyTimes();
-        replay(portChainService);
-
-        WebTarget wt = target();
-        InputStream jsonStream = PortChainResourceTest.class.getResourceAsStream("post-PortChain.json");
-
-        Response response = wt.path("port_chains")
-                .request(MediaType.APPLICATION_JSON_TYPE)
-                .post(Entity.json(jsonStream));
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
-    }
-
-    /**
-     * Tests deleting a port chain.
-     */
-    @Test
-    public void testDelete() {
-        expect(portChainService.removePortChain(anyObject()))
-        .andReturn(true).anyTimes();
-        replay(portChainService);
-
-        WebTarget wt = target();
-
-        String location = "port_chains/1278dcd4-459f-62ed-754b-87fc5e4a6751";
-
-        Response deleteResponse = wt.path(location)
-                .request(MediaType.APPLICATION_JSON_TYPE, MediaType.TEXT_PLAIN_TYPE)
-                .delete();
-        assertThat(deleteResponse.getStatus(),
-                   is(HttpURLConnection.HTTP_NO_CONTENT));
-    }
-}
diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainSfMapResourceTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainSfMapResourceTest.java
deleted file mode 100644
index e3866ce..0000000
--- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainSfMapResourceTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import com.eclipsesource.json.Json;
-import com.eclipsesource.json.JsonObject;
-import com.google.common.collect.Lists;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.osgi.TestServiceDirectory;
-import org.onosproject.codec.CodecService;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.ServiceFunctionGroup;
-import org.onosproject.vtnrsc.portchainsfmap.PortChainSfMapService;
-import org.onosproject.vtnweb.web.SfcCodecContext;
-
-import javax.ws.rs.client.WebTarget;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit tests for port chain sf map REST APIs.
- */
-public class PortChainSfMapResourceTest extends VtnResourceTest {
-
-    final PortChainSfMapService portChainSfMapService = createMock(PortChainSfMapService.class);
-
-    String name1 = "Firewall";
-    String description1 = "Firewall service function";
-    Map<PortPairId, Integer> portPairLoadMap1 = new ConcurrentHashMap<>();
-
-    ServiceFunctionGroup serviceFunction1 = new ServiceFunctionGroup(name1, description1,
-                                                                     portPairLoadMap1);
-
-    /**
-     * Sets up the global values for all the tests.
-     */
-    @Before
-    public void setUpTest() {
-        SfcCodecContext context = new SfcCodecContext();
-        ServiceDirectory testDirectory = new TestServiceDirectory()
-                .add(PortChainSfMapService.class, portChainSfMapService)
-                .add(CodecService.class, context.codecManager());
-        setServiceDirectory(testDirectory);
-    }
-
-    /**
-     * Cleans up.
-     */
-    @After
-    public void tearDownTest() {
-    }
-
-    /**
-     * Tests the result of a rest api GET for port chain id.
-     */
-    @Test
-    public void testGetPortChainId() {
-
-        final List<ServiceFunctionGroup> serviceFunctions = Lists.newArrayList();
-        serviceFunctions.add(serviceFunction1);
-
-        expect(portChainSfMapService.getServiceFunctions(anyObject())).andReturn(serviceFunctions).anyTimes();
-        replay(portChainSfMapService);
-
-        final WebTarget wt = target();
-        final String response = wt.path("portChainSfMap/1278dcd4-459f-62ed-754b-87fc5e4a6751").request()
-                .get(String.class);
-        final JsonObject result = Json.parse(response).asObject();
-        assertThat(result, notNullValue());
-        assertThat(result.names().get(0), is("portChainSfMap"));
-    }
-}
diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairGroupResourceTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairGroupResourceTest.java
deleted file mode 100644
index a5f2150..0000000
--- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairGroupResourceTest.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import com.eclipsesource.json.Json;
-import com.eclipsesource.json.JsonObject;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.osgi.TestServiceDirectory;
-import org.onosproject.codec.CodecService;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService;
-import org.onosproject.vtnweb.web.SfcCodecContext;
-
-import javax.ws.rs.NotFoundException;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.Matchers.containsString;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
-/**
- * Unit tests for port pair group REST APIs.
- */
-public class PortPairGroupResourceTest extends VtnResourceTest {
-
-    final PortPairGroupService portPairGroupService = createMock(PortPairGroupService.class);
-
-    PortPairGroupId portPairGroupId1 = PortPairGroupId.of("4512d643-24fc-4fae-af4b-321c5e2eb3d1");
-    TenantId tenantId1 = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5");
-    private final List<PortPairId> portPairList1 = Lists.newArrayList();
-
-    final MockPortPairGroup portPairGroup1 = new MockPortPairGroup(portPairGroupId1, tenantId1, "portPairGroup1",
-                                                                   "Mock port pair group", portPairList1);
-
-    /**
-     * Mock class for a port pair group.
-     */
-    private static class MockPortPairGroup implements PortPairGroup {
-
-        private final PortPairGroupId portPairGroupId;
-        private final TenantId tenantId;
-        private final String name;
-        private final String description;
-        private final List<PortPairId> portPairList;
-
-        public MockPortPairGroup(PortPairGroupId portPairGroupId, TenantId tenantId,
-                                 String name, String description,
-                                 List<PortPairId> portPairList) {
-
-            this.portPairGroupId = portPairGroupId;
-            this.tenantId = tenantId;
-            this.name = name;
-            this.description = description;
-            this.portPairList = portPairList;
-        }
-
-        @Override
-        public PortPairGroupId portPairGroupId() {
-            return portPairGroupId;
-        }
-
-        @Override
-        public TenantId tenantId() {
-            return tenantId;
-        }
-
-        @Override
-        public String name() {
-            return name;
-        }
-
-        @Override
-        public String description() {
-            return description;
-        }
-
-        @Override
-        public List<PortPairId> portPairs() {
-            return ImmutableList.copyOf(portPairList);
-        }
-
-        @Override
-        public void addLoad(PortPairId portPairId) {
-        }
-
-        @Override
-        public int getLoad(PortPairId portPairId) {
-            return 0;
-        }
-
-        @Override
-        public Map<PortPairId, Integer> portPairLoadMap() {
-            return null;
-        }
-
-        @Override
-        public boolean exactMatch(PortPairGroup portPairGroup) {
-            return this.equals(portPairGroup) &&
-                    Objects.equals(this.portPairGroupId, portPairGroup.portPairGroupId()) &&
-                    Objects.equals(this.tenantId, portPairGroup.tenantId());
-        }
-
-        @Override
-        public void resetLoad() {
-        }
-    }
-
-    /**
-     * Sets up the global values for all the tests.
-     */
-    @Before
-    public void setUpTest() {
-        SfcCodecContext context = new SfcCodecContext();
-        ServiceDirectory testDirectory = new TestServiceDirectory()
-        .add(PortPairGroupService.class, portPairGroupService)
-        .add(CodecService.class, context.codecManager());
-        setServiceDirectory(testDirectory);
-
-    }
-
-    /**
-     * Cleans up.
-     */
-    @After
-    public void tearDownTest() {
-    }
-
-    /**
-     * Tests the result of the rest api GET when there are no port pair groups.
-     */
-    @Test
-    public void testPortPairGroupsEmpty() {
-
-        expect(portPairGroupService.getPortPairGroups()).andReturn(null).anyTimes();
-        replay(portPairGroupService);
-        final WebTarget wt = target();
-        final String response = wt.path("port_pair_groups").request().get(String.class);
-        assertThat(response, is("{\"port_pair_groups\":[]}"));
-    }
-
-    /**
-     * Tests the result of a rest api GET for port pair group id.
-     */
-    @Test
-    public void testGetPortPairGroupId() {
-
-        final Set<PortPairGroup> portPairGroups = new HashSet<>();
-        portPairGroups.add(portPairGroup1);
-
-        expect(portPairGroupService.exists(anyObject())).andReturn(true).anyTimes();
-        expect(portPairGroupService.getPortPairGroup(anyObject())).andReturn(portPairGroup1).anyTimes();
-        replay(portPairGroupService);
-
-        final WebTarget wt = target();
-        final String response = wt.path("port_pair_groups/4512d643-24fc-4fae-af4b-321c5e2eb3d1")
-                .request().get(String.class);
-        final JsonObject result = Json.parse(response).asObject();
-        assertThat(result, notNullValue());
-    }
-
-    /**
-     * Tests that a fetch of a non-existent port pair group object throws an exception.
-     */
-    @Test
-    public void testBadGet() {
-        expect(portPairGroupService.getPortPairGroup(anyObject()))
-        .andReturn(null).anyTimes();
-        replay(portPairGroupService);
-        WebTarget wt = target();
-        try {
-            wt.path("port_pair_groups/78dcd363-fc23-aeb6-f44b-56dc5aafb3ae")
-                    .request().get(String.class);
-            fail("Fetch of non-existent port pair group did not throw an exception");
-        } catch (NotFoundException ex) {
-            assertThat(ex.getMessage(),
-                       containsString("HTTP 404 Not Found"));
-        }
-    }
-
-    /**
-     * Tests creating a port pair group with POST.
-     */
-    @Test
-    public void testPost() {
-
-        expect(portPairGroupService.createPortPairGroup(anyObject()))
-        .andReturn(true).anyTimes();
-        replay(portPairGroupService);
-
-        WebTarget wt = target();
-        InputStream jsonStream = PortPairGroupResourceTest.class.getResourceAsStream("post-PortPairGroup.json");
-
-        Response response = wt.path("port_pair_groups")
-                .request(MediaType.APPLICATION_JSON_TYPE)
-                .post(Entity.json(jsonStream));
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
-    }
-
-    /**
-     * Tests deleting a port pair group.
-     */
-    @Test
-    public void testDelete() {
-        expect(portPairGroupService.removePortPairGroup(anyObject()))
-        .andReturn(true).anyTimes();
-        replay(portPairGroupService);
-
-        WebTarget wt = target();
-
-        String location = "port_pair_groups/4512d643-24fc-4fae-af4b-321c5e2eb3d1";
-
-        Response deleteResponse = wt.path(location)
-                .request(MediaType.APPLICATION_JSON_TYPE, MediaType.TEXT_PLAIN_TYPE)
-                .delete();
-        assertThat(deleteResponse.getStatus(),
-                   is(HttpURLConnection.HTTP_NO_CONTENT));
-    }
-}
diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairResourceTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairResourceTest.java
deleted file mode 100644
index 63e89b9..0000000
--- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairResourceTest.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import com.eclipsesource.json.Json;
-import com.eclipsesource.json.JsonObject;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.osgi.TestServiceDirectory;
-import org.onosproject.codec.CodecService;
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.portpair.PortPairService;
-import org.onosproject.vtnweb.web.SfcCodecContext;
-
-import javax.ws.rs.NotFoundException;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.util.HashSet;
-import java.util.Objects;
-import java.util.Set;
-
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.Matchers.containsString;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
-/**
- * Unit tests for port pair REST APIs.
- */
-public class PortPairResourceTest extends VtnResourceTest {
-
-    final PortPairService portPairService = createMock(PortPairService.class);
-
-    PortPairId portPairId1 = PortPairId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
-    TenantId tenantId1 = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5");
-
-    final MockPortPair portPair1 = new MockPortPair(portPairId1, tenantId1, "portPair1",
-                                                    "Mock port pair", "dace4513-24fc-4fae-af4b-321c5e2eb3d1",
-            "aef3478a-4a56-2a6e-cd3a-9dee4e2ec345");
-
-    /**
-     * Mock class for a port pair.
-     */
-    private static class MockPortPair implements PortPair {
-
-        private final PortPairId portPairId;
-        private final TenantId tenantId;
-        private final String name;
-        private final String description;
-        private final String ingress;
-        private final String egress;
-
-        public MockPortPair(PortPairId portPairId, TenantId tenantId,
-                            String name, String description,
-                            String ingress, String egress) {
-
-            this.portPairId = portPairId;
-            this.tenantId = tenantId;
-            this.name = name;
-            this.description = description;
-            this.ingress = ingress;
-            this.egress = egress;
-        }
-
-        @Override
-        public PortPairId portPairId() {
-            return portPairId;
-        }
-
-        @Override
-        public TenantId tenantId() {
-            return tenantId;
-        }
-
-        @Override
-        public String name() {
-            return name;
-        }
-
-        @Override
-        public String description() {
-            return description;
-        }
-
-        @Override
-        public String ingress() {
-            return ingress;
-        }
-
-        @Override
-        public String egress() {
-            return egress;
-        }
-
-        @Override
-        public boolean exactMatch(PortPair portPair) {
-            return this.equals(portPair) &&
-                    Objects.equals(this.portPairId, portPair.portPairId()) &&
-                    Objects.equals(this.tenantId, portPair.tenantId());
-        }
-    }
-
-    /**
-     * Sets up the global values for all the tests.
-     */
-    @Before
-    public void setUpTest() {
-
-        SfcCodecContext context = new SfcCodecContext();
-        ServiceDirectory testDirectory = new TestServiceDirectory().add(PortPairService.class, portPairService)
-                .add(CodecService.class, context.codecManager());
-        setServiceDirectory(testDirectory);
-
-    }
-
-    /**
-     * Cleans up.
-     */
-    @After
-    public void tearDownTest() {
-    }
-
-    /**
-     * Tests the result of the rest api GET when there are no port pairs.
-     */
-    @Test
-    public void testPortPairsEmpty() {
-
-        expect(portPairService.getPortPairs()).andReturn(null).anyTimes();
-        replay(portPairService);
-        final WebTarget wt = target();
-        final String response = wt.path("port_pairs").request().get(String.class);
-        assertThat(response, is("{\"port_pairs\":[]}"));
-    }
-
-    /**
-     * Tests the result of a rest api GET for port pair id.
-     */
-    @Test
-    public void testGetPortPairId() {
-
-        final Set<PortPair> portPairs = new HashSet<>();
-        portPairs.add(portPair1);
-
-        expect(portPairService.exists(anyObject())).andReturn(true).anyTimes();
-        expect(portPairService.getPortPair(anyObject())).andReturn(portPair1).anyTimes();
-        replay(portPairService);
-
-        final WebTarget wt = target();
-        final String response = wt.path("port_pairs/78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae")
-                .request().get(String.class);
-        final JsonObject result = Json.parse(response).asObject();
-        assertThat(result, notNullValue());
-    }
-
-    /**
-     * Tests that a fetch of a non-existent port pair object throws an exception.
-     */
-    @Test
-    public void testBadGet() {
-        expect(portPairService.getPortPair(anyObject()))
-        .andReturn(null).anyTimes();
-        replay(portPairService);
-        WebTarget wt = target();
-        try {
-            wt.path("port_pairs/78dcd363-fc23-aeb6-f44b-56dc5aafb3ae")
-                    .request().get(String.class);
-            fail("Fetch of non-existent port pair did not throw an exception");
-        } catch (NotFoundException ex) {
-            assertThat(ex.getMessage(),
-                       containsString("HTTP 404 Not Found"));
-        }
-    }
-
-    /**
-     * Tests creating a port pair with POST.
-     */
-    @Test
-    public void testPost() {
-
-        expect(portPairService.createPortPair(anyObject()))
-        .andReturn(true).anyTimes();
-        replay(portPairService);
-
-        WebTarget wt = target();
-        InputStream jsonStream = PortPairResourceTest.class.getResourceAsStream("post-PortPair.json");
-
-        Response response = wt.path("port_pairs")
-                .request(MediaType.APPLICATION_JSON_TYPE)
-                .post(Entity.json(jsonStream));
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
-    }
-
-    /**
-     * Tests deleting a port pair.
-     */
-    @Test
-    public void testDelete() {
-        expect(portPairService.removePortPair(anyObject()))
-        .andReturn(true).anyTimes();
-        replay(portPairService);
-
-        WebTarget wt = target();
-
-        String location = "port_pairs/78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae";
-
-        Response deleteResponse = wt.path(location)
-                .request(MediaType.APPLICATION_JSON_TYPE, MediaType.TEXT_PLAIN_TYPE)
-                .delete();
-        assertThat(deleteResponse.getStatus(),
-                   is(HttpURLConnection.HTTP_NO_CONTENT));
-    }
-}
diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/VtnResourceTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/VtnResourceTest.java
deleted file mode 100644
index 2f7d759..0000000
--- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/VtnResourceTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.resources;
-
-import org.glassfish.jersey.server.ResourceConfig;
-import org.onosproject.rest.resources.ResourceTest;
-
-/**
- * Base class for VTN REST API tests.  Performs common configuration operations.
- */
-public class VtnResourceTest extends ResourceTest {
-
-    /**
-     * Creates a new web-resource test.
-     */
-    public VtnResourceTest() {
-        super(ResourceConfig.forApplicationClass(VtnWebApplication.class));
-    }
-}
diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/FlowClassifierCodecTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/FlowClassifierCodecTest.java
deleted file mode 100644
index 6b55fcf..0000000
--- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/FlowClassifierCodecTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.FlowClassifierId;
-import org.onosproject.vtnrsc.TenantId;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Flow classifier codec unit tests.
- */
-public class FlowClassifierCodecTest {
-
-    SfcCodecContext context;
-    JsonCodec<FlowClassifier> flowClassifierCodec;
-    /**
-     * Sets up for each test.  Creates a context and fetches the flow classifier
-     * codec.
-     */
-    @Before
-    public void setUp() {
-        context = new SfcCodecContext();
-        flowClassifierCodec = context.codec(FlowClassifier.class);
-        assertThat(flowClassifierCodec, notNullValue());
-    }
-
-    /**
-     * Reads in a flow classifier from the given resource and decodes it.
-     *
-     * @param resourceName resource to use to read the JSON for the flow classifier
-     * @return decoded flow classifier
-     * @throws IOException if processing the resource fails
-     */
-    private FlowClassifier getFlowClassifier(String resourceName) throws IOException {
-        InputStream jsonStream = FlowClassifierCodecTest.class
-                .getResourceAsStream(resourceName);
-        ObjectMapper mapper = new ObjectMapper();
-        JsonNode json = mapper.readTree(jsonStream);
-        assertThat(json, notNullValue());
-        FlowClassifier flowClassifier = flowClassifierCodec.decode((ObjectNode) json, context);
-        assertThat(flowClassifier, notNullValue());
-        return flowClassifier;
-    }
-
-    /**
-     * Checks that a simple flow classifier decodes properly.
-     *
-     * @throws IOException if the resource cannot be processed
-     */
-    @Test
-    public void codecFlowClassifierTest() throws IOException {
-
-        FlowClassifier flowClassifier = getFlowClassifier("flowClassifier.json");
-
-        assertThat(flowClassifier, notNullValue());
-
-        FlowClassifierId flowClassifierId = FlowClassifierId.of("4a334cd4-fe9c-4fae-af4b-321c5e2eb051");
-        TenantId tenantId = TenantId.tenantId("1814726e2d22407b8ca76db5e567dcf1");
-
-        assertThat(flowClassifier.flowClassifierId().toString(), is(flowClassifierId.toString()));
-        assertThat(flowClassifier.name(), is("flow1"));
-        assertThat(flowClassifier.tenantId().toString(), is(tenantId.toString()));
-        assertThat(flowClassifier.description(), is("flow classifier"));
-        assertThat(flowClassifier.protocol(), is("tcp"));
-        assertThat(flowClassifier.priority(), is(65535));
-        assertThat(flowClassifier.minSrcPortRange(), is(22));
-        assertThat(flowClassifier.maxSrcPortRange(), is(4000));
-        assertThat(flowClassifier.minDstPortRange(), is(80));
-        assertThat(flowClassifier.maxDstPortRange(), is(80));
-
-    }
-}
diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortChainCodecTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortChainCodecTest.java
deleted file mode 100644
index 36d036b..0000000
--- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortChainCodecTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.PortChain;
-import org.onosproject.vtnrsc.PortChainId;
-import org.onosproject.vtnrsc.TenantId;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Flow rule codec unit tests.
- */
-public class PortChainCodecTest {
-
-    SfcCodecContext context;
-    JsonCodec<PortChain> portChainCodec;
-    /**
-     * Sets up for each test.  Creates a context and fetches the flow rule
-     * codec.
-     */
-    @Before
-    public void setUp() {
-        context = new SfcCodecContext();
-        portChainCodec = context.codec(PortChain.class);
-        assertThat(portChainCodec, notNullValue());
-    }
-
-    /**
-     * Reads in a rule from the given resource and decodes it.
-     *
-     * @param resourceName resource to use to read the JSON for the rule
-     * @return decoded flow rule
-     * @throws IOException if processing the resource fails
-     */
-    private PortChain getPortChain(String resourceName) throws IOException {
-        InputStream jsonStream = PortChainCodecTest.class
-                .getResourceAsStream(resourceName);
-        ObjectMapper mapper = new ObjectMapper();
-        JsonNode json = mapper.readTree(jsonStream);
-        assertThat(json, notNullValue());
-        PortChain portChain = portChainCodec.decode((ObjectNode) json, context);
-        assertThat(portChain, notNullValue());
-        return portChain;
-    }
-
-    /**
-     * Checks that a simple rule decodes properly.
-     *
-     * @throws IOException if the resource cannot be processed
-     */
-    @Test
-    public void codecPortChainTest() throws IOException {
-
-        PortChain portChain = getPortChain("portChain.json");
-
-        assertThat(portChain, notNullValue());
-
-        PortChainId portChainId = PortChainId.of("1278dcd4-459f-62ed-754b-87fc5e4a6751");
-        TenantId tenantId = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5");
-
-        assertThat(portChain.portChainId().toString(), is(portChainId.toString()));
-        assertThat(portChain.name(), is("PC2"));
-        assertThat(portChain.tenantId().toString(), is(tenantId.toString()));
-        assertThat(portChain.description(), is("Two flows and two port-pair-groups"));
-
-        assertThat(portChain.flowClassifiers(), notNullValue());
-        assertThat(portChain.portPairGroups(), notNullValue());
-    }
-}
diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairCodecTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairCodecTest.java
deleted file mode 100644
index 059df24..0000000
--- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairCodecTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.PortPair;
-import org.onosproject.vtnrsc.PortPairId;
-import org.onosproject.vtnrsc.TenantId;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Port pair codec unit tests.
- */
-public class PortPairCodecTest {
-
-    SfcCodecContext context;
-    JsonCodec<PortPair> portPairCodec;
-    /**
-     * Sets up for each test.  Creates a context and fetches the port pair
-     * codec.
-     */
-    @Before
-    public void setUp() {
-        context = new SfcCodecContext();
-        portPairCodec = context.codec(PortPair.class);
-        assertThat(portPairCodec, notNullValue());
-    }
-
-    /**
-     * Reads in a port pair from the given resource and decodes it.
-     *
-     * @param resourceName resource to use to read the JSON for the port pair
-     * @return decoded port pair
-     * @throws IOException if processing the resource fails
-     */
-    private PortPair getPortPair(String resourceName) throws IOException {
-        InputStream jsonStream = PortPairCodecTest.class
-                .getResourceAsStream(resourceName);
-        ObjectMapper mapper = new ObjectMapper();
-        JsonNode json = mapper.readTree(jsonStream);
-        assertThat(json, notNullValue());
-        PortPair portPair = portPairCodec.decode((ObjectNode) json, context);
-        assertThat(portPair, notNullValue());
-        return portPair;
-    }
-
-    /**
-     * Checks that a simple port pair decodes properly.
-     *
-     * @throws IOException if the resource cannot be processed
-     */
-    @Test
-    public void codecPortPairTest() throws IOException {
-
-        PortPair portPair = getPortPair("portPair.json");
-
-        assertThat(portPair, notNullValue());
-
-        PortPairId portPairId = PortPairId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
-        TenantId tenantId = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5");
-
-        assertThat(portPair.portPairId().toString(), is(portPairId.toString()));
-        assertThat(portPair.name(), is("PP1"));
-        assertThat(portPair.tenantId().toString(), is(tenantId.toString()));
-        assertThat(portPair.description(), is("SF-A"));
-        assertThat(portPair.ingress().toString(), is("dace4513-24fc-4fae-af4b-321c5e2eb3d1"));
-        assertThat(portPair.egress().toString(), is("aef3478a-4a56-2a6e-cd3a-9dee4e2ec345"));
-    }
-}
diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairGroupCodecTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairGroupCodecTest.java
deleted file mode 100644
index 5fdaf86..0000000
--- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairGroupCodecTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.vtnrsc.PortPairGroup;
-import org.onosproject.vtnrsc.PortPairGroupId;
-import org.onosproject.vtnrsc.TenantId;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Flow rule codec unit tests.
- */
-public class PortPairGroupCodecTest {
-
-    SfcCodecContext context;
-    JsonCodec<PortPairGroup> portPairGroupCodec;
-    /**
-     * Sets up for each test.  Creates a context and fetches the flow rule
-     * codec.
-     */
-    @Before
-    public void setUp() {
-        context = new SfcCodecContext();
-        portPairGroupCodec = context.codec(PortPairGroup.class);
-        assertThat(portPairGroupCodec, notNullValue());
-    }
-
-    /**
-     * Reads in a rule from the given resource and decodes it.
-     *
-     * @param resourceName resource to use to read the JSON for the rule
-     * @return decoded flow rule
-     * @throws IOException if processing the resource fails
-     */
-    private PortPairGroup getPortPairGroup(String resourceName) throws IOException {
-        InputStream jsonStream = PortPairGroupCodecTest.class
-                .getResourceAsStream(resourceName);
-        ObjectMapper mapper = new ObjectMapper();
-        JsonNode json = mapper.readTree(jsonStream);
-        assertThat(json, notNullValue());
-        PortPairGroup portPairGroup = portPairGroupCodec.decode((ObjectNode) json, context);
-        assertThat(portPairGroup, notNullValue());
-        return portPairGroup;
-    }
-
-    /**
-     * Checks that a simple rule decodes properly.
-     *
-     * @throws IOException if the resource cannot be processed
-     */
-    @Test
-    public void codecPortPairGroupTest() throws IOException {
-
-        PortPairGroup portPairGroup = getPortPairGroup("portPairGroup.json");
-
-        assertThat(portPairGroup, notNullValue());
-
-        PortPairGroupId portPairGroupId = PortPairGroupId.of("4512d643-24fc-4fae-af4b-321c5e2eb3d1");
-        TenantId tenantId = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5");
-
-        assertThat(portPairGroup.portPairGroupId().toString(), is(portPairGroupId.toString()));
-        assertThat(portPairGroup.name(), is("PG1"));
-        assertThat(portPairGroup.tenantId().toString(), is(tenantId.toString()));
-        assertThat(portPairGroup.description(), is("Two port-pairs"));
-        assertThat(portPairGroup.portPairs(), notNullValue());
-    }
-}
diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/SfcCodecContext.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/SfcCodecContext.java
deleted file mode 100644
index 1a4965b..0000000
--- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/SfcCodecContext.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.vtnweb.web;
-
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.CodecService;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.codec.impl.CodecManager;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-/**
- * Mock codec context for use in codec unit tests.
- */
-public class SfcCodecContext implements CodecContext {
-
-    private final ObjectMapper mapper = new ObjectMapper();
-    private final CodecManager codecManager = new CodecManager();
-    private final VtnCodecRegistrator manager = new VtnCodecRegistrator();
-
-    /**
-     * Constructs a new mock codec context.
-     */
-    public SfcCodecContext() {
-        codecManager.activate();
-        manager.codecService = codecManager;
-        manager.activate();
-    }
-
-    @Override
-    public ObjectMapper mapper() {
-        return mapper;
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public <T> T getService(Class<T> serviceClass) {
-        // TODO
-        return null;
-    }
-
-    @Override
-    public <T> JsonCodec<T> codec(Class<T> entityClass) {
-        return codecManager.getCodec(entityClass);
-    }
-
-    /**
-     * Get the codec manager.
-     *
-     * @return instance of codec manager
-     */
-    public CodecService codecManager() {
-        return codecManager;
-    }
-}
diff --git a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-FlowClassifier.json b/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-FlowClassifier.json
deleted file mode 100644
index 5ed095d..0000000
--- a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-FlowClassifier.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{"flow_classifier": {
-    "id": "4a334cd4-fe9c-4fae-af4b-321c5e2eb051",
-    "name": "flow1",
-    "tenant_id": "1814726e2d22407b8ca76db5e567dcf1",
-    "description": "flow classifier",
-    "ethertype": "IPv4",
-    "protocol": "tcp",
-    "priority": 10000,
-    "source_port_range_min": 22, "source_port_range_max": 4000,
-    "destination_port_range_min": 80, "destination_port_range_max": 80,
-    "source_ip_prefix": "1.1.1.1/16" , "destination_ip_prefix": "22.12.34.45/16",
-    "logical_destination_port": "dace4513-24fc-4fae-af4b-321c5e2eb3d1", 
-    "logical_source_port": "aef3478a-4a56-2a6e-cd3a-9dee4e2ec345"
-   }
-}
diff --git a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortChain.json b/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortChain.json
deleted file mode 100644
index 488e290..0000000
--- a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortChain.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{"port_pair": {
-    "id": "1278dcd4-459f-62ed-754b-87fc5e4a6751",
-    "name": "PC2",
-    "tenant_id": "d382007aa9904763a801f68ecf065cf5",
-    "description": "Two flows and two port-pair-groups",
-    "flow_classifiers": [
-        "456a4a34-2e9c-14ae-37fb-765feae2eb05",
-        "4a334cd4-fe9c-4fae-af4b-321c5e2eb051"
-    ],
-    "port_pair_groups": [
-        "4512d643-24fc-4fae-af4b-321c5e2eb3d1",
-        "4a634d49-76dc-4fae-af4b-321c5e23d651"
-    ]
-  }
-}
diff --git a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPair.json b/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPair.json
deleted file mode 100644
index 2a774e3..0000000
--- a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPair.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{"port_pair": {
-   "id": "78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae",
-   "name": "PP1",
-   "tenant_id": "d382007aa9904763a801f68ecf065cf5",
-   "description": "SF-A",
-   "ingress": "dace4513-24fc-4fae-af4b-321c5e2eb3d1",
-   "egress": "aef3478a-4a56-2a6e-cd3a-9dee4e2ec345"
- }
-}
diff --git a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPairGroup.json b/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPairGroup.json
deleted file mode 100644
index f6a888d..0000000
--- a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPairGroup.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{"port_pair_group": {
-    "id": "4512d643-24fc-4fae-af4b-321c5e2eb3d1",
-    "name": "portPairGroup1",
-    "tenant_id": "d382007aa9904763a801f68ecf065cf5",
-    "description": "Mock port pair group",
-    "port_pairs": [
-        "875dfeda-43ed-23fe-454b-764feab2c342",
-        "78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"
-    ]
-}
-}
diff --git a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/flowClassifier.json b/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/flowClassifier.json
deleted file mode 100644
index 3fd5ac9..0000000
--- a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/flowClassifier.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-    "id": "4a334cd4-fe9c-4fae-af4b-321c5e2eb051",
-    "name": "flow1",
-    "tenant_id": "1814726e2d22407b8ca76db5e567dcf1",
-    "description": "flow classifier",
-    "ethertype": "IPv4",
-    "protocol": "tcp",
-    "priority": 65535,
-    "source_port_range_min": 22, "source_port_range_max": 4000,
-    "destination_port_range_min": 80, "destination_port_range_max": 80,
-    "source_ip_prefix": "1.1.1.1/16" , "destination_ip_prefix": "22.12.34.45/16"
-   }
diff --git a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portChain.json b/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portChain.json
deleted file mode 100644
index 07a1bc2..0000000
--- a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portChain.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-    "id": "1278dcd4-459f-62ed-754b-87fc5e4a6751",
-    "name": "PC2",
-    "tenant_id": "d382007aa9904763a801f68ecf065cf5",
-    "description": "Two flows and two port-pair-groups",
-    "flow_classifiers": [
-        "456a4a34-2e9c-14ae-37fb-765feae2eb05",
-        "4a334cd4-fe9c-4fae-af4b-321c5e2eb051"
-    ],
-    "port_pair_groups": [
-        "4512d643-24fc-4fae-af4b-321c5e2eb3d1",
-        "4a634d49-76dc-4fae-af4b-321c5e23d651"
-    ]
-}
diff --git a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPair.json b/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPair.json
deleted file mode 100644
index f858c88..0000000
--- a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPair.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-   "id": "78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae",
-   "name": "PP1",
-   "tenant_id": "d382007aa9904763a801f68ecf065cf5",
-   "description": "SF-A",
-   "ingress": "dace4513-24fc-4fae-af4b-321c5e2eb3d1",
-   "egress": "aef3478a-4a56-2a6e-cd3a-9dee4e2ec345"
-}
-
diff --git a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPairGroup.json b/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPairGroup.json
deleted file mode 100644
index e19a66f..0000000
--- a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPairGroup.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-    "id": "4512d643-24fc-4fae-af4b-321c5e2eb3d1",
-    "name": "PG1",
-    "tenant_id": "d382007aa9904763a801f68ecf065cf5",
-    "description": "Two port-pairs",
-    "port_pairs": [
-        "875dfeda-43ed-23fe-454b-764feab2c342",
-        "78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"
-    ]
-}
diff --git a/apps/yms/BUCK.deprecated b/apps/yms/BUCK.deprecated
deleted file mode 100644
index aae4279..0000000
--- a/apps/yms/BUCK.deprecated
+++ /dev/null
@@ -1,14 +0,0 @@
-BUNDLES = [
-  '//apps/yms/api:onos-apps-yms-api',
-  '//apps/yms/app:onos-apps-yms-app',
-  '//lib:onos-yang-datamodel',
-  '//lib:onos-yang-utils-generator',
-  '//lib:org.apache.servicemix.bundles.dom4j',
-]
-
-onos_app(
-  title = 'YANG Management System',
-  category = 'Utility',
-  url = 'http://onosproject.org',
-  included_bundles = BUNDLES,
-)
diff --git a/apps/yms/api/BUCK.deprecated b/apps/yms/api/BUCK.deprecated
deleted file mode 100644
index b8b02d6..0000000
--- a/apps/yms/api/BUCK.deprecated
+++ /dev/null
@@ -1,8 +0,0 @@
-COMPILE_DEPS = [
-  '//lib:CORE_DEPS',
-  '//lib:onos-yang-datamodel',
-]
-
-osgi_jar_with_tests(
-  deps = COMPILE_DEPS,
-)
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/package-info.java b/apps/yms/api/src/main/java/org/onosproject/yms/package-info.java
deleted file mode 100644
index f22e1fa..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/package-info.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides interfaces to YANG management system. YANG management system
- * is a core of YANG in ONOS.
- *
- * In NBI, it acts as a broker in between the protocol and application,
- * here there is a separate protocol implementation, which does the conversion
- * of protocol representation to abstract data tree. The protocol
- * implementation takes care of the protocol specific actions for
- * e.g. RESTCONF handling the entity-tag / timestamp related operations.
- *
- * In SBI, driver or provider uses YANG codec handler as a utility to translate
- * the request information in java(YANG utils generated) to protocol specific
- * format and vice versa.
- */
-package org.onosproject.yms;
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangCodecHandler.java b/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangCodecHandler.java
deleted file mode 100644
index 47e6c66..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangCodecHandler.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ych;
-
-import org.onosproject.yms.ydt.YmsOperationType;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * Abstraction of an entity which provides interfaces to YANG codec handler.
- * <p>
- * In SBI, the provider or driver uses YANG management system as a CODEC
- * utility. Providers/drivers register the device schema with YANG management
- * system. YANG utils is used to generate the java files corresponding to the
- * device schema. Provider or driver use these classes to seamlessly manage
- * the device as java objects. While sending the request to device, drivers
- * use the utility to translate the objects to protocol specific data
- * representation and then send to the device. Protocol or driver use the
- * same instance of the codec utility across multiple translation request.
- * Protocol or driver should not use the same instance of utility concurrently.
- */
-public interface YangCodecHandler {
-    /**
-     * Provider / driver needs to register the device schema with code handler.
-     * Then the provider / driver can use the codec handler to perform the
-     * codec operation. When the codec operation is  being performed, the
-     * codec utility finds the mapping registered device model and perform the
-     * translation against the device schema.
-     *
-     * @param yangModule YANG utils generated class corresponding to SBI
-     *                   device schema module
-     */
-    void addDeviceSchema(Class<?> yangModule);
-
-
-    /**
-     * When the drivers / providers need to encode a protocol operation
-     * requests, which is in a single block, this encode API is used.
-     * A single protocol operation can span across multiple application, then
-     * the driver / provider need to provide the list of application(s) module
-     * object. Each module object contains the request information
-     * corresponding to that application.
-     * <p>
-     * The protocols can have a logical root node which acts as a container
-     * of applications module node. For example in NETCONF, it could be
-     * data/filter/config, etc. Protocols needs to pass this parameter in the
-     * encode request, so that it is part of the encoded protocol packet.
-     * There is no validation done on the value of this parameter. It is up to
-     * the protocol to use it. It is a mandatory parameter and protocols must
-     * pass this parameter. In protocols like NETCONF, these logical root
-     * node may be in a specific name space, in such cases, it needs to be
-     * passed to encode it as part of the request. There could be additional
-     * tags that can be attached to the root node, for example in NETCONF,
-     * the tag type="subtree" can be specified. In such scenarios the
-     * required tags should be sent as a parameter.
-     * <p>
-     * The provider / driver would require to operate on multiple schema
-     * nodes in a single request, for example it may be require to configure
-     * a tunnel and associate a QOS to this tunnel, in this scenario, it
-     * needs to have the tunnel related information in the tunnel module's
-     * Java object and and QOS related  information in QOS modules Java
-     * object. So in a single request, it can send the list of Java objects
-     * corresponding to the modules which need to participate in the operation.
-     * If the request to be generated needs to be a wild card for no
-     * application(s), then this parameter needs to be null. For example a
-     * "empty filter" request in NETCONF get request.
-     * <p>
-     * If the request to be generated needs to be a wild card for  all
-     * application(s), then the driver / provider should not invoke this API,
-     * as there is no encoding of application related information for the
-     * operation, it is only limited to the protocol operation. For example a
-     * "no filter" request in NETCONF get request.
-     *
-     * @param rootName              name of logical root node as required by
-     *                              the protocol
-     * @param rootNamespace         namespace of logical root node as
-     *                              required by the protocol encoding. It is
-     *                              an optional parameter.
-     * @param tagAttributeLinkedMap Specifies the list of attributes that
-     *                              needs to be tagged with the logical root
-     *                              node. It is an optional parameter
-     *                              if not required for the protocol.
-     * @param yangModuleList        list of YANG module's object(s)
-     *                              participating in the operation.
-     * @param dataFormat            data format to which encoding to be done.
-     * @param protocolOperation     protocol operation being performed
-     * @return string containing the requested applications object
-     * information encoded in protocol format.
-     */
-    String encodeOperation(String rootName, String rootNamespace,
-                           Map<String, String> tagAttributeLinkedMap,
-                           List<Object> yangModuleList,
-                           YangProtocolEncodingFormat dataFormat,
-                           YmsOperationType protocolOperation);
-
-    /**
-     * When the drivers / providers need to encode protocol composite
-     * operation requests, which is split in a composite blocks, this encode
-     * composite operation API is used. The application module object
-     * containing the request information has both the resource identifier
-     * part and the resource information part.
-     * <p>
-     * The protocols can have a logical root node which acts as a container
-     * of applications module node.  For example in RESTCONF, it could be
-     * RootResource/data, etc. There is no validation done on the value
-     * of this parameter. It is up to the protocol to use it. It is a
-     * mandatory parameter and protocols must pass this parameter.
-     * <p>
-     * The resource to be operated upon in the device is identified in a
-     * module's schema object. This modules object should contain the
-     * information about the resource on which the operation needs to be
-     * performed. The resource is identified by initial chain of objects for
-     * which operation type is none. Once the resource is reached using none
-     * operations, the actual information about the operation on the device
-     * is encoded.
-     *
-     * @param rootName          name of logical root node as required by the
-     *                          protocol
-     * @param rootNamespace     namespace of logical root node as required by
-     *                          the
-     *                          protocol encoding. It is optional, and there
-     *                          is no
-     *                          namespace set to the logical root node
-     * @param appModuleObject   object containing the information about the
-     *                          resource on which the operation is being
-     *                          performed
-     * @param dataFormat        data format to which request needs to
-     *                          be encoded
-     * @param protocolOperation protocol operation being performed
-     * @return the composite protocol operation request.
-     */
-    YangCompositeEncoding encodeCompositeOperation(String rootName,
-                                                   String rootNamespace,
-                                                   Object appModuleObject,
-                                                   YangProtocolEncodingFormat
-                                                           dataFormat,
-                                                   YmsOperationType
-                                                           protocolOperation);
-
-    /**
-     * When the driver or provider receive the data from the SBI protocol, It
-     * will be in the protocol specific data representation. Drivers /
-     * provider need to interact with the device using native JAVA objects.
-     * Drivers use this decode method to translate the received
-     * protocol specific simple data to YANG modeled Java objects.
-     * If the response received is not in line with the schema, for example,
-     * there is some error info, etc, then the decode operation will throw an
-     * exception and decode operation will fail.
-     *
-     * @param protocolData      input string containing the resource information
-     *                          in protocol format
-     * @param dataFormat        data format from which decoding has to be done
-     * @param protocolOperation protocol operation being performed
-     * @return list of applications module/notification objects corresponding
-     * to the protocol data input
-     */
-    List<Object> decode(String protocolData,
-                        YangProtocolEncodingFormat dataFormat,
-                        YmsOperationType protocolOperation);
-
-    /**
-     * When the driver or provider receive the composite data from the SBI
-     * protocol, It will be in the protocol specific data representation.
-     * Drivers / provider need to interact with the device
-     * using native JAVA objects. Drivers use this Decode method to translate
-     * the received protocol specific composite data to YANG modeled Java
-     * objects.
-     * <p>
-     * If the response received is not in line with the schema, for example,
-     * there is some error info, etc, then the decode operation will throw an
-     * exception and decode operation will fail.
-     *
-     * @param protocolData      composite protocol data containing the resource
-     *                          information
-     * @param dataFormat        data format from which decoding has to be done
-     * @param protocolOperation protocol operation being performed
-     * @return application module/notification object corresponding to the
-     * protocol data infput
-     */
-    Object decode(YangCompositeEncoding protocolData,
-                  YangProtocolEncodingFormat dataFormat,
-                  YmsOperationType protocolOperation);
-
-    /**
-     * Register the provider / driver specific overridden codec. This is can
-     * be used by provider to support  any protocol specific extension or
-     * vendor specific implementation. This framework can also be used
-     * by providers / drivers to support any new protocol data format which
-     * is not supported by default in YANG codec utility.
-     *
-     * @param overriddenCodec provider / driver specific overridden instance
-     *                        of the codec
-     * @param dataFormat      data format to which encoding to be done.
-     */
-    void registerOverriddenCodec(YangDataTreeCodec overriddenCodec,
-                                 YangProtocolEncodingFormat dataFormat);
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangCompositeEncoding.java b/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangCompositeEncoding.java
deleted file mode 100644
index 05694ac..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangCompositeEncoding.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ych;
-
-/**
- * Abstraction of an entity which has the composite protocol request.
- * <p>
- * Protocols like RESTCONF, have split the schema specific information across
- * different components in the protocol encoding.
- * <p>
- * There is a resource identifier, which is part of the RESTCONF request URL.
- * and there is the information about the resource being operated on in the
- * request, this is part of the request body.
- */
-public interface YangCompositeEncoding {
-
-    /**
-     * Retrieves the resource identifier on which the operation is being
-     * performed.
-     *
-     * @return the string representation of the resource being identified
-     */
-    String getResourceIdentifier();
-
-    /**
-     * Retrieves the representation format of the resource identifier.
-     *
-     * @return the type of the resource identifier
-     */
-    YangResourceIdentifierType getResourceIdentifierType();
-
-    /**
-     * Retrieves the resource information in the protocol encoding format.
-     *
-     * @return the resource information in the protocol encoding format
-     */
-    String getResourceInformation();
-
-    /**
-     * Sets resource identifier.
-     *
-     * @param resourceId resource identifier
-     */
-    void setResourceIdentifier(String resourceId);
-
-    /**
-     * Sets the resource information.
-     *
-     * @param resourceInfo resource information
-     */
-    void setResourceInformation(String resourceInfo);
-
-    /**
-     * Sets the resource identifier type.
-     *
-     * @param idType resource identifier
-     */
-    void setResourceIdentifierType(YangResourceIdentifierType idType);
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangDataTreeCodec.java b/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangDataTreeCodec.java
deleted file mode 100644
index bb52d96..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangDataTreeCodec.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ych;
-
-import org.onosproject.yms.ydt.YdtBuilder;
-import org.onosproject.yms.ydt.YmsOperationType;
-
-/**
- * Abstraction of an entity which overrides the default codec.
- * <p>
- * YANG has it extension framework which allows vendor / implementation
- * specific operation or extensions. The default CODECs will fail to handle
- * such protocol requests. In such scenarios, the providers can register
- * their specific CODEC's with the YANG codec utility to translate the protocol
- * specific data to abstract YANG data tree, from which it can be translate into
- * the YANG modelled java objects for the provider / driver to operate on the
- * device.
- */
-
-public interface YangDataTreeCodec {
-    /**
-     * When the YMS need to encode simple protocol operation request,
-     * it will translate the YANG objects into an abstract YANG data tree and
-     * invoke  this registered encode method. Protocol CODEC implementation
-     * needs to ensure the overridden method can handle any specific
-     * extension or representation of protocol data.
-     * The operation type will be set in YANG data tree builder.
-     *
-     * @param ydtBuilder Abstract YANG data tree contains the  operation
-     *                   request
-     * @return protocol specific string representation.
-     */
-    String encodeYdtToProtocolFormat(YdtBuilder ydtBuilder);
-
-    /**
-     * When the YMS need to encode composite protocol operation request, it
-     * will translate the YANG objects into an abstract YANG data
-     * tree and invoke this registered encode method. Protocol CODEC
-     * implementation needs to ensure the overridden method can  handle any
-     * specific extension or representation of protocol data.
-     * <p>
-     * The Initial chain of node in the YDT will have the operation type set
-     * to NONE to specify it is a resource identifier. The Resource
-     * information is maintained as a subtree to the resource identifier node.
-     *
-     * @param ydtBuilder Abstract YANG data tree contains the  operation
-     *                   request
-     * @return composite response containing the requested operation
-     * information
-     */
-    YangCompositeEncoding encodeYdtToCompositeProtocolFormat(
-            YdtBuilder ydtBuilder);
-
-    /**
-     * When YMS decode simple protocol operation request it uses the
-     * registered decode method to translate the protocol data into a
-     * abstract YANG data tree. Then translate the abstract YANG data
-     * tree into the YANG modeled Java objects.
-     * <p>
-     * The CODEC implementation are unaware of the schema against which they
-     * are performing the codec operation, so YMS will send the schema
-     * registry on which the YANG data tree needs to operate, so the code
-     * implementation needs to pass this schema registry to the get a YDT
-     * builder.
-     *
-     * @param protocolData         input string containing the simple
-     *                             protocol data which needs to be decoded
-     * @param schemaRegistryForYdt Schema registry based on which the YANG
-     *                             data tree will be built
-     * @param protocolOperation    protocol operation being performed
-     * @return decoded operation request in YANG data tree
-     */
-    YdtBuilder decodeProtocolDataToYdt(String protocolData,
-                                       Object schemaRegistryForYdt,
-                                       YmsOperationType protocolOperation);
-
-    /**
-     * When YMS decode composite protocol operation request it uses the
-     * registered decode method to translate the protocol data into a
-     * abstract YANG data tree. Then translate the abstract YANG data
-     * tree into the YANG modeled Java objects.
-     * <p>
-     * The CODEC implementation are unaware of the schema against which they
-     * are performing the codec operation, so YMS will send the schema
-     * registry on which the YANG data tree needs to operate, so the code
-     * implementation needs to pass this schema registry to the get a YDT
-     * builder.
-     *
-     * @param protocolData         composite input string containing the
-     *                             protocol data which needs to be decoded
-     * @param schemaRegistryForYdt Schema registry based on which the YANG
-     *                             data tree will be built
-     * @param protocolOperation    protocol operation being performed
-     * @return decoded operation request in YANG data tree
-     */
-    YdtBuilder decodeCompositeProtocolDataToYdt(
-            YangCompositeEncoding protocolData, Object schemaRegistryForYdt,
-            YmsOperationType protocolOperation);
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangProtocolEncodingFormat.java b/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangProtocolEncodingFormat.java
deleted file mode 100644
index 970a642..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangProtocolEncodingFormat.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ych;
-
-/**
- * Represents the protocol data representation.
- */
-public enum YangProtocolEncodingFormat {
-    /**
-     * XML protocol encoding.
-     */
-    XML,
-
-    /**
-     * JSON protocol encoding.
-     */
-    JSON
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangResourceIdentifierType.java b/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangResourceIdentifierType.java
deleted file mode 100644
index 6b99401..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangResourceIdentifierType.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ych;
-
-/**
- * Represents the protocol data representation.
- */
-public enum YangResourceIdentifierType {
-    /**
-     * Uniform Resource Identifier.
-     */
-    URI
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ych/package-info.java b/apps/yms/api/src/main/java/org/onosproject/yms/ych/package-info.java
deleted file mode 100644
index 81fd788..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ych/package-info.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * In SBI, the provider or driver uses YANG management system as a CODEC
- * utility. These providers/drivers use the YANG codec utility to register
- * the device schema. YANG utils is used to generate the java files
- * corresponding to the device schema. Provider or driver use these classes
- * to seamlessly manage the device as java objects. While sending the request
- * to device, drivers use the utility to translate the objects to protocol
- * specific data representation and then send to the device.
- * Protocol or driver use the same instance of the codec utility across multiple
- * translation request.
- * Protocol or driver should not use the same instance of utility concurrently.
- */
-package org.onosproject.yms.ych;
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/Ydt.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/Ydt.java
deleted file mode 100644
index b185066..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/Ydt.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ydt;
-
-/**
- * Abstraction of an entity which represent YANG data tree. This is used
- * for exchanging information between YANG management system and NBI protocol.
- */
-public interface Ydt {
-
-    /**
-     * Returns the root context information available in YDT node. This root
-     * node is a logical container of a protocol which holds the complete data
-     * tree. After building YANG data tree, root node can be obtained from this.
-     *
-     * @return root YDT context which is logical container of a protocol which
-     * is holder of the complete tree
-     */
-    YdtContext getRootNode();
-
-    /**
-     * Returns YANG management system operation type. It represents type of
-     * root level operation for the request. This is used by protocols to
-     * specify the root level operation associated with the request.
-     *
-     * @return YANG management system operation type
-     */
-    YmsOperationType getYmsOperationType();
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtBuilder.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtBuilder.java
deleted file mode 100644
index 9cfc695..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtBuilder.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ydt;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Abstraction of an entity which provides interfaces to build and obtain YANG
- * data tree which is data (sub)instance representation, abstract of protocol.
- * <p>
- * NBI protocols need to translate the protocol operation request, into a
- * protocol independent abstract tree called the YANG data tree (YDT). In order
- * to enable the protocol in building these abstract data tree, YANG
- * management system provides a utility called the YANG data tree builder.
- */
-public interface YdtBuilder extends Ydt {
-
-    /**
-     * Sets root node tag attributes. This is used by protocol
-     * to specify tag attributes associated with root resource.
-     *
-     * @param attributeTag map of root tags attribute values indexed by root
-     *                     tag name
-     */
-    void setRootTagAttributeMap(Map<String, String> attributeTag);
-
-    /**
-     * Returns map of tag attribute list associated with root resource.
-     *
-     * @return linked hash map of tag name with value
-     */
-    Map<String, String> getRootTagAttributeMap();
-
-    /**
-     * Adds a last child to YANG data tree; this method is to be used by
-     * protocols which are unaware of the nature (single/multiple) of node and
-     * also unaware of the operation type at every node (Example: RESTCONF).
-     * <p>
-     * Add child is used to add module/sub-module nodes also. Request may
-     * contain revision number corresponding to Module/sub-module in that
-     * case YMS expect revision number to be appended to module/sub-module
-     * name in the below mentioned format.
-     * <p>
-     * module-or-submodule-name ['@' date-arg]
-     * date-arg = 4DIGIT "-" 2DIGIT "-" 2DIGIT
-     * Example: testModule@2016-10-27.
-     * <p>
-     * If the revision date is not specified YMS first search for
-     * registered module/sub-module without revision date, if still can't obtain
-     * then uses registered module/sub-module with latest revision date.
-     *
-     * @param name      name of child to be added
-     * @param namespace namespace of child to be added, if it's null, parent's
-     *                  namespace will be applied to child
-     * @throws IllegalArgumentException when method has been passed an illegal
-     *                                  or inappropriate argument.
-     */
-    void addChild(String name, String namespace)
-            throws IllegalArgumentException;
-
-    /**
-     * Adds a last child to YANG data tree, this method is to be used by
-     * protocols which are aware of the nature (single/multiple) of node.
-     * <p>
-     * Add child is used to add module/sub-module nodes also. Request may
-     * contain revision number corresponding to Module/sub-module in that
-     * case YMS expect revision number to be appended to module/sub-module
-     * name in the below mentioned format.
-     * <p>
-     * module-or-submodule-name ['@' date-arg]
-     * date-arg = 4DIGIT "-" 2DIGIT "-" 2DIGIT
-     * Example: testModule@2016-10-27.
-     * <p>
-     * If the revision date is not specified YMS first search for
-     * registered module/sub-module without revision date, if still can't obtain
-     * then uses registered module/sub-module with latest revision date.
-     *
-     * @param name      name of child to be added
-     * @param namespace namespace of child to be added, if it's null, parent's
-     *                  namespace will be applied to child
-     * @param ydtType   type of YDT node to be added
-     * @throws IllegalArgumentException when method has been passed an illegal
-     *                                  or inappropriate argument.
-     */
-    void addChild(String name, String namespace, YdtType ydtType)
-            throws IllegalArgumentException;
-
-    /**
-     * Adds a last child to YANG data tree; this method is to be used by
-     * protocols which are unaware of the nature (single/multiple) of node.
-     * This is an overloaded method with operation type. This method can
-     * optionally be used when protocol doesn't want to specify operation type
-     * by keeping it null.
-     * <p>
-     * Add child is used to add module/sub-module nodes also. Request may
-     * contain revision number corresponding to Module/sub-module in that
-     * case YMS expect revision number to be appended to module/sub-module
-     * name in the below mentioned format.
-     * <p>
-     * module-or-submodule-name ['@' date-arg]
-     * date-arg = 4DIGIT "-" 2DIGIT "-" 2DIGIT
-     * Example: testModule@2016-10-27.
-     * <p>
-     * If the revision date is not specified YMS first search for
-     * registered module/sub-module without revision date, if still can't obtain
-     * then uses registered module/sub-module with latest revision date.
-     *
-     * @param name      name of child to be added
-     * @param namespace namespace of child to be added, if it's null, parent's
-     *                  namespace will be applied to child
-     * @param opType    type of requested operation over a node
-     * @throws IllegalArgumentException when method has been passed an illegal
-     *                                  or inappropriate argument.
-     */
-    void addChild(String name, String namespace, YdtContextOperationType opType)
-            throws IllegalArgumentException;
-
-    /**
-     * Adds a last child to YANG data tree; this method is to be used by
-     * protocols which are aware of the nature (single/multiple) of node.
-     * This is an overloaded method with operation type. This method can
-     * optionally be used when protocol doesn't want to specify operation type
-     * by keeping it null.
-     * <p>
-     * Add child is used to add module/sub-module nodes also. Request may
-     * contain revision number corresponding to Module/sub-module in that
-     * case YMS expect revision number to be appended to module/sub-module
-     * name in the below mentioned format.
-     * <p>
-     * module-or-submodule-name ['@' date-arg]
-     * date-arg = 4DIGIT "-" 2DIGIT "-" 2DIGIT
-     * Example: testModule@2016-10-27.
-     * <p>
-     * If the revision date is not specified YMS first search for
-     * registered module/sub-module without revision date, if still can't obtain
-     * then uses registered module/sub-module with latest revision date.
-     *
-     * @param name      name of child to be added
-     * @param namespace namespace of child to be added, if it's null, parent's
-     *                  namespace will be applied to child
-     * @param ydtType   type of YDT node to be added
-     * @param opType    type of requested operation over a node
-     * @throws IllegalArgumentException when method has been passed an illegal
-     *                                  or inappropriate argument.
-     */
-    void addChild(String name, String namespace, YdtType ydtType,
-                  YdtContextOperationType opType)
-            throws IllegalArgumentException;
-
-    /**
-     * Adds a last leaf with value to YANG data tree. Protocols unaware of
-     * nature of leaf (single/multiple) will use it to add both single instance
-     * and multi instance node. Protocols aware of nature of node will use it
-     * for single instance value node addition.
-     * Value of leaf can be null which indicates selection node in get
-     * operation.
-     *
-     * @param name      name of child to be added
-     * @param namespace namespace of child to be added, if it's null, parent's
-     *                  namespace will be applied to child
-     * @param value     value of the child
-     * @throws IllegalArgumentException when method has been passed an illegal
-     *                                  or inappropriate argument.
-     */
-    void addLeaf(String name, String namespace, String value)
-            throws IllegalArgumentException;
-
-    /**
-     * Adds a last leaf with list of values to YANG data tree. This method is
-     * used by protocols which knows the nature (single/multiple) of node for
-     * multi instance node addition.
-     * Value of leaf can be null which indicates selection node in get
-     * operation.
-     *
-     * @param name      name of child to be added
-     * @param namespace namespace of child to be added, if it's null, parent's
-     *                  namespace will be applied to child
-     * @param valueSet  list of value of the child
-     * @throws IllegalArgumentException when method has been passed an illegal
-     *                                  or inappropriate argument.
-     */
-    void addLeaf(String name, String namespace, Set<String> valueSet)
-            throws IllegalArgumentException;
-
-    /**
-     * Adds a child node or leaf node based on schema.
-     *
-     * @param name      name of child/leaf to be added
-     * @param namespace namespace of child/leaf to be added, if it's null, parent's
-     *                  namespace will be applied to child
-     * @throws IllegalArgumentException when method has been passed an illegal
-     *                                  or inappropriate argument.
-     */
-    void addNode(String name, String namespace)
-            throws IllegalArgumentException;
-
-    /**
-     * Adds an instance of a child list node, or adds a child leaf list with
-     * multiple instance.
-     * In case the name and namespace identifies the child list node, then
-     * the values for all the key leaves must be passed in the same order of
-     * schema. Then the effective YANG data tree will be like adding a  list
-     * node, followed by adding the key leaves as the child to the list node.
-     * After this operation, the call to getCurNode will return the list node.
-     * In case the name and namespace identifies the child leaf-list, then
-     * the values identifies the instance of leaf list.
-     * After this operation, the call to getCurNode will return the leaf-list
-     * node.
-     *
-     * @param name      name of child to be added
-     * @param namespace namespace of child to be added, if it's null, parent's
-     *                  namespace will be applied to child
-     * @param valueList values of the keys in URI in the same order
-     *                  as defined in YANG file
-     * @param opType    type of requested operation over a node
-     * @throws IllegalArgumentException when method has been passed an illegal
-     *                                  or inappropriate argument.
-     */
-    void addMultiInstanceChild(String name, String namespace,
-                               List<String> valueList,
-                               YdtContextOperationType opType)
-            throws IllegalArgumentException;
-
-    /**
-     * Traverses up in YANG data tree to the parent node, it is to be used when
-     * protocol is using context type "current" and wanted to traverse up the
-     * tree.
-     *
-     * @throws IllegalStateException when application is not in an appropriate
-     *                               state for the requested operation.
-     */
-    void traverseToParent() throws IllegalStateException;
-
-    /**
-     * Returns the current context information available in YDT node.
-     *
-     * @return current YDT context
-     */
-    YdtContext getCurNode();
-
-    /**
-     * Sets default operation type. This operation type is taken if operation
-     * type is not explicitly specified in request. If default operation type
-     * is not set, merge will be taken as default operation type.
-     *
-     * @param ydtContextOperationType default edit operation type
-     */
-    void setDefaultEditOperationType(
-            YdtContextOperationType ydtContextOperationType);
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContext.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContext.java
deleted file mode 100644
index d2cdead..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContext.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ydt;
-
-import java.util.Set;
-
-/**
- * Abstraction of an entity which represents YANG data tree context
- * information. This context information will be used protocol to obtain
- * the information associated with YDT node. This is used when protocol is
- * walking the data tree in both visitor and listener mechanism.
- */
-public interface YdtContext {
-
-    /**
-     * Returns the node name.
-     *
-     * @return node name
-     */
-    String getName();
-
-    /**
-     * Returns the node namespace.
-     *
-     * @return node  namespace
-     */
-    String getNamespace();
-
-    /**
-     * Returns module name as namespace.
-     *
-     * @return module name
-     */
-    String getModuleNameAsNameSpace();
-
-    /**
-     * Returns the YDT node extended context information corresponding to YDT
-     * node.
-     *
-     * @param <T> specifies YMS operation specific extended information
-     *            associated with YDT context. It will be
-     *            YdtContextOperationType in case extended information type
-     *            is EDIT_REQUEST and will be YdtContextResponseInfo in case
-     *            extended information type is RESPONSE.
-     * @return YdtContextOperationType  YDT node operation type
-     */
-    <T> T getYdtContextExtendedInfo();
-
-    /**
-     * Returns YANG data tree extended information type. This is used to
-     * identify the type of extended information applicable for YDT node.
-     *
-     * @return type of extended information
-     */
-    YdtExtendedInfoType getYdtExtendedInfoType();
-
-    /**
-     * Returns the type of YDT entity. This type will be used by protocols to
-     * identify the nature of node and can implement it accordingly.
-     *
-     * @return YDT entity type
-     */
-    YdtType getYdtType();
-
-    /**
-     * Returns the context of parent node.
-     *
-     * @return context of parent node
-     */
-    YdtContext getParent();
-
-    /**
-     * Returns the context of first child.
-     *
-     * @return context of first child
-     */
-    YdtContext getFirstChild();
-
-    /**
-     * Returns the context of last child.
-     *
-     * @return context of last child
-     */
-    YdtContext getLastChild();
-
-    /**
-     * Returns the context of next sibling.
-     *
-     * @return context of next sibling
-     */
-    YdtContext getNextSibling();
-
-    /**
-     * Returns the context of previous sibling.
-     *
-     * @return context of previous sibling
-     */
-    YdtContext getPreviousSibling();
-
-    /**
-     * Returns value of node, this is only valid for single instance leaf
-     * node, to obtain the nature of the node protocols need to use
-     * getYdtType().
-     *
-     * @return value of node
-     */
-    String getValue();
-
-    /**
-     * Returns set of values of a node, this is only valid for multi instance
-     * leaf node, to obtain the nature of the node protocols need to use
-     * getYdtType().
-     *
-     * @return value of YDT leaf
-     */
-    Set<String> getValueSet();
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContextOperationType.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContextOperationType.java
deleted file mode 100644
index 8445d3c..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContextOperationType.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ydt;
-
-/**
- * Represents type of YANG data tree node operation.
- *
- * This is used by protocols to specify edit operation associate with the node.
- * YMS data validation and data handling will vary based on the edit operation
- * type, for an instance, default leafs if not present in data should be added
- * if edit operation type is create and shouldn't be added if operation type is
- * delete.
- * Edit operation type is mapped to "operation type" of YANG utils generated
- * classes by YMS.
- *
- * In case of SBI driver/provider creates JAVA object (of YANG utils generated
- * classes) and specifies the edit operation type in "operation type" field.
- * YMS map this operation type to "edit operation type" of YDT, which will be
- * further encoded in corresponding data format.
- *
- * This is only applicable if YANG root level interaction type is EDIT_CONFIG.
- * If edit operation type is not specified when root interaction type is
- * EDIT_CONFIG then default operation type will be selected.
- * By default "default operation type" is "merge" unless explicitly specified
- * by protocol.
- */
-
-/*
- * Edit operation type mapping with RESTCONF and NETCONF as example:
- * +----------+----------------------------+------------+
- * | RESTCONF | NETCONF                    | EditOpType |
- * +----------+----------------------------+------------+
- * | OPTIONS  | none                       | NA         |
- * | HEAD     | none                       | NA         |
- * | GET      | <get-config>, <get>        | NA         |
- * | POST     | (operation="create")       | CREATE     |
- * | PUT      | (operation="replace")      | REPLACE    |
- * | PATCH    | (operation="merge")        | MERGE      |
- * | DELETE   | (operation="delete")       | DELETE     |
- * | none     | (operation="remove")       | REMOVE     |
- * +----------+----------------------------+------------+
- * Note: Additionally RESTCONF must use API resource to figure out whether
- * request contains data resource or it's for data model specific operation.
- *     +--rw restconf
- *       +--rw data
- *       +--rw operations
- * Edit operation type is only applicable for data resource.
- *
- * Additionally protocols has to use operation type NONE to specify the URI
- * path.
- */
-public enum YdtContextOperationType {
-
-    /**
-     * Type of YANG data tree action for below action:
-     * The configuration data identified by the element
-     * containing this attribute is added to the configuration if
-     * and only if the configuration data does not already exist in
-     * the configuration datastore.  If the configuration data
-     * exists, an error is returned.
-     */
-    CREATE,
-
-    /**
-     * Type of YANG data tree action for below action:
-     * The configuration data identified by the element
-     * containing this attribute is deleted from the configuration
-     * if and only if the configuration data currently exists in
-     * the configuration datastore.  If the configuration data does
-     * not exist, an error is returned".
-     */
-    DELETE,
-
-    /**
-     * Type of YANG data tree action for below action:
-     * The configuration data identified by the element
-     * containing this attribute is merged with the configuration
-     * at the corresponding level in the configuration datastore.
-     */
-    MERGE,
-
-    /**
-     * Type of YANG data tree action for below action:
-     * The configuration data identified by the element
-     * containing this attribute replaces any related configuration
-     * in the configuration datastore. If no such configuration
-     * data exists in the configuration datastore, it is created.
-     */
-    REPLACE,
-
-    /**
-     * Type of YANG data tree action for below action:
-     * The configuration data identified by the element
-     * containing this attribute is deleted from the configuration
-     * if the configuration data currently exists in the
-     * configuration datastore.  If the configuration data does not
-     * exist, the "remove" operation is silently ignored by the
-     * server.
-     */
-    REMOVE,
-
-    /**
-     * The node is used as a containment node to reach the child node,
-     * There is no change in the data store for the values of this node in the
-     * edit request.
-     */
-    NONE
-}
-
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContextResponseInfo.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContextResponseInfo.java
deleted file mode 100644
index e90fe43..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContextResponseInfo.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ydt;
-
-/**
- * Represents YANG context response information. It contains YDT node specific
- * information for operation response like error information, particular node
- * operation result etc.
- */
-public interface YdtContextResponseInfo {
-
-    /**
-     * Retrieve the context specific error information.
-     *
-     * @return context specific error information
-     */
-    YdtErrorInfo getYdtErrorInfo();
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtErrorInfo.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtErrorInfo.java
deleted file mode 100644
index e814d8e..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtErrorInfo.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ydt;
-
-/**
- * Abstraction of an entity which contains context specific error info.
- */
-public interface YdtErrorInfo {
-    /**
-     * Retrieves the application specific error tag corresponding to the
-     * error context in operation.
-     *
-     * @return application specific error tag corresponding to the error
-     * context in operation
-     */
-    String getErrorAppTag();
-
-    /**
-     * Retrieves the error message corresponding to the error context in
-     * operation.
-     *
-     * @return the error message corresponding to the error context in operation
-     */
-    String getErrorMessage();
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtExtendedInfoType.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtExtendedInfoType.java
deleted file mode 100644
index ceb556c..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtExtendedInfoType.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ydt;
-
-/**
- * Represents type of YANG data tree node operation.
- */
-public enum YdtExtendedInfoType {
-
-    /**
-     * It specifies operation type edit request for YDT node. It is used to
-     * identify the YMS operation specific extended information associated
-     * with YDT context.
-     */
-    EDIT_REQUEST,
-
-    /**
-     * It specifies operation type RESPONSE for YDT node. It is used to
-     * identify the YMS operation specific extended information associated
-     * with YDT context.
-     */
-    RESPONSE
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtListener.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtListener.java
deleted file mode 100644
index 33c1a52..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtListener.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ydt;
-
-/**
- * Abstraction of an entity which provide call back methods which are called
- * by YDT walker while walking the YANG data tree.
- * <p>
- * In a response to execute operation YMS returns the YMS operation results
- * with root YDT node. Now, protocols needs to walk through the YDT node and
- * constructs the corresponding data format string. Protocol can opt to use
- * listener or visitor based walking mechanism.
- * <p>
- * This interface needs to be implemented by protocol implementing listener's
- * based call backs while YDT walk.
- */
-public interface YdtListener {
-
-    /**
-     * YANG data tree node's entry, it will be called during a node entry.
-     * All the related information about the node can be obtain from the YDT
-     * context.
-     *
-     * @param ydtContext YANG data tree context
-     */
-    void enterYdtNode(YdtContext ydtContext);
-
-    /**
-     * YANG data tree node's exit, it will be called during a node exit.
-     * All the related information about the node can be obtain from the YDT
-     * context.
-     *
-     * @param ydtContext YANG data tree context
-     */
-    void exitYdtNode(YdtContext ydtContext);
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtResponse.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtResponse.java
deleted file mode 100644
index 308cdf3..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtResponse.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ydt;
-
-/**
- * Represents YANG management system results. Protocols sends request to
- * YANG management system for execution. YMS returns response in form of
- * YANG data tree response
- */
-public interface YdtResponse extends Ydt {
-
-    /**
-     * Returns YANG management system operation result. This status of the
-     * operation execution is returned
-     *
-     * @return YMS operation result
-     */
-    YmsOperationExecutionStatus getYmsOperationResult();
-
-    /*
-     * TODO: Applications layer error reporting to protocols.
-     */
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtType.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtType.java
deleted file mode 100644
index 5efd67f..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtType.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ydt;
-
-/**
- * Represents type of node in YANG data tree. Protocols based on input data
- * format provide this information to YMS during YDT building. YMS use this
- * information to carry out the validation against the schema information
- * obtained as a part of application registration. Also as a part of response
- * YMS encode this information in YDT node, protocol may use this information
- * while construction the data format string.
- *
- * Protocols unaware of node type like NETCONF, may opt not to provide this
- * information.
- */
-public enum YdtType {
-
-    /**
-     * Single instance node.
-     */
-    SINGLE_INSTANCE_NODE,
-
-    /**
-     * Multi instance node.
-     */
-    MULTI_INSTANCE_NODE,
-
-    /**
-     * Single instance leaf node.
-     */
-    SINGLE_INSTANCE_LEAF_VALUE_NODE,
-
-    /**
-     * Multi instance leaf node.
-     */
-    MULTI_INSTANCE_LEAF_VALUE_NODE,
-
-    /**
-     * Logical root node.
-     */
-    LOGICAL_ROOT_NODE
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtWalker.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtWalker.java
deleted file mode 100644
index e17d790..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtWalker.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ydt;
-
-/**
- * Abstraction of an entity which provides interfaces for YDT walk.
- *
- * When YANG management system gets data from application to be returned
- * to protocol for any protocol operation or as a part of notification, YANG
- * management system encodes this data in a YANG data tree and sends the same
- * to protocol.
- * Protocols can use the YANG data tree walker utility to have their
- * callbacks to be invoked as per the YANG data tree walking.
- * By this way protocols can encode the data from abstract YANG data tree
- * into a protocol specific representation.
- *
- * YDT walker provides entry and exit callbacks for each node in YANG data
- * tree.
- */
-public interface YdtWalker {
-
-    /**
-     * Walks the YANG data tree. Protocols implements YDT listener service
-     * and walks YDT tree with input as implemented object. YDT walker provides
-     * call backs to implemented methods.
-     *
-     * @param ydtListener YDT listener implemented by the protocol
-     * @param rootNode    root node of YDT
-     */
-    void walk(YdtListener ydtListener, YdtContext rootNode);
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YmsOperationExecutionStatus.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YmsOperationExecutionStatus.java
deleted file mode 100644
index 14f4ba4..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YmsOperationExecutionStatus.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ydt;
-
-/**
- * Abstraction of an entity which represents YANG management system operation
- * result. Once the protocol translates the request information into a abstract
- * YANG data tree, it uses YANG management system as a broker to get the
- * operation executed in ONOS. Protocols uses a request Yang management
- * system to delegate the operation request.
- *
- * YANG management system is responsible to split the protocol operation
- * across application(s) which needs to participate, and collate the
- * response(s) from application(s) and return an effective result of the
- * operation request. The status of the operation execution is returned.
- */
-public enum YmsOperationExecutionStatus {
-
-    /**
-     * Successful execution of the operation.
-     */
-    EXECUTION_SUCCESS,
-
-    /**
-     * Exception in execution of the operation.
-     */
-    EXECUTION_EXCEPTION,
-
-    /**
-     * Error in execution of the operation.
-     */
-    ERROR_EXCEPTION
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YmsOperationType.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YmsOperationType.java
deleted file mode 100644
index bfbee0c..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YmsOperationType.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ydt;
-
-/**
- * Represents type of root level operation for the request.
- *
- * This is used by protocols to specify the root level operation associated
- * with the request. YMS data validation and data handling will vary based
- * on the edit operation type, for an instance YANG specified "mandatory"
- * leafs needn't be present for QUERY_CONFIG and QUERY, but they may be
- * mandatory to be present in request for EDIT_CONFIG type. The validation
- * and handling is further dependent on edit operation type.
- *
- * In SBI, driver/provider must provide this information to YMS which needs
- * to encode this information in corresponding data format.
- *
- * YmsOperationType MUST be specified by protocol.
- */
-
-/*
- * Yang interaction type with RESTCONF and NETCONF as example:
- * +--------------+-------------------+-------------+
- * | RESTCONF     | NETCONF           | EditOpType  |
- * +--------------+-------------------+-------------+
- * | OPTIONS      | NA                | NA          |
- * | HEAD         | NA                | NA          |
- * | GET          | <get>             | QUERY       |
- * | none         | <get-config>      | QUERY_CONFIG|
- * | POST (data)  | <edit-config>     | EDIT_CONFIG |
- * | PUT          | <edit-config>     | EDIT_CONFIG |
- * | PATCH        | <edit-config>     | EDIT_CONFIG |
- * | DELETE       | <edit-config>     | EDIT_CONFIG |
- * | POST (op)    | <rpc>             | RPC         |
- * +--------------+-------------------+-------------+
- *
- * Note: Additionally RESTCONF must use API resource to figure out whether
- * request contains data resource or it's for data model specific operation.
- * +--rw restconf
- * +--rw data
- * +--rw operations
- */
-public enum YmsOperationType {
-    /**
-     * The YANG based request is to edit a config node / subtree in the data
-     * store.
-     */
-    EDIT_CONFIG_REQUEST,
-
-    /**
-     * The YANG based request is to query a config node / subtree in the data
-     * store.
-     */
-    QUERY_CONFIG_REQUEST,
-
-    /**
-     * The YANG based request is to query a node / subtree in the data store.
-     */
-    QUERY_REQUEST,
-
-    /**
-     * The YANG based request is to execute an RPC defined in YANG.
-     */
-    RPC_REQUEST,
-
-    /**
-     * The YANG based response is for edit operation.
-     */
-    EDIT_CONFIG_REPLY,
-
-    /**
-     * The YANG based response is for query config operation.
-     */
-    QUERY_CONFIG_REPLY,
-
-    /**
-     * The YANG based response is for query operation.
-     */
-    QUERY_REPLY,
-
-    /**
-     * The YANG based response is for a RPC operation.
-     */
-    RPC_REPLY,
-
-    /**
-     * The YANG based request is to execute an RPC defined in YANG.
-     */
-    NOTIFICATION
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/package-info.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/package-info.java
deleted file mode 100644
index 2c60fd8..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/package-info.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides interfaces to build and obtain YANG data tree which is data
- * (sub)instance representation, abstract of protocol.
- *
- * NBI protocol implementation takes care of the protocol specific
- * operations. They are abstracted from the intricacies of understanding
- * the application identification or handling the interaction with
- * applications.
- *
- * NBI protocols need to handle the encoding and decoding of data to the
- * protocol specific format. They are unaware of the YANG of applications,
- * i.e. protocols are unaware of the data structure / organization in
- * applications.
- *
- * They need to translate the protocol operation request, into a protocol
- * independent abstract tree called the YANG data tree (YDT). In order to
- * enable the protocol in building these abstract data tree, YANG
- * management system provides a utility called the YANG data tree builder.
- *
- * Using the YANG data tree utility API's protocols are expected to walk
- * the data received in request and pass the information during the walk.
- * YANG data tree builder, identifies the application which supports the
- * request and validates it against the schema defined in YANG, and
- * constructs the abstract YANG data tree.
- */
-package org.onosproject.yms.ydt;
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ymsm/YmsService.java b/apps/yms/api/src/main/java/org/onosproject/yms/ymsm/YmsService.java
deleted file mode 100644
index 72eb8ff..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ymsm/YmsService.java
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ymsm;
-
-import java.util.List;
-
-import org.onosproject.yms.ych.YangCodecHandler;
-import org.onosproject.yms.ych.YangDataTreeCodec;
-import org.onosproject.yms.ych.YangProtocolEncodingFormat;
-import org.onosproject.yms.ydt.YdtBuilder;
-import org.onosproject.yms.ydt.YdtResponse;
-import org.onosproject.yms.ydt.YdtWalker;
-import org.onosproject.yms.ydt.YmsOperationType;
-import org.onosproject.yms.ynh.YangNotificationService;
-import org.onosproject.yms.ysr.YangModuleIdentifier;
-import org.onosproject.yms.ysr.YangModuleLibrary;
-
-/**
- * Abstraction of an entity which provides interfaces to YANG management
- * system. YMS is a core of YANG in ONOS.
- *
- * In NBI, it acts as a broker in between the protocol and application,
- * here there is a separate protocol implementation, which does the conversion
- * of protocol representation to abstract data tree. The protocol
- * implementation takes care of the protocol specific actions for
- * e.g. RESTCONF handling the entity-tag / timestamp related operations.
- *
- * In SBI, driver or provider uses YANG codec handler as a utility to translate
- * the request information in java(YANG utils generated) to protocol specific
- * format and vice versa.
- */
-public interface YmsService {
-
-    /**
-     * Returns YANG data tree builder.
-     *
-     * NBI protocol implementation takes care of the protocol specific
-     * operations. They are abstracted from the intricacies of understanding
-     * the application identification or handling the interaction with
-     * applications.
-     *
-     * NBI protocols need to handle the encoding and decoding of data to the
-     * protocol specific format. They are unaware of the YANG of applications,
-     * i.e. protocols are unaware of the data structure / organization in
-     * applications.
-     *
-     * They need to translate the protocol operation request, into a protocol
-     * independent abstract tree called the YANG data tree (YDT). In order to
-     * enable the protocol in building these abstract data tree, YANG
-     * management system provides a utility called the YANG data tree builder.
-     *
-     * Using the YANG data tree utility API's protocols are expected to walk
-     * the data received in request and pass the information during the walk.
-     * YANG data tree builder, identifies the application which supports the
-     * request and validates it against the schema defined in YANG, and
-     * constructs the abstract YANG data tree.
-     *
-     * Interaction type is a MANDATORY parameter which is used by YANG
-     * management system to perform the required operation in ONOS.
-     *
-     * NOTE: Same YDT builder instance cannot be reused across different
-     * operation request. A new instance needs to be used for every operation.
-     *
-     * Returns YANG data tree builder logical root container node.
-     * Protocol use this to logical root container to hold schema specific data
-     * that spans across different modules schema.
-     *
-     * @param logicalRootName name of a protocol specific logical container
-     *                        node to group data across multiple applications.
-     *                        This is only a logical container to group more
-     *                        than one application's root node. It is not
-     *                        validated against any YANG definition
-     * @param rootNamespace   namespace of logical root container, if any,
-     *                        otherwise it can be sent as null
-     * @param operationType   maps the request type to a corresponding
-     *                        operation request type to YANG management system
-     * @return YANG data tree builder, using which the abstract tree can be
-     * built corresponding to the data exchanged between protocol and YANG
-     * management system.
-     */
-    YdtBuilder getYdtBuilder(String logicalRootName, String rootNamespace,
-                             YmsOperationType operationType);
-
-    /**
-     * Returns YANG data tree builder attached with a given schema registry.
-     *
-     * YMS provides a framework where-in protocols can register their protocol
-     * data format specific CODECS with YMS. These registered CODEC will be
-     * used by YMS to perform translations from data format to YDT and YDT to
-     * data format. YMS may intend to use these CODECS both for NBI and SBI.
-     *
-     * To perform decode i.e. generate YDT for given data format string, these
-     * CODECS implementation needs to call the API's of YDT. YDT referred the
-     * registered schema information while building tree. In case of NBI their
-     * is a single schema registry, but for SBI schema registry is per
-     * driver/provider.
-     *
-     * Now this schema registry information is provided to protocols
-     * CODECS while invoking "decodeProtocolDataToYdt" and
-     * "decodeCompositeProtocolDataToYdt", protocol CODECS  needs to provide
-     * the schema registry while getting instance of YDT builder.
-     * The schemaRegistry may be null when the YMS is performing decode for NBI
-     * protocols.
-     *
-     * Validations for NBI and SBI will vary, schemaRegistry value will also
-     * indicate the usage scenario and will be used by YdtBuilder to carry out
-     * necessary validations.
-     *
-     * This is an overloaded method to YdtBuilder which MUST be used by the
-     * overridden protocols CODECS.
-     *
-     * @param logicalRootName      name of a protocol specific logical container
-     *                             node to group data across multiple
-     *                             applications.
-     *                             This is only a logical container to group
-     *                             more
-     *                             than one application's root node. It is not
-     *                             validated against any YANG definition
-     * @param rootNamespace        namespace of logical root container, if any,
-     *                             otherwise it can be sent as null
-     * @param operationType        maps the request type to a corresponding
-     *                             operation request type to YANG management
-     *                             system
-     * @param schemaRegistryForYdt schema registry for Ydt, protocol CODECS get
-     *                             this value from YMS in
-     *                             "decodeProtocolDataToYdt" and
-     *                             "decodeCompositeProtocolDataToYdt" and
-     *                             provide it while obtaining YdtBuilder
-     * @return YANG data tree builder, using which the abstract tree can be
-     * built corresponding to the data exchanged between protocol and YANG
-     * management system.
-     */
-    YdtBuilder getYdtBuilder(String logicalRootName, String rootNamespace,
-                             YmsOperationType operationType,
-                             Object schemaRegistryForYdt);
-
-    /**
-     * Returns YANG data tree walker.
-     *
-     * YANG management system gets data from application to be returned
-     * in protocol operation or to notify to protocol(s) clients, YANG
-     * management system encodes the data in a YANG data tree and informs the
-     * protocol.
-     * Protocols can use the YANG data tree walker utility to have their
-     * callbacks to be invoked as per the YANG data tree walking.
-     * By this way protocols can encode the data from abstract YANG data tree
-     * into a protocol specific representation.
-     *
-     * @return YANG data tree walker utility
-     */
-    YdtWalker getYdtWalker();
-
-    /**
-     * Once the NBI protocol translates the request information into an abstract
-     * YANG data tree, it uses YANG management system as a broker to get the
-     * operation executed in ONOS.
-     *
-     * YANG management system is responsible to split the protocol operation
-     * across application(s) which needs to participate, and collate the
-     * response(s) from application(s) and return an effective result of the
-     * operation request.
-     *
-     * YMS identifies the type of operation to be performed using the
-     * operation type in YANG builder data tree and process the corresponding
-     * operation request on the applicable application(s).
-     * The response information maintained in response YANG data tree and
-     * given to NBI protocol's to encode it using a YANG data tree walker.
-     *
-     * Depending on the operation type set in the YANG builder tree, the
-     * application(s) get / set / operation interface is invoked.
-     * These interface are part to the YANG modelled service interface.
-     * Depending on the operation type, the YANG response data tree can have
-     * the following information.
-     *
-     * In case of EDIT_CONFIG operation, it will have the status of the
-     * operation execution. If there is any applications schema specific
-     * error, then the schema error information will be encoded in the
-     * corresponding context node. In case the edit operation is successful
-     * there is no YANG response data tree created, hence getRootNode will
-     * return null.
-     *
-     * In case of query operation, it will have the status of the operation
-     * execution. If there is any application schema specific error, then
-     * schema error information will be encoded in the corresponding YANG
-     * context. In case the query operation is successful, YANG data tree
-     * contains the application data that matched the filter in the
-     * operation request. NBI protocol to use a Yang data tree walker to
-     * construct the protocol specific reply.
-     *
-     * In case of RPC operation, it will have the status of the operation
-     * execution. If there is any application schema specific error, then
-     * schema error information will be encoded in the corresponding YANG
-     * context. In case the RPC operation is successful, and the RPC
-     * does not have any RPC reply in YANG, then the YANG data tree will
-     * be null.
-     * In case the RPC has a RPC reply in YANG, then the YANG data tree
-     * will contain the application's RPC reply schema specific .
-     * NBI protocol to use a Yang data tree walker to construct the
-     * protocol specific reply.
-     *
-     * @param operationRequest operation request that was constructed
-     *                         by NBI protocol using YANG data tree
-     *                         builder. This operation request contains
-     *                         operation request that needs to be
-     *                         executed on the applicable application(s)
-     * @return returns the result of the operation execution.
-     */
-    YdtResponse executeOperation(YdtBuilder operationRequest);
-
-    /* TODO add execute operation which directly take data format string as
-     input.*/
-
-    /**
-     * Returns YANG notification service.
-     *
-     * NBI Protocols which can support notification delivery for application(s)
-     * needs to add themselves as a listeners with YANG notification service.
-     * Also protocols can use YANG notification service to check if a received
-     * notification should be filtered against any of their protocol specific
-     * filtering mechanism.
-     *
-     * @return YANG notification service instance
-     */
-    YangNotificationService getYangNotificationService();
-
-    /**
-     * Registers service with YANG management system.
-     *
-     * Applications model their exposed interface in YANG, and register with
-     * YANG management system, so that it can be configured / managed by the
-     * set of protocols supported in ONOS.
-     *
-     * ONOS YANG tools generate the applications service interface
-     * corresponding to the application's interface designed in YANG.
-     *
-     * The Application which implements this service registers the generated
-     * service with YANG management system. The generated service interfaces
-     * have all the information modeled by applications in YANG.
-     *
-     * Registers application's YANG model with YANG management system. This
-     * is used by applications/core to register their service with YMS.
-     *
-     * @param appManager           application manager instance which is
-     *                             implementing the service defined in YANG.
-     * @param yangService          service interface generated by ONOS YANG
-     *                             tools corresponding to the interface modeled
-     *                             in YANG.
-     * @param supportedFeatureList mentions the list of YANG features supported
-     *                             by the application implementation.
-     *                             If it is null, then the application
-     *                             implementation supports all the features
-     *                             defined in the registered YANG module.
-     */
-    void registerService(Object appManager, Class<?> yangService,
-                         List<String> supportedFeatureList);
-
-    /**
-     * Unregisters service which is registered in YANG management system.
-     *
-     * Applications model their exposed interface in YANG, and register with
-     * YANG management system, so that it can be configured / managed by the
-     * set of protocols supported in ONOS.
-     *
-     * ONOS YANG tools generate the applications service interface
-     * corresponding to the application's interface designed in YANG.
-     *
-     * The Application which implements this service registers the generated
-     * service with YANG management system. The generated service interfaces
-     * have all the information modeled by applications in YANG.
-     *
-     * Registers application's YANG model with YANG management system. This
-     * is used by applications/core to register their service with YMS.
-     *
-     * @param appManager  application manager instance which is implementing
-     *                    the service defined in YANG.
-     * @param yangService service interface generated by ONOS YANG tools
-     *                    corresponding to the interface modeled in YANG.
-     */
-    void unRegisterService(Object appManager, Class<?> yangService);
-
-    /**
-     * Protocols like RESTCONF, share the list of YANG modules it support.
-     * using ietf-yang-library
-     *
-     * Retrieves the YANG module library supported by the server.
-     *
-     * @return YANG module library supported by the server
-     */
-    YangModuleLibrary getYangModuleLibrary();
-
-    /**
-     * Protocols like RESTCONF, use the definitions within the YANG modules
-     * advertised by the server are used to construct an RPC operation or
-     * data resource identifier.
-     *
-     * Schema Resource:
-     * The server can optionally support retrieval of the YANG modules it
-     * supports.
-     *
-     *
-     * @param moduleIdentifier module's identifier
-     * @return YANG file contents of the requested YANG module.
-     */
-    String getYangFile(YangModuleIdentifier moduleIdentifier);
-
-    /**
-     * Register protocol specific default CODEC. This is can be used by 1st
-     * protocol
-     * to support a protocol format CODEC. This CODEC will be used in both
-     * NBI and SBI.
-     *
-     * @param defaultCodec default codec to be used for a particular protocol
-     *                     data format
-     * @param dataFormat   data format to which encoding to be done.
-     *                     Currently XML and
-     *                     JSON formats are supported.
-     */
-    void registerDefaultCodec(YangDataTreeCodec defaultCodec,
-                              YangProtocolEncodingFormat dataFormat);
-
-    /**
-     * Returns YANG codec handler utility.
-     *
-     * In SBI, the provider or driver uses YANG management system as a CODEC
-     * utility. These providers/drivers use the YANG codec utility to register
-     * the device schema. YANG utils is used to generate the java files
-     * corresponding to the device schema. Provider or driver use these classes
-     * to seamlessly manage the device as java objects. While sending the
-     * request
-     * to device, drivers use the utility to translate the objects to protocol
-     * specific data representation and then send to the device.
-     * Protocol or driver use the same instance of the codec utility across
-     * multiple
-     * translation request.
-     * Protocol or driver should not use the same instance of utility
-     * concurrently.
-     *
-     * @return YANG codec utility
-     */
-    YangCodecHandler getYangCodecHandler();
-
-    // TODO exceptions handling and sending.
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ymsm/package-info.java b/apps/yms/api/src/main/java/org/onosproject/yms/ymsm/package-info.java
deleted file mode 100644
index 1639b3b..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ymsm/package-info.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides interfaces to YANG application management system manager. YMSM is
- * manager of the YANG Core.
- *
- * In NBI, it acts as a broker in between the protocol and application,
- * here there is a separate protocol implementation, which does the conversion
- * of protocol representation to abstract data tree. The protocol
- * implementation takes care of the protocol specific actions for
- * e.g. RESTCONF handling the entity-tag / timestamp related operations.
- *
- * In SBI, driver or provider uses YANG codec handler as a utility to translate
- * the request information in java(YANG utils generated) to protocol specific
- * format and vice versa.
- */
-package org.onosproject.yms.ymsm;
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotification.java b/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotification.java
deleted file mode 100644
index 3ae2571..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotification.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ynh;
-
-import org.onosproject.yms.ydt.YdtContext;
-
-/**
- * Represents YANG notification which is a subject of YANG based event.
- *
- * YMS add themselves as a listener to applications. Application sends
- * their notification in YANG utils generated notification. YMS obtains
- * the module/sub-module schema tree in which this notification is contained
- * and then convert this data to an abstract tree notation (YDT) with root
- * node as the logical node with name "yangnotification" it contains
- * module/sub-module node in which notification is contained.
- * It sends the same to all the protocol who has added them as a listener
- * as a YANG notification.
- *
- * This class represents YANG notification which contains the
- * notification context in abstract tree notation.
- */
-public class YangNotification {
-
-    /**
-     * YANG notification in form of abstract tree notation (YDT)
-     * Root node of notification root context will be logical node with
-     * name as "yangnotification", it contains module/sub-module node
-     * in which notification is contained.
-     */
-    YdtContext notificationRootContext;
-
-    /**
-     * Creates an instance of YANG notification subject.
-     *
-     * @param notificationContext logical root node with name as
-     *                            "yangnotification"
-     */
-    public YangNotification(YdtContext notificationContext) {
-        this.notificationRootContext = notificationContext;
-    }
-
-    /**
-     * Assign the YANG modeled notification data.
-     *
-     * @param notificationRootContext YANG data tree containing the data for
-     *                                the notification
-     */
-    public void setNotificationRootContext(YdtContext notificationRootContext) {
-        this.notificationRootContext = notificationRootContext;
-    }
-
-    /**
-     * Returns YANG notification data.
-     *
-     * @return YANG data tree containing the data for the notification
-     */
-    public YdtContext getNotificationRootContext() {
-        return notificationRootContext;
-    }
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationEvent.java b/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationEvent.java
deleted file mode 100644
index 6009fc9..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationEvent.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ynh;
-
-import org.onosproject.event.AbstractEvent;
-
-/**
- * Represents YANG notification event.
- *
- * YANG notification handler listens for the notification from the application.
- * It convert the received notification in YANG notification events.
- *
- * YangNotificationEvent represents event generated by YANG management system
- * in response to the YANG defined application notification. The applications
- * notification information is in abstract YANG data tree.
- */
-public class YangNotificationEvent
-        extends AbstractEvent<YangNotificationEvent.Type, YangNotification> {
-
-    /**
-     * Event type is the notification as defined in the YANG file.
-     */
-    public enum Type {
-        /**
-         * Indicates a YANG notification.
-         */
-        YANG_NOTIFICATION
-    }
-
-    /**
-     * YANG notification information shared to NBI protocol in YANG data tree
-     * using the registered callback.
-     *
-     * @param subject notification information in YANG data tree.
-     */
-    public YangNotificationEvent(YangNotification subject) {
-        super(Type.YANG_NOTIFICATION, subject);
-    }
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationListener.java b/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationListener.java
deleted file mode 100644
index fa47eac..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationListener.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ynh;
-
-import org.onosproject.event.EventListener;
-
-/**
- * Abstraction of listener for YANG notification handler events.
- * NBI protocols/interfaces supporting YANG notification needs to implement
- * YANG notification listener and add themselves as a listener to YANG
- * notification event.
- */
-public interface YangNotificationListener
-        extends EventListener<YangNotificationEvent> {
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationService.java b/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationService.java
deleted file mode 100644
index f1f68a5..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationService.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ynh;
-
-import org.onosproject.event.ListenerService;
-
-/**
- * Abstraction of an entity which provides interfaces to YANG notification
- * service. YANG notification handler receives the event notifications from
- * application/core and provide it to the protocols.
- *
- * NBI Protocols which can support notification delivery for application(s)
- * needs to add themselves as a listeners with YANG notification service.
- * Also based on registered schema YMS add themselves as a listener to
- * applications. Application sends their notification in YANG utils generated
- * notification. YMS obtains the module/sub-module schema tree in which this
- * notification is contained and then convert this data to an abstract tree
- * notation (YDT) with root node as the module/sub-module node in which
- * notification is contained. It sends the same to all the protocol who has
- * added them as a listener as a YANG notification.
- *
- * Also Protocols can use YANG notification service to check if a received
- * notification should be filtered against any of their protocol specific
- * filtering mechanism.
- */
-public interface YangNotificationService
-        extends ListenerService<YangNotificationEvent,
-        YangNotificationListener> {
-
-   /*
-    *      Example of a use case of notification filtering.
-    *      The following example illustrates how to select fault events which
-    *      have severities of critical, major, or minor.  The filtering criteria
-    *      evaluation is as follows:
-    *
-    *      ((fault & severity=critical) | (fault & severity=major) | (fault &
-    *      severity=minor))
-    *
-    *           <netconf:rpc netconf:message-id="101"
-    *                   xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0">
-    *             <create-subscription
-    *                 xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
-    *               <filter netconf:type="subtree">
-    *                 <event xmlns="http://example.com/event/1.0">
-    *                   <eventClass>fault</eventClass>
-    *                   <severity>critical</severity>
-    *                 </event>
-    *                 <event xmlns="http://example.com/event/1.0">
-    *                   <eventClass>fault</eventClass>
-    *                   <severity>major</severity>
-    *                 </event>
-    *                 <event xmlns="http://example.com/event/1.0">
-    *                   <eventClass>fault</eventClass>
-    *                   <severity>minor</severity>
-    *                 </event>
-    *               </filter>
-    *             </create-subscription>
-    *           </netconf:rpc>
-    */
-
-    /**
-     * Protocols have their own mechanism to support notification filtering
-     * or notification subscription. Depending on the protocol specification,
-     * the filtering is implemented in the protocol.
-     * The Protocol implementations are abstracted of the Schema, there are
-     * scenarios in which  they need to check if the received notification
-     * is of interest as per the schema filtering / subscription.
-     * In such scenario, protocols can create a filtering / subscription YANG
-     * data tree and use the notification service to filter the notification
-     * subject against their filter.
-     *
-     * Filters the notification subject YANG data tree, with the specified
-     * filter of the NBI protocol. If the filter does not match for the
-     * passed notification subject, null will be returned.
-     * Otherwise, the part of the subject matching the filter will be returned.
-     *
-     * @param notificationSubject YANG notification subject reported by YANG
-     *                            notification service.
-     * @param notificationFilter  Protocols data model specific notification
-     *                            filter represented in YANG data tree.
-     * @return filtered notification which passes the data model specific
-     * notification filter.
-     */
-    YangNotification getFilteredSubject(YangNotification notificationSubject,
-                                        YangNotification notificationFilter);
-
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/package-info.java b/apps/yms/api/src/main/java/org/onosproject/yms/ynh/package-info.java
deleted file mode 100644
index a0620c3..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/package-info.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides interfaces to YANG notification handler. YNH handles notification
- * from the application and provide it to the protocols.
- *
- * NBI Protocols which can support notification delivery for application(s)
- * need to add themselves as a listeners with YANG notification service.
- *
- * Also protocols can use YANG notification service to check if a received
- * notification should be filtered against any of their protocol specific
- * filtering mechanism.
- */
-package org.onosproject.yms.ynh;
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ypm/DefaultYpmNode.java b/apps/yms/api/src/main/java/org/onosproject/yms/ypm/DefaultYpmNode.java
deleted file mode 100644
index 846b443..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ypm/DefaultYpmNode.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ypm;
-
-/**
- * Represents implementation of interfaces to build and obtain YANG protocol metadata tree node.
- */
-public class DefaultYpmNode implements YpmContext {
-
-    /**
-     * Name of the node.
-     */
-    private String name;
-
-    /**
-     * Parent reference.
-     */
-    private DefaultYpmNode parent;
-
-    /**
-     * First child reference.
-     */
-    private DefaultYpmNode child;
-
-    /**
-     * Next sibling reference.
-     */
-    private DefaultYpmNode nextSibling;
-
-    /**
-     * Previous sibling reference.
-     */
-    private DefaultYpmNode previousSibling;
-
-    /**
-     * Protocol metadata object.
-     */
-    private Object metaData;
-
-    /**
-     * Creates a specific type of node.
-     *
-     * @param name of ypm node
-     */
-    public DefaultYpmNode(String name) {
-        setName(name);
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    @Override
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    @Override
-    public DefaultYpmNode getParent() {
-        return parent;
-    }
-
-    @Override
-    public void setParent(YpmContext parent) {
-        this.parent = (DefaultYpmNode) parent;
-    }
-
-    @Override
-    public YpmContext getFirstChild() {
-        return child;
-    }
-
-    @Override
-    public YpmContext getChild(String ypmName) {
-        if (ypmName == null) {
-            // Input is null. So, will not proceed.
-            return null;
-        }
-
-        if (child == null) {
-            // No children
-            return null;
-        }
-
-        // Check the first child
-        if (child.name.equals(ypmName)) {
-            return child;
-        }
-
-        // Check its siblings
-        YpmContext currentChild = child;
-        while (currentChild.getNextSibling() != null) {
-            currentChild = currentChild.getNextSibling();
-            if (currentChild.getName().equals(ypmName)) {
-                return currentChild;
-            }
-        }
-
-        return null;
-    }
-
-    @Override
-    public void addChild(String ypmName) {
-        if (ypmName == null) {
-            // Input is null. So, will not proceed.
-            return;
-        }
-
-        if (getChild(ypmName) != null) {
-            // Already available with the same name. So, no need to add
-            return;
-        }
-
-        // Create new ypm node and attach to its parent
-        DefaultYpmNode newNode = new DefaultYpmNode(ypmName);
-        newNode.setParent(this);
-
-        // Check the first child
-        if (child == null) {
-            child = newNode;
-            return;
-        }
-
-        // Add it to its siblings
-        YpmContext currentChild = child;
-        // Go to the last child
-        while (currentChild.getNextSibling() != null) {
-            currentChild = currentChild.getNextSibling();
-        }
-        currentChild.setNextSibling(newNode);
-        newNode.setPreviousSibling((DefaultYpmNode) currentChild);
-    }
-
-    @Override
-    public YpmContext getSibling(String ypmName) {
-        if (ypmName == null) {
-            // Input is null. So, will not proceed.
-            return null;
-        }
-
-        YpmContext sibling = getNextSibling();
-        while (sibling != null) {
-            if (sibling.getName().equals(ypmName)) {
-                return sibling;
-            }
-            sibling = sibling.getNextSibling();
-        }
-        return null;
-    }
-
-    @Override
-    public void addSibling(String ypmName) {
-        if (ypmName == null) {
-            // Input is null. So, will not proceed.
-            return;
-        }
-
-        if (getSibling(ypmName) != null) {
-            // Already available with the same name. So, no need to add
-            return;
-        }
-
-        // Create new ypm node and attach to its parent
-        DefaultYpmNode newSibling = new DefaultYpmNode(ypmName);
-        newSibling.setParent(this.getParent());
-
-        // Add it as its sibling
-        YpmContext sibling = getNextSibling();
-        if (sibling == null) {
-            setNextSibling(newSibling);
-            newSibling.setPreviousSibling(this);
-        } else {
-            // Go to the last sibling
-            while (sibling.getNextSibling() != null) {
-                sibling = sibling.getNextSibling();
-            }
-            sibling.setNextSibling(newSibling);
-            newSibling.setPreviousSibling((DefaultYpmNode) sibling);
-        }
-    }
-
-    @Override
-    public DefaultYpmNode getNextSibling() {
-        return nextSibling;
-    }
-
-    @Override
-    public void setNextSibling(DefaultYpmNode sibling) {
-        nextSibling = sibling;
-    }
-
-    @Override
-    public DefaultYpmNode getPreviousSibling() {
-        return previousSibling;
-    }
-
-    @Override
-    public void setPreviousSibling(DefaultYpmNode sibling) {
-        this.previousSibling = sibling;
-    }
-
-    @Override
-    public Object getMetaData() {
-        return this.metaData;
-    }
-
-    @Override
-    public void setMetaData(Object data) {
-        this.metaData = data;
-    }
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ypm/YpmContext.java b/apps/yms/api/src/main/java/org/onosproject/yms/ypm/YpmContext.java
deleted file mode 100644
index 18ac0e7..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ypm/YpmContext.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ypm;
-
-/**
- * Abstraction of an entity which represents YANG protocol metadata context
- * information.
- */
-public interface YpmContext {
-
-    /**
-     * Returns the node name.
-     *
-     * @return node name
-     */
-    String getName();
-
-    /**
-     * Sets the nodes name.
-     *
-     * @param name nodes name
-     */
-    void setName(String name);
-
-    /**
-     * Returns the context of parent node.
-     *
-     * @return context of parent node
-     */
-    YpmContext getParent();
-
-    /**
-     * Sets the context of parent node.
-     *
-     * @param parent node parent
-     */
-    void setParent(YpmContext parent);
-
-    /**
-     * Retrieves the first child of a node.
-     *
-     * @return first child of a node
-     */
-    YpmContext getFirstChild();
-
-    /**
-     * Retrieves the child of a node for corresponding ydt node.
-     *
-     * @param name ypm node
-     * @return child of a node
-     */
-    YpmContext getChild(String name);
-
-    /**
-     * Adds child to a node by ydt name.
-     *
-     * @param name ypm name
-     */
-    void addChild(String name);
-
-    /**
-     * Retrieves sibling of a child by (ydt) name.
-     *
-     * @param name ypm name
-     * @return sibling of a child
-     */
-    YpmContext getSibling(String name);
-
-    /**
-     * Adds new sibling to a child.
-     *
-     * @param name ypm name
-     */
-    void addSibling(String name);
-
-    /**
-     * Returns the context of next sibling.
-     *
-     * @return context of next sibling
-     */
-    YpmContext getNextSibling();
-
-    /**
-     * Sets the next sibling of node.
-     *
-     * @param sibling ypm node
-     */
-    void setNextSibling(DefaultYpmNode sibling);
-
-    /**
-     * Returns the previous sibling of a node.
-     *
-     * @return previous sibling of a node
-     */
-    DefaultYpmNode getPreviousSibling();
-
-    /**
-     * Sets the previous sibling.
-     *
-     * @param previousSibling points to predecessor sibling
-     */
-    void setPreviousSibling(DefaultYpmNode previousSibling);
-
-    /**
-     * Retrieves protocol metadata.
-     *
-     * @return metadata
-     */
-    Object getMetaData();
-
-    /**
-     * Sets the protocol metadata.
-     *
-     * @param data metadata
-     */
-    void setMetaData(Object data);
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ypm/YpmService.java b/apps/yms/api/src/main/java/org/onosproject/yms/ypm/YpmService.java
deleted file mode 100644
index f23e9c6..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ypm/YpmService.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ypm;
-
-import org.onosproject.yms.ydt.YdtContext;
-
-/**
- * Abstraction of an entity which provides interfaces to YANG Protocol Metadata Manager.
- */
-public interface YpmService {
-
-    /**
-     * Returns the protocol data stored in sepecific data model path.
-     *
-     * @param rootNode YANG data tree
-     * @return YANG protocol metadata
-     */
-    YpmContext getProtocolData(YdtContext rootNode);
-
-    /**
-     * Sets the YANG protocol metadata in specific ydt path in ypm tree.
-     *
-     * @param rootNode YANG data tree
-     * @param data YANG protocol metadata
-     */
-    void setProtocolData(YdtContext rootNode, Object data);
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ypm/package-info.java b/apps/yms/api/src/main/java/org/onosproject/yms/ypm/package-info.java
deleted file mode 100644
index 485707d..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ypm/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides interfaces to YANG protocol metadata manager. YPM maintains protocol specific information
- * (like timestamp, entity tag, etc.) for YANG modeled data.
- */
-package org.onosproject.yms.ypm;
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleIdentifier.java b/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleIdentifier.java
deleted file mode 100644
index 74836e0..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleIdentifier.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ysr;
-
-/**
- * Abstraction of an entity which provides YANG module identifiers.
- * Reference RFC 7895
- * YANG library provides information about all the YANG modules
- * used by a network management server
- */
-public interface YangModuleIdentifier {
-    /**
-     * retrieves the name of the YANG module.
-     *
-     * @return the name of the YANG module
-     */
-    String moduleName();
-
-    /**
-     * Retrieves revision of the YANG module.
-     * <p>
-     * Reference RFC 7895
-     * Each YANG module and submodule within the library has a
-     * revision.  This is derived from the most recent revision statement
-     * within the module or submodule.  If no such revision statement
-     * exists, the module's or submodule's revision is the zero-length
-     * string.
-     *
-     * @return revision of the YANG module
-     */
-    String revision();
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleInformation.java b/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleInformation.java
deleted file mode 100644
index a64ea32..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleInformation.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ysr;
-
-import org.onosproject.yangutils.datamodel.YangNamespace;
-
-import java.util.List;
-
-/**
- * Abstraction of an entity which provides YANG module information.
- *
- * Reference RFC 7895
- * The following information is needed by a client application (for each
- * YANG module in the library) to fully utilize the YANG data modeling
- * language:
- *
- * o  name: The name of the YANG module.
- *
- * o  revision: Each YANG module and submodule within the library has a
- * revision.  This is derived from the most recent revision statement
- * within the module or submodule.  If no such revision statement
- * exists, the module's or submodule's revision is the zero-length
- * string.
- *
- * o  submodule list: The name and revision of each submodule used by
- * the module MUST be identified.
- *
- * o  feature list: The name of each YANG feature supported by the
- * server MUST be identified.
- *
- * o  deviation list: The name of each YANG module used for deviation
- * statements MUST be identified.
- */
-public interface YangModuleInformation {
-    /**
-     * Retrieves the YANG modules identifier.
-     *
-     * @return YANG modules identifier
-     */
-    YangModuleIdentifier moduleIdentifier();
-
-    /**
-     * Retrieves the YANG modules namespace.
-     * The XML namespace identifier for this module.
-     *
-     * @return YANG modules namespace
-     */
-    YangNamespace namespace();
-
-    /**
-     * Reference RFC 7895
-     * Retrieves the list of YANG feature names from this module that are
-     * supported by the server, regardless of whether they are
-     * defined in the module or any included submodule.
-     *
-     * @return list of YANG features
-     */
-    List<String> featureList();
-
-    /**
-     * Retrieves the list of submodules in the module.
-     * The name and revision of each submodule used by
-     * the module MUST be identified.
-     *
-     * Each entry represents one submodule within the
-     * parent module.
-     *
-     * @return list of submodules in the module
-     */
-    List<YangModuleIdentifier> subModuleIdentifiers();
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleLibrary.java b/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleLibrary.java
deleted file mode 100644
index b66f887..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleLibrary.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.ysr;
-
-/*-
- * Abstraction of an entity which provides the servers YANG library information.
- *
- * Reference RFC 7895
- * The "ietf-yang-library" module provides information about the YANG
- * library used by a server.  This module is defined using YANG version
- * 1, but it supports the description of YANG modules written in any
- * revision of YANG.
- *
- * Following is the YANG Tree Diagram for the "ietf-yang-library"
- * module:
- *
- *     +--ro modules-state
- *        +--ro module-set-id    string
- *        +--ro module* [name revision]
- *           +--ro name                yang:yang-identifier
- *           +--ro revision            union
- *           +--ro schema?             inet:uri
- *           +--ro namespace           inet:uri
- *           +--ro feature*            yang:yang-identifier
- *           +--ro deviation* [name revision]
- *           |  +--ro name        yang:yang-identifier
- *           |  +--ro revision    union
- *           +--ro conformance-type    enumeration
- *           +--ro submodule* [name revision]
- *              +--ro name        yang:yang-identifier
- *              +--ro revision    union
- *              +--ro schema?     inet:uri
- */
-
-import java.util.List;
-
-public interface YangModuleLibrary {
-    /**
-     * Retrieves the current module set id of the YANG library.
-     *
-     * Reference RFC7895.
-     * modules-state/module-set-id
-     *
-     * This mandatory leaf contains a unique implementation-specific
-     * identifier representing the current set of modules and submodules on
-     * a specific server.  The value of this leaf MUST change whenever the
-     * set of modules and submodules in the YANG library changes.  There is
-     * no requirement that the same set always results in the same "module-
-     * set-id" value.
-     *
-     * @return module set id of the YANG library
-     */
-    String moduleSetId();
-
-    /**
-     * Retrieves the current list of YANG modules supported in the server.
-     *
-     * Reference RFC 7895.
-     * modules-state/module
-     *
-     * This mandatory list contains one entry for each YANG data model
-     * module supported by the server.  There MUST be an entry in this list
-     * for each revision of each YANG module that is used by the server.  It
-     * is possible for multiple revisions of the same module to be imported,
-     * in addition to an entry for the revision that is implemented by the
-     * server.
-     *
-     * @return the current list of YANG modules supported in the server
-     */
-    List<YangModuleInformation> yangModuleList();
-}
diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ysr/package-info.java b/apps/yms/api/src/main/java/org/onosproject/yms/ysr/package-info.java
deleted file mode 100644
index b36d6f2..0000000
--- a/apps/yms/api/src/main/java/org/onosproject/yms/ysr/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * YANG schema registry (YSR) is responsible to maintain all the applications
- * schemas defined in YANG. The YANG data tree builder depends on the schema
- * registry to validate the tree building according to schema.
- * YANG codec handler using the schema registry to maintain device schema.
- */
-package org.onosproject.yms.ysr;
diff --git a/apps/yms/app/BUCK.deprecated b/apps/yms/app/BUCK.deprecated
deleted file mode 100644
index be5b01b..0000000
--- a/apps/yms/app/BUCK.deprecated
+++ /dev/null
@@ -1,13 +0,0 @@
-COMPILE_DEPS = [
-  '//lib:CORE_DEPS',
-  '//apps/yms/api:onos-apps-yms-api',
-  '//lib:onos-yang-datamodel',
-  '//lib:onos-yang-utils-generator',
-  '//lib:org.apache.servicemix.bundles.dom4j',
-]
-
-osgi_jar_with_tests(
-  name = 'onos-apps-yms-app',
-  deps = COMPILE_DEPS,
-  #private_packages = 'org.onosproject.yangutils.datamodel.*,org.onosproject.yangutils.translator.*,org.onosproject.yangutils.linker.*,org.onosproject.yangutils.utils.*',
-)
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/utils/TraversalType.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/utils/TraversalType.java
deleted file mode 100644
index 83dc008..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/utils/TraversalType.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.utils;
-
-/**
- * Represents traversal type of the YANG node tree.
- */
-public enum TraversalType {
-
-    /*
-     * Start of traversal at the tree root.
-     */
-    ROOT,
-
-    /*
-     * Child node traversal.
-     */
-    CHILD,
-
-    /*
-     * Sibling node traversal.
-     */
-    SIBLING,
-
-    /*
-     * Parent node traversal.
-     */
-    PARENT
-}
-
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/utils/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/utils/package-info.java
deleted file mode 100644
index f1f9af6..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/utils/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of build and obtain YANG data tree which is data
- * (sub)instance representation, abstract of protocol.
- */
-package org.onosproject.yms.app.utils;
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/YangApplicationBroker.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/YangApplicationBroker.java
deleted file mode 100644
index 5d53331..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/YangApplicationBroker.java
+++ /dev/null
@@ -1,903 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yab;
-
-import org.onosproject.yangutils.datamodel.YangAugment;
-import org.onosproject.yangutils.datamodel.YangAugmentableNode;
-import org.onosproject.yangutils.datamodel.YangInput;
-import org.onosproject.yangutils.datamodel.YangModule;
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangRpc;
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yms.app.utils.TraversalType;
-import org.onosproject.yms.app.yab.exceptions.YabException;
-import org.onosproject.yms.app.ydt.DefaultYdtAppContext;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YangResponseWorkBench;
-import org.onosproject.yms.app.ydt.YdtAppContext;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.ydt.YdtMultiInstanceNode;
-import org.onosproject.yms.app.ydt.YdtNode;
-import org.onosproject.yms.app.yob.DefaultYobBuilder;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.onosproject.yms.app.ytb.DefaultYangTreeBuilder;
-import org.onosproject.yms.ydt.YdtBuilder;
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ydt.YdtResponse;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.yms.app.utils.TraversalType.CHILD;
-import static org.onosproject.yms.app.utils.TraversalType.PARENT;
-import static org.onosproject.yms.app.utils.TraversalType.ROOT;
-import static org.onosproject.yms.app.utils.TraversalType.SIBLING;
-import static org.onosproject.yms.app.ydt.AppNodeFactory.getAppContext;
-import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.DELETE_ONLY;
-import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.OTHER_EDIT;
-import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE;
-import static org.onosproject.yms.ydt.YmsOperationExecutionStatus.EXECUTION_SUCCESS;
-
-/**
- * Represents YANG application broker. It acts as a broker between Protocol and
- * YANG based application.
- */
-public class YangApplicationBroker {
-
-    private static final String GET = "get";
-    private static final String SET = "set";
-    private static final String AUGMENTED = "Augmented";
-    private static final String VOID = "void";
-    private final YangSchemaRegistry schemaRegistry;
-    private Set<String> augGenMethodSet;
-
-    /**
-     * Creates a new YANG application broker.
-     *
-     * @param schemaRegistry YANG schema registry
-     */
-    public YangApplicationBroker(YangSchemaRegistry schemaRegistry) {
-        this.schemaRegistry = schemaRegistry;
-    }
-
-    /**
-     * Processes query request of a NBI protocol.
-     *
-     * @param ydtWorkBench YANG request work bench
-     * @return YANG response data tree node context
-     * @throws YabException violation in execution of YAB
-     */
-    public YdtResponse processQuery(YdtBuilder ydtWorkBench)
-            throws YabException {
-        List<Object> responseObjects = new LinkedList<>();
-        YangRequestWorkBench workBench = (YangRequestWorkBench) ydtWorkBench;
-        augGenMethodSet = ((YangRequestWorkBench) ydtWorkBench).getAugGenMethodSet();
-
-        for (YdtAppContext appContext = workBench.getAppRootNode().getFirstChild();
-             appContext != null; appContext = appContext.getNextSibling()) {
-            Object responseObject = processQueryOfApplication(appContext);
-            if (responseObject != null) {
-                responseObjects.add(responseObject);
-            }
-        }
-
-        YdtContext rootYdtContext = workBench.getRootNode();
-        YdtBuilder responseYdt = buildResponseYdt(responseObjects,
-                                                  rootYdtContext.getName(),
-                                                  rootYdtContext.getNamespace());
-
-        return new YangResponseWorkBench(responseYdt.getRootNode(),
-                                         EXECUTION_SUCCESS,
-                                         ydtWorkBench.getYmsOperationType());
-    }
-
-    /**
-     * Processes edit request of a NBI protocol.
-     *
-     * @param ydtWorkBench YANG request work bench
-     * @return YANG response data tree node context
-     * @throws YabException               violation in execution of YAB
-     * @throws CloneNotSupportedException clone is not supported
-     */
-    public YdtResponse processEdit(YdtBuilder ydtWorkBench)
-            throws CloneNotSupportedException, YabException {
-        YangRequestWorkBench workBench = (YangRequestWorkBench) ydtWorkBench;
-        augGenMethodSet = ((YangRequestWorkBench) ydtWorkBench).getAugGenMethodSet();
-        for (YdtAppContext appContext = workBench.getAppRootNode().getFirstChild();
-             appContext != null; appContext = appContext.getNextSibling()) {
-            processEditOfApplication(appContext);
-        }
-
-        /*
-         * Since for set operation return type is void, there will not be
-         * response ydt tree so returning null.
-         */
-        return new YangResponseWorkBench(null, EXECUTION_SUCCESS,
-                                         workBench.getYmsOperationType());
-    }
-
-    /**
-     * Processes operation request of a NBI protocol.
-     *
-     * @param ydtWorkBench YANG request work bench
-     * @return YANG response data tree node context
-     * @throws YabException violation in execution of YAB
-     */
-    public YdtResponse processOperation(YdtBuilder ydtWorkBench)
-            throws YabException {
-        YangRequestWorkBench workBench = (YangRequestWorkBench) ydtWorkBench;
-        YdtAppContext appContext = workBench.getAppRootNode().getFirstChild();
-        YdtContext ydtNode = appContext.getModuleContext();
-        while (ydtNode != null) {
-            YdtContext childYdtNode = ydtNode.getFirstChild();
-            YangSchemaNode yangNode = ((YdtNode) childYdtNode).getYangSchemaNode();
-            if (yangNode instanceof YangRpc) {
-                return processRpcOperationOfApplication(childYdtNode,
-                                                        appContext, yangNode,
-                                                        workBench);
-            }
-            ydtNode = ydtNode.getNextSibling();
-        }
-        return new YangResponseWorkBench(null, EXECUTION_SUCCESS,
-                                         ydtWorkBench.getYmsOperationType());
-    }
-
-    /**
-     * Processes rpc request of an application.
-     *
-     * @param appContext application context
-     * @return response object from application
-     */
-    private YdtResponse processRpcOperationOfApplication(YdtContext rpcYdt,
-                                                         YdtAppContext appContext,
-                                                         YangSchemaNode yangRpc,
-                                                         YangRequestWorkBench workBench)
-            throws YabException {
-        Object inputObject = null;
-        YdtContext inputYdtNode = getInputYdtNode(rpcYdt);
-        if (inputYdtNode != null) {
-            inputObject = getYangObject(inputYdtNode);
-        }
-
-        Object appObject = getApplicationObjectForRpc(appContext);
-
-        String methodName = yangRpc.getJavaClassNameOrBuiltInType();
-        Object outputObject = invokeRpcApplicationsMethod(appObject,
-                                                          inputObject,
-                                                          methodName);
-
-        String returnType = getReturnTypeOfRpcResponse(appObject,
-                                                       inputObject, yangRpc);
-
-        if (!returnType.equals(VOID)) {
-            YdtBuilder responseYdt = buildRpcResponseYdt(outputObject,
-                                                         workBench);
-            return new YangResponseWorkBench(responseYdt.getRootNode(),
-                                             EXECUTION_SUCCESS,
-                                             workBench.getYmsOperationType());
-        }
-
-        return new YangResponseWorkBench(null, EXECUTION_SUCCESS,
-                                         workBench.getYmsOperationType());
-    }
-
-    /**
-     * Processes query request of an application.
-     *
-     * @param appContext application context
-     * @return response object from application
-     */
-    private Object processQueryOfApplication(YdtAppContext appContext)
-            throws YabException {
-        YdtContext ydtNode = appContext.getModuleContext();
-
-        // Update application context tree if any node is augmented
-        YangNode yangNode = (YangNode) appContext.getYangSchemaNode();
-        if (yangNode.isDescendantNodeAugmented()) {
-            processAugmentForChildNode(appContext, yangNode);
-        }
-
-        String appName = getCapitalCase(((YdtNode) appContext.getModuleContext())
-                                                .getYangSchemaNode()
-                                                .getJavaClassNameOrBuiltInType());
-
-        // get YangObject of YdtContext from YOB
-        Object outputObject = getYangObject(ydtNode);
-
-        TraversalType curTraversal = ROOT;
-        do {
-            if (curTraversal != PARENT) {
-
-                // find application and get application's object using YSR
-                Object appManagerObject = getApplicationObject(appContext);
-
-                // find which method to invoke
-                String methodName = getApplicationMethodName(appContext,
-                                                             appName, GET);
-
-                String moduleName = appContext.getAppData()
-                        .getRootSchemaNode().getName();
-
-                // invoke application's getter method
-                outputObject = invokeApplicationsMethod(appManagerObject,
-                                                        outputObject,
-                                                        methodName, moduleName);
-            }
-
-            /*
-             * AppContext may contain other nodes if it is augmented, so
-             * traverse the appContext tree
-             */
-            if (curTraversal != PARENT && appContext.getFirstChild() != null) {
-                curTraversal = CHILD;
-                appContext = appContext.getFirstChild();
-            } else if (appContext.getNextSibling() != null) {
-                curTraversal = SIBLING;
-                appContext = appContext.getNextSibling();
-            } else {
-                curTraversal = PARENT;
-                if (appContext.getParent().getParent() != null) {
-                    appContext = appContext.getParent();
-                }
-            }
-            // no need to do any operation for logical root node
-        } while (appContext.getParent().getParent() != null);
-        return outputObject;
-    }
-
-    /**
-     * Processes edit request of an application.
-     *
-     * @param appContext application context
-     * @throws YabException               violation in execution of YAB
-     * @throws CloneNotSupportedException clone is not supported
-     */
-    private void processEditOfApplication(YdtAppContext appContext)
-            throws CloneNotSupportedException, YabException {
-
-        // process delete request if operation type is delete and both
-        if (appContext.getOperationType() != OTHER_EDIT) {
-            processDeleteRequestOfApplication(appContext);
-        }
-
-        // process edit request if operation type is other edit and both
-        if (appContext.getOperationType() != DELETE_ONLY) {
-            YdtContext ydtNode = appContext.getModuleContext();
-
-            String appName = getCapitalCase(((YdtNode) appContext.getModuleContext())
-                                                    .getYangSchemaNode()
-                                                    .getJavaClassNameOrBuiltInType());
-
-            // get YO from YOB
-            Object outputObject = getYangObject(ydtNode);
-
-            TraversalType curTraversal = ROOT;
-            do {
-                if (curTraversal != PARENT) {
-
-                    // find application and get application's object using YSR
-                    Object appManagerObject = getApplicationObject(appContext);
-
-                    // find which method to invoke
-                    String methodName = getApplicationMethodName(appContext,
-                                                                 appName, SET);
-
-                    String moduleName = appContext.getAppData()
-                            .getRootSchemaNode().getName();
-
-                    // invoke application's setter method
-                    invokeApplicationsMethod(appManagerObject, outputObject,
-                                             methodName, moduleName);
-                }
-
-                /*
-                 * AppContext may contain other nodes if it is augmented,
-                 * so traverse the appContext tree
-                 */
-                if (curTraversal != PARENT && appContext.getFirstChild() != null) {
-                    curTraversal = CHILD;
-                    appContext = appContext.getFirstChild();
-                } else if (appContext.getNextSibling() != null) {
-                    curTraversal = SIBLING;
-                    appContext = appContext.getNextSibling();
-                } else {
-                    curTraversal = PARENT;
-                    if (appContext.getParent().getParent() != null) {
-                        appContext = appContext.getParent();
-                    }
-                }
-                // no need to do any operation for logical root node
-            } while (appContext.getParent().getParent() != null);
-        }
-    }
-
-    /**
-     * Processes delete request of an application.
-     *
-     * @param appContext application context
-     * @throws YabException               violation in execution of YAB
-     * @throws CloneNotSupportedException clone is not supported
-     */
-    private void processDeleteRequestOfApplication(YdtAppContext appContext)
-            throws CloneNotSupportedException, YabException {
-        TraversalType curTraversal = ROOT;
-        List<YdtContext> deleteNodes = appContext.getDeleteNodes();
-
-        if (deleteNodes != null && !deleteNodes.isEmpty()) {
-
-            /*
-             * Split the current Ydt tree into two trees.
-             * Delete Tree with all nodes with delete operation and other
-             * tree with other edit operation
-             */
-            YdtContext deleteTree = buildDeleteTree(deleteNodes);
-
-            /*
-             * If any of nodes in ydt delete tree is augmented then add
-             * augmented nodes to current ydt tree
-             */
-            processAugmentedNodesForDelete(deleteTree.getFirstChild(), appContext);
-
-            Object inputObject = getYangObject(deleteTree.getFirstChild());
-
-            String appName = getCapitalCase(((YdtNode) appContext.getModuleContext())
-                                                    .getYangSchemaNode()
-                                                    .getJavaClassNameOrBuiltInType());
-
-            do {
-                if (curTraversal == ROOT || curTraversal == SIBLING) {
-                    while (appContext.getLastChild() != null) {
-                        appContext = appContext.getLastChild();
-                    }
-                }
-
-                // getAugmentApplication manager object
-                Object appManagerObject = getApplicationObject(appContext);
-
-                // find which method to invoke
-                String methodName = getApplicationMethodName(appContext,
-                                                             appName, SET);
-
-                String moduleName = appContext.getAppData().getRootSchemaNode()
-                        .getName();
-
-                // invoke application's setter method
-                invokeApplicationsMethod(appManagerObject, inputObject,
-                                         methodName, moduleName);
-
-                if (appContext.getPreviousSibling() != null) {
-                    curTraversal = SIBLING;
-                    appContext = appContext.getPreviousSibling();
-                } else if (appContext.getParent() != null) {
-                    curTraversal = PARENT;
-                    appContext = appContext.getParent();
-                }
-            } while (appContext.getParent() != null);
-        }
-    }
-
-    /**
-     * Traverses data model tree and if any node is augmented, then
-     * adds child to current application context.
-     *
-     * @param curAppContext current application context
-     * @param schemaNode    YANG data model node, either module or augment
-     */
-    protected void processAugmentForChildNode(YdtAppContext curAppContext,
-                                              YangNode schemaNode) {
-        YangNode yangNode = schemaNode.getChild();
-        if (yangNode == null) {
-            return;
-        }
-
-        TraversalType curTraversal = CHILD;
-        while (!yangNode.equals(schemaNode)) {
-            if (curTraversal != PARENT && yangNode instanceof YangAugmentableNode
-                    && !((YangAugmentableNode) yangNode).getAugmentedInfoList()
-                    .isEmpty()) {
-                updateAppTreeWithAugmentNodes(yangNode, curAppContext);
-            }
-
-            if (curTraversal != PARENT && yangNode.getChild() != null
-                    && yangNode.isDescendantNodeAugmented()) {
-                curTraversal = CHILD;
-                yangNode = yangNode.getChild();
-            } else if (yangNode.getNextSibling() != null) {
-                curTraversal = SIBLING;
-                yangNode = yangNode.getNextSibling();
-            } else {
-                curTraversal = PARENT;
-                yangNode = yangNode.getParent();
-            }
-        }
-    }
-
-    /**
-     * Traverses YDT delete tree and if any YDT node is augmented then
-     * updates the YDT delete tree with augment nodes.
-     *
-     * @param deleteTree YDT delete tree
-     * @param appContext application context
-     */
-    protected void processAugmentedNodesForDelete(YdtContext deleteTree,
-                                                  YdtAppContext appContext) {
-        TraversalType curTraversal = ROOT;
-        YdtContext ydtContext = deleteTree.getFirstChild();
-
-        if (ydtContext == null) {
-            /*
-             * Delete request is for module, so check all the nodes under
-             * module whether it is augmented.
-             */
-            YangNode yangNode = ((YangNode) ((YdtNode) deleteTree)
-                    .getYangSchemaNode());
-            if (yangNode.isDescendantNodeAugmented()) {
-                processAugmentForChildNode(appContext, yangNode);
-            }
-            return;
-        }
-
-        while (!ydtContext.equals(deleteTree)) {
-            if (curTraversal != PARENT && ((YdtNode) ydtContext)
-                    .getYdtContextOperationType() == DELETE) {
-                YangNode yangNode = ((YangNode) ((YdtNode) ydtContext)
-                        .getYangSchemaNode());
-                if (yangNode instanceof YangAugmentableNode) {
-                    updateAppTreeWithAugmentNodes(yangNode, appContext);
-                }
-                if (yangNode.isDescendantNodeAugmented()) {
-                    processAugmentForChildNode(appContext, yangNode);
-                }
-            }
-
-            if (curTraversal != PARENT && ydtContext.getFirstChild() != null) {
-                curTraversal = CHILD;
-                ydtContext = ydtContext.getFirstChild();
-            } else if (ydtContext.getNextSibling() != null) {
-                curTraversal = SIBLING;
-                ydtContext = ydtContext.getNextSibling();
-            } else {
-                curTraversal = PARENT;
-                ydtContext = ydtContext.getParent();
-            }
-        }
-    }
-
-    /**
-     * Returns response YANG data tree using YTB.
-     *
-     * @param responseObjects list of application's response objects
-     * @param name            application YANG name
-     * @param namespace       application YANG namespace
-     * @return response YANG data tree
-     */
-    private YdtBuilder buildResponseYdt(List<Object> responseObjects,
-                                        String name, String namespace) {
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        return treeBuilder.getYdtBuilderForYo(responseObjects,
-                                              name, namespace, null, schemaRegistry);
-    }
-
-    private YdtBuilder buildRpcResponseYdt(Object responseObject,
-                                           YangRequestWorkBench requestWorkBench) {
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        return treeBuilder.getYdtForRpcResponse(responseObject, requestWorkBench);
-    }
-
-    /**
-     * Builds delete tree for list of delete nodes.
-     *
-     * @param deleteNodes list of delete nodes
-     * @return deleteTree YANG data tree for delete operation
-     * @throws CloneNotSupportedException clone is not supported
-     */
-    protected YdtContext buildDeleteTree(List<YdtContext> deleteNodes) throws
-            CloneNotSupportedException {
-        Iterator<YdtContext> iterator = deleteNodes.iterator();
-        YdtContext deleteTree = null;
-        while (iterator.hasNext()) {
-            YdtContext deleteNode = iterator.next();
-            if (((YdtExtendedContext) deleteNode.getParent())
-                    .getYdtContextOperationType() != DELETE) {
-                cloneAncestorsOfDeleteNode(deleteNode);
-                deleteTree = unlinkDeleteNodeFromCurrentTree((YdtNode) deleteNode);
-            }
-        }
-
-        if (deleteTree != null) {
-            while (deleteTree.getParent() != null) {
-                deleteTree = deleteTree.getParent();
-            }
-        }
-        return deleteTree;
-    }
-
-    /**
-     * Clones ancestor nodes of delete node.
-     *
-     * @param deleteNode node to be deleted
-     * @throws CloneNotSupportedException clone not supported
-     */
-    private void cloneAncestorsOfDeleteNode(YdtContext deleteNode)
-            throws CloneNotSupportedException {
-        YdtNode clonedNode;
-        YdtNode previousNode = null;
-
-        // Clone the parents of delete node to form delete tree
-        YdtNode nodeToClone = (YdtNode) deleteNode.getParent();
-        while (nodeToClone != null) {
-            // If node is not cloned yet
-            if (nodeToClone.getClonedNode() == null) {
-                clonedNode = nodeToClone.clone();
-                unlinkCurrentYdtNode(clonedNode);
-                if (nodeToClone instanceof YdtMultiInstanceNode) {
-                    addKeyLeavesToClonedNode(nodeToClone, clonedNode);
-                }
-                nodeToClone.setClonedNode(clonedNode);
-            } else {
-                // already node is cloned
-                clonedNode = (YdtNode) nodeToClone.getClonedNode();
-            }
-
-            if (previousNode != null) {
-                /*
-                 * add previous cloned node as child of current cloned node
-                 * so that tree will be formed from delete node parent to
-                 * logical root node.
-                 */
-                clonedNode.addChild(previousNode, false);
-            }
-            previousNode = clonedNode;
-            nodeToClone = nodeToClone.getParent();
-        }
-    }
-
-    /**
-     * Unlinks delete node from current YANG data tree of application
-     * and links it to cloned delete tree.
-     *
-     * @param deleteNode node to be unlinked
-     * @return deleteNode delete node linked to cloned delete tree
-     */
-    private YdtNode unlinkDeleteNodeFromCurrentTree(YdtNode deleteNode) {
-        YdtNode parentClonedNode = (YdtNode) deleteNode.getParent().getClonedNode();
-        unlinkNodeFromParent(deleteNode);
-        unlinkNodeFromSibling(deleteNode);
-
-        /*
-         * Set all the pointers of node to null before adding as child
-         * to parent's cloned node.
-         */
-        deleteNode.setParent(null);
-        deleteNode.setPreviousSibling(null);
-        deleteNode.setNextSibling(null);
-
-        parentClonedNode.addChild(deleteNode, false);
-        return deleteNode;
-    }
-
-    /**
-     * Adds key leaf nodes to cloned YDT node from current Ydt node.
-     *
-     * @param curNode    current YDT node
-     * @param clonedNode cloned YDT node
-     */
-    private void addKeyLeavesToClonedNode(YdtNode curNode, YdtNode clonedNode)
-            throws CloneNotSupportedException {
-        YdtNode keyClonedLeaf;
-        List<YdtContext> keyList = ((YdtMultiInstanceNode) curNode)
-                .getKeyNodeList();
-        if (keyList != null && !keyList.isEmpty()) {
-            for (YdtContext keyLeaf : keyList) {
-                keyClonedLeaf = ((YdtNode) keyLeaf).clone();
-                unlinkCurrentYdtNode(keyClonedLeaf);
-                clonedNode.addChild(keyClonedLeaf, true);
-            }
-        }
-    }
-
-    /**
-     * Updates application context tree if any of the nodes in current
-     * application context tree is augmented.
-     *
-     * @param yangNode      YANG schema node which is augmented
-     * @param curAppContext current application context tree
-     */
-    private void updateAppTreeWithAugmentNodes(YangNode yangNode,
-                                               YdtAppContext curAppContext) {
-        YdtAppContext childAppContext;
-        for (YangAugment yangAugment : ((YangAugmentableNode) yangNode)
-                .getAugmentedInfoList()) {
-            Object appManagerObject = schemaRegistry
-                    .getRegisteredApplication(yangAugment.getParent());
-            if (appManagerObject != null
-                    && augGenMethodSet.add(yangAugment.getSetterMethodName())) {
-                childAppContext = addChildToYdtAppTree(curAppContext,
-                                                       yangAugment);
-                processAugmentForChildNode(childAppContext, yangAugment);
-            }
-        }
-    }
-
-    /**
-     * Adds child node to current application context tree.
-     *
-     * @param curAppContext current application context
-     * @param augment       augment data model node
-     * @return childAppContext child node added
-     */
-    private YdtAppContext addChildToYdtAppTree(YdtAppContext curAppContext,
-                                               YangNode augment) {
-        DefaultYdtAppContext childAppContext = getAppContext(true);
-        childAppContext.setParent(curAppContext);
-        childAppContext.setOperationType(curAppContext.getOperationType());
-        childAppContext.setAugmentingSchemaNode(augment);
-        curAppContext.addChild(childAppContext);
-        return childAppContext;
-    }
-
-    /**
-     * Unlinks the current node from its parent.
-     *
-     * @param deleteNode node which should be unlinked from YDT tree
-     */
-    private void unlinkNodeFromParent(YdtNode deleteNode) {
-        YdtNode parentNode = deleteNode.getParent();
-        if (parentNode.getFirstChild().equals(deleteNode)
-                && parentNode.getLastChild().equals(deleteNode)) {
-            parentNode.setChild(null);
-            parentNode.setLastChild(null);
-        } else if (parentNode.getFirstChild().equals(deleteNode)) {
-            parentNode.setChild(deleteNode.getNextSibling());
-        } else if (parentNode.getLastChild().equals(deleteNode)) {
-            parentNode.setLastChild(deleteNode.getPreviousSibling());
-        }
-    }
-
-    /**
-     * Unlinks the current node from its sibling.
-     *
-     * @param deleteNode node which should be unlinked from YDT tree
-     */
-    private void unlinkNodeFromSibling(YdtNode deleteNode) {
-        YdtNode previousSibling = deleteNode.getPreviousSibling();
-        YdtNode nextSibling = deleteNode.getNextSibling();
-        if (nextSibling != null && previousSibling != null) {
-            previousSibling.setNextSibling(nextSibling);
-            nextSibling.setPreviousSibling(previousSibling);
-        } else if (nextSibling != null) {
-            nextSibling.setPreviousSibling(null);
-        } else if (previousSibling != null) {
-            previousSibling.setNextSibling(null);
-        }
-    }
-
-    /**
-     * Unlinks current Ydt node from parent, sibling and child.
-     *
-     * @param ydtNode YANG data tree node
-     */
-    private void unlinkCurrentYdtNode(YdtNode ydtNode) {
-        ydtNode.setParent(null);
-        ydtNode.setNextSibling(null);
-        ydtNode.setPreviousSibling(null);
-        ydtNode.setChild(null);
-        ydtNode.setLastChild(null);
-    }
-
-    /**
-     * Returns YANG object for YDT node.
-     *
-     * @param ydtNode YANG data node
-     * @return YANG object for YDT node
-     */
-    private Object getYangObject(YdtContext ydtNode) {
-        checkNotNull(ydtNode);
-        DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
-        return yobBuilder.getYangObject((YdtExtendedContext) ydtNode,
-                                        schemaRegistry);
-    }
-
-    /**
-     * Returns application manager object for YDT node.
-     *
-     * @param appContext YDT application context
-     * @return application manager object
-     */
-    private Object getApplicationObjectForRpc(YdtAppContext appContext) {
-        checkNotNull(appContext);
-        while (appContext.getFirstChild() != null) {
-            appContext = appContext.getFirstChild();
-        }
-        return schemaRegistry.getRegisteredApplication(appContext.getAppData()
-                                                               .getRootSchemaNode());
-    }
-
-    /**
-     * Returns application manager object of application.
-     *
-     * @param appContext application context
-     * @return application manager object
-     */
-    private Object getApplicationObject(YdtAppContext appContext) {
-        return schemaRegistry.getRegisteredApplication(appContext.getAppData()
-                                                               .getRootSchemaNode());
-    }
-
-    /**
-     * Converts name to capital case.
-     *
-     * @param yangIdentifier identifier
-     * @return name to capital case
-     */
-    private String getCapitalCase(String yangIdentifier) {
-        return yangIdentifier.substring(0, 1).toUpperCase() +
-                yangIdentifier.substring(1);
-    }
-
-    /**
-     * Returns get/set method name for application's request.
-     *
-     * @param appContext application context
-     * @return get/set method name for application's query request
-     */
-    private String getApplicationMethodName(YdtAppContext appContext,
-                                            String appName,
-                                            String operation) {
-        if (appContext.getYangSchemaNode() instanceof YangModule) {
-            return operation + appName;
-        }
-
-        String augment = ((YangAugment) appContext
-                .getAugmentingSchemaNode()).getTargetNode().get(0)
-                .getResolvedNode().getJavaClassNameOrBuiltInType();
-        return new StringBuilder().append(operation).append(AUGMENTED)
-                .append(appName).append(getCapitalCase(augment)).toString();
-    }
-
-    /**
-     * Returns rpc's input schema node.
-     *
-     * @param rpcNode rpc schema node
-     * @return rpc's input YDT node
-     */
-    private YdtContext getInputYdtNode(YdtContext rpcNode) {
-        YdtContext inputNode = rpcNode.getFirstChild();
-        while (inputNode != null) {
-            YangSchemaNode yangInputNode = ((YdtNode) inputNode)
-                    .getYangSchemaNode();
-            if (yangInputNode instanceof YangInput) {
-                return inputNode;
-            }
-            inputNode = rpcNode.getNextSibling();
-        }
-        return null;
-    }
-
-    /**
-     * Invokes application method for RPC request.
-     *
-     * @param appManagerObject application manager object
-     * @param inputObject      input parameter object of method
-     * @param methodName       method name which should be invoked
-     * @return response object from application
-     * @throws YabException violation in execution of YAB
-     */
-    private Object invokeApplicationsMethod(Object appManagerObject,
-                                            Object inputObject,
-                                            String methodName, String appName)
-            throws YabException {
-        checkNotNull(appManagerObject);
-        Class<?> appClass = appManagerObject.getClass();
-        try {
-            Method methodObject = appClass.getDeclaredMethod(methodName,
-                                                             inputObject.getClass());
-            if (methodObject != null) {
-                return methodObject.invoke(appManagerObject, inputObject);
-            }
-            throw new YabException("No such method in application");
-        } catch (IllegalAccessException | NoSuchMethodException e) {
-            throw new YabException(e);
-        } catch (InvocationTargetException e) {
-            throw new YabException("Invocation exception in service " + appName,
-                                   e.getCause());
-        }
-    }
-
-    /**
-     * Invokes application method for RPC request.
-     *
-     * @param appObject   application manager object
-     * @param inputObject input parameter object of method
-     * @param yangNode    method name which should be invoked
-     * @return response object from application
-     * @throws YabException violation in execution of YAB
-     */
-    private String getReturnTypeOfRpcResponse(Object appObject,
-                                              Object inputObject, YangSchemaNode
-                                                      yangNode) throws YabException {
-        Method methodObject = null;
-        try {
-            if (inputObject == null) {
-                methodObject = appObject.getClass()
-                        .getDeclaredMethod(yangNode.getJavaClassNameOrBuiltInType(),
-                                           null);
-            } else {
-                methodObject = appObject.getClass()
-                        .getDeclaredMethod(yangNode.getJavaClassNameOrBuiltInType(),
-                                           inputObject.getClass().getInterfaces());
-            }
-            if (methodObject != null) {
-                return methodObject.getReturnType().getSimpleName();
-            }
-            throw new YabException("No such method in application");
-        } catch (NoSuchMethodException e) {
-            throw new YabException(e);
-        }
-    }
-
-    /**
-     * Invokes application method for RPC request.
-     *
-     * @param appManagerObject application manager object
-     * @param inputParamObject input parameter object of method
-     * @param methodName       method name which should be invoked
-     * @return response object from application
-     * @throws YabException violation in execution of YAB
-     */
-    private Object invokeRpcApplicationsMethod(Object appManagerObject,
-                                               Object inputParamObject,
-                                               String methodName) throws YabException {
-        checkNotNull(appManagerObject);
-        Class<?> appClass = appManagerObject.getClass();
-        try {
-            Method methodObject;
-            if (inputParamObject == null) {
-                methodObject = appClass.getDeclaredMethod(methodName, null);
-                if (methodObject != null) {
-                    return methodObject.invoke(appManagerObject);
-                }
-            } else {
-                methodObject = appClass.getDeclaredMethod(methodName,
-                                                          inputParamObject
-                                                                  .getClass()
-                                                                  .getInterfaces());
-                if (methodObject != null) {
-                    return methodObject.invoke(appManagerObject, inputParamObject);
-                }
-            }
-            throw new YabException("No such method in application");
-        } catch (IllegalAccessException | NoSuchMethodException |
-                InvocationTargetException e) {
-            throw new YabException(e);
-        }
-    }
-
-    /**
-     * Sets the augment setter method name.
-     *
-     * @param augGenMethodSet augment setter method name
-     */
-    public void setAugGenMethodSet(Set<String> augGenMethodSet) {
-        this.augGenMethodSet = augGenMethodSet;
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/exceptions/YabException.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/exceptions/YabException.java
deleted file mode 100644
index 9057843..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/exceptions/YabException.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yab.exceptions;
-
-/**
- * Represents base class for exceptions in YDT operations.
- */
-public class YabException extends RuntimeException {
-
-    private static final long serialVersionUID = 20160211L;
-
-    /**
-     * Creates a new YDT exception.
-     */
-    public YabException() {
-    }
-
-    /**
-     * Creates a new YDT exception with given message.
-     *
-     * @param message the detail of exception in string
-     */
-    public YabException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new YDT exception from given message and cause.
-     *
-     * @param message the detail of exception in string
-     * @param cause   underlying cause of the error
-     */
-    public YabException(final String message, final Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Creates a new YDT exception from cause.
-     *
-     * @param cause underlying cause of the error
-     */
-    public YabException(final Throwable cause) {
-        super(cause);
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/exceptions/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/exceptions/package-info.java
deleted file mode 100644
index 5dcc22d..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/exceptions/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * YANG application broker exception.
- */
-package org.onosproject.yms.app.yab.exceptions;
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/package-info.java
deleted file mode 100644
index c73f4ad..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides interfaces to YANG request broker. YRB is responsible for
- * interaction with applications in YANG modeled objects.
- */
-package org.onosproject.yms.app.yab;
\ No newline at end of file
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/DefaultYangCodecHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/DefaultYangCodecHandler.java
deleted file mode 100644
index b2f197c..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/DefaultYangCodecHandler.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych;
-
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yangutils.datamodel.YangSchemaNodeContextInfo;
-import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier;
-import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
-import org.onosproject.yms.app.ych.defaultcodecs.YangCodecRegistry;
-import org.onosproject.yms.app.ydt.YdtExtendedBuilder;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.yob.DefaultYobBuilder;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.onosproject.yms.app.ytb.DefaultYangTreeBuilder;
-import org.onosproject.yms.app.ytb.YtbException;
-import org.onosproject.yms.ych.YangCodecHandler;
-import org.onosproject.yms.ych.YangCompositeEncoding;
-import org.onosproject.yms.ych.YangDataTreeCodec;
-import org.onosproject.yms.ych.YangProtocolEncodingFormat;
-import org.onosproject.yms.ydt.YdtBuilder;
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ydt.YmsOperationType;
-import org.onosproject.yms.ysr.YangModuleLibrary;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static org.onosproject.yms.app.yob.YobUtils.createAndSetInEventInstance;
-import static org.onosproject.yms.app.yob.YobUtils.createAndSetInEventSubjectInstance;
-
-/**
- * Represents implementation of YANG SBI broker interfaces.
- * YCH acts as a broker between YMS and driver/provider.
- */
-public class DefaultYangCodecHandler implements YangCodecHandler {
-
-    private static final String E_MODULE_LIST = "The input module or " +
-            "sub-module object list cannot be null.";
-    private static final String E_DATA_TREE_CODEC = "data tree codec handler" +
-            " is null.";
-    private static final String E_DATA_MODEL_CHILD = "Unable to find the " +
-            "child node";
-    private static final String E_NOTIFICATION_NODE = "Notification node " +
-            "should be the first child of module in YDT";
-
-    /**
-     * Schema registry for driver.
-     */
-    private final YangSchemaRegistry schemaRegistry;
-    private YangModuleLibrary library;
-
-    /**
-     * Default codecs.
-     */
-    private final Map<YangProtocolEncodingFormat, YangDataTreeCodec>
-            defaultCodecs = new HashMap<>();
-
-    /**
-     * Override codec handler.
-     */
-    private final Map<YangProtocolEncodingFormat, YangDataTreeCodec>
-            overrideCodecs = new HashMap<>();
-
-    /**
-     * Creates a new YANG codec handler.
-     *
-     * @param registry YANG schema registry
-     */
-    public DefaultYangCodecHandler(YangSchemaRegistry registry) {
-        schemaRegistry = registry;
-
-        // update the default codecs from codec registry
-        Map<YangProtocolEncodingFormat, YangDataTreeCodec> recvCodec =
-                YangCodecRegistry.getDefaultCodecs();
-        if (!recvCodec.isEmpty()) {
-            for (Map.Entry<YangProtocolEncodingFormat, YangDataTreeCodec>
-                    codecEntry : recvCodec.entrySet()) {
-                defaultCodecs.put(codecEntry.getKey(), codecEntry.getValue());
-            }
-        }
-    }
-
-    private YangDataTreeCodec getAppropriateCodec(
-            YangProtocolEncodingFormat dataFormat) {
-        YangDataTreeCodec codec = defaultCodecs.get(dataFormat);
-
-        int size = overrideCodecs.size();
-        // Check over ridden codec handler is exist or not.
-        if (size != 0) {
-            YangDataTreeCodec overrideCodec = overrideCodecs.get(dataFormat);
-            if (overrideCodec != null) {
-                codec = overrideCodec;
-            }
-        }
-        return codec;
-    }
-
-    @Override
-    public void addDeviceSchema(Class<?> yangModule) {
-        schemaRegistry.registerApplication(null, yangModule);
-        schemaRegistry.processModuleLibrary(yangModule.getName(), library);
-    }
-
-    @Override
-    public String encodeOperation(String rootName,
-                                  String rootNamespace,
-                                  Map<String, String> tagAttrMap,
-                                  List<Object> moduleList,
-                                  YangProtocolEncodingFormat dataFormat,
-                                  YmsOperationType opType) {
-
-        if (moduleList == null || moduleList.isEmpty()) {
-            throw new YchException(E_MODULE_LIST);
-        }
-
-        // Get the default codec handler.
-        YangDataTreeCodec codec = getAppropriateCodec(dataFormat);
-        if (codec == null) {
-            throw new YchException(E_DATA_TREE_CODEC);
-        }
-
-        // Get yang data tree from YTB for the received objects.
-        DefaultYangTreeBuilder builder = new DefaultYangTreeBuilder();
-        YdtExtendedBuilder encodedYdt =
-                builder.getYdtBuilderForYo(moduleList, rootName,
-                                           rootNamespace, opType,
-                                           schemaRegistry);
-
-        encodedYdt.setRootTagAttributeMap(tagAttrMap);
-
-        // Get the xml string form codec handler.
-        return codec.encodeYdtToProtocolFormat(encodedYdt);
-    }
-
-    @Override
-    public YangCompositeEncoding encodeCompositeOperation(
-            String rootName,
-            String rootNamespace,
-            Object moduleObject,
-            YangProtocolEncodingFormat dataFormat,
-            YmsOperationType opType) {
-
-        if (moduleObject == null) {
-            throw new YtbException(E_MODULE_LIST);
-        }
-
-        // Get the default codec handler.
-        YangDataTreeCodec codec = getAppropriateCodec(dataFormat);
-        if (codec == null) {
-            throw new YchException(E_DATA_TREE_CODEC);
-        }
-
-        List<Object> yangModuleList = new ArrayList<>();
-        yangModuleList.add(moduleObject);
-
-        // Get yang data tree from YTB for the received objects.
-        DefaultYangTreeBuilder builder = new DefaultYangTreeBuilder();
-        YdtExtendedBuilder extBuilder =
-                builder.getYdtBuilderForYo(yangModuleList,
-                                           rootName,
-                                           rootNamespace,
-                                           opType,
-                                           schemaRegistry);
-
-        // Get the composite response from codec handler.
-        return codec.encodeYdtToCompositeProtocolFormat(extBuilder);
-    }
-
-    @Override
-    public List<Object> decode(String inputString,
-                               YangProtocolEncodingFormat dataFormat,
-                               YmsOperationType opType) {
-
-        YdtBuilder ydtBuilder;
-        YangDataTreeCodec codec = getAppropriateCodec(dataFormat);
-        if (codec == null) {
-            throw new YchException(E_DATA_TREE_CODEC);
-        }
-
-        try {
-            // Get the YANG data tree
-            ydtBuilder = codec.decodeProtocolDataToYdt(inputString,
-                                                       schemaRegistry,
-                                                       opType);
-        } catch (Exception e) {
-            throw new YchException(e.getLocalizedMessage());
-        }
-
-        if (ydtBuilder != null) {
-            return getObjectList(ydtBuilder.getRootNode());
-        }
-        return null;
-    }
-
-    @Override
-    public Object decode(YangCompositeEncoding protoData,
-                         YangProtocolEncodingFormat dataFormat,
-                         YmsOperationType opType) {
-
-        YangDataTreeCodec codec = getAppropriateCodec(dataFormat);
-        if (codec == null) {
-            throw new YchException(E_DATA_TREE_CODEC);
-        }
-
-        YdtBuilder ydtBuilder =
-                codec.decodeCompositeProtocolDataToYdt(protoData,
-                                                       schemaRegistry,
-                                                       opType);
-
-        if (ydtBuilder == null) {
-                return null;
-        }
-
-        YdtExtendedContext rootNode = ((YdtExtendedContext) ydtBuilder
-                .getRootNode());
-
-        if (opType == YmsOperationType.NOTIFICATION) {
-            return getNotificationObject(((YdtExtendedContext) rootNode
-                    .getFirstChild()));
-        }
-
-        // Return the module object by using YANG data tree
-        return getObjectList(rootNode);
-    }
-
-    //returns notification event object
-    private Object getNotificationObject(YdtExtendedContext rootNode) {
-        YangSchemaNode module = rootNode.getYangSchemaNode();
-        YangSchemaNode childSchema = ((YdtExtendedContext) rootNode
-                .getFirstChild()).getYangSchemaNode();
-
-        YangSchemaNodeIdentifier id = new YangSchemaNodeIdentifier();
-        id.setNameSpace(childSchema.getNameSpace());
-        id.setName(childSchema.getName());
-
-        YangSchemaNodeContextInfo contextInfo;
-        try {
-            contextInfo = module.getChildSchema(id);
-        } catch (DataModelException e) {
-            throw new YchException(E_DATA_MODEL_CHILD);
-        }
-
-        if (contextInfo == null) {
-            throw new YchException(E_NOTIFICATION_NODE);
-        }
-
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object object = builder.getYangObject(((YdtExtendedContext) rootNode
-                                                      .getFirstChild()),
-                                              schemaRegistry);
-
-        Object eventSubObj = createAndSetInEventSubjectInstance(object,
-                                                                rootNode,
-                                                                schemaRegistry);
-        return createAndSetInEventInstance(eventSubObj, rootNode,
-                                           schemaRegistry);
-    }
-
-    @Override
-    public void registerOverriddenCodec(YangDataTreeCodec overrideCodec,
-                                        YangProtocolEncodingFormat dataFormat) {
-        overrideCodecs.put(dataFormat, overrideCodec);
-    }
-
-    /**
-     * Returns the list of objects from YDT data tree.
-     *
-     * @param rootNode YDT root node
-     * @return returns list of objects
-     */
-    private List<Object> getObjectList(YdtContext rootNode) {
-
-        if (rootNode == null) {
-            // TODO
-            return null;
-        }
-
-        if (rootNode.getFirstChild() == null) {
-            // TODO
-            return null;
-        }
-
-        YdtContext curNode = rootNode.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object object = builder.getYangObject((YdtExtendedContext) curNode,
-                                              schemaRegistry);
-        List<Object> objectList = new ArrayList<>();
-        objectList.add(object);
-
-        // Check next module is exit or not. If exist get the object for that.
-        while (curNode.getNextSibling() != null) {
-            curNode = curNode.getNextSibling();
-            object = builder.getYangObject((YdtExtendedContext) curNode,
-                                           schemaRegistry);
-            objectList.add(object);
-        }
-
-        return objectList;
-    }
-
-    /**
-     * Returns module library for YSR.
-     *
-     * @return module library for YSR
-     */
-    public YangModuleLibrary getLibrary() {
-        return library;
-    }
-
-    /**
-     * Sets module library for YSR.
-     *
-     * @param library module library for YSR
-     */
-    public void setLibrary(YangModuleLibrary library) {
-        this.library = library;
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/YchException.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/YchException.java
deleted file mode 100644
index fbc51e4..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/YchException.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych;
-
-/**
- * Represents base class for exceptions in YCH operations.
- */
-public class YchException extends RuntimeException {
-    private static final long serialVersionUID = 20160211L;
-
-    /**
-     * Creates a new YCH exception.
-     */
-    public YchException() {
-    }
-
-    /**
-     * Creates a new YCH exception with given message.
-     *
-     * @param message the detail of exception in string
-     */
-    public YchException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new YCH exception from given message and cause.
-     *
-     * @param message the detail of exception in string
-     * @param cause   underlying cause of the error
-     */
-    public YchException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Creates a new YCH exception from cause.
-     *
-     * @param cause underlying cause of the error
-     */
-    public YchException(Throwable cause) {
-        super(cause);
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/CodecHandlerFactory.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/CodecHandlerFactory.java
deleted file mode 100644
index c17d3fa..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/CodecHandlerFactory.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs;
-
-
-import org.onosproject.yms.app.ych.YchException;
-import org.onosproject.yms.app.ych.defaultcodecs.xml.XmlCodecHandler;
-import org.onosproject.yms.app.ych.defaultcodecs.xml.XmlCodecMultiInstanceHandler;
-import org.onosproject.yms.app.ych.defaultcodecs.xml.XmlCodecMultiInstanceLeafHandler;
-import org.onosproject.yms.app.ych.defaultcodecs.xml.XmlCodecSingleInstanceHandler;
-import org.onosproject.yms.app.ych.defaultcodecs.xml.XmlCodecSingleInstanceLeafHandler;
-import org.onosproject.yms.ych.YangProtocolEncodingFormat;
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ydt.YdtType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.onosproject.yms.ych.YangProtocolEncodingFormat.XML;
-import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_LEAF_VALUE_NODE;
-import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_NODE;
-import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_LEAF_VALUE_NODE;
-import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_NODE;
-
-/**
- * Represents an YCH handle factory to create different types of YANG data tree
- * node.
- */
-public final class CodecHandlerFactory {
-
-    private static final Logger log =
-            LoggerFactory.getLogger(CodecHandlerFactory.class);
-    private static final String YDT_TYPE_ERROR = "YDT type is not supported.";
-
-    /**
-     * Map of xml codec handler.
-     */
-    private final Map<YdtType, XmlCodecHandler> handlerMap;
-
-    /**
-     * Creates a new codec handler factory.
-     */
-    private CodecHandlerFactory() {
-        handlerMap = new HashMap<>();
-        handlerMap.put(SINGLE_INSTANCE_NODE,
-                       new XmlCodecSingleInstanceHandler());
-        handlerMap.put(MULTI_INSTANCE_NODE,
-                       new XmlCodecMultiInstanceHandler());
-        handlerMap.put(SINGLE_INSTANCE_LEAF_VALUE_NODE,
-                       new XmlCodecSingleInstanceLeafHandler());
-        handlerMap.put(MULTI_INSTANCE_LEAF_VALUE_NODE,
-                       new XmlCodecMultiInstanceLeafHandler());
-    }
-
-    /**
-     * Returns YCH instance handler node instance.
-     *
-     * @param node   YDT context node
-     * @param format data format type expected from driver
-     * @return returns YCH handler node instance
-     */
-    public XmlCodecHandler getCodecHandlerForContext(
-            YdtContext node,
-            YangProtocolEncodingFormat format) {
-        if (format == XML) {
-            XmlCodecHandler handler = handlerMap.get(node.getYdtType());
-            if (handler == null) {
-                throw new YchException(YDT_TYPE_ERROR + node.getYdtType());
-            }
-            return handler;
-        }
-        log.error("{} data format is not supported.", format);
-        return null;
-    }
-
-    /*
-     * Bill Pugh Singleton pattern. INSTANCE won't be instantiated until the
-     * LazyHolder class is loaded via a call to the instance() method below.
-     */
-    private static class LazyHolder {
-        private static final CodecHandlerFactory INSTANCE =
-                new CodecHandlerFactory();
-    }
-
-    /**
-     * Returns a reference to the Singleton Codec Handler factory.
-     *
-     * @return the singleton codec handler factory
-     */
-    public static CodecHandlerFactory instance() {
-        return LazyHolder.INSTANCE;
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/YangCodecRegistry.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/YangCodecRegistry.java
deleted file mode 100644
index 8b7badd..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/YangCodecRegistry.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs;
-
-import org.onosproject.yms.app.ych.defaultcodecs.xml.DefaultXmlCodec;
-import org.onosproject.yms.ych.YangDataTreeCodec;
-import org.onosproject.yms.ych.YangProtocolEncodingFormat;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.onosproject.yms.ych.YangProtocolEncodingFormat.XML;
-
-/**
- * Default implementation of YANG codec registry.
- */
-public final class YangCodecRegistry {
-
-    // no instantiation
-    private YangCodecRegistry() {
-    }
-
-    /**
-     * Default codec map.
-     */
-    private static final Map<YangProtocolEncodingFormat, YangDataTreeCodec>
-            DEFAULT_CODECS = new HashMap<>();
-
-    /**
-     * Initialise the default codec map.
-     */
-    public static void initializeDefaultCodec() {
-        DEFAULT_CODECS.put(XML, new DefaultXmlCodec());
-    }
-
-    /**
-     * Returns the default codec map.
-     *
-     * @return the default codec map
-     */
-    public static Map<YangProtocolEncodingFormat, YangDataTreeCodec> getDefaultCodecs() {
-        return Collections.unmodifiableMap(DEFAULT_CODECS);
-    }
-
-    /**
-     * Registers a default codec for the specified data format.
-     *
-     * @param defaultCodec registered data tree codec
-     * @param dataFormat   protocol encoding data format
-     */
-    public static void registerDefaultCodec(
-            YangDataTreeCodec defaultCodec,
-            YangProtocolEncodingFormat dataFormat) {
-        DEFAULT_CODECS.put(dataFormat, defaultCodec);
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/NetconfCodec.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/NetconfCodec.java
deleted file mode 100644
index a1138ce..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/NetconfCodec.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs.netconf;
-
-import com.google.common.collect.ImmutableSet;
-import org.dom4j.Element;
-import org.onosproject.yms.app.ych.YchException;
-import org.onosproject.yms.ydt.YmsOperationType;
-
-import java.util.Iterator;
-import java.util.Set;
-
-import static org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodecConstants.CONFIG;
-import static org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodecConstants.DATA;
-import static org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodecConstants.EDIT_CONFIG;
-import static org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodecConstants.FILTER;
-import static org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodecConstants.GET;
-import static org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodecConstants.GET_CONFIG;
-import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REQUEST;
-import static org.onosproject.yms.ydt.YmsOperationType.QUERY_CONFIG_REQUEST;
-import static org.onosproject.yms.ydt.YmsOperationType.QUERY_REQUEST;
-
-/**
- * Represents an YCH netconf codec to find the root element in the xml string.
- */
-public class NetconfCodec {
-
-    private static final String PROTO_OPER_ERROR = "Received protocol " +
-            "operation is not same as in the XML string: ";
-    private static final Set<String> ALLOWABLE_NAMES =
-            ImmutableSet.of(CONFIG, DATA, FILTER);
-
-    /**
-     * Validate the operation type.
-     *
-     * @param elementName tag name in the xml string
-     * @param opType      operation type
-     */
-    private void validateOpType(String elementName, YmsOperationType opType) {
-        switch (elementName) {
-            // edit-config tag name is found in xml then check the
-            // interaction type.
-            case EDIT_CONFIG: {
-                if (opType != EDIT_CONFIG_REQUEST) {
-                    throw new YchException(PROTO_OPER_ERROR + opType);
-                }
-                break;
-            }
-
-            // get-config tag name is found in xml then check the
-            // interaction type.
-            case GET_CONFIG: {
-                if (opType != QUERY_CONFIG_REQUEST) {
-                    throw new YchException(PROTO_OPER_ERROR + opType);
-                }
-                break;
-            }
-
-            // get tag name is found in xml then check the interaction type.
-            case GET: {
-                if (opType != QUERY_REQUEST) {
-                    throw new YchException(PROTO_OPER_ERROR + opType);
-                }
-                break;
-            }
-
-            default: {
-                //TODO
-            }
-        }
-    }
-
-    /**
-     * Returns the data root element based on the NETCONF operation parameter.
-     *
-     * @param rootElement root element of document tree to find the root node
-     * @param opType      protocol operation being performed
-     * @return the data root node element
-     */
-    public Element getDataRootElement(Element rootElement,
-                                      YmsOperationType opType) {
-
-        Element retElement = null;
-        String elementName = rootElement.getName();
-        try {
-            validateOpType(elementName, opType);
-            // If config tag name is found then set the root element node.
-            if (DATA.equals(elementName)
-                    || CONFIG.equals(elementName)
-                    || FILTER.equals(elementName)) {
-                return rootElement;
-            }
-
-            // If element has child node then traverse through the child node
-            // by recursively calling getDataRootElement method.
-            if (rootElement.hasContent() && !rootElement.isTextOnly()) {
-                for (Iterator i = rootElement.elementIterator();
-                     i.hasNext();) {
-                    Element childElement = (Element) i.next();
-                    retElement = getDataRootElement(childElement, opType);
-                }
-            }
-        } catch (Exception e) {
-            // TODO
-        }
-
-        return retElement;
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/NetconfCodecConstants.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/NetconfCodecConstants.java
deleted file mode 100644
index 2d0705b..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/NetconfCodecConstants.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs.netconf;
-
-/**
- * Represents utilities constants which are used while codec encoding
- * and decoding.
- */
-public final class NetconfCodecConstants {
-
-    // no instantiation
-    private NetconfCodecConstants() {
-    }
-
-    /**
-     * Static attribute for edit config string.
-     */
-    static final String EDIT_CONFIG = "edit-config";
-
-    /**
-     * Static attribute for edit config string.
-     */
-    static final String GET_CONFIG = "get-config";
-
-    /**
-     * Static attribute for edit config string.
-     */
-    static final String GET = "get";
-
-    /**
-     * Static attribute for edit config string.
-     */
-    static final String CONFIG = "config";
-
-    /**
-     * Static attribute for edit config string.
-     */
-    static final String DATA = "data";
-
-    /**
-     * Static attribute for edit config string.
-     */
-    static final String FILTER = "filter";
-
-    /**
-     * Static attribute for edit config string.
-     */
-    public static final String OPERATION = "operation";
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/package-info.java
deleted file mode 100644
index ca782ae..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of default codec handler for netconf related
- * operation.
- */
-package org.onosproject.yms.app.ych.defaultcodecs.netconf;
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/package-info.java
deleted file mode 100644
index e344394..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Default codec to support protocol data format encoding and decoding of the YANG objects.
- */
-package org.onosproject.yms.app.ych.defaultcodecs;
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/utils/DefaultCodecUtils.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/utils/DefaultCodecUtils.java
deleted file mode 100644
index c027dd1..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/utils/DefaultCodecUtils.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs.utils;
-
-import com.google.common.base.Splitter;
-import com.google.common.collect.Lists;
-import org.onosproject.yms.app.ych.YchException;
-import org.onosproject.yms.ydt.YdtBuilder;
-import org.onosproject.yms.ydt.YdtContextOperationType;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.ArrayList;
-import java.util.List;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.yms.ydt.YdtContextOperationType.NONE;
-import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_NODE;
-
-/**
- * Utils to complete the conversion between JSON and YDT(YANG DATA MODEL).
- */
-public final class DefaultCodecUtils {
-
-    private static final Splitter SLASH_SPLITTER = Splitter.on('/');
-    private static final Splitter COMMA_SPLITTER = Splitter.on(',');
-    private static final String EQUAL = "=";
-    private static final String COMMA = ",";
-    private static final String COLON = ":";
-    private static final String URI_ENCODING_CHAR_SET = "ISO-8859-1";
-    private static final String URI_NULL_CHECK_ERROR = "uri identifier " +
-            "should not be null";
-    private static final String URI_MODULE_FORMAT = "Illegal URI, First " +
-            "node should be in format \"moduleName:nodeName\"";
-
-    private static final String URI_LEAF_FORMAT = "Illegal URI, List or " +
-            "Leaf-list node should be in format \"nodeName=key\"or " +
-            "\"nodeName=instance-value\"";
-
-    // no instantiation
-    private DefaultCodecUtils() {
-    }
-
-    /**
-     * Converts  URI identifier to YDT builder.
-     *
-     * @param identifier the uri identifier from web request
-     * @param builder    the base YDT builder
-     * @param ydtOpType  the YDT context operation type
-     * @return the YDT builder with the tree info of identifier
-     */
-    public static YdtBuilder convertUriToYdt(
-            String identifier,
-            YdtBuilder builder,
-            YdtContextOperationType ydtOpType) {
-        checkNotNull(identifier, URI_NULL_CHECK_ERROR);
-        List<String> segmentPaths =
-                urlPathArgsDecode(SLASH_SPLITTER.split(identifier));
-        if (segmentPaths.isEmpty()) {
-            return null;
-        }
-        processPathSegments(segmentPaths, builder, ydtOpType);
-        return builder;
-    }
-
-    /**
-     * Converts a list of path segments to a YDT builder tree.
-     *
-     * @param paths     the list of path segments split from URI
-     * @param builder   the base YDT builder
-     * @param ydtOpType the YDT context operation type
-     * @return the YDT builder with the tree info of paths
-     */
-    private static YdtBuilder processPathSegments(
-            List<String> paths,
-            YdtBuilder builder,
-            YdtContextOperationType ydtOpType) {
-        if (paths.isEmpty()) {
-            return builder;
-        }
-        boolean isLastNode = paths.size() == 1;
-        YdtContextOperationType thisOpType = isLastNode ? ydtOpType : NONE;
-
-        final String path = paths.iterator().next();
-        if (path.contains(COLON)) {
-            addModule(builder, path);
-            addNode(path, builder, thisOpType);
-        } else if (path.contains(EQUAL)) {
-            addListOrLeafList(path, builder, thisOpType);
-        } else {
-            addLeaf(path, builder, thisOpType);
-        }
-
-        if (isLastNode) {
-            return builder;
-        }
-        List<String> remainPaths = paths.subList(1, paths.size());
-        processPathSegments(remainPaths, builder, ydtOpType);
-
-        return builder;
-    }
-
-    /**
-     * Returns YDT builder after adding module node.
-     *
-     * @param builder YDT builder
-     * @param path    path segment
-     * @return the YDT builder
-     */
-    private static YdtBuilder addModule(YdtBuilder builder, String path) {
-        String moduleName = getPreSegment(path, COLON);
-        if (moduleName == null) {
-            throw new YchException(URI_MODULE_FORMAT);
-        }
-        builder.addChild(moduleName, null, SINGLE_INSTANCE_NODE);
-        return builder;
-    }
-
-    /**
-     * Returns YDT builder after adding single instance node.
-     *
-     * @param path      path segments
-     * @param builder   YDT builder
-     * @param ydtOpType YDT context operation type
-     * @return the YDT builder
-     */
-    private static YdtBuilder addNode(String path, YdtBuilder builder,
-                                      YdtContextOperationType ydtOpType) {
-        String nodeName = getPostSegment(path, COLON);
-        builder.addChild(nodeName, null, SINGLE_INSTANCE_NODE, ydtOpType);
-        return builder;
-    }
-
-    /**
-     * Returns YDT builder after adding multi instance node.
-     *
-     * @param path    path segments
-     * @param builder YDT builder
-     * @param opType  the YDT context operation type
-     * @return the YDT builder
-     */
-    private static YdtBuilder addListOrLeafList(
-            String path,
-            YdtBuilder builder,
-            YdtContextOperationType opType) {
-        String nodeName = getPreSegment(path, EQUAL);
-        String keyStr = getPostSegment(path, EQUAL);
-        if (keyStr == null) {
-            throw new YchException(URI_LEAF_FORMAT);
-        }
-        builder.setDefaultEditOperationType(opType);
-        if (keyStr.contains(COMMA)) {
-            List<String> keys = Lists.newArrayList(
-                    COMMA_SPLITTER.split(keyStr));
-            builder.addMultiInstanceChild(nodeName, null, keys, null);
-        } else {
-            builder.addMultiInstanceChild(nodeName, null,
-                                          Lists.newArrayList(keyStr), null);
-        }
-        return builder;
-    }
-
-    /**
-     * Returns YDT builder after adding leaf.
-     *
-     * @param path      path segments
-     * @param builder   YDT builder
-     * @param ydtOpType YDT context operation type
-     * @return the YDT builder
-     */
-    private static YdtBuilder addLeaf(String path, YdtBuilder builder,
-                                      YdtContextOperationType ydtOpType) {
-        checkNotNull(path);
-        builder.addChild(path, null, ydtOpType);
-        return builder;
-    }
-
-    /**
-     * Returns the node name before the specified character in the string.
-     *
-     * @param path      path segment
-     * @param splitChar character in the string
-     * @return the node name string
-     */
-    private static String getPreSegment(String path, String splitChar) {
-        int idx = path.indexOf(splitChar);
-        if (idx == -1) {
-            return null;
-        }
-
-        if (path.indexOf(':', idx + 1) != -1) {
-            return null;
-        }
-
-        return path.substring(0, idx);
-    }
-
-    /**
-     * Returns the string after the specified character in the string.
-     *
-     * @param path      path segment
-     * @param splitChar character in the string
-     * @return the substring after specified character
-     */
-    private static String getPostSegment(String path, String splitChar) {
-        int idx = path.indexOf(splitChar);
-        if (idx == -1) {
-            return path;
-        }
-
-        if (path.indexOf(splitChar, idx + 1) != -1) {
-            return null;
-        }
-
-        return path.substring(idx + 1);
-    }
-
-    /**
-     * Converts a list of path from the original format to ISO-8859-1 code.
-     *
-     * @param paths the original paths
-     * @return list of decoded paths
-     */
-    private static List<String> urlPathArgsDecode(Iterable<String> paths) {
-        try {
-            List<String> decodedPathArgs = new ArrayList<>();
-            for (String pathArg : paths) {
-                String decode = URLDecoder.decode(pathArg,
-                                                  URI_ENCODING_CHAR_SET);
-                decodedPathArgs.add(decode);
-            }
-            return decodedPathArgs;
-        } catch (UnsupportedEncodingException e) {
-            throw new YchException("Invalid URL path arg '" + paths + "': ", e);
-        }
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/utils/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/utils/package-info.java
deleted file mode 100644
index dea920f..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/utils/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of default codec utilities.
- */
-package org.onosproject.yms.app.ych.defaultcodecs.utils;
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodec.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodec.java
deleted file mode 100644
index 4fd5613..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodec.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs.xml;
-
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.Namespace;
-import org.onosproject.yms.app.ych.YchException;
-import org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodec;
-import org.onosproject.yms.app.ych.defaultcodecs.utils.DefaultCodecUtils;
-import org.onosproject.yms.app.ydt.DefaultYdtWalker;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedBuilder;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.ydt.YdtExtendedWalker;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.onosproject.yms.ych.YangCompositeEncoding;
-import org.onosproject.yms.ych.YangDataTreeCodec;
-import org.onosproject.yms.ydt.YdtBuilder;
-import org.onosproject.yms.ydt.YmsOperationType;
-
-import java.util.Map;
-
-import static org.onosproject.yms.ych.YangProtocolEncodingFormat.XML;
-import static org.onosproject.yms.ydt.YdtContextOperationType.CREATE;
-
-/**
- * Represents an implementation of YCH data tree codec interface.
- */
-public class DefaultXmlCodec implements YangDataTreeCodec {
-
-    private static final String E_RESTCONF_ROOT = "/onos/restconf";
-    private static final String E_YDT_ROOT_NODE = "YDT extended root node " +
-            "is null.";
-    private static final String E_ROOT_ELEMENT = "Root element in XML " +
-            "input string is not well-formed.";
-    private static final String E_ROOT_KEY_ELEMENT = "Root element " +
-            "(filter, config, data) in XML input string is not found.";
-
-
-    /**
-     * Creates a new YANG xml codec.
-     */
-    public DefaultXmlCodec() {
-    }
-
-    /**
-     * Returns the xml string from YDT.
-     *
-     * @param ydtBuilder YDT builder
-     * @return the xml string from YDT
-     */
-    private String buildXmlForYdt(YdtBuilder ydtBuilder) {
-
-        YdtExtendedBuilder extBuilder = (YdtExtendedBuilder) ydtBuilder;
-        YdtExtendedContext rootNode = extBuilder.getRootNode();
-
-        if (rootNode == null) {
-            throw new YchException(E_YDT_ROOT_NODE);
-        }
-
-        // Creating the root element for xml.
-        Element rootElement =
-                DocumentHelper.createDocument().addElement(rootNode.getName());
-
-        // Adding the name space if exist for root name.
-        if (rootNode.getNamespace() != null) {
-            rootElement.add(Namespace.get(rootNode.getNamespace()));
-        }
-
-        if ("config".equals(rootElement.getName())) {
-            rootElement.add(new Namespace("nc", "urn:ietf:params:xml:ns:netconf:base:1.0"));
-        }
-
-        // Adding the attribute if exist
-        Map<String, String> tagAttrMap = extBuilder.getRootTagAttributeMap();
-        if (tagAttrMap != null && !tagAttrMap.isEmpty()) {
-            for (Map.Entry<String, String> attr : tagAttrMap.entrySet()) {
-                rootElement.addAttribute(attr.getKey(), attr.getValue());
-            }
-        }
-
-        XmlCodecYdtListener listener = new XmlCodecYdtListener(XML, rootNode);
-        listener.getElementStack().push(rootElement);
-
-        // Walk through YDT and build the xml.
-        YdtExtendedWalker extWalker = new DefaultYdtWalker();
-        extWalker.walk(listener, rootNode);
-
-        return rootElement.asXML();
-    }
-
-    @Override
-    public String encodeYdtToProtocolFormat(YdtBuilder ydtBuilder) {
-        return buildXmlForYdt(ydtBuilder);
-    }
-
-    @Override
-    public YangCompositeEncoding encodeYdtToCompositeProtocolFormat(
-            YdtBuilder ydtBuilder) {
-
-        YangCompositeEncodingImpl encoding = new YangCompositeEncodingImpl();
-        encoding.setResourceIdentifier(null);
-        encoding.setResourceInformation(buildXmlForYdt(ydtBuilder));
-        return encoding;
-    }
-
-    @Override
-    public YdtBuilder decodeCompositeProtocolDataToYdt(
-            YangCompositeEncoding protoData,
-            Object schemaReg,
-            YmsOperationType opType) {
-
-        YdtExtendedBuilder extBuilder =
-                new YangRequestWorkBench(E_RESTCONF_ROOT, null,
-                                         opType,
-                                         (YangSchemaRegistry) schemaReg,
-                                         false);
-
-        DefaultCodecUtils.convertUriToYdt(protoData.getResourceIdentifier(),
-                                          extBuilder,
-                                          CREATE);
-        Document document;
-
-        try {
-            document = DocumentHelper
-                    .parseText(protoData.getResourceInformation());
-        } catch (DocumentException e) {
-            throw new YchException(E_ROOT_ELEMENT);
-        }
-
-        XmlCodecListener listener = new XmlCodecListener();
-        listener.setYdtExtBuilder(extBuilder);
-
-        // Walk through xml and build the yang data tree.
-        XmlWalker walker = new DefaultXmlCodecWalker();
-        walker.walk(listener, document.getRootElement(),
-                    document.getRootElement());
-        return extBuilder;
-    }
-
-    @Override
-    public YdtBuilder decodeProtocolDataToYdt(String protoData,
-                                              Object schemaReg,
-                                              YmsOperationType opType) {
-        Document document;
-
-        try {
-            document = DocumentHelper.parseText(protoData);
-        } catch (DocumentException e) {
-            throw new YchException(E_ROOT_ELEMENT);
-        }
-
-        NetconfCodec codec = new NetconfCodec();
-        // Find the root element in xml string
-        Element rootElement =
-                codec.getDataRootElement(document.getRootElement(), opType);
-
-        if (rootElement == null) {
-            throw new YchException(E_ROOT_KEY_ELEMENT);
-        }
-
-        // Get the YDT builder for the logical root name.
-        YdtExtendedBuilder extBuilder =
-                new YangRequestWorkBench(rootElement.getName(),
-                                         rootElement.getNamespaceURI(),
-                                         opType,
-                                         (YangSchemaRegistry) schemaReg,
-                                         false);
-
-        XmlCodecListener listener = new XmlCodecListener();
-        listener.setYdtExtBuilder(extBuilder);
-        // Walk through xml and build the yang data tree.
-        XmlWalker walker = new DefaultXmlCodecWalker();
-        walker.walk(listener, rootElement, rootElement);
-        return extBuilder;
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodecWalker.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodecWalker.java
deleted file mode 100644
index 290d4c3..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodecWalker.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs.xml;
-
-import org.dom4j.Element;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Iterator;
-
-import static org.onosproject.yms.app.ych.defaultcodecs.xml.XmlNodeType.OBJECT_NODE;
-import static org.onosproject.yms.app.ych.defaultcodecs.xml.XmlNodeType.TEXT_NODE;
-
-/**
- * Represents implementation of codec xml walker.
- */
-class DefaultXmlCodecWalker implements XmlWalker {
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    @Override
-    public void walk(XmlListener listener, Element element,
-                     Element rootElement) {
-        try {
-            Element newElement = element.createCopy();
-            newElement.remove(element.getNamespace());
-
-            listener.enterXmlElement(element, getElementType(newElement),
-                                     rootElement);
-
-            if (element.hasContent() && !element.isTextOnly()) {
-                for (Iterator i = element.elementIterator(); i.hasNext();) {
-                    Element childElement = (Element) i.next();
-                    walk(listener, childElement, rootElement);
-                }
-            }
-
-            listener.exitXmlElement(element, getElementType(element),
-                                    rootElement);
-        } catch (Exception e) {
-            log.error("Exception occurred when walk xml element: {}", element);
-        }
-    }
-
-    /**
-     * Determine the type of an element.
-     *
-     * @param element to be analysed
-     * @return type of the element
-     */
-    private XmlNodeType getElementType(Element element) {
-        return element.hasContent() && element.isTextOnly() ?
-                TEXT_NODE : OBJECT_NODE;
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecHandler.java
deleted file mode 100644
index cd9fc4f..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecHandler.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs.xml;
-
-import org.dom4j.Element;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ydt.YdtContextOperationType;
-
-import java.util.Stack;
-
-import static org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodecConstants.OPERATION;
-import static org.onosproject.yms.ydt.YdtContextOperationType.NONE;
-
-/**
- * Represents an codec handler to process the xml content and add
- * element to the stack.
- */
-public abstract class XmlCodecHandler {
-
-    /**
-     * Sets the namespace and tag name in element tree maintained in stack.
-     *
-     * @param ydtContext   YDT context
-     * @param elementStack element tree stack
-     */
-    void processXmlContext(YdtContext ydtContext,
-                           Stack<Element> elementStack) {
-
-        Element newElement = updateNameAndNamespace(ydtContext,
-                                                    elementStack.peek());
-        elementStack.push(newElement);
-    }
-
-    /**
-     * Returns the new element name by updating tag name and namespace.
-     *
-     * @param ydtContext YDT context node
-     * @param xmlElement element in the stack used for adding new element
-     * @return new element name by updating tag name and namespace
-     */
-    Element updateNameAndNamespace(YdtContext ydtContext,
-                                   Element xmlElement) {
-        String nameSpace = null;
-        if (ydtContext.getNamespace() != null) {
-            nameSpace = ydtContext.getNamespace();
-        }
-
-        String parentNameSpace = null;
-        if (ydtContext.getParent() != null) {
-            parentNameSpace = ydtContext.getParent().getNamespace();
-        }
-
-        Element newElement;
-        if (nameSpace != null) {
-            newElement = xmlElement.addElement(ydtContext.getName(),
-                                               nameSpace);
-        } else {
-            if (parentNameSpace != null) {
-                newElement = xmlElement.addElement(ydtContext.getName(),
-                                                   parentNameSpace);
-            } else {
-                newElement = xmlElement.addElement(ydtContext.getName());
-            }
-        }
-
-        YdtContextOperationType opType = ((YdtExtendedContext) ydtContext)
-                .getYdtContextOperationType();
-        if (opType != null && opType != NONE) {
-            newElement.addAttribute("nc:" + OPERATION,
-                                    opType.toString().toLowerCase());
-        }
-
-        return newElement;
-    }
-
-    /**
-     * Sets the leaf value in the current element maintained in stack.
-     * Default behaviour is to do nothing.
-     *
-     * @param ydtContext      YDT context node
-     * @param domElementStack current element node in the stack
-     */
-    public void setXmlValue(YdtContext ydtContext,
-                            Stack<Element> domElementStack) {
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecListener.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecListener.java
deleted file mode 100644
index 513785a..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecListener.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs.xml;
-
-import org.dom4j.Attribute;
-import org.dom4j.Element;
-import org.onosproject.yms.app.ydt.YdtExtendedBuilder;
-import org.onosproject.yms.ydt.YdtContextOperationType;
-
-import java.util.Iterator;
-
-import static org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodecConstants.OPERATION;
-import static org.onosproject.yms.app.ych.defaultcodecs.xml.XmlNodeType.OBJECT_NODE;
-import static org.onosproject.yms.app.ych.defaultcodecs.xml.XmlNodeType.TEXT_NODE;
-
-/**
- * Default implementation of codec xml listener.
- */
-class XmlCodecListener implements XmlListener {
-
-    /**
-     * YANG data tree builder object.
-     */
-    private YdtExtendedBuilder ydtExtBuilder;
-
-    private String prevNodeNamespace;
-
-    /**
-     * Sets the YANG data tree builder object.
-     *
-     * @param ydtBuilder YANG data tree builder object
-     */
-    void setYdtExtBuilder(YdtExtendedBuilder ydtBuilder) {
-        ydtExtBuilder = ydtBuilder;
-    }
-
-    @Override
-    public void enterXmlElement(Element element, XmlNodeType nodeType,
-                                Element rootElement) {
-        if (element.equals(rootElement)) {
-            return;
-        }
-
-        YdtContextOperationType opType = null;
-
-        for (Iterator iter = element.attributeIterator(); iter.hasNext();) {
-            Attribute attr = (Attribute) iter.next();
-            if (attr.getName().equals(OPERATION)) {
-                opType =
-                        YdtContextOperationType.valueOf(attr.getValue()
-                                                                .toUpperCase());
-            }
-        }
-
-        String nameSpace = null;
-        if (element.getNamespace() != null) {
-            nameSpace = element.getNamespace().getURI();
-        }
-
-        /*
-         * When new module has to be added, and if curnode has reference of
-         * previous module, then we need to traverse back to parent(logical
-         * root node).
-         */
-        if (ydtExtBuilder.getRootNode() == ydtExtBuilder.getCurNode()
-                .getParent() && prevNodeNamespace != null &&
-                !prevNodeNamespace.equals(nameSpace)) {
-            ydtExtBuilder.traverseToParent();
-        }
-
-        if (nodeType == OBJECT_NODE &&
-                (element.content() == null || element.content().isEmpty())) {
-            if (ydtExtBuilder != null) {
-                if (ydtExtBuilder.getCurNode() == ydtExtBuilder.getRootNode()) {
-                    ydtExtBuilder.addChild(null, nameSpace, opType);
-                }
-                ydtExtBuilder.addNode(element.getName(), nameSpace);
-            }
-        } else if (nodeType == OBJECT_NODE) {
-            if (ydtExtBuilder != null) {
-                if (ydtExtBuilder.getCurNode() == ydtExtBuilder.getRootNode()) {
-                    ydtExtBuilder.addChild(null, nameSpace, opType);
-                }
-                ydtExtBuilder.addChild(element.getName(), nameSpace, opType);
-            }
-        } else if (nodeType == TEXT_NODE) {
-            if (ydtExtBuilder != null) {
-                if (ydtExtBuilder.getCurNode() == ydtExtBuilder.getRootNode()) {
-                    ydtExtBuilder.addChild(null, nameSpace, opType);
-                }
-                ydtExtBuilder.addLeaf(element.getName(), nameSpace,
-                                      element.getText());
-            }
-        }
-
-        if (nameSpace != null) {
-            prevNodeNamespace = nameSpace;
-        }
-    }
-
-    @Override
-    public void exitXmlElement(Element element, XmlNodeType nodeType,
-                               Element rootElement) {
-        if (element.equals(rootElement)) {
-            return;
-        }
-
-        if (ydtExtBuilder != null) {
-            ydtExtBuilder.traverseToParent();
-        }
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecMultiInstanceHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecMultiInstanceHandler.java
deleted file mode 100644
index a123932..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecMultiInstanceHandler.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs.xml;
-
-/**
- * Represents a multi instance node handler in YCH.
- */
-public class XmlCodecMultiInstanceHandler extends XmlCodecHandler {
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecMultiInstanceLeafHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecMultiInstanceLeafHandler.java
deleted file mode 100644
index 53f8230..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecMultiInstanceLeafHandler.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs.xml;
-
-import org.dom4j.Element;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.util.Iterator;
-import java.util.Stack;
-
-/**
- * Represents a multi instance leaf node handler in YCH.
- */
-public class XmlCodecMultiInstanceLeafHandler extends XmlCodecHandler {
-
-    @Override
-    public void setXmlValue(YdtContext ydtContext,
-                            Stack<Element> elementStack) {
-
-        if (ydtContext.getValueSet().isEmpty()) {
-            return;
-        }
-
-        Iterator<String> iterator = ydtContext.getValueSet().iterator();
-        elementStack.peek().setText(iterator.next());
-        Element topOfStack = elementStack.pop();
-        Element parent = elementStack.peek();
-
-        while (iterator.hasNext()) {
-            Element newElement = updateNameAndNamespace(ydtContext, parent);
-            newElement.setText(iterator.next());
-        }
-        elementStack.push(topOfStack);
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecSingleInstanceHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecSingleInstanceHandler.java
deleted file mode 100644
index 252fbd0..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecSingleInstanceHandler.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs.xml;
-
-/**
- * Represents a single instance node handler in YCH.
- */
-public class XmlCodecSingleInstanceHandler extends XmlCodecHandler {
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecSingleInstanceLeafHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecSingleInstanceLeafHandler.java
deleted file mode 100644
index 8217cda..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecSingleInstanceLeafHandler.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs.xml;
-
-import org.dom4j.Element;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.util.Stack;
-
-/**
- * Represents a single instance leaf node handler in YCH.
- */
-public class XmlCodecSingleInstanceLeafHandler extends XmlCodecHandler {
-
-    @Override
-    public void setXmlValue(YdtContext ydtContext,
-                            Stack<Element> elementStack) {
-
-        if (ydtContext.getValue() != null) {
-            elementStack.peek().setText(ydtContext.getValue());
-        }
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecYdtListener.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecYdtListener.java
deleted file mode 100644
index 6a26a6e..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecYdtListener.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs.xml;
-
-import org.dom4j.Element;
-import org.onosproject.yms.app.ych.defaultcodecs.CodecHandlerFactory;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.ydt.YdtExtendedListener;
-import org.onosproject.yms.ych.YangProtocolEncodingFormat;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.util.Objects;
-import java.util.Stack;
-
-import static org.onosproject.yms.ych.YangProtocolEncodingFormat.XML;
-
-/**
- * Represents implementation of codec YANG data object listener.
- */
-class XmlCodecYdtListener implements YdtExtendedListener {
-
-    /**
-     * Data format type requested from driver.
-     */
-    private YangProtocolEncodingFormat dataFormat;
-
-    /**
-     * Stack for element is maintained for hierarchical references, this is
-     * used during YDT walker and preparation of xml/json.
-     */
-    private final Stack<Element> elementStack = new Stack<>();
-
-    /**
-     * Root name received from driver.
-     */
-    private YdtExtendedContext rootYdtNode;
-
-    /**
-     * Module YDT node.
-     */
-    private YdtExtendedContext currentModule;
-
-    /**
-     * Creates a new codec listener.
-     *
-     * @param format   protocol data format
-     * @param rootNode extended YDT root node
-     */
-    XmlCodecYdtListener(YangProtocolEncodingFormat format,
-                        YdtExtendedContext rootNode) {
-        dataFormat = format;
-        rootYdtNode = rootNode;
-        currentModule = ((YdtExtendedContext) rootNode.getFirstChild());
-    }
-
-    /**
-     * Returns the stack for the element.
-     *
-     * @return the stack for the element
-     */
-    Stack<Element> getElementStack() {
-        return elementStack;
-    }
-
-    /**
-     * Returns true, if YDT node is module node; false otherwise.
-     *
-     * @param ydtContext YDT node
-     * @return true if YDT node is module; false otherwise
-     */
-    private boolean isModuleNode(YdtExtendedContext ydtContext,
-                                 boolean isExit) {
-        if (Objects.equals(currentModule, ydtContext)) {
-            if (isExit) {
-                currentModule = (YdtExtendedContext) currentModule
-                        .getNextSibling();
-            }
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public void enterYdtNode(YdtExtendedContext ydtContext) {
-
-        if (!Objects.equals(rootYdtNode, ydtContext) &&
-                !isModuleNode(ydtContext, false)) {
-
-            CodecHandlerFactory factory = CodecHandlerFactory.instance();
-            XmlCodecHandler handler =
-                    factory.getCodecHandlerForContext(ydtContext, dataFormat);
-            try {
-                if (dataFormat == XML && handler != null) {
-                    handler.processXmlContext(ydtContext, elementStack);
-                }
-            } catch (Exception e) {
-                // TODO
-            }
-
-            if (dataFormat == XML && handler != null) {
-                handler.setXmlValue(ydtContext, elementStack);
-            }
-        }
-    }
-
-    @Override
-    public void exitYdtNode(YdtExtendedContext ydtExtendedContext) {
-        if (!Objects.equals(rootYdtNode, ydtExtendedContext) &&
-                !isModuleNode(ydtExtendedContext, true)) {
-            elementStack.pop();
-        }
-    }
-
-    @Override
-    public void enterYdtNode(YdtContext ydtContext) {
-    }
-
-    @Override
-    public void exitYdtNode(YdtContext ydtContext) {
-    }
-
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlListener.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlListener.java
deleted file mode 100644
index db64dea..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlListener.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs.xml;
-
-import org.dom4j.Element;
-
-/**
- * Abstraction of an entity which provide call back methods which are called
- * by xml walker while walking the xml data tree. This interface needs to be
- * implemented by protocol implementing listener's based call backs while
- * xml walk.
- */
-interface XmlListener {
-
-    /**
-     * Callback invoked during a node entry. All the related information
-     * about the node can be obtained from the element.
-     *
-     * @param element     current xml node(element)
-     * @param nodeType    xml node type
-     * @param rootElement root element
-     */
-    void enterXmlElement(Element element, XmlNodeType nodeType,
-                         Element rootElement);
-
-    /**
-     * Callback invoked during a node exit. All the related information
-     * about the node can be obtained from the element.
-     *
-     * @param element     current xml node(element)
-     * @param nodeType    xml node type
-     * @param rootElement root element
-     */
-    void exitXmlElement(Element element, XmlNodeType nodeType,
-                        Element rootElement);
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlNodeType.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlNodeType.java
deleted file mode 100644
index 9d92b0b..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlNodeType.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs.xml;
-
-/**
- * Represents type of node in xml data tree.
- */
-enum XmlNodeType {
-    /**
-     * An object node has at least one child node.
-     */
-    OBJECT_NODE,
-
-    /**
-     * A text node has no child node, and has a text value.
-     */
-    TEXT_NODE
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlWalker.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlWalker.java
deleted file mode 100644
index 1a3078d..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlWalker.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs.xml;
-
-import org.dom4j.Element;
-
-/**
- * Abstraction of an entity which provides interfaces for xml walk.
- * This interface serve as common tools for anyone who needs to parse the xml
- * node with depth-first algorithm.
- */
-interface XmlWalker {
-    /**
-     * Walks the xml data tree. Protocols implements xml listener service
-     * and walks xml tree with input as implemented object. xml walker provides
-     * call backs to implemented methods.
-     *
-     * @param listener    xml listener implemented by the protocol
-     * @param walkElement root node(element) of the xml data tree
-     * @param rootElement logical root node(element) of the xml data tree
-     */
-    void walk(XmlListener listener, Element walkElement, Element rootElement);
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/YangCompositeEncodingImpl.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/YangCompositeEncodingImpl.java
deleted file mode 100644
index 7ffc91e..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/YangCompositeEncodingImpl.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych.defaultcodecs.xml;
-
-import org.onosproject.yms.ych.YangCompositeEncoding;
-import org.onosproject.yms.ych.YangResourceIdentifierType;
-
-/**
- * Represents implementation of YangCompositeEncoding interfaces.
- */
-class YangCompositeEncodingImpl implements YangCompositeEncoding {
-
-    /**
-     * Resource identifier for composite encoding.
-     */
-    private String resourceIdentifier;
-
-    /**
-     * Resource information for composite encoding.
-     */
-    private String resourceInformation;
-
-    /**
-     * Resource identifier type.
-     */
-    private YangResourceIdentifierType resourceIdentifierType;
-
-    @Override
-    public void setResourceIdentifier(String resourceId) {
-        resourceIdentifier = resourceId;
-    }
-
-    @Override
-    public void setResourceInformation(String resourceInfo) {
-        resourceInformation = resourceInfo;
-    }
-
-    @Override
-    public void setResourceIdentifierType(YangResourceIdentifierType idType) {
-        resourceIdentifierType = idType;
-    }
-
-    @Override
-    public String getResourceIdentifier() {
-        return resourceIdentifier;
-    }
-
-    @Override
-    public YangResourceIdentifierType getResourceIdentifierType() {
-        return resourceIdentifierType;
-    }
-
-    @Override
-    public String getResourceInformation() {
-        return resourceInformation;
-    }
-}
-
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/package-info.java
deleted file mode 100644
index b9fbb7c..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of default codec handler for xml related
- * operation.
- */
-package org.onosproject.yms.app.ych.defaultcodecs.xml;
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/package-info.java
deleted file mode 100644
index 97bd542..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides interfaces to YANG codec utility.
- * YANG codec utility provides interfaces which can be used by the driver / provider to
- * translate protocol specific data representation to YANG modeled objects.
- */
-package org.onosproject.yms.app.ych;
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppData.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppData.java
deleted file mode 100644
index bc1021a..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppData.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-
-/**
- * Maintains application data, which will be used by Application broker to
- * interact with applications.
- */
-public interface AppData {
-
-    /**
-     * Returns the schema node current context.
-     *
-     * @return schema node
-     */
-    YangSchemaNode getSchemaNode();
-
-    /**
-     * Returns the root/module schema node current application.
-     *
-     * @return schema node
-     */
-    YangSchemaNode getRootSchemaNode();
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppNodeFactory.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppNodeFactory.java
deleted file mode 100644
index 8917b52..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppNodeFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-/**
- * Represents an application tree node factory to create different types of
- * application tree node.
- */
-public final class AppNodeFactory {
-
-    // No instantiation
-    private AppNodeFactory() {
-    }
-
-    /**
-     * Returns the appropriate application context on the basis of provided
-     * isAugmented flag for given request.
-     *
-     * @param flag true for augmented context; false for module context
-     * @return appContext application context
-     */
-    public static DefaultYdtAppContext getAppContext(boolean flag) {
-        return flag ? new DefaultYdtAppContext(new AugmentedSchemaData()) :
-                new DefaultYdtAppContext(new ModuleSchemaData());
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppType.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppType.java
deleted file mode 100644
index 3b49ec2..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppType.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-/**
- * Represents type of application, which is intended to maintain additional
- * information in YDT node.
- */
-public enum AppType {
-
-    /**
-     * YANG tree builder application.
-     */
-    YTB,
-
-    /**
-     * YANG object builder application.
-     */
-    YOB
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AugmentAppData.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AugmentAppData.java
deleted file mode 100644
index 88d1bb3..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AugmentAppData.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-
-/**
- * Represents an augmented node in application tree.
- */
-interface AugmentAppData extends AppData {
-
-    /**
-     * Returns the YangSchemaNode of augmenting application.
-     *
-     * @return YangSchemaNode of augmenting application
-     */
-    YangSchemaNode getAugmentingSchemaNode();
-
-    /**
-     * Sets the YangSchemaNode of augmenting application root node.
-     *
-     * @param schemaNode YangSchemaNode of augmenting application module
-     */
-    void setAugmentingSchemaNode(YangSchemaNode schemaNode);
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AugmentedSchemaData.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AugmentedSchemaData.java
deleted file mode 100644
index 221e564..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AugmentedSchemaData.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-
-/**
- * Manages the application information required for schema nodes defined in
- * the module (sub-module).
- */
-public class AugmentedSchemaData implements AugmentAppData {
-
-    /*
-     * Reference for schema node of augmenting application.
-     */
-    private YangSchemaNode augModSchema;
-
-    @Override
-    public YangSchemaNode getAugmentingSchemaNode() {
-        return augModSchema;
-    }
-
-    @Override
-    public void setAugmentingSchemaNode(YangSchemaNode schemaNode) {
-        augModSchema = schemaNode;
-    }
-
-    @Override
-    public YangSchemaNode getSchemaNode() {
-        return augModSchema;
-    }
-
-    @Override
-    public YangSchemaNode getRootSchemaNode() {
-        return ((YangNode) getSchemaNode()).getParent();
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/DefaultYdtAppContext.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/DefaultYdtAppContext.java
deleted file mode 100644
index 6f9dbeb..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/DefaultYdtAppContext.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ydt.YdtContextOperationType;
-
-import java.util.List;
-
-import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.BOTH;
-import static org.onosproject.yms.app.ydt.YdtUtils.getAppOpTypeFromYdtOpType;
-
-/**
- * Abstraction of an entity which represents YDT application context
- * information. This context information will be used by protocol to obtain
- * the information associated with YDT application tree node.
- */
-public final class DefaultYdtAppContext<T extends AppData>
-        implements YdtAppContext {
-
-    /*
-     * Parent reference.
-     */
-    private YdtAppContext parent;
-
-    /*
-     * First child reference.
-     */
-    private YdtAppContext child;
-
-    /*
-     * Next sibling reference.
-     */
-    private YdtAppContext nextSibling;
-
-    /*
-     * Previous sibling reference.
-     */
-    private YdtAppContext previousSibling;
-
-    /*
-     * Last child reference.
-     */
-    private YdtAppContext lastChild;
-
-    /*
-     * YDT application tree extended information.
-     */
-    private final T appData;
-
-    /*
-     * Reference for operation type for application root node.
-     */
-    private YdtAppNodeOperationType operationType;
-
-    /**
-     * Creates an instance of YANG application tree which is used by all node
-     * needs delete list.
-     *
-     * @param data application data
-     */
-    DefaultYdtAppContext(T data) {
-        appData = data;
-    }
-
-    @Override
-    public void updateAppOperationType(YdtContextOperationType ydtOpType) {
-        if (parent == null) {
-            return;
-        }
-        YdtAppNodeOperationType opType = getAppOpTypeFromYdtOpType(ydtOpType);
-        YdtAppContext curNode = this;
-        YdtAppNodeOperationType parentOpType = operationType;
-        if (opType != parentOpType) {
-            if (parentOpType != null) {
-                while (curNode.getOperationType() != BOTH &&
-                        curNode.getParent() != null) {
-                    curNode.setOperationType(BOTH);
-                    curNode = curNode.getParent();
-                }
-            } else {
-                // If operation type for ydt node is "NONE" then in that
-                // case operation type for module node in app tree set as null.
-                // Once the target node operation type received by ydt then
-                // operation type for module node will be updated with the
-                // same target node operation type in app tree.
-                while (curNode.getParent() != null && curNode
-                        .getOperationType() == null) {
-                    curNode.setOperationType(opType);
-                    curNode = curNode.getParent();
-                }
-            }
-        }
-    }
-
-    @Override
-    public void setAppData(YdtNode moduleNode, YangSchemaNode augmentNode) {
-        if (augmentNode != null) {
-            ((AugmentAppData) appData).setAugmentingSchemaNode(augmentNode);
-        } else {
-            ((ModuleAppData) appData).setModuleContext(moduleNode);
-        }
-    }
-
-    @Override
-    public AppData getAppData() {
-        return appData;
-    }
-
-    @Override
-    public YdtAppContext getParent() {
-        return parent;
-    }
-
-    @Override
-    public void setParent(YdtAppContext parent) {
-        this.parent = parent;
-    }
-
-    @Override
-    public YdtAppContext getFirstChild() {
-        return child;
-    }
-
-    /**
-     * Sets the context of first child.
-     *
-     * @param child node
-     */
-    private void setChild(YdtAppContext child) {
-        this.child = child;
-    }
-
-    @Override
-    public YdtAppContext getNextSibling() {
-        return nextSibling;
-    }
-
-    @Override
-    public void setNextSibling(YdtAppContext context) {
-        this.nextSibling = context;
-    }
-
-    @Override
-    public YdtAppContext getPreviousSibling() {
-        return previousSibling;
-    }
-
-    @Override
-    public void setPreviousSibling(YdtAppContext context) {
-        this.previousSibling = context;
-    }
-
-    @Override
-    public YdtAppNodeOperationType getOperationType() {
-        return operationType;
-    }
-
-    @Override
-    public void setOperationType(YdtAppNodeOperationType opType) {
-        operationType = opType;
-    }
-
-    @Override
-    public List<YdtContext> getDeleteNodes() {
-        return ((ModuleAppData) appData).getDeleteNodes();
-    }
-
-    @Override
-    public void addDeleteNode(YdtNode node) {
-        DefaultYdtAppContext<?> curNode = this;
-        while (curNode.getParent().getParent() != null) {
-            curNode = (DefaultYdtAppContext<?>) curNode.getParent();
-        }
-        ((ModuleAppData) curNode.appData).addDeleteNodes(node);
-    }
-
-    @Override
-    public YdtContext getModuleContext() {
-        return ((ModuleAppData) appData).getModuleContext();
-    }
-
-    @Override
-    public YangSchemaNode getAugmentingSchemaNode() {
-        return ((AugmentAppData) appData).getAugmentingSchemaNode();
-    }
-
-    @Override
-    public void setAugmentingSchemaNode(YangSchemaNode schemaNode) {
-        ((AugmentAppData) appData).setAugmentingSchemaNode(schemaNode);
-    }
-
-    @Override
-    public YdtAppContext getLastChild() {
-        return lastChild;
-    }
-
-    /**
-     * Sets the context of last child.
-     *
-     * @param child node
-     */
-    private void setLastChild(YdtAppContext child) {
-        lastChild = child;
-    }
-
-    @Override
-    public void addChild(YdtAppContext newChild) {
-
-        if (newChild.getParent() == null) {
-            newChild.setParent(this);
-        }
-
-        // First child to be added.
-        if (getFirstChild() == null) {
-            setChild(newChild);
-            // Update last child.
-            setLastChild(newChild);
-            return;
-        }
-
-        // If the new node needs to be add as last child.
-        YdtAppContext curNode = getLastChild();
-        curNode.setNextSibling(newChild);
-        newChild.setPreviousSibling(curNode);
-        setLastChild(newChild);
-    }
-
-    @Override
-    public YangSchemaNode getYangSchemaNode() {
-        return appData.getSchemaNode();
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/DefaultYdtWalker.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/DefaultYdtWalker.java
deleted file mode 100644
index ab67d28..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/DefaultYdtWalker.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-
-import org.onosproject.yms.app.utils.TraversalType;
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ydt.YdtListener;
-
-import static org.onosproject.yms.app.utils.TraversalType.CHILD;
-import static org.onosproject.yms.app.utils.TraversalType.PARENT;
-import static org.onosproject.yms.app.utils.TraversalType.ROOT;
-import static org.onosproject.yms.app.utils.TraversalType.SIBLING;
-
-/**
- * Represents implementation of YDT walker, which walks the YDT.
- */
-public class DefaultYdtWalker implements YdtExtendedWalker {
-
-    @Override
-    public void walk(YdtListener ydtListener, YdtContext rootNode) {
-        walkTree(ydtListener, rootNode, false);
-    }
-
-    /**
-     * Walks the YANG data tree till the node provided by the user.
-     * Protocols implements YDT listener and YDT Extended Listener and
-     * walks YDT tree with input as implemented object.
-     * YDT walker provides call backs to implemented methods.
-     *
-     * @param ydtListener YDT listener implemented by the protocol
-     * @param rootNode    root node of YDT
-     * @param isExtended  flag denotes the call type
-     */
-    private void walkTree(YdtListener ydtListener, YdtContext rootNode,
-                          boolean isExtended) {
-        YdtContext curNode = rootNode;
-        TraversalType curTraversal = ROOT;
-
-        while (curNode != null) {
-            if (curTraversal != PARENT) {
-
-                // Visit (curNode) for entry callback
-                if (isExtended) {
-                    ((YdtExtendedListener) ydtListener)
-                            .enterYdtNode((YdtExtendedContext) curNode);
-                } else {
-                    ydtListener.enterYdtNode(curNode);
-                }
-            }
-            if (curTraversal != PARENT &&
-                    curNode.getFirstChild() != null) {
-                curTraversal = CHILD;
-                curNode = curNode.getFirstChild();
-            } else if (curNode.getNextSibling() != null) {
-                // Revisit (curNode) for exit callback
-                exitCallBack(ydtListener, curNode, isExtended);
-
-                /*
-                 *Stop traversing the tree , tree need to be traversed
-                 * till user requested node
-                 */
-                if (curNode.equals(rootNode)) {
-                    return;
-                }
-                curTraversal = SIBLING;
-                curNode = curNode.getNextSibling();
-            } else {
-                // Revisit (curNode) for exit callback
-                exitCallBack(ydtListener, curNode, isExtended);
-
-                /*
-                 *Stop traversing the tree , tree need to be traversed
-                 * till user requested node
-                 */
-                if (curNode.equals(rootNode)) {
-                    return;
-                }
-
-                curTraversal = PARENT;
-                curNode = curNode.getParent();
-            }
-        }
-    }
-
-    /**
-     * Provides exit call back per node on the basis of extended flag,
-     * If isExtended set then YdtExtendedListener exit node call back will
-     * be provided else YdtListener with respective type of context
-     * (YdtContext/YdtExtendedContext).
-     *
-     * @param ydtListener YDT listener implemented by the protocol
-     * @param curNode     current node of YDT
-     * @param isExtended  flag denotes the call type
-     */
-    private void exitCallBack(YdtListener ydtListener, YdtContext curNode,
-                              boolean isExtended) {
-        if (isExtended) {
-            ((YdtExtendedListener) ydtListener)
-                    .exitYdtNode((YdtExtendedContext) curNode);
-        } else {
-            ydtListener.exitYdtNode(curNode);
-        }
-    }
-
-    @Override
-    public void walk(YdtExtendedListener ydtExtendedListener,
-                     YdtExtendedContext rootNode) {
-        walkTree(ydtExtendedListener, rootNode, true);
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/ModuleAppData.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/ModuleAppData.java
deleted file mode 100644
index ff680ab..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/ModuleAppData.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.util.List;
-
-/**
- * Represents a module/sub-module node in application tree.
- */
-interface ModuleAppData extends AppData {
-
-    /**
-     * Returns the list of nodes with operation type delete.
-     *
-     * @return list of nodes with operation type delete
-     */
-    List<YdtContext> getDeleteNodes();
-
-    /**
-     * Adds the ydt node with operation type delete in module delete node list.
-     *
-     * @param node ydt node with operation type delete/remove
-     */
-    void addDeleteNodes(YdtContext node);
-
-    /**
-     * Returns application's root ydtContext.
-     *
-     * @return YdtContext of application root node
-     */
-    YdtContext getModuleContext();
-
-    /**
-     * Sets the application's ydtContext.
-     *
-     * @param moduleNode application's ydtContext
-     */
-    void setModuleContext(YdtExtendedContext moduleNode);
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/ModuleSchemaData.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/ModuleSchemaData.java
deleted file mode 100644
index f980bfda..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/ModuleSchemaData.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Manages the application information required for schema nodes defined in
- * the module (sub-module).
- */
-public class ModuleSchemaData implements ModuleAppData {
-
-    /*
-     * Reference for application's root ydtContext.
-     */
-    private YdtExtendedContext moduleContext;
-
-    /*
-     * Reference for list of nodes with operation type delete.
-     */
-    private final List<YdtContext> deleteNodes = new ArrayList<>();
-
-    @Override
-    public List<YdtContext> getDeleteNodes() {
-        // This suppose to be mutable for YAB
-        return deleteNodes;
-    }
-
-    @Override
-    public void addDeleteNodes(YdtContext deletedNode) {
-        deleteNodes.add(deletedNode);
-    }
-
-    @Override
-    public YdtContext getModuleContext() {
-        return moduleContext;
-    }
-
-    @Override
-    public void setModuleContext(YdtExtendedContext moduleContext) {
-        this.moduleContext = moduleContext;
-    }
-
-    @Override
-    public YangSchemaNode getSchemaNode() {
-        return moduleContext.getYangSchemaNode();
-    }
-
-    @Override
-    public YangSchemaNode getRootSchemaNode() {
-        return moduleContext.getYangSchemaNode();
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/NameSpace.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/NameSpace.java
deleted file mode 100644
index 3ae9686..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/NameSpace.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yangutils.datamodel.YangNamespace;
-
-class NameSpace implements YangNamespace {
-
-    /*
-     * Reference for namespace.
-     */
-    private final String nameSpace;
-
-    /**
-     * Creates an instance of namespace which is used to initialize the
-     * nameSpace for requested YDT node.
-     *
-     * @param nameSpace namespace of the requested node
-     */
-    public NameSpace(String nameSpace) {
-        this.nameSpace = nameSpace;
-    }
-
-    @Override
-    public String getModuleNamespace() {
-        return nameSpace;
-    }
-
-    @Override
-    public String getModuleName() {
-        return nameSpace;
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/RequestedCallType.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/RequestedCallType.java
deleted file mode 100644
index a54d946..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/RequestedCallType.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-/**
- * Represents type of YANG data tree creation method caller type.
- */
-enum RequestedCallType {
-
-    /**
-     * Requested Node is of type single/multi instance leaf.
-     */
-    LEAF,
-
-    /**
-     * Requested Node is of type single/multi instance non leaf node.
-     */
-    NON_LEAF,
-
-    /**
-     * Requested Node is of type multi instance leaf/node.
-     */
-    MULTI_INSTANCE,
-
-    /**
-     * Requested Node is of type container but is empty.
-     */
-    EMPTY_CONTAINER,
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/RequestedCardinality.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/RequestedCardinality.java
deleted file mode 100644
index 4e4f637..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/RequestedCardinality.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-/**
- * Represents type of YANG data tree node operation.
- */
-enum RequestedCardinality {
-
-    /**
-     * Single instance of requested node.
-     */
-    SINGLE_INSTANCE,
-
-    /**
-     * Multi instance of requested node.
-     */
-    MULTI_INSTANCE,
-
-    /**
-     * Instance of requested node/leaf is unknown.
-     */
-    UNKNOWN,
-
-    /**
-     * Single instance of requested leaf.
-     */
-    SINGLE_INSTANCE_LEAF,
-
-    /**
-     * Multi instance of requested leaf.
-     */
-    MULTI_INSTANCE_LEAF
-}
-
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YangRequestWorkBench.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YangRequestWorkBench.java
deleted file mode 100644
index 2159de5..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YangRequestWorkBench.java
+++ /dev/null
@@ -1,785 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import com.google.common.collect.ImmutableMap;
-import org.onosproject.yangutils.datamodel.YangAugment;
-import org.onosproject.yangutils.datamodel.YangLeaf;
-import org.onosproject.yangutils.datamodel.YangList;
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yangutils.datamodel.YangSchemaNodeContextInfo;
-import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier;
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ydt.YdtContextOperationType;
-import org.onosproject.yms.ydt.YdtType;
-import org.onosproject.yms.ydt.YmsOperationType;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static org.onosproject.yms.app.ydt.AppNodeFactory.getAppContext;
-import static org.onosproject.yms.app.ydt.RequestedCallType.LEAF;
-import static org.onosproject.yms.app.ydt.RequestedCallType.NON_LEAF;
-import static org.onosproject.yms.app.ydt.RequestedCardinality.MULTI_INSTANCE;
-import static org.onosproject.yms.app.ydt.RequestedCardinality.MULTI_INSTANCE_LEAF;
-import static org.onosproject.yms.app.ydt.RequestedCardinality.SINGLE_INSTANCE;
-import static org.onosproject.yms.app.ydt.RequestedCardinality.UNKNOWN;
-import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg;
-import static org.onosproject.yms.app.ydt.YdtNodeFactory.getNode;
-import static org.onosproject.yms.app.ydt.YdtNodeFactory.getYangSchemaNodeTypeSpecificContext;
-import static org.onosproject.yms.app.ydt.YdtUtils.checkElementCount;
-import static org.onosproject.yms.app.ydt.YdtUtils.freeRestResources;
-import static org.onosproject.yms.app.ydt.YdtUtils.getAppOpTypeFromYdtOpType;
-import static org.onosproject.yms.app.ydt.YdtUtils.getAugmentingSchemaNode;
-import static org.onosproject.yms.app.ydt.YdtUtils.getNodeIdentifier;
-import static org.onosproject.yms.app.ydt.YdtUtils.getValidOpType;
-import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE;
-import static org.onosproject.yms.ydt.YdtContextOperationType.REMOVE;
-import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_LEAF_VALUE_NODE;
-import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_NODE;
-
-/**
- * Represents YANG request work bench which contains all parameters for
- * request handling and methods to build and obtain YANG data tree
- * which is data (sub)instance representation, abstract of protocol.
- */
-public class YangRequestWorkBench implements YdtExtendedBuilder {
-
-    // Ydt formatted error string
-    private static final String FMT_NOT_EXIST =
-            "Application with name \"%s\" doesn't exist.";
-
-    // Ydt error strings.
-    private static final String E_USE_ADD_LEAF =
-            "Requested Node should be created using addLeaf interface.";
-
-    private static final String E_INVOKE_PARENT =
-            "Can't invoke get parent at logical root node.";
-
-    /*
-     * Reference for the current context node in YANG data tree.
-     */
-    private YdtNode curNode;
-
-    /*
-     * Reference for the logical root node in YANG data tree.
-     */
-    private YdtNode rootNode;
-
-    /*
-     * Reference for the current context in ydt application tree.
-     */
-    private YdtAppContext appCurNode;
-
-    /*
-     * Reference for the logical root node context in ydt application tree.
-     */
-    private YdtAppContext appRootNode;
-
-    /**
-     * Root Node Tag attribute in YANG data tree, kept to maintain the root
-     * tag attributes in YDT.
-     * <p>
-     * First key param of map represent tagName  name of tag attribute.
-     * Second param of map represent tagValue value of tag attribute
-     */
-    private Map<String, String> rootTagAttributeMap;
-
-    /*
-     * YANG schema registry reference.
-     */
-    private YangSchemaRegistry registry = null;
-
-    /*
-     * YMS operation type.
-     */
-    private final YmsOperationType ymsOperationType;
-
-    /*
-     * YDT default operation type.
-     */
-    private YdtContextOperationType ydtDefaultOpType;
-
-    /*
-     * Flag to identify data validation need to be done by YDT or not.
-     */
-    private boolean validate = false;
-    // TODO validate need to be handle later with interaction type basis in
-    // future when it will be supported
-
-    /*
-     * Reference for application tree node set.
-     * This set contains the method name's generated for an augmented
-     * target node to avoid the duplicate entries in YDT application tree for
-     * multiple augmented nodes under a single XPATH.
-     */
-    private Set<String> augGenMethodSet;
-
-    /**
-     * Creates an instance of YANG request work bench which is use to initialize
-     * logical rootNode and and schema registry.
-     *
-     * @param name       name of logical container of a protocol
-     *                   which is a holder of the complete tree
-     * @param namespace  namespace of logical container
-     * @param opType     type of operation done by using YANG
-     *                   interface
-     * @param reg        Yang schema registry
-     * @param isValidate Flag to identify data validation need to be
-     *                   done by YDT or not
-     */
-    public YangRequestWorkBench(String name, String namespace,
-                                YmsOperationType opType,
-                                YangSchemaRegistry reg,
-                                boolean isValidate) {
-
-        setRootNode(new YdtLogicalNode(name, namespace));
-        registry = reg;
-        ymsOperationType = opType;
-        validate = isValidate;
-
-        setAppRootNode(getAppContext(true));
-    }
-
-    /**
-     * Sets the logical root node for ydt.
-     *
-     * @param node ydt logical root node
-     */
-    private void setRootNode(YdtNode node) {
-        rootNode = node;
-        curNode = node;
-    }
-
-    /**
-     * Sets the logical root node for ydt application tree.
-     *
-     * @param node ydt application context logical root node
-     */
-    private void setAppRootNode(YdtAppContext node) {
-        appRootNode = node;
-        appCurNode = node;
-    }
-
-    /**
-     * Returns the YANG schema registry of Ydt.
-     * This method will be used by ytb.
-     *
-     * @return YANG schema registry
-     */
-    public YangSchemaRegistry getYangSchemaRegistry() {
-        return registry;
-    }
-
-    /**
-     * Returns the ydt app context tree logical root node.
-     * This method will be used by yab and ytb.
-     *
-     * @return YdtAppContext app tree logical root node
-     */
-    public YdtAppContext getAppRootNode() {
-        return appRootNode;
-    }
-
-    /**
-     * Returns the ydt module node with requested node identifier.
-     *
-     * @param id module/application node identifier
-     * @return YANG data tree node
-     * @throws YdtException when user requested node schema doesn't exist or
-     *                      requested node is already part of the tree
-     */
-    private YdtNode moduleHandler(YangSchemaNodeIdentifier id)
-            throws YdtException {
-
-        YangSchemaNode node =
-                registry.getYangSchemaNodeUsingSchemaName(id.getName());
-
-        String namespace = id.getNameSpace().getModuleNamespace();
-
-        /*
-         * Checking received schema node is having same namespace as
-         * requested by user or not.
-         */
-        if (node == null || namespace != null &&
-                !namespace.equals(node.getYangSchemaNodeIdentifier()
-                                          .getNameSpace()
-                                          .getModuleNamespace())) {
-            throw new YdtException(errorMsg(FMT_NOT_EXIST, id.getName()));
-        }
-
-        /*
-         * If yms operation is for query then no validation need to be
-         * performed.
-         */
-        if (ymsOperationType != YmsOperationType.QUERY_REQUEST) {
-            // Checking whether module node is already exits in YDT or not.
-            try {
-                curNode.getCollidingChild(id);
-            } catch (YdtException e) {
-                throw new YdtException(e.getLocalizedMessage());
-            }
-        }
-
-        YdtNode newNode = new YdtSingleInstanceNode(node);
-        newNode.setYangSchemaNode(node);
-        return newNode;
-    }
-
-    @Override
-    public void setRootTagAttributeMap(Map<String, String> attributeTag) {
-        rootTagAttributeMap = attributeTag;
-    }
-
-    @Override
-    public Map<String, String> getRootTagAttributeMap() {
-        if (rootTagAttributeMap != null) {
-            return ImmutableMap.copyOf(rootTagAttributeMap);
-        }
-        return null;
-    }
-
-    @Override
-    public void addChild(String name, String namespace)
-            throws IllegalArgumentException {
-        addChild(name, namespace, UNKNOWN, null, NON_LEAF);
-    }
-
-    @Override
-    public void addChild(String name, String namespace, YdtType ydtType)
-            throws IllegalArgumentException {
-        addChild(name, namespace, ydtType, null);
-    }
-
-    @Override
-    public void addChild(String name, String namespace,
-                         YdtContextOperationType opType)
-            throws IllegalArgumentException {
-        addChild(name, namespace, UNKNOWN, opType, NON_LEAF);
-    }
-
-    @Override
-    public void addChild(String name, String namespace, YdtType ydtType,
-                         YdtContextOperationType opType)
-            throws IllegalArgumentException {
-        RequestedCardinality cardinality;
-        switch (ydtType) {
-            case MULTI_INSTANCE_NODE:
-                cardinality = MULTI_INSTANCE;
-                break;
-            case SINGLE_INSTANCE_NODE:
-                cardinality = SINGLE_INSTANCE;
-                break;
-            default:
-                throw new IllegalArgumentException(E_USE_ADD_LEAF);
-        }
-        addChild(name, namespace, cardinality, opType, NON_LEAF);
-    }
-
-    /**
-     * Adds a last child to YANG data tree; this method is to be used by all
-     * protocols internally which are aware or unaware of the nature
-     * (single/multiple) of node.
-     *
-     * @param name        name of child to be added
-     * @param namespace   namespace of child to be added
-     * @param cardinality type of YANG data tree node operation
-     * @param opType      type of requested operation over a node
-     * @param callType    to identify the whether its a leaf or other node
-     * @throws IllegalArgumentException when method has been passed an illegal
-     *                                  or inappropriate argument.
-     */
-    private void addChild(String name, String namespace,
-                          RequestedCardinality cardinality,
-                          YdtContextOperationType opType,
-                          RequestedCallType callType)
-            throws IllegalArgumentException {
-
-        YdtNode newNode;
-        boolean contextSwitch = false;
-        YangSchemaNode augmentingSchema = null;
-        YangSchemaNodeIdentifier id = getNodeIdentifier(name, namespace);
-        if (name == null) {
-            if (!curNode.equals(rootNode)) {
-                throw new YdtException("Name is null for node other than module");
-            }
-
-            /*
-             * Since XML will not have module name, id.name will be null. In
-             * that case get schema node by using namespace. In NBI flow,
-             * name will never be null.
-             */
-            YangSchemaNode node = registry
-                    .getSchemaWrtNameSpace(id.getNameSpace().getModuleNamespace());
-            id.setName(node.getName());
-        }
-
-        try {
-            // Module/sub-module node handler.
-            if (curNode.equals(rootNode)) {
-                newNode = moduleHandler(id);
-            } else {
-
-                YangSchemaNode schemaNode;
-                YangSchemaNodeContextInfo contextInfo;
-
-                // If namespace given by user null, then take namespace from parent.
-                if (namespace == null) {
-                    id.setNameSpace(curNode.getYangSchemaNode().getNameSpace());
-                }
-
-                /*
-                 * Get the already exiting YDT node in YDT tree with same
-                 * nodeIdentifier
-                 */
-                newNode = curNode.getCollidingChild(id);
-
-                /*
-                 * If colliding child doesn't exist ,
-                 * then query yang data model for schema of given node.
-                 */
-                if (newNode == null) {
-                    /*
-                     * Get Yang Schema node context info which is having
-                     * YangSchemaNode and ContextSwitchedNode.
-                     */
-                    contextInfo = curNode.getSchemaNodeContextInfo(id);
-
-                    if (contextInfo.getContextSwitchedNode() != null) {
-                        augmentingSchema = getAugmentingSchemaNode(
-                                id, contextInfo);
-                        if (augmentingSchema != null) {
-                            /*
-                             * As two tree(YDT and YDT Application Tree) are getting
-                             * prepared in parallel, So  setting context switch
-                             * flag it will help ydt to keep the track whether
-                             * ydtApp tree also need to be traversed back to parent
-                             * or not with YDT tree traverse to parent call.
-                             */
-                            contextSwitch = true;
-                        }
-                    }
-                    schemaNode = contextInfo.getSchemaNode();
-                } else {
-                    /*
-                     * If colliding child exist , then it will be leaf-list or list.
-                     * If its leaf-list then return and add new requested
-                     * value/valueSet in same node else take yang data model
-                     * information from colliding child.
-                     */
-                    if (newNode.getYdtType() == MULTI_INSTANCE_LEAF_VALUE_NODE) {
-                        curNode = newNode;
-                        return;
-                    }
-                    schemaNode = newNode.getYangSchemaNode();
-                }
-
-                /*
-                 * For yms query request node specific validation are not
-                 * required as rest-conf can call addChild api for leaf/leaf-list
-                 * node addition also in ydt.
-                 */
-                if (ymsOperationType == YmsOperationType.QUERY_REQUEST) {
-                    newNode = getYangSchemaNodeTypeSpecificContext(schemaNode);
-                } else {
-                    newNode = getNode(schemaNode, cardinality, callType);
-                }
-            }
-
-            opType = getValidOpType(opType, ydtDefaultOpType, newNode, curNode);
-
-            newNode.setYdtContextOperationType(opType);
-
-            curNode.addChild(newNode, true);
-        } catch (YdtException e) {
-            freeRestResources(rootNode);
-            throw new IllegalArgumentException(e.getLocalizedMessage());
-        }
-
-        // Update parent ydt node map.
-        curNode.updateYdtMap(newNode);
-
-        processAppTree(opType, newNode, augmentingSchema, contextSwitch);
-
-        curNode = newNode;
-    }
-
-    /**
-     * Processes application tree on the bases of requested ydt node.
-     *
-     * @param opType           user requested operation type
-     * @param childNode        requested ydt node
-     * @param augmentingSchema schema of last augmenting node
-     * @param contextSwitch    true, for module node call; false for modules
-     *                         sub-node calls
-     */
-    private void processAppTree(
-            YdtContextOperationType opType, YdtNode childNode,
-            YangSchemaNode augmentingSchema, boolean contextSwitch) {
-
-        if (curNode == rootNode) {
-            augGenMethodSet = new HashSet<>();
-        }
-
-        if (opType == null) {
-            opType = curNode.getYdtContextOperationType();
-        } else {
-            // Updating operation type for parent nodes
-            appCurNode.updateAppOperationType(opType);
-        }
-
-        /*
-         * This is to avoid multiple entries of single augmented target.
-         */
-        if (augmentingSchema != null) {
-            if (!augGenMethodSet.add(((YangAugment) augmentingSchema)
-                                             .getSetterMethodName())) {
-                return;
-            }
-        }
-
-        /*
-         * Create entry of module node in ydt app tree.
-         * Or if context switch happened then also add entry for same
-         * augmented ydt node in the ydt application tree.
-         */
-        if (curNode.equals(rootNode) || contextSwitch) {
-            addChildInAppTree(childNode, augmentingSchema, opType,
-                              contextSwitch);
-
-            // Setting app tree node operation.
-            appCurNode.setOperationType(getAppOpTypeFromYdtOpType(opType));
-        }
-
-        // Updating the delete operation list in app tree.
-        if (opType == DELETE || opType == REMOVE) {
-            appCurNode.addDeleteNode(childNode);
-        }
-    }
-
-
-    /**
-     * Adds a last child to YANG app data tree.this method is to be used
-     * internally by other ydt interfaces.
-     *
-     * @param childNode       node to be added in tree
-     * @param schemaNode      last augmenting module node
-     * @param childOpType     operation type of node
-     * @param isContextSwitch true, for module node call; false for modules
-     *                        sub-node calls
-     */
-    private void addChildInAppTree(YdtNode childNode,
-                                   YangSchemaNode schemaNode,
-                                   YdtContextOperationType childOpType,
-                                   boolean isContextSwitch) {
-
-        YdtAppNodeOperationType opType;
-
-        DefaultYdtAppContext appContext = getAppContext(isContextSwitch);
-
-        // Add context switched child in ydt App tree.
-        appCurNode.addChild(appContext);
-
-        appCurNode = appContext;
-
-        opType = getAppOpTypeFromYdtOpType(childOpType);
-
-        appCurNode.setAppData(childNode, schemaNode);
-
-        appCurNode.setOperationType(opType);
-
-        childNode.setAppContextSwitch();
-    }
-
-    @Override
-    public void addLeaf(String name, String namespace, String value)
-            throws IllegalArgumentException {
-        addLeaf(name, namespace, value, null, UNKNOWN);
-    }
-
-    @Override
-    public void addLeaf(String name, String namespace, Set<String> valueSet)
-            throws IllegalArgumentException {
-        addLeaf(name, namespace, null, valueSet, MULTI_INSTANCE_LEAF);
-    }
-
-    @Override
-    public void addNode(String name, String namespace)
-            throws IllegalArgumentException {
-        addChild(name, namespace, RequestedCardinality.UNKNOWN,
-                null, RequestedCallType.EMPTY_CONTAINER);
-    }
-
-
-    /**
-     * Adds a last leaf with list of values/single value to YANG data tree.
-     * This method is used by all protocols which knows the nature
-     * (single/multiple) or not.
-     * Value of leaf can be null which indicates selection node in get
-     * operation.
-     *
-     * @param name        name of child to be added
-     * @param namespace   namespace of child to be added, if it's
-     *                    null, parent's
-     *                    namespace will be applied to child
-     * @param value       value of the child
-     * @param valueSet    list of value of the child
-     * @param cardinality type of YANG data tree node operation
-     * @throws IllegalArgumentException when method has been passed an illegal
-     *                                  or inappropriate argument.
-     */
-    private void addLeaf(String name, String namespace, String value,
-                         Set<String> valueSet,
-                         RequestedCardinality cardinality)
-            throws IllegalArgumentException {
-        try {
-            addChild(name, namespace, cardinality, null, LEAF);
-
-            // After successful addition of child node updating the values in same.
-            if (value != null) {
-                curNode.addValue(value);
-            } else if (valueSet != null) {
-                curNode.addValueSet(valueSet);
-            }
-        } catch (YdtException e) {
-            freeRestResources(rootNode);
-            throw new IllegalArgumentException(e.getLocalizedMessage());
-        }
-    }
-
-    @Override
-    public void traverseToParent() throws IllegalStateException {
-        // If traverse back to parent for logical root node comes
-        if (curNode.equals(rootNode)) {
-            freeRestResources(rootNode);
-            throw new IllegalStateException(E_INVOKE_PARENT);
-        }
-
-        try {
-
-            // If node is of multiInstanceNode type then check key uniqueness.
-            if (curNode.getYdtType() == MULTI_INSTANCE_NODE) {
-                List<YdtContext> keyList = ((YdtMultiInstanceNode) curNode).getKeyNodeList();
-                if (keyList == null || keyList.isEmpty()) {
-                    curNode.createKeyNodeList();
-                }
-            }
-
-            /*
-             * Check application switch for curNode if set,
-             * then traverseToParent in YDT application tree.
-             */
-            if (curNode.getParent().equals(rootNode) ||
-                    curNode.getAppContextSwitch()) {
-                traverseToAppTreeParent();
-            }
-
-            /*
-             * Validate all multi Instance inside current context,
-             * This is not valid for leaf and leaf-list node.
-             */
-            if (curNode instanceof YdtMultiInstanceNode ||
-                    curNode instanceof YdtSingleInstanceNode) {
-                curNode.validateMultiInstanceNode();
-            }
-
-            curNode = curNode.getParent();
-        } catch (YdtException e) {
-            freeRestResources(rootNode);
-            throw new IllegalStateException(e.getLocalizedMessage());
-        }
-    }
-
-    /**
-     * Traverses up in YANG application tree to the parent node,
-     * This will be used when Ydt current context switch flag is set.
-     */
-    private void traverseToAppTreeParent() {
-        appCurNode = appCurNode.getParent();
-    }
-
-    @Override
-    public YdtExtendedContext getCurNode() {
-        return curNode;
-    }
-
-    @Override
-    public void setDefaultEditOperationType(
-            YdtContextOperationType opType) {
-        ydtDefaultOpType = opType;
-    }
-
-    @Override
-    public YdtExtendedContext getRootNode() {
-        return rootNode;
-    }
-
-    @Override
-    public YmsOperationType getYmsOperationType() {
-        return ymsOperationType;
-    }
-
-    @Override
-    public void addMultiInstanceChild(String name, String namespace,
-                                      List<String> keysValueList,
-                                      YdtContextOperationType opType)
-            throws IllegalArgumentException {
-
-        addChild(name, namespace, UNKNOWN, opType,
-                 RequestedCallType.MULTI_INSTANCE);
-        int inputCount = keysValueList.size();
-
-        try {
-            if (curNode.getYdtType() == MULTI_INSTANCE_LEAF_VALUE_NODE) {
-
-            /*
-             * Calculating the current leaf-list node array size by adding
-             * existing elements count and new supplied elements by user for
-             * the same.
-             */
-                // TODO instance count for leaf list need to be handled.
-//            if (curNode.getValueSet().size() + inputCount > expectedCount) {
-//                curNode.errorHandler(
-//                        errorMsg(FMT_MANY_INS, name, expectedCount), rootNode);
-//            }
-
-            /*
-             * After successful addition of child node updating
-             * the values in same.
-             */
-                for (String value : keysValueList) {
-                    curNode.addValue(value);
-                }
-            } else if (curNode.getYdtType() == MULTI_INSTANCE_NODE) {
-
-                YangList yangListHolder = (YangList) curNode.getYangSchemaNode();
-                List<String> schemaKeyList = yangListHolder.getKeyList();
-                int expectedCount = schemaKeyList.size();
-                checkElementCount(name, expectedCount, inputCount);
-
-                //After validation adding the key nodes under the list node.
-                Iterator<String> sklIter = schemaKeyList.iterator();
-                Iterator<String> kvlIter = keysValueList.iterator();
-                String keyEleName;
-
-                while (kvlIter.hasNext()) {
-                    String value = kvlIter.next();
-                    keyEleName = sklIter.next();
-                    addLeaf(keyEleName, namespace, value);
-                    if (kvlIter.hasNext()) {
-                        traverseToParentWithoutValidation();
-                    }
-                }
-
-                curNode = curNode.getParent();
-                curNode.createKeyNodeList();
-            }
-        } catch (YdtException e) {
-            freeRestResources(rootNode);
-            throw new IllegalArgumentException(e.getLocalizedMessage());
-        }
-    }
-
-    /**
-     * Adds a last child to YANG data tree, this method is to be used by
-     * YANG object builder sub-calls internally.
-     *
-     * @param opType type of requested operation over a node
-     * @return returns added ydt node in YDT tree
-     */
-    private YdtNode addExtendedChildNode(YdtContextOperationType opType,
-                                         YangSchemaNode schemaNode) {
-
-        YdtNode childNode = getYangSchemaNodeTypeSpecificContext(schemaNode);
-
-        childNode.setYangSchemaNode(schemaNode);
-
-        childNode.setYdtContextOperationType(opType);
-
-        curNode.addChild(childNode, true);
-
-        curNode = childNode;
-
-        return childNode;
-    }
-
-    @Override
-    public YdtExtendedContext addChild(YdtContextOperationType opType,
-                                       YangSchemaNode schemaNode) {
-        return addExtendedChildNode(opType, schemaNode);
-    }
-
-    @Override
-    public YdtExtendedContext addLeafList(Set<String> valueSet,
-                                          YangSchemaNode schemaNode) {
-        YdtNode childNode = addExtendedChildNode(null, schemaNode);
-
-        /*
-         * After successful addition of child node updating the values in
-         * valueSet.
-         */
-        childNode.addValueSetWithoutValidation(valueSet);
-        return childNode;
-    }
-
-    @Override
-    public YdtExtendedContext addLeaf(String value, YangSchemaNode schemaNode) {
-
-        YdtNode childNode = addExtendedChildNode(null, schemaNode);
-
-        // After successful addition of child node updating the values in same.
-        childNode.addValueWithoutValidation(value, ((YangLeaf) schemaNode)
-                .isKeyLeaf());
-        return childNode;
-    }
-
-    @Override
-    public void traverseToParentWithoutValidation()
-            throws IllegalStateException {
-        // If traverse back to parent for logical root node comes.
-        if (curNode.equals(rootNode)) {
-            freeRestResources(rootNode);
-            throw new IllegalStateException(E_INVOKE_PARENT);
-        }
-        curNode = curNode.getParent();
-    }
-
-    /**
-     * Returns the method name's set for an augmented target node in an
-     * application tree.
-     *
-     * @return augGenMethodSet set of method name's
-     */
-    public Set<String> getAugGenMethodSet() {
-        return augGenMethodSet;
-    }
-
-    /**
-     * Sets the method name's set for an augmented target node in an
-     * application tree.
-     *
-     * @param augGenMethodSet set of method name's
-     */
-    public void setAugGenMethodSet(Set<String> augGenMethodSet) {
-        this.augGenMethodSet = augGenMethodSet;
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YangResponseWorkBench.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YangResponseWorkBench.java
deleted file mode 100644
index 062fe77..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YangResponseWorkBench.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ydt.YdtResponse;
-import org.onosproject.yms.ydt.YmsOperationExecutionStatus;
-import org.onosproject.yms.ydt.YmsOperationType;
-
-public class YangResponseWorkBench implements YdtResponse {
-
-    /*
-     * YDT root node context.
-     */
-    private YdtContext rootNode;
-
-    /*
-     * YMS operation execution status.
-     */
-    private YmsOperationExecutionStatus status;
-
-    /*
-     * YMS operation type.
-     */
-    private YmsOperationType ymsOperationType;
-
-    /**
-     * Creates an instance of YangResponseWorkBench which is use to
-     * initialize rootNode and childNode.
-     *
-     * @param ydtContext root node context
-     * @param exeStatus  YMS operation execution status
-     * @param opType     YMS operation type
-     */
-    public YangResponseWorkBench(YdtContext ydtContext,
-                                 YmsOperationExecutionStatus exeStatus,
-                                 YmsOperationType opType) {
-        rootNode = ydtContext;
-        status = exeStatus;
-        ymsOperationType = opType;
-    }
-
-    @Override
-    public YmsOperationExecutionStatus getYmsOperationResult() {
-        return status;
-    }
-
-    @Override
-    public YdtContext getRootNode() {
-        return rootNode;
-    }
-
-    @Override
-    public YmsOperationType getYmsOperationType() {
-        return ymsOperationType;
-    }
-
-    /**
-     * Sets root node.
-     *
-     * @param rootNode root node
-     */
-    public void setRootNode(YdtContext rootNode) {
-        this.rootNode = rootNode;
-    }
-
-    /**
-     * Sets YMS operation execution status.
-     *
-     * @param status YMS operation execution status
-     */
-    public void setStatus(YmsOperationExecutionStatus status) {
-        this.status = status;
-    }
-
-    /**
-     * Sets YMS operation type.
-     *
-     * @param ymsOperationType YMS operation type
-     */
-    public void setYmsOperationType(YmsOperationType ymsOperationType) {
-        this.ymsOperationType = ymsOperationType;
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtAppContext.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtAppContext.java
deleted file mode 100644
index fa0d882..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtAppContext.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ydt.YdtContextOperationType;
-
-import java.util.List;
-
-/**
- * Abstraction of an entity which represents YANG application data tree context
- * information. This context information will be used by protocol to obtain
- * the information associated with YDT application node. This is used when
- * protocol is walking the application data tree in both visitor and listener
- * mechanism.
- */
-public interface YdtAppContext {
-
-    /**
-     * Returns the context of parent node.
-     *
-     * @return context of parent node
-     */
-    YdtAppContext getParent();
-
-    /**
-     * Sets the context of parent node.
-     *
-     * @param parent node
-     */
-    void setParent(YdtAppContext parent);
-
-    /**
-     * Returns the context of first child.
-     *
-     * @return context of first child
-     */
-    YdtAppContext getFirstChild();
-
-    /**
-     * Returns the context of last child.
-     *
-     * @return context of last child
-     */
-    YdtAppContext getLastChild();
-
-    /**
-     * Returns the context of next sibling.
-     *
-     * @return context of next sibling
-     */
-    YdtAppContext getNextSibling();
-
-    /**
-     * Sets the context of next sibling.
-     *
-     * @param nextSibling node
-     */
-    void setNextSibling(YdtAppContext nextSibling);
-
-    /**
-     * Returns the context of previous sibling.
-     *
-     * @return context of previous sibling
-     */
-    YdtAppContext getPreviousSibling();
-
-    /**
-     * Sets the context of previous sibling.
-     *
-     * @param preSibling node
-     */
-    void setPreviousSibling(YdtAppContext preSibling);
-
-    /**
-     * Returns the app tree operation type.
-     *
-     * @return app tree operation type
-     */
-    YdtAppNodeOperationType getOperationType();
-
-    /**
-     * Set the app tree operation type.
-     *
-     * @param opType app tree operation type
-     */
-    void setOperationType(YdtAppNodeOperationType opType);
-
-    /**
-     * Returns the list of nodes with operation type delete.
-     *
-     * @return list of nodes with operation type delete
-     */
-    List<YdtContext> getDeleteNodes();
-
-    /**
-     * Adds the ydt node with operation type delete in module delete node list.
-     *
-     * @param node ydt node with operation type delete/remove
-     */
-    void addDeleteNode(YdtNode node);
-
-    /**
-     * Returns application's root ydtContext.
-     *
-     * @return YdtContext of application root node
-     */
-    YdtContext getModuleContext();
-
-    /**
-     * Returns the YangSchemaNode of augmenting application.
-     *
-     * @return YangSchemaNode of augmenting application
-     */
-    YangSchemaNode getAugmentingSchemaNode();
-
-    /**
-     * Sets the YangSchemaNode of augmenting application root node.
-     *
-     * @param schemaNode YangSchemaNode of augmenting application module
-     */
-    void setAugmentingSchemaNode(YangSchemaNode schemaNode);
-
-    /**
-     * Adds a last child to ydt application data tree.
-     *
-     * @param newChild name of child to be added
-     */
-    void addChild(YdtAppContext newChild);
-
-    /**
-     * Updates the app tree operation type.
-     * <p>
-     * If earlier operation type was OTHER_EDIT and now operation type came as
-     * DELETE_ONLY or vice-versa, then update operation type to BOTH.
-     *
-     * @param opType ydt current context operation type
-     */
-    void updateAppOperationType(YdtContextOperationType opType);
-
-    /**
-     * Sets the application data for given request. If in requested parameters
-     * schemaNode is not null then appData will be set with
-     * augmentedSchemaData else with moduleSchemaData object.
-     *
-     * @param moduleNode module node of requested app
-     * @param schemaNode augmented schema node of requested context
-     */
-    void setAppData(YdtNode moduleNode, YangSchemaNode schemaNode);
-
-    /**
-     * Returns the app data for current context.
-     *
-     * @return app data
-     */
-    AppData getAppData();
-
-    /**
-     * Returns the yang schema for requested node.
-     *
-     * @return schema node
-     */
-    YangSchemaNode getYangSchemaNode();
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtAppNodeOperationType.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtAppNodeOperationType.java
deleted file mode 100644
index 15b80e2..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtAppNodeOperationType.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-/**
- * Represents type of YANG data tree node operation.
- */
-public enum YdtAppNodeOperationType {
-
-    /**
-     * Type of YANG application node operation for below action:
-     * The application containing this attribute has edit operation
-     * type as delete/remove in its complete ydtTree.
-     */
-    DELETE_ONLY,
-
-    /**
-     * Type of YANG application node operation for below action:
-     * The application containing this attribute has edit operation
-     * type other than delete/remove in its complete ydtTree.
-     */
-    OTHER_EDIT,
-
-    /**
-     * Type of YANG application node operation for below action:
-     * The application containing this attribute has edit operation
-     * type of combination of any edit operation type in its complete ydtTree.
-     */
-    BOTH
-}
-
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtConstants.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtConstants.java
deleted file mode 100644
index 8fcded1..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtConstants.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-/**
- * Represents common constant utility for YANG data tree.
- */
-final class YdtConstants {
-
-    //No instantiation.
-    private YdtConstants() {
-    }
-
-    /**
-     * Error formatting string for duplicate entries found in ydt.
-     */
-    public static final String FMT_DUP_ENTRY = "Duplicate entry with name %s.";
-
-    /**
-     * Returns the error string by filling the parameters in the given
-     * formatted error string.
-     *
-     * @param fmt    error format string
-     * @param params parameters to be filled in formatted string
-     * @return error string
-     */
-    public static String errorMsg(String fmt, Object... params) {
-        return String.format(fmt, params);
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedBuilder.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedBuilder.java
deleted file mode 100644
index 0844858..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedBuilder.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yms.ydt.YdtBuilder;
-import org.onosproject.yms.ydt.YdtContextOperationType;
-
-import java.util.Set;
-
-/**
- * Abstraction of an entity which represents extension of YDT builder
- * required by internal sub modules.
- */
-public interface YdtExtendedBuilder extends YdtBuilder {
-
-    /**
-     * Adds a last child to YANG data tree; this method is to be used by
-     * YANG object builder.
-     *
-     * @param yangSchemaNode schema node from YANG metadata
-     * @param opType         type of requested operation over a node
-     * @return YDT context
-     */
-    YdtExtendedContext addChild(YdtContextOperationType opType,
-                                YangSchemaNode yangSchemaNode);
-
-    /**
-     * Adds a last leaf list to YANG data tree; this method is to be used by
-     * YANG object builder.
-     *
-     * @param valueSet       list of value of the child
-     * @param yangSchemaNode schema node from YANG metadata
-     * @return YDT context
-     */
-    YdtExtendedContext addLeafList(Set<String> valueSet,
-                                   YangSchemaNode yangSchemaNode);
-
-    /**
-     * Adds a last leaf to YANG data tree; this method is to be used by
-     * YANG object builder.
-     *
-     * @param value          value of the child
-     * @param yangSchemaNode schema node from YANG metadata
-     * @return YDT context
-     */
-    YdtExtendedContext addLeaf(String value, YangSchemaNode yangSchemaNode);
-
-    /**
-     * Traverses up in YANG data tree to the parent node, it is to be used when
-     * protocol is using extended context type and wanted to traverse
-     * up the tree without doing any validation.
-     *
-     * @throws IllegalStateException when user request for traverse to logical
-     *                               root node parent
-     */
-    void traverseToParentWithoutValidation() throws IllegalStateException;
-
-    @Override
-    YdtExtendedContext getRootNode();
-
-    @Override
-    YdtExtendedContext getCurNode();
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedContext.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedContext.java
deleted file mode 100644
index 3462d40..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedContext.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ydt.YdtContextOperationType;
-
-/**
- * Abstraction of an entity which represents application related information
- * maintained in YDT.
- */
-public interface YdtExtendedContext extends YdtContext {
-
-    /**
-     * Returns the application stored information. Application type is used to
-     * identify application.
-     *
-     * @param appType application type
-     * @return application information
-     */
-    Object getAppInfo(AppType appType);
-
-    /**
-     * Sets application stored information. Application type is used to
-     * identify application.
-     *
-     * @param appType application type
-     * @param object  application information object
-     */
-    void addAppInfo(AppType appType, Object object);
-
-    /**
-     * Returns schema node from data model for curNode.
-     *
-     * @return yang schema node
-     */
-    YangSchemaNode getYangSchemaNode();
-
-    /**
-     * Returns YDT current extended context operation type.
-     *
-     * @return operation type
-     */
-    YdtContextOperationType getYdtContextOperationType();
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedListener.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedListener.java
deleted file mode 100644
index 4c55aa3..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedListener.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-
-import org.onosproject.yms.ydt.YdtListener;
-
-/**
- * Abstraction of an entity which provide call back methods which are called
- * by YDT extended walker while walking the YANG data tree.
- * <p>
- * This interface needs to be implemented by protocol implementing listener's
- * based call backs while YDT walk, and update application specific information
- * in data node.
- */
-public interface YdtExtendedListener extends YdtListener {
-
-    /**
-     * YANG data tree node's entry, it will be called during a node entry.
-     * <p>
-     * All the related information about the node can be obtain from the YDT
-     * context. Also it can be used to maintain / query application specific
-     * information.
-     *
-     * @param ydtExtendedContext YANG data tree context
-     */
-    void enterYdtNode(YdtExtendedContext ydtExtendedContext);
-
-    /**
-     * YANG data tree node's exit, it will be called during a node exit.
-     * <p>
-     * All the related information about the node can be obtain from the YDT
-     * context. Also it can be used to maintain / query application specific
-     * information.
-     *
-     * @param ydtExtendedContext YANG data tree context
-     */
-    void exitYdtNode(YdtExtendedContext ydtExtendedContext);
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedWalker.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedWalker.java
deleted file mode 100644
index 386b579..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedWalker.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yms.ydt.YdtWalker;
-
-/**
- * Abstraction of an entity which provides interfaces for YDT extended walker.
- */
-public interface YdtExtendedWalker extends YdtWalker {
-
-    /**
-     * Walks the YANG data tree. Protocols implements YDT listener service and
-     * walks YDT tree with input as implemented object.
-     * YDT walker provides call backs to implemented methods.
-     *
-     * @param ydtListener YDT listener implemented by the protocol
-     * @param rootNode    root node of YDT
-     */
-    void walk(YdtExtendedListener ydtListener, YdtExtendedContext rootNode);
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtLogicalNode.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtLogicalNode.java
deleted file mode 100644
index 1456887..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtLogicalNode.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-
-import static org.onosproject.yms.app.ydt.YdtConstants.FMT_DUP_ENTRY;
-import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg;
-import static org.onosproject.yms.ydt.YdtType.LOGICAL_ROOT_NODE;
-
-/**
- * Represents a logical YANG data tree node.
- */
-class YdtLogicalNode extends YdtNode {
-
-    private final String name;
-    private final String namespace;
-
-    /**
-     * Creates an instance of YANG logical node object.
-     *
-     * @param name      logical root name
-     * @param namespace YANG namespace
-     */
-    public YdtLogicalNode(String name, String namespace) {
-        super(LOGICAL_ROOT_NODE);
-        this.name = name;
-        this.namespace = namespace;
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    @Override
-    public String getNamespace() {
-        return namespace;
-    }
-
-    @Override
-    public String getModuleNameAsNameSpace() {
-        return namespace;
-    }
-
-    @Override
-    public void validDuplicateEntryProcessing() throws YdtException {
-        throw new YdtException(errorMsg(FMT_DUP_ENTRY, getName()));
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtMultiInstanceLeafNode.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtMultiInstanceLeafNode.java
deleted file mode 100644
index 39db56a..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtMultiInstanceLeafNode.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import com.google.common.collect.ImmutableSet;
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg;
-import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_LEAF_VALUE_NODE;
-
-/**
- * Represents YDT multi instance leaf node which can hold multiple values, it
- * is atomic element and doesn't have any child.
- */
-class YdtMultiInstanceLeafNode extends YdtNode {
-
-    // ydt formatted error string
-    private static final String FMT_DUP_ENTRY =
-            "Duplicate entry found under %s leaf-list node.";
-
-    /**
-     * Set of values.
-     */
-    private final Set<String> valueSet = new LinkedHashSet<>();
-
-    /**
-     * Creates a YANG multi instance leaf node.
-     *
-     * @param node schema of YDT multi instance node
-     */
-    YdtMultiInstanceLeafNode(YangSchemaNode node) {
-        super(MULTI_INSTANCE_LEAF_VALUE_NODE, node);
-    }
-
-    @Override
-    public Set<String> getValueSet() {
-        return ImmutableSet.copyOf(valueSet);
-    }
-
-    @Override
-    public void addValue(String value) throws YdtException {
-        // check the value against corresponding data-type.
-        //TODO validation need to be decided
-//        try {
-//            getYangSchemaNode().isValueValid(value);
-//        } catch (Exception e) {
-//            throw new YdtException(e.getLocalizedMessage());
-//        }
-        addValueToValueSet(value);
-    }
-
-    /**
-     * Adds value in the current node valueSet, after successful validation of
-     * the value.
-     *
-     * @param value value to be added
-     * @throws YdtException when the duplicate entry found in leaf-list node
-     */
-    private void addValueToValueSet(String value) throws YdtException {
-        if (!valueSet.add(value)) {
-            throw new YdtException(errorMsg(FMT_DUP_ENTRY, getName()));
-        }
-    }
-
-    @Override
-    public void addValueSet(Set valueSet) throws YdtException {
-        String value;
-        // Check the value against corresponding data-type.
-        for (Object aValueSet : valueSet) {
-            value = String.valueOf(aValueSet);
-            //TODO validation need to be decided
-//            try {
-//                value = String.valueOf(aValueSet);
-//                getYangSchemaNode().isValueValid(value);
-//            } catch (DataModelException e) {
-//                throw new YdtException(e.getLocalizedMessage());
-//            }
-            addValueToValueSet(value);
-        }
-    }
-
-    @Override
-    public void addValueWithoutValidation(String value, boolean isKeyLeaf) {
-        valueSet.add(value);
-    }
-
-    @Override
-    public void addValueSetWithoutValidation(Set valueSet) {
-        this.valueSet.clear();
-        this.valueSet.addAll(valueSet);
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtMultiInstanceNode.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtMultiInstanceNode.java
deleted file mode 100644
index 1691d2a..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtMultiInstanceNode.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import com.google.common.collect.ImmutableList;
-import org.onosproject.yangutils.datamodel.YangList;
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier;
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg;
-import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_NODE;
-
-
-/**
- * Represents a multi instance node in YANG data tree.
- */
-public class YdtMultiInstanceNode extends YdtNode {
-
-    // YDT formatted error string
-    private static final String FMT_MISSING_KEY =
-            "%s is missing some of the keys of %s.";
-    private static final String FMT_UNI_KEY =
-            "Some of the key elements are not unique in %s.";
-    private static final String FMT_MANY_INS =
-            "Too many instances of %s. Expected maximum instances %d.";
-    private static final String FMT_FEW_INS =
-            "Too few instances of %s. Expected minimum instances %d.";
-
-    /*
-     * Reference for list of key element's ydtContext.
-     */
-    private List<YdtContext> keyNodeList = new ArrayList<>();
-
-    /*
-     * Reference for composite key string for multi Instance Node..
-     */
-    private String compositeKey;
-
-    /**
-     * Creates a YANG multi instance node object.
-     *
-     * @param node schema of YDT multi instance node .
-     */
-    YdtMultiInstanceNode(YangSchemaNode node) {
-        super(MULTI_INSTANCE_NODE, node);
-    }
-
-    /**
-     * Returns the composite key string for current multi instance node.
-     *
-     * @return composite key string
-     */
-    private String getCompositeKey() {
-        return compositeKey;
-    }
-
-    /**
-     * Returns the list of key element's ydtContext.
-     *
-     * @return list of key element's ydtContext
-     */
-    public List<YdtContext> getKeyNodeList() {
-        return ImmutableList.copyOf(keyNodeList);
-    }
-
-    @Override
-    public void createKeyNodeList() throws YdtException {
-        YangList yangListHolder = (YangList) getYangSchemaNode();
-        List<String> schemaKeyList = yangListHolder.getKeyList();
-
-        /*
-         * If key element not defined in schema or config is false then
-         * return no need to do create key list.
-         */
-        if (schemaKeyList == null || !yangListHolder.isConfig()) {
-            return;
-        }
-
-        StringBuilder ksb = new StringBuilder();
-
-        // Iterator for schema key name list.
-        Iterator<String> sklItr = schemaKeyList.iterator();
-
-        List<YdtContext> nodeList = new ArrayList<>();
-
-        YangSchemaNodeIdentifier id = new YangSchemaNodeIdentifier();
-        id.setNameSpace(new NameSpace(getNamespace()));
-        // This loop should run while schema key list is not finished
-        while (sklItr.hasNext()) {
-            String name = sklItr.next();
-            id.setName(name);
-            YdtNode<YdtSingleInstanceLeafNode> collidingChild =
-                    (YdtNode<YdtSingleInstanceLeafNode>) ydtNodeMap.get(id);
-
-            if (collidingChild == null) {
-                throw new YdtException(
-                        errorMsg(FMT_MISSING_KEY, yangListHolder.getParent()
-                                .getName(), yangListHolder.getName()));
-            }
-
-            /*
-             * Preparing composite key string by concatenating values of
-             * all the key leaf.
-             */
-            ksb.append(collidingChild.getValue());
-            nodeList.add(collidingChild);
-        }
-        //Setting te key object in List.
-        keyNodeList = nodeList;
-        compositeKey = ksb.toString();
-    }
-
-    /**
-     * Validates the given list of instances by verifying the allowed
-     * instance count and key element uniqueness.
-     *
-     * @param keyStringSet set to validate the key element uniqueness
-     * @param list     list of instance's of same list
-     * @throws YdtException when user requested multi instance node instance's
-     *                      count doesn't fit into the allowed instance's limit
-     *                      or doesn't have unique key's
-     */
-    public void validateInstances(Set keyStringSet, List list)
-            throws YdtException {
-
-        // Clearing the set.
-        keyStringSet.clear();
-
-        /*
-         * Storing the number of multiInstance node for number
-         * if instance validation.
-         */
-        int instanceCount = list.size();
-
-        YangList listSchema = (YangList) ((YdtMultiInstanceNode) list.get(0))
-                .getYangSchemaNode();
-        validateInstanceCount(instanceCount, listSchema);
-        if (listSchema.isConfig() && instanceCount > 1) {
-
-            /*
-             * Iterating over values in ydtNodeList of
-             * multiInstanceNode and compare the key string.
-             */
-            for (YdtNode ydtNode : (List<YdtNode<YdtMultiInstanceNode>>) list) {
-                if (!keyStringSet.add(((YdtMultiInstanceNode) ydtNode)
-                                              .getCompositeKey())) {
-                    throw new YdtException(
-                            errorMsg(FMT_UNI_KEY, ydtNode.getName()));
-                }
-            }
-        }
-    }
-
-    /**
-     * Validates the instance count for given list entry.
-     *
-     * @param instanceCount actual count
-     * @param list          list entry for which instance count need
-     *                      to be validated
-     * @throws YdtException when user requested multi instance node instance's
-     *                      count doesn't fit into the allowed instance's limit
-     */
-    private void validateInstanceCount(int instanceCount, YangList list)
-            throws YdtException {
-
-        if (list.getMinElements() != null) {
-            int minElement = list.getMinElements().getMinElement();
-            if (instanceCount < minElement) {
-                throw new YdtException(errorMsg(FMT_FEW_INS, list.getName(),
-                                                minElement));
-            }
-        }
-
-        if (list.getMaxElements() != null) {
-            int maxElement = list.getMaxElements().getMaxElement();
-            if (instanceCount > maxElement) {
-                throw new YdtException(errorMsg(FMT_MANY_INS, list.getName(),
-                                                maxElement));
-            }
-        }
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtNode.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtNode.java
deleted file mode 100644
index 41d86e8..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtNode.java
+++ /dev/null
@@ -1,639 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yangutils.datamodel.YangSchemaNodeContextInfo;
-import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier;
-import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ydt.YdtContextOperationType;
-import org.onosproject.yms.ydt.YdtExtendedInfoType;
-import org.onosproject.yms.ydt.YdtType;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg;
-
-/**
- * Represents implementation of interfaces to build and obtain YANG data tree
- * which is data (sub)instance representation, abstract of protocol.
- */
-public abstract class YdtNode<T> implements YdtExtendedContext, Cloneable {
-
-    // YDT formatted error string
-    private static final String FMT_NON_LIST_STR =
-            "List of key cannot be created for leaf and leaf-list %s node.";
-    private static final String FMT_VAL_N =
-            "Value cannot be set in non leaf %s node.";
-    private static final String FMT_VAL_NS =
-            "ValueSet cannot be set in non leaf-list %s node.";
-    private static final String FMT_VAL_IN =
-            "Value cannot be invoke from non leaf %s node.";
-    private static final String FMT_VAL_INS =
-            "ValueSet cannot be invoke from non leaf-list %s node";
-
-    // YDT error string
-    private static final String E_EXIST = "Node is already part of a tree";
-    private static final String E_ATOMIC =
-            "Child to be added is not atomic, it already has a child";
-    private static final String E_SIB =
-            "Child to be added is not atomic, it already has a next sibling";
-    private static final String E_PRE =
-            "Child to be added is not atomic, it already has a previous " +
-                    "sibling";
-    private static final String E_SUPPORT = "Requested node type not supported";
-
-    /*
-     * Parent reference.
-     */
-    private YdtNode parent;
-
-    /*
-     * First child reference.
-     */
-    private YdtNode child;
-
-    /*
-     * Next sibling reference.
-     */
-    private YdtNode nextSibling;
-
-    /*
-     * Previous sibling reference.
-     */
-    private YdtNode previousSibling;
-
-    /*
-     * Last child reference.
-     */
-    private YdtNode lastChild;
-
-    /*
-     * Type of node.
-     */
-    private final YdtType ydtType;
-
-    /*
-     * Flag to keep the track of context switch,
-     * if set then traverse back to parent in YDT app tree else no need.
-     */
-    private boolean isContextSwitch;
-
-    /*
-     * YDT extended information.
-     */
-    private T ydtExtendedInfo;
-
-    /*
-     * YDT extended information type.
-     */
-    private YdtExtendedInfoType ydtExtendedInfoType;
-
-    /*
-     * Ydt map to keep the track of node added under current parent node.
-     */
-    final Map<YangSchemaNodeIdentifier, YdtNode<T>> ydtNodeMap =
-            new HashMap<>();
-
-    /*
-     * Ydt map to keep the track of multi instance node added under current
-     * parent node.
-     */
-    private final Map<YangSchemaNodeIdentifier,
-            List<YdtNode<YdtMultiInstanceNode>>> ydtMultiInsMap =
-            new HashMap<>();
-
-    /*
-     * Reference for data-model schema node.
-     */
-    private YangSchemaNode yangSchemaNode;
-
-    /*
-     * Reference for ydt node operation type.
-     */
-    private YdtContextOperationType ydtContextOperationType;
-
-    /*
-     * Ydt map to keep the track of application information object
-     * with respective type.
-     */
-    private final Map<AppType, Object> ydtAppInfoMap = new HashMap<>();
-
-    private YdtContext clonedNode;
-
-    /**
-     * Creates a specific type of node.
-     *
-     * @param type of YDT node
-     * @param node schema node
-     */
-    YdtNode(YdtType type, YangSchemaNode node) {
-        ydtType = type;
-        yangSchemaNode = node;
-    }
-
-    /**
-     * Creates a specific type of node.
-     *
-     * @param type of YDT node
-     */
-    YdtNode(YdtType type) {
-        ydtType = type;
-    }
-
-    /**
-     * Returns the cloned ydt node.
-     *
-     * @return clonedNode cloned ydt node
-     */
-    public YdtContext getClonedNode() {
-        return clonedNode;
-    }
-
-    /**
-     * Sets the cloned node.
-     *
-     * @param clonedNode cloned ydt node
-     */
-    public void setClonedNode(YdtContext clonedNode) {
-        this.clonedNode = clonedNode;
-    }
-
-    @Override
-    public String getName() {
-        return yangSchemaNode.getName();
-    }
-
-    @Override
-    public String getNamespace() {
-        return yangSchemaNode.getNameSpace().getModuleNamespace();
-    }
-
-    @Override
-    public String getModuleNameAsNameSpace() {
-        return yangSchemaNode.getNameSpace().getModuleName();
-    }
-
-    @Override
-    public <T> T getYdtContextExtendedInfo() {
-        return (T) ydtExtendedInfo;
-    }
-
-    @Override
-    public YdtExtendedInfoType getYdtExtendedInfoType() {
-        return ydtExtendedInfoType;
-    }
-
-    @Override
-    public YdtType getYdtType() {
-        return ydtType;
-    }
-
-    @Override
-    public YdtNode getParent() {
-        return parent;
-    }
-
-    @Override
-    public YdtNode getFirstChild() {
-        return child;
-    }
-
-    @Override
-    public YdtNode getNextSibling() {
-        return nextSibling;
-    }
-
-    public YangSchemaNode getYangSchemaNode() {
-        return yangSchemaNode;
-    }
-
-    @Override
-    public YdtNode getLastChild() {
-        return lastChild;
-    }
-
-    @Override
-    public Object getAppInfo(AppType appType) {
-        return ydtAppInfoMap.get(appType);
-    }
-
-    @Override
-    public void addAppInfo(AppType appType, Object object) {
-        ydtAppInfoMap.put(appType, object);
-    }
-
-    /**
-     * Returns child schema node context information. It is used by YMS to
-     * obtain the child schema corresponding to data node identifier.
-     *
-     * @param id represents a identifier of YANG data tree node
-     * @return YANG data node context information
-     * @throws YdtException when user requested node schema doesn't exist
-     */
-    public YangSchemaNodeContextInfo getSchemaNodeContextInfo(
-            YangSchemaNodeIdentifier id) throws YdtException {
-        try {
-            return getYangSchemaNode().getChildSchema(id);
-        } catch (DataModelException e) {
-            throw new YdtException(e.getLocalizedMessage());
-        }
-    }
-
-    /**
-     * Adds the given value to the non single instance leaf node.
-     * <p>
-     * This default implementation throws an exception stating that
-     * the value cannot be added. Subclasses may override this method
-     * to provide the correct behavior for their specific implementation.
-     *
-     * @param value value in a single instance node
-     * @throws YdtException when fails to add value for non single instance
-     *                      leaf node
-     */
-    public void addValue(String value) throws YdtException {
-        throw new YdtException(errorMsg(FMT_VAL_N, getName()));
-    }
-
-    /**
-     * Creates the list of key element's of multi instance node.
-     * This will not be applicable on leaf and leaf-list node.
-     *
-     * @throws YdtException when user requested multi instance node is missing
-     *                      any of the key element in request or requested
-     *                      node is of type other then multi instance node
-     */
-    public void createKeyNodeList() throws YdtException {
-        throw new YdtException(errorMsg(FMT_NON_LIST_STR, getName()));
-    }
-
-    /**
-     * Adds the given value to the non single instance leaf node.
-     * <p>
-     * This default implementation throws an exception stating that
-     * the value cannot be added. Subclasses may override this method
-     * to provide the correct behavior for their specific implementation.
-     * This will be applicable in case of call from SBI so no need
-     * to validate the value.
-     *
-     * @param value     value in a single instance leaf node
-     * @param isKeyLeaf true, for key leaf; false non key leaf
-     * @throws YdtException when fails to add value for non single instance
-     *                      leaf node
-     */
-    public void addValueWithoutValidation(String value, boolean isKeyLeaf)
-            throws YdtException {
-        throw new YdtException(errorMsg(FMT_VAL_N, getName()));
-    }
-
-    /**
-     * Adds the given valueSet to the non multi instance leaf node.
-     * <p>
-     * This default implementation throws an exception stating that
-     * the value cannot be added. Subclasses may override this method
-     * to provide the correct behavior for their specific implementation.
-     *
-     * @param valueSet valueSet in a multi instance leaf node
-     * @throws YdtException when fails to add value set for non multi instance
-     *                      leaf node
-     */
-    public void addValueSet(Set<String> valueSet) throws YdtException {
-        throw new YdtException(errorMsg(FMT_VAL_NS, getName()));
-    }
-
-    /**
-     * Adds the given valueSet to the non multi instance leaf node.
-     * <p>
-     * This default implementation throws an exception stating that
-     * the value cannot be added. Subclasses may override this method
-     * to provide the correct behavior for their specific implementation.
-     * This will be applicable in case of call from SBI so no need
-     * to validate the value.
-     *
-     * @param valueSet valueSet in a multi instance leaf node
-     * @throws YdtException when fails to add value set for non multi instance
-     *                      leaf node
-     */
-    public void addValueSetWithoutValidation(Set<String> valueSet)
-            throws YdtException {
-        throw new YdtException(errorMsg(FMT_VAL_NS, getName()));
-    }
-
-    /**
-     * Validates requested node allowed to have duplicate entry or not.
-     * <p>
-     * This default implementation throws an exception stating that
-     * the duplicate entry found. Subclasses may override this method
-     * to provide the correct behavior for their specific implementation.
-     *
-     * @throws YdtException when fails to process valid duplicate entry in YDT
-     */
-    void validDuplicateEntryProcessing() throws YdtException {
-    }
-
-    /**
-     * Returns already existing YdtNode in Ydt tree with same nodeIdentifier.
-     *
-     * @param id represents a identifier of YANG data tree node
-     * @return YDT node
-     * @throws YdtException when user requested node already part of YDT tree.
-     */
-    public YdtNode getCollidingChild(YangSchemaNodeIdentifier id)
-            throws YdtException {
-
-        // Find the key in YDT map for getting the colliding node.
-        YdtNode collidingChild = ydtNodeMap.get(id);
-
-        /*
-         * If colliding child exist then process colliding node in respective
-         * YDT node type.
-         */
-        if (collidingChild != null) {
-            collidingChild.validDuplicateEntryProcessing();
-            return collidingChild;
-        }
-
-        return null;
-    }
-
-    /**
-     * Sets the parent of node.
-     *
-     * @param parent node
-     */
-    public void setParent(YdtNode parent) {
-        this.parent = parent;
-    }
-
-    /**
-     * Sets the first instance of a child node.
-     *
-     * @param child is only child to be set
-     */
-    public void setChild(YdtNode child) {
-        this.child = child;
-    }
-
-    /**
-     * Sets the next sibling of node.
-     *
-     * @param sibling YANG node
-     */
-    public void setNextSibling(YdtNode sibling) {
-        nextSibling = sibling;
-    }
-
-    /**
-     * Returns the previous sibling of a node.
-     *
-     * @return previous sibling of a node
-     */
-    public YdtNode getPreviousSibling() {
-        return previousSibling;
-    }
-
-    /**
-     * Sets the previous sibling.
-     *
-     * @param previousSibling points to predecessor sibling
-     */
-    public void setPreviousSibling(YdtNode previousSibling) {
-        this.previousSibling = previousSibling;
-    }
-
-    @Override
-    public String getValue() throws YdtException {
-        throw new YdtException(errorMsg(FMT_VAL_IN, getName()));
-    }
-
-    @Override
-    public Set<String> getValueSet() throws YdtException {
-        throw new YdtException(errorMsg(FMT_VAL_INS, getName()));
-    }
-
-    /**
-     * Sets the data-model node reference for of a given node.
-     *
-     * @param yangSchemaNode YANG data node
-     */
-    public void setYangSchemaNode(YangSchemaNode yangSchemaNode) {
-        this.yangSchemaNode = yangSchemaNode;
-    }
-
-    /**
-     * Sets the last instance of a child node.
-     *
-     * @param child is last child to be set
-     */
-    public void setLastChild(YdtNode child) {
-        lastChild = child;
-    }
-
-
-    /**
-     * Adds a child node.
-     * The children sibling list will be sorted based on node
-     * type. This will add single child or sub-tree based on isAtomic flag.
-     *
-     * @param newChild refers to a new child to be added
-     * @param isAtomic boolean flag to maintain atomicity of the current node
-     * @throws YdtException in case of violation of any YDT rule
-     */
-    public void addChild(YdtContext newChild, boolean isAtomic)
-            throws YdtException {
-
-        if (!(newChild instanceof YdtNode)) {
-            throw new YdtException(errorMsg(E_SUPPORT));
-        }
-
-        YdtNode node = (YdtNode) newChild;
-
-        if (node.getParent() == null) {
-            node.setParent(this);
-        } else if (!node.getParent().equals(this)) {
-            throw new YdtException(E_EXIST);
-        }
-
-        if (node.getFirstChild() != null && isAtomic) {
-            throw new YdtException(E_ATOMIC);
-        }
-
-        if (node.getNextSibling() != null) {
-            throw new YdtException(E_SIB);
-        }
-
-        if (node.getPreviousSibling() != null) {
-            throw new YdtException(E_PRE);
-        }
-
-        // If new node needs to be added as first child.
-        if (getFirstChild() == null) {
-            setChild(node);
-            setLastChild(node);
-            return;
-        }
-
-        // If new node needs to be added as last child.
-        YdtNode curNode = getLastChild();
-        curNode.setNextSibling(node);
-        node.setPreviousSibling(curNode);
-        setLastChild(node);
-    }
-
-    @Override
-    public YdtContextOperationType getYdtContextOperationType() {
-        return ydtContextOperationType;
-    }
-
-    /**
-     * Sets type of yang data tree node operation.
-     *
-     * @param opType type of yang data tree node operation
-     */
-    public void setYdtContextOperationType(YdtContextOperationType opType) {
-        ydtContextOperationType = opType;
-    }
-
-    /**
-     * Updates ydt maps of current context parent node.
-     *
-     * @param node ydt node for which map need to be updated
-     */
-    void updateYdtMap(YdtNode node) {
-
-        YangSchemaNodeIdentifier id = node.getYangSchemaNode()
-                .getYangSchemaNodeIdentifier();
-        /*
-         * If node to be added is of type multi instance node(list) then multi
-         * instance node to be updated
-         */
-        if (node.getYdtType() == YdtType.MULTI_INSTANCE_NODE) {
-            updateMultiInsMap(id, node);
-        }
-
-        /*
-         * If entry for multi instance node is already there with same id then
-         * existing entry will be overwritten by the new entry.
-         */
-        ydtNodeMap.put(id, node);
-    }
-
-    /**
-     * Updates ydt multi instance map of current context parent node.
-     *
-     * @param id   object node identifier
-     * @param node ydt node for which map need to be updated
-     */
-    private void updateMultiInsMap(YangSchemaNodeIdentifier id, YdtNode node) {
-
-        List<YdtNode<YdtMultiInstanceNode>> list = ydtMultiInsMap.get(id);
-        if (list == null) {
-            list = new ArrayList<>();
-            ydtMultiInsMap.put(id, list);
-        }
-        list.add(node);
-    }
-
-    /**
-     * Returns the flag for node if context switch.
-     *
-     * @return isContextSwitch flag of a node
-     */
-    public boolean getAppContextSwitch() {
-        return isContextSwitch;
-    }
-
-    /**
-     * Sets the flag to keep the track of context switch.
-     * If it is set then when YDT get traverToParent then
-     * traverse back to parent in YDT application tree.
-     */
-    public void setAppContextSwitch() {
-        isContextSwitch = true;
-    }
-
-    /**
-     * Validates all multi Instance nodes inside current context.
-     *
-     * @throws YdtException when fails to validate multi instance node
-     */
-    public void validateMultiInstanceNode() throws YdtException {
-
-        // Set for checking whether input string is unique or not.
-        Set<String> keyStringSet = new HashSet<>();
-
-        if (ydtMultiInsMap.size() != 0) {
-            /*
-             * Iterating over values in map and find multi instance node list
-             * only.
-             */
-            for (List<YdtNode<YdtMultiInstanceNode>> ydtNodeList :
-                    ydtMultiInsMap.values()) {
-                try {
-                    ydtNodeList.get(0).validateInstances(keyStringSet,
-                                                         ydtNodeList);
-                } catch (YdtException e) {
-                    throw new YdtException(e.getLocalizedMessage());
-                }
-            }
-        }
-    }
-
-    /**
-     * Validates the given list of instances by verifying the allowed
-     * instance count and key element uniqueness.
-     * <p>
-     * This default implementation do nothing if requested node is of type
-     * other then multiInstanceNode. Subclasses may override this method
-     * to provide the correct behavior for their specific implementation.
-     *
-     * @param keyStringSet set to validate the key element uniqueness
-     * @param ydtNodeList  list of instance's of same list
-     * @throws YdtException when user requested multi instance node instance's
-     *                      count doesn't fit into the allowed instance's limit
-     *                      or doesn't have unique key's
-     */
-    void validateInstances(Set<String> keyStringSet,
-                           List<YdtNode<YdtMultiInstanceNode>>
-                                   ydtNodeList) throws YdtException {
-
-    }
-
-    /**
-     * Clones the current node contents and create a new node.
-     *
-     * @return cloned node
-     * @throws CloneNotSupportedException clone is not supported
-     *                                    by the referred node
-     */
-    public YdtNode clone() throws CloneNotSupportedException {
-        YdtNode clonedNode = (YdtNode) super.clone();
-        clonedNode.setPreviousSibling(null);
-        clonedNode.setNextSibling(null);
-        clonedNode.setParent(null);
-        clonedNode.setChild(null);
-        clonedNode.setLastChild(null);
-        return clonedNode;
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtNodeFactory.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtNodeFactory.java
deleted file mode 100644
index 9101c97..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtNodeFactory.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yangutils.datamodel.YangSchemaNodeType;
-import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-
-import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_MULTI_INSTANCE_LEAF_NODE;
-import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_MULTI_INSTANCE_NODE;
-import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_SINGLE_INSTANCE_LEAF_NODE;
-import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_SINGLE_INSTANCE_NODE;
-import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg;
-
-/**
- * Represents an YANG node factory to create different types of YANG data tree
- * node.
- */
-final class YdtNodeFactory {
-
-    // YDT formatted error string
-    private static final String FMT_NOT_EXIST =
-            "Schema node with name %s doesn't exist.";
-    //TODO need to handle later
-    private static final String E_MULTI_INS =
-            "Requested interface adds an instance of type list or " +
-                    "leaf-list node only.";
-
-    // No instantiation
-    private YdtNodeFactory() {
-    }
-
-    /**
-     * Returns a YANG data tree node for a given name, set of values and
-     * instance type.
-     *
-     * @param node        data node as per YANG schema metadata
-     * @param cardinality requested cardinality of node
-     * @param callType    identify the call type
-     * @return YANG data tree node
-     * @throws YdtException when user requested node type doesn't exist
-     */
-    static YdtNode getNode(
-            YangSchemaNode node, RequestedCardinality cardinality,
-            RequestedCallType callType) throws YdtException {
-
-        YdtNode newNode;
-        YangSchemaNodeType type = node.getYangSchemaNodeType();
-
-        try {
-            switch (cardinality) {
-
-                case UNKNOWN:
-                    /*
-                     * if requested node type is UNKNOWN, check corresponding
-                     * yang data node type and create respective type node.
-                     */
-                    newNode = getYangSchemaNodeTypeSpecificContext(node, type,
-                                                                   callType);
-                    break;
-
-                /*
-                 * if requested node type is specified and it exist as node of
-                 * some other type in data model then throw exception
-                 */
-                case SINGLE_INSTANCE:
-                    validateNodeType(node, type, YANG_SINGLE_INSTANCE_NODE);
-                    newNode = new YdtSingleInstanceNode(node);
-                    break;
-
-                case MULTI_INSTANCE:
-
-                    validateNodeType(node, type, YANG_MULTI_INSTANCE_NODE);
-                    newNode = new YdtMultiInstanceNode(node);
-                    break;
-
-                case SINGLE_INSTANCE_LEAF:
-
-                    validateNodeType(node, type, YANG_SINGLE_INSTANCE_LEAF_NODE);
-                    newNode = new YdtSingleInstanceLeafNode(node);
-                    break;
-
-                case MULTI_INSTANCE_LEAF:
-
-                    validateNodeType(node, type, YANG_MULTI_INSTANCE_LEAF_NODE);
-                    newNode = new YdtMultiInstanceLeafNode(node);
-                    break;
-
-                default:
-                    newNode = null;
-            }
-        } catch (DataModelException | YdtException e) {
-            throw new YdtException(e.getLocalizedMessage());
-        }
-
-        if (newNode == null) {
-            throw new YdtException(errorMsg(FMT_NOT_EXIST, node.getName()));
-        }
-
-        return newNode;
-    }
-
-    /**
-     * Validates the requested ydt node type against the schema node type,
-     * if it is not equal then it will throw warning.
-     *
-     * @param node          schema node
-     * @param nodeType      actual node type
-     * @param requestedType user requested node type
-     * @throws YdtException when user requested node type doesn't exist
-     */
-    private static void validateNodeType(
-            YangSchemaNode node, YangSchemaNodeType nodeType,
-            YangSchemaNodeType requestedType) throws YdtException {
-
-        if (nodeType != requestedType) {
-            throw new YdtException(errorMsg(FMT_NOT_EXIST, node.getName()));
-        }
-    }
-
-    /**
-     * Creates Yang data tree node of YangSchemaNode type specific for
-     * requestedCardinality of type UNKNOWN and returns the same.
-     *
-     * @param node     schema node
-     * @param nodeType schema node type as per YANG schema metadata
-     * @param callType identify the call type
-     * @return YANG data tree node
-     * @throws YdtException when user requested node type doesn't exist
-     */
-    private static YdtNode getYangSchemaNodeTypeSpecificContext(
-            YangSchemaNode node, YangSchemaNodeType nodeType,
-            RequestedCallType callType) throws YdtException, DataModelException {
-        switch (callType) {
-            case LEAF:
-                switch (nodeType) {
-
-                    case YANG_SINGLE_INSTANCE_LEAF_NODE:
-                        return new YdtSingleInstanceLeafNode(node);
-
-                    case YANG_MULTI_INSTANCE_LEAF_NODE:
-                        return new YdtMultiInstanceLeafNode(node);
-
-                    default:
-                        return null;
-                }
-
-            case NON_LEAF:
-                switch (nodeType) {
-
-                    case YANG_SINGLE_INSTANCE_NODE:
-                        return new YdtSingleInstanceNode(node);
-
-                    case YANG_MULTI_INSTANCE_NODE:
-                        return new YdtMultiInstanceNode(node);
-
-                    default:
-                        return null;
-                }
-
-            case MULTI_INSTANCE:
-                switch (nodeType) {
-
-                    case YANG_MULTI_INSTANCE_LEAF_NODE:
-                        return new YdtMultiInstanceLeafNode(node);
-
-                    case YANG_MULTI_INSTANCE_NODE:
-                        return new YdtMultiInstanceNode(node);
-
-                    default:
-                        throw new YdtException(E_MULTI_INS);
-                }
-
-            case EMPTY_CONTAINER:
-                switch (nodeType) {
-
-                case YANG_SINGLE_INSTANCE_NODE:
-                    return new YdtSingleInstanceNode(node);
-
-                case YANG_SINGLE_INSTANCE_LEAF_NODE:
-                    return new YdtSingleInstanceLeafNode(node);
-
-                default:
-                    return null;
-            }
-
-            default:
-                return null;
-        }
-    }
-
-    /**
-     * Create Yang data tree node of YangSchemaNode type specific and
-     * returns the same.
-     *
-     * @param node schema node
-     * @return YANG data tree node
-     * @throws YdtException when user requested node type doesn't exist
-     */
-    static YdtNode getYangSchemaNodeTypeSpecificContext(YangSchemaNode node)
-            throws YdtException {
-
-        switch (node.getYangSchemaNodeType()) {
-
-            case YANG_SINGLE_INSTANCE_LEAF_NODE:
-                return new YdtSingleInstanceLeafNode(node);
-
-            case YANG_MULTI_INSTANCE_LEAF_NODE:
-                return new YdtMultiInstanceLeafNode(node);
-
-            case YANG_SINGLE_INSTANCE_NODE:
-                return new YdtSingleInstanceNode(node);
-
-            case YANG_MULTI_INSTANCE_NODE:
-                return new YdtMultiInstanceNode(node);
-
-            default:
-                throw new YdtException(errorMsg(FMT_NOT_EXIST, node.getName()));
-        }
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtSingleInstanceLeafNode.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtSingleInstanceLeafNode.java
deleted file mode 100644
index cc2a223..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtSingleInstanceLeafNode.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-
-import static org.onosproject.yms.app.ydt.YdtConstants.FMT_DUP_ENTRY;
-import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg;
-import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_LEAF_VALUE_NODE;
-
-/**
- * Represents YDT single instance leaf node which is an atomic element
- * and doesn't have any child.
- */
-public class YdtSingleInstanceLeafNode extends YdtNode {
-
-    /*
-     * Value of the leaf.
-     */
-    private String value;
-
-    /*
-     * Value of the leaf.
-     */
-    private Boolean isKeyLeaf = false;
-
-    /**
-     * Creates a YANG single instance leaf node.
-     *
-     * @param node schema of YDT single instance leaf node
-     */
-    YdtSingleInstanceLeafNode(YangSchemaNode node) {
-        super(SINGLE_INSTANCE_LEAF_VALUE_NODE, node);
-    }
-
-    /**
-     * Returns the flag indicating that requested leaf is key-leaf or not.
-     *
-     * @return isKeyLeaf true, for key leaf; false non key leaf
-     */
-    public Boolean isKeyLeaf() {
-        return isKeyLeaf;
-    }
-
-    @Override
-    public String getValue() {
-        return value;
-    }
-
-    @Override
-    public void addValue(String value) throws YdtException {
-        // Check the value against corresponding data-type.
-        //TODO validation need to be decided
-//        try {
-//            getYangSchemaNode().isValueValid(value);
-//        } catch (Exception e) {
-//            throw new YdtException(e.getLocalizedMessage());
-//        }
-
-        // After validation is successful then add value to node.
-        this.value = value;
-    }
-
-
-    @Override
-    public void addValueWithoutValidation(String value, boolean isKeyLeaf) {
-        this.value = value;
-        this.isKeyLeaf = isKeyLeaf;
-    }
-
-    @Override
-    public void validDuplicateEntryProcessing() throws YdtException {
-        throw new YdtException(errorMsg(FMT_DUP_ENTRY, getName()));
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtSingleInstanceNode.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtSingleInstanceNode.java
deleted file mode 100644
index 83d1d81..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtSingleInstanceNode.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-
-import static org.onosproject.yms.app.ydt.YdtConstants.FMT_DUP_ENTRY;
-import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg;
-import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_NODE;
-
-/**
- * Represents a single instance YANG data tree node.
- */
-class YdtSingleInstanceNode extends YdtNode {
-
-    /**
-     * Creates a YANG single instance node object.
-     *
-     * @param node schema of YDT single instance node
-     */
-    YdtSingleInstanceNode(YangSchemaNode node) {
-        super(SINGLE_INSTANCE_NODE, node);
-    }
-
-    @Override
-    public void validDuplicateEntryProcessing() throws YdtException {
-        throw new YdtException(errorMsg(FMT_DUP_ENTRY, getName()));
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtUtils.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtUtils.java
deleted file mode 100644
index 9846ab3..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtUtils.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.onosproject.yangutils.datamodel.YangAugment;
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yangutils.datamodel.YangSchemaNodeContextInfo;
-import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier;
-import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-import org.onosproject.yms.ydt.YdtContextOperationType;
-
-import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.DELETE_ONLY;
-import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.OTHER_EDIT;
-import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg;
-import static org.onosproject.yms.ydt.YdtContextOperationType.CREATE;
-import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-/**
- * Utils to support yang data tree node creation.
- */
-final class YdtUtils {
-
-    // YDT formatted error string
-    private static final String E_CREATE_OP =
-            "Create request is not allowed under delete operation.";
-    private static final String E_DELETE_OP =
-            "Delete request is not allowed under create operation.";
-    private static final String FMT_TOO_FEW =
-            "Too few key parameters in %s. Expected %d; actual %d.";
-    private static final String FMT_TOO_MANY =
-            "Too many key parameters in %s. Expected %d; actual %d.";
-
-    //No instantiation.
-    private YdtUtils() {
-    }
-
-    /**
-     * Returns the app tree operation type with the help of YdtOperation type.
-     *
-     * @param opType ydt operation type
-     * @return app tree operation type
-     */
-    static YdtAppNodeOperationType getAppOpTypeFromYdtOpType(
-            YdtContextOperationType opType) {
-        // Get the app tree operation type.
-        switch (opType) {
-            case CREATE:
-            case MERGE:
-            case REPLACE:
-                return OTHER_EDIT;
-
-            case DELETE:
-            case REMOVE:
-                return DELETE_ONLY;
-
-            default:
-                return null;
-            //TODO handle the default data type.
-        }
-    }
-
-    /**
-     * Validates the various combination of operation type.
-     *
-     * @param parentOpType Reference for parent node operation type
-     * @param childOpType  type of YANG data tree node operation
-     * @throws YdtException when user requested node operation type is
-     *                      not valid as per parent node operation type
-     */
-    private static void validateOperationType(YdtContextOperationType parentOpType,
-                                              YdtContextOperationType childOpType)
-            throws YdtException {
-
-        switch (parentOpType) {
-            case CREATE:
-                // Inside the create operation delete operation should not come.
-                if (childOpType == DELETE) {
-                    throw new YdtException(E_CREATE_OP);
-                }
-                break;
-            case DELETE:
-                // Inside the delete operation create operation should not come.
-                if (childOpType == CREATE) {
-                    throw new YdtException(E_DELETE_OP);
-                }
-                break;
-            default:
-                //TODO check all possible scenario.
-        }
-    }
-
-    /**
-     * Returns the operation type for non leaf node.
-     * When "operation" attribute for current node is not specified or null,
-     * then the operation applied to the parent data node of the
-     * configuration is used. If no parent data node is available,
-     * then the default-operation'value is used.
-     * If default operation type is not set, merge will be taken as default
-     * operation type.
-     *
-     * @param type    operation type of parent node
-     * @param defType YDT default operation type
-     * @return operation type for current non leaf node
-     */
-    private static YdtContextOperationType getOperationType(
-            YdtContextOperationType type, YdtContextOperationType defType) {
-        return type != null ? type : (defType != null ? defType : MERGE);
-    }
-
-    /**
-     * Returns the yang node identifier with requested name and namespace.
-     *
-     * @param name      name of the node
-     * @param namespace namespace of the node
-     * @return yang node identifier
-     */
-    static YangSchemaNodeIdentifier getNodeIdentifier(String name,
-                                                      String namespace) {
-        YangSchemaNodeIdentifier id = new YangSchemaNodeIdentifier();
-        id.setName(name);
-        id.setNameSpace(new NameSpace(namespace));
-        return id;
-    }
-
-    /**
-     * Checks the user supplied list of argument match's the expected value
-     * or not.
-     *
-     * @param name     name of the parent list/leaf-list node
-     * @param expected count suppose to be
-     * @param actual   user supplied values count
-     * @throws YdtException when user requested multi instance node instance's
-     *                      count doesn't fit into the allowed instance limit
-     */
-    static void checkElementCount(String name, int expected,
-                                  int actual) throws YdtException {
-        if (expected < actual) {
-            throw new YdtException(
-                    errorMsg(FMT_TOO_MANY, name, expected, actual));
-        } else if (expected > actual) {
-            throw new YdtException(
-                    errorMsg(FMT_TOO_FEW, name, expected, actual));
-        }
-    }
-
-    /**
-     * Returns the valid operation type for requested ydt node after performing
-     * validation.
-     *
-     * @param opType     user requested operation type
-     * @param newNode    new requested ydt node
-     * @param parentNode parent node under which new node to be added
-     * @param defOpType  YDT context operation type
-     * @return operation type
-     * @throws YdtException when user requested node operation type is
-     *                      not valid as per parent node operation type
-     */
-    static YdtContextOperationType getValidOpType(
-            YdtContextOperationType opType, YdtContextOperationType defOpType,
-            YdtNode newNode, YdtNode parentNode)
-            throws YdtException {
-
-        switch (newNode.getYdtType()) {
-
-            case SINGLE_INSTANCE_NODE:
-            case MULTI_INSTANCE_NODE:
-
-                // Reference for parent node operation type.
-                YdtContextOperationType parentOpType =
-                        parentNode.getYdtContextOperationType();
-
-                if (opType == null) {
-                    opType = getOperationType(parentOpType, defOpType);
-                } else if (parentOpType != null) {
-                    validateOperationType(parentOpType, opType);
-                }
-
-                return opType;
-
-            /*
-             * Nodes other then single/multi instance node does not support
-             * operation type so no need of validation for those.
-             */
-            default:
-                return null;
-        }
-    }
-
-    /**
-     * Returns augmenting node module yang schema node.
-     *
-     * @param id          schema node identifier
-     * @param contextInfo Yang Schema node context info
-     *                    which is having YangSchemaNode and
-     *                    ContextSwitchedNode
-     * @return augmenting node module yang schema node
-     * @throws YdtException when user requested node schema doesn't exist
-     */
-    public static YangSchemaNode getAugmentingSchemaNode(
-            YangSchemaNodeIdentifier id,
-            YangSchemaNodeContextInfo contextInfo) throws YdtException {
-        YangSchemaNode lastAugMod = null;
-        YangSchemaNode switchedNode =
-                contextInfo.getContextSwitchedNode();
-
-        // Finding the last augmenting schema for case/choice scenario.
-        while (switchedNode != null) {
-            if (switchedNode instanceof YangAugment) {
-                lastAugMod = switchedNode;
-            }
-            try {
-                switchedNode = switchedNode.getChildSchema(id)
-                        .getContextSwitchedNode();
-            } catch (DataModelException e) {
-                throw new YdtException(e.getMessage());
-            }
-        }
-        return lastAugMod;
-    }
-
-    /**
-     * De-reference all the tree node by walking the whole YDT from logical
-     * root node.
-     * This will be called only when any exception occurs while processing
-     * the node in Ydt tree.
-     *
-     * @param rootNode ydt logical root node
-     */
-    public static void freeRestResources(YdtNode rootNode) {
-
-        YdtNode currentNode = rootNode;
-        while (currentNode != null) {
-
-            // Move down to first child
-            YdtNode nextNode = currentNode.getFirstChild();
-            if (nextNode != null) {
-                currentNode = nextNode;
-                continue;
-            }
-
-            // No child nodes, so walk tree
-            while (currentNode != null) {
-                // To keep the track of last sibling.
-                YdtNode lastSibling = currentNode;
-
-                // Move to sibling if possible.
-                nextNode = currentNode.getNextSibling();
-
-                // free currentNode resources
-                free(lastSibling);
-
-                lastSibling.getNamespace();
-                if (nextNode != null) {
-                    currentNode = nextNode;
-                    break;
-                }
-
-                // Move up
-                if (currentNode.equals(rootNode)) {
-                    currentNode = null;
-                } else {
-                    currentNode = currentNode.getParent();
-                    lastSibling.setParent(null);
-                }
-            }
-        }
-    }
-
-    /**
-     * Free the give YDT node by de-referencing it to null.
-     *
-     * @param node node to be freed
-     */
-    private static void free(YdtNode node) {
-        if (node.getParent() != null) {
-            YdtNode parent = node.getParent();
-            parent.setChild(null);
-            parent.setLastChild(null);
-            if (node.getNextSibling() != null) {
-                parent.setChild(node.getNextSibling());
-            }
-        }
-        YdtNode parentRef = node.getParent();
-        node = new YdtLogicalNode(null, null);
-        node.setParent(parentRef);
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/exceptions/YdtException.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/exceptions/YdtException.java
deleted file mode 100644
index 15243e8..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/exceptions/YdtException.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt.exceptions;
-
-/**
- * Represents base class for exceptions in YDT operations.
- */
-public class YdtException extends RuntimeException {
-
-    private static final long serialVersionUID = 20160211L;
-
-    /**
-     * Creates a new YDT exception with given message.
-     *
-     * @param message the detail of exception in string
-     */
-    public YdtException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new YDT exception from given message and cause.
-     *
-     * @param message the detail of exception in string
-     * @param cause   underlying cause of the error
-     */
-    public YdtException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Creates a new YDT exception from cause.
-     *
-     * @param cause underlying cause of the error
-     */
-    public YdtException(Throwable cause) {
-        super(cause);
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/exceptions/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/exceptions/package-info.java
deleted file mode 100644
index b9e32c6..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/exceptions/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * YANG data tree exceptions.
- */
-package org.onosproject.yms.app.ydt.exceptions;
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/package-info.java
deleted file mode 100644
index 6ba98a6..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of build and obtain YANG data tree which is data
- * (sub)instance representation, abstract of protocol.
- */
-package org.onosproject.yms.app.ydt;
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ymsm/YmsManager.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ymsm/YmsManager.java
deleted file mode 100644
index b3e37c1..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ymsm/YmsManager.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ymsm;
-
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.core.IdGenerator;
-import org.onosproject.event.ListenerService;
-import org.onosproject.yms.app.yab.YangApplicationBroker;
-import org.onosproject.yms.app.ych.DefaultYangCodecHandler;
-import org.onosproject.yms.app.ych.defaultcodecs.YangCodecRegistry;
-import org.onosproject.yms.app.ydt.DefaultYdtWalker;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ynh.YangNotificationExtendedService;
-import org.onosproject.yms.app.ynh.YangNotificationManager;
-import org.onosproject.yms.app.ysr.DefaultYangModuleLibrary;
-import org.onosproject.yms.app.ysr.DefaultYangSchemaRegistry;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.onosproject.yms.ych.YangCodecHandler;
-import org.onosproject.yms.ych.YangDataTreeCodec;
-import org.onosproject.yms.ych.YangProtocolEncodingFormat;
-import org.onosproject.yms.ydt.YdtBuilder;
-import org.onosproject.yms.ydt.YdtResponse;
-import org.onosproject.yms.ydt.YdtWalker;
-import org.onosproject.yms.ydt.YmsOperationType;
-import org.onosproject.yms.ymsm.YmsService;
-import org.onosproject.yms.ynh.YangNotificationService;
-import org.onosproject.yms.ysr.YangModuleIdentifier;
-import org.onosproject.yms.ysr.YangModuleLibrary;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-
-import static java.lang.String.valueOf;
-import static java.util.concurrent.Executors.newSingleThreadExecutor;
-import static org.onlab.util.Tools.groupedThreads;
-import static org.onosproject.yms.app.ych.defaultcodecs.YangCodecRegistry.initializeDefaultCodec;
-
-/**
- * Represents implementation of YANG management system manager.
- */
-@Component(immediate = true, service = YmsService.class)
-public class YmsManager
-        implements YmsService {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private static final String APP_ID = "org.onosproject.app.yms";
-    private static final String MODULE_ID = "module-id";
-    private ApplicationId appId;
-    private YangSchemaRegistry schemaRegistry;
-    //module id generator should be used to generate a new module id for
-    //each YSR instance. So YCH also should generate it.
-    private IdGenerator moduleIdGenerator;
-    private ExecutorService executor;
-    private YangNotificationExtendedService ynhExtendedService;
-    private YangModuleLibrary library;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Activate
-    public void activate() {
-        appId = coreService.registerApplication(APP_ID);
-        moduleIdGenerator = coreService.getIdGenerator(MODULE_ID);
-        schemaRegistry = new DefaultYangSchemaRegistry();
-        library = new DefaultYangModuleLibrary(getNewModuleId());
-        executor = newSingleThreadExecutor(groupedThreads(
-                "onos/apps/yang-management-system/schema-registry",
-                "schema-registry-handler", log));
-        ynhExtendedService = new YangNotificationManager(schemaRegistry);
-        //Initialize the default codec
-        initializeDefaultCodec();
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        schemaRegistry.flushYsrData();
-        executor.shutdown();
-
-        // TODO implementation for other components.
-        log.info("Stopped");
-    }
-
-    @Override
-    public YdtBuilder getYdtBuilder(String logicalRootName,
-                                    String rootNamespace,
-                                    YmsOperationType opType) {
-        return new YangRequestWorkBench(logicalRootName, rootNamespace,
-                                        opType, schemaRegistry, true);
-    }
-
-    @Override
-    public YdtBuilder getYdtBuilder(String logicalRootName,
-                                    String rootNamespace,
-                                    YmsOperationType opType,
-                                    Object schemaRegistryForYdt) {
-        if (schemaRegistryForYdt != null) {
-            return new YangRequestWorkBench(
-                    logicalRootName, rootNamespace, opType,
-                    (YangSchemaRegistry) schemaRegistryForYdt, false);
-        }
-        return new YangRequestWorkBench(logicalRootName, rootNamespace,
-                                        opType, schemaRegistry, true);
-    }
-
-    @Override
-    public YdtWalker getYdtWalker() {
-        return new DefaultYdtWalker();
-    }
-
-    @Override
-    public YdtResponse executeOperation(YdtBuilder operationRequest) {
-        YangApplicationBroker requestBroker =
-                new YangApplicationBroker(schemaRegistry);
-        switch (operationRequest.getYmsOperationType()) {
-            case EDIT_CONFIG_REQUEST:
-                try {
-                    return requestBroker.processEdit(operationRequest);
-                } catch (CloneNotSupportedException e) {
-                    log.error("YAB: failed to process edit request.");
-                }
-            case QUERY_CONFIG_REQUEST:
-                // TODO : to be implemented
-            case QUERY_REQUEST:
-                return requestBroker.processQuery(operationRequest);
-            case RPC_REQUEST:
-                return requestBroker.processOperation(operationRequest);
-            default:
-                // TODO : throw exception
-        }
-        return null;
-    }
-
-    @Override
-    public YangNotificationService getYangNotificationService() {
-        return ynhExtendedService;
-    }
-
-    @Override
-    public YangModuleLibrary getYangModuleLibrary() {
-        //TODO: get for YCH should be handled.
-        return library;
-    }
-
-    @Override
-    public String getYangFile(YangModuleIdentifier moduleIdentifier) {
-        return schemaRegistry.getYangFile(moduleIdentifier);
-    }
-
-    @Override
-    public void registerDefaultCodec(YangDataTreeCodec defaultCodec,
-                                     YangProtocolEncodingFormat dataFormat) {
-        YangCodecRegistry.registerDefaultCodec(defaultCodec, dataFormat);
-    }
-
-    @Override
-    public void registerService(Object manager, Class<?> service,
-                                List<String> features) {
-        //perform registration of service
-        executor.execute(() -> {
-
-            schemaRegistry.registerApplication(manager, service);
-            //process notification registration.
-            processNotificationRegistration(manager, service);
-
-            schemaRegistry.processModuleLibrary(service.getName(), library);
-        });
-        // TODO implementation based on supported features.
-    }
-
-    /**
-     * Process notification registration for manager class object.
-     *
-     * @param manager yang manager
-     * @param service service class
-     */
-    private void processNotificationRegistration(Object manager, Class<?> service) {
-        synchronized (service) {
-            if (manager != null && manager instanceof ListenerService) {
-                if (schemaRegistry.verifyNotificationObject(manager, service)) {
-                    ynhExtendedService.registerAsListener((ListenerService) manager);
-                }
-            }
-        }
-    }
-
-    @Override
-    public void unRegisterService(Object appManager, Class<?> yangService) {
-        schemaRegistry.unRegisterApplication(appManager, yangService);
-    }
-
-    @Override
-    public YangCodecHandler getYangCodecHandler() {
-        YangSchemaRegistry registry = new DefaultYangSchemaRegistry();
-        DefaultYangCodecHandler handler = new DefaultYangCodecHandler(registry);
-        handler.setLibrary(new DefaultYangModuleLibrary(getNewModuleId()));
-        return handler;
-    }
-
-    /**
-     * Returns schema registry.
-     *
-     * @return schema registry
-     */
-    public YangSchemaRegistry getSchemaRegistry() {
-        return schemaRegistry;
-    }
-
-    /**
-     * Returns new generated module id.
-     *
-     * @return new module id
-     */
-    private String getNewModuleId() {
-        return valueOf(moduleIdGenerator.getNewId());
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ymsm/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ymsm/package-info.java
deleted file mode 100644
index 19734da..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ymsm/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of YANG application management system manager. YMSM is manager
- * of the YANG Core, it manages interaction between application and protocols.
- */
-package org.onosproject.yms.app.ymsm;
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/YangNotificationExtendedService.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/YangNotificationExtendedService.java
deleted file mode 100644
index bb012c0..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/YangNotificationExtendedService.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.yms.app.ynh;
-
-import org.onosproject.event.ListenerService;
-import org.onosproject.yms.ynh.YangNotificationService;
-
-/**
- * Abstraction of an entity which provides interfaces to YANG extended notification
- * service. It provides extended interfaces required by YMS internal modules.
- * Application registers their schema with YMSM, YMSM delegates the registration
- * request to YSR. YSR then looks for the presence of notification in application
- * schema, presence of notification will trigger YSR to ask YANG extended notification
- * service to register it as a listener to that application events.
- */
-public interface YangNotificationExtendedService extends YangNotificationService {
-
-    /**
-     * Registers as listener with application. This is called by YSR when it
-     * detects notification presence in application YANG file at the time when
-     * application registers it's schema with YMS.
-     *
-     * @param appObject application object
-     */
-    void registerAsListener(ListenerService appObject);
-
-    // TODO handle scenario when multiple services are implemented by single manager.
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/YangNotificationManager.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/YangNotificationManager.java
deleted file mode 100644
index 131dcb8..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/YangNotificationManager.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ynh;
-
-import org.onosproject.event.Event;
-import org.onosproject.event.EventListener;
-import org.onosproject.event.ListenerRegistry;
-import org.onosproject.event.ListenerService;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.onosproject.yms.app.ytb.DefaultYangTreeBuilder;
-import org.onosproject.yms.app.ytb.YangTreeBuilder;
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ynh.YangNotification;
-import org.onosproject.yms.ynh.YangNotificationEvent;
-import org.onosproject.yms.ynh.YangNotificationListener;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import static org.onlab.util.Tools.groupedThreads;
-
-/**
- * Representation of YANG notification manager.
- */
-public class YangNotificationManager
-        extends ListenerRegistry<YangNotificationEvent, YangNotificationListener>
-        implements YangNotificationExtendedService {
-
-    private static final String YANG_NOTIFICATION = "yangnotification";
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private ExecutorService executor;
-
-    /**
-     * YANG notification abstract listener. This listener will listens
-     * abstractly to all the notification from the application to which it
-     * has subscribed.
-     */
-    private YnhAbstractListener listener;
-
-    /**
-     * Maintains schema registry.
-     */
-    private YangSchemaRegistry schemaRegistry;
-
-    /**
-     * Creates an instance of YANG notification manager.
-     *
-     * @param registry YANG schema registry
-     */
-    public YangNotificationManager(YangSchemaRegistry registry) {
-        listener = new YnhAbstractListener();
-        executor = Executors.newSingleThreadExecutor(groupedThreads(
-                "onos/yms", "event-handler-%d", log));
-        schemaRegistry = registry;
-    }
-
-    @Override
-    public void registerAsListener(ListenerService manager) {
-        manager.addListener(listener);
-    }
-
-    @Override
-    public YangNotification getFilteredSubject(YangNotification subject,
-                                               YangNotification filter) {
-        return null;
-        // TODO
-    }
-
-    /**
-     * Representation of YANG notification handler's abstract listener. It
-     * listens for events from application(s).
-     */
-    private class YnhAbstractListener<E extends Event> implements
-            EventListener<E> {
-
-        @Override
-        public void event(Event event) {
-            executor.execute(() -> {
-                try {
-                    log.info("Event received in ynh " + event.type());
-                    /*
-                     * Obtain YANG data tree corresponding to notification with
-                     * logical root node as yangnotification, followed by
-                     * module/sub-module, followed by notification.
-                     */
-                    YangTreeBuilder builder = new DefaultYangTreeBuilder();
-                    YdtContext context = builder.getYdtForNotification(
-                            event, YANG_NOTIFICATION, schemaRegistry);
-                    /*
-                     * Create YANG notification from obtained data tree and
-                     * send it to registered protocols.
-                     */
-                    YangNotification notification =
-                            new YangNotification(context);
-                    process(new YangNotificationEvent(notification));
-                } catch (Exception e) {
-                    log.warn("Failed to process {}", event, e);
-                }
-            });
-        }
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/package-info.java
deleted file mode 100644
index 56e65d2..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of YANG notification handler. YNH handles notification
- * from the application and provide it to the protocols.
- */
-package org.onosproject.yms.app.ynh;
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/DefaultYobBuilder.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/DefaultYobBuilder.java
deleted file mode 100644
index a90137a..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/DefaultYobBuilder.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.onosproject.yms.app.ydt.DefaultYdtWalker;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.ydt.YdtExtendedListener;
-import org.onosproject.yms.app.ydt.YdtExtendedWalker;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-
-import static org.onosproject.yms.app.ydt.AppType.YOB;
-
-/**
- * Represents implementation of interfaces to build and obtain YANG objects
- * from YDT.
- */
-public class DefaultYobBuilder implements YobBuilder {
-
-    /**
-     * Creates an instance of DefaultYobBuilder.
-     */
-    public DefaultYobBuilder() {
-    }
-
-    @Override
-    public Object getYangObject(YdtExtendedContext ydtRootNode,
-                                YangSchemaRegistry schemaRegistry) {
-        YdtExtendedWalker ydtExtendedWalker = new DefaultYdtWalker();
-        YdtExtendedListener yobListener =
-                new YobListener(ydtRootNode, schemaRegistry);
-        if (ydtRootNode != null) {
-            ydtExtendedWalker.walk(yobListener, ydtRootNode);
-            YobWorkBench yobWorkBench =
-                    (YobWorkBench) ydtRootNode.getAppInfo(YOB);
-            return yobWorkBench.getBuilderOrBuiltObject().getBuiltObject();
-        }
-        return null;
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobBuilder.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobBuilder.java
deleted file mode 100644
index fc8af30..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobBuilder.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-
-/**
- * Abstraction of an entity which provides interfaces to YANG object
- * builder.
- */
-interface YobBuilder {
-
-    /**
-     * Returns the YANG object. This will be called by NBI broker.
-     *
-     * @param ydtExtendedContext ydtExtendedContext is used to get application
-     *                           related information maintained in YDT
-     * @param schemaRegistry     schema registry
-     * @return YANG builder object
-     */
-    Object getYangObject(YdtExtendedContext ydtExtendedContext,
-                         YangSchemaRegistry schemaRegistry);
-}
-
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobBuilderOrBuiltObject.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobBuilderOrBuiltObject.java
deleted file mode 100644
index 71900c2..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobBuilderOrBuiltObject.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.onosproject.yms.app.yob.exception.YobException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.onosproject.yms.app.yob.YobConstants.E_BUILDER_IS_NOT_ALREADY_SET;
-import static org.onosproject.yms.app.yob.YobConstants.E_BUILDER_IS_NOT_SET;
-import static org.onosproject.yms.app.yob.YobConstants.E_BUILT_OBJ_IS_NOT_SET;
-import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_CREATE_OBJ;
-import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_LOAD_CLASS;
-import static org.onosproject.yms.app.yob.YobConstants.E_OBJ_BUILDING_WITHOUT_BUILDER;
-import static org.onosproject.yms.app.yob.YobConstants.E_OBJ_IS_ALREADY_BUILT_NOT_BUILD;
-import static org.onosproject.yms.app.yob.YobConstants.E_OBJ_IS_ALREADY_BUILT_NOT_FETCH;
-import static org.onosproject.yms.app.yob.YobConstants.E_OBJ_IS_ALREADY_BUILT_NOT_SET;
-import static org.onosproject.yms.app.yob.YobConstants.E_OBJ_IS_NOT_SET_NOT_FETCH;
-import static org.onosproject.yms.app.yob.YobConstants.E_REFLECTION_FAIL_TO_CREATE_OBJ;
-import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_CREATE_OBJ;
-import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_LOAD_CLASS;
-import static org.onosproject.yms.app.yob.YobConstants.L_REFLECTION_FAIL_TO_CREATE_OBJ;
-
-/**
- * Represents the container of YANG object being built or the builder.
- */
-class YobBuilderOrBuiltObject {
-    private static final Logger log =
-            LoggerFactory.getLogger(YobWorkBench.class);
-
-    /**
-     * Is the contained object a built object.
-     */
-    private boolean isBuilt;
-
-    /**
-     * Builder or built object.
-     */
-    private Object builderOrBuiltObject;
-
-    /**
-     * Default / op param builder class.
-     */
-    Class<?> yangBuilderClass;
-
-    /**
-     * Default Class.
-     */
-    Class<?> yangDefaultClass;
-
-    /**
-     * Create Node Object holder.
-     *
-     * @param qualifiedClassName       name of the class
-     * @param registeredAppClassLoader class loader to be used
-     * @throws YobException if failed to create the node object
-     */
-    YobBuilderOrBuiltObject(String qualifiedClassName,
-                            ClassLoader registeredAppClassLoader) {
-        try {
-            yangDefaultClass =
-                    registeredAppClassLoader.loadClass(qualifiedClassName);
-            yangBuilderClass = yangDefaultClass.getDeclaredClasses()[0];
-            setBuilderObject(yangBuilderClass.newInstance());
-        } catch (ClassNotFoundException e) {
-            log.error(L_FAIL_TO_LOAD_CLASS, qualifiedClassName);
-            throw new YobException(E_FAIL_TO_LOAD_CLASS + qualifiedClassName);
-        } catch (InstantiationException | IllegalAccessException e) {
-            log.error(L_FAIL_TO_CREATE_OBJ, qualifiedClassName);
-            throw new YobException(E_FAIL_TO_CREATE_OBJ + qualifiedClassName);
-        } catch (NullPointerException e) {
-            log.error(L_REFLECTION_FAIL_TO_CREATE_OBJ, qualifiedClassName);
-            throw new YobException(E_REFLECTION_FAIL_TO_CREATE_OBJ +
-                                           qualifiedClassName);
-        }
-    }
-
-    /**
-     * Returns the builder object if it is set.
-     *
-     * @return builder object
-     * @throws YobException if builder is not available
-     */
-    Object getBuilderObject() {
-        if (isBuilt) {
-            throw new YobException(E_OBJ_IS_ALREADY_BUILT_NOT_FETCH);
-        }
-
-        if (builderOrBuiltObject == null) {
-            throw new YobException(E_BUILDER_IS_NOT_SET);
-        }
-
-        return builderOrBuiltObject;
-    }
-
-    /**
-     * Check if the builder object is being initialized for the first time and
-     * set it.
-     *
-     * @param builderObject new builder object
-     * @throws YobException if built object is not available
-     */
-    private void setBuilderObject(Object builderObject) {
-        if (isBuilt) {
-            throw new YobException(E_OBJ_IS_ALREADY_BUILT_NOT_SET);
-        }
-
-        if (builderOrBuiltObject != null) {
-            throw new YobException(E_BUILDER_IS_NOT_ALREADY_SET);
-        }
-
-        builderOrBuiltObject = builderObject;
-    }
-
-    /**
-     * Returns the built object.
-     *
-     * @return built object
-     * @throws YobException if built object is not available or if it is not
-     *                      built
-     */
-    Object getBuiltObject() {
-        if (!isBuilt) {
-            throw new YobException(E_OBJ_IS_NOT_SET_NOT_FETCH);
-        }
-
-        if (builderOrBuiltObject == null) {
-            throw new YobException(E_BUILT_OBJ_IS_NOT_SET);
-        }
-
-        return builderOrBuiltObject;
-    }
-
-    /**
-     * Check if the built object is being initialized for the 1st time and
-     * set it.
-     *
-     * @param builtObject new built object
-     * @throws YobException if builder object is not available or if it is
-     *                      already built
-     */
-    void setBuiltObject(Object builtObject) {
-        if (isBuilt) {
-            throw new YobException(E_OBJ_IS_ALREADY_BUILT_NOT_BUILD);
-        }
-
-        if (builderOrBuiltObject == null) {
-            throw new YobException(E_OBJ_BUILDING_WITHOUT_BUILDER);
-        }
-
-        isBuilt = true;
-        builderOrBuiltObject = builtObject;
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobConstants.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobConstants.java
deleted file mode 100644
index 84ccf38..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobConstants.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-/**
- * Represents common constant utility for YANG object builder.
- */
-final class YobConstants {
-
-    private YobConstants() {
-    }
-
-    static final String FROM_STRING = "fromString";
-    static final String BUILD = "build";
-    static final String OP_PARAM = "OpParam";
-    static final String DEFAULT = "Default";
-    static final String ADD_TO = "addTo";
-    static final String VALUE_OF = "valueOf";
-    static final String OP_TYPE = "OpType";
-    static final String ONOS_YANG_OP_TYPE = "OnosYangOpType";
-    static final String OF = "of";
-    static final String PERIOD = ".";
-    static final String SPACE = " ";
-    static final String ADD_AUGMENT_METHOD = "addYangAugmentedInfo";
-    static final String YANG = "yang";
-    static final String JAVA_LANG = "java.lang";
-    static final String LEAF_IDENTIFIER = "LeafIdentifier";
-    static final String SELECT_LEAF = "selectLeaf";
-    static final String EVENT_SUBJECT = "EventSubject";
-    static final String EVENT = "Event";
-    static final String TYPE = "Type";
-
-    //Error strings
-    static final String E_NO_HANDLE_FOR_YDT = "No handler for YDT node";
-    static final String E_HAS_NO_CHILD = " does not have child ";
-    static final String E_SET_OP_TYPE_FAIL = "Failed to set Operation Type";
-    static final String E_FAIL_TO_BUILD = "Failed to build the object: ";
-    static final String L_FAIL_TO_BUILD = "Failed to build the object: {}";
-    static final String E_FAIL_TO_GET_FIELD = "Failed to get field for class: ";
-    static final String L_FAIL_TO_GET_FIELD =
-            "Failed to get field for class: {}";
-    static final String E_FAIL_TO_GET_METHOD =
-            "Failed to get method for class: ";
-    static final String L_FAIL_TO_GET_METHOD =
-            "Failed to get method for class: {}";
-    static final String E_FAIL_TO_LOAD_CLASS =
-            "Failed to load class for class: ";
-    static final String L_FAIL_TO_LOAD_CLASS =
-            "Failed to load class for class: {}";
-    static final String E_YDT_TYPE_IS_NOT_SUPPORT =
-            "Given YDT type is not supported.";
-    static final String E_FAIL_TO_CREATE_OBJ =
-            "Failed to create an object for class: ";
-    static final String L_FAIL_TO_CREATE_OBJ =
-            "Failed to create an object for class: {}";
-    static final String E_REFLECTION_FAIL_TO_CREATE_OBJ =
-            "Reflection failed to create an object for class: ";
-    static final String L_REFLECTION_FAIL_TO_CREATE_OBJ =
-            "Reflection failed to create an object for class: {}";
-    static final String E_FAIL_TO_LOAD_CONSTRUCTOR =
-            "Failed to load constructor for class: {}";
-    static final String E_FAIL_TO_INVOKE_METHOD =
-            "Failed to invoke method for class: ";
-    static final String L_FAIL_TO_INVOKE_METHOD =
-            "Failed to invoke method for class: {}";
-    static final String E_DATA_TYPE_NOT_SUPPORT =
-            "Given data type is not supported.";
-    static final String E_OBJ_IS_ALREADY_BUILT_NOT_FETCH =
-            "Object is already built, cannot fetch builder";
-    static final String E_BUILDER_IS_NOT_SET =
-            "Builder is not yet set, cannot fetch it";
-    static final String E_BUILT_OBJ_IS_NOT_SET =
-            "Built object is not set";
-    static final String E_OBJ_IS_ALREADY_BUILT_NOT_SET =
-            "Object is already built, cannot set builder";
-    static final String E_BUILDER_IS_NOT_ALREADY_SET =
-            "Builder is not already set";
-    static final String E_OBJ_IS_NOT_SET_NOT_FETCH =
-            "Builder is not yet set, cannot fetch it";
-    static final String E_OBJ_IS_ALREADY_BUILT_NOT_BUILD =
-            "Object is already built, cannot build again";
-    static final String E_OBJ_BUILDING_WITHOUT_BUILDER =
-            "Object building without builder";
-    static final String E_MISSING_DATA_IN_NODE =
-            "YANG data tree is missing the data required for YOB";
-    static final String E_INVALID_DATA_TREE =
-            "YANG tree does not have a application root";
-    static final String E_INVALID_EMPTY_DATA =
-            "Value for empty data type is invalid";
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobHandler.java
deleted file mode 100644
index 1f5fc08..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobHandler.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.onosproject.yms.app.ydt.AppType.YOB;
-import static org.onosproject.yms.app.yob.YobUtils.getQualifiedDefaultClass;
-
-/**
- * Represents a YANG object builder handler to process the ydt content and
- * build yang object.
- */
-abstract class YobHandler {
-
-    private static final Logger log = LoggerFactory.getLogger(YobHandler.class);
-
-    /**
-     * Creates a YANG builder object.
-     *
-     * @param curNode  ydtExtendedContext is used to get
-     *                 application related information maintained
-     *                 in YDT
-     * @param rootNode ydtRootNode is refers to module node
-     * @param registry registry
-     */
-    public void createBuilder(YdtExtendedContext curNode,
-                              YdtExtendedContext rootNode,
-                              YangSchemaRegistry registry) {
-        String setterName = null;
-        YangSchemaNode node = curNode.getYangSchemaNode();
-        while (node.getReferredSchema() != null) {
-            node = node.getReferredSchema();
-        }
-
-        String qualName = getQualifiedDefaultClass(node);
-        ClassLoader classLoader = YobUtils.getClassLoader(registry, qualName,
-                                                          curNode, rootNode);
-
-        if (curNode != rootNode) {
-            setterName = node.getJavaAttributeName();
-        }
-
-        Object workBench = new YobWorkBench(curNode.getYangSchemaNode(), classLoader, qualName,
-                                            setterName);
-
-        curNode.addAppInfo(YOB, workBench);
-    }
-
-    /**
-     * Sets the YANG built object in corresponding parent class method.
-     *
-     * @param ydtNode        ydtExtendedContext is used to get application
-     *                       related information maintained in YDT
-     * @param schemaRegistry YANG schema registry
-     */
-    public void setInParent(YdtExtendedContext ydtNode,
-                            YangSchemaRegistry schemaRegistry) {
-        YdtExtendedContext parentNode = (YdtExtendedContext) ydtNode.getParent();
-        YobWorkBench parentWorkbench = (YobWorkBench) parentNode.getAppInfo(YOB);
-        parentWorkbench.setObject(ydtNode, schemaRegistry);
-    }
-
-    /**
-     * Builds the object.
-     *
-     * @param ydtNode        ydtExtendedContext is used to get
-     *                       application related
-     *                       information maintained in YDT
-     * @param ydtRootNode    ydtRootNode
-     * @param schemaRegistry YANG schema registry
-     */
-    public void buildObject(YdtExtendedContext ydtNode,
-                            YdtExtendedContext ydtRootNode,
-                            YangSchemaRegistry schemaRegistry) {
-        YobWorkBench yobWorkBench = (YobWorkBench) ydtNode.getAppInfo(YOB);
-        yobWorkBench.buildObject(ydtNode.getYdtContextOperationType(), schemaRegistry);
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobHandlerFactory.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobHandlerFactory.java
deleted file mode 100644
index e91d0cf..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobHandlerFactory.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.yob.exception.YobException;
-import org.onosproject.yms.ydt.YdtType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.onosproject.yms.app.yob.YobConstants.E_YDT_TYPE_IS_NOT_SUPPORT;
-import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_LEAF_VALUE_NODE;
-import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_NODE;
-import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_LEAF_VALUE_NODE;
-import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_NODE;
-
-/**
- * Represents an YANG object builder factory to create different types
- * of YANG data tree node.
- */
-final class YobHandlerFactory {
-
-    private static final Logger log =
-            LoggerFactory.getLogger(YobHandlerFactory.class);
-
-    /**
-     * Map of YANG object builder handler.
-     */
-    private static final Map<YdtType, YobHandler> HANDLER_MAP = new HashMap<>();
-
-    /**
-     * Create instance of YobHandlerFactory.
-     */
-    private YobHandlerFactory() {
-        HANDLER_MAP.put(SINGLE_INSTANCE_NODE, new YobSingleInstanceHandler());
-        HANDLER_MAP.put(MULTI_INSTANCE_NODE, new YobMultiInstanceHandler());
-        HANDLER_MAP.put(SINGLE_INSTANCE_LEAF_VALUE_NODE,
-                        new YobSingleInstanceLeafHandler());
-        HANDLER_MAP.put(MULTI_INSTANCE_LEAF_VALUE_NODE,
-                        new YobMultiInstanceLeafHandler());
-    }
-
-    /**
-     * Returns the corresponding YOB handler for current context.
-     *
-     * @param currentNode current YDT node for which object needs to be created
-     * @return handler to create the object
-     * @throws YobException if the YDT node type is not supported in YOB
-     */
-    YobHandler getYobHandlerForContext(YdtExtendedContext currentNode) {
-        YobHandler yobHandler = HANDLER_MAP.get(currentNode.getYdtType());
-        if (yobHandler == null) {
-            log.error(E_YDT_TYPE_IS_NOT_SUPPORT);
-            throw new YobException(E_YDT_TYPE_IS_NOT_SUPPORT);
-        }
-        return yobHandler;
-    }
-
-    /**
-     * Returns the YANG object builder factory instance.
-     *
-     * @return YANG object builder factory instance
-     */
-    public static YobHandlerFactory instance() {
-        return LazyHolder.INSTANCE;
-    }
-
-    /*
-     * Bill Pugh Singleton pattern. INSTANCE won't be instantiated until the
-     * LazyHolder class is loaded via a call to the instance() method below.
-     */
-    private static class LazyHolder {
-        private static final YobHandlerFactory INSTANCE =
-                new YobHandlerFactory();
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobListener.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobListener.java
deleted file mode 100644
index f0411cc..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobListener.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.ydt.YdtExtendedListener;
-import org.onosproject.yms.app.yob.exception.YobException;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.onosproject.yms.ydt.YdtContext;
-
-import static org.onosproject.yms.app.yob.YobConstants.E_MISSING_DATA_IN_NODE;
-import static org.onosproject.yms.app.yob.YobHandlerFactory.instance;
-
-/**
- * Represents implementation of YANG object builder listener.
- */
-class YobListener implements YdtExtendedListener {
-
-    /**
-     * Reference to the ydt root node.
-     */
-    private YdtExtendedContext rootNode;
-
-    /**
-     * Reference to YANG schema registry.
-     */
-    private YangSchemaRegistry schemaRegistry;
-
-    /**
-     * Reference to YOB handler.
-     */
-    private YobHandlerFactory handlerFactory;
-
-    /**
-     * Creates an instance of YANG object builder listener.
-     *
-     * @param rootNode       refers to YDT context
-     * @param schemaRegistry refers to YANG schema registry
-     */
-    YobListener(YdtExtendedContext rootNode,
-                YangSchemaRegistry schemaRegistry) {
-        this.rootNode = rootNode;
-        this.schemaRegistry = schemaRegistry;
-        this.handlerFactory = instance();
-    }
-
-    @Override
-    public void enterYdtNode(YdtExtendedContext node) {
-
-        YobHandler nodeHandler =
-                handlerFactory.getYobHandlerForContext(node);
-
-        nodeHandler.createBuilder(node, rootNode, schemaRegistry);
-
-    }
-
-    @Override
-    public void exitYdtNode(YdtExtendedContext node) {
-        YobHandler nodeHandler =
-                handlerFactory.getYobHandlerForContext(node);
-
-        nodeHandler.buildObject(node, rootNode, schemaRegistry);
-
-        // The current ydt context node and root node are same then built
-        // object needs to be returned.
-        if (!node.equals(rootNode)) {
-            nodeHandler.setInParent(node, schemaRegistry);
-        }
-
-    }
-
-    /**
-     * Does not support walking of non extended context YDT.
-     *
-     * @param ydtContext YANG data tree context
-     * @throws YobException if YDT walker is not using extended context walker
-     */
-    @Override
-    public void enterYdtNode(YdtContext ydtContext) {
-        throw new YobException(E_MISSING_DATA_IN_NODE);
-    }
-
-    /**
-     * Does not support walking of non extended context YDT.
-     *
-     * @param ydtContext YANG data tree context
-     * @throws YobException if YDT walker is not using extended context walker
-     */
-    @Override
-    public void exitYdtNode(YdtContext ydtContext) {
-        throw new YobException(E_MISSING_DATA_IN_NODE);
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobMultiInstanceHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobMultiInstanceHandler.java
deleted file mode 100644
index 4e9e3e5..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobMultiInstanceHandler.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-/**
- * Represents a multi instance node handler in YANG object builder.
- */
-class YobMultiInstanceHandler extends YobHandler {
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobMultiInstanceLeafHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobMultiInstanceLeafHandler.java
deleted file mode 100644
index 19c39d7..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobMultiInstanceLeafHandler.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-
-import org.onosproject.yangutils.datamodel.YangLeafList;
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yangutils.datamodel.YangType;
-import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfoContainer;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.yob.exception.YobException;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-import java.util.Set;
-
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.IDENTITYREF;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
-import static org.onosproject.yms.app.ydt.AppType.YOB;
-import static org.onosproject.yms.app.yob.YobConstants.ADD_TO;
-import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_INVOKE_METHOD;
-import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_INVOKE_METHOD;
-
-/**
- * Represents a multi instance leaf node handler in YANG object builder.
- */
-class YobMultiInstanceLeafHandler
-        extends YobHandler {
-
-    private static final Logger log =
-            LoggerFactory.getLogger(YobMultiInstanceLeafHandler.class);
-
-    @Override
-    public void createBuilder(YdtExtendedContext curNode,
-                              YdtExtendedContext rootNode,
-                              YangSchemaRegistry registry) {
-        // For multi instance leaf no need to create an object.
-    }
-
-    @Override
-    public void buildObject(YdtExtendedContext ydtNode,
-                            YdtExtendedContext ydtRootNode,
-                            YangSchemaRegistry schemaRegistry) {
-        // For multi instance leaf no need to build object.
-    }
-
-    /**
-     * Set the leaf list values in the YANG object.
-     *
-     * @param leafListNode   leaf list YDT node
-     * @param schemaRegistry YANG schema registry
-     * @throws YobException if failed to invoke the leaf list's setter
-     */
-    @Override
-    public void setInParent(YdtExtendedContext leafListNode,
-                            YangSchemaRegistry schemaRegistry) {
-        Class<?> parentBuilderClass = null;
-        YangSchemaNode yangSchemaNode = leafListNode.getYangSchemaNode();
-        while (yangSchemaNode.getReferredSchema() != null) {
-            yangSchemaNode = yangSchemaNode.getReferredSchema();
-        }
-
-        YdtExtendedContext parentYdtNode =
-                (YdtExtendedContext) leafListNode.getParent();
-        YobWorkBench parentYobWorkBench =
-                (YobWorkBench) parentYdtNode.getAppInfo(YOB);
-        Set<String> valueSet = leafListNode.getValueSet();
-
-        for (String value : valueSet) {
-            try {
-                String setterInParent = yangSchemaNode.getJavaAttributeName();
-                Object builderObject = parentYobWorkBench
-                        .getParentBuilder(leafListNode, schemaRegistry);
-                parentBuilderClass = builderObject.getClass();
-                Field leafName = parentBuilderClass
-                        .getDeclaredField(setterInParent);
-                ParameterizedType genericListType =
-                        (ParameterizedType) leafName.getGenericType();
-                Class<?> genericListClass;
-                if (((YangLeafList) leafListNode.getYangSchemaNode())
-                        .getDataType().getDataType() == IDENTITYREF) {
-                    ParameterizedType type = (ParameterizedType)
-                            genericListType.getActualTypeArguments()[0];
-                    genericListClass = type.getClass().getClass();
-                } else {
-                    genericListClass = (Class<?>) genericListType.getActualTypeArguments()[0];
-                }
-
-                Method setterMethod = parentBuilderClass.getDeclaredMethod(
-                        ADD_TO + getCapitalCase(setterInParent), genericListClass);
-
-                JavaQualifiedTypeInfoContainer javaQualifiedType =
-                        (JavaQualifiedTypeInfoContainer) yangSchemaNode;
-                YangType<?> yangType =
-                        ((YangLeafList) javaQualifiedType).getDataType();
-                YobUtils.setDataFromStringValue(yangType.getDataType(), value,
-                                                setterMethod,
-                                                builderObject, leafListNode);
-            } catch (NoSuchMethodException | InvocationTargetException
-                    | IllegalAccessException | NoSuchFieldException e) {
-                log.error(L_FAIL_TO_INVOKE_METHOD,
-                          parentBuilderClass.getName());
-                throw new YobException(E_FAIL_TO_INVOKE_METHOD +
-                                               parentBuilderClass.getName());
-            }
-        }
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobSingleInstanceHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobSingleInstanceHandler.java
deleted file mode 100644
index eaa098d..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobSingleInstanceHandler.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-/**
- * Represents a single instance node handler in YANG object builder.
- */
-class YobSingleInstanceHandler extends YobHandler {
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobSingleInstanceLeafHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobSingleInstanceLeafHandler.java
deleted file mode 100644
index bf323ba..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobSingleInstanceLeafHandler.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.onosproject.yangutils.datamodel.YangLeaf;
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yangutils.datamodel.YangType;
-import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.yob.exception.YobException;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import static org.onosproject.yms.app.ydt.AppType.YOB;
-import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_INVOKE_METHOD;
-import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_INVOKE_METHOD;
-
-/**
- * Represents a single instance leaf node handler in YANG object builder.
- */
-class YobSingleInstanceLeafHandler extends YobHandler {
-
-    private static final Logger log =
-            LoggerFactory.getLogger(YobSingleInstanceLeafHandler.class);
-
-    @Override
-    public void createBuilder(YdtExtendedContext curNode,
-                              YdtExtendedContext rootNode,
-                              YangSchemaRegistry registry) {
-        // For single instance leaf no need to create an object.
-    }
-
-    @Override
-    public void buildObject(YdtExtendedContext ydtNode,
-                            YdtExtendedContext ydtRootNode,
-                            YangSchemaRegistry schemaRegistry) {
-        // For single instance leaf no need to build an object.
-    }
-
-    /**
-     * Set the leaf's value in the YANG object.
-     *
-     * @param leafNode       leaf YDT node
-     * @param schemaRegistry YANG schema registry
-     * @throws YobException if failed to invoke the leaf's setter
-     */
-    @Override
-    public void setInParent(YdtExtendedContext leafNode,
-                            YangSchemaRegistry schemaRegistry) {
-        Class<?> builderClass = null;
-
-        try {
-            YangSchemaNode schemaNode = leafNode.getYangSchemaNode();
-            while (schemaNode.getReferredSchema() != null) {
-                schemaNode = schemaNode.getReferredSchema();
-            }
-
-            String setterInParent = schemaNode.getJavaAttributeName();
-            YdtExtendedContext parentNode =
-                    (YdtExtendedContext) leafNode.getParent();
-            YobWorkBench workBench = (YobWorkBench) parentNode.getAppInfo(YOB);
-            Object builderObject = workBench
-                    .getParentBuilder(leafNode, schemaRegistry);
-            builderClass = builderObject.getClass();
-            if (leafNode.getValue() != null || ((YangLeaf) schemaNode)
-                    .getDataType().getDataType() == YangDataTypes.EMPTY) {
-                Field leafName = builderClass.getDeclaredField(setterInParent);
-                Method setterMethod = builderClass
-                        .getDeclaredMethod(setterInParent, leafName.getType());
-                YangType<?> yangType = ((YangLeaf) schemaNode).getDataType();
-                YobUtils.setDataFromStringValue(yangType.getDataType(), leafNode
-                                                        .getValue(),
-                                                setterMethod, builderObject,
-                                                leafNode);
-            } else {
-                YobUtils.setSelectLeaf(builderClass, leafNode,
-                                       schemaRegistry, builderObject);
-            }
-        } catch (NoSuchMethodException | InvocationTargetException |
-                IllegalAccessException | NoSuchFieldException e) {
-            log.error(L_FAIL_TO_INVOKE_METHOD, builderClass.getName());
-            throw new YobException(E_FAIL_TO_INVOKE_METHOD +
-                                           builderClass.getName());
-        }
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobUtils.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobUtils.java
deleted file mode 100644
index eff2f28..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobUtils.java
+++ /dev/null
@@ -1,785 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
-import org.onosproject.yangutils.datamodel.YangDerivedInfo;
-import org.onosproject.yangutils.datamodel.YangIdentity;
-import org.onosproject.yangutils.datamodel.YangIdentityRef;
-import org.onosproject.yangutils.datamodel.YangLeaf;
-import org.onosproject.yangutils.datamodel.YangLeafList;
-import org.onosproject.yangutils.datamodel.YangLeafRef;
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yangutils.datamodel.YangSchemaNodeContextInfo;
-import org.onosproject.yangutils.datamodel.YangType;
-import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.yob.exception.YobException;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.Base64;
-
-import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_AUGMENT_NODE;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
-import static org.onosproject.yms.app.ydt.AppType.YOB;
-import static org.onosproject.yms.app.yob.YobConstants.DEFAULT;
-import static org.onosproject.yms.app.yob.YobConstants.EVENT;
-import static org.onosproject.yms.app.yob.YobConstants.EVENT_SUBJECT;
-import static org.onosproject.yms.app.yob.YobConstants.E_DATA_TYPE_NOT_SUPPORT;
-import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_CREATE_OBJ;
-import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_GET_FIELD;
-import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_GET_METHOD;
-import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_INVOKE_METHOD;
-import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_LOAD_CLASS;
-import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_LOAD_CONSTRUCTOR;
-import static org.onosproject.yms.app.yob.YobConstants.E_INVALID_DATA_TREE;
-import static org.onosproject.yms.app.yob.YobConstants.E_INVALID_EMPTY_DATA;
-import static org.onosproject.yms.app.yob.YobConstants.FROM_STRING;
-import static org.onosproject.yms.app.yob.YobConstants.LEAF_IDENTIFIER;
-import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_GET_FIELD;
-import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_GET_METHOD;
-import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_INVOKE_METHOD;
-import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_LOAD_CLASS;
-import static org.onosproject.yms.app.yob.YobConstants.OF;
-import static org.onosproject.yms.app.yob.YobConstants.OP_PARAM;
-import static org.onosproject.yms.app.yob.YobConstants.PERIOD;
-import static org.onosproject.yms.app.yob.YobConstants.SELECT_LEAF;
-import static org.onosproject.yms.app.yob.YobConstants.TYPE;
-import static org.onosproject.yms.app.yob.YobConstants.VALUE_OF;
-
-/**
- * Utils to support object creation.
- */
-public final class YobUtils {
-
-    private static final Logger log = LoggerFactory.getLogger(YobUtils.class);
-
-    // no instantiation
-    private YobUtils() {
-    }
-
-    /**
-     * Sets data from string value in parent method.
-     *
-     * @param type                refers to YANG type
-     * @param leafValue           leafValue argument is used to set the value
-     *                            in method
-     * @param parentSetterMethod  Invokes the underlying method represented
-     *                            by this parentSetterMethod
-     * @param parentBuilderObject the parentBuilderObject is to invoke the
-     *                            underlying method
-     * @param ydtExtendedContext  ydtExtendedContext is used to get
-     *                            application related
-     *                            information maintained in YDT
-     * @throws InvocationTargetException if failed to invoke method
-     * @throws IllegalAccessException    if member cannot be accessed
-     * @throws NoSuchMethodException     if method is not found
-     */
-    static void setDataFromStringValue(YangDataTypes type, String leafValue,
-                                       Method parentSetterMethod,
-                                       Object parentBuilderObject,
-                                       YdtExtendedContext ydtExtendedContext)
-            throws InvocationTargetException, IllegalAccessException,
-            NoSuchMethodException {
-        switch (type) {
-            case INT8:
-                parentSetterMethod.invoke(parentBuilderObject,
-                                          Byte.parseByte(leafValue));
-                break;
-
-            case UINT8:
-            case INT16:
-                parentSetterMethod.invoke(parentBuilderObject,
-                                          Short.parseShort(leafValue));
-                break;
-
-            case UINT16:
-            case INT32:
-                parentSetterMethod.invoke(parentBuilderObject,
-                                          Integer.parseInt(leafValue));
-                break;
-
-            case UINT32:
-            case INT64:
-                parentSetterMethod.invoke(parentBuilderObject,
-                                          Long.parseLong(leafValue));
-                break;
-
-            case UINT64:
-                parentSetterMethod.invoke(parentBuilderObject,
-                                          new BigInteger(leafValue));
-                break;
-
-            case EMPTY:
-                if (leafValue == null || "".equals(leafValue)) {
-                    parentSetterMethod.invoke(parentBuilderObject, true);
-                } else {
-                    log.info(E_INVALID_EMPTY_DATA);
-                }
-                break;
-
-            case BOOLEAN:
-                parentSetterMethod.invoke(parentBuilderObject,
-                                          Boolean.parseBoolean(leafValue));
-                break;
-
-            case STRING:
-                parentSetterMethod.invoke(parentBuilderObject, leafValue);
-                break;
-
-            case BINARY:
-                byte[] value = Base64.getDecoder().decode(leafValue);
-                parentSetterMethod.invoke(parentBuilderObject, value);
-                break;
-
-            case BITS:
-                parseBitSetTypeInfo(ydtExtendedContext, parentSetterMethod,
-                                    parentBuilderObject, leafValue);
-                break;
-
-            case DECIMAL64:
-                parentSetterMethod.invoke(parentBuilderObject,
-                                          new BigDecimal(leafValue));
-                break;
-
-            case DERIVED:
-                parseDerivedTypeInfo(ydtExtendedContext, parentSetterMethod,
-                                     parentBuilderObject, leafValue, false);
-                break;
-
-            case IDENTITYREF:
-                parseIdentityRefInfo(ydtExtendedContext, parentSetterMethod,
-                                     parentBuilderObject, leafValue);
-                break;
-
-            case UNION:
-                parseDerivedTypeInfo(ydtExtendedContext, parentSetterMethod,
-                                     parentBuilderObject, leafValue, false);
-                break;
-
-            case LEAFREF:
-                parseLeafRefTypeInfo(ydtExtendedContext, parentSetterMethod,
-                                     parentBuilderObject, leafValue);
-                break;
-
-            case ENUMERATION:
-                parseDerivedTypeInfo(ydtExtendedContext, parentSetterMethod,
-                                     parentBuilderObject, leafValue, true);
-                break;
-
-            default:
-                log.error(E_DATA_TYPE_NOT_SUPPORT);
-        }
-    }
-
-    /**
-     * Sets the select leaf flag for leaf.
-     *
-     * @param builderClass   builder in which the select leaf flag needs to be
-     *                       set
-     * @param leafNode       YANG data tree leaf node
-     * @param schemaRegistry YANG schema registry
-     * @param builderObject  the parent build object on which to invoke
-     *                       the method
-     * @throws InvocationTargetException if method could not be invoked
-     * @throws IllegalAccessException    if method could not be accessed
-     * @throws NoSuchMethodException     if method does not exist
-     */
-    static void setSelectLeaf(Class builderClass,
-                              YdtExtendedContext leafNode,
-                              YangSchemaRegistry schemaRegistry,
-                              Object builderObject) throws NoSuchMethodException,
-            InvocationTargetException, IllegalAccessException {
-
-        YangSchemaNode parentSchema = ((YdtExtendedContext) leafNode
-                .getParent()).getYangSchemaNode();
-        while (parentSchema.getReferredSchema() != null) {
-            parentSchema = parentSchema.getReferredSchema();
-        }
-
-        while (((YangNode) parentSchema).getParent() != null) {
-            parentSchema = ((YangNode) parentSchema).getParent();
-        }
-
-        String qualName = getQualifiedinterface(parentSchema);
-        Class<?> regClass = schemaRegistry.getRegisteredClass(parentSchema);
-        if (regClass == null) {
-            throw new YobException(E_FAIL_TO_LOAD_CLASS + qualName);
-        }
-
-        Class<?> interfaceClass = null;
-        try {
-            interfaceClass = regClass.getClassLoader().loadClass(qualName);
-        } catch (ClassNotFoundException e) {
-            log.info(E_FAIL_TO_LOAD_CLASS, qualName);
-            return;
-        }
-
-        Class<?>[] innerClasses = interfaceClass.getClasses();
-        for (Class<?> innerEnumClass : innerClasses) {
-            if (innerEnumClass.getSimpleName().equals(LEAF_IDENTIFIER)) {
-                Method valueOfMethod = innerEnumClass
-                        .getDeclaredMethod(VALUE_OF, String.class);
-                String leafName = leafNode.getYangSchemaNode()
-                        .getJavaAttributeName().toUpperCase();
-                Object obj = valueOfMethod.invoke(null, leafName);
-                Method selectLeafMethod = builderClass
-                        .getDeclaredMethod(SELECT_LEAF, innerEnumClass);
-                selectLeafMethod.invoke(builderObject, obj);
-                break;
-            }
-        }
-    }
-
-    /**
-     * To set data into parent setter method from string value for derived type.
-     *
-     * @param leafValue           value to be set in method
-     * @param parentSetterMethod  the parent setter method to be invoked
-     * @param parentBuilderObject the parent build object on which to invoke the
-     *                            method
-     * @param ydtExtendedContext  application context
-     * @param isEnum              flag to check whether type is enum or derived
-     * @throws InvocationTargetException if failed to invoke method
-     * @throws IllegalAccessException    if member cannot be accessed
-     * @throws NoSuchMethodException     if the required method is not found
-     */
-    private static void parseDerivedTypeInfo(YdtExtendedContext ydtExtendedContext,
-                                             Method parentSetterMethod,
-                                             Object parentBuilderObject,
-                                             String leafValue, boolean isEnum)
-            throws InvocationTargetException, IllegalAccessException,
-            NoSuchMethodException {
-        Class<?> childSetClass = null;
-        Constructor<?> childConstructor = null;
-        Object childValue = null;
-        Object childObject = null;
-        Method childMethod = null;
-
-        YangSchemaNode yangJavaModule = ydtExtendedContext.getYangSchemaNode();
-        while (yangJavaModule.getReferredSchema() != null) {
-            yangJavaModule = yangJavaModule.getReferredSchema();
-        }
-
-        String qualifiedClassName = yangJavaModule.getJavaPackage() + PERIOD +
-                getCapitalCase(yangJavaModule.getJavaClassNameOrBuiltInType());
-        ClassLoader classLoader = getClassLoader(null, qualifiedClassName,
-                                                 ydtExtendedContext, null);
-        try {
-            childSetClass = classLoader.loadClass(qualifiedClassName);
-        } catch (ClassNotFoundException e) {
-            log.error(L_FAIL_TO_LOAD_CLASS, qualifiedClassName);
-        }
-
-        if (!isEnum) {
-            if (childSetClass != null) {
-                childConstructor = childSetClass.getDeclaredConstructor();
-            }
-
-            if (childConstructor != null) {
-                childConstructor.setAccessible(true);
-            }
-
-            try {
-                if (childConstructor != null) {
-                    childObject = childConstructor.newInstance();
-                }
-            } catch (InstantiationException e) {
-                log.error(E_FAIL_TO_LOAD_CONSTRUCTOR, qualifiedClassName);
-            }
-            if (childSetClass != null) {
-                childMethod = childSetClass
-                        .getDeclaredMethod(FROM_STRING, String.class);
-            }
-        } else {
-            if (childSetClass != null) {
-                childMethod = childSetClass.getDeclaredMethod(OF, String.class);
-            }
-        }
-        if (childMethod != null) {
-            childValue = childMethod.invoke(childObject, leafValue);
-        }
-
-        parentSetterMethod.invoke(parentBuilderObject, childValue);
-    }
-
-    /**
-     * To set data into parent setter method from string value for bits type.
-     *
-     * @param leafValue           value to be set in method
-     * @param parentSetterMethod  the parent setter method to be invoked
-     * @param parentBuilderObject the parent build object on which to invoke the
-     *                            method
-     * @param ydtExtendedContext  application context
-     * @throws InvocationTargetException if failed to invoke method
-     * @throws IllegalAccessException    if member cannot be accessed
-     * @throws NoSuchMethodException     if the required method is not found
-     */
-    private static void parseBitSetTypeInfo(YdtExtendedContext ydtExtendedContext,
-                                            Method parentSetterMethod,
-                                            Object parentBuilderObject,
-                                            String leafValue)
-            throws InvocationTargetException, IllegalAccessException,
-            NoSuchMethodException {
-        Class<?> childSetClass = null;
-        Object childValue = null;
-        Object childObject = null;
-        Method childMethod = null;
-
-        YangSchemaNode schemaNode = ydtExtendedContext.getYangSchemaNode();
-        while (schemaNode.getReferredSchema() != null) {
-            schemaNode = schemaNode.getReferredSchema();
-        }
-
-        YangSchemaNode parentSchema = ((YdtExtendedContext) ydtExtendedContext
-                .getParent()).getYangSchemaNode();
-        String qualifiedClassName = parentSchema.getJavaPackage() + PERIOD +
-                parentSchema.getJavaAttributeName().toLowerCase() +
-                PERIOD + getCapitalCase(schemaNode.getJavaAttributeName());
-
-        ClassLoader classLoader = getClassLoader(null, qualifiedClassName,
-                                                 ydtExtendedContext, null);
-
-        try {
-            childSetClass = classLoader.loadClass(qualifiedClassName);
-        } catch (ClassNotFoundException e) {
-            log.error(L_FAIL_TO_LOAD_CLASS, qualifiedClassName);
-        }
-
-        if (childSetClass != null) {
-            childMethod = childSetClass.getDeclaredMethod(FROM_STRING, String.class);
-        }
-        if (childMethod != null) {
-            childValue = childMethod.invoke(childObject, leafValue);
-        }
-
-        parentSetterMethod.invoke(parentBuilderObject, childValue);
-    }
-
-    /**
-     * To set data into parent setter method from string value for leafref type.
-     *
-     * @param leafValue           leaf value to be set
-     * @param parentSetterMethod  the parent setter method to be invoked
-     * @param parentBuilderObject the parent build object on which to invoke
-     *                            the method
-     * @param ydtExtendedContext  application context
-     * @throws InvocationTargetException if method could not be invoked
-     * @throws IllegalAccessException    if method could not be accessed
-     * @throws NoSuchMethodException     if method does not exist
-     */
-    private static void parseLeafRefTypeInfo(YdtExtendedContext ydtExtendedContext,
-                                             Method parentSetterMethod,
-                                             Object parentBuilderObject,
-                                             String leafValue)
-            throws InvocationTargetException, IllegalAccessException,
-            NoSuchMethodException {
-
-        YangSchemaNode schemaNode = ydtExtendedContext.getYangSchemaNode();
-        while (schemaNode.getReferredSchema() != null) {
-            schemaNode = schemaNode.getReferredSchema();
-        }
-
-        YangLeafRef leafRef;
-        if (schemaNode instanceof YangLeaf) {
-            leafRef = (YangLeafRef) ((YangLeaf) schemaNode)
-                    .getDataType().getDataTypeExtendedInfo();
-        } else {
-            leafRef = (YangLeafRef) ((YangLeafList) schemaNode)
-                    .getDataType().getDataTypeExtendedInfo();
-        }
-
-        YangType type = leafRef.getEffectiveDataType();
-        if (type.getDataType() == YangDataTypes.DERIVED &&
-                schemaNode.getJavaPackage().equals(YobConstants.JAVA_LANG)) {
-            /*
-             * If leaf is inside grouping, then its return type will be of type
-             * Object and if its actual type is derived type then get the
-             * effective built-in type and set the value.
-             */
-            YangDerivedInfo derivedInfo = (YangDerivedInfo) leafRef
-                    .getEffectiveDataType()
-                    .getDataTypeExtendedInfo();
-            YobUtils.setDataFromStringValue(derivedInfo.getEffectiveBuiltInType(),
-                                            leafValue, parentSetterMethod,
-                                            parentBuilderObject,
-                                            ydtExtendedContext);
-        } else {
-            YobUtils.setDataFromStringValue(type.getDataType(),
-                                            leafValue, parentSetterMethod,
-                                            parentBuilderObject,
-                                            ydtExtendedContext);
-        }
-    }
-
-    /**
-     * Updates class loader for all the classes.
-     *
-     * @param registry           YANG schema registry
-     * @param qualifiedClassName qualified class name
-     * @param curNode            YDT context
-     * @param rootNode           application root node
-     * @return current class loader
-     */
-    static ClassLoader getClassLoader(YangSchemaRegistry registry,
-                                      String qualifiedClassName,
-                                      YdtExtendedContext curNode,
-                                      YdtExtendedContext rootNode) {
-
-        if (rootNode != null && curNode == rootNode) {
-            YangSchemaNode curSchemaNode = curNode.getYangSchemaNode();
-            while (!(curSchemaNode instanceof RpcNotificationContainer)) {
-                curNode = (YdtExtendedContext) curNode.getParent();
-                if (curNode == null) {
-                    throw new YobException(E_INVALID_DATA_TREE);
-                }
-                curSchemaNode = curNode.getYangSchemaNode();
-            }
-
-            Class<?> regClass = registry.getRegisteredClass(curSchemaNode);
-            return regClass.getClassLoader();
-        }
-
-        YdtExtendedContext parent = (YdtExtendedContext) curNode.getParent();
-        YobWorkBench parentBuilderContainer = (YobWorkBench) parent.getAppInfo(YOB);
-        Object parentObj = parentBuilderContainer.getParentBuilder(curNode,
-                                                                   registry);
-        return parentObj.getClass().getClassLoader();
-    }
-
-    /**
-     * Returns the class loader to be used for the switched context schema node.
-     *
-     * @param curLoader current context class loader
-     * @param context   switched context
-     * @param registry  schema registry
-     * @return class loader to be used for the switched context schema node
-     */
-    static ClassLoader getTargetClassLoader(ClassLoader curLoader,
-                                            YangSchemaNodeContextInfo context,
-                                            YangSchemaRegistry registry) {
-        YangSchemaNode augmentSchemaNode = context.getContextSwitchedNode();
-        if (augmentSchemaNode.getYangSchemaNodeType() == YANG_AUGMENT_NODE) {
-            YangSchemaNode moduleNode = ((YangNode) augmentSchemaNode).getParent();
-
-            Class<?> moduleClass = registry.getRegisteredClass(moduleNode);
-            if (moduleClass == null) {
-                throw new YobException(E_FAIL_TO_LOAD_CLASS + moduleNode
-                        .getJavaClassNameOrBuiltInType());
-            }
-            return moduleClass.getClassLoader();
-        }
-        return curLoader;
-    }
-
-    /**
-     * Returns the schema node's module interface.
-     *
-     * @param schemaNode     YANG schema node
-     * @param schemaRegistry YANG schema registry
-     * @return schema node's module interface
-     */
-    public static Class<?> getModuleInterface(YangSchemaNode schemaNode,
-                                              YangSchemaRegistry schemaRegistry) {
-
-        YangNode yangNode = (YangNode) schemaNode;
-        while (yangNode.getReferredSchema() != null) {
-            yangNode = (YangNode) yangNode.getReferredSchema();
-        }
-
-        while (yangNode.getParent() != null) {
-            yangNode = yangNode.getParent();
-        }
-
-        String qualName = getQualifiedinterface(yangNode);
-        Class<?> regClass = schemaRegistry.getRegisteredClass(yangNode);
-        if (regClass == null) {
-            throw new YobException(E_FAIL_TO_LOAD_CLASS + qualName);
-        }
-
-        try {
-            return regClass.getClassLoader().loadClass(qualName);
-        } catch (ClassNotFoundException e) {
-            log.error(L_FAIL_TO_LOAD_CLASS, qualName);
-        }
-
-        return null;
-    }
-
-    /**
-     * Returns the qualified default / op param class.
-     *
-     * @param schemaNode schema node of the required class
-     * @return qualified default / op param class name
-     */
-    static String getQualifiedDefaultClass(YangSchemaNode schemaNode) {
-        String packageName = schemaNode.getJavaPackage();
-        String className = getCapitalCase(
-                schemaNode.getJavaClassNameOrBuiltInType());
-
-        if (schemaNode instanceof RpcNotificationContainer) {
-            return packageName + PERIOD + className + OP_PARAM;
-        }
-
-        return packageName + PERIOD + DEFAULT + className;
-    }
-
-    /**
-     * Returns the qualified interface name.
-     *
-     * @param schemaNode schema node of the required class
-     * @return qualified interface name
-     */
-    static String getQualifiedinterface(YangSchemaNode schemaNode) {
-        String packageName = schemaNode.getJavaPackage();
-        String className = getCapitalCase(
-                schemaNode.getJavaClassNameOrBuiltInType());
-
-        return packageName + PERIOD + className;
-    }
-
-    /**
-     * Returns the capital cased first letter of the given string.
-     *
-     * @param name string to be capital cased
-     * @return capital cased string
-     */
-    public static String getCapitalCase(String name) {
-        // TODO: It will be removed if common util is committed.
-        return name.substring(0, 1).toUpperCase() +
-                name.substring(1);
-    }
-
-    /**
-     * To set data into parent setter method from string value for identity ref.
-     *
-     * @param leafValue           leaf value to be set
-     * @param parentSetterMethod  the parent setter method to be invoked
-     * @param parentBuilderObject the parent build object on which to invoke
-     *                            the method
-     * @param ydtExtendedContext  application context
-     * @throws InvocationTargetException if method could not be invoked
-     * @throws IllegalAccessException    if method could not be accessed
-     * @throws NoSuchMethodException     if method does not exist
-     */
-    private static void parseIdentityRefInfo(YdtExtendedContext
-                                                     ydtExtendedContext,
-                                             Method parentSetterMethod,
-                                             Object parentBuilderObject,
-                                             String leafValue)
-            throws InvocationTargetException, IllegalAccessException,
-            NoSuchMethodException {
-        Class<?> childSetClass = null;
-        Object childValue = null;
-        Method childMethod = null;
-
-        YangSchemaNode yangJavaModule = ydtExtendedContext.getYangSchemaNode();
-        while (yangJavaModule.getReferredSchema() != null) {
-            yangJavaModule = yangJavaModule.getReferredSchema();
-        }
-
-        String qualifiedClassName = null;
-        YangType type;
-        if (yangJavaModule instanceof YangLeaf) {
-            type = ((YangLeaf) yangJavaModule).getDataType();
-        } else {
-            type = ((YangLeafList) yangJavaModule).getDataType();
-        }
-
-        if (type.getDataType() == YangDataTypes.LEAFREF && yangJavaModule
-                .getJavaPackage().equals(YobConstants.JAVA_LANG)) {
-            YangLeafRef leafref = ((YangLeafRef) type.getDataTypeExtendedInfo());
-            YangType effectiveType = leafref.getEffectiveDataType();
-            if (effectiveType.getDataType() == YangDataTypes.IDENTITYREF) {
-                YangIdentityRef identityref = ((YangIdentityRef) effectiveType
-                        .getDataTypeExtendedInfo());
-                YangIdentity identity = identityref.getReferredIdentity();
-                qualifiedClassName = identity.getJavaPackage() + PERIOD +
-                        getCapitalCase(identity.getJavaClassNameOrBuiltInType());
-            }
-        } else {
-            qualifiedClassName = yangJavaModule.getJavaPackage() + PERIOD +
-                    getCapitalCase(yangJavaModule.getJavaClassNameOrBuiltInType());
-        }
-
-        ClassLoader classLoader = getClassLoader(null, qualifiedClassName,
-                                                 ydtExtendedContext, null);
-        try {
-            childSetClass = classLoader.loadClass(qualifiedClassName);
-        } catch (ClassNotFoundException e) {
-            log.error(L_FAIL_TO_LOAD_CLASS, qualifiedClassName);
-        }
-
-        if (childSetClass != null) {
-            childMethod = childSetClass
-                    .getDeclaredMethod(FROM_STRING, String.class);
-        }
-
-        if (childMethod != null) {
-            childValue = childMethod.invoke(null, leafValue);
-        }
-
-        parentSetterMethod.invoke(parentBuilderObject, childValue);
-    }
-
-    /**
-     * Creates and sets default notification object in event subject object.
-     *
-     * @param defaultObj default notification object
-     * @param curNode    application context
-     * @param registry   YANG schema registry
-     * @return notification event subject object
-     */
-    public static Object createAndSetInEventSubjectInstance(Object defaultObj,
-                                                            YdtExtendedContext curNode,
-                                                            YangSchemaRegistry registry) {
-        YangSchemaNode childSchema = ((YdtExtendedContext) curNode
-                .getFirstChild()).getYangSchemaNode();
-        String packageName = childSchema.getJavaPackage();
-        String className = getCapitalCase(curNode.getYangSchemaNode()
-                                                  .getJavaClassNameOrBuiltInType());
-        String qualName = packageName + PERIOD + className + EVENT_SUBJECT;
-
-        ClassLoader classLoader = YobUtils.getClassLoader(registry, qualName,
-                                                          curNode, curNode);
-
-        Object eventSubObj;
-        Class<?> eventSubjectClass = null;
-        try {
-            eventSubjectClass = classLoader.loadClass(qualName);
-            eventSubObj = eventSubjectClass.newInstance();
-        } catch (ClassNotFoundException e) {
-            log.error(E_FAIL_TO_LOAD_CLASS, className);
-            throw new YobException(E_FAIL_TO_LOAD_CLASS +
-                                           qualName);
-        } catch (InstantiationException e) {
-            log.error(E_FAIL_TO_CREATE_OBJ, className);
-            throw new YobException(E_FAIL_TO_CREATE_OBJ +
-                                           eventSubjectClass.getName());
-        } catch (IllegalAccessException e) {
-            log.error(L_FAIL_TO_INVOKE_METHOD, className);
-            throw new YobException(E_FAIL_TO_INVOKE_METHOD +
-                                           eventSubjectClass.getName());
-        }
-
-        setInEventSubject(((YdtExtendedContext) curNode.getFirstChild()),
-                          eventSubObj, defaultObj);
-        return eventSubObj;
-    }
-
-    /**
-     * Sets the default notification object in event subject class.
-     *
-     * @param ydtNode     application context
-     * @param eventSubObj notification event subject instance
-     * @param defaultObj  default notification instance
-     */
-    public static void setInEventSubject(YdtExtendedContext ydtNode,
-                                         Object eventSubObj,
-                                         Object defaultObj) {
-
-        Class<?> eventSubjectClass = eventSubObj.getClass();
-        String className = eventSubjectClass.getName();
-        String setter = ydtNode.getYangSchemaNode().getJavaAttributeName();
-
-        try {
-            Class<?> type = null;
-            Field fieldName = eventSubjectClass.getDeclaredField(setter);
-            if (fieldName != null) {
-                type = fieldName.getType();
-            }
-
-            Method method;
-            method = eventSubjectClass.getDeclaredMethod(setter, type);
-            method.invoke(eventSubObj, defaultObj);
-        } catch (NoSuchFieldException e) {
-            log.error(L_FAIL_TO_GET_FIELD, className);
-            throw new YobException(E_FAIL_TO_GET_FIELD + className);
-        } catch (NoSuchMethodException e) {
-            log.error(L_FAIL_TO_GET_METHOD, className);
-            throw new YobException(E_FAIL_TO_GET_METHOD + className);
-        } catch (InvocationTargetException | IllegalAccessException e) {
-            log.error(L_FAIL_TO_INVOKE_METHOD, className);
-            throw new YobException(E_FAIL_TO_INVOKE_METHOD + className);
-        }
-    }
-
-    /**
-     * Creates an object of notification event class and sets event subject
-     * in event class.
-     *
-     * @param eventSubObj instance of event subject class
-     * @param curNode     current YDT node
-     * @param registry    YANG schema registry
-     * @return notification event object
-     */
-    public static Object createAndSetInEventInstance(Object eventSubObj,
-                                                     YdtExtendedContext curNode,
-                                                     YangSchemaRegistry registry) {
-        YangSchemaNode childSchema = ((YdtExtendedContext) curNode
-                .getFirstChild()).getYangSchemaNode();
-        String packageName = childSchema.getJavaPackage();
-        String className = getCapitalCase(curNode.getYangSchemaNode()
-                                                  .getJavaClassNameOrBuiltInType());
-        String qualName = packageName + PERIOD + className + EVENT;
-
-        try {
-            ClassLoader classLoader = YobUtils.getClassLoader(registry, qualName,
-                                                              curNode, curNode);
-            Class<?> eventClass = classLoader.loadClass(qualName);
-            Class<?>[] innerClasses = eventClass.getClasses();
-            Object typeObj = null;
-            for (Class<?> innerEnumClass : innerClasses) {
-                if (innerEnumClass.getSimpleName().equals(TYPE)) {
-                    Method valueOfMethod = innerEnumClass
-                            .getDeclaredMethod(VALUE_OF, String.class);
-                    String eventType = getEnumJavaAttribute(childSchema.getName())
-                            .toUpperCase();
-                    typeObj = valueOfMethod.invoke(null, eventType);
-                    break;
-                }
-            }
-
-            Constructor constructor = eventClass
-                    .getDeclaredConstructor(typeObj.getClass(),
-                                            eventSubObj.getClass());
-            constructor.setAccessible(true);
-            return constructor.newInstance(typeObj, eventSubObj);
-        } catch (ClassNotFoundException e) {
-            log.error(L_FAIL_TO_INVOKE_METHOD, className);
-            throw new YobException(E_FAIL_TO_INVOKE_METHOD + className);
-        } catch (InstantiationException e) {
-            log.error(E_FAIL_TO_CREATE_OBJ, className);
-            throw new YobException(E_FAIL_TO_CREATE_OBJ + className);
-        } catch (NoSuchMethodException e) {
-            log.error(L_FAIL_TO_GET_METHOD, className);
-            throw new YobException(E_FAIL_TO_GET_METHOD + className);
-        } catch (InvocationTargetException | IllegalAccessException e) {
-            log.error(L_FAIL_TO_INVOKE_METHOD, className);
-            throw new YobException(E_FAIL_TO_INVOKE_METHOD + className);
-        }
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobWorkBench.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobWorkBench.java
deleted file mode 100644
index 36ce736..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobWorkBench.java
+++ /dev/null
@@ -1,463 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yangutils.datamodel.YangSchemaNodeContextInfo;
-import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier;
-import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.yob.exception.YobException;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.onosproject.yms.ydt.YdtContextOperationType;
-import org.onosproject.yms.ydt.YdtType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_AUGMENT_NODE;
-import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_CHOICE_NODE;
-import static org.onosproject.yms.app.ydt.AppType.YOB;
-import static org.onosproject.yms.app.yob.YobConstants.ADD_AUGMENT_METHOD;
-import static org.onosproject.yms.app.yob.YobConstants.ADD_TO;
-import static org.onosproject.yms.app.yob.YobConstants.BUILD;
-import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_BUILD;
-import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_GET_FIELD;
-import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_GET_METHOD;
-import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_INVOKE_METHOD;
-import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_LOAD_CLASS;
-import static org.onosproject.yms.app.yob.YobConstants.E_HAS_NO_CHILD;
-import static org.onosproject.yms.app.yob.YobConstants.E_SET_OP_TYPE_FAIL;
-import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_BUILD;
-import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_GET_FIELD;
-import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_GET_METHOD;
-import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_INVOKE_METHOD;
-import static org.onosproject.yms.app.yob.YobConstants.ONOS_YANG_OP_TYPE;
-import static org.onosproject.yms.app.yob.YobConstants.OP_TYPE;
-import static org.onosproject.yms.app.yob.YobConstants.VALUE_OF;
-import static org.onosproject.yms.app.yob.YobConstants.YANG;
-import static org.onosproject.yms.app.yob.YobUtils.getCapitalCase;
-import static org.onosproject.yms.app.yob.YobUtils.getModuleInterface;
-import static org.onosproject.yms.app.yob.YobUtils.getQualifiedDefaultClass;
-import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_NODE;
-import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_NODE;
-
-/**
- * Represents the YANG object builder's work bench corresponding to a YANG data
- * tree node.
- */
-class YobWorkBench {
-
-    private static final Logger log =
-            LoggerFactory.getLogger(YobWorkBench.class);
-
-    /**
-     * Class loader to be used to load the class.
-     */
-    private ClassLoader classLoader;
-
-    /**
-     * Map of the non schema descendant objects.
-     */
-    private Map<YangSchemaNodeIdentifier, YobWorkBench> attributeMap =
-            new HashMap<>();
-
-    /**
-     * Reference for data-model schema node.
-     */
-    private YangSchemaNode yangSchemaNode;
-
-    /**
-     * builder object or the built object corresponding to the current schema
-     * node.
-     */
-    private YobBuilderOrBuiltObject builderOrBuiltObject;
-
-    /**
-     * Setter method to be used in parent builder.
-     */
-    private String setterInParent;
-
-    /**
-     * Returns the builder container with the mapping schema being initialized.
-     *
-     * @param yangSchemaNode     mapping schema node
-     * @param classLoader        class loader
-     * @param qualifiedClassName qualified class name
-     * @param setterInParent     setter method in parent
-     */
-    YobWorkBench(YangSchemaNode yangSchemaNode, ClassLoader classLoader,
-                 String qualifiedClassName, String setterInParent) {
-        this.yangSchemaNode = yangSchemaNode;
-        this.classLoader = classLoader;
-        this.setterInParent = setterInParent;
-        this.builderOrBuiltObject =
-                new YobBuilderOrBuiltObject(qualifiedClassName, classLoader);
-    }
-
-    /**
-     * Set the attribute in a builder object.
-     *
-     * @param builder   builder object in which the attribute needs to be set
-     * @param setter    setter method in parent
-     * @param nodeType  type of node to set
-     * @param attribute attribute to set in the builder
-     */
-    private static void setObjectInBuilder(Object builder, String setter,
-                                           YdtType nodeType, Object attribute) {
-        Class<?> builderClass = builder.getClass();
-        String builderClassName = builderClass.getName();
-        try {
-            Class<?> type = null;
-            Field fieldName = builderClass.getDeclaredField(setter);
-            if (fieldName != null) {
-                type = fieldName.getType();
-            }
-
-            Method method;
-            if (nodeType == MULTI_INSTANCE_NODE) {
-                if (fieldName != null) {
-                    ParameterizedType genericTypes =
-                            (ParameterizedType) fieldName.getGenericType();
-                    type = (Class<?>) genericTypes.getActualTypeArguments()[0];
-                }
-                method = builderClass.getDeclaredMethod(
-                        ADD_TO + getCapitalCase(setter), type);
-            } else {
-                method = builderClass.getDeclaredMethod(setter, type);
-            }
-
-            method.invoke(builder, attribute);
-        } catch (NoSuchFieldException e) {
-            log.error(L_FAIL_TO_GET_FIELD, builderClassName);
-            throw new YobException(E_FAIL_TO_GET_FIELD + builderClassName);
-        } catch (NoSuchMethodException e) {
-            log.error(L_FAIL_TO_GET_METHOD, builderClassName);
-            throw new YobException(E_FAIL_TO_GET_METHOD + builderClassName);
-        } catch (InvocationTargetException | IllegalAccessException e) {
-            log.error(L_FAIL_TO_INVOKE_METHOD, builderClassName);
-            throw new YobException(E_FAIL_TO_INVOKE_METHOD + builderClassName);
-        }
-    }
-
-    private static void addInAugmentation(Object builder, String className,
-                                          Object instance) {
-        Class<?>[] interfaces = instance.getClass().getInterfaces();
-        if (interfaces == null) {
-            throw new YobException(E_FAIL_TO_LOAD_CLASS + className);
-        }
-
-        int i;
-        for (i = 0; i < interfaces.length; i++) {
-            if (interfaces[i].getName().equals(className)) {
-                break;
-            }
-        }
-        if (i == interfaces.length) {
-            throw new YobException(E_FAIL_TO_LOAD_CLASS + className);
-        }
-
-        Class<?> builderClass = builder.getClass();
-        String builderClassName = builderClass.getName();
-        try {
-
-            Method method = builderClass.getDeclaredMethod(ADD_AUGMENT_METHOD,
-                                                           Object.class,
-                                                           Class.class);
-            method.invoke(builder, instance, interfaces[i]);
-        } catch (NoSuchMethodException e) {
-            log.error(L_FAIL_TO_GET_METHOD, builderClassName);
-            throw new YobException(E_FAIL_TO_GET_METHOD + builderClassName);
-        } catch (InvocationTargetException | IllegalAccessException e) {
-            log.error(L_FAIL_TO_INVOKE_METHOD, builderClassName);
-            throw new YobException(E_FAIL_TO_INVOKE_METHOD + builderClassName);
-        }
-
-    }
-
-    /**
-     * Creates a new builder container object corresponding to a context
-     * switch schema node.
-     *
-     * @param childContext schema context of immediate child
-     * @param targetNode   final node whose parent builder is
-     *                     required
-     * @param curWorkBench current context builder container
-     * @param registry     schema registry
-     * @return new builder container object corresponding to a context
-     * switch schema node
-     */
-    private static YobWorkBench getNewChildWorkBench(
-            YangSchemaNodeContextInfo childContext,
-            YangSchemaNodeIdentifier targetNode, YobWorkBench curWorkBench,
-            YangSchemaRegistry registry) {
-
-        YangSchemaNode ctxSwitchedNode = childContext.getContextSwitchedNode();
-        String name;
-
-         /* This is the first child trying to set its object in the
-         current context. */
-        String setterInParent = ctxSwitchedNode.getJavaAttributeName();
-
-        /* If current switched context is choice, then case class needs to be
-         used. */
-        if (ctxSwitchedNode.getYangSchemaNodeType() == YANG_CHOICE_NODE) {
-            try {
-                childContext = ctxSwitchedNode.getChildSchema(targetNode);
-                ctxSwitchedNode = childContext.getContextSwitchedNode();
-                name = getQualifiedDefaultClass(
-                        childContext.getContextSwitchedNode());
-
-            } catch (DataModelException e) {
-                throw new YobException(ctxSwitchedNode.getName() +
-                                               E_HAS_NO_CHILD +
-                                               targetNode.getName());
-            }
-        } else if (ctxSwitchedNode.getYangSchemaNodeType() ==
-                YANG_AUGMENT_NODE) {
-            name = getQualifiedDefaultClass(ctxSwitchedNode);
-            setterInParent = YobUtils.getQualifiedinterface(ctxSwitchedNode);
-        } else {
-            name = getQualifiedDefaultClass(childContext.getSchemaNode());
-        }
-
-        ClassLoader newClassesLoader = YobUtils.getTargetClassLoader(
-                curWorkBench.classLoader, childContext, registry);
-
-        return new YobWorkBench(ctxSwitchedNode, newClassesLoader, name,
-                                setterInParent);
-    }
-
-    /**
-     * Returns the builder object or the built object corresponding to the
-     * current schema node.
-     *
-     * @return builder or built object
-     */
-    YobBuilderOrBuiltObject getBuilderOrBuiltObject() {
-        return builderOrBuiltObject;
-    }
-
-    /**
-     * Returns the parent builder object in which the child object can be set.
-     *
-     * @param node     child YDT node
-     * @param registry schema registry
-     * @return parent builder object
-     */
-    Object getParentBuilder(YdtExtendedContext node,
-                            YangSchemaRegistry registry) {
-
-        // Descendant schema node for whom the builder is required.
-        YangSchemaNodeIdentifier targetNode =
-                node.getYangSchemaNode().getYangSchemaNodeIdentifier();
-
-        //Current builder container
-        YobWorkBench curWorkBench = this;
-
-        YangSchemaNode nonSchemaHolder;
-        do {
-
-            //Current Schema node context
-            YangSchemaNodeContextInfo schemaContext;
-            try {
-                //Find the new schema context node.
-                schemaContext = curWorkBench.yangSchemaNode
-                        .getChildSchema(targetNode);
-
-            } catch (DataModelException e) {
-                throw new YobException(yangSchemaNode.getName() +
-                                               E_HAS_NO_CHILD +
-                                               targetNode.getName());
-            }
-
-            nonSchemaHolder = schemaContext.getContextSwitchedNode();
-
-            //If the descendant schema node is in switched context
-            if (nonSchemaHolder != null) {
-
-                YangSchemaNodeIdentifier nonSchemaIdentifier =
-                        nonSchemaHolder.getYangSchemaNodeIdentifier();
-
-                //check if the descendant builder container is already available
-                YobWorkBench childWorkBench =
-                        curWorkBench.attributeMap.get(nonSchemaIdentifier);
-
-                if (childWorkBench == null) {
-                    YobWorkBench newWorkBench = getNewChildWorkBench(
-                            schemaContext, targetNode, curWorkBench, registry);
-
-                    curWorkBench.attributeMap.put(nonSchemaIdentifier,
-                                                  newWorkBench);
-                    curWorkBench = newWorkBench;
-                } else {
-                    curWorkBench = childWorkBench;
-                }
-            }
-
-        } while (nonSchemaHolder != null);
-
-        return curWorkBench.builderOrBuiltObject.getBuilderObject();
-    }
-
-    /**
-     * Set the operation type attribute and build the object from the builder
-     * object, by invoking the build method.
-     *
-     * @param operationType  data tree node
-     * @param schemaRegistry YANG schema registry
-     */
-    void buildObject(YdtContextOperationType operationType,
-                     YangSchemaRegistry schemaRegistry) {
-
-        buildNonSchemaAttributes(operationType, schemaRegistry);
-
-        Object builderObject = builderOrBuiltObject.getBuilderObject();
-        Class<?> defaultBuilderClass = builderOrBuiltObject.yangBuilderClass;
-
-        //set the operation type
-        setOperationType(operationType, schemaRegistry);
-
-        // Invoking the build method to get built object from build method.
-        try {
-            Method method = defaultBuilderClass.getDeclaredMethod(BUILD);
-            if (method == null) {
-                log.error(L_FAIL_TO_GET_METHOD, defaultBuilderClass.getName());
-                throw new YobException(E_FAIL_TO_GET_METHOD +
-                                               defaultBuilderClass.getName());
-            }
-            Object builtObject = method.invoke(builderObject);
-            // The built object will be maintained in ydt context and same will
-            // be used while setting into parent method.
-            builderOrBuiltObject.setBuiltObject(builtObject);
-
-        } catch (NoSuchMethodException | InvocationTargetException |
-                IllegalAccessException e) {
-            log.error(L_FAIL_TO_BUILD, defaultBuilderClass.getName());
-            throw new YobException(E_FAIL_TO_BUILD +
-                                           defaultBuilderClass.getName());
-        }
-    }
-
-    /**
-     * Set the operation type in the built object from the YDT node.
-     * <p>
-     * It needs to be invoked only for the workbench corresponding to the
-     * schema YDT nodes, non schema node without the YDT node should not
-     * invoke this, as it is not applicable to it.
-     *
-     * @param ydtoperation   schema data tree node
-     * @param schemaRegistry YANG schema registry
-     */
-    private void setOperationType(YdtContextOperationType ydtoperation,
-                                  YangSchemaRegistry schemaRegistry) {
-
-        if (ydtoperation == null) {
-            return;
-        }
-
-        Object builderObject = builderOrBuiltObject.getBuilderObject();
-        Class<?> defaultBuilderClass = builderOrBuiltObject.yangBuilderClass;
-        Class<?>[] intfClass = builderOrBuiltObject.yangDefaultClass
-                .getInterfaces();
-        String setterName = YANG + intfClass[0].getSimpleName() + OP_TYPE;
-
-        // Setting the value into YANG node operation type from ydtContext
-        // operation type.
-        try {
-            Class<?> interfaceClass;
-            interfaceClass = getModuleInterface(yangSchemaNode,
-                                                schemaRegistry);
-            Object operationType;
-            Class<?>[] innerClasses = interfaceClass.getClasses();
-            for (Class<?> innerEnumClass : innerClasses) {
-                if (innerEnumClass.getSimpleName().equals(ONOS_YANG_OP_TYPE)) {
-                    Method valueOfMethod = innerEnumClass
-                            .getDeclaredMethod(VALUE_OF, String.class);
-                    operationType = valueOfMethod.invoke(null, ydtoperation.
-                            toString());
-                    Field operationTypeField = defaultBuilderClass
-                            .getDeclaredField(setterName);
-                    operationTypeField.setAccessible(true);
-                    operationTypeField.set(builderObject, operationType);
-                    break;
-                }
-            }
-        } catch (NoSuchMethodException |
-                InvocationTargetException | IllegalAccessException |
-                IllegalArgumentException e) {
-            log.error(E_SET_OP_TYPE_FAIL);
-            throw new YobException(E_SET_OP_TYPE_FAIL);
-        } catch (NoSuchFieldException e) {
-            log.error(E_SET_OP_TYPE_FAIL);
-        }
-    }
-
-    /**
-     * build the non schema objects and maintain it in the contained schema
-     * node.
-     *
-     * @param operationType  contained schema node
-     * @param schemaRegistry YANG schema registry
-     */
-    private void buildNonSchemaAttributes(YdtContextOperationType operationType,
-                                          YangSchemaRegistry schemaRegistry) {
-        for (Map.Entry<YangSchemaNodeIdentifier, YobWorkBench> entry :
-                attributeMap.entrySet()) {
-            YobWorkBench childWorkBench = entry.getValue();
-            childWorkBench.buildObject(operationType, schemaRegistry);
-
-            if (childWorkBench.yangSchemaNode.getYangSchemaNodeType() ==
-                    YANG_AUGMENT_NODE) {
-                addInAugmentation(builderOrBuiltObject.getBuilderObject(),
-                                  childWorkBench.setterInParent,
-                                  childWorkBench.getBuilderOrBuiltObject()
-                                          .getBuiltObject());
-                continue;
-            }
-
-            setObjectInBuilder(
-                    builderOrBuiltObject.getBuilderObject(),
-                    childWorkBench.setterInParent,
-                    SINGLE_INSTANCE_NODE,
-                    childWorkBench.getBuilderOrBuiltObject().getBuiltObject());
-        }
-    }
-
-    /**
-     * Sets the YANG built object in corresponding parent class method.
-     *
-     * @param childnode      ydtExtendedContext is used to get application
-     *                       related information maintained in YDT
-     * @param schemaRegistry YANG schema registry
-     */
-    public void setObject(YdtExtendedContext childnode,
-                          YangSchemaRegistry schemaRegistry) {
-        Object builder = getParentBuilder(childnode, schemaRegistry);
-        YobWorkBench childWorkBench = (YobWorkBench) childnode.getAppInfo(YOB);
-
-        setObjectInBuilder(builder, childWorkBench.setterInParent,
-                           childnode.getYdtType(), childWorkBench
-                                   .builderOrBuiltObject.getBuiltObject());
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/exception/YobException.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/exception/YobException.java
deleted file mode 100644
index 8da4ff1..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/exception/YobException.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob.exception;
-
-/**
- * Represents base class for exceptions in YOB operations.
- */
-public class YobException
-        extends RuntimeException {
-
-    private static final long serialVersionUID = 20160211L;
-
-    /**
-     * Creates a new YOB exception with given message.
-     *
-     * @param message the detail of exception in string
-     */
-    public YobException(String message) {
-        super(message);
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/exception/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/exception/package-info.java
deleted file mode 100644
index 1f6c7fb..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/exception/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * YANG object builder exceptions.
- */
-package org.onosproject.yms.app.yob.exception;
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/package-info.java
deleted file mode 100644
index 1cd3508..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of YANG object builder. YOB handles creation of YANG
- * modeled objects from YDT.
- */
-package org.onosproject.yms.app.yob;
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ypm/YpmManager.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ypm/YpmManager.java
deleted file mode 100644
index 8e6238f..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ypm/YpmManager.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ypm;
-
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ypm.DefaultYpmNode;
-import org.onosproject.yms.ypm.YpmContext;
-import org.onosproject.yms.ypm.YpmService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Represents implementation of YANG protocol metadata manager.
- */
-@Component(immediate = true, service = YpmService.class)
-public class YpmManager implements YpmService {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-    private YpmContext rootYpmNode;
-
-    @Activate
-    public void activate() {
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        log.info("Stopped");
-    }
-
-    @Override
-    public YpmContext getProtocolData(YdtContext rootYdtNode) {
-        if (rootYdtNode == null) {
-            log.debug("Input data is null. So, will not proceed.");
-            return null;
-        }
-
-        // Iterate through YDT and search the path in YPM tree and create new YPM tree equivalent to given YDT
-        // and return it.
-        if (rootYpmNode == null) {
-            log.debug("YPM tree has no data.");
-            return null;
-        }
-
-        YdtContext currentYdtNode = rootYdtNode;
-        YpmContext currentYpmNode = rootYpmNode;
-        YpmContext rootRetYpmNode = new DefaultYpmNode(currentYdtNode.getName());
-        YpmContext currRetYpmNode = rootRetYpmNode;
-        while (currentYdtNode != null) {
-            // Each ypm node can have children. So, create new corresponding ypm child
-            // and add it to new returning ypm tree, otherwise return new ypm tree.
-            YdtContext nextNode = currentYdtNode.getFirstChild();
-            if (nextNode != null) {
-                YpmContext ypmChild = currentYpmNode.getChild(nextNode.getName());
-                if (ypmChild != null) {
-                    currRetYpmNode.addChild(ypmChild.getName());
-                } else {
-                    return rootRetYpmNode;
-                }
-                currentYdtNode = nextNode;
-                currentYpmNode = currentYpmNode.getChild(nextNode.getName());
-                currRetYpmNode = currRetYpmNode.getChild(nextNode.getName());
-                currRetYpmNode.setMetaData(currentYpmNode.getMetaData());
-                continue;
-            }
-
-            // No child nodes, so walk tree
-            while (currentYdtNode != null) {
-                // Each ypm node can have sibling. So, create new corresponding ypm sibling node
-                // and add it to new returning ypm tree, otherwise return new ypm tree.
-                nextNode = currentYdtNode.getNextSibling();
-                if (nextNode != null) {
-                    YpmContext ypmSibling = currentYpmNode.getSibling(nextNode.getName());
-                    if (ypmSibling != null) {
-                        currRetYpmNode.addSibling(ypmSibling.getName());
-                    } else {
-                        return rootRetYpmNode;
-                    }
-                    currentYdtNode = nextNode;
-                    currentYpmNode = currentYpmNode.getSibling(nextNode.getName());
-                    currRetYpmNode = currRetYpmNode.getSibling(nextNode.getName());
-                    currRetYpmNode.setMetaData(currentYpmNode.getMetaData());
-                    break;
-                }
-
-                // Move up
-                if (currentYdtNode == rootYdtNode) {
-                    currentYdtNode = null;
-                } else {
-                    currentYdtNode = currentYdtNode.getParent();
-                    currentYpmNode = currentYpmNode.getParent();
-                    currRetYpmNode = currRetYpmNode.getParent();
-                }
-            }
-        }
-
-        return rootRetYpmNode;
-    }
-
-    @Override
-    public void setProtocolData(YdtContext rootYdtNode, Object data) {
-        if (rootYdtNode == null || data == null) {
-            log.debug("Input data is null. So, will not proceed.");
-            return;
-        }
-
-        // Iterate through YDT and add each node of this path to ypm tree if it is not exists
-        YdtContext currentYdtNode = rootYdtNode;
-        YpmContext currentYpmNode = rootYpmNode;
-        while (currentYdtNode != null) {
-            // Check the ypm root node first
-            if (rootYpmNode == null) {
-                rootYpmNode = new DefaultYpmNode(currentYdtNode.getName());
-                currentYpmNode = rootYpmNode;
-                // In logical node, should not set protocol metadata
-            }
-
-            // Move down to first child
-            YdtContext nextNode = currentYdtNode.getFirstChild();
-            if (nextNode != null) {
-                // Each ypm node can have sibling. So, get corresponding sibling node, otherwise create it.
-                if (currentYpmNode.getChild(nextNode.getName()) == null) {
-                    currentYpmNode.addChild(nextNode.getName());
-                }
-                currentYpmNode = currentYpmNode.getChild(nextNode.getName());
-                // Set/update protocol metadata
-                currentYpmNode.setMetaData(data);
-                currentYdtNode = nextNode;
-                continue;
-            }
-
-            // No child nodes, so walk tree
-            while (currentYdtNode != null) {
-                // Move to sibling if possible.
-                nextNode = currentYdtNode.getNextSibling();
-                if (nextNode != null) {
-                    // Each ypm node can have children (sibling). So, get corresponding ypm child, otherwise create it.
-                    if (currentYpmNode.getSibling(nextNode.getName()) == null) {
-                        currentYpmNode.addSibling(nextNode.getName());
-                    }
-                    currentYpmNode = currentYpmNode.getSibling(nextNode.getName());
-                    // Set/update protocol metadata
-                    currentYpmNode.setMetaData(data);
-                    currentYdtNode = nextNode;
-                    break;
-                }
-
-                // Move up
-                if (currentYdtNode == rootYdtNode) {
-                    currentYdtNode = null;
-                } else {
-                    currentYdtNode = currentYdtNode.getParent();
-                    currentYpmNode = currentYpmNode.getParent();
-                }
-            }
-        }
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ypm/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ypm/package-info.java
deleted file mode 100644
index 1faafe0..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ypm/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of YANG protocol metadata. YPM maintains protocol
- * specific information for YANG modeled data.
- */
-package org.onosproject.yms.app.ypm;
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleIdentifier.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleIdentifier.java
deleted file mode 100644
index 94295b2..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleIdentifier.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ysr;
-
-import org.onosproject.yms.ysr.YangModuleIdentifier;
-
-import java.util.Comparator;
-import java.util.Objects;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-/**
- * Representation of default YANG module identifier.
- */
-public class DefaultYangModuleIdentifier implements YangModuleIdentifier,
-        Comparator<YangModuleIdentifier> {
-
-    private final String moduleName;
-    private final String revision;
-
-    /**
-     * Creates an instance of YANG module identifier.
-     *
-     * @param moduleName module's name
-     * @param revision   module's revision
-     */
-    DefaultYangModuleIdentifier(String moduleName, String revision) {
-        this.moduleName = moduleName;
-        this.revision = revision;
-    }
-
-    @Override
-    public String moduleName() {
-        return moduleName;
-    }
-
-    @Override
-    public String revision() {
-        return revision;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(moduleName, revision);
-    }
-
-    @Override
-    public int compare(YangModuleIdentifier id1, YangModuleIdentifier id2) {
-        int compare = id1.moduleName().compareTo(id2.moduleName());
-        if (compare != 0) {
-            return compare;
-        }
-        return id1.revision().compareTo(id2.revision());
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultYangModuleIdentifier) {
-            DefaultYangModuleIdentifier that = (DefaultYangModuleIdentifier) obj;
-            return Objects.equals(moduleName, that.moduleName) &&
-                    Objects.equals(revision, that.revision);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("moduleName", moduleName)
-                .add("revision", revision)
-                .toString();
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleInformation.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleInformation.java
deleted file mode 100644
index f2213a8..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleInformation.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ysr;
-
-import com.google.common.collect.ImmutableList;
-import org.onosproject.yangutils.datamodel.YangNamespace;
-import org.onosproject.yms.ysr.YangModuleIdentifier;
-import org.onosproject.yms.ysr.YangModuleInformation;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-/**
- * Representation of default YANG module information.
- */
-class DefaultYangModuleInformation implements YangModuleInformation {
-
-    private final YangModuleIdentifier moduleIdentifier;
-    private final YangNamespace nameSpace;
-    private final List<String> features;
-    private final List<YangModuleIdentifier> subModuleIdentifiers;
-
-    /**
-     * Creates an instance of YANG module information.
-     *
-     * @param moduleIdentifier module identifier
-     * @param nameSpace        name space of module
-     */
-    DefaultYangModuleInformation(YangModuleIdentifier moduleIdentifier,
-                                 YangNamespace nameSpace) {
-        this.moduleIdentifier = moduleIdentifier;
-        this.nameSpace = nameSpace;
-        subModuleIdentifiers = new ArrayList<>();
-        features = new ArrayList<>();
-    }
-
-    @Override
-    public YangModuleIdentifier moduleIdentifier() {
-        return moduleIdentifier;
-    }
-
-    public YangNamespace namespace() {
-        return nameSpace;
-    }
-
-    @Override
-    public List<String> featureList() {
-        return ImmutableList.copyOf(features);
-    }
-
-    @Override
-    public List<YangModuleIdentifier> subModuleIdentifiers() {
-        return ImmutableList.copyOf(subModuleIdentifiers);
-    }
-
-    /**
-     * Adds to YANG sub module identifier list.
-     *
-     * @param subModuleIdentifier YANG sub module identifier
-     */
-    void addSubModuleIdentifiers(YangModuleIdentifier subModuleIdentifier) {
-        subModuleIdentifiers.add(subModuleIdentifier);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(moduleIdentifier, subModuleIdentifiers, nameSpace, features);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultYangModuleInformation) {
-            DefaultYangModuleInformation that = (DefaultYangModuleInformation) obj;
-            return Objects.equals(moduleIdentifier, that.moduleIdentifier) &&
-                    Objects.equals(nameSpace, that.nameSpace) &&
-                    Objects.equals(features, that.features) &&
-                    Objects.equals(subModuleIdentifiers, that.subModuleIdentifiers);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("yangModuleIdentifier", moduleIdentifier)
-                .add("nameSpace", nameSpace)
-                .add("features", features)
-                .add("yangModuleIdentifiers", subModuleIdentifiers)
-                .toString();
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleLibrary.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleLibrary.java
deleted file mode 100644
index 35d8606..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleLibrary.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ysr;
-
-import com.google.common.collect.ImmutableList;
-import org.onosproject.yms.ysr.YangModuleInformation;
-import org.onosproject.yms.ysr.YangModuleLibrary;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-/**
- * Representation of default YANG module library.
- */
-public class DefaultYangModuleLibrary implements YangModuleLibrary {
-
-    private final String moduleSetId;
-    private final List<YangModuleInformation> moduleInformation;
-
-    /**
-     * Creates an instance of YANG module library.
-     *
-     * @param moduleSetId module id
-     */
-    public DefaultYangModuleLibrary(String moduleSetId) {
-        this.moduleSetId = moduleSetId;
-        moduleInformation = new ArrayList<>();
-    }
-
-    @Override
-    public String moduleSetId() {
-        return moduleSetId;
-    }
-
-    @Override
-    public List<YangModuleInformation> yangModuleList() {
-        return ImmutableList.copyOf(moduleInformation);
-    }
-
-    /**
-     * Adds module information.
-     *
-     * @param information module information
-     */
-    void addModuleInformation(YangModuleInformation information) {
-        moduleInformation.add(information);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(moduleInformation, moduleSetId);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DefaultYangModuleLibrary) {
-            DefaultYangModuleLibrary that = (DefaultYangModuleLibrary) obj;
-            return Objects.equals(moduleInformation, that.moduleInformation) &&
-                    Objects.equals(moduleSetId, that.moduleSetId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return toStringHelper(this)
-                .add("moduleInformation", moduleInformation)
-                .add("moduleId", moduleSetId)
-                .toString();
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistry.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistry.java
deleted file mode 100644
index fbd6c86..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistry.java
+++ /dev/null
@@ -1,761 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ysr;
-
-import org.onosproject.yangutils.datamodel.YangInclude;
-import org.onosproject.yangutils.datamodel.YangModule;
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yangutils.datamodel.YangSubModule;
-import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
-import org.onosproject.yms.ysr.YangModuleIdentifier;
-import org.onosproject.yms.ysr.YangModuleInformation;
-import org.onosproject.yms.ysr.YangModuleLibrary;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.slf4j.Logger;
-
-import java.io.File;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.regex.Pattern;
-
-import static java.util.Collections.sort;
-import static org.apache.commons.io.FileUtils.deleteDirectory;
-import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.parseJarFile;
-import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING;
-import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN;
-import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
-import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
-import static org.onosproject.yangutils.utils.UtilConstants.SERVICE;
-import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
-import static org.osgi.framework.FrameworkUtil.getBundle;
-import static org.slf4j.LoggerFactory.getLogger;
-
-
-/**
- * Representation of default YANG schema registry. Yang schema registry
- * provides interface to an application to register its YANG schema
- * with YMS. It provides YANG schema nodes to YDT, YNB and YSB.
- */
-public class DefaultYangSchemaRegistry implements YangSchemaRegistry {
-
-    private static final String SYSTEM = SLASH + "system" + SLASH;
-    private static final String MAVEN = "mvn:";
-    private static final String JAR = ".jar";
-    private static final String USER_DIRECTORY = "user.dir";
-    private static final String AT = "@";
-    private static final String DATE_FORMAT = "yyyy-mm-dd";
-    private static final String ONOS = "org.onosproject";
-    private static final Logger log = getLogger(DefaultYangSchemaRegistry.class);
-
-    /*
-     * Map for storing app objects.
-     */
-    private final ConcurrentMap<String, Object> appObjectStore;
-
-    /*
-     * Map for storing YANG schema nodes.
-     */
-    private final ConcurrentMap<String, ConcurrentMap<String, YangSchemaNode>>
-            yangSchemaStore;
-
-    /*
-     * Map for storing YANG schema nodes with respect to root's generated
-     * interface file name.
-     */
-    private final ConcurrentMap<String, YangSchemaNode> interfaceNameKeyStore;
-
-    /*
-     * Map for storing YANG schema nodes root's generated op param file name.
-     */
-    private final ConcurrentMap<String, YangSchemaNode> opParamNameKeyStore;
-
-    /*
-     * Map for storing YANG schema nodes with respect to notifications.
-     */
-    private final ConcurrentMap<String, YangSchemaNode> eventNameKeyStore;
-
-    /*
-     * Map for storing YANG schema nodes with respect to app name.
-     */
-    private final ConcurrentMap<String, YangSchemaNode> appNameKeyStore;
-
-    /*
-     * Map for storing registered classes.
-     */
-    private final ConcurrentMap<String, Class<?>> registerClassStore;
-
-    /*
-     * Map for storing YANG file details.
-     */
-    private final ConcurrentMap<YangModuleIdentifier, String> yangFileStore;
-
-    /**
-     * Map for storing schema nodes with respect to namespace.
-     */
-    private final ConcurrentMap<String, YangSchemaNode> nameSpaceSchemaStore;
-
-    private final ConcurrentMap<Object, Boolean> ynhRegistrationStore;
-    private final ConcurrentMap<String, String> jarPathStore;
-
-    /**
-     * Creates an instance of default YANG schema registry.
-     */
-    public DefaultYangSchemaRegistry() {
-        appObjectStore = new ConcurrentHashMap<>();
-        yangSchemaStore = new ConcurrentHashMap<>();
-        interfaceNameKeyStore = new ConcurrentHashMap<>();
-        opParamNameKeyStore = new ConcurrentHashMap<>();
-        eventNameKeyStore = new ConcurrentHashMap<>();
-        registerClassStore = new ConcurrentHashMap<>();
-        yangFileStore = new ConcurrentHashMap<>();
-        appNameKeyStore = new ConcurrentHashMap<>();
-        ynhRegistrationStore = new ConcurrentHashMap<>();
-        jarPathStore = new ConcurrentHashMap<>();
-        nameSpaceSchemaStore = new ConcurrentHashMap<>();
-    }
-
-
-    @Override
-    public void registerApplication(Object appObject, Class<?> serviceClass) {
-        synchronized (DefaultYangSchemaRegistry.class) {
-            doPreProcessing(serviceClass, appObject);
-            if (!verifyIfApplicationAlreadyRegistered(serviceClass)) {
-                BundleContext context = getBundle(serviceClass).getBundleContext();
-                if (context != null) {
-                    Bundle[] bundles = context.getBundles();
-                    Bundle bundle;
-                    int len = bundles.length;
-                    List<YangNode> curNodes;
-                    String jarPath;
-                    for (int i = len - 1; i >= 0; i--) {
-                        bundle = bundles[i];
-                        if (bundle.getSymbolicName().contains(ONOS)) {
-                            jarPath = getJarPathFromBundleLocation(
-                                    bundle.getLocation(), context.getProperty(USER_DIRECTORY));
-                            curNodes = processJarParsingOperations(jarPath);
-                            // process application registration.
-                            if (curNodes != null && !curNodes.isEmpty()) {
-                                jarPathStore.put(serviceClass.getName(), jarPath);
-                                processRegistration(serviceClass, jarPath,
-                                                    curNodes, appObject, false);
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    @Override
-    public void unRegisterApplication(Object managerObject,
-                                      Class<?> serviceClass) {
-        synchronized (DefaultYangSchemaRegistry.class) {
-            YangSchemaNode curNode;
-            String serviceName = serviceClass.getName();
-
-            //Check if service should be unregistered?
-            if (managerObject != null) {
-                verifyApplicationRegistration(managerObject, serviceClass);
-            }
-            //Remove registered class from store.
-            registerClassStore.remove(serviceName);
-            //check if service is in app store.
-            curNode = appNameKeyStore.get(serviceName);
-            if (curNode == null) {
-                curNode = interfaceNameKeyStore.get(serviceName);
-            }
-
-            if (curNode != null) {
-                removeSchemaNode(curNode);
-                eventNameKeyStore.remove(getEventClassName(curNode));
-                appObjectStore.remove(serviceName);
-                interfaceNameKeyStore.remove(getInterfaceClassName(curNode));
-                opParamNameKeyStore.remove(getOpParamClassName(curNode));
-                yangFileStore.remove(getModuleIdentifier(curNode));
-                appNameKeyStore.remove(serviceName);
-                nameSpaceSchemaStore.remove(curNode.getNameSpace()
-                                                    .getModuleNamespace());
-                removeYsrGeneratedTemporaryResources(jarPathStore.get(serviceName),
-                                                     serviceName);
-                log.info(" service {} is unregistered.",
-                         serviceClass.getSimpleName());
-            } else {
-                throw new RuntimeException(serviceClass.getSimpleName() +
-                                                   " service was not registered.");
-            }
-        }
-    }
-
-    @Override
-    public Object getRegisteredApplication(YangSchemaNode schemaNode) {
-        Object obj = null;
-        if (schemaNode != null) {
-            String name = getServiceName(schemaNode);
-            obj = appObjectStore.get(name);
-            if (obj == null) {
-                log.error("{} not found.", name);
-            }
-        }
-        return obj;
-    }
-
-    @Override
-    public YangSchemaNode getYangSchemaNodeUsingSchemaName(String schemaName) {
-        return getSchemaNodeUsingSchemaNameWithRev(schemaName);
-    }
-
-    @Override
-    public YangSchemaNode getYangSchemaNodeUsingAppName(String appName) {
-        YangSchemaNode node = appNameKeyStore.get(appName);
-        if (node == null) {
-            log.error("{} not found.", appName);
-        }
-        return node;
-    }
-
-    @Override
-    public YangSchemaNode
-    getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(String name) {
-        YangSchemaNode node = interfaceNameKeyStore.get(name);
-        if (node == null) {
-            log.error("{} not found.", name);
-        }
-        return node;
-    }
-
-    @Override
-    public YangSchemaNode getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
-            String name) {
-        YangSchemaNode node = opParamNameKeyStore.get(name);
-        if (node == null) {
-            log.error("{} not found.", name);
-        }
-        return node;
-    }
-
-    @Override
-    public YangSchemaNode getRootYangSchemaNodeForNotification(String name) {
-        YangSchemaNode node = eventNameKeyStore.get(name);
-        if (node == null) {
-            log.error("{} not found.", name);
-        }
-        return node;
-    }
-
-    @Override
-    public Class<?> getRegisteredClass(YangSchemaNode schemaNode) {
-        String interfaceName = getInterfaceClassName(schemaNode);
-        String serviceName = getServiceName(schemaNode);
-        Class<?> regClass = registerClassStore.get(serviceName);
-        if (regClass == null) {
-            regClass = registerClassStore.get(interfaceName);
-        }
-        return regClass;
-    }
-
-    @Override
-    public YangSchemaNode getSchemaWrtNameSpace(String nameSpace) {
-
-        YangSchemaNode node = nameSpaceSchemaStore.get(nameSpace);
-        if (node == null) {
-            log.error("node with {} namespace not found.", nameSpace);
-        }
-        return node;
-    }
-
-    @Override
-    public String getYangFile(YangModuleIdentifier moduleIdentifier) {
-        String file = yangFileStore.get(moduleIdentifier);
-        if (file == null) {
-            log.error("YANG files for corresponding module identifier {} not " +
-                              "found", moduleIdentifier);
-        }
-        return file;
-    }
-
-    @Override
-    public boolean verifyNotificationObject(Object appObj, Class<?> service) {
-        synchronized (DefaultYangSchemaRegistry.class) {
-            YangSchemaNode node = appNameKeyStore.get(service.getName());
-            if (node == null) {
-                log.error("application is not registered with YMS {}",
-                          service.getName());
-                return false;
-            }
-            try {
-                if (node.isNotificationPresent()) {
-                    if (appObj != null) {
-                        Boolean ifPresent = ynhRegistrationStore.get(appObj);
-                        if (ifPresent == null) {
-                            ynhRegistrationStore.put(appObj, true);
-                            return true;
-                        }
-                    }
-                }
-            } catch (DataModelException e) {
-                log.error("notification registration error: {} {}", e
-                        .getLocalizedMessage(), e);
-            }
-            return false;
-        }
-    }
-
-    @Override
-    public void flushYsrData() {
-        appObjectStore.clear();
-        yangSchemaStore.clear();
-        eventNameKeyStore.clear();
-        opParamNameKeyStore.clear();
-        interfaceNameKeyStore.clear();
-        registerClassStore.clear();
-        yangFileStore.clear();
-        nameSpaceSchemaStore.clear();
-    }
-
-    @Override
-    public void processModuleLibrary(String serviceName,
-                                     YangModuleLibrary library) {
-        synchronized (DefaultYangSchemaRegistry.class) {
-            YangSchemaNode node = appNameKeyStore.get(serviceName);
-            if (node != null) {
-                YangModuleInformation moduleInformation =
-                        new DefaultYangModuleInformation(getModuleIdentifier(node),
-                                                         node.getNameSpace());
-                addSubModuleIdentifier(node, (
-                        DefaultYangModuleInformation) moduleInformation);
-                //TODO: add feature list to module information.
-                ((DefaultYangModuleLibrary) library)
-                        .addModuleInformation(moduleInformation);
-            }
-        }
-    }
-
-    /**
-     * Process service class.
-     *
-     * @param serviceClass service class
-     * @param appObject    application object
-     */
-
-    void doPreProcessing(Class<?> serviceClass, Object appObject) {
-
-        //Check if service should be registered?
-        if (appObject != null) {
-            verifyApplicationRegistration(appObject, serviceClass);
-        }
-        String name = serviceClass.getName();
-        //Add app class to registered service store.
-        if (!registerClassStore.containsKey(name)) {
-            registerClassStore.put(name, serviceClass);
-        }
-    }
-
-    void updateServiceClass(Class<?> service) {
-        registerClassStore.put(service.getName(), service);
-    }
-
-    /**
-     * Process application registration.
-     *
-     * @param service  service class
-     * @param jarPath  jar path
-     * @param nodes    YANG nodes
-     * @param appObj   application object
-     * @param isFromUt if registration is being called form unit test
-     */
-    void processRegistration(Class<?> service, String jarPath,
-                             List<YangNode> nodes,
-                             Object appObj, boolean isFromUt) {
-
-        // process storing operations.
-        YangNode schemaNode = findNodeWhichShouldBeReg(service.getName(), nodes);
-        if (schemaNode != null) {
-            if (appObj != null) {
-                appObjectStore.put(service.getName(), appObj);
-            }
-            //Process application context for registrations.
-            processApplicationContext(schemaNode, service.getName(), isFromUt);
-            //Update YANG file store.
-            updateYangFileStore(schemaNode, jarPath);
-        }
-    }
-
-    /**
-     * Returns the node for which corresponding class is generated.
-     *
-     * @param name  generated class name
-     * @param nodes list of yang nodes
-     * @return node for which corresponding class is generated
-     */
-    private YangNode findNodeWhichShouldBeReg(String name, List<YangNode> nodes) {
-        for (YangNode node : nodes) {
-            if (name.equals(getServiceName(node)) ||
-                    name.equals(getInterfaceClassName(node))) {
-                return node;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Verifies if service class should be registered or not.
-     *
-     * @param appObject application object
-     * @param appClass  application class
-     */
-    private void verifyApplicationRegistration(Object appObject,
-                                               Class<?> appClass) {
-        Class<?> managerClass = appObject.getClass();
-        Class<?>[] services = managerClass.getInterfaces();
-        List<Class<?>> classes = new ArrayList<>();
-        Collections.addAll(classes, services);
-        if (!classes.contains(appClass)) {
-            throw new RuntimeException("service class " + appClass.getName() +
-                                               "is not being implemented by " +
-                                               managerClass.getName());
-        }
-    }
-
-    /**
-     * Verifies if application is already registered with YMS.
-     *
-     * @param appClass application class
-     * @return true if application already registered
-     */
-    private boolean verifyIfApplicationAlreadyRegistered(Class<?> appClass) {
-        String appName = appClass.getName();
-        return appObjectStore.containsKey(appName) ||
-                interfaceNameKeyStore.containsKey(appName);
-    }
-
-    /**
-     * Updates yang file store for YANG node.
-     *
-     * @param node    YANG node
-     * @param jarPath jar file path
-     */
-    private void updateYangFileStore(YangNode node, String jarPath) {
-        yangFileStore.put(getModuleIdentifier(node),
-                          getYangFilePath(jarPath, node.getFileName()));
-    }
-
-    /**
-     * Returns yang file path.
-     *
-     * @param jarPath          jar path
-     * @param metaDataFileName name of yang file from metadata
-     * @return yang file path
-     */
-    private String getYangFilePath(String jarPath, String metaDataFileName) {
-        String[] metaData = metaDataFileName.split(SLASH);
-        return jarPath + SLASH + metaData[metaData.length - 1];
-    }
-
-    /**
-     * Process jar file for fetching YANG nodes.
-     *
-     * @param path jar file path
-     * @return YANG schema nodes
-     */
-    private List<YangNode> processJarParsingOperations(String path) {
-        //Deserialize data model and get the YANG node set.
-        String jar = path + JAR;
-        try {
-            File file = new File(jar);
-            if (file.exists()) {
-                return parseJarFile(path + JAR, path);
-            }
-        } catch (IOException e) {
-            log.error(" failed to parse the jar file in path {} : {} ", path,
-                      e.getMessage());
-        }
-        return null;
-    }
-
-    /**
-     * Process an application an updates the maps for YANG schema registry.
-     *
-     * @param appNode  application YANG schema nodes
-     * @param name     class name
-     * @param isFormUt if method is being called from unit tests
-     */
-    private void processApplicationContext(YangSchemaNode appNode, String name,
-                                           boolean isFormUt) {
-
-        //Update map for which registrations is being called.
-        appNameKeyStore.put(name, appNode);
-
-        // Updates schema store.
-        addToSchemaStore(appNode);
-        // update interface store.
-        interfaceNameKeyStore.put(getInterfaceClassName(appNode), appNode);
-
-        //update op param store.
-        opParamNameKeyStore.put(getOpParamClassName(appNode), appNode);
-
-        //update namespaceSchema store.
-        nameSpaceSchemaStore.put(appNode.getNameSpace().getModuleNamespace(), appNode);
-
-        //Checks if notification is present then update notification store map.
-        String eventSubject = null;
-        try {
-            if (appNode.isNotificationPresent()) {
-                eventSubject = getEventClassName(appNode);
-            }
-        } catch (DataModelException e) {
-            log.error("failed to search notification from schema map : {}",
-                      e.getLocalizedMessage());
-        }
-        if (eventSubject != null) {
-            eventNameKeyStore.put(eventSubject, appNode);
-        }
-        if (!isFormUt) {
-            log.info("successfully registered this application {}", name);
-        }
-    }
-
-    /**
-     * Returns jar path from bundle mvnLocationPath.
-     *
-     * @param mvnLocationPath mvnLocationPath of bundle
-     * @return path of jar
-     */
-    private String getJarPathFromBundleLocation(String mvnLocationPath,
-                                                String currentDirectory) {
-        String path = currentDirectory + SYSTEM;
-        if (mvnLocationPath.contains(MAVEN)) {
-            String[] strArray = mvnLocationPath.split(MAVEN);
-            if (strArray[1].contains(File.separator)) {
-                String[] split = strArray[1].split(File.separator);
-                if (split[0].contains(PERIOD)) {
-                    String[] groupId = split[0].split(Pattern.quote(PERIOD));
-                    return path + groupId[0] + SLASH + groupId[1] + SLASH + split[1] +
-                            SLASH + split[2] + SLASH + split[1] + HYPHEN + split[2];
-                }
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Returns schema node based on the revision.
-     *
-     * @param name name of the schema node
-     * @return schema node based on the revision
-     */
-    private YangSchemaNode getSchemaNodeUsingSchemaNameWithRev(String name) {
-        ConcurrentMap<String, YangSchemaNode> revMap;
-        YangSchemaNode schemaNode;
-        if (name.contains(AT)) {
-            String[] revArray = name.split(AT);
-            revMap = yangSchemaStore.get(revArray[0]);
-            schemaNode = revMap.get(name);
-            if (schemaNode == null) {
-                log.error("{} not found.", name);
-            }
-            return schemaNode;
-        }
-        if (yangSchemaStore.containsKey(name)) {
-            revMap = yangSchemaStore.get(name);
-            if (revMap != null && !revMap.isEmpty()) {
-                YangSchemaNode node = revMap.get(name);
-                if (node != null) {
-                    return node;
-                }
-                String revName = getLatestVersion(revMap);
-                return revMap.get(revName);
-            }
-        }
-        log.error("{} not found.", name);
-        return null;
-    }
-
-    private String getLatestVersion(ConcurrentMap<String, YangSchemaNode> revMap) {
-        List<String> keys = new ArrayList<>();
-        for (Map.Entry<String, YangSchemaNode> entry : revMap.entrySet()) {
-            keys.add(entry.getKey());
-        }
-        sort(keys);
-        return keys.get(keys.size() - 1);
-    }
-
-    /**
-     * Adds schema node when different revision of node has received.
-     *
-     * @param schemaNode schema node
-     */
-    private void addToSchemaStore(YangSchemaNode schemaNode) {
-
-        String date = getDateInStringFormat(schemaNode);
-        String name = schemaNode.getName();
-        String revName = name;
-        if (date != null) {
-            revName = name + AT + date;
-        }
-        //check if already present.
-        if (!yangSchemaStore.containsKey(name)) {
-            ConcurrentMap<String, YangSchemaNode> revStore =
-                    new ConcurrentHashMap<>();
-            revStore.put(revName, schemaNode);
-            yangSchemaStore.put(name, revStore);
-        } else {
-            yangSchemaStore.get(name).put(revName, schemaNode);
-        }
-    }
-
-    /**
-     * Returns date in string format.
-     *
-     * @param schemaNode schema node
-     * @return date in string format
-     */
-    String getDateInStringFormat(YangSchemaNode schemaNode) {
-        if (schemaNode != null) {
-            if (((YangNode) schemaNode).getRevision() != null) {
-                return new SimpleDateFormat(DATE_FORMAT)
-                        .format(((YangNode) schemaNode).getRevision()
-                                        .getRevDate());
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Removes schema node from schema map.
-     *
-     * @param removableNode schema node which needs to be removed
-     */
-    private void removeSchemaNode(YangSchemaNode removableNode) {
-        String name = removableNode.getName();
-        String revName = name;
-        String date = getDateInStringFormat(removableNode);
-        if (date != null) {
-            revName = name + AT + date;
-        }
-        ConcurrentMap<String, YangSchemaNode> revMap = yangSchemaStore.get(name);
-        if (revMap != null && !revMap.isEmpty() && revMap.size() != 1) {
-            revMap.remove(revName);
-        } else {
-            yangSchemaStore.remove(removableNode.getName());
-        }
-    }
-
-    /**
-     * Adds sub module identifier.
-     *
-     * @param node        schema node
-     * @param information module information
-     */
-    private void addSubModuleIdentifier(
-            YangSchemaNode node, DefaultYangModuleInformation information) {
-        List<YangInclude> includeList = new ArrayList<>();
-        if (node instanceof YangModule) {
-            includeList = ((YangModule) node).getIncludeList();
-        } else if (node instanceof YangSubModule) {
-            includeList = ((YangSubModule) node).getIncludeList();
-        }
-        for (YangInclude include : includeList) {
-            information.addSubModuleIdentifiers(getModuleIdentifier(
-                    include.getIncludedNode()));
-        }
-    }
-
-    /**
-     * Returns module identifier for schema node.
-     *
-     * @param schemaNode schema node
-     * @return module identifier for schema node
-     */
-    private YangModuleIdentifier getModuleIdentifier(
-            YangSchemaNode schemaNode) {
-        return new DefaultYangModuleIdentifier(
-                schemaNode.getName(), getDateInStringFormat(schemaNode));
-    }
-
-    /**
-     * Returns schema node's generated interface class name.
-     *
-     * @param schemaNode schema node
-     * @return schema node's generated interface class name
-     */
-    String getInterfaceClassName(YangSchemaNode schemaNode) {
-        return schemaNode.getJavaPackage() + PERIOD +
-                getCapitalCase(schemaNode.getJavaClassNameOrBuiltInType());
-    }
-
-    /**
-     * Returns schema node's generated op param class name.
-     *
-     * @param schemaNode schema node
-     * @return schema node's generated op param class name
-     */
-    private String getOpParamClassName(YangSchemaNode schemaNode) {
-        return getInterfaceClassName(schemaNode) + OP_PARAM;
-    }
-
-    /**
-     * Returns schema node's generated event class name.
-     *
-     * @param schemaNode schema node
-     * @return schema node's generated event class name
-     */
-    private String getEventClassName(YangSchemaNode schemaNode) {
-        return getInterfaceClassName(schemaNode).toLowerCase() + PERIOD +
-                getCapitalCase(schemaNode.getJavaClassNameOrBuiltInType()) +
-                EVENT_STRING;
-    }
-
-    /**
-     * Returns schema node's generated service class name.
-     *
-     * @param schemaNode schema node
-     * @return schema node's generated service class name
-     */
-    String getServiceName(YangSchemaNode schemaNode) {
-        return getInterfaceClassName(schemaNode) + SERVICE;
-    }
-
-    /**
-     * Removes YSR generated temporary resources.
-     *
-     * @param rscPath resource path
-     * @param appName application name
-     */
-    private void removeYsrGeneratedTemporaryResources(String rscPath,
-                                                      String appName) {
-        if (rscPath != null) {
-            File jarPath = new File(rscPath);
-            if (jarPath.exists()) {
-                try {
-                    deleteDirectory(jarPath);
-                } catch (IOException e) {
-                    log.error("failed to delete ysr resources for {} : {}",
-                              appName, e.getLocalizedMessage());
-                }
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/YangSchemaRegistry.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/YangSchemaRegistry.java
deleted file mode 100644
index 3b9eb1e..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/YangSchemaRegistry.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ysr;
-
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yms.ysr.YangModuleIdentifier;
-import org.onosproject.yms.ysr.YangModuleLibrary;
-
-/**
- * Abstraction of entity which provides interfaces to YANG schema registry.
- */
-public interface YangSchemaRegistry {
-
-    /**
-     * Registers applications to YMS.
-     *
-     * @param managerObject application's object
-     * @param serviceClass  service class which needs to be
-     *                      registered
-     */
-    void registerApplication(Object managerObject, Class<?> serviceClass);
-
-    /**
-     * Unregisters applications to YMS.
-     *
-     * @param managerObject application's object
-     * @param serviceClass  service class which needs to be unregistered
-     */
-    void unRegisterApplication(Object managerObject, Class<?> serviceClass);
-
-    /**
-     * Returns application's implementation's class object.
-     *
-     * @param yangSchemaNode application's schema node
-     * @return application's implementation's class object
-     */
-    Object getRegisteredApplication(YangSchemaNode yangSchemaNode);
-
-    /**
-     * Returns YANG schema node using schema name.
-     *
-     * @param schemaName module name.
-     * @return YANG schema node using schema name
-     */
-    YangSchemaNode getYangSchemaNodeUsingSchemaName(String schemaName);
-
-    /**
-     * Returns YANG schema nodes using application name.
-     *
-     * @param appName application's service name
-     * @return YANG schema nodes using application name
-     */
-    YangSchemaNode getYangSchemaNodeUsingAppName(String appName);
-
-    /**
-     * Returns YANG schema nodes using root interface file name.
-     *
-     * @param rootInterfaceFileName name of generated interface file
-     *                              for root node
-     * @return YANG schema nodes using root interface file name
-     */
-    YangSchemaNode
-    getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
-            String rootInterfaceFileName);
-
-    /**
-     * Returns YANG schema nodes using root op param file name.
-     *
-     * @param rootOpParamFileName name of generated op param file for root node
-     * @return YANG schema nodes using root op param file name
-     */
-    YangSchemaNode
-    getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
-            String rootOpParamFileName);
-
-    /**
-     * Returns YANG schema node of root for notifications.
-     *
-     * @param eventSubject event subject
-     * @return YANG schema node of root for notifications
-     */
-    YangSchemaNode getRootYangSchemaNodeForNotification(String eventSubject);
-
-    /**
-     * Returns registered service class.
-     *
-     * @param schemaNode YANG schema node
-     * @return registered service class
-     */
-    Class<?> getRegisteredClass(YangSchemaNode schemaNode);
-
-    /**
-     * Verifies if the manager object is already registered with notification
-     * handler.
-     *
-     * @param appObj  application object
-     * @param service service class
-     * @return true if the manager object is already registered with
-     * notification handler
-     */
-    boolean verifyNotificationObject(Object appObj, Class<?> service);
-
-    /**
-     * Clears database for YSR.
-     */
-    void flushYsrData();
-
-    /**
-     * Protocols like RESTCONF, use the definitions within the YANG modules
-     * advertised by the server are used to construct an RPC operation or
-     * data resource identifier.
-     * <p>
-     * Schema Resource:
-     * The server can optionally support retrieval of the YANG modules it
-     * supports.
-     *
-     * @param moduleIdentifier module's identifier
-     * @return YANG file contents of the requested YANG module.
-     */
-    String getYangFile(YangModuleIdentifier moduleIdentifier);
-
-    /**
-     * Process module library for a registered service.
-     *
-     * @param serviceName service class name
-     * @param library     YANG module library
-     */
-    void processModuleLibrary(String serviceName, YangModuleLibrary library);
-
-    /**
-     * Returns YANG schema node for a given namespace while xml decoding.
-     * <p>
-     * According to rfc 6020 Xml should not have module name in it but when
-     * decoder wants to convert xml to YANG object it will need module schema
-     * which it can get only by using module name from YSR. So if YCH sends
-     * namespace of a module we can given it the schema node of module. In
-     * this case namespace should be unique.
-     * </p>
-     *
-     * @param nameSpace name space of module
-     * @return module schema node
-     */
-    YangSchemaNode getSchemaWrtNameSpace(String nameSpace);
-
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/package-info.java
deleted file mode 100644
index 1a15e1f..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of YANG Schema Registry. YSR maintains the schema
- * information registry corresponding to registered app.
- */
-package org.onosproject.yms.app.ysr;
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/DefaultYangTreeBuilder.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/DefaultYangTreeBuilder.java
deleted file mode 100644
index 9ea03f0..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/DefaultYangTreeBuilder.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ytb;
-
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedBuilder;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.onosproject.yms.ydt.YmsOperationType;
-
-import java.util.List;
-
-import static org.onosproject.yms.app.ytb.YtbUtil.emptyObjErrMsg;
-import static org.onosproject.yms.ydt.YmsOperationType.NOTIFICATION;
-import static org.onosproject.yms.ydt.YmsOperationType.RPC_REPLY;
-
-/**
- * Representation of YANG tree builder which generates YANG data tree from the
- * class objects which are provided from the applications and return it to the
- * protocol(s).
- */
-public class DefaultYangTreeBuilder implements YangTreeBuilder {
-
-    private static final String OBJ_LIST = "object list";
-    private static final String EVENT_OBJ = "event object";
-    private static final String OUTPUT_OBJ = "output object";
-
-    /**
-     * Creates the YANG tree builder.
-     */
-    public DefaultYangTreeBuilder() {
-    }
-
-    @Override
-    public YdtExtendedBuilder getYdtBuilderForYo(List<Object> moduleObj, String rootName,
-                                                 String rootNameSpace, YmsOperationType opType,
-                                                 YangSchemaRegistry registry) {
-
-        if (moduleObj == null) {
-            throw new YtbException(emptyObjErrMsg(OBJ_LIST));
-        }
-
-        YdtExtendedBuilder ydtBuilder = new YangRequestWorkBench(
-                rootName, rootNameSpace, opType, registry, false);
-
-        for (Object yangObj : moduleObj) {
-            YdtBuilderFromYo moduleBuilder = new YdtBuilderFromYo(
-                    ydtBuilder, yangObj, registry);
-
-            moduleBuilder.getModuleNodeFromYsr(yangObj);
-            moduleBuilder.createYdtFromRootObject();
-        }
-        return ydtBuilder;
-    }
-
-    @Override
-    public YdtExtendedContext getYdtForNotification(Object object, String rootName,
-                                                    YangSchemaRegistry registry) {
-
-        if (object == null) {
-            throw new YtbException(emptyObjErrMsg(EVENT_OBJ));
-        }
-
-        YdtExtendedBuilder extBuilder = new YangRequestWorkBench(
-                rootName, null, NOTIFICATION, registry, false);
-        YdtBuilderFromYo moduleBuilder = new YdtBuilderFromYo(
-                extBuilder, object, registry);
-
-        moduleBuilder.getRootNodeWithNotificationFromYsr(object);
-        /*
-         * Adds module to YDT, so that notification can further enhance the
-         * tree.
-         */
-        moduleBuilder.createModuleInYdt();
-        moduleBuilder.createYdtFromRootObject();
-        return extBuilder.getRootNode();
-    }
-
-    @Override
-    public YdtExtendedBuilder getYdtForRpcResponse(Object outputObj,
-                                                   YdtExtendedBuilder reqBuilder) {
-
-        if (outputObj == null) {
-            throw new YtbException(emptyObjErrMsg(OUTPUT_OBJ));
-        }
-
-        YangRequestWorkBench workBench = (YangRequestWorkBench) reqBuilder;
-
-        // Gets the logical root node from RPC request work bench.
-        YdtExtendedContext rootNode = workBench.getRootNode();
-
-        /*
-         * Creates a new work bench for RPC reply from the contents of the
-         * request work bench
-         */
-        YdtExtendedBuilder ydtBuilder =
-                new YangRequestWorkBench(null, null, RPC_REPLY,
-                                         workBench.getYangSchemaRegistry(),
-                                         false);
-        YdtBuilderFromYo moduleBuilder =
-                new YdtBuilderFromYo(ydtBuilder, outputObj,
-                                     workBench.getYangSchemaRegistry());
-
-        // Forms YDT till RPC, so that output can further enhance the tree.
-        moduleBuilder.createModuleAndRpcInYdt(rootNode);
-        moduleBuilder.createYdtFromRootObject();
-        return ydtBuilder;
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YangTreeBuilder.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YangTreeBuilder.java
deleted file mode 100644
index 8df19c7..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YangTreeBuilder.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ytb;
-
-import org.onosproject.yms.app.ydt.YdtExtendedBuilder;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.onosproject.yms.ydt.YmsOperationType;
-
-import java.util.List;
-
-/**
- * Abstraction of an entity which provides interfaces to build YANG data tree
- * from the object received from YNH, YAB or YCH.
- */
-public interface YangTreeBuilder {
-
-    /**
-     * Returns the YDT builder after building the tree corresponding to the
-     * response YANG object received from any of the protocol such as YAB or
-     * YCH.
-     *
-     * @param moduleObj     application module object
-     * @param rootName      logical root node name
-     * @param rootNameSpace logical root node namespace
-     * @param opType        root node operation type
-     * @param registry      application schema registry
-     * @return YDT builder from the tree
-     */
-    YdtExtendedBuilder getYdtBuilderForYo(List<Object> moduleObj,
-                                          String rootName,
-                                          String rootNameSpace,
-                                          YmsOperationType opType,
-                                          YangSchemaRegistry registry);
-
-    /**
-     * Returns the YDT context after building the tree received from the
-     * protocol YNH.
-     *
-     * @param object   application notification object
-     * @param rootName logical root node name
-     * @param registry application schema registry
-     * @return YDT context from the tree
-     */
-    YdtExtendedContext getYdtForNotification(Object object, String rootName,
-                                             YangSchemaRegistry registry);
-
-    /**
-     * Returns the YDT context after building the RPC response tree. The input
-     * for building the tree is RPC request builder, RPC output java object.
-     * These are received from the YSB protocol.
-     *
-     * @param outputObj  application output object
-     * @param reqBuilder RPC request builder from YDT
-     * @return YDT builder where RPC response tree is created
-     */
-    YdtExtendedBuilder getYdtForRpcResponse(Object outputObj,
-                                            YdtExtendedBuilder reqBuilder);
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java
deleted file mode 100644
index 96d3950..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java
+++ /dev/null
@@ -1,1034 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ytb;
-
-import org.onosproject.yangutils.datamodel.YangAugment;
-import org.onosproject.yangutils.datamodel.YangAugmentableNode;
-import org.onosproject.yangutils.datamodel.YangCase;
-import org.onosproject.yangutils.datamodel.YangChoice;
-import org.onosproject.yangutils.datamodel.YangDerivedInfo;
-import org.onosproject.yangutils.datamodel.YangLeaf;
-import org.onosproject.yangutils.datamodel.YangLeafList;
-import org.onosproject.yangutils.datamodel.YangLeafRef;
-import org.onosproject.yangutils.datamodel.YangLeavesHolder;
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier;
-import org.onosproject.yangutils.datamodel.YangType;
-import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
-import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
-import org.onosproject.yms.app.utils.TraversalType;
-import org.onosproject.yms.app.ydt.YdtExtendedBuilder;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.onosproject.yms.ydt.YdtContextOperationType;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.EMPTY;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
-import static org.onosproject.yms.app.utils.TraversalType.CHILD;
-import static org.onosproject.yms.app.utils.TraversalType.PARENT;
-import static org.onosproject.yms.app.utils.TraversalType.ROOT;
-import static org.onosproject.yms.app.utils.TraversalType.SIBLING;
-import static org.onosproject.yms.app.ydt.AppType.YTB;
-import static org.onosproject.yms.app.ytb.YtbUtil.PERIOD;
-import static org.onosproject.yms.app.ytb.YtbUtil.STR_NULL;
-import static org.onosproject.yms.app.ytb.YtbUtil.getAttributeFromInheritance;
-import static org.onosproject.yms.app.ytb.YtbUtil.getAttributeOfObject;
-import static org.onosproject.yms.app.ytb.YtbUtil.getClassLoaderForAugment;
-import static org.onosproject.yms.app.ytb.YtbUtil.getInterfaceClassFromImplClass;
-import static org.onosproject.yms.app.ytb.YtbUtil.getJavaName;
-import static org.onosproject.yms.app.ytb.YtbUtil.getNodeOpType;
-import static org.onosproject.yms.app.ytb.YtbUtil.getOpTypeName;
-import static org.onosproject.yms.app.ytb.YtbUtil.getParentObjectOfNode;
-import static org.onosproject.yms.app.ytb.YtbUtil.getStringFromType;
-import static org.onosproject.yms.app.ytb.YtbUtil.isAugmentNode;
-import static org.onosproject.yms.app.ytb.YtbUtil.isMultiInstanceNode;
-import static org.onosproject.yms.app.ytb.YtbUtil.isNodeProcessCompleted;
-import static org.onosproject.yms.app.ytb.YtbUtil.isNonProcessableNode;
-import static org.onosproject.yms.app.ytb.YtbUtil.isTypePrimitive;
-import static org.onosproject.yms.app.ytb.YtbUtil.isValueOrSelectLeafSet;
-import static org.onosproject.yms.app.ytb.YtbUtil.nonEmpty;
-import static org.onosproject.yms.ydt.YdtContextOperationType.NONE;
-
-/**
- * Implements traversal of YANG node and its corresponding object, resulting
- * in building of the YDT tree.
- */
-public class YdtBuilderFromYo {
-
-    private static final String STR_TYPE = "type";
-    private static final String STR_SUBJECT = "subject";
-    private static final String TRUE = "true";
-    private static final String IS_LEAF_VALUE_SET_METHOD = "isLeafValueSet";
-    private static final String IS_SELECT_LEAF_SET_METHOD = "isSelectLeaf";
-    private static final String OUTPUT = "output";
-    private static final String YANG_AUGMENTED_INFO_MAP =
-            "yangAugmentedInfoMap";
-    private static final String FALSE = "false";
-
-    /**
-     * Application YANG schema registry.
-     */
-    private final YangSchemaRegistry registry;
-
-    /**
-     * Current instance of the YDT builder where the tree is built.
-     */
-    private final YdtExtendedBuilder extBuilder;
-
-    /**
-     * YANG root object that is required for walking along with the YANG node.
-     */
-    private Object rootObj;
-
-    /**
-     * YANG root node that is required for walking along with the YANG object.
-     */
-    private YangSchemaNode rootSchema;
-
-    /**
-     * Creates YDT builder from YANG object by assigning the mandatory values.
-     *
-     * @param rootBuilder root node builder
-     * @param rootObj     root node object
-     * @param registry    application schema registry
-     */
-    public YdtBuilderFromYo(YdtExtendedBuilder rootBuilder, Object rootObj,
-                            YangSchemaRegistry registry) {
-        extBuilder = rootBuilder;
-        this.rootObj = rootObj;
-        this.registry = registry;
-    }
-
-    /**
-     * Returns schema root node, received from YSR, which searches based on
-     * the object received from YAB or YCH.
-     *
-     * @param object root node object
-     */
-    public void getModuleNodeFromYsr(Object object) {
-        Class interfaceClass = getInterfaceClassFromImplClass(object);
-        rootSchema = registry
-                .getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
-                        interfaceClass.getName());
-    }
-
-    /**
-     * Returns schema root node, received from YSR, which searches based on
-     * the object received from YNH.
-     *
-     * @param object notification event object
-     */
-    public void getRootNodeWithNotificationFromYsr(Object object) {
-        rootSchema = registry.getRootYangSchemaNodeForNotification(
-                object.getClass().getName());
-    }
-
-    /**
-     * Creates the module node for in YDT before beginning with notification
-     * root node traversal. Collects sufficient information to fill YDT with
-     * notification root node in the traversal.
-     */
-    public void createModuleInYdt() {
-        extBuilder.addChild(NONE, rootSchema);
-        rootSchema = getSchemaNodeOfNotification();
-        rootObj = getObjOfNotification();
-    }
-
-    /**
-     * Creates the module and RPC node, in YDT tree, from the logical root
-     * node received from request workbench. The output schema node is taken
-     * from the child schema of RPC YANG node.
-     *
-     * @param rootNode logical root node
-     */
-    public void createModuleAndRpcInYdt(YdtExtendedContext rootNode) {
-
-        YdtExtendedContext moduleNode =
-                (YdtExtendedContext) rootNode.getFirstChild();
-        extBuilder.addChild(NONE, moduleNode.getYangSchemaNode());
-
-        YdtExtendedContext rpcNode =
-                (YdtExtendedContext) moduleNode.getFirstChild();
-        YangSchemaNode rpcSchemaNode = rpcNode.getYangSchemaNode();
-        extBuilder.addChild(NONE, rpcSchemaNode);
-
-        // Defines a schema identifier for output node.
-        YangSchemaNodeIdentifier schemaId = new YangSchemaNodeIdentifier();
-        schemaId.setName(OUTPUT);
-        schemaId.setNameSpace(rpcSchemaNode.getNameSpace());
-        try {
-            // Gets the output schema node from RPC child schema.
-            rootSchema = rpcSchemaNode.getChildSchema(schemaId).getSchemaNode();
-        } catch (DataModelException e) {
-            throw new YtbException(e);
-        }
-    }
-
-    /**
-     * Creates YDT tree from the root object, by traversing through YANG data
-     * model node, and simultaneously checking the object nodes presence and
-     * walking the object.
-     */
-    public void createYdtFromRootObject() {
-        YangNode curNode = (YangNode) rootSchema;
-        TraversalType curTraversal = ROOT;
-        YtbNodeInfo listNodeInfo = null;
-        YtbNodeInfo augmentNodeInfo = null;
-
-        while (curNode != null) {
-            /*
-             * Processes the node, if it is being visited for the first time in
-             * the schema, also if the schema node is being retraced in a multi
-             * instance node.
-             */
-            if (curTraversal != PARENT || isMultiInstanceNode(curNode)) {
-
-                if (curTraversal == PARENT && isMultiInstanceNode(curNode)) {
-                    /*
-                     * If the schema is being retraced for a multi-instance
-                     * node, it has already entered for this multi-instance
-                     * node. Now this re-processes the same schema node for
-                     * any additional list object.
-                     */
-                    listNodeInfo = getCurNodeInfoAndTraverseBack();
-                }
-
-                if (curTraversal == ROOT && !isAugmentNode(curNode)) {
-                    /*
-                     * In case of RPC output, the root node is augmentative,
-                     * so when the root traversal is coming for augment this
-                     * flow is skipped. This adds only the root node in the YDT.
-                     */
-                    processApplicationRootNode();
-                } else {
-                    /*
-                     * Gets the object corresponding to current schema node.
-                     * If object exists, this adds the corresponding YDT node
-                     * to the tree and returns the object. Else returns null.
-                     */
-                    Object processedObject = processCurSchemaNodeAndAddToYdt(
-                            curNode, listNodeInfo);
-                    /*
-                     * Clears the list info of processed node. The next time
-                     * list info is taken newly and accordingly.
-                     */
-                    listNodeInfo = null;
-                    if (processedObject == null && !isAugmentNode(curNode)) {
-                        /*
-                         * Checks the presence of next sibling of the node, by
-                         * breaking the complete chain of the current node,
-                         * when the object value is not present, or when the
-                         * list entries are completely retraced. The augment
-                         * may have sibling, so this doesn't process for
-                         * augment.
-                         */
-                        YtbTraversalInfo traverseInfo =
-                                getProcessableInfo(curNode);
-                        curNode = traverseInfo.getYangNode();
-                        curTraversal = traverseInfo.getTraverseType();
-                        continue;
-                        /*
-                         * Irrespective of root or parent, sets the traversal
-                         * type as parent, when augment node doesn't have any
-                         * value. So, the other sibling augments can be
-                         * processed, if present.
-                         */
-                    } else if (processedObject == null &&
-                            isAugmentNode(curNode)) {
-                        curTraversal = PARENT;
-                        /*
-                         * The second content in the list will be having
-                         * parent traversal, in such case it cannot go to its
-                         * child in the flow, so it is made as child
-                         * traversal and proceeded to continue.
-                         */
-                    } else if (curTraversal == PARENT &&
-                            isMultiInstanceNode(curNode)) {
-                        curTraversal = CHILD;
-                    }
-                }
-            }
-            /*
-             * Checks for the sibling augment when the first augment node is
-             * getting completed. From the current augment node the previous
-             * node info is taken for augment and the traversal is changed to
-             * child, so as to check for the presence of sibling augment.
-             */
-            if (curTraversal == PARENT && isAugmentNode(curNode)) {
-                curNode = ((YangAugment) curNode).getAugmentedNode();
-                augmentNodeInfo = getParentYtbInfo();
-                curTraversal = CHILD;
-            }
-            /*
-             * Creates an augment iterator for the first time or takes the
-             * previous augment iterator for more than one time, whenever an
-             * augmentative node arrives. If augment is present it goes back
-             * for processing. If its null, the augmentative nodes process is
-             * continued.
-             */
-            if (curTraversal != PARENT &&
-                    curNode instanceof YangAugmentableNode) {
-                YangNode augmentNode = getAugmentInsideSchemaNode(
-                        curNode, augmentNodeInfo);
-                if (augmentNode != null) {
-                    curNode = augmentNode;
-                    continue;
-                }
-            }
-            /*
-             * Processes the child, after processing the node. If complete
-             * child depth is over, it takes up sibling and processes it.
-             * Once child and sibling is over, it is traversed back to the
-             * parent, without processing. In multi instance case, before
-             * going to parent or schema sibling, its own list sibling is
-             * processed. Skips the processing of RPC,notification and
-             * augment, as these nodes are dealt in a different flow.
-             */
-            if (curTraversal != PARENT && curNode.getChild() != null) {
-                augmentNodeInfo = null;
-                listNodeInfo = null;
-                curTraversal = CHILD;
-                curNode = curNode.getChild();
-                if (isNonProcessableNode(curNode)) {
-                    YtbTraversalInfo traverseInfo = getProcessableInfo(curNode);
-                    curNode = traverseInfo.getYangNode();
-                    curTraversal = traverseInfo.getTraverseType();
-                }
-            } else if (curNode.getNextSibling() != null) {
-                if (isNodeProcessCompleted(curNode, curTraversal)) {
-                    break;
-                }
-                if (isMultiInstanceNode(curNode)) {
-                    listNodeInfo = getCurNodeInfoAndTraverseBack();
-                    augmentNodeInfo = null;
-                    continue;
-                }
-                curTraversal = SIBLING;
-                augmentNodeInfo = null;
-                traverseToParent(curNode);
-                curNode = curNode.getNextSibling();
-                if (isNonProcessableNode(curNode)) {
-                    YtbTraversalInfo traverseInfo = getProcessableInfo(curNode);
-                    curNode = traverseInfo.getYangNode();
-                    curTraversal = traverseInfo.getTraverseType();
-                }
-            } else {
-                if (isNodeProcessCompleted(curNode, curTraversal)) {
-                    break;
-                }
-                if (isMultiInstanceNode(curNode)) {
-                    listNodeInfo = getCurNodeInfoAndTraverseBack();
-                    augmentNodeInfo = null;
-                    continue;
-                }
-                curTraversal = PARENT;
-                traverseToParent(curNode);
-                curNode = getParentSchemaNode(curNode);
-            }
-        }
-    }
-
-    /**
-     * Returns parent schema node of current node.
-     *
-     * @param curNode current schema node
-     * @return parent schema node
-     */
-    private YangNode getParentSchemaNode(YangNode curNode) {
-        if (curNode instanceof YangAugment) {
-            /*
-             * If curNode is augment, either next augment or augmented node
-             * has to be processed. So traversal type is changed to parent,
-             * but node is not changed.
-             */
-            return curNode;
-        }
-        return curNode.getParent();
-    }
-
-    /**
-     * Processes root YANG node and adds it as a child to the YDT
-     * extended builder which is created earlier.
-     */
-    private void processApplicationRootNode() {
-
-        YtbNodeInfo nodeInfo = new YtbNodeInfo();
-        YangNode rootYang = (YangNode) rootSchema;
-        addChildNodeInYdt(rootObj, rootYang, nodeInfo);
-        // If root node has leaf or leaf-list those will be processed.
-        processLeaves(rootYang);
-        processLeavesList(rootYang);
-    }
-
-    /**
-     * Traverses to parent, based on the schema node that requires to be
-     * traversed. Skips traversal of parent for choice and case node, as they
-     * don't get added to the YDT tree.
-     *
-     * @param curNode current YANG node
-     */
-    private void traverseToParent(YangNode curNode) {
-        if (curNode instanceof YangCase || curNode instanceof YangChoice
-                || curNode instanceof YangAugment) {
-            return;
-        }
-        extBuilder.traverseToParentWithoutValidation();
-    }
-
-    /**
-     * Returns the current YTB info of the YDT builder, and then traverses back
-     * to parent. In case of multi instance node the previous node info is
-     * used for iterating through the list.
-     *
-     * @return current YTB app info
-     */
-    private YtbNodeInfo getCurNodeInfoAndTraverseBack() {
-        YtbNodeInfo appInfo = getParentYtbInfo();
-        extBuilder.traverseToParentWithoutValidation();
-        return appInfo;
-    }
-
-    /**
-     * Returns augment node for an augmented node. From the list of augment
-     * nodes it has, one of the nodes is taken and provided linearly. If the
-     * node is not augmented or the all the augment nodes are processed, then
-     * it returns null.
-     *
-     * @param curNode         current YANG node
-     * @param augmentNodeInfo previous augment node info
-     * @return YANG augment node
-     */
-    private YangNode getAugmentInsideSchemaNode(YangNode curNode,
-                                                YtbNodeInfo augmentNodeInfo) {
-        if (augmentNodeInfo == null) {
-            List<YangAugment> augmentList = ((YangAugmentableNode) curNode)
-                    .getAugmentedInfoList();
-            if (nonEmpty(augmentList)) {
-                YtbNodeInfo parentNodeInfo = getParentYtbInfo();
-                Iterator<YangAugment> augmentItr = augmentList.listIterator();
-                parentNodeInfo.setAugmentIterator(augmentItr);
-                return augmentItr.next();
-            }
-        } else if (augmentNodeInfo.getAugmentIterator() != null) {
-            if (augmentNodeInfo.getAugmentIterator().hasNext()) {
-                return augmentNodeInfo.getAugmentIterator().next();
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Processes the current YANG node and if necessary adds it to the YDT
-     * builder tree by extracting the information from the corresponding
-     * class object.
-     *
-     * @param curNode      current YANG node
-     * @param listNodeInfo previous node info for list
-     * @return object of the schema node
-     */
-    private Object processCurSchemaNodeAndAddToYdt(YangNode curNode,
-                                                   YtbNodeInfo listNodeInfo) {
-        YtbNodeInfo curNodeInfo = new YtbNodeInfo();
-        Object nodeObj = null;
-        YtbNodeInfo parentNodeInfo = getParentYtbInfo();
-
-        switch (curNode.getYangSchemaNodeType()) {
-            case YANG_SINGLE_INSTANCE_NODE:
-                nodeObj = processSingleInstanceNode(curNode, curNodeInfo,
-                                                    parentNodeInfo);
-                break;
-            case YANG_MULTI_INSTANCE_NODE:
-                nodeObj = processMultiInstanceNode(
-                        curNode, curNodeInfo, listNodeInfo, parentNodeInfo);
-                break;
-            case YANG_CHOICE_NODE:
-                nodeObj = processChoiceNode(curNode, parentNodeInfo);
-                break;
-            case YANG_NON_DATA_NODE:
-                if (curNode instanceof YangCase) {
-                    nodeObj = processCaseNode(curNode, parentNodeInfo);
-                }
-                break;
-            case YANG_AUGMENT_NODE:
-                nodeObj = processAugmentNode(curNode, parentNodeInfo);
-                break;
-            default:
-                throw new YtbException(
-                        "Non processable schema node has arrived for adding " +
-                                "it in YDT tree");
-        }
-        // Processes leaf/leaf-list only when object has value, else it skips.
-        if (nodeObj != null) {
-            processLeaves(curNode);
-            processLeavesList(curNode);
-        }
-        return nodeObj;
-    }
-
-    /**
-     * Processes single instance node which is added to the YDT tree.
-     *
-     * @param curNode        current YANG node
-     * @param curNodeInfo    current YDT node info
-     * @param parentNodeInfo parent YDT node info
-     * @return object of the current node
-     */
-    private Object processSingleInstanceNode(YangNode curNode,
-                                             YtbNodeInfo curNodeInfo,
-                                             YtbNodeInfo parentNodeInfo) {
-        Object childObj = getChildObject(curNode, parentNodeInfo);
-        if (childObj != null) {
-            addChildNodeInYdt(childObj, curNode, curNodeInfo);
-        }
-        return childObj;
-    }
-
-    /**
-     * Processes multi instance node which has to be added to the YDT tree.
-     * For the first instance in the list, iterator is created and added to
-     * the list. For second instance or more the iterator from first instance
-     * is taken and iterated through to get the object of parent.
-     *
-     * @param curNode        current list node
-     * @param curNodeInfo    current node info for list
-     * @param listNodeInfo   previous instance node info of list
-     * @param parentNodeInfo parent node info of list
-     * @return object of the current instance
-     */
-    private Object processMultiInstanceNode(YangNode curNode,
-                                            YtbNodeInfo curNodeInfo,
-                                            YtbNodeInfo listNodeInfo,
-                                            YtbNodeInfo parentNodeInfo) {
-        Object childObj = null;
-        /*
-         * When YANG list comes to this flow for first time, its YTB node
-         * will be null. When it comes for the second or more content, then
-         * the list would have been already set for that node. According to
-         * set or not set this flow will be proceeded.
-         */
-        if (listNodeInfo == null) {
-            List<Object> childObjList = (List<Object>) getChildObject(
-                    curNode, parentNodeInfo);
-            if (nonEmpty(childObjList)) {
-                Iterator<Object> listItr = childObjList.iterator();
-                if (!listItr.hasNext()) {
-                    return null;
-                    //TODO: Handle the subtree filtering with no list entries.
-                }
-                childObj = listItr.next();
-                /*
-                 * For that node the iterator is set. So the next time for
-                 * the list this iterator will be taken.
-                 */
-                curNodeInfo.setListIterator(listItr);
-            }
-        } else {
-            /*
-             * If the list value comes for second or more time, that list
-             * node will be having YTB node info, where iterator can be
-             * retrieved and check if any more contents are present. If
-             * present those will be processed.
-             */
-            curNodeInfo.setListIterator(listNodeInfo.getListIterator());
-            if (listNodeInfo.getListIterator().hasNext()) {
-                childObj = listNodeInfo.getListIterator().next();
-            }
-        }
-        if (childObj != null) {
-            addChildNodeInYdt(childObj, curNode, curNodeInfo);
-        }
-        return childObj;
-    }
-
-    /**
-     * Processes choice node which adds a map to the parent node info of
-     * choice name and the case object. The object taken for choice node is
-     * of case object with choice name. Also, this Skips the addition of choice
-     * to YDT.
-     *
-     * @param curNode        current choice node
-     * @param parentNodeInfo parent YTB node info
-     * @return object of the choice node
-     */
-    private Object processChoiceNode(YangNode curNode,
-                                     YtbNodeInfo parentNodeInfo) {
-        /*
-         * Retrieves the parent YTB info, to take the object of parent, so as
-         * to check the child attribute from the object.
-         */
-        Object childObj = getChildObject(curNode, parentNodeInfo);
-        if (childObj != null) {
-            Map<String, Object> choiceCaseMap = parentNodeInfo
-                    .getChoiceCaseMap();
-            if (choiceCaseMap == null) {
-                choiceCaseMap = new HashMap<>();
-                parentNodeInfo.setChoiceCaseMap(choiceCaseMap);
-            }
-            choiceCaseMap.put(curNode.getName(), childObj);
-        }
-        return childObj;
-    }
-
-    /**
-     * Processes case node from the map contents that is filled by choice
-     * nodes. Object of choice is taken when choice name and case class name
-     * matches. When the case node is not present in the map it returns null.
-     *
-     * @param curNode        current case node
-     * @param parentNodeInfo choice parent node info
-     * @return object of the case node
-     */
-    private Object processCaseNode(YangNode curNode,
-                                   YtbNodeInfo parentNodeInfo) {
-        Object childObj = null;
-        if (parentNodeInfo.getChoiceCaseMap() != null) {
-            childObj = getCaseObjectFromChoice(parentNodeInfo,
-                                               curNode);
-        }
-        if (childObj != null) {
-            /*
-             * Sets the case object in parent info, so that rest of the case
-             * children can use it as parent. Case is not added in YDT.
-             */
-            parentNodeInfo.setCaseObject(childObj);
-        }
-        return childObj;
-    }
-
-    /**
-     * Processes augment node, which is not added in the YDT, but binds
-     * itself to the parent YTB info, so rest of its child nodes can use for
-     * adding themselves to the YDT tree. If there is no augment node added
-     * in map or if the augment module is not registered, then it returns null.
-     *
-     * @param curNode        current augment node
-     * @param parentNodeInfo augment parent node info
-     * @return object of the augment node
-     */
-    private Object processAugmentNode(YangNode curNode,
-                                      YtbNodeInfo parentNodeInfo) {
-        String className = curNode.getJavaClassNameOrBuiltInType();
-        String pkgName = curNode.getJavaPackage();
-        Object parentObj = getParentObjectOfNode(parentNodeInfo,
-                                                 curNode.getParent());
-        Map augmentMap;
-        try {
-            augmentMap = (Map) getAttributeOfObject(parentObj,
-                                                    YANG_AUGMENTED_INFO_MAP);
-            /*
-             * Gets the registered module class. Loads the class and gets the
-             * augment class.
-             */
-            Class moduleClass = getClassLoaderForAugment(curNode, registry);
-            if (moduleClass == null) {
-                return null;
-            }
-            Class augmentClass = moduleClass.getClassLoader().loadClass(
-                    pkgName + PERIOD + className);
-            Object childObj = augmentMap.get(augmentClass);
-            parentNodeInfo.setAugmentObject(childObj);
-            return childObj;
-        } catch (ClassNotFoundException | NoSuchMethodException e) {
-            throw new YtbException(e);
-        }
-    }
-
-    /**
-     * Returns the YTB info from the parent node, so that its own bounded
-     * object can be taken out.
-     *
-     * @return parent node YTB node info
-     */
-    private YtbNodeInfo getParentYtbInfo() {
-        YdtExtendedContext parentExtContext = extBuilder.getCurNode();
-        return (YtbNodeInfo) parentExtContext.getAppInfo(YTB);
-    }
-
-    /**
-     * Returns the child object from the parent object. Uses java name of the
-     * current node to search the attribute in the parent object.
-     *
-     * @param curNode        current YANG node
-     * @param parentNodeInfo parent YTB node info
-     * @return object of the child node
-     */
-    private Object getChildObject(YangNode curNode,
-                                  YtbNodeInfo parentNodeInfo) {
-        String nodeJavaName = curNode.getJavaAttributeName();
-        Object parentObj = getParentObjectOfNode(parentNodeInfo,
-                                                 curNode.getParent());
-        try {
-            return getAttributeOfObject(parentObj, nodeJavaName);
-        } catch (NoSuchMethodException e) {
-            throw new YtbException(e);
-        }
-    }
-
-    /**
-     * Adds the child node to the YDT by taking operation type from the
-     * object. Also, binds the object to the YDT node through YTB node info.
-     *
-     * @param childObj    node object
-     * @param curNode     current YANG node
-     * @param curNodeInfo current YTB info
-     */
-    private void addChildNodeInYdt(Object childObj, YangNode curNode,
-                                   YtbNodeInfo curNodeInfo) {
-        YdtContextOperationType opType =
-                getNodeOpType(childObj, getOpTypeName(curNode));
-        extBuilder.addChild(opType, curNode);
-        YdtExtendedContext curExtContext = extBuilder.getCurNode();
-        curNodeInfo.setYangObject(childObj);
-        curExtContext.addAppInfo(YTB, curNodeInfo);
-    }
-
-    /**
-     * Processes every leaf in a YANG node. Iterates through the leaf, takes
-     * value from the leaf and adds it to the YDT with value. If value is not
-     * present, and select leaf is set, adds it to the YDT without value.
-     *
-     * @param yangNode leaves holder node
-     */
-    private void processLeaves(YangNode yangNode) {
-        if (yangNode instanceof YangLeavesHolder) {
-            List<YangLeaf> leavesList = ((YangLeavesHolder) yangNode)
-                    .getListOfLeaf();
-            if (leavesList != null) {
-                for (YangLeaf yangLeaf : leavesList) {
-                    YtbNodeInfo parentYtbInfo = getParentYtbInfo();
-                    Object parentObj = getParentObjectOfNode(parentYtbInfo,
-                                                             yangNode);
-                    Object leafType;
-                    try {
-                        leafType = getAttributeOfObject(parentObj,
-                                                        getJavaName(yangLeaf));
-                    } catch (NoSuchMethodException e) {
-                        throw new YtbException(e);
-                    }
-
-                    addLeafWithValue(yangNode, yangLeaf, parentObj, leafType);
-                    addLeafWithoutValue(yangNode, yangLeaf, parentObj);
-                }
-            }
-        }
-    }
-
-    /**
-     * Processes every leaf-list in a YANG node for adding the value in YDT.
-     *
-     * @param yangNode list of leaf-list holder node
-     */
-    private void processLeavesList(YangNode yangNode) {
-        if (yangNode instanceof YangLeavesHolder) {
-            List<YangLeafList> listOfLeafList =
-                    ((YangLeavesHolder) yangNode).getListOfLeafList();
-
-            if (listOfLeafList != null) {
-                for (YangLeafList yangLeafList : listOfLeafList) {
-                    addToBuilder(yangNode, yangLeafList);
-                }
-            }
-        }
-    }
-
-    /**
-     * Processes the list of objects of the leaf list and adds the leaf list
-     * value to the builder.
-     *
-     * @param yangNode YANG node
-     * @param leafList YANG leaf list
-     */
-    private void addToBuilder(YangNode yangNode, YangLeafList leafList) {
-        YtbNodeInfo ytbNodeInfo = getParentYtbInfo();
-        Object parentObj = getParentObjectOfNode(ytbNodeInfo, yangNode);
-        List<Object> obj;
-        try {
-            obj = (List<Object>) getAttributeOfObject(parentObj,
-                                                      getJavaName(leafList));
-        } catch (NoSuchMethodException e) {
-            throw new YtbException(e);
-        }
-        if (obj != null) {
-            addLeafListValue(yangNode, parentObj, leafList, obj);
-        }
-    }
-
-    /**
-     * Adds the leaf list value to the YDT builder by taking the string value
-     * from the data type.
-     *
-     * @param yangNode  YANG node
-     * @param parentObj parent object
-     * @param leafList  YANG leaf list
-     * @param obj       list of objects
-     */
-    private void addLeafListValue(YangNode yangNode, Object parentObj,
-                                  YangLeafList leafList, List<Object> obj) {
-
-        Set<String> leafListVal = new LinkedHashSet<>();
-        boolean isEmpty = false;
-        for (Object object : obj) {
-            String val = getStringFromType(yangNode, parentObj,
-                                           getJavaName(leafList), object,
-                                           leafList.getDataType());
-            isEmpty = isTypeEmpty(val, leafList.getDataType());
-            if (isEmpty) {
-                if (val.equals(TRUE)) {
-                    addLeafList(leafListVal, leafList);
-                }
-                break;
-            }
-            if (!"".equals(val)) {
-                leafListVal.add(val);
-            }
-        }
-        if (!isEmpty && !leafListVal.isEmpty()) {
-            addLeafList(leafListVal, leafList);
-        }
-    }
-
-    /**
-     * Adds set of leaf list values in the builder and traverses back to the
-     * holder.
-     *
-     * @param leafListVal set of values
-     * @param leafList    YANG leaf list
-     */
-    private void addLeafList(Set<String> leafListVal, YangLeafList leafList) {
-        extBuilder.addLeafList(leafListVal, leafList);
-        extBuilder.traverseToParentWithoutValidation();
-    }
-
-    /**
-     * Returns the schema node of notification from the root node. Gets the
-     * enum value from event object and gives it to the root schema node for
-     * getting back the notification schema node.
-     *
-     * @return YANG schema node of notification
-     */
-    private YangSchemaNode getSchemaNodeOfNotification() {
-
-        Object eventObjType = getAttributeFromInheritance(rootObj, STR_TYPE);
-        String opTypeValue = String.valueOf(eventObjType);
-
-        if (opTypeValue.equals(STR_NULL) || opTypeValue.isEmpty()) {
-            throw new YtbException(
-                    "There is no notification present for the event. Invalid " +
-                            "input for notification.");
-        }
-        try {
-            return rootSchema.getNotificationSchemaNode(opTypeValue);
-        } catch (DataModelException e) {
-            throw new YtbException(e);
-        }
-    }
-
-    /**
-     * Returns the object of the notification by retrieving the attributes
-     * from the event class object.
-     *
-     * @return notification YANG object
-     */
-    private Object getObjOfNotification() {
-
-        Object eventSubjectObj =
-                getAttributeFromInheritance(rootObj, STR_SUBJECT);
-        String notificationName = rootSchema.getJavaAttributeName();
-        try {
-            return getAttributeOfObject(eventSubjectObj, notificationName);
-        } catch (NoSuchMethodException e) {
-            throw new YtbException(e);
-        }
-    }
-
-    /**
-     * Returns case object from the map that is bound to the parent node
-     * info. For any case node, only when the key and value is matched the
-     * object of the case is provided. If a match is not found, null is
-     * returned.
-     *
-     * @param parentNodeInfo parent YTB node info
-     * @param caseNode       case schema node
-     * @return object of the case node
-     */
-    private Object getCaseObjectFromChoice(YtbNodeInfo parentNodeInfo,
-                                           YangSchemaNode caseNode) {
-        String javaName = getCapitalCase(
-                caseNode.getJavaClassNameOrBuiltInType());
-        String choiceName = ((YangNode) caseNode).getParent().getName();
-        Map<String, Object> mapObj = parentNodeInfo.getChoiceCaseMap();
-        Object caseObj = mapObj.get(choiceName);
-        Class<?> interfaceClass = getInterfaceClassFromImplClass(caseObj);
-        return interfaceClass.getSimpleName().equals(javaName) ? caseObj : null;
-    }
-
-    /**
-     * Adds leaf to YDT when value is present. For primitive types, in order
-     * to avoid default values, the value select is set or not is checked and
-     * then added.
-     *
-     * @param holder    leaf holder
-     * @param yangLeaf  YANG leaf node
-     * @param parentObj leaf holder object
-     * @param leafType  object of leaf type
-     */
-    private void addLeafWithValue(YangSchemaNode holder, YangLeaf yangLeaf,
-                                  Object parentObj, Object leafType) {
-        String fieldValue = null;
-        if (isTypePrimitive(yangLeaf.getDataType())) {
-            fieldValue = getLeafValueFromValueSetFlag(holder, parentObj,
-                                                      yangLeaf, leafType);
-            /*
-             * Checks the object is present or not, when type is
-             * non-primitive. And adds the value from the respective data type.
-             */
-        } else if (leafType != null) {
-            fieldValue = getStringFromType(holder, parentObj,
-                                           getJavaName(yangLeaf), leafType,
-                                           yangLeaf.getDataType());
-        }
-
-        if (nonEmpty(fieldValue)) {
-            boolean isEmpty = isTypeEmpty(fieldValue,
-                                          yangLeaf.getDataType());
-            if (isEmpty) {
-                if (!fieldValue.equals(TRUE)) {
-                    return;
-                }
-                fieldValue = null;
-            }
-            extBuilder.addLeaf(fieldValue, yangLeaf);
-            extBuilder.traverseToParentWithoutValidation();
-        }
-    }
-
-    /**
-     * Returns the value as true if direct or referred type from leafref or
-     * derived points to empty data type; false otherwise.
-     *
-     * @param fieldValue value of the leaf
-     * @param dataType   type of the leaf
-     * @return true if type is empty; false otherwise.
-     */
-    private boolean isTypeEmpty(String fieldValue, YangType<?> dataType) {
-        if (fieldValue.equals(TRUE) || fieldValue.equals(FALSE)) {
-            switch (dataType.getDataType()) {
-                case EMPTY:
-                    return true;
-
-                case LEAFREF:
-                    YangLeafRef leafRef =
-                            (YangLeafRef) dataType.getDataTypeExtendedInfo();
-                    return isTypeEmpty(fieldValue,
-                                       leafRef.getEffectiveDataType());
-                case DERIVED:
-                    YangDerivedInfo info =
-                            (YangDerivedInfo) dataType
-                                    .getDataTypeExtendedInfo();
-                    YangDataTypes type = info.getEffectiveBuiltInType();
-                    return type == EMPTY;
-
-                default:
-                    return false;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Adds leaf without value, when the select leaf bit is set.
-     *
-     * @param holder    leaf holder
-     * @param yangLeaf  YANG leaf node
-     * @param parentObj leaf holder object
-     */
-    private void addLeafWithoutValue(YangSchemaNode holder, YangLeaf yangLeaf,
-                                     Object parentObj) {
-
-        String selectLeaf;
-        try {
-            selectLeaf = isValueOrSelectLeafSet(holder, parentObj,
-                                                getJavaName(yangLeaf),
-                                                IS_SELECT_LEAF_SET_METHOD);
-        } catch (NoSuchMethodException e) {
-            selectLeaf = FALSE;
-        }
-        if (selectLeaf.equals(TRUE)) {
-            extBuilder.addLeaf(null, yangLeaf);
-            extBuilder.traverseToParentWithoutValidation();
-        }
-    }
-
-    /**
-     * Returns the value of type, after checking the value leaf flag. If the
-     * flag is set, then it takes the value else returns null.
-     *
-     * @param holder    leaf holder
-     * @param parentObj parent object
-     * @param yangLeaf  YANG leaf node
-     * @param leafType  object of leaf type
-     * @return value of type
-     */
-    private String getLeafValueFromValueSetFlag(YangSchemaNode holder, Object parentObj,
-                                                YangLeaf yangLeaf, Object leafType) {
-
-        String valueOfLeaf;
-        try {
-            valueOfLeaf = isValueOrSelectLeafSet(holder, parentObj,
-                                                 getJavaName(yangLeaf),
-                                                 IS_LEAF_VALUE_SET_METHOD);
-        } catch (NoSuchMethodException e) {
-            throw new YtbException(e);
-        }
-        if (valueOfLeaf.equals(TRUE)) {
-            return getStringFromType(holder, parentObj,
-                                     getJavaName(yangLeaf), leafType,
-                                     yangLeaf.getDataType());
-        }
-        return null;
-    }
-
-    /**
-     * Returns the node info which can be processed, by eliminating the nodes
-     * which need not to be processed at normal conditions such as RPC,
-     * notification and augment.
-     *
-     * @param curNode current node
-     * @return info of node which needs processing
-     */
-    private YtbTraversalInfo getProcessableInfo(YangNode curNode) {
-        if (curNode.getNextSibling() != null) {
-            YangNode sibling = curNode.getNextSibling();
-            while (isNonProcessableNode(sibling)) {
-                sibling = sibling.getNextSibling();
-            }
-            if (sibling != null) {
-                return new YtbTraversalInfo(sibling, SIBLING);
-            }
-        }
-        return new YtbTraversalInfo(curNode.getParent(), PARENT);
-    }
-
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbException.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbException.java
deleted file mode 100644
index 1023ca9..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbException.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ytb;
-
-/**
- * Represents exception that needs to be handled by YTB.
- */
-public class YtbException extends RuntimeException {
-
-    /**
-     * Creates YTB exception with an exception message.
-     *
-     * @param exceptionMessage message with which exception must be thrown
-     */
-    public YtbException(String exceptionMessage) {
-        super(exceptionMessage);
-    }
-
-    /**
-     * Creates YTB exception with the cause for it.
-     *
-     * @param cause cause of the exception
-     */
-    public YtbException(Throwable cause) {
-        super(cause);
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbNodeInfo.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbNodeInfo.java
deleted file mode 100644
index 045192d..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbNodeInfo.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ytb;
-
-import org.onosproject.yangutils.datamodel.YangAugment;
-
-import java.util.Iterator;
-import java.util.Map;
-
-/**
- * Represents YTB node info for all the nodes that are added to the YDT
- * builder tree.Contains the information which can be attached and retrieved
- * back from YDT while walking.
- */
-public class YtbNodeInfo {
-
-    /**
-     * Object of the corresponding YANG construct. This object is bound to
-     * each and every YDT node. So, whenever walk of parent and sibling
-     * happens, object can be retrieved from its YDT node.
-     */
-    private Object yangObject;
-
-    /**
-     * The list iterator since first content of the multi instance node is
-     * faced. With this iterator the node can be walked multiple times till
-     * it becomes empty.
-     */
-    private Iterator<Object> listIterator;
-
-    /**
-     * The current YTB node's, list of augments are iterated through this
-     * iterator. Every time an augment is built completely, this iterator
-     * gives the next augment node until it becomes empty.
-     */
-    private Iterator<YangAugment> augmentNodeItr;
-
-    /**
-     * The map with case object as value and choice node name as key is added
-     * for the current YTB info. Every time a case schema node comes, it takes
-     * this map and checks if it is present.
-     */
-    private Map<String, Object> choiceCaseMap;
-
-    /**
-     * When the case finds its object in map, it assigns it to case object of
-     * the YTB info, so when its child wants to take the parent object, they
-     * can take from the YTB info's case object.
-     */
-    private Object caseObject;
-
-    /**
-     * When the augment object is present, it assigns it to augment object of
-     * the YTB info, so when its child wants to take the parent object, they
-     * can take from the YTB info's augment object.
-     */
-    private Object augmentObject;
-
-    /**
-     * Constructs a default YTB node info.
-     */
-    public YtbNodeInfo() {
-    }
-
-    /**
-     * Returns the object of the YANG schema node.
-     *
-     * @return YANG node object
-     */
-    public Object getYangObject() {
-        return yangObject;
-    }
-
-    /**
-     * Sets the object of the YANG schema node.
-     *
-     * @param yangObject YANG node object
-     */
-    public void setYangObject(Object yangObject) {
-        this.yangObject = yangObject;
-    }
-
-    /**
-     * Returns the current list iterator of the YANG schema node.
-     *
-     * @return current list iterator for the schema node
-     */
-    public Iterator<Object> getListIterator() {
-        return listIterator;
-    }
-
-    /**
-     * Sets the current list iterator of the YANG schema node.
-     *
-     * @param listIterator current list iterator for the schema node
-     */
-    public void setListIterator(Iterator<Object> listIterator) {
-        this.listIterator = listIterator;
-    }
-
-    /**
-     * Returns the map of choice schema name and case object.
-     *
-     * @return choice name and case object map
-     */
-    public Map<String, Object> getChoiceCaseMap() {
-        return choiceCaseMap;
-    }
-
-    /**
-     * Sets the map of choice schema name and case object.
-     *
-     * @param choiceCaseMap choice name and case object map
-     */
-    public void setChoiceCaseMap(Map<String, Object> choiceCaseMap) {
-        this.choiceCaseMap = choiceCaseMap;
-    }
-
-    /**
-     * Returns the case object.
-     *
-     * @return case object
-     */
-    public Object getCaseObject() {
-        return caseObject;
-    }
-
-    /**
-     * Sets the case node object.
-     *
-     * @param caseObject case node object
-     */
-    public void setCaseObject(Object caseObject) {
-        this.caseObject = caseObject;
-    }
-
-    /**
-     * Returns the augment node object.
-     *
-     * @return augment node object
-     */
-    public Object getAugmentObject() {
-        return augmentObject;
-    }
-
-    /**
-     * Sets the augment node object.
-     *
-     * @param augmentObject augment node object
-     */
-    public void setAugmentObject(Object augmentObject) {
-        this.augmentObject = augmentObject;
-    }
-
-    /**
-     * Returns the current list iterator of the YANG augment node.
-     *
-     * @return augment node iterator
-     */
-    public Iterator<YangAugment> getAugmentIterator() {
-        return augmentNodeItr;
-    }
-
-    /**
-     * Sets the current list iterator of the YANG augment node.
-     *
-     * @param augmentNodeItr augment node iterator
-     */
-    public void setAugmentIterator(Iterator<YangAugment> augmentNodeItr) {
-        this.augmentNodeItr = augmentNodeItr;
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbTraversalInfo.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbTraversalInfo.java
deleted file mode 100644
index a1ea640..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbTraversalInfo.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ytb;
-
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yms.app.utils.TraversalType;
-
-/**
- * Represents YTB Traversal info which is needed every time the traversal of
- * a YANG node happens. This contains YANG node and its corresponding traversal
- * type information.
- */
-public class YtbTraversalInfo {
-
-    /**
-     * YANG node of the current traversal.
-     */
-    private YangNode yangNode;
-
-    /**
-     * Traverse type of the current traversal.
-     */
-    private TraversalType traverseType;
-
-    /**
-     * Creates YTB traversal info by taking the traversal type and the YANG
-     * node.
-     *
-     * @param yangNode     YANG node
-     * @param traverseType traversal type
-     */
-    public YtbTraversalInfo(YangNode yangNode, TraversalType traverseType) {
-        this.yangNode = yangNode;
-        this.traverseType = traverseType;
-    }
-
-    /**
-     * Returns the YANG node of the current traversal.
-     *
-     * @return YANG node
-     */
-    public YangNode getYangNode() {
-        return yangNode;
-    }
-
-    /**
-     * Returns the traversal type of the current traversal.
-     *
-     * @return traversal type
-     */
-    public TraversalType getTraverseType() {
-        return traverseType;
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbUtil.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbUtil.java
deleted file mode 100644
index e9cdd57..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbUtil.java
+++ /dev/null
@@ -1,495 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ytb;
-
-import org.onosproject.yangutils.datamodel.YangAugment;
-import org.onosproject.yangutils.datamodel.YangCase;
-import org.onosproject.yangutils.datamodel.YangIdentity;
-import org.onosproject.yangutils.datamodel.YangIdentityRef;
-import org.onosproject.yangutils.datamodel.YangLeafRef;
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangNotification;
-import org.onosproject.yangutils.datamodel.YangOutput;
-import org.onosproject.yangutils.datamodel.YangRpc;
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yangutils.datamodel.YangType;
-import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
-import org.onosproject.yangutils.translator.tojava.javamodel.JavaLeafInfoContainer;
-import org.onosproject.yms.app.utils.TraversalType;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.onosproject.yms.ydt.YdtContextOperationType;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.Base64;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_AUGMENT_NODE;
-import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_MULTI_INSTANCE_NODE;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BOOLEAN;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.EMPTY;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT16;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT64;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT8;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.LEAFREF;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT16;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT32;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
-import static org.onosproject.yms.app.utils.TraversalType.PARENT;
-
-/**
- * Representation of utility for YANG tree builder.
- */
-public final class YtbUtil {
-
-    /**
-     * Static attribute for string value having null.
-     */
-    public static final String STR_NULL = "null";
-
-    /**
-     * Static attribute for a dot string.
-     */
-    public static final String PERIOD = ".";
-
-    private static final int ONE = 1;
-    private static final String YANG = "yang";
-    private static final String OP_TYPE = "OpType";
-    private static final String STR_NONE = "NONE";
-    private static final String ENUM_LEAF_IDENTIFIER = "$LeafIdentifier";
-    private static final Set<YangDataTypes> PRIMITIVE_TYPES =
-            new HashSet<>(Arrays.asList(INT8, INT16, INT32, INT64, UINT8,
-                                        UINT16, UINT32, BOOLEAN, EMPTY));
-    private static final String TO_STRING = "toString";
-
-    // No instantiation.
-    private YtbUtil() {
-    }
-
-    /**
-     * Returns the object of the node from the node info. Getting object for
-     * augment and case differs from other node.
-     *
-     * @param nodeInfo node info of the holder
-     * @param yangNode YANG node of the holder
-     * @return object of the parent
-     */
-    public static Object getParentObjectOfNode(YtbNodeInfo nodeInfo,
-                                               YangNode yangNode) {
-        Object object;
-        if (yangNode instanceof YangCase) {
-            object = nodeInfo.getCaseObject();
-        } else if (yangNode instanceof YangAugment) {
-            object = nodeInfo.getAugmentObject();
-        } else {
-            object = nodeInfo.getYangObject();
-        }
-        return object;
-    }
-
-    /**
-     * Returns the value of an attribute, in a class object. The attribute
-     * name is taken from the YANG node java name.
-     *
-     * @param nodeObj   object of the node
-     * @param fieldName name of the attribute
-     * @return object of the attribute
-     * @throws NoSuchMethodException method not found exception
-     */
-    public static Object getAttributeOfObject(Object nodeObj, String fieldName)
-            throws NoSuchMethodException {
-        Class<?> nodeClass = nodeObj.getClass();
-        Method getterMethod;
-        try {
-            getterMethod = nodeClass.getDeclaredMethod(fieldName);
-            return getterMethod.invoke(nodeObj);
-        } catch (InvocationTargetException | IllegalAccessException e) {
-            throw new YtbException(e);
-        }
-    }
-
-    /**
-     * Returns the object of the declared method in parent class by invoking
-     * through the child class object.
-     *
-     * @param childClass child class which inherits the parent class
-     * @param methodName name of the declared method
-     * @return value of the method
-     */
-    public static Object getAttributeFromInheritance(Object childClass,
-                                                     String methodName) {
-        Class<?> parentClass = childClass.getClass().getSuperclass();
-        Method getterMethod;
-        try {
-            getterMethod = parentClass.getDeclaredMethod(methodName);
-            return getterMethod.invoke(childClass);
-        } catch (InvocationTargetException | NoSuchMethodException |
-                IllegalAccessException e) {
-            throw new YtbException(e);
-        }
-    }
-
-    /**
-     * Returns interface class from an implementation class object.
-     *
-     * @param obj implementation class object
-     * @return interface class
-     */
-    public static Class<?> getInterfaceClassFromImplClass(Object obj) {
-        Class<?>[] interfaces = obj.getClass().getInterfaces();
-        if (interfaces.length > ONE) {
-            // TODO: Need to handle when impl class has more than one interface.
-            throw new YtbException("Implementation class having more than one" +
-                                           " interface is not handled");
-        }
-        return interfaces[0];
-    }
-
-    /**
-     * Returns the operation type value for a class object. If the operation
-     * type is not set, then none type is returned.
-     *
-     * @param nodeObj  node object
-     * @param typeName data type name
-     * @return operation type of the class
-     */
-    public static YdtContextOperationType getNodeOpType(Object nodeObj,
-                                                        String typeName) {
-        Object opTypeObj;
-        try {
-            opTypeObj = getAttributeOfObject(nodeObj, typeName);
-        } catch (NoSuchMethodException e) {
-            return YdtContextOperationType.valueOf(STR_NONE);
-        }
-        String opTypeValue = String.valueOf(opTypeObj);
-        if (opTypeValue.equals(STR_NULL)) {
-            return null;
-        }
-        return YdtContextOperationType.valueOf(opTypeValue);
-    }
-
-    /**
-     * Returns true, if data type of leaf is primitive data type; false
-     * otherwise.
-     *
-     * @param yangType leaf type
-     * @return true if data type is primitive; false otherwise
-     */
-    public static boolean isTypePrimitive(YangType yangType) {
-        if (yangType.getDataType() == LEAFREF) {
-            YangLeafRef leafRef =
-                    (YangLeafRef) yangType.getDataTypeExtendedInfo();
-            return isPrimitiveDataType(leafRef.getEffectiveDataType()
-                                               .getDataType());
-        }
-        return isPrimitiveDataType(yangType.getDataType());
-    }
-
-    /**
-     * Returns the registered class from the YSR of the module node where
-     * augment is present.
-     *
-     * @param curNode  current augment node
-     * @param registry schema registry
-     * @return class loader of module
-     */
-    public static Class<?> getClassLoaderForAugment(
-            YangNode curNode, YangSchemaRegistry registry) {
-        YangNode moduleNode = curNode.getParent();
-        String moduleName = moduleNode.getJavaClassNameOrBuiltInType();
-        String modulePackage = moduleNode.getJavaPackage();
-        return registry.getRegisteredClass(moduleNode
-        );
-    }
-
-    /**
-     * Returns the string true, if the leaf data is actually set; false
-     * otherwise.
-     *
-     * @param holder     leaf holder
-     * @param nodeObj    object if the node
-     * @param javaName   java name of the leaf
-     * @param methodName getter method name
-     * @return string value of the boolean method
-     * @throws NoSuchMethodException if the method is not present
-     */
-    public static String isValueOrSelectLeafSet(YangSchemaNode holder, Object nodeObj,
-                                                String javaName, String methodName)
-            throws NoSuchMethodException {
-
-        Class<?> nodeClass = nodeObj.getClass();
-
-        // Appends the enum inner package to the interface class package.
-        String enumPackage = holder.getJavaPackage() + PERIOD +
-                getCapitalCase(holder.getJavaClassNameOrBuiltInType()) +
-                ENUM_LEAF_IDENTIFIER;
-
-        ClassLoader classLoader = nodeClass.getClassLoader();
-        Class leafEnum;
-        try {
-            leafEnum = classLoader.loadClass(enumPackage);
-            Method getterMethod = nodeClass.getMethod(methodName, leafEnum);
-            // Gets the value of the enum.
-            Enum<?> value = Enum.valueOf(leafEnum, javaName.toUpperCase());
-            // Invokes the method with the value of enum as param.
-            return String.valueOf(getterMethod.invoke(nodeObj, value));
-        } catch (IllegalAccessException | InvocationTargetException |
-                ClassNotFoundException e) {
-            throw new YtbException(e);
-        }
-    }
-
-    /**
-     * Returns the string value from the respective data types of the
-     * leaf/leaf-list.
-     *
-     * @param holder    leaf/leaf-list holder
-     * @param holderObj leaf/leaf-list holder object
-     * @param name      leaf/leaf-list name
-     * @param fieldObj  object of the leaf/leaf-list field
-     * @param dataType  type of the leaf/leaf-list
-     * @return string value from the type
-     */
-    public static String getStringFromType(YangSchemaNode holder, Object holderObj,
-                                           String name, Object fieldObj, YangType dataType) {
-
-        if (fieldObj == null) {
-            throw new YtbException("Value of " + holder.getName() + " is null");
-        }
-
-        YangDataTypes type = dataType.getDataType();
-        switch (type) {
-            case INT8:
-            case INT16:
-            case INT32:
-            case INT64:
-            case UINT8:
-            case UINT16:
-            case UINT32:
-            case UINT64:
-            case EMPTY:
-            case STRING:
-            case DECIMAL64:
-            case INSTANCE_IDENTIFIER:
-            case DERIVED:
-            case UNION:
-            case ENUMERATION:
-            case BOOLEAN:
-                return String.valueOf(fieldObj).trim();
-
-            case BITS:
-                return getBitsValue(holder, holderObj, name, fieldObj).trim();
-
-            case BINARY:
-                return Base64.getEncoder().encodeToString((byte[]) fieldObj);
-
-            case IDENTITYREF:
-                YangIdentityRef ir =
-                        (YangIdentityRef) dataType.getDataTypeExtendedInfo();
-                if (ir.isInGrouping()) {
-                    return String.valueOf(fieldObj).trim();
-                }
-                return getIdentityRefValue(fieldObj, ir, holderObj);
-
-            case LEAFREF:
-                YangLeafRef leafRef =
-                        (YangLeafRef) dataType.getDataTypeExtendedInfo();
-                return getStringFromType(holder, holderObj, name, fieldObj,
-                                         leafRef.getEffectiveDataType());
-
-            default:
-                throw new YtbException("Unsupported data type. Cannot be " +
-                                               "processed.");
-        }
-    }
-
-    /**
-     * Returns the string values for the data type bits.
-     *
-     * @param holder    leaf/leaf-list holder
-     * @param holderObj leaf/leaf-list holder object
-     * @param name      leaf/leaf-list name
-     * @param fieldObj  object of the leaf/leaf-list field
-     * @return string value for bits type
-     */
-    private static String getBitsValue(YangSchemaNode holder, Object holderObj,
-                                       String name, Object fieldObj) {
-
-        Class<?> holderClass = holderObj.getClass();
-        String interfaceName = holder.getJavaClassNameOrBuiltInType();
-        String className = interfaceName.toLowerCase() + PERIOD +
-                getCapitalCase(name);
-        String pkgName = holder.getJavaPackage() + PERIOD + className;
-        ClassLoader classLoader = holderClass.getClassLoader();
-
-        Class<?> bitClass;
-        try {
-            bitClass = classLoader.loadClass(pkgName);
-            Method getterMethod = bitClass.getDeclaredMethod(
-                    TO_STRING, fieldObj.getClass());
-            return String.valueOf(getterMethod.invoke(null, fieldObj));
-        } catch (ClassNotFoundException | NoSuchMethodException |
-                InvocationTargetException | IllegalAccessException e) {
-            throw new YtbException(e);
-        }
-    }
-
-    /**
-     * Returns the string value of the type identity-ref.
-     *
-     * @param fieldObj  object of the leaf/leaf-list field
-     * @param ir        YANG identity ref
-     * @param holderObj leaf/leaf-list holder object
-     * @return string value for identity ref type
-     */
-    private static String getIdentityRefValue(Object fieldObj, YangIdentityRef ir,
-                                              Object holderObj) {
-
-        YangIdentity id = ir.getReferredIdentity();
-        String idName = id.getJavaClassNameOrBuiltInType();
-        String idPkg = id.getJavaPackage() + PERIOD + getCapitalCase(idName);
-        String methodName = idName + getCapitalCase(TO_STRING);
-
-        Class<?> holderClass = holderObj.getClass();
-        ClassLoader classLoader = holderClass.getClassLoader();
-        Class<?> idClass;
-        try {
-            idClass = classLoader.loadClass(idPkg);
-            Method method = idClass.getDeclaredMethod(methodName, null);
-            return String.valueOf(method.invoke(fieldObj, null)).trim();
-        } catch (ClassNotFoundException | NoSuchMethodException |
-                InvocationTargetException | IllegalAccessException e) {
-            throw new YtbException(e);
-        }
-    }
-
-    /**
-     * Returns true, if the data type is primitive; false otherwise.
-     *
-     * @param dataType data type
-     * @return true if the data type is primitive; false otherwise
-     */
-    private static boolean isPrimitiveDataType(YangDataTypes dataType) {
-        return PRIMITIVE_TYPES.contains(dataType);
-    }
-
-    /**
-     * Returns true, if processing of the node is not required; false otherwise.
-     * For the nodes such as notification, RPC, augment there is a different
-     * flow, so these nodes are skipped in normal conditions.
-     *
-     * @param yangNode node to be checked
-     * @return true if node processing is not required; false otherwise.
-     */
-    public static boolean isNonProcessableNode(YangNode yangNode) {
-        return yangNode != null && (yangNode instanceof YangNotification) ||
-                (yangNode instanceof YangRpc) || (yangNode instanceof YangAugment);
-    }
-
-    /**
-     * Returns true, if multi instance node; false otherwise.
-     *
-     * @param yangNode YANG node
-     * @return true, if multi instance node; false otherwise.
-     */
-    public static boolean isMultiInstanceNode(YangNode yangNode) {
-        return yangNode.getYangSchemaNodeType() == YANG_MULTI_INSTANCE_NODE;
-    }
-
-    /**
-     * Returns true, if augment node; false otherwise.
-     *
-     * @param yangNode YANG node
-     * @return true, if augment node; false otherwise.
-     */
-    public static boolean isAugmentNode(YangNode yangNode) {
-        return yangNode.getYangSchemaNodeType() == YANG_AUGMENT_NODE;
-    }
-
-    /**
-     * Returns string for throwing error when empty object is given as input
-     * to YTB.
-     *
-     * @param objName name of the object
-     * @return error message
-     */
-    public static String emptyObjErrMsg(String objName) {
-        return "The " + objName + " given for tree creation cannot be null";
-    }
-
-    /**
-     * Returns the java name for the nodes, leaf/leaf-list.
-     *
-     * @param node YANG node
-     * @return node java name
-     */
-    public static String getJavaName(Object node) {
-        return ((JavaLeafInfoContainer) node).getJavaName(null);
-    }
-
-    /**
-     * Returns true, if the list is not null and non-empty; false otherwise.
-     *
-     * @param c collection object
-     * @return true, if the list is not null and non-empty; false otherwise
-     */
-    public static boolean nonEmpty(Collection<?> c) {
-        return c != null && !c.isEmpty();
-    }
-
-    /**
-     * Returns true, if the string is not null and non-empty; false otherwise.
-     *
-     * @param str string value
-     * @return true, if the string is not null and non-empty; false otherwise.
-     */
-    public static boolean nonEmpty(String str) {
-        return str != null && !str.isEmpty();
-    }
-
-    /**
-     * Returns true when the node processing of RPC and notification is
-     * completed; false otherwise. For RPC and notification, processing of
-     * other nodes are invalid, so once node gets completed, it must be stopped.
-     *
-     * @param curNode      current node
-     * @param curTraversal current traversal of the node
-     * @return true, if the node processing is completed; false otherwise.
-     */
-    public static boolean isNodeProcessCompleted(
-            YangNode curNode, TraversalType curTraversal) {
-        return (curTraversal == PARENT &&
-                curNode instanceof YangNotification) ||
-                curNode instanceof YangOutput;
-    }
-
-    /**
-     * Returns the name of the operation type variable from the yang name.
-     *
-     * @param curNode YANG node
-     * @return name of operation type
-     */
-    public static String getOpTypeName(YangNode curNode) {
-        return YANG + getCapitalCase(curNode.getJavaClassNameOrBuiltInType()) +
-                OP_TYPE;
-    }
-}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/package-info.java
deleted file mode 100644
index a3c95a3..0000000
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides implementation of YANG tree builder. YTB handles creation of YDT
- * from YANG modeled objects.
- */
-package org.onosproject.yms.app.ytb;
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/MockYmsManager.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/MockYmsManager.java
deleted file mode 100644
index 3fcd5aa..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/MockYmsManager.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yab;
-
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ysr.TestYangSchemaNodeProvider;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.onosproject.yms.ych.YangCodecHandler;
-import org.onosproject.yms.ych.YangDataTreeCodec;
-import org.onosproject.yms.ych.YangProtocolEncodingFormat;
-import org.onosproject.yms.ydt.YdtBuilder;
-import org.onosproject.yms.ydt.YdtResponse;
-import org.onosproject.yms.ydt.YdtWalker;
-import org.onosproject.yms.ydt.YmsOperationType;
-import org.onosproject.yms.ymsm.YmsService;
-import org.onosproject.yms.ynh.YangNotificationService;
-import org.onosproject.yms.ysr.YangModuleIdentifier;
-import org.onosproject.yms.ysr.YangModuleLibrary;
-
-import java.util.List;
-
-/**
- * Represents implementation of YANG application management system manager.
- */
-public class MockYmsManager
-        implements YmsService {
-
-    YangSchemaRegistry schemaRegistry;
-    TestYangSchemaNodeProvider testYangSchemaNodeProvider =
-            new TestYangSchemaNodeProvider();
-
-    @Override
-    public YdtBuilder getYdtBuilder(String logicalRootName,
-                                    String rootNamespace,
-                                    YmsOperationType operationType) {
-        testYangSchemaNodeProvider.processSchemaRegistry(new TestManager());
-        schemaRegistry = testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-        return new YangRequestWorkBench(logicalRootName, rootNamespace,
-                                        operationType, schemaRegistry, false);
-    }
-
-    @Override
-    public YdtBuilder getYdtBuilder(String logicalRootName,
-                                    String rootNamespace,
-                                    YmsOperationType operationType,
-                                    Object schemaRegistryForYdt) {
-        return null;
-    }
-
-    @Override
-    public YdtWalker getYdtWalker() {
-        return null;
-    }
-
-    @Override
-    public YdtResponse executeOperation(YdtBuilder operationRequest) {
-        YangApplicationBroker requestBroker =
-                new YangApplicationBroker(schemaRegistry);
-        switch (operationRequest.getYmsOperationType()) {
-            case EDIT_CONFIG_REQUEST:
-                try {
-                    return requestBroker.processEdit(operationRequest);
-                } catch (CloneNotSupportedException e) {
-                }
-                break;
-            case QUERY_CONFIG_REQUEST:
-            case QUERY_REQUEST:
-                return requestBroker.processQuery(operationRequest);
-            case RPC_REQUEST:
-                return requestBroker.processOperation(operationRequest);
-            default:
-        }
-        return null;
-    }
-
-    @Override
-    public YangNotificationService getYangNotificationService() {
-        return null;
-    }
-
-    @Override
-    public void registerService(Object appManager, Class<?> yangService,
-                                List<String> supportedFeatureList) {
-    }
-
-    @Override
-    public void unRegisterService(Object appManager, Class<?> yangService) {
-
-    }
-
-    @Override
-    public YangModuleLibrary getYangModuleLibrary() {
-        return null;
-    }
-
-    @Override
-    public String getYangFile(YangModuleIdentifier moduleIdentifier) {
-        return null;
-    }
-
-    @Override
-    public void registerDefaultCodec(YangDataTreeCodec defaultCodec,
-                                     YangProtocolEncodingFormat dataFormat) {
-    }
-
-    @Override
-    public YangCodecHandler getYangCodecHandler() {
-        return null;
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/TestManager.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/TestManager.java
deleted file mode 100644
index 182d4ca..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/TestManager.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yab;
-
-import org.onosproject.yang.gen.v1.ydt.test.rev20160524.Test;
-import org.onosproject.yang.gen.v1.ydt.test.rev20160524.TestOpParam;
-import org.onosproject.yang.gen.v1.ydt.test.rev20160524.TestService;
-import org.onosproject.yang.gen.v1.ydt.test.rev20160524.test.Cont1;
-import org.onosproject.yang.gen.v1.ydt.test.rev20160524.test.DefaultCont1;
-import org.onosproject.yang.gen.v1.ydt.test.rev20160524.test.rockthehouse.DefaultRockTheHouseOutput;
-import org.onosproject.yang.gen.v1.ydt.test.rev20160524.test.rockthehouse.RockTheHouseInput;
-import org.onosproject.yang.gen.v1.ydt.test.rev20160524.test.rockthehouse.RockTheHouseOutput;
-import org.onosproject.yang.gen.v1.ydt.test.rev20160524.test.rockthehouse1.RockTheHouse1Input;
-import org.onosproject.yang.gen.v1.ydt.test.rev20160524.test.rockthehouse2.DefaultRockTheHouse2Output;
-import org.onosproject.yang.gen.v1.ydt.test.rev20160524.test.rockthehouse2.RockTheHouse2Output;
-
-/**
- * Implementation of the application management service.
- */
-public class TestManager implements TestService {
-
-    Test response;
-
-    @Override
-    public Test getTest(TestOpParam test) {
-        Cont1 cont = new DefaultCont1.Cont1Builder().leaf4("4").build();
-        Test response = new TestOpParam.TestBuilder().cont1(cont).build();
-        return response;
-    }
-
-    @Override
-    public void setTest(TestOpParam test) {
-        response = test;
-    }
-
-    @Override
-    public Test getAugmentedTestCont4(TestOpParam test) {
-        Cont1 cont = new DefaultCont1.Cont1Builder().leaf4("4").build();
-        Test response = new TestOpParam.TestBuilder().cont1(cont).build();
-        return response;
-    }
-
-    @Override
-    public void setAugmentedTestCont4(TestOpParam augmentedTestCont4) {
-        response = augmentedTestCont4;
-    }
-
-    @Override
-    public RockTheHouseOutput rockTheHouse(RockTheHouseInput inputVar) {
-        return DefaultRockTheHouseOutput.builder().hello("hello").build();
-    }
-
-
-    @Override
-    public void rockTheHouse1(RockTheHouse1Input inputVar) {
-        // TODO : to be implemented
-    }
-
-    @Override
-    public RockTheHouse2Output rockTheHouse2() {
-        return DefaultRockTheHouse2Output
-                .builder().leaf14("14").build();
-    }
-
-    @Override
-    public void rockTheHouse3() {
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/YangApplicationBrokerTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/YangApplicationBrokerTest.java
deleted file mode 100644
index 8c03d47..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/YangApplicationBrokerTest.java
+++ /dev/null
@@ -1,1080 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yab;
-
-import org.junit.Test;
-import org.onosproject.yangutils.datamodel.YangAugment;
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtAppContext;
-import org.onosproject.yms.app.ydt.YdtAppNodeOperationType;
-import org.onosproject.yms.app.ydt.YdtNode;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.io.IOException;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REQUEST;
-import static org.onosproject.yms.ydt.YmsOperationType.QUERY_CONFIG_REQUEST;
-import static org.onosproject.yms.ydt.YmsOperationType.RPC_REQUEST;
-
-/**
- * Unit test case for YANG application broker.
- */
-public class YangApplicationBrokerTest {
-
-    MockYmsManager ymsManager = new MockYmsManager();
-
-    /**
-     * Returns YANG data tree to check edit operation of container.
-     *
-     * @return YANG data tree
-     */
-    private YangRequestWorkBench buildYdtForEditOperationWithoutDelete() {
-        String rootName = "root";
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null,
-                                                                EDIT_CONFIG_REQUEST);
-        defaultYdtBuilder.addChild("test", "ydt.test", MERGE);
-        defaultYdtBuilder.addChild("cont1", null, MERGE);
-        defaultYdtBuilder.addChild("cont2", null, MERGE);
-        defaultYdtBuilder.addChild("cont3", null, MERGE);
-        defaultYdtBuilder.addLeaf("leaf1", null, "1");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf4", null, "4");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addChild("cont4", null, MERGE);
-        defaultYdtBuilder.addChild("cont5", null, MERGE);
-        defaultYdtBuilder.addLeaf("leaf9", null, "9");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf10", null, "10");
-        return defaultYdtBuilder;
-    }
-
-    private YangRequestWorkBench buildYdtForKeyLeavesInDeleteTree() {
-        String rootName = "root";
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null,
-                                                                EDIT_CONFIG_REQUEST);
-        defaultYdtBuilder.addChild("test", "ydt.test", MERGE);
-        defaultYdtBuilder.addChild("list2", null, MERGE);
-        defaultYdtBuilder.addLeaf("leaf5", null, "5");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf6", null, "6");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf7", null, "7");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addChild("cont7", null, DELETE);
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        return defaultYdtBuilder;
-    }
-
-    /**
-     * Returns YANG data tree to check delete operation of container.
-     *
-     * @return YANG data tree
-     */
-    private YangRequestWorkBench buildYdtForEditOperationWithDelete() {
-        String rootName = "rootNode";
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null,
-                                                                EDIT_CONFIG_REQUEST);
-        defaultYdtBuilder.addChild("test", "ydt.test", MERGE);
-        defaultYdtBuilder.addChild("cont1", null, MERGE);
-        defaultYdtBuilder.addChild("cont2", null, DELETE);
-        defaultYdtBuilder.addChild("cont3", null, DELETE);
-        defaultYdtBuilder.addLeaf("leaf1", null, "1");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf4", null, "4");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addChild("cont4", null, DELETE);
-        defaultYdtBuilder.addChild("cont5", null, DELETE);
-        defaultYdtBuilder.addLeaf("leaf9", null, "9");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf10", null, "10");
-        return defaultYdtBuilder;
-    }
-
-    /**
-     * Returns YANG data tree to check edit operation of list.
-     *
-     * @return YANG data tree
-     */
-    private YangRequestWorkBench buildYdtForListEditOperationWithoutDelete() {
-        String rootName = "listWithoutDelete";
-        Set<String> valueSet = new LinkedHashSet<>();
-        valueSet.add("10");
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null,
-                                                                EDIT_CONFIG_REQUEST);
-        defaultYdtBuilder.addChild("test", "ydt.test", MERGE);
-        defaultYdtBuilder.addChild("cont1", null, MERGE);
-        defaultYdtBuilder.addChild("list1", null, MERGE);
-        defaultYdtBuilder.addLeaf("leaf2", null, "2");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf3", null, "3");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf4", null, "4");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addChild("list2", null, MERGE);
-        defaultYdtBuilder.addLeaf("leaf5", null, "5");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf6", null, "6");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf7", null, "7");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaflist8", null, valueSet);
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf10", null, "10");
-        return defaultYdtBuilder;
-    }
-
-    /**
-     * Returns YANG data tree to check delete operation of list.
-     *
-     * @return YANG data tree
-     */
-    private YangRequestWorkBench buildYdtForListEditOperationWithDelete() {
-        String rootName = "listWithDelete";
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null,
-                                                                EDIT_CONFIG_REQUEST);
-        defaultYdtBuilder.addChild("test", "ydt.test", MERGE);
-        defaultYdtBuilder.addChild("cont1", null, MERGE);
-        defaultYdtBuilder.addChild("list1", null, DELETE);
-        defaultYdtBuilder.addLeaf("leaf2", null, "2");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf3", null, "3");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf4", null, "4");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addChild("list2", null, DELETE);
-        defaultYdtBuilder.addLeaf("leaf5", null, "5");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf6", null, "6");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf10", null, "10");
-        return defaultYdtBuilder;
-    }
-
-    /**
-     * Returns YANG data tree to check query operation of container.
-     *
-     * @return YANG data tree
-     */
-    private YangRequestWorkBench buildYdtForQueryOperation() {
-        String rootName = "root";
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null,
-                                                                QUERY_CONFIG_REQUEST);
-        defaultYdtBuilder.addChild("test", "ydt.test");
-        defaultYdtBuilder.addChild("cont1", null);
-        defaultYdtBuilder.addChild("cont2", null);
-        defaultYdtBuilder.addChild("cont3", null);
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addChild("cont4", null);
-        defaultYdtBuilder.addChild("cont5", null);
-        return defaultYdtBuilder;
-    }
-
-    /**
-     * Returns YANG data tree to check query operation of list.
-     *
-     * @return YANG data tree
-     */
-    private YangRequestWorkBench buildYdtForListQueryOperation() {
-        String rootName = "listQuery";
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null,
-                                                                QUERY_CONFIG_REQUEST);
-        defaultYdtBuilder.addChild("test", "ydt.test");
-        defaultYdtBuilder.addChild("cont1", null);
-        defaultYdtBuilder.addChild("list1", null);
-        defaultYdtBuilder.addLeaf("leaf2", null, "2");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addChild("list2", null);
-        defaultYdtBuilder.addLeaf("leaf5", null, "5");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf6", null, "6");
-        return defaultYdtBuilder;
-    }
-
-    /**
-     * Returns YANG data tree to check delete operation of a node.
-     *
-     * @return YANG data tree
-     */
-    private YangRequestWorkBench buildYdtWithOneDeleteNode() {
-        String rootName = "root";
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null,
-                                                                EDIT_CONFIG_REQUEST);
-        defaultYdtBuilder.addChild("test", "ydt.test");
-        defaultYdtBuilder.addChild("cont1", null, MERGE);
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addChild("cont4", null, DELETE);
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf10", null, "10");
-        return defaultYdtBuilder;
-    }
-
-    /**
-     * Returns YANG data tree to check delete operation of last node.
-     *
-     * @return YANG data tree
-     */
-    private YangRequestWorkBench buildYdtWithDeleteNodeAsLastChild() {
-        String rootName = "root";
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null,
-                                                                EDIT_CONFIG_REQUEST);
-        defaultYdtBuilder.addChild("test", "ydt.test", MERGE);
-        defaultYdtBuilder.addChild("cont1", null, MERGE);
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addChild("list2", null, MERGE);
-        defaultYdtBuilder.addLeaf("leaf5", null, "10");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf6", null, "10");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addChild("cont4", null, DELETE);
-        return defaultYdtBuilder;
-    }
-
-    /**
-     * Returns YANG data tree to with delete operation of all the nodes.
-     *
-     * @return YANG data tree
-     */
-    private YangRequestWorkBench buildYdtWithAllDeleteNode() {
-        String rootName = "root";
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null,
-                                                                EDIT_CONFIG_REQUEST);
-        defaultYdtBuilder.addChild("test", "ydt.test", DELETE);
-        defaultYdtBuilder.addChild("cont1", null, DELETE);
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addChild("list2", null, DELETE);
-        defaultYdtBuilder.addLeaf("leaf5", null, "10");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addLeaf("leaf6", null, "10");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addChild("cont4", null, DELETE);
-        return defaultYdtBuilder;
-    }
-
-    /**
-     * Returns YANG data tree to check rpc operation with only input.
-     *
-     * @return YANG data tree
-     */
-    private YangRequestWorkBench buildYdtForRpcWithOnlyInput() {
-        String rootName = "root";
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null,
-                                                                RPC_REQUEST);
-        defaultYdtBuilder.addChild("test", "ydt.test");
-        defaultYdtBuilder.addChild("rock-the-house1", null);
-        defaultYdtBuilder.addChild("input", null);
-        defaultYdtBuilder.addLeaf("leaf13", null, "5");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        return defaultYdtBuilder;
-    }
-
-    /**
-     * Returns YANG data tree to check rpc operation with only output.
-     *
-     * @return YANG data tree
-     */
-    private YangRequestWorkBench buildYdtForRpcWithOnlyOutput() {
-        String rootName = "root";
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null,
-                                                                RPC_REQUEST);
-        defaultYdtBuilder.addChild("test", "ydt.test");
-        defaultYdtBuilder.addChild("rock-the-house2", null);
-        defaultYdtBuilder.addChild("output", null);
-        defaultYdtBuilder.addLeaf("leaf14", null, "14");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        return defaultYdtBuilder;
-    }
-
-    /**
-     * Returns YANG data tree to check rpc operation with both input and output.
-     *
-     * @return YANG data tree
-     */
-    private YangRequestWorkBench buildYdtForRpcWithBothInputOutput() {
-        String rootName = "root";
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null,
-                                                                RPC_REQUEST);
-        defaultYdtBuilder.addChild("test", "ydt.test");
-        defaultYdtBuilder.addChild("rock-the-house", null);
-        defaultYdtBuilder.addChild("input", null);
-        defaultYdtBuilder.addLeaf("zip-code", null, "5");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.addChild("output", null);
-        defaultYdtBuilder.addLeaf("hello", null, "5");
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        return defaultYdtBuilder;
-    }
-
-    /**
-     * Returns YANG data tree to check rpc operation.
-     *
-     * @return YANG data tree
-     */
-    private YangRequestWorkBench buildYdtForRpc() {
-        String rootName = "root";
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null,
-                                                                RPC_REQUEST);
-        defaultYdtBuilder.addChild("test", "ydt.test");
-        defaultYdtBuilder.addChild("rock-the-house3", null);
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        return defaultYdtBuilder;
-    }
-
-    /**
-     * Returns YANG data tree to check query operation with multiple level of
-     * augment.
-     *
-     * @return YANG data tree
-     */
-    private YangRequestWorkBench buildYdtForQueryWithMultipleAugment() {
-        String rootName = "root";
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null,
-                                                                QUERY_CONFIG_REQUEST);
-        defaultYdtBuilder.addChild("test", "ydt.test");
-        defaultYdtBuilder.traverseToParent();
-        return defaultYdtBuilder;
-    }
-
-    /**
-     * Returns YANG data tree to check delete operation with multiple level of
-     * augment.
-     *
-     * @return YANG data tree
-     */
-    private YangRequestWorkBench buildYdtForDeleteWithMultipleAugment() {
-        String rootName = "root";
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null,
-                                                                EDIT_CONFIG_REQUEST);
-        defaultYdtBuilder.addChild("test", "ydt.test");
-        defaultYdtBuilder.addChild("cont4", null, DELETE);
-        defaultYdtBuilder.traverseToParent();
-        defaultYdtBuilder.traverseToParent();
-        return defaultYdtBuilder;
-    }
-
-    /**
-     * Checks whether YANG data tree and delete tree is correct.
-     */
-    @Test
-    public void validateDeleteTreeOnlyOneNodeInDeleteList()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder =
-                buildYdtForEditOperationWithDelete();
-        YdtAppContext appContext =
-                defaultYdtBuilder.getAppRootNode().getFirstChild();
-        YdtContext ydtContext = appContext.getModuleContext();
-        List<YdtContext> deleteNodes = appContext.getDeleteNodes();
-
-        YdtContext cont1YdtContext;
-        YdtContext cont2YdtContext;
-        YdtContext cont3YdtContext;
-        YdtContext cont4YdtContext;
-        YdtContext deleteTree;
-
-        // verify whether ydt tree is correct
-        assertThat(ydtContext.getName(), is("test"));
-
-        cont1YdtContext = ydtContext.getFirstChild();
-        assertThat(cont1YdtContext.getName(), is("cont1"));
-
-        cont2YdtContext = cont1YdtContext.getFirstChild();
-        assertThat(cont2YdtContext.getName(), is("cont2"));
-
-        cont3YdtContext = cont2YdtContext.getFirstChild();
-        assertThat(cont3YdtContext.getName(), is("cont3"));
-
-        ydtContext = cont3YdtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("leaf1"));
-        assertThat(ydtContext.getValue(), is("1"));
-
-        ydtContext = cont2YdtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("leaf4"));
-        assertThat(ydtContext.getValue(), is("4"));
-
-        cont4YdtContext = cont1YdtContext.getNextSibling();
-        assertThat(cont4YdtContext.getName(), is("cont4"));
-
-        ydtContext = cont4YdtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("cont5"));
-
-        ydtContext = ydtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("leaf9"));
-        assertThat(ydtContext.getValue(), is("9"));
-
-        ydtContext = cont4YdtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("leaf10"));
-        assertThat(ydtContext.getValue(), is("10"));
-
-        // build delete tree
-        YangApplicationBroker yab = new YangApplicationBroker(null);
-        deleteTree = yab.buildDeleteTree(deleteNodes);
-
-        // verify whether delete ydt tree is correct
-        assertThat(deleteTree.getFirstChild().getName(), is("test"));
-
-        cont1YdtContext = deleteTree.getFirstChild().getFirstChild();
-        assertThat(cont1YdtContext.getName(), is("cont1"));
-
-        cont2YdtContext = cont1YdtContext.getFirstChild();
-        assertThat(cont2YdtContext.getName(), is("cont2"));
-
-        cont3YdtContext = cont2YdtContext.getFirstChild();
-        assertThat(cont3YdtContext.getName(), is("cont3"));
-
-        ydtContext = cont3YdtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("leaf1"));
-        assertThat(ydtContext.getValue(), is("1"));
-
-        assertThat(cont2YdtContext.getNextSibling(), nullValue());
-
-        cont4YdtContext = cont1YdtContext.getNextSibling();
-        assertThat(cont4YdtContext.getName(), is("cont4"));
-
-        ydtContext = cont4YdtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("cont5"));
-
-        ydtContext = ydtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("leaf9"));
-        assertThat(ydtContext.getValue(), is("9"));
-
-        assertThat(cont4YdtContext.getNextSibling(), nullValue());
-
-        // ydtTree after removing delete nodes
-        ydtContext = appContext.getModuleContext();
-        assertThat(ydtContext.getName(), is("test"));
-
-        cont1YdtContext = ydtContext.getFirstChild();
-        assertThat(cont1YdtContext.getName(), is("cont1"));
-
-        ydtContext = cont1YdtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("leaf4"));
-        assertThat(ydtContext.getValue(), is("4"));
-
-        ydtContext = cont1YdtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("leaf10"));
-        assertThat(ydtContext.getValue(), is("10"));
-    }
-
-    /**
-     * Checks whether YANG data tree and delete tree is correct.
-     */
-    @Test
-    public void validateListDeleteTree()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder =
-                buildYdtForListEditOperationWithDelete();
-        YdtAppContext appContext =
-                defaultYdtBuilder.getAppRootNode().getFirstChild();
-        YdtContext ydtContext = appContext.getModuleContext();
-        List<YdtContext> deleteNodes = appContext.getDeleteNodes();
-
-        YdtContext cont1YdtContext;
-        YdtContext list1YdtContext;
-        YdtContext list2YdtContext;
-        YdtContext deleteTree;
-
-        // verify whether ydt tree is correct
-        assertThat(ydtContext.getName(), is("test"));
-
-        cont1YdtContext = ydtContext.getFirstChild();
-        assertThat(cont1YdtContext.getName(), is("cont1"));
-
-        list1YdtContext = cont1YdtContext.getFirstChild();
-        assertThat(list1YdtContext.getName(), is("list1"));
-
-        ydtContext = list1YdtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("leaf2"));
-        assertThat(ydtContext.getValue(), is("2"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("leaf3"));
-        assertThat(ydtContext.getValue(), is("3"));
-
-        ydtContext = list1YdtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("leaf4"));
-        assertThat(ydtContext.getValue(), is("4"));
-
-        list2YdtContext = cont1YdtContext.getNextSibling();
-        assertThat(list2YdtContext.getName(), is("list2"));
-
-        ydtContext = list2YdtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("leaf5"));
-        assertThat(ydtContext.getValue(), is("5"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("leaf6"));
-        assertThat(ydtContext.getValue(), is("6"));
-
-        ydtContext = list2YdtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("leaf10"));
-        assertThat(ydtContext.getValue(), is("10"));
-
-        // build delete tree
-        YangApplicationBroker yab = new YangApplicationBroker(null);
-        deleteTree = yab.buildDeleteTree(deleteNodes);
-
-        assertThat(deleteTree.getFirstChild().getName(), is("test"));
-
-        cont1YdtContext = deleteTree.getFirstChild().getFirstChild();
-        assertThat(cont1YdtContext.getName(), is("cont1"));
-
-        list1YdtContext = cont1YdtContext.getFirstChild();
-        assertThat(list1YdtContext.getName(), is("list1"));
-
-        ydtContext = list1YdtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("leaf2"));
-        assertThat(ydtContext.getValue(), is("2"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("leaf3"));
-        assertThat(ydtContext.getValue(), is("3"));
-
-        assertThat(list1YdtContext.getNextSibling(), nullValue());
-
-        list2YdtContext = cont1YdtContext.getNextSibling();
-        assertThat(list2YdtContext.getName(), is("list2"));
-
-        ydtContext = list2YdtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("leaf5"));
-        assertThat(ydtContext.getValue(), is("5"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("leaf6"));
-        assertThat(ydtContext.getValue(), is("6"));
-
-        assertThat(ydtContext.getNextSibling(), nullValue());
-
-        // verify whether ydt tree is correct
-        ydtContext = appContext.getModuleContext();
-        assertThat(ydtContext.getName(), is("test"));
-
-        cont1YdtContext = ydtContext.getFirstChild();
-        assertThat(cont1YdtContext.getName(), is("cont1"));
-
-        ydtContext = cont1YdtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("leaf4"));
-        assertThat(ydtContext.getValue(), is("4"));
-
-        ydtContext = cont1YdtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("leaf10"));
-        assertThat(ydtContext.getValue(), is("10"));
-    }
-
-    /**
-     * Checks whether there is no exception when there is valid edit
-     * request.
-     */
-    @Test
-    public void testExecuteEditOperationWithoutDelete()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder =
-                buildYdtForEditOperationWithoutDelete();
-        ymsManager.executeOperation(defaultYdtBuilder);
-    }
-
-    /**
-     * Checks whether there is no exception when there is valid delete
-     * request.
-     */
-    @Test
-    public void testExecuteEditOperationWithDelete()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder =
-                buildYdtForEditOperationWithDelete();
-        ymsManager.executeOperation(defaultYdtBuilder);
-    }
-
-    /**
-     * Checks whether there is no exception when there is valid edit
-     * request for list.
-     */
-    @Test
-    public void testExecuteListEditOperationWithoutDelete()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder =
-                buildYdtForListEditOperationWithoutDelete();
-        ymsManager.executeOperation(defaultYdtBuilder);
-    }
-
-    /**
-     * Checks whether there is no exception when there is valid delete
-     * request for list.
-     */
-    @Test
-    public void testExecuteListEditOperationWithDelete()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder =
-                buildYdtForListEditOperationWithDelete();
-        ymsManager.executeOperation(defaultYdtBuilder);
-    }
-
-    /**
-     * Checks whether there is no exception when there is valid query
-     * request.
-     */
-    @Test
-    public void testExecuteQueryOperation()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder = buildYdtForQueryOperation();
-        ymsManager.executeOperation(defaultYdtBuilder);
-    }
-
-    /**
-     * Checks whether there is no exception when there is valid query
-     * request for list.
-     */
-    @Test
-    public void testExecuteListQueryOperation()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder =
-                buildYdtForListQueryOperation();
-        ymsManager.executeOperation(defaultYdtBuilder);
-    }
-
-    /**
-     * Checks whether delete tree is updated correctly.
-     */
-    @Test
-    public void testSiblingsInDeleteTree()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder = buildYdtWithOneDeleteNode();
-        YdtAppContext appContext =
-                defaultYdtBuilder.getAppRootNode().getFirstChild();
-        YdtContext ydtContext = appContext.getModuleContext();
-        List<YdtContext> deleteNodes = appContext.getDeleteNodes();
-
-        // verify whether ydt tree is correct
-        assertThat(ydtContext.getName(), is("test"));
-
-        ydtContext = ydtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("cont1"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("cont4"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("leaf10"));
-        assertThat(ydtContext.getValue(), is("10"));
-
-        // build delete tree
-        YangApplicationBroker yab = new YangApplicationBroker(null);
-        YdtContext deleteTree = yab.buildDeleteTree(deleteNodes);
-
-        assertThat(deleteTree.getFirstChild().getName(), is("test"));
-
-        ydtContext = deleteTree.getFirstChild().getFirstChild();
-        assertThat(ydtContext.getName(), is("cont4"));
-
-        assertThat(ydtContext.getNextSibling(), nullValue());
-        assertThat(ydtContext.getPreviousSibling(), nullValue());
-
-        ydtContext = appContext.getModuleContext();
-
-        // verify whether ydt tree is correct
-        assertThat(ydtContext.getName(), is("test"));
-
-        ydtContext = ydtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("cont1"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("leaf10"));
-        assertThat(ydtContext.getValue(), is("10"));
-
-        assertThat(ydtContext.getNextSibling(), nullValue());
-    }
-
-    /**
-     * Checks last child is updated correctly after delete tree is built.
-     */
-    @Test
-    public void testLastChildInYdtTree()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder =
-                buildYdtWithDeleteNodeAsLastChild();
-        YdtAppContext appContext =
-                defaultYdtBuilder.getAppRootNode().getFirstChild();
-        YdtContext ydtContext = appContext.getModuleContext();
-        List<YdtContext> deleteNodes = appContext.getDeleteNodes();
-        assertThat(YdtAppNodeOperationType.BOTH,
-                   is(appContext.getOperationType()));
-
-        // verify whether ydt tree is correct
-        assertThat(ydtContext.getName(), is("test"));
-
-        ydtContext = ydtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("cont1"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("list2"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("cont4"));
-
-        assertThat(ydtContext.getNextSibling(), nullValue());
-
-        // build delete tree
-        YangApplicationBroker yab = new YangApplicationBroker(null);
-        YdtContext deleteTree = yab.buildDeleteTree(deleteNodes);
-
-        assertThat(deleteTree.getFirstChild().getName(), is("test"));
-
-        ydtContext = deleteTree.getFirstChild().getFirstChild();
-        assertThat(ydtContext.getName(), is("cont4"));
-
-        ydtContext = deleteTree.getFirstChild().getLastChild();
-        assertThat(ydtContext.getName(), is("cont4"));
-
-        assertThat(ydtContext.getNextSibling(), nullValue());
-        assertThat(ydtContext.getPreviousSibling(), nullValue());
-
-        ydtContext = appContext.getModuleContext();
-
-        assertThat(ydtContext.getLastChild().getName(), is("list2"));
-
-        // verify whether ydt tree is correct
-        assertThat(ydtContext.getName(), is("test"));
-
-        ydtContext = ydtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("cont1"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("list2"));
-
-        assertThat(ydtContext.getNextSibling(), nullValue());
-    }
-
-    /**
-     * Checks YDT tree with all delete nodes.
-     */
-    @Test
-    public void testYdtTreeWithAllDeleteNodes()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder = buildYdtWithAllDeleteNode();
-        YdtAppContext appContext =
-                defaultYdtBuilder.getAppRootNode().getFirstChild();
-        YdtContext ydtContext = appContext.getModuleContext();
-        List<YdtContext> deleteNodes = appContext.getDeleteNodes();
-
-        assertThat(YdtAppNodeOperationType.DELETE_ONLY,
-                   is(appContext.getOperationType()));
-
-        // verify whether ydt tree is correct
-        assertThat(ydtContext.getName(), is("test"));
-
-        ydtContext = ydtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("cont1"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("list2"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("cont4"));
-
-        assertThat(ydtContext.getNextSibling(), nullValue());
-
-        // build delete tree
-        YangApplicationBroker yab = new YangApplicationBroker(null);
-        YdtContext deleteTree = yab.buildDeleteTree(deleteNodes);
-
-        assertThat(deleteTree.getFirstChild().getName(), is("test"));
-
-        ydtContext = deleteTree.getFirstChild().getFirstChild();
-        assertThat(ydtContext.getName(), is("cont1"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("list2"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("cont4"));
-
-        assertThat(ydtContext.getNextSibling(), nullValue());
-    }
-
-    /**
-     * Checks whether key leaves are also available when there is delete
-     * request for list.
-     */
-    @Test
-    public void testKeyLeavesInDeleteTree() throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder = buildYdtForKeyLeavesInDeleteTree();
-
-        YdtAppContext appContext =
-                defaultYdtBuilder.getAppRootNode().getFirstChild();
-        YdtContext ydtContext = appContext.getModuleContext();
-        List<YdtContext> deleteNodes = appContext.getDeleteNodes();
-
-        assertThat(YdtAppNodeOperationType.BOTH, is(appContext.getOperationType()));
-
-        // verify whether ydt tree is correct
-        assertThat(ydtContext.getName(), is("test"));
-
-        ydtContext = ydtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("list2"));
-
-        ydtContext = ydtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("leaf5"));
-        assertThat(ydtContext.getValue(), is("5"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("leaf6"));
-        assertThat(ydtContext.getValue(), is("6"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("leaf7"));
-        assertThat(ydtContext.getValue(), is("7"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("cont7"));
-
-        assertThat(ydtContext.getNextSibling(), nullValue());
-
-        // build delete tree
-        YangApplicationBroker yab = new YangApplicationBroker(null);
-        YdtContext deleteTree = yab.buildDeleteTree(deleteNodes);
-
-        assertThat(deleteTree.getFirstChild().getName(), is("test"));
-
-        ydtContext = deleteTree.getFirstChild().getFirstChild();
-        assertThat(ydtContext.getName(), is("list2"));
-
-        ydtContext = ydtContext.getFirstChild();
-        assertThat(ydtContext, notNullValue());
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext, notNullValue());
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("cont7"));
-
-        assertThat(ydtContext.getNextSibling(), nullValue());
-
-        ydtContext = appContext.getModuleContext();
-
-        // verify whether ydt tree is correct
-        assertThat(ydtContext.getName(), is("test"));
-
-        ydtContext = ydtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("list2"));
-
-        ydtContext = ydtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("leaf5"));
-        assertThat(ydtContext.getValue(), is("5"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("leaf6"));
-        assertThat(ydtContext.getValue(), is("6"));
-
-        ydtContext = ydtContext.getNextSibling();
-        assertThat(ydtContext.getName(), is("leaf7"));
-        assertThat(ydtContext.getValue(), is("7"));
-
-        assertThat(ydtContext.getNextSibling(), nullValue());
-    }
-
-    /**
-     * Checks YDT tree and application tree for query request with mutiple
-     * augments.
-     */
-    @Test
-    public void testApptreeForQueryWithMultipleAugment()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder = buildYdtForQueryWithMultipleAugment();
-        YdtAppContext appContext = defaultYdtBuilder.getAppRootNode()
-                .getFirstChild();
-        YdtContext ydtNode = appContext.getModuleContext();
-        YangNode yangNode = (YangNode) ((YdtNode) ydtNode).getYangSchemaNode();
-
-        YangApplicationBroker yab = new YangApplicationBroker(defaultYdtBuilder.
-                getYangSchemaRegistry());
-        yab.setAugGenMethodSet(defaultYdtBuilder.getAugGenMethodSet());
-        yab.processAugmentForChildNode(appContext, yangNode);
-
-        assertThat(appContext.getModuleContext().getName(), is("test"));
-
-        appContext = appContext.getFirstChild();
-
-        String augmentName = ((YangAugment) appContext
-                .getAugmentingSchemaNode()).getTargetNode().get(0)
-                .getResolvedNode().getJavaClassNameOrBuiltInType();
-        assertThat(augmentName, is("cont4"));
-
-        assertThat(appContext.getFirstChild(), nullValue());
-        assertThat(appContext.getLastChild(), nullValue());
-    }
-
-    /**
-     * Checks whether there is no exception when there is valid query request
-     * for data resource with multiple augments.
-     */
-    @Test
-    public void testQueryWithMultipleAugment()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder = buildYdtForQueryWithMultipleAugment();
-        ymsManager.executeOperation(defaultYdtBuilder);
-    }
-
-    /**
-     * Checks whether YDT is updated correctly for delete with multiple augment.
-     */
-    @Test
-    public void testYdtForDeleteWithMultipleAugment()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder =
-                buildYdtForDeleteWithMultipleAugment();
-        YdtAppContext appContext = defaultYdtBuilder.getAppRootNode()
-                .getFirstChild();
-
-        YangApplicationBroker yab = new YangApplicationBroker(defaultYdtBuilder.
-                getYangSchemaRegistry());
-        yab.setAugGenMethodSet(defaultYdtBuilder.getAugGenMethodSet());
-        YdtContext deleteTree = yab.buildDeleteTree(appContext.getDeleteNodes());
-        yab.processAugmentedNodesForDelete(deleteTree.getFirstChild(),
-                                           appContext);
-
-        assertThat(appContext.getModuleContext().getName(), is("test"));
-
-        appContext = appContext.getFirstChild();
-        String augmentName = ((YangAugment) appContext
-                .getAugmentingSchemaNode()).getTargetNode().get(0)
-                .getResolvedNode().getJavaClassNameOrBuiltInType();
-        assertThat(augmentName, is("cont4"));
-
-        assertThat(appContext.getFirstChild(), nullValue());
-        assertThat(appContext.getLastChild(), nullValue());
-
-        YdtContext ydtContext = deleteTree.getFirstChild();
-        assertThat(ydtContext.getName(), is("test"));
-
-        ydtContext = ydtContext.getFirstChild();
-        assertThat(ydtContext.getName(), is("cont4"));
-    }
-
-    /**
-     * Checks whether there is no exception when there is valid delete request
-     * for data resource with multiple augments.
-     */
-    @Test
-    public void testDeleteWithMultipleAugment() {
-        YangRequestWorkBench defaultYdtBuilder =
-                buildYdtForDeleteWithMultipleAugment();
-        ymsManager.executeOperation(defaultYdtBuilder);
-    }
-
-    /**
-     * Checks execute operation for rpc request with only output.
-     */
-    @Test
-    public void testRpcWithOutput()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder =
-                buildYdtForRpcWithOnlyOutput();
-        ymsManager.executeOperation(defaultYdtBuilder);
-    }
-
-    /**
-     * Checks execute operation for rpc request with only input.
-     */
-    @Test
-    public void testRpcWithInput()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder =
-                buildYdtForRpcWithOnlyInput();
-        ymsManager.executeOperation(defaultYdtBuilder);
-    }
-
-    /**
-     * Checks execute operation for rpc request with input and output.
-     */
-    @Test
-    public void testRpcWithInputOutput()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder =
-                buildYdtForRpcWithBothInputOutput();
-        ymsManager.executeOperation(defaultYdtBuilder);
-    }
-
-    /**
-     * Checks execute operation for rpc request without input and
-     * output.
-     */
-    @Test
-    public void testRpcWithoutInputOutput()
-            throws IOException, CloneNotSupportedException {
-        YangRequestWorkBench defaultYdtBuilder =
-                buildYdtForRpc();
-        ymsManager.executeOperation(defaultYdtBuilder);
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ych/DefaultYangCodecHandlerTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ych/DefaultYangCodecHandlerTest.java
deleted file mode 100644
index 590bbc9..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ych/DefaultYangCodecHandlerTest.java
+++ /dev/null
@@ -1,1604 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ych;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.onosproject.yms.ych.YangProtocolEncodingFormat.XML;
-import static org.onosproject.yms.ydt.YmsOperationType.QUERY_CONFIG_REQUEST;
-import static org.onosproject.yms.ydt.YmsOperationType.QUERY_REQUEST;
-
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.junit.Test;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.CombinedOpParam;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.AsNum;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.Attributes;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.DefaultAttributes;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.Metric;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.PathId;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.Aigp;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.BgpParameters;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultAigp;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultBgpParameters;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultLocalPref;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultMultiExitDisc;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultOrigin;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultUnrecognizedAttributes;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.LocalPref;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.MultiExitDisc;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.Origin;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.UnrecognizedAttributes;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.aigp.AigpTlv;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.aigp.DefaultAigpTlv;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.DefaultOptionalCapabilities;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.OptionalCapabilities;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.optionalcapabilities.Cparameters;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.optionalcapabilities.DefaultCparameters;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.optionalcapabilities.cparameters.As4BytesCapability;
-import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.optionalcapabilities.cparameters.DefaultAs4BytesCapability;
-import org.onosproject.yang.gen.v1.ych.empty.container.rev20160524.EmptyContainerOpParam;
-import org.onosproject.yang.gen.v1.ych.empty.container.rev20160524.emptycontainer.EmptyContainer;
-import org.onosproject.yang.gen.v1.ych.purchasing.supervisor.rev20160524.YchPurchasingsupervisor.OnosYangOpType;
-import org.onosproject.yang.gen.v1.ych.purchasing.supervisor.rev20160524.YchPurchasingsupervisorOpParam;
-import org.onosproject.yang.gen.v1.ych.purchasing.supervisor.rev20160524.ychpurchasingsupervisor.DefaultYchPurchasingSupervisor;
-import org.onosproject.yang.gen.v1.ych.purchasing.supervisor.rev20160524.ychpurchasingsupervisor.YchPurchasingSupervisor;
-import org.onosproject.yang.gen.v1.ych.purchasing.supervisor.rev20160524.ychpurchasingsupervisor.ychpurchasingsupervisor.DefaultYchIsManager;
-import org.onosproject.yang.gen.v1.ydt.customs.supervisor.rev20160524.CustomssupervisorOpParam;
-import org.onosproject.yang.gen.v1.ydt.material.supervisor.rev20160524.MaterialsupervisorOpParam;
-import org.onosproject.yang.gen.v1.ydt.material.supervisor.rev20160524.materialsupervisor.DefaultSupervisor;
-import org.onosproject.yang.gen.v1.ydt.material.supervisor.rev20160524.materialsupervisor.Supervisor;
-import org.onosproject.yang.gen.v1.ydt.merchandiser.supervisor.rev20160524.MerchandisersupervisorOpParam;
-import org.onosproject.yang.gen.v1.ydt.root.rev20160524.LogisticsManagerOpParam;
-import org.onosproject.yang.gen.v1.ydt.trading.supervisor.rev20160524.TradingsupervisorOpParam;
-import org.onosproject.yms.app.ych.defaultcodecs.YangCodecRegistry;
-import org.onosproject.yms.app.ysr.DefaultYangSchemaRegistry;
-import org.onosproject.yms.app.ysr.TestYangSchemaNodeProvider;
-import org.onosproject.yms.ych.YangCompositeEncoding;
-
-/**
- * Unit test case for default codec handler.
- */
-public class DefaultYangCodecHandlerTest {
-    private TestYangSchemaNodeProvider testYangSchemaNodeProvider =
-            new TestYangSchemaNodeProvider();
-    private static final String AM_XML = "Incorrect XML generated: ";
-    private static final String AM_OBJ = "Incorrect object generated: ";
-    private static final String EMPTY_CONTAINER = "EmptyContainerOpParam";
-    private static final String LOGISTIC_MOD = "LogisticsManagerOpParam";
-    private static final String MERCHA_MOD = "MerchandisersupervisorOpParam";
-    private static final String PURCH_MOD = "YchPurchasingsupervisorOpParam";
-
-    /**
-     * Returns the xml string for customssupervisor module.
-     *
-     * @return the xml string for customssupervisor module
-     */
-    private static String customsXml() {
-        return "<filter xmlns=\"ydt.filter-type\" type=\"subtree\">" +
-                "<supervisor xmlns=\"ydt.customs-supervisor\">" +
-                "Customssupervisor</supervisor>" +
-                "</filter>";
-    }
-
-    /**
-     * Returns the xml string for purchasesupervisor with empty selection node.
-     *
-     * @return the xml string for purchasesupervisor with empty selection node
-     */
-    private static String purchaseXmlEmptySelectionNode() {
-        return "<filter xmlns=\"ydt.filter-type\" type=\"subtree\">" +
-                "<ych-purchasing-supervisor xmlns=\"ych.purchasing-supervisor\">" +
-                "<ych-purchasing-specialist/>" +
-                "</ych-purchasing-supervisor>" +
-                "</filter>";
-    }
-
-    /**
-     * Returns the xml string for merchandisersupervisor module.
-     *
-     * @return the xml string for merchandisersupervisor module
-     */
-    private static String merchandXml() {
-        return "<config xmlns=\"ydt.root\" " +
-                "xmlns:nc=\"urn:ietf:params:xml:ns:netconf:base:1.0\">" +
-                "<supervisor xmlns=\"ydt.Merchandiser-supervisor\">" +
-                "Merchandisersupervisor</supervisor>" +
-                "</config>";
-    }
-
-    /**
-     * Returns the xml string for tradingsupervisor module.
-     *
-     * @return the xml string for tradingsupervisor module
-     */
-    private static String tradingXml() {
-        return "<config xmlns=\"ydt.root\" " +
-                "xmlns:nc=\"urn:ietf:params:xml:ns:netconf:base:1.0\">" +
-                "<supervisor xmlns=\"ydt.trading-supervisor\">" +
-                "Tradingsupervisor</supervisor>" +
-                "</config>";
-    }
-
-    /**
-     * Returns the xml string for customssupervisor module.
-     *
-     * @return the xml string for customssupervisor module
-     */
-    private static String customsCompositeXml() {
-        return "<filter xmlns=\"ydt.filter-type\">" +
-                "<supervisor xmlns=\"ydt.customs-supervisor\">" +
-                "Customssupervisor</supervisor></filter>";
-    }
-
-    /**
-     * Returns the xml string for customssupervisor module with filter-type.
-     *
-     * @return the xml string for customssupervisor module with filter-type
-     */
-    private static String customsEmptyXml() {
-        return "<filter xmlns=\"ydt.filter-type\" type=\"subtree\">" +
-                "</filter>";
-    }
-
-    /**
-     * Returns the xml string for materialsupervisor module.
-     *
-     * @return the xml string for materialsupervisor module
-     */
-    private static String materialXml() {
-        return "<filter xmlns=\"ydt.filter-type\" type=\"subtree\">" +
-                "<supervisor xmlns=\"ydt.material-supervisor\">" +
-                "<name>abc1</name><departmentId>xyz1</departmentId>" +
-                "</supervisor>" +
-                "<supervisor xmlns=\"ydt.material-supervisor\"" +
-                "><name>abc2</name><departmentId>xyz2</departmentId>" +
-                "</supervisor>" +
-                "<supervisor xmlns=\"ydt.material-supervisor\"" +
-                "><name>abc3</name><departmentId>xyz3</departmentId>" +
-                "</supervisor>" +
-                "<supervisor xmlns=\"ydt.material-supervisor\"" +
-                "><name>abc4</name><departmentId>xyz4</departmentId>" +
-                "</supervisor>" +
-                "<supervisor xmlns=\"ydt.material-supervisor\"" +
-                "><name>abc5</name><departmentId>xyz5</departmentId>" +
-                "</supervisor>" +
-                "</filter>";
-    }
-
-    /**
-     * Returns the xml string for EmptyContainer module.
-     *
-     * @return the xml string for EmptyContainer module
-     */
-    private static String containerEmptyXml() {
-        return "<filter xmlns=\"ydt.filter-type\" type=\"subtree\">" +
-                "</filter>";
-    }
-
-    /**
-     * Returns the xml string for Combined module.
-     *
-     * @return the xml string for Combined module
-     */
-    private static String listTestXml() {
-        return "<filter xmlns=\"ydt.filter-type\" type=\"subtree\">" +
-                "<attributes xmlns=\"ych:combined\">" +
-                "<origin><value>123</value></origin>" +
-                "<multi-exit-disc><med>456</med></multi-exit-disc>" +
-                "<local-pref><pref>23</pref></local-pref>" +
-                "<aigp><aigp-tlv><metric>456</metric></aigp-tlv></aigp>" +
-                "<unrecognized-attributes><partial>false</partial>" +
-                "<transitive>false</transitive><type>1</type>" +
-                "<value>QUJD</value></unrecognized-attributes>" +
-                "<unrecognized-attributes><partial>true</partial>" +
-                "<transitive>true</transitive><type>2</type>" +
-                "<value>QUJD</value></unrecognized-attributes>" +
-                "<unrecognized-attributes><partial>true</partial>" +
-                "<transitive>false</transitive><type>3</type>" +
-                "<value>QUJD</value></unrecognized-attributes>" +
-                "<unrecognized-attributes><partial>false</partial>" +
-                "<transitive>true</transitive><type>4</type>" +
-                "<value>QUJD</value></unrecognized-attributes>" +
-                "<bgp-parameters><optional-capabilities><c-parameters>" +
-                "<as4-bytes-capability><as-number>11</as-number>" +
-                "</as4-bytes-capability></c-parameters>" +
-                "</optional-capabilities><optional-capabilities>" +
-                "<c-parameters><as4-bytes-capability>" +
-                "<as-number>22</as-number></as4-bytes-capability>" +
-                "</c-parameters></optional-capabilities>" +
-                "<optional-capabilities><c-parameters><as4-bytes-capability>" +
-                "<as-number>33</as-number></as4-bytes-capability>" +
-                "</c-parameters></optional-capabilities></bgp-parameters>" +
-                "<bgp-parameters><optional-capabilities><c-parameters>" +
-                "<as4-bytes-capability><as-number>11</as-number>" +
-                "</as4-bytes-capability></c-parameters>" +
-                "</optional-capabilities><optional-capabilities>" +
-                "<c-parameters><as4-bytes-capability>" +
-                "<as-number>22</as-number></as4-bytes-capability>" +
-                "</c-parameters></optional-capabilities>" +
-                "<optional-capabilities><c-parameters><as4-bytes-capability>" +
-                "<as-number>33</as-number></as4-bytes-capability>" +
-                "</c-parameters></optional-capabilities>" +
-                "</bgp-parameters></attributes></filter>";
-    }
-
-    /**
-     * Returns the xml string for ych-purchasingsupervisor module.
-     *
-     * @return the XML string for ych-purchasingsupervisor module
-     */
-    private static String purchaseXml() {
-        return "<config xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" " +
-                "xmlns:nc=\"urn:ietf:params:xml:ns:netconf:base:1.0\">" +
-                "<ych-purchasing-supervisor xmlns=\"ych.purchasing-supervisor\" " +
-                "nc:operation=\"create\">" +
-                "<ych-purchasing-specialist>purchasingSpecialist" +
-                "</ych-purchasing-specialist>" +
-                "<ych-purchasing-support>support</ych-purchasing-support>" +
-                "<ych-is-manager/>" +
-                "</ych-purchasing-supervisor>" +
-                "</config>";
-    }
-
-    /**
-     * Returns the xml string for ych-purchasingsupervisor module with BitSet options.
-     *
-     * @return the XML string for ych-purchasingsupervisor module
-     */
-    private static String purchaseXmlOptions(BitSet options) {
-        boolean isFirst = true;
-
-        StringBuffer sb = new StringBuffer();
-        sb.append("<config xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" ");
-        sb.append("xmlns:nc=\"urn:ietf:params:xml:ns:netconf:base:1.0\">");
-        sb.append("<ych-purchasing-supervisor xmlns=\"ych.purchasing-supervisor\" " +
-                "nc:operation=\"create\">");
-        sb.append("<ych-purchasing-support>support</ych-purchasing-support>");
-        if (options == null || options.isEmpty()) {
-            sb.append("<ych-purchasing-options/>");
-        } else {
-            sb.append("<ych-purchasing-options>");
-            for (int i = 0; i < 4; i++) {
-                if (options.get(i)) {
-                    if (isFirst) {
-                        isFirst = false;
-                    } else {
-                        sb.append(' ');
-                    }
-                    sb.append("option" + i);
-                }
-            }
-            sb.append("</ych-purchasing-options>");
-        }
-        sb.append("</ych-purchasing-supervisor>");
-        sb.append("</config>");
-
-        return sb.toString();
-    }
-
-    /**
-     * Returns the xml string for employeeid module.
-     *
-     * @return the xml string for employeeid module
-     */
-    private static String emplyIdXml() {
-        return "<config xmlns=\"ydt.root\">" +
-                "<employeeid xmlns=\"ydt.employee-id\">" +
-                "<employeeid>Employ1</employeeid>" +
-                "<employeeid>Employ2</employeeid>" +
-                "<employeeid>Employ3</employeeid>" +
-                "<employeeid>Employ4</employeeid>" +
-                "<employeeid>Employ5</employeeid>" +
-                "</employeeid>" +
-                "</config>";
-    }
-
-    /**
-     * Returns the xml string for warehousesupervisor module.
-     *
-     * @return the xml string for warehousesupervisor module
-     */
-    private static String wareHseXml() {
-        return "<config xmlns=\"ydt.root\">" +
-                "<warehousesupervisor xmlns=\"ydt.warehouse-supervisor\">" +
-                "<supervisor>supervisor1</supervisor>" +
-                "<supervisor>supervisor2</supervisor>" +
-                "<supervisor>supervisor3</supervisor>" +
-                "<supervisor>supervisor4</supervisor>" +
-                "<supervisor>supervisor5</supervisor>" +
-                "</warehousesupervisor>" +
-                "</config>";
-    }
-
-    /**
-     * Returns the xml string for more than one module.
-     *
-     * @return the xml string for more than one module
-     */
-    private static String multiModuleXml() {
-        return "<config xmlns=\"ydt.root\">" +
-                "<customssupervisor xmlns=\"ydt.customs-supervisor\">" +
-                "<supervisor>Customssupervisor</supervisor>" +
-                "</customssupervisor>" +
-                "<merchandisersupervisor xmlns=\"ydt.Merchandiser-supervisor\">" +
-                "<supervisor>Merchandisersupervisor</supervisor>" +
-                "</merchandisersupervisor>" +
-                "<materialsupervisor xmlns=\"ydt.material-supervisor\">" +
-                "<supervisor>" +
-                "<name>abc1</name>" +
-                "<departmentId>xyz1</departmentId>" +
-                "</supervisor>" +
-                "<supervisor>" +
-                "<name>abc2</name>" +
-                "<departmentId>xyz2</departmentId>" +
-                "</supervisor>" +
-                "<supervisor>" +
-                "<name>abc3</name>" +
-                "<departmentId>xyz3</departmentId>" +
-                "</supervisor>" +
-                "<supervisor>" +
-                "<name>abc4</name>" +
-                "<departmentId>xyz4</departmentId>" +
-                "</supervisor>" +
-                "<supervisor>" +
-                "<name>abc5</name>" +
-                "<departmentId>xyz5</departmentId>" +
-                "</supervisor>" +
-                "</materialsupervisor>" +
-                "<ych-purchasingsupervisor xmlns=\"ych.purchasing-supervisor\">" +
-                "<ych-purchasing-supervisor>" +
-                "<ych-purchasing-specialist>purchasingSpecialist" +
-                "</ych-purchasing-specialist>" +
-                "<ych-purchasing-support>support</ych-purchasing-support>" +
-                "</ych-purchasing-supervisor>" +
-                "</ych-purchasingsupervisor>" +
-                "<warehousesupervisor xmlns=\"ydt.warehouse-supervisor\">" +
-                "<supervisor>supervisor1</supervisor>" +
-                "<supervisor>supervisor2</supervisor>" +
-                "<supervisor>supervisor3</supervisor>" +
-                "<supervisor>supervisor4</supervisor>" +
-                "<supervisor>supervisor5</supervisor>" +
-                "</warehousesupervisor>" +
-                "<tradingsupervisor xmlns=\"ydt.trading-supervisor\">" +
-                "<supervisor>Tradingsupervisor</supervisor>" +
-                "</tradingsupervisor>" +
-                "<employeeid xmlns=\"ydt.employee-id\">" +
-                "<employeeid>Employ1</employeeid>" +
-                "<employeeid>Employ2</employeeid>" +
-                "<employeeid>Employ3</employeeid>" +
-                "<employeeid>Employ4</employeeid>" +
-                "<employeeid>Employ5</employeeid>" +
-                "</employeeid>" +
-                "</config>";
-    }
-
-    /**
-     * Returns the xml string for more than one module.
-     *
-     * @return the xml string for more than one module
-     */
-    private String multipleAppxml() {
-        return "<filter xmlns=\"ydt.filter-type\" type=\"subtree\"><supervisor" +
-                " xmlns=\"ydt.customs-supervisor\">Customssupervisor" +
-                "</supervisor><supervisor xmlns=\"ydt.material-supervisor\"" +
-                "><name>abc1</name><departmentId>xyz1</departmentId" +
-                "></supervisor><supervisor xmlns=\"ydt.material-supervisor\">" +
-                "<name>abc2</name><departmentId>xyz2</departmentId>" +
-                "</supervisor><supervisor xmlns=\"ydt" +
-                ".material-supervisor\"><name>abc3</name><departmentId>xyz3" +
-                "</departmentId></supervisor><supervisor xmlns=\"ydt" +
-                ".material-supervisor\"><name>abc4</name><departmentId>xyz4" +
-                "</departmentId></supervisor><supervisor xmlns=\"ydt" +
-                ".material-supervisor\"><name>abc5</name><departmentId>xyz5" +
-                "</departmentId></supervisor></filter>";
-    }
-
-    /**
-     * Unit test case in which verifying xml string for module object with leaf
-     * for composite encode.
-     */
-    @Test
-    public void proceessCodecHandlerForCompositeEnc() {
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider
-                .getDefaultYangSchemaRegistry();
-
-        // Creating the object
-        Object object = CustomssupervisorOpParam.builder()
-                .supervisor("Customssupervisor").build();
-
-        // Get the xml string and compare
-        Map<String, String> tagAttr = new HashMap<String, String>();
-        tagAttr.put("type", "subtree");
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler defaultYangCodecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-        YangCompositeEncoding xml =
-                defaultYangCodecHandler
-                        .encodeCompositeOperation("filter", "ydt.filter-type",
-                                                  object, XML, null);
-
-        assertNull("customs-super: resource id not null",
-                   xml.getResourceIdentifier());
-        assertEquals(AM_XML + "customs-super: comp res info",
-                     customsCompositeXml(), xml.getResourceInformation());
-
-        // Creating the object
-        object = MerchandisersupervisorOpParam.builder()
-                .supervisor("Merchandisersupervisor").build();
-
-        // Get the xml string and compare
-        xml = defaultYangCodecHandler.encodeCompositeOperation("config",
-                                                               "ydt.root",
-                                                               object, XML,
-                                                               null);
-        assertNull("merch-super: res id not null", xml.getResourceIdentifier());
-        assertEquals(AM_XML + "merch-super: comp res info",
-                     merchandXml(), xml.getResourceInformation());
-
-        // Creating the object
-        object = TradingsupervisorOpParam.builder()
-                .supervisor("Tradingsupervisor").build();
-
-        // Get the xml string and compare
-        xml = defaultYangCodecHandler
-                .encodeCompositeOperation("config", "ydt.root", object, XML,
-                                          null);
-        assertNull("trading-super: res id not null",
-                   xml.getResourceIdentifier());
-        assertEquals(AM_XML + "trading-super: comp res info",
-                     tradingXml(), xml.getResourceInformation());
-    }
-
-    /**
-     * Unit test case in which verifying xml string for module object with leaf.
-     */
-    @Test
-    public void proceessCodecHandlerForLeaf() {
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider
-                .getDefaultYangSchemaRegistry();
-        List<Object> yangModuleList = new ArrayList<>();
-
-        // Creating the object
-        Object object = CustomssupervisorOpParam.builder()
-                .supervisor("Customssupervisor").build();
-        yangModuleList.add(object);
-
-        // Get the xml string and compare
-        Map<String, String> tagAttr = new HashMap<String, String>();
-        tagAttr.put("type", "subtree");
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler defaultYangCodecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-        String xml =
-                defaultYangCodecHandler.encodeOperation("filter",
-                                                        "ydt.filter-type",
-                                                        tagAttr, yangModuleList,
-                                                        XML, null);
-
-        assertEquals(AM_XML + "customs-super: leaf info", customsXml(), xml);
-
-        // Creating the object
-        object = MerchandisersupervisorOpParam.builder()
-                .supervisor("Merchandisersupervisor").build();
-        yangModuleList.clear();
-        yangModuleList.add(object);
-
-        // Get the xml string and compare
-        xml = defaultYangCodecHandler.encodeOperation("config", "ydt.root",
-                                                      null, yangModuleList,
-                                                      XML, null);
-        assertEquals(AM_XML + "merchandiser-super: leaf info", merchandXml(),
-                     xml);
-
-        // Creating the object
-        object = TradingsupervisorOpParam.builder()
-                .supervisor("Tradingsupervisor").build();
-        yangModuleList.clear();
-        yangModuleList.add(object);
-
-        // Get the xml string and compare
-        xml = defaultYangCodecHandler.encodeOperation("config", "ydt.root",
-                                                      null, yangModuleList,
-                                                      XML, null);
-        assertEquals(AM_XML + "trading-super: leaf info", tradingXml(), xml);
-    }
-
-    /**
-     * Unit test case in which verifying xml string for module object with
-     * empty leaf.
-     */
-    @Test
-    public void proceessCodecHandlerForEmptyLeaf() {
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider
-                .getDefaultYangSchemaRegistry();
-        List<Object> yangModuleList = new ArrayList<>();
-
-        // Creating the object
-        Object object = CustomssupervisorOpParam.builder().supervisor("")
-                .build();
-        yangModuleList.add(object);
-
-        // Get the xml string and compare
-        Map<String, String> tagAttr = new HashMap<String, String>();
-        tagAttr.put("type", "subtree");
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler codecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-        String xml = codecHandler.encodeOperation("filter", "ydt.filter-type",
-                                                  tagAttr, yangModuleList,
-                                                  XML, null);
-
-        assertEquals(AM_XML + "customs-super: leaf is not empty",
-                     customsEmptyXml(), xml);
-    }
-
-    /**
-     * Unit test case in which verifying xml string for more than one module
-     * object.
-     */
-    @Test
-    public void proceessCodecHandlerForMultipleApp() {
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider
-                .getDefaultYangSchemaRegistry();
-        List<Object> yangModuleList = new ArrayList<>();
-
-        // Creating the object
-        Object object = CustomssupervisorOpParam.builder()
-                .supervisor("Customssupervisor").build();
-        yangModuleList.add(object);
-
-        // Creating the object
-        Supervisor supervisor1 = new DefaultSupervisor.SupervisorBuilder()
-                .name("abc1").departmentId("xyz1").build();
-        Supervisor supervisor2 = new DefaultSupervisor.SupervisorBuilder()
-                .name("abc2").departmentId("xyz2").build();
-        Supervisor supervisor3 = new DefaultSupervisor.SupervisorBuilder()
-                .name("abc3").departmentId("xyz3").build();
-        Supervisor supervisor4 = new DefaultSupervisor.SupervisorBuilder()
-                .name("abc4").departmentId("xyz4").build();
-        Supervisor supervisor5 = new DefaultSupervisor.SupervisorBuilder()
-                .name("abc5").departmentId("xyz5").build();
-
-        Object object1 = MaterialsupervisorOpParam.builder()
-                .addToSupervisor(supervisor1)
-                .addToSupervisor(supervisor2)
-                .addToSupervisor(supervisor3)
-                .addToSupervisor(supervisor4)
-                .addToSupervisor(supervisor5).build();
-        yangModuleList.add(object1);
-
-        // Get the xml string and compare
-        Map<String, String> tagAttr = new HashMap<String, String>();
-        tagAttr.put("type", "subtree");
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler codecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-        String xml = codecHandler.encodeOperation("filter", "ydt.filter-type",
-                                                  tagAttr, yangModuleList,
-                                                  XML, null);
-
-        assertEquals(AM_XML + "for multiple applications",
-                     multipleAppxml(), xml);
-    }
-
-    /**
-     * Unit test case in which verifying xml string for module object with list.
-     */
-    @Test
-    public void proceessCodecHandlerForList() {
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-        List<Object> yangModuleList = new ArrayList<>();
-
-        // Creating the object
-        Supervisor supervisor1 = new DefaultSupervisor.SupervisorBuilder()
-                .name("abc1").departmentId("xyz1").build();
-        Supervisor supervisor2 = new DefaultSupervisor.SupervisorBuilder()
-                .name("abc2").departmentId("xyz2").build();
-        Supervisor supervisor3 = new DefaultSupervisor.SupervisorBuilder()
-                .name("abc3").departmentId("xyz3").build();
-        Supervisor supervisor4 = new DefaultSupervisor.SupervisorBuilder()
-                .name("abc4").departmentId("xyz4").build();
-        Supervisor supervisor5 = new DefaultSupervisor.SupervisorBuilder()
-                .name("abc5").departmentId("xyz5").build();
-
-        Object object = MaterialsupervisorOpParam.builder()
-                .addToSupervisor(supervisor1)
-                .addToSupervisor(supervisor2)
-                .addToSupervisor(supervisor3)
-                .addToSupervisor(supervisor4)
-                .addToSupervisor(supervisor5).build();
-
-        yangModuleList.add(object);
-
-        // Get the xml string and compare
-        Map<String, String> tagAttr = new HashMap<String, String>();
-        tagAttr.put("type", "subtree");
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler codecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-        String xml = codecHandler.encodeOperation("filter", "ydt.filter-type",
-                                                  tagAttr, yangModuleList,
-                                                  XML, null);
-        assertEquals(AM_XML + "material-super: list info", materialXml(), xml);
-    }
-
-    /**
-     * Unit test case in which verifying xml string for module object with
-     * empty container.
-     */
-    @Test
-    public void proceessCodecHandlerForEmptyContainer() {
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-        List<Object> yangModuleList = new ArrayList<>();
-
-        // Creating the object
-        EmptyContainer emptyContainer = EmptyContainerOpParam.builder()
-                .emptyContainer();
-        Object object = EmptyContainerOpParam.builder()
-                .emptyContainer(emptyContainer).build();
-
-        yangModuleList.add(object);
-
-        // Get the xml string and compare
-        Map<String, String> tagAttr = new HashMap<String, String>();
-        tagAttr.put("type", "subtree");
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler codecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-        String xml = codecHandler.encodeOperation("filter", "ydt.filter-type",
-                                                  tagAttr, yangModuleList,
-                                                  XML, null);
-        assertEquals(AM_XML + "empty-contain: container is not empty",
-                     containerEmptyXml(), xml);
-    }
-
-    /**
-     * Unit test case in which verifying xml string for module object with list
-     * inside list.
-     */
-    @Test
-    public void proceessCodecHandlerForListInsideList() {
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-        List<Object> yangModuleList = new ArrayList<>();
-
-        // Creating the object
-        PathId pathId = new PathId(123);
-        Origin origin = new DefaultOrigin.OriginBuilder().value(pathId)
-                .build();
-        MultiExitDisc multiExitDisc = new DefaultMultiExitDisc
-                .MultiExitDiscBuilder().med(456).build();
-        LocalPref localPref = new DefaultLocalPref.LocalPrefBuilder()
-                .pref(23).build();
-        Metric metric = new Metric(456);
-        AigpTlv aigpTlv = new DefaultAigpTlv.AigpTlvBuilder().metric(metric)
-                .build();
-        Aigp aigp = new DefaultAigp.AigpBuilder().aigpTlv(aigpTlv).build();
-
-        UnrecognizedAttributes unrecognizedAttributes1 =
-                new DefaultUnrecognizedAttributes
-                        .UnrecognizedAttributesBuilder()
-                        .partial(false).transitive(false).type((short) 1)
-                        .value("ABC".getBytes()).build();
-
-        UnrecognizedAttributes unrecognizedAttributes2 =
-                new DefaultUnrecognizedAttributes
-                        .UnrecognizedAttributesBuilder()
-                        .partial(true).transitive(true).type((short) 2)
-                        .value("ABC".getBytes())
-                        .build();
-
-        UnrecognizedAttributes unrecognizedAttributes3 =
-                new DefaultUnrecognizedAttributes
-                        .UnrecognizedAttributesBuilder()
-                        .partial(true).transitive(false).type((short) 3)
-                        .value("ABC".getBytes())
-                        .build();
-
-        UnrecognizedAttributes unrecognizedAttributes4 =
-                new DefaultUnrecognizedAttributes
-                        .UnrecognizedAttributesBuilder()
-                        .partial(false).transitive(true).type((short) 4)
-                        .value("ABC".getBytes()).build();
-
-        AsNum asNum1 = new AsNum(11);
-        As4BytesCapability as4BytesCapability1 =
-                new DefaultAs4BytesCapability.As4BytesCapabilityBuilder()
-                        .asNumber(asNum1).build();
-        Cparameters cparameters1 = new DefaultCparameters.CparametersBuilder()
-                .as4BytesCapability(as4BytesCapability1)
-                .build();
-        OptionalCapabilities optionalCapabilities1 =
-                new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder()
-                        .cParameters(cparameters1).build();
-
-        AsNum asNum2 = new AsNum(22);
-        As4BytesCapability as4BytesCapability2 =
-                new DefaultAs4BytesCapability.As4BytesCapabilityBuilder()
-                        .asNumber(asNum2).build();
-        Cparameters cparameters2 = new DefaultCparameters.CparametersBuilder()
-                .as4BytesCapability(as4BytesCapability2)
-                .build();
-        OptionalCapabilities optionalCapabilities2 =
-                new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder()
-                        .cParameters(cparameters2).build();
-
-        AsNum asNum3 = new AsNum(33);
-        As4BytesCapability as4BytesCapability3 =
-                new DefaultAs4BytesCapability.As4BytesCapabilityBuilder()
-                        .asNumber(asNum3).build();
-        Cparameters cparameters3 = new DefaultCparameters.CparametersBuilder()
-                .as4BytesCapability(as4BytesCapability3)
-                .build();
-        OptionalCapabilities optionalCapabilities3 =
-                new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder()
-                        .cParameters(cparameters3).build();
-
-        BgpParameters bgpParameters1 =
-                new DefaultBgpParameters.BgpParametersBuilder()
-                        .addToOptionalCapabilities(optionalCapabilities1)
-                        .addToOptionalCapabilities(optionalCapabilities2)
-                        .addToOptionalCapabilities(optionalCapabilities3)
-                        .build();
-
-        AsNum asNum4 = new AsNum(11);
-        As4BytesCapability as4BytesCapability4 = new DefaultAs4BytesCapability
-                .As4BytesCapabilityBuilder()
-                .asNumber(asNum4).build();
-        Cparameters cparameters4 = new DefaultCparameters.CparametersBuilder()
-                .as4BytesCapability(as4BytesCapability4)
-                .build();
-        OptionalCapabilities optionalCapabilities4 =
-                new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder()
-                        .cParameters(cparameters4).build();
-
-        AsNum asNum5 = new AsNum(22);
-        As4BytesCapability as4BytesCapability5 =
-                new DefaultAs4BytesCapability.As4BytesCapabilityBuilder()
-                        .asNumber(asNum5).build();
-        Cparameters cparameters5 =
-                new DefaultCparameters.CparametersBuilder()
-                        .as4BytesCapability(as4BytesCapability5)
-                        .build();
-        OptionalCapabilities optionalCapabilities5 =
-                new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder()
-                        .cParameters(cparameters5).build();
-
-        AsNum asNum6 = new AsNum(33);
-        As4BytesCapability as4BytesCapability6 =
-                new DefaultAs4BytesCapability.As4BytesCapabilityBuilder()
-                        .asNumber(asNum6).build();
-        Cparameters cparameters6 =
-                new DefaultCparameters.CparametersBuilder()
-                        .as4BytesCapability(as4BytesCapability6)
-                        .build();
-        OptionalCapabilities optionalCapabilities6 =
-                new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder()
-                        .cParameters(cparameters6).build();
-
-        BgpParameters bgpParameters2 =
-                new DefaultBgpParameters.BgpParametersBuilder()
-                        .addToOptionalCapabilities(optionalCapabilities4)
-                        .addToOptionalCapabilities(optionalCapabilities5)
-                        .addToOptionalCapabilities(optionalCapabilities6)
-                        .build();
-
-        Attributes attributes = new DefaultAttributes.AttributesBuilder()
-                .origin(origin)
-                .multiExitDisc(multiExitDisc)
-                .localPref(localPref)
-                .aigp(aigp)
-                .addToUnrecognizedAttributes(unrecognizedAttributes1)
-                .addToUnrecognizedAttributes(unrecognizedAttributes2)
-                .addToUnrecognizedAttributes(unrecognizedAttributes3)
-                .addToUnrecognizedAttributes(unrecognizedAttributes4)
-                .addToBgpParameters(bgpParameters1)
-                .addToBgpParameters(bgpParameters2).build();
-        Object object = CombinedOpParam.builder().attributes(attributes)
-                .build();
-
-        yangModuleList.add(object);
-
-        // Get the xml string and compare
-        Map<String, String> tagAttr = new HashMap<String, String>();
-        tagAttr.put("type", "subtree");
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler codecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-        String xml = codecHandler.encodeOperation("filter", "ydt.filter-type",
-                                                  tagAttr, yangModuleList,
-                                                  XML, null);
-        assertEquals(AM_XML + "combined: list info", listTestXml(), xml);
-    }
-
-//    TODO negative scenario will be handled later
-    /**
-     * Unit test case in which verifying xml string for module object with
-     * container.
-     */
-    @Test
-    public void proceessCodecHandlerForContainer() {
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-        List<Object> yangModuleList = new ArrayList<>();
-
-        // Creating the object
-        YchPurchasingSupervisor supervisor =
-                new DefaultYchPurchasingSupervisor
-                        .YchPurchasingSupervisorBuilder()
-                        .ychPurchasingSpecialist("purchasingSpecialist")
-                        .ychPurchasingSupport("support")
-                        .ychIsManager(DefaultYchIsManager.builder().build())
-                        .yangYchPurchasingSupervisorOpType(OnosYangOpType.CREATE).build();
-        Object object = YchPurchasingsupervisorOpParam.builder()
-                .ychPurchasingSupervisor(supervisor).build();
-        yangModuleList.add(object);
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler codecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-        String xml = codecHandler.encodeOperation("config", "urn:ietf:params:xml:ns:netconf:base:1.0",
-                                                  null, yangModuleList,
-                                                  XML, null);
-        assertEquals(AM_XML + "puchas-super: container info", purchaseXml(),
-                     xml);
-    }
-
-//    /**
-//     * Unit test case in which verifying xml string for module object with
-//     * leaf list.
-//     */
-//    @Test
-//    public void proceessCodecHandlerForLeafList() {
-//        testYangSchemaNodeProvider.processSchemaRegistry(null);
-//        DefaultYangSchemaRegistry schemaRegistry =
-//                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-//        List<Object> yangModuleList = new ArrayList<>();
-//
-//        // Creating the object
-//        EmployeeidOpParam.EmployeeidBuilder employeeidBuilder =
-//                EmployeeidOpParam.builder();
-//        employeeidBuilder.addToEmployeeid("Employ1");
-//        employeeidBuilder.addToEmployeeid("Employ2");
-//        employeeidBuilder.addToEmployeeid("Employ3");
-//        employeeidBuilder.addToEmployeeid("Employ4");
-//        employeeidBuilder.addToEmployeeid("Employ5");
-//
-//        Object object = employeeidBuilder.build();
-//        yangModuleList.add(object);
-//
-//        // Get the xml string and compare
-//        YangCodecRegistry.initializeDefaultCodec();
-//        DefaultYangCodecHandler codecHandler =
-//                new DefaultYangCodecHandler(schemaRegistry);
-//        String xml = codecHandler.encodeOperation("config", "ydt.root", null,
-//                                                  yangModuleList, XML, null);
-//        assertEquals(AM_XML + "employ-id: leaf-list info", emplyIdXml(), xml);
-//        WarehousesupervisorOpParam.WarehousesupervisorBuilder warehsebldr =
-//                WarehousesupervisorOpParam.builder();
-//        warehsebldr.addToSupervisor("supervisor1");
-//        warehsebldr.addToSupervisor("supervisor2");
-//        warehsebldr.addToSupervisor("supervisor3");
-//        warehsebldr.addToSupervisor("supervisor4");
-//        warehsebldr.addToSupervisor("supervisor5");
-//
-//        object = warehsebldr.build();
-//        yangModuleList.clear();
-//        yangModuleList.add(object);
-//
-//
-//        // Get the xml string and compare
-//        xml = codecHandler.encodeOperation("config", "ydt.root", null,
-//                                           yangModuleList, XML, null);
-//
-//        assertEquals(AM_XML + "warehouse-super: leaf-list info", wareHseXml(),
-//                     xml);
-//    }
-
-//    /**
-//     * Unit test case in which verifying xml string for multiple module object.
-//     */
-//    @Test
-//    public void proceessCodecHandlerForMultipleModule() {
-//        testYangSchemaNodeProvider.processSchemaRegistry(null);
-//        DefaultYangSchemaRegistry schemaRegistry =
-//                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-//
-//        List<Object> yangModuleList = new ArrayList<>();
-//        YangCodecRegistry.initializeDefaultCodec();
-//        DefaultYangCodecHandler codecHandler =
-//                new DefaultYangCodecHandler(schemaRegistry);
-//
-//        // Creating the object for customssupervisor module
-//        Object object = CustomssupervisorOpParam.builder()
-//                .supervisor("Customssupervisor").build();
-//        yangModuleList.add(object);
-//
-//        // Creating the object for merchandisersupervisor module
-//        object = MerchandisersupervisorOpParam.builder()
-//                .supervisor("Merchandisersupervisor").build();
-//        yangModuleList.add(object);
-//
-//        // Creating the object for materialsupervisor module
-//        Supervisor supervisor1 = new DefaultSupervisor.SupervisorBuilder()
-//                .name("abc1").departmentId("xyz1").build();
-//        Supervisor supervisor2 = new DefaultSupervisor.SupervisorBuilder()
-//                .name("abc2").departmentId("xyz2").build();
-//        Supervisor supervisor3 = new DefaultSupervisor.SupervisorBuilder()
-//                .name("abc3").departmentId("xyz3").build();
-//        Supervisor supervisor4 = new DefaultSupervisor.SupervisorBuilder()
-//                .name("abc4").departmentId("xyz4").build();
-//        Supervisor supervisor5 = new DefaultSupervisor.SupervisorBuilder()
-//                .name("abc5").departmentId("xyz5").build();
-//
-//        object = MaterialsupervisorOpParam.builder()
-//                .addToSupervisor(supervisor1)
-//                .addToSupervisor(supervisor2)
-//                .addToSupervisor(supervisor3)
-//                .addToSupervisor(supervisor4)
-//                .addToSupervisor(supervisor5).build();
-//
-//        yangModuleList.add(object);
-//
-//        // Creating the object for YchPurchasingsupervisor module
-//        YchPurchasingSupervisor purSupervisor =
-//                new DefaultYchPurchasingSupervisor
-//                        .YchPurchasingSupervisorBuilder()
-//                        .ychPurchasingSpecialist("purchasingSpecialist")
-//                        .ychPurchasingSupport("support").build();
-//        object = YchPurchasingsupervisorOpParam.builder()
-//                .ychPurchasingSupervisor(purSupervisor).build();
-//        yangModuleList.add(object);
-//
-//        // Creating the object for warehousesupervisor module
-//        WarehousesupervisorOpParam.WarehousesupervisorBuilder warehsebldr =
-//                WarehousesupervisorOpParam.builder();
-//        warehsebldr.addToSupervisor("supervisor1");
-//        warehsebldr.addToSupervisor("supervisor2");
-//        warehsebldr.addToSupervisor("supervisor3");
-//        warehsebldr.addToSupervisor("supervisor4");
-//        warehsebldr.addToSupervisor("supervisor5");
-//
-//        object = warehsebldr.build();
-//        yangModuleList.add(object);
-//
-//        // Creating the object for tradingsupervisor module
-//        object = TradingsupervisorOpParam.builder()
-//                .supervisor("Tradingsupervisor").build();
-//        yangModuleList.add(object);
-//
-//        List<String> employeeid = EmployeeidOpParam.builder().employeeid();
-//        if (employeeid == null) {
-//            employeeid = new ArrayList<>();
-//        }
-//        employeeid.add("Employ1");
-//        employeeid.add("Employ2");
-//        employeeid.add("Employ3");
-//        employeeid.add("Employ4");
-//        employeeid.add("Employ5");
-//
-//        // Creating the object for employeeid module
-//        object = EmployeeidOpParam.builder().employeeid(employeeid).build();
-//        yangModuleList.add(object);
-//
-//        // Get the xml string and compare
-//        String xml = codecHandler.encodeOperation("config", "ydt.root", null,
-//                                                  yangModuleList, XML, null);
-//        assertEquals(AM_XML + "multiple: module info", multiModuleXml(), xml);
-//    }
-
-    /**
-     * Unit test case in which verifying object for xml string with config as
-     * root name and multiple module.
-     */
-    @Test
-    public void proceessCodecDecodeFunctionForListInsideList() {
-        String path = "src/test/resources/ychTestResourceFiles/combinedrootname.xml";
-        StringBuilder sb = new StringBuilder();
-        String sCurrentLine;
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler defaultYangCodecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-
-        try (BufferedReader br = new BufferedReader(new FileReader(path))) {
-
-            while ((sCurrentLine = br.readLine()) != null) {
-                sb.append(sCurrentLine);
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-
-        // TODO YOB and YTB need to do some changes for binary
-        // Verify the received object list
-        /*objectList = defaultYangCodecHandler.decode(sb.toString(),
-                                                    XML_ENCODING,
-                                                    EDIT_CONFIG_REQUEST);
-        Iterator<Object> iterator = objectList.iterator();
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-            if (object.getClass().getSimpleName().equals("CombinedOpParam")) {
-                CombinedOpParam combinedOpParam = (CombinedOpParam) object;
-
-                PathId pathId = new PathId(123);
-                Origin origin = new DefaultOrigin.OriginBuilder()
-                        .value(pathId).build();
-                assertTrue(combinedOpParam.attributes().origin()
-                                   .equals(origin));
-
-                MultiExitDisc multiExitDisc = new DefaultMultiExitDisc
-                        .MultiExitDiscBuilder().med(456).build();
-                assertTrue(combinedOpParam.attributes().multiExitDisc()
-                                   .equals(multiExitDisc));
-
-                LocalPref localPref = new DefaultLocalPref.LocalPrefBuilder()
-                        .pref(23).build();
-                assertTrue(combinedOpParam.attributes().localPref()
-                                   .equals(localPref));
-
-                Metric metric = new Metric(456);
-                AigpTlv aigpTlv = new DefaultAigpTlv.AigpTlvBuilder()
-                        .metric(metric).build();
-                Aigp aigp = new DefaultAigp.AigpBuilder().aigpTlv(aigpTlv)
-                        .build();
-                assertTrue(combinedOpParam.attributes().aigp().equals(aigp));
-
-                UnrecognizedAttributes unrecognizedAttributes1 =
-                        new DefaultUnrecognizedAttributes
-                                .UnrecognizedAttributesBuilder()
-                                .partial(false).transitive(false).type((short) 1)
-                                .value("ABC".getBytes()).build();
-
-                UnrecognizedAttributes unrecognizedAttributes2 =
-                        new DefaultUnrecognizedAttributes
-                                .UnrecognizedAttributesBuilder()
-                                .partial(true).transitive(true).type((short) 2)
-                                .value("BCA".getBytes()).build();
-
-                UnrecognizedAttributes unrecognizedAttributes3 =
-                        new DefaultUnrecognizedAttributes
-                                .UnrecognizedAttributesBuilder()
-                                .partial(true).transitive(false).type((short) 3)
-                                .value("CAB".getBytes()).build();
-
-                UnrecognizedAttributes unrecognizedAttributes4 =
-                        new DefaultUnrecognizedAttributes
-                                .UnrecognizedAttributesBuilder()
-                                .partial(false).transitive(true).type((short) 4)
-                                .value("111".getBytes()).build();
-
-                AsNum asNum1 = new AsNum(11);
-                As4BytesCapability as4BytesCapability1 =
-                        new DefaultAs4BytesCapability
-                                .As4BytesCapabilityBuilder()
-                                .asNumber(asNum1).build();
-                Cparameters cparameters1 = new DefaultCparameters
-                        .CparametersBuilder()
-                        .as4BytesCapability(as4BytesCapability1)
-                        .build();
-                OptionalCapabilities optionalCapabilities1 =
-                        new DefaultOptionalCapabilities
-                                .OptionalCapabilitiesBuilder()
-                                .cParameters(cparameters1).build();
-
-                AsNum asNum2 = new AsNum(22);
-                As4BytesCapability as4BytesCapability2 =
-                        new DefaultAs4BytesCapability
-                                .As4BytesCapabilityBuilder()
-                                .asNumber(asNum2).build();
-                Cparameters cparameters2 = new DefaultCparameters
-                        .CparametersBuilder()
-                        .as4BytesCapability(as4BytesCapability2)
-                        .build();
-                OptionalCapabilities optionalCapabilities2 =
-                        new DefaultOptionalCapabilities
-                                .OptionalCapabilitiesBuilder()
-                                .cParameters(cparameters2).build();
-
-                AsNum asNum3 = new AsNum(33);
-                As4BytesCapability as4BytesCapability3 =
-                        new DefaultAs4BytesCapability
-                                .As4BytesCapabilityBuilder()
-                                .asNumber(asNum3).build();
-                Cparameters cparameters3 =
-                        new DefaultCparameters.CparametersBuilder()
-                                .as4BytesCapability(as4BytesCapability3)
-                                .build();
-                OptionalCapabilities optionalCapabilities3 =
-                        new DefaultOptionalCapabilities
-                                .OptionalCapabilitiesBuilder()
-                                .cParameters(cparameters3).build();
-
-                BgpParameters bgpParameters1 =
-                        new DefaultBgpParameters.BgpParametersBuilder()
-                                .addToOptionalCapabilities(optionalCapabilities1)
-                                .addToOptionalCapabilities(optionalCapabilities2)
-                                .addToOptionalCapabilities(optionalCapabilities3)
-                                .build();
-
-                AsNum asNum4 = new AsNum(11);
-                As4BytesCapability as4BytesCapability4 =
-                        new DefaultAs4BytesCapability
-                                .As4BytesCapabilityBuilder()
-                                .asNumber(asNum4).build();
-                Cparameters cparameters4 =
-                        new DefaultCparameters.CparametersBuilder()
-                                .as4BytesCapability(as4BytesCapability4)
-                                .build();
-                OptionalCapabilities optionalCapabilities4 =
-                        new DefaultOptionalCapabilities
-                                .OptionalCapabilitiesBuilder()
-                                .cParameters(cparameters4).build();
-
-                AsNum asNum5 = new AsNum(22);
-                As4BytesCapability as4BytesCapability5 =
-                        new DefaultAs4BytesCapability
-                                .As4BytesCapabilityBuilder()
-                                .asNumber(asNum5).build();
-                Cparameters cparameters5 =
-                        new DefaultCparameters.CparametersBuilder()
-                                .as4BytesCapability(as4BytesCapability5)
-                                .build();
-                OptionalCapabilities optionalCapabilities5 =
-                        new DefaultOptionalCapabilities
-                                .OptionalCapabilitiesBuilder()
-                                .cParameters(cparameters5).build();
-
-                AsNum asNum6 = new AsNum(33);
-                As4BytesCapability as4BytesCapability6 =
-                        new DefaultAs4BytesCapability
-                                .As4BytesCapabilityBuilder()
-                                .asNumber(asNum6).build();
-                Cparameters cparameters6 =
-                        new DefaultCparameters.CparametersBuilder()
-                                .as4BytesCapability(as4BytesCapability6)
-                                .build();
-                OptionalCapabilities optionalCapabilities6 =
-                        new DefaultOptionalCapabilities
-                                .OptionalCapabilitiesBuilder()
-                                .cParameters(cparameters6).build();
-
-                BgpParameters bgpParameters2 =
-                        new DefaultBgpParameters.BgpParametersBuilder()
-                                .addToOptionalCapabilities(optionalCapabilities4)
-                                .addToOptionalCapabilities(optionalCapabilities5)
-                                .addToOptionalCapabilities(optionalCapabilities6)
-                                .build();
-
-                Attributes attributes =
-                        new DefaultAttributes.AttributesBuilder()
-                                .origin(origin)
-                                .multiExitDisc(multiExitDisc)
-                                .localPref(localPref)
-                                .aigp(aigp)
-                                .addToUnrecognizedAttributes(unrecognizedAttributes1)
-                                .addToUnrecognizedAttributes(unrecognizedAttributes2)
-                                .addToUnrecognizedAttributes(unrecognizedAttributes3)
-                                .addToUnrecognizedAttributes(unrecognizedAttributes4)
-                                .addToBgpParameters(bgpParameters1)
-                                .addToBgpParameters(bgpParameters2).build();
-            } else {
-                assertTrue(false);
-            }
-        }*/
-    }
-
-//    /**
-//     * Unit test case in which verifying object for xml string with config as root name and
-//     * operation type.
-//     */
-//    @Test
-//    public void proceessCodecDecodeFunctionForOperTypeTest() {
-//        String path = "src/test/resources/ychTestResourceFiles/configrootnameOperationType.xml";
-//        testYangSchemaNodeProvider.processSchemaRegistry(null);
-//        DefaultYangSchemaRegistry schemaRegistry =
-//                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-//
-//        YangCodecRegistry.initializeDefaultCodec();
-//        DefaultYangCodecHandler defaultYangCodecHandler =
-//                new DefaultYangCodecHandler(schemaRegistry);
-//
-//        StringBuilder sb = new StringBuilder();
-//        String sCurrentLine;
-//
-//        try (BufferedReader br = new BufferedReader(new FileReader(path))) {
-//
-//            while ((sCurrentLine = br.readLine()) != null) {
-//                sb.append(sCurrentLine);
-//            }
-//
-//        } catch (IOException e) {
-//            e.printStackTrace();
-//        }
-//
-//        // Verify the received object list
-//        List<Object> objectList =
-//                defaultYangCodecHandler.decode(sb.toString(),
-//                                               XML, EDIT_CONFIG_REQUEST);
-//        Iterator<Object> iterator = objectList.iterator();
-//        while (iterator.hasNext()) {
-//            Object object = iterator.next();
-//            if (object.getClass().getSimpleName()
-//                    .equals(LOGISTIC_MOD)) {
-//                LogisticsManagerOpParam logistics =
-//                        (LogisticsManagerOpParam) object;
-//                DefaultPurchasingSupervisor purchasingSupervisor =
-//                        (DefaultPurchasingSupervisor) logistics
-//                                .purchasingSupervisor();
-//
-//                assertEquals(AM_OBJ + "purchase-super: operation type", DELETE,
-//                             purchasingSupervisor.yangPurchasingSupervisorOpType());
-//                assertEquals(AM_OBJ + "customs-super: leaf value", "abc",
-//                             logistics.customsSupervisor());
-//                assertEquals(AM_OBJ + "purchase-spec: leaf value", "bcd",
-//                             logistics.purchasingSupervisor()
-//                                     .purchasingSpecialist());
-//                assertEquals(AM_OBJ + "purchase-support: leaf value",
-//                             "cde", logistics.purchasingSupervisor()
-//                                     .support());
-//
-//            } else if (object.getClass().getSimpleName()
-//                    .equals(MERCHA_MOD)) {
-//                MerchandisersupervisorOpParam merchandisersupervisorOpParam =
-//                        (MerchandisersupervisorOpParam) object;
-//                assertEquals(AM_OBJ + "merchandiser-super: leaf value",
-//                             "abc", merchandisersupervisorOpParam.supervisor());
-//            } else {
-//                assertEquals(AM_OBJ, LOGISTIC_MOD, object
-//                        .getClass().getSimpleName());
-//                assertEquals(AM_OBJ, MERCHA_MOD, object
-//                        .getClass().getSimpleName());
-//            }
-//        }
-//    }
-
-    /**
-     * Validate the leaf value for purchasing specialist.
-     *
-     * @param objectList object list
-     */
-    private void processPurchasingSpecObj(List<Object> objectList) {
-        Iterator<Object> iterator = objectList.iterator();
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-            if ("LogisticsManagerOpParam".equals(object.getClass().getSimpleName())) {
-                LogisticsManagerOpParam logisticsManagerOpParam =
-                        (LogisticsManagerOpParam) object;
-                assertEquals(AM_OBJ + "purchasing-spec: leaf value", "bcd",
-                             logisticsManagerOpParam.purchasingSupervisor()
-                                     .purchasingSpecialist());
-            } else {
-                assertEquals(AM_OBJ, "LogisticsManagerOpParam", object
-                        .getClass().getSimpleName());
-            }
-        }
-    }
-
-    /**
-     * Validate the leaf value for merchandiser supervisor.
-     *
-     * @param objectList object list
-     */
-    private void processMerchandiserObj(List<Object> objectList) {
-        Iterator<Object> iterator = objectList.iterator();
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-            if (object.getClass().getSimpleName()
-                    .equals(MERCHA_MOD)) {
-                MerchandisersupervisorOpParam merchandisersupervisorOpParam =
-                        (MerchandisersupervisorOpParam) object;
-                assertEquals(AM_OBJ + "merchandiser-super: leaf value", "abc",
-                             merchandisersupervisorOpParam.supervisor());
-            } else {
-                assertEquals(AM_OBJ, MERCHA_MOD, object
-                        .getClass().getSimpleName());
-            }
-        }
-    }
-
-    /**
-     * Unit test case in which verifying object for xml string with get and
-     * filter as root name.
-     */
-    @Test
-    public void proceessCodecDecodeFunctionForGet() {
-        String path = "src/test/resources/ychTestResourceFiles/getrootname.xml";
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler defaultYangCodecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-
-        StringBuilder sb = new StringBuilder();
-        String sCurrentLine;
-
-        try (BufferedReader br = new BufferedReader(new FileReader(path))) {
-
-            while ((sCurrentLine = br.readLine()) != null) {
-                sb.append(sCurrentLine);
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-
-        // Verify the received object list
-        List<Object> objectList =
-                defaultYangCodecHandler.decode(sb.toString(),
-                                               XML, QUERY_REQUEST);
-        processPurchasingSpecObj(objectList);
-    }
-
-    /**
-     * Unit test case in which verifying object for xml string with get-config
-     * and filter as root name.
-     */
-    @Test
-    public void proceessCodecDecodeFunctionForGetConfig() {
-        String path = "src/test/resources/ychTestResourceFiles/getconfigrootname.xml";
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler defaultYangCodecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-
-        StringBuilder sb = new StringBuilder();
-        String sCurrentLine;
-
-        try (BufferedReader br = new BufferedReader(new FileReader(path))) {
-
-            while ((sCurrentLine = br.readLine()) != null) {
-                sb.append(sCurrentLine);
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-
-        // Verify the received object list
-        List<Object> objectList = defaultYangCodecHandler.decode(
-                sb.toString(),
-                XML, QUERY_CONFIG_REQUEST);
-        processMerchandiserObj(objectList);
-    }
-
-    /**
-     * Unit test case in which verifying object for xml string with data as
-     * root name.
-     */
-    @Test
-    public void proceessCodecDecodeFunctionForGetData() {
-        String path = "src/test/resources/ychTestResourceFiles/getReply.xml";
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler defaultYangCodecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-
-        StringBuilder sb = new StringBuilder();
-        String sCurrentLine;
-
-        try (BufferedReader br = new BufferedReader(new FileReader(path))) {
-
-            while ((sCurrentLine = br.readLine()) != null) {
-                sb.append(sCurrentLine);
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-
-        // Verify the received object list
-        List<Object> objectList = defaultYangCodecHandler.decode(
-                sb.toString(),
-                XML, QUERY_CONFIG_REQUEST);
-        processPurchasingSpecObj(objectList);
-    }
-
-    /**
-     * Unit test case in which verifying object for xml string with rpc-reply
-     * and data as root name .
-     */
-    @Test
-    public void proceessCodecDecodeFunctionForGetConfigData() {
-        String path = "src/test/resources/ychTestResourceFiles/getconfigReply.xml";
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler defaultYangCodecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-
-        StringBuilder sb = new StringBuilder();
-        String sCurrentLine;
-
-        try (BufferedReader br = new BufferedReader(new FileReader(path))) {
-
-            while ((sCurrentLine = br.readLine()) != null) {
-                sb.append(sCurrentLine);
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-
-        // Verify the received object list
-        List<Object> objectList = defaultYangCodecHandler.decode(sb.toString(),
-                                                                 XML, null);
-        processMerchandiserObj(objectList);
-    }
-
-    @Test
-    public void proceessCodecDecodeFunctionForPresenceContainer() {
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler defaultYangCodecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-
-        // Verify the received object list
-        List<Object> objectList = defaultYangCodecHandler.decode(purchaseXml(),
-                                                                 XML, null);
-        assertNotNull(objectList);
-        Iterator<Object> iterator = objectList.iterator();
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-            if (object.getClass().getSimpleName().equals(PURCH_MOD)) {
-                YchPurchasingsupervisorOpParam purchasingsupervisorOpParam =
-                        (YchPurchasingsupervisorOpParam) object;
-                assertEquals(AM_OBJ + "purchasing-specialist: leaf value", "purchasingSpecialist",
-                             purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingSpecialist());
-                assertEquals(AM_OBJ + "purchasing-support: leaf value", "support",
-                        purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingSupport());
-                assertNotNull(AM_OBJ + "purchasing-manager: leaf value",
-                        purchasingsupervisorOpParam.ychPurchasingSupervisor().ychIsManager());
-            } else {
-                assertEquals(AM_OBJ, PURCH_MOD, object.getClass().getSimpleName());
-            }
-        }
-    }
-
-    @Test
-    public void proceessCodecDecodeFunctionForSelectionNode() {
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler defaultYangCodecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-
-        // Verify the received object list
-        List<Object> objectList = defaultYangCodecHandler.decode(
-                purchaseXmlEmptySelectionNode(), XML, null);
-        assertNotNull(objectList);
-        Iterator<Object> iterator = objectList.iterator();
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-            if (object.getClass().getSimpleName().equals(PURCH_MOD)) {
-                YchPurchasingsupervisorOpParam purchasingsupervisorOpParam =
-                        (YchPurchasingsupervisorOpParam) object;
-                assertNull(AM_OBJ + "purchasing-specialist: leaf value not empty",
-                         purchasingsupervisorOpParam.
-                         ychPurchasingSupervisor().ychPurchasingSpecialist());
-            } else {
-                assertEquals(AM_OBJ, PURCH_MOD, object.getClass().getSimpleName());
-            }
-        }
-    }
-
-    @Test
-    public void proceessCodecDecodeFunctionForBitmaskContainer() {
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler defaultYangCodecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-
-        BitSet purchaseOptions = new BitSet(4);
-        purchaseOptions.set(1); //option1
-        purchaseOptions.set(3); //option3
-
-        // Verify the received object list
-        List<Object> objectList = defaultYangCodecHandler.decode(
-                purchaseXmlOptions(purchaseOptions), XML, null);
-        assertNotNull(objectList);
-        Iterator<Object> iterator = objectList.iterator();
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-            if (object.getClass().getSimpleName().equals(PURCH_MOD)) {
-                YchPurchasingsupervisorOpParam purchasingsupervisorOpParam =
-                        (YchPurchasingsupervisorOpParam) object;
-                assertEquals(AM_OBJ + "purchasing-support: leaf value", "support",
-                        purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingSupport());
-                assertEquals(AM_OBJ + "ych-puchasing-options: leaf value",
-                        purchaseOptions,
-                        purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingOptions());
-            } else {
-                assertEquals(AM_OBJ, PURCH_MOD, object.getClass().getSimpleName());
-            }
-        }
-    }
-
-    @Test
-    public void proceessCodecDecodeFunctionForEmptyBitmask() {
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry schemaRegistry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-
-        YangCodecRegistry.initializeDefaultCodec();
-        DefaultYangCodecHandler defaultYangCodecHandler =
-                new DefaultYangCodecHandler(schemaRegistry);
-
-        // Verify the received object list
-        List<Object> objectList = defaultYangCodecHandler.decode(
-                purchaseXmlOptions(null), XML, null);
-        assertNotNull(objectList);
-        Iterator<Object> iterator = objectList.iterator();
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-            if (object.getClass().getSimpleName().equals(PURCH_MOD)) {
-                YchPurchasingsupervisorOpParam purchasingsupervisorOpParam =
-                        (YchPurchasingsupervisorOpParam) object;
-                assertEquals(AM_OBJ + "purchasing-support: leaf value", "support",
-                        purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingSupport());
-                assertNull(AM_OBJ + "ych-puchasing-options: leaf value empty",
-                        purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingOptions());
-            } else {
-                assertEquals(AM_OBJ, PURCH_MOD, object.getClass().getSimpleName());
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/AugmentSequenceTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/AugmentSequenceTest.java
deleted file mode 100644
index 720b827..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/AugmentSequenceTest.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-
-import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.OTHER_EDIT;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.AUGNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.AUGSE;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.augmentSequenceYdt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppLogicalNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppModuleNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-public class AugmentSequenceTest {
-
-    private static final String[] EXPECTED = {
-            "Entry Node is augment.",
-            "Entry Node is augmentSequence.",
-            "Entry Node is l1.",
-            "Entry Node is leaf1.",
-            "Exit Node is leaf1.",
-
-            "Entry Node is c1.",
-            "Entry Node is leaf2.",
-            "Exit Node is leaf2.",
-            "Exit Node is c1.",
-
-            "Entry Node is c2.",
-            "Entry Node is leaf2.",
-            "Exit Node is leaf2.",
-            "Exit Node is c2.",
-
-            "Exit Node is l1.",
-            "Exit Node is augmentSequence.",
-            "Exit Node is augment.",
-    };
-
-    /**
-     * Creates and validates sequence of augment in ydt.
-     */
-    @Test
-    public void augmentTest() {
-        YangRequestWorkBench ydtBuilder = augmentSequenceYdt();
-        validateTree(ydtBuilder);
-        validateAppTree(ydtBuilder);
-        walkINTree(ydtBuilder, EXPECTED);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        // Assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, "augment", null);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "augmentSequence", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "l1", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-
-        validateLeafContents(ydtNode, "leaf1", "1");
-        ydtNode = ydtNode.getNextSibling();
-
-        //Augmenting leaf2
-        validateNodeContents(ydtNode, "c1", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "leaf2", "2");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-
-        //Augmenting leaf3
-        validateNodeContents(ydtNode, "c2", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "leaf2", "3");
-    }
-
-    /**
-     * Validates the given built ydt application tree.
-     */
-    private void validateAppTree(YangRequestWorkBench ydtBuilder) {
-
-        // Assign root node to ydtNode for validating purpose.
-        YdtAppContext ydtAppContext = ydtBuilder.getAppRootNode();
-        // Logical root node does not have operation type
-        validateAppLogicalNodeContents(ydtAppContext);
-        ydtAppContext = ydtAppContext.getFirstChild();
-        validateAppModuleNodeContents(ydtAppContext, "augmentSequence",
-                                      OTHER_EDIT);
-        ydtAppContext = ydtAppContext.getFirstChild();
-
-        //Inside list checking the first augmented leaf
-        validateAppNodeContents(ydtAppContext, AUGSE, AUGNS, OTHER_EDIT);
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/AugmentTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/AugmentTest.java
deleted file mode 100644
index 9846d0a..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/AugmentTest.java
+++ /dev/null
@@ -1,527 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.BOTH;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.A2L;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.A5L;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.A6L;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.AUG1;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.IETF;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.NETNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.SLINK;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.STP;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.TOPONS;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.augmentNetworkYdt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppLogicalNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppModuleNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafListContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree;
-import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-public class AugmentTest {
-
-    private Set<String> valueSet = new HashSet();
-
-    private static final String[] EXPECTED = {
-            "Entry Node is yms-ietf-network.",
-            "Entry Node is yms-ietf-network.",
-            "Entry Node is networks.",
-            "Entry Node is network.",
-            "Entry Node is network-id.",
-            "Exit Node is network-id.",
-            "Entry Node is link.",
-            "Entry Node is link-id.",
-            "Exit Node is link-id.",
-            "Entry Node is source.",
-            "Entry Node is source-node.",
-            "Exit Node is source-node.",
-            "Entry Node is source-tp.",
-            "Exit Node is source-tp.",
-            "Exit Node is source.",
-
-            "Entry Node is destination.",
-            "Entry Node is dest-node.",
-            "Exit Node is dest-node.",
-            "Entry Node is dest-tp.",
-            "Exit Node is dest-tp.",
-            "Exit Node is destination.",
-
-            "Entry Node is supporting-link.",
-            "Entry Node is network-ref.",
-            "Exit Node is network-ref.",
-            "Entry Node is link-ref.",
-            "Exit Node is link-ref.",
-            "Exit Node is supporting-link.",
-
-            "Entry Node is supporting-link.",
-            "Entry Node is network-ref.",
-            "Exit Node is network-ref.",
-            "Entry Node is link-ref.",
-            "Exit Node is link-ref.",
-            "Exit Node is supporting-link.",
-
-            "Entry Node is augment1.",
-            "Entry Node is value1.",
-            "Exit Node is value1.",
-            "Exit Node is augment1.",
-
-            "Entry Node is augment2.",
-            "Entry Node is key1.",
-            "Exit Node is key1.",
-            "Entry Node is key2.",
-            "Exit Node is key2.",
-
-            "Entry Node is augment5.",
-
-            "Entry Node is augment6leafList.",
-            "Exit Node is augment6leafList.",
-
-            "Entry Node is value5.",
-            "Exit Node is value5.",
-            "Exit Node is augment5.",
-
-            "Entry Node is augment5leafList.",
-            "Exit Node is augment5leafList.",
-
-            "Entry Node is augment3.",
-
-            "Entry Node is augment4.",
-            "Entry Node is value4.",
-            "Exit Node is value4.",
-            "Exit Node is augment4.",
-
-            "Entry Node is augment5.",
-
-            "Entry Node is leaf6.",
-            "Exit Node is leaf6.",
-
-            "Entry Node is value5.",
-            "Exit Node is value5.",
-            "Exit Node is augment5.",
-
-            "Entry Node is augment6.",
-            "Entry Node is value6.",
-            "Exit Node is value6.",
-            "Exit Node is augment6.",
-
-            "Entry Node is value3.",
-            "Exit Node is value3.",
-            "Exit Node is augment3.",
-
-            "Entry Node is augment3leaf.",
-            "Exit Node is augment3leaf.",
-
-            "Exit Node is augment2.",
-
-            "Entry Node is augment2leafList.",
-            "Exit Node is augment2leafList.",
-
-            "Exit Node is link.",
-
-            "Entry Node is supporting-network.",
-            "Entry Node is network-ref.",
-            "Exit Node is network-ref.",
-            "Exit Node is supporting-network.",
-            "Entry Node is node.",
-            "Entry Node is node-id.",
-            "Exit Node is node-id.",
-            "Entry Node is t-point.",
-            "Entry Node is tp-id.",
-            "Exit Node is tp-id.",
-
-            "Entry Node is supporting-termination-point.",
-            "Entry Node is network-ref.",
-            "Exit Node is network-ref.",
-            "Entry Node is node-ref.",
-            "Exit Node is node-ref.",
-            "Entry Node is tp-ref.",
-            "Exit Node is tp-ref.",
-
-            "Entry Node is augment1.",
-            "Entry Node is value1.",
-            "Exit Node is value1.",
-            "Exit Node is augment1.",
-
-            "Entry Node is augment1-leaf.",
-            "Exit Node is augment1-leaf.",
-
-            "Entry Node is augment2.",
-
-            "Entry Node is augment3.",
-            "Entry Node is value3.",
-            "Exit Node is value3.",
-            "Exit Node is augment3.",
-
-            "Entry Node is augment4leaf.",
-            "Exit Node is augment4leaf.",
-
-            "Entry Node is value2.",
-            "Exit Node is value2.",
-            "Exit Node is augment2.",
-            "Entry Node is augment2leafList.",
-            "Exit Node is augment2leafList.",
-            "Entry Node is augment2leaf.",
-            "Exit Node is augment2leaf.",
-
-            "Exit Node is supporting-termination-point.",
-            "Exit Node is t-point.",
-            "Entry Node is supporting-node.",
-            "Entry Node is network-ref.",
-            "Exit Node is network-ref.",
-            "Entry Node is node-ref.",
-            "Exit Node is node-ref.",
-            "Exit Node is supporting-node.",
-
-            "Exit Node is node.",
-            // last augmented sibling in network
-            "Entry Node is link-id.",
-            "Exit Node is link-id.",
-
-            "Exit Node is network.",
-            "Exit Node is networks.",
-            "Entry Node is networks-state.",
-            "Entry Node is network.",
-            "Entry Node is network-ref.",
-            "Exit Node is network-ref.",
-            "Entry Node is server-provided.",
-            "Exit Node is server-provided.",
-            "Exit Node is network.",
-            "Exit Node is networks-state.",
-            "Exit Node is yms-ietf-network.",
-
-            "Entry Node is augmentNetwork.",
-            "Entry Node is node.",
-            "Entry Node is name.",
-            "Exit Node is name.",
-            "Entry Node is cont1s.",
-            "Entry Node is cont1s.",
-            "Entry Node is fine.",
-            "Exit Node is fine.",
-
-            // augmenting node augment1 under cont1s
-            "Entry Node is augment1.",
-            "Entry Node is value1.",
-            "Exit Node is value1.",
-            "Exit Node is augment1.",
-
-            "Exit Node is cont1s.",
-            "Exit Node is cont1s.",
-            "Exit Node is node.",
-            "Exit Node is augmentNetwork.",
-
-            "Exit Node is yms-ietf-network."
-    };
-
-    /**
-     * Creates and validates ietf network augment ydt.
-     */
-    @Test
-    public void augmentTest() {
-        YangRequestWorkBench ydtBuilder = augmentNetworkYdt();
-        validateTree(ydtBuilder);
-        validateAppTree(ydtBuilder);
-        walkINTree(ydtBuilder, EXPECTED);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        // Assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, "yms-ietf-network", null);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "yms-ietf-network", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "networks", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "network", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-id", "network1");
-        ydtNode = ydtNode.getNextSibling();
-
-        // Validating augmented child
-        validateNodeContents(ydtNode, "link", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "link-id", "id1");
-        ydtNode = ydtNode.getNextSibling();
-
-        // Inside source node
-        validateNodeContents(ydtNode, "source", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "source-node", "source1");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "source-tp", "source2");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-
-        //Inside destination node
-        validateNodeContents(ydtNode, "destination", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "dest-node", "dest1");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "dest-tp", "dest2");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-
-        //Inside supporting links
-        validateNodeContents(ydtNode, SLINK, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-ref", "network1");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "link-ref", "id2");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-
-        //Inside another supporting links instance
-        validateNodeContents(ydtNode, SLINK, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-ref", "network2");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "link-ref", "id3");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-
-        validateNodeContents(ydtNode, "augment1", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "value1", "1");
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "augment2", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "key1", "1");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "key2", "2");
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "augment5", DELETE);
-        ydtNode = ydtNode.getFirstChild();
-        valueSet.add("1");
-        valueSet.add("2");
-        validateLeafListContents(ydtNode, A6L, valueSet);
-        ydtNode = ydtNode.getNextSibling();
-
-        validateLeafContents(ydtNode, "value5", "5");
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafListContents(ydtNode, A5L, valueSet);
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "augment3", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-
-        validateNodeContents(ydtNode, "augment4", DELETE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "value4", "4");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-
-        validateNodeContents(ydtNode, "augment5", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-
-        validateLeafContents(ydtNode, "leaf6", "6");
-        ydtNode = ydtNode.getNextSibling();
-
-        validateLeafContents(ydtNode, "value5", "5");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-
-        validateNodeContents(ydtNode, "augment6", DELETE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "value6", "6");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-
-        validateLeafContents(ydtNode, "value3", "3");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "augment3leaf", "3");
-
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafListContents(ydtNode, A2L, valueSet);
-
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "supporting-network", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-ref", "network2");
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "node", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "node-id", "node1");
-        ydtNode = ydtNode.getNextSibling();
-
-        //Inside termination-point
-        validateNodeContents(ydtNode, "t-point", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "tp-id", "tp_id1");
-        ydtNode = ydtNode.getNextSibling();
-
-        validateTerminationPointAugment(ydtNode);
-    }
-
-    /**
-     * Validates the termination point node in given built ydt.
-     */
-    private void validateTerminationPointAugment(YdtNode ydtNode) {
-
-        //Inside supporting-termination-point
-        validateNodeContents(ydtNode, STP, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-ref", "network-ref");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "node-ref", "node-ref");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "tp-ref", "tp-ref");
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "augment1", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "value1", "1");
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "augment1-leaf", "1");
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "augment2", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-
-        validateNodeContents(ydtNode, "augment3", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "value3", "3");
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "augment4leaf", "4");
-
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "value2", "2");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafListContents(ydtNode, A2L, valueSet);
-
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "augment2leaf", "2");
-
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "supporting-node", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-ref", "network3");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "node-ref", "network4");
-
-        ydtNode = ydtNode.getParent().getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "link-id", "id1");
-        ydtNode = ydtNode.getParent().getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "networks-state", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "network", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-ref", "network5");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "server-provided", "true");
-        ydtNode = ydtNode.getParent().getParent().getParent();
-
-        validateAugmentNetworkModule(ydtNode);
-    }
-
-    /**
-     * Validates the given built ydt for augment network module.
-     */
-    private void validateAugmentNetworkModule(YdtNode ydtNode) {
-
-        ydtNode = ydtNode.getNextSibling();
-        //augmenting network module node
-        validateNodeContents(ydtNode, "augmentNetwork", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "node", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "name", "node1");
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "cont1s", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "cont1s", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "fine", "leaf");
-
-        // checking augmenting node augment1
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "augment1", DELETE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "value1", "1");
-    }
-
-    /**
-     * Validates the given built ydt application tree.
-     */
-    private void validateAppTree(YangRequestWorkBench ydtBuilder) {
-
-        // Assign root node to ydtNode for validating purpose.
-        YdtAppContext ydtAppContext = ydtBuilder.getAppRootNode();
-        // Logical root node does not have operation type
-        validateAppLogicalNodeContents(ydtAppContext);
-        ydtAppContext = ydtAppContext.getFirstChild();
-        validateAppModuleNodeContents(ydtAppContext, IETF, BOTH);
-        ydtAppContext = ydtAppContext.getFirstChild();
-
-        //Inside link node
-        validateAppNodeContents(ydtAppContext, AUG1, TOPONS, BOTH);
-
-        ydtAppContext = ydtAppContext.getParent();
-        validateAugmentNetworkAppTree(ydtAppContext);
-    }
-
-    /**
-     * Validates the given built ydt application tree for augmenting network
-     * module.
-     */
-    private void validateAugmentNetworkAppTree(YdtAppContext ydtAppContext) {
-
-        ydtAppContext = ydtAppContext.getNextSibling();
-        //augmenting network module node
-        validateAppModuleNodeContents(ydtAppContext, "augmentNetwork", BOTH);
-        ydtAppContext = ydtAppContext.getFirstChild();
-        validateAppNodeContents(ydtAppContext, "/node", NETNS, BOTH);
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/EmptyLeafListTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/EmptyLeafListTest.java
deleted file mode 100644
index c7b63f2..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/EmptyLeafListTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafListContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-public class EmptyLeafListTest {
-
-    // Logger list is used for walker testing.
-    private final List<String> logger = new ArrayList<>();
-
-    private static final String[] EXPECTED = {
-            "Entry Node is empty.",
-            "Entry Node is EmptyLeafList.",
-            "Entry Node is l1.",
-            "Exit Node is l1.",
-            "Entry Node is l2.",
-            "Exit Node is l2.",
-            "Entry Node is l3.",
-            "Exit Node is l3.",
-            "Entry Node is list1.",
-            "Exit Node is list1.",
-            "Entry Node is list2.",
-            "Exit Node is list2.",
-            "Entry Node is list3.",
-            "Exit Node is list3.",
-            "Exit Node is EmptyLeafList.",
-            "Exit Node is empty."
-    };
-
-    /**
-     * Creates and validates empty leaf list ydt.
-     */
-    @Test
-    public void emptyListTest() throws IOException {
-
-        //TODO need to be handled later
-//        YangRequestWorkBench ydtBuilder = emptyLeafListYdt();
-//        validateTree(ydtBuilder);
-//        walkINTree(ydtBuilder, EXPECTED);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        Set<String> valueSet = new HashSet();
-
-        // Assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, "empty", null);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "EmptyLeafList", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "l1", null);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "l2", null);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "l3", null);
-        ydtNode = ydtNode.getNextSibling();
-
-        validateLeafListContents(ydtNode, "list1", valueSet);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafListContents(ydtNode, "list2", valueSet);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafListContents(ydtNode, "list3", valueSet);
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/FoodArenaTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/FoodArenaTest.java
deleted file mode 100644
index b7bcddb..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/FoodArenaTest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.DELETE_ONLY;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.foodArenaYdt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.getYdtBuilder;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree;
-import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-import static org.onosproject.yms.ydt.YdtContextOperationType.NONE;
-
-public class FoodArenaTest {
-
-    // Logger list is used for walker testing.
-    private final List<String> logger = new ArrayList<>();
-
-    private static final String[] EXPECTED = {
-            "Entry Node is foodarena.",
-            "Entry Node is food.",
-            "Entry Node is food.",
-            "Entry Node is chocolate.",
-            "Exit Node is chocolate.",
-            "Exit Node is food.",
-            "Exit Node is food.",
-            "Exit Node is foodarena."
-    };
-
-    /**
-     * Creates and validates food arena ydt.
-     */
-    @Test
-    public void foodArenaTest() throws IOException {
-
-        YangRequestWorkBench ydtBuilder = foodArenaYdt();
-        validateTree(ydtBuilder);
-        walkINTree(ydtBuilder, EXPECTED);
-    }
-
-    /**
-     * Creates and validates food arena ydt.
-     */
-    @Test
-    public void foodArenaDeleteOperationTest() throws IOException {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder("foodarena", "food", "ydt.food", NONE);
-        ydtBuilder.addChild("food", "ydt.food", DELETE);
-        YdtAppContext appRootNode = ydtBuilder.getAppRootNode();
-        assertEquals(DELETE_ONLY, appRootNode.getFirstChild().getOperationType());
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-        // Assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, "foodarena", null);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "food", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "food", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "chocolate", "dark");
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IdentityTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IdentityTest.java
deleted file mode 100644
index 68200f1..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IdentityTest.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-import org.onosproject.yms.app.yob.DefaultYobBuilder;
-import org.onosproject.yms.app.ytb.DefaultYangTreeBuilder;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.OTHER_EDIT;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.identityRefYdt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppLogicalNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppModuleNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafListContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REPLY;
-
-public class IdentityTest {
-
-    Set<String> valueSet = new HashSet();
-
-    private static final String[] EXPECTED = {
-            "Entry Node is identityref.",
-            "Entry Node is crypto-base.",
-            "Entry Node is crypto.",
-            "Exit Node is crypto.",
-            "Entry Node is abc-zeunion.",
-            "Exit Node is abc-zeunion.",
-            "Entry Node is level2.",
-            "Exit Node is level2.",
-            "Entry Node is level3.",
-            "Exit Node is level3.",
-            "Entry Node is level4.",
-            "Exit Node is level4.",
-            "Entry Node is abc-type.",
-            "Exit Node is abc-type.",
-            "Exit Node is crypto-base.",
-            "Exit Node is identityref.",
-    };
-
-    /**
-     * Creates and validates identity ref in ydt.
-     */
-    @Test
-    public void identityRefTest() {
-        YangRequestWorkBench ydtBuilder = identityRefYdt();
-        validateTree(ydtBuilder);
-        validateAppTree(ydtBuilder);
-        walkINTree(ydtBuilder, EXPECTED);
-
-        //TODO need to be handled later
-//        validateYangObject(ydtBuilder);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        valueSet.add("crypto-alg");
-        // Assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, "identityref", null);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "crypto-base", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-
-        validateLeafContents(ydtNode, "crypto", "crypto-alg");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "abc-zeunion", "crypto-alg");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "level2", "crypto-alg2");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "level3", "crypto-alg3");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "level4", "crypto-alg3");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafListContents(ydtNode, "abc-type", valueSet);
-
-    }
-
-    /**
-     * Validates the given built ydt application tree.
-     */
-    private void validateAppTree(YangRequestWorkBench ydtBuilder) {
-
-        // Assign root node to ydtNode for validating purpose.
-        YdtAppContext ydtAppContext = ydtBuilder.getAppRootNode();
-        // Logical root node does not have operation type
-        validateAppLogicalNodeContents(ydtAppContext);
-        ydtAppContext = ydtAppContext.getFirstChild();
-        validateAppModuleNodeContents(ydtAppContext, "crypto-base",
-                                      OTHER_EDIT);
-    }
-
-    /**
-     * Creates Ydt from YO using YTB.
-     */
-    private void validateYangObject(YangRequestWorkBench ydtBuilder) {
-
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-
-        YdtContext childCtx = rootCtx.getFirstChild();
-
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, YdtTestUtils
-                        .getSchemaRegistry());
-
-        List<Object> list = new LinkedList<>();
-        list.add(yangObject);
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) treeBuilder.getYdtBuilderForYo(
-                        list, "identityref", "ydt.crypto-base",
-                        EDIT_CONFIG_REPLY, YdtTestUtils
-                                .getSchemaRegistry());
-
-        // Validate the created YDT
-        walkINTree(defaultYdtBuilder, EXPECTED);
-        validateTree(defaultYdtBuilder);
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IetfNetworkTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IetfNetworkTest.java
deleted file mode 100644
index b62ac87..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IetfNetworkTest.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-
-import static org.onosproject.yms.app.ydt.YdtTestUtils.ietfNetwork1Ydt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-public class IetfNetworkTest {
-
-    private static final String[] EXPECTED = {
-            "Entry Node is yms-ietf-network.",
-            "Entry Node is yms-ietf-network.",
-            "Entry Node is networks.",
-            "Entry Node is network.",
-            "Entry Node is network-id.",
-            "Exit Node is network-id.",
-            "Entry Node is supporting-network.",
-            "Entry Node is network-ref.",
-            "Exit Node is network-ref.",
-            "Exit Node is supporting-network.",
-            "Entry Node is node.",
-            "Entry Node is node-id.",
-            "Exit Node is node-id.",
-            "Entry Node is supporting-node.",
-            "Entry Node is network-ref.",
-            "Exit Node is network-ref.",
-            "Entry Node is node-ref.",
-            "Exit Node is node-ref.",
-            "Exit Node is supporting-node.",
-            "Exit Node is node.",
-            "Exit Node is network.",
-            "Exit Node is networks.",
-            "Entry Node is networks-state.",
-            "Entry Node is network.",
-            "Entry Node is network-ref.",
-            "Exit Node is network-ref.",
-            "Entry Node is server-provided.",
-            "Exit Node is server-provided.",
-            "Exit Node is network.",
-            "Exit Node is networks-state.",
-            "Exit Node is yms-ietf-network.",
-            "Exit Node is yms-ietf-network."
-    };
-
-    /**
-     * Creates and validates ietf network ydt.
-     */
-    @Test
-    public void ietfNetwork1Test() {
-        YangRequestWorkBench ydtBuilder = ietfNetwork1Ydt();
-        validateTree(ydtBuilder);
-        walkINTree(ydtBuilder, EXPECTED);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        // Assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, "yms-ietf-network", null);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "yms-ietf-network", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "networks", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "network", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-id", "network1");
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "supporting-network", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-ref", "network2");
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "node", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "node-id", "node1");
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "supporting-node", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-ref", "network3");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "node-ref", "network4");
-
-        ydtNode = ydtNode.getParent().getParent().getParent().getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "networks-state", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "network", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-ref", "network5");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "server-provided", "true");
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IetfTopologyTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IetfTopologyTest.java
deleted file mode 100644
index c1c1fe9..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IetfTopologyTest.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-
-import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.OTHER_EDIT;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.AUG1;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.IETF;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.SLINK;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.STP;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.TOPONS;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.ietfNetworkTopologyYdt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppLogicalNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppModuleNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-public class IetfTopologyTest {
-
-    private static final String[] EXPECTED = {
-            "Entry Node is yms-ietf-network.",
-            "Entry Node is yms-ietf-network.",
-            "Entry Node is networks.",
-            "Entry Node is network.",
-            "Entry Node is network-id.",
-            "Exit Node is network-id.",
-            "Entry Node is link.",
-            "Entry Node is link-id.",
-            "Exit Node is link-id.",
-            "Entry Node is source.",
-            "Entry Node is source-node.",
-            "Exit Node is source-node.",
-            "Entry Node is source-tp.",
-            "Exit Node is source-tp.",
-            "Exit Node is source.",
-
-            "Entry Node is destination.",
-            "Entry Node is dest-node.",
-            "Exit Node is dest-node.",
-            "Entry Node is dest-tp.",
-            "Exit Node is dest-tp.",
-            "Exit Node is destination.",
-
-            "Entry Node is supporting-link.",
-            "Entry Node is network-ref.",
-            "Exit Node is network-ref.",
-            "Entry Node is link-ref.",
-            "Exit Node is link-ref.",
-            "Exit Node is supporting-link.",
-
-            "Entry Node is supporting-link.",
-            "Entry Node is network-ref.",
-            "Exit Node is network-ref.",
-            "Entry Node is link-ref.",
-            "Exit Node is link-ref.",
-            "Exit Node is supporting-link.",
-            "Exit Node is link.",
-
-            "Entry Node is supporting-network.",
-            "Entry Node is network-ref.",
-            "Exit Node is network-ref.",
-            "Exit Node is supporting-network.",
-            "Entry Node is node.",
-            "Entry Node is node-id.",
-            "Exit Node is node-id.",
-            "Entry Node is t-point.",
-            "Entry Node is tp-id.",
-            "Exit Node is tp-id.",
-
-            "Entry Node is supporting-termination-point.",
-            "Entry Node is network-ref.",
-            "Exit Node is network-ref.",
-            "Entry Node is node-ref.",
-            "Exit Node is node-ref.",
-            "Entry Node is tp-ref.",
-            "Exit Node is tp-ref.",
-
-            "Exit Node is supporting-termination-point.",
-            "Exit Node is t-point.",
-            "Entry Node is supporting-node.",
-            "Entry Node is network-ref.",
-            "Exit Node is network-ref.",
-            "Entry Node is node-ref.",
-            "Exit Node is node-ref.",
-            "Exit Node is supporting-node.",
-
-            "Exit Node is node.",
-            // last augmented sibling in network
-            "Entry Node is link-id.",
-            "Exit Node is link-id.",
-
-            "Exit Node is network.",
-            "Exit Node is networks.",
-            "Entry Node is networks-state.",
-            "Entry Node is network.",
-            "Entry Node is network-ref.",
-            "Exit Node is network-ref.",
-            "Entry Node is server-provided.",
-            "Exit Node is server-provided.",
-            "Exit Node is network.",
-            "Exit Node is networks-state.",
-            "Exit Node is yms-ietf-network.",
-            "Exit Node is yms-ietf-network."
-    };
-
-    /**
-     * Creates and validates ietf network ydt.
-     */
-    @Test
-    public void ietfNetwork1Test() {
-        YangRequestWorkBench ydtBuilder = ietfNetworkTopologyYdt();
-        validateTree(ydtBuilder);
-        validateAppTree(ydtBuilder);
-        walkINTree(ydtBuilder, EXPECTED);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        // Assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, "yms-ietf-network", null);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "yms-ietf-network", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "networks", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "network", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-id", "network1");
-        ydtNode = ydtNode.getNextSibling();
-
-        // Validating augmented child
-        validateNodeContents(ydtNode, "link", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "link-id", "id1");
-        ydtNode = ydtNode.getNextSibling();
-
-        // Inside source node
-        validateNodeContents(ydtNode, "source", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "source-node", "source1");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "source-tp", "source2");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-
-        //Inside destination node
-        validateNodeContents(ydtNode, "destination", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "dest-node", "dest1");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "dest-tp", "dest2");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-
-        //Inside supporting links
-        validateNodeContents(ydtNode, SLINK, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-ref", "network1");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "link-ref", "id2");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-
-        //Inside another supporting links instance
-        validateNodeContents(ydtNode, SLINK, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-ref", "network2");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "link-ref", "id3");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "supporting-network", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-ref", "network2");
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "node", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "node-id", "node1");
-        ydtNode = ydtNode.getNextSibling();
-
-        //Inside termination-point
-        validateNodeContents(ydtNode, "t-point", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "tp-id", "tp_id1");
-        ydtNode = ydtNode.getNextSibling();
-
-        //Inside supporting-termination-point
-        validateNodeContents(ydtNode, STP, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-ref", "network-ref");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "node-ref", "node-ref");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "tp-ref", "tp-ref");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "supporting-node", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-ref", "network3");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "node-ref", "network4");
-
-        ydtNode = ydtNode.getParent().getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "link-id", "id1");
-        ydtNode = ydtNode.getParent().getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "networks-state", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "network", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "network-ref", "network5");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "server-provided", "true");
-    }
-
-    /**
-     * Validates the given built ydt application tree.
-     */
-    private void validateAppTree(YangRequestWorkBench ydtBuilder) {
-
-        // Assign root node to ydtNode for validating purpose.
-        YdtAppContext ydtAppContext = ydtBuilder.getAppRootNode();
-        // Logical root node does not have operation type
-        validateAppLogicalNodeContents(ydtAppContext);
-        ydtAppContext = ydtAppContext.getFirstChild();
-        validateAppModuleNodeContents(ydtAppContext, IETF, OTHER_EDIT);
-        ydtAppContext = ydtAppContext.getFirstChild();
-
-        //Inside link node
-        validateAppNodeContents(ydtAppContext, AUG1, TOPONS, OTHER_EDIT);
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/ListTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/ListTest.java
deleted file mode 100644
index 3929855..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/ListTest.java
+++ /dev/null
@@ -1,478 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import static org.junit.Assert.assertEquals;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.E_LEAF;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.E_LIST;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.E_TOPARENT;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.INV;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.LISTNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.LWC;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.getTestYdtBuilder;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.getYdtBuilder;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.listWithContainer1Ydt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.listWithContainer2Ydt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.listWithContainerYdt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.listWithoutContainerYdt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafListContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_NODE;
-
-public class ListTest {
-
-    @Rule
-    public ExpectedException thrown = ExpectedException.none();
-
-    private Set<String> valueSet = new HashSet();
-
-    private static final String[] ERROR = {
-            "rootlist is missing some of the keys of listwithcontainer.",
-            "Duplicate entry with name invalid.",
-            "Some of the key elements are not unique in listwithcontainer.",
-            "Too few key parameters in listwithcontainer." +
-                    " Expected 2; actual 1.",
-            "Too many key parameters in listwithcontainer." +
-                    " Expected 2; actual 3.",
-            "Application with name \"" + "invalid\" doesn't exist.",
-            "Too many instances of listwithcontainer. Expected maximum " +
-                    "instances 3.",
-            "Duplicate entry found under invalidinterval leaf-list node.",
-            "YANG file error : Input value \"string\" is not a valid uint16.",
-            "Schema node with name listwithcontainer doesn't exist.",
-            "Duplicate entry with name rootlist."
-    };
-
-    private static final String[] EXPECTED = {
-            "Entry Node is list.",
-            "Entry Node is rootlist.",
-            "Entry Node is listwithoutcontainer.",
-            "Entry Node is invalidinterval.",
-            "Exit Node is invalidinterval.",
-            "Exit Node is listwithoutcontainer.",
-            "Exit Node is rootlist.",
-            "Exit Node is list."
-    };
-
-    List<String> keysValueList = new ArrayList<>();
-
-    /**
-     * Creates and validates rootlist module with listwithoutcontainer node.
-     */
-    @Test
-    public void listwithoutcontainerTest() throws YdtException {
-        YangRequestWorkBench ydtBuilder = listWithoutContainerYdt();
-        validateTree(ydtBuilder);
-        // walker test
-        walkINTree(ydtBuilder, EXPECTED);
-    }
-
-    /**
-     * Creates and validates rootlist module with listwithcontainer node
-     * using addMultiInstanceChild interface for adding multi instance node.
-     */
-    @Test
-    public void listwithcontainerTest() throws YdtException {
-        YangRequestWorkBench ydtBuilder = listWithContainerYdt();
-        validateListwithcontainerTree(ydtBuilder);
-    }
-
-    /**
-     * Creates and validates rootlist module with listwithcontainer
-     * node using addChild interface for adding multi instance node.
-     */
-    @Test
-    public void listwithcontainer1Test() throws YdtException {
-        YangRequestWorkBench ydtBuilder = listWithContainer1Ydt();
-        validateListwithcontainerTree(ydtBuilder);
-    }
-
-    /**
-     * Creates and validates rootlist module with multiple instances of
-     * listwithcontainer node using addMultiInstanceChild interface for adding
-     * multi instance node.
-     */
-    @Test
-    public void listwithcontainer2Test() throws YdtException {
-        YangRequestWorkBench ydtBuilder = listWithContainer2Ydt();
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        // assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, "list", null);
-
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "rootlist", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "listwithoutcontainer", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, INV, "12");
-    }
-
-    /**
-     * Validates the given list with container built ydt.
-     */
-    private void validateListwithcontainerTree(
-            YangRequestWorkBench ydtBuilder) {
-
-        valueSet.add("1");
-        valueSet.add("2");
-        // assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, "list", null);
-
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "rootlist", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, LWC, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "invalid", "12");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "invalid1", "12");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafListContents(ydtNode, INV, valueSet);
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "interface", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, INV, "12");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "invalid", "121");
-    }
-
-    /**
-     * Tests the negative error scenario when application name for ydt is
-     * invalid.
-     */
-    @Test
-    public void negative1Test() {
-        thrown.expect(IllegalArgumentException.class);
-        thrown.expectMessage(ERROR[5]);
-        getYdtBuilder("list", "invalid", "ydt.invalid", MERGE);
-    }
-
-    /**
-     * Tests the negative error scenario when list node is not having all
-     * key elements.
-     */
-    @Test
-    public void negative2Test() throws YdtException {
-
-        YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS);
-        ydtBuilder.addChild(LWC, LISTNS);
-        ydtBuilder.addLeaf("invalid", LISTNS, "12");
-        ydtBuilder.traverseToParent();
-
-        traversToParentErrorMsgValidator(ydtBuilder, ERROR[0]);
-    }
-
-    /**
-     * Tests the negative error scenario when duplicate entry of list node
-     * is created.
-     */
-    @Test
-    public void negative3Test() throws YdtException {
-        YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS);
-        ydtBuilder.addChild(LWC, LISTNS);
-        ydtBuilder.addLeaf("invalid", LISTNS, "12");
-        ydtBuilder.traverseToParent();
-        leafErrorMsgValidator(ydtBuilder, "invalid", "12", ERROR[1]);
-    }
-
-    /**
-     * Tests the negative error scenario when key elements of list node
-     * are not unique.
-     */
-    @Test
-    public void negative4Test() throws YdtException {
-        YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS);
-        ydtBuilder.addChild(LWC, LISTNS);
-        ydtBuilder.addLeaf("invalid", LISTNS, "12");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("invalid1", LISTNS, "12");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(LWC, LISTNS);
-        ydtBuilder.addLeaf("invalid", LISTNS, "12");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("invalid1", LISTNS, "12");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        traversToParentErrorMsgValidator(ydtBuilder, ERROR[2]);
-    }
-
-    /**
-     * Tests the negative error scenario when all key elements of list node
-     * are not supplied.
-     */
-    @Test
-    public void negative5Test() throws YdtException {
-        keysValueList.clear();
-        keysValueList.add("1");
-        keysValueList.add("2");
-        keysValueList.add("2");
-        YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS);
-        listNodeErrorMsgValidator(ydtBuilder, keysValueList, ERROR[4]);
-
-        keysValueList.clear();
-        keysValueList.add("1");
-        ydtBuilder = getTestYdtBuilder(LISTNS);
-        listNodeErrorMsgValidator(ydtBuilder, keysValueList, ERROR[3]);
-    }
-
-    /**
-     * Tests the negative error scenario when instances of a list node are
-     * created above the allowed limit.
-     */
-    @Test
-    public void negative6Test() throws YdtException {
-        keysValueList.clear();
-        keysValueList.add("1");
-        keysValueList.add("1");
-        YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS);
-        ydtBuilder.addMultiInstanceChild(LWC, LISTNS, keysValueList, null);
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(LWC, LISTNS);
-        ydtBuilder.addLeaf("invalid", LISTNS, "12");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("invalid1", LISTNS, "121");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(LWC, LISTNS);
-        ydtBuilder.addLeaf("invalid", LISTNS, "12");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("invalid1", LISTNS, "1211");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(LWC, LISTNS);
-        ydtBuilder.addLeaf("invalid", LISTNS, "12");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("invalid1", LISTNS, "21");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        traversToParentErrorMsgValidator(ydtBuilder, ERROR[6]);
-    }
-
-    /**
-     * Tests the negative error scenario when list node is not having all
-     * key elements.
-     */
-    @Test
-    public void negative7Test() throws YdtException {
-        YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS);
-        ydtBuilder.addChild(LWC, LISTNS);
-        traversToParentErrorMsgValidator(ydtBuilder, ERROR[0]);
-    }
-
-    /**
-     * Tests the negative error scenario when duplicate key entry is created
-     * inside leaf-list node.
-     */
-    @Test
-    public void negative8Test() throws YdtException {
-        YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS);
-        ydtBuilder.addChild(LWC, LISTNS);
-        ydtBuilder.addLeaf("invalid", LISTNS, "12");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("invalid1", LISTNS, "12");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf(INV, LISTNS, "12");
-        ydtBuilder.traverseToParent();
-        leafErrorMsgValidator(ydtBuilder, INV, "12", ERROR[7]);
-    }
-
-    //TODO negative scenario will be handled later
-//    /**
-//     * Tests the negative error scenario when string is passed for uint16 type
-//     * leaf node.
-//     */
-//    @Test
-//    public void negative9Test() throws YdtException {
-//        YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS);
-//        ydtBuilder.addChild(LWC, LISTNS);
-//        ydtBuilder.addLeaf("invalid", LISTNS, "12");
-//        ydtBuilder.traverseToParent();
-//        ydtBuilder.addLeaf("invalid1", LISTNS, "12");
-//        ydtBuilder.traverseToParent();
-//        leafErrorMsgValidator(ydtBuilder, INV, "string", ERROR[8]);
-//    }
-//
-//    /**
-//     * Tests the negative error scenario when duplicate key entry created
-//     * inside a leaf-list node.
-//     */
-//    @Test
-//    public void negative10Test() throws YdtException {
-//        valueSet.clear();
-//        valueSet.add("1");
-//        valueSet.add("2");
-//        valueSet.add("12");
-//        YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS);
-//        ydtBuilder.addChild(LWC, LISTNS);
-//        ydtBuilder.addLeaf("invalid", LISTNS, "12");
-//        ydtBuilder.traverseToParent();
-//        ydtBuilder.addLeaf("invalid1", LISTNS, "12");
-//        ydtBuilder.traverseToParent();
-//        ydtBuilder.addLeaf(INV, LISTNS, "12");
-//        ydtBuilder.traverseToParent();
-//        thrown.expect(IllegalArgumentException.class);
-//        thrown.expectMessage(ERROR[7]);
-//        ydtBuilder.addLeaf(INV, LISTNS, valueSet);
-//    }
-
-//    /**
-//     * Tests the negative error scenario when string is passed for uint16 type
-//     * key entry inside a leaf-list node.
-//     */
-//    @Test
-//    public void negative11Test() throws YdtException {
-//        valueSet.clear();
-//        valueSet.add("string");
-//        YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS);
-//        ydtBuilder.addChild(LWC, LISTNS);
-//        ydtBuilder.addLeaf("invalid", LISTNS, "12");
-//        ydtBuilder.traverseToParent();
-//        ydtBuilder.addLeaf("invalid1", LISTNS, "12");
-//        ydtBuilder.traverseToParent();
-//        ydtBuilder.addLeaf(INV, LISTNS, "12");
-//        ydtBuilder.traverseToParent();
-//        thrown.expect(DataTypeException.class);
-//        thrown.expectMessage(ERROR[8]);
-//        ydtBuilder.addLeaf(INV, LISTNS, valueSet);
-//    }
-
-    /**
-     * Tests the negative error scenario when list node addition requested
-     * with single instance request type.
-     */
-    @Test
-    public void negative12Test() {
-        YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS);
-        thrown.expect(IllegalArgumentException.class);
-        thrown.expectMessage(ERROR[9]);
-        ydtBuilder.addChild(LWC, LISTNS, SINGLE_INSTANCE_NODE, MERGE);
-    }
-
-    /**
-     * Tests the negative error scenario when application with requested
-     * name is already part of tree.
-     */
-    @Test
-    public void negative13Test() {
-        YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS);
-        ydtBuilder.traverseToParent();
-        thrown.expect(IllegalArgumentException.class);
-        thrown.expectMessage(ERROR[10]);
-        ydtBuilder.addChild("rootlist", LISTNS, MERGE);
-    }
-
-    /**
-     * Validate the error message obtained by adding multi instance node in
-     * current context against the given error string.
-     *
-     * @param bldr  ydt builder
-     * @param list  list of key values
-     * @param error error string
-     */
-    private void listNodeErrorMsgValidator(YangRequestWorkBench bldr,
-                                           List<String> list, String error) {
-        /*
-         * This try catch is explicitly written to use as utility in other
-         * test cases.
-         */
-        boolean isExpOccurred = false;
-        try {
-            bldr.addMultiInstanceChild(LWC, LISTNS, list, null);
-        } catch (IllegalArgumentException e) {
-            isExpOccurred = true;
-            assertEquals(e.getMessage(), error);
-        }
-        assertEquals(E_LIST + LWC, isExpOccurred, true);
-    }
-
-    /**
-     * Validate the error message obtained by traversing back to parent of
-     * current context against the given error string.
-     *
-     * @param ydtBuilder ydt builder
-     * @param error      error string
-     */
-    private void traversToParentErrorMsgValidator(
-            YangRequestWorkBench ydtBuilder, String error) {
-        /*
-         * This try catch is explicitly written to use as utility in other
-         * test cases.
-         */
-        boolean isExpOccurred = false;
-        try {
-            ydtBuilder.traverseToParent();
-        } catch (IllegalStateException e) {
-            isExpOccurred = true;
-            assertEquals(e.getMessage(), error);
-        }
-        assertEquals(E_TOPARENT, isExpOccurred, true);
-    }
-
-    /**
-     * Validate the error message obtained by adding leaf node in
-     * current context against the given error string.
-     *
-     * @param bldr  ydt builder
-     * @param name  name of the leaf
-     * @param val   leaf value
-     * @param error error string
-     */
-    private void leafErrorMsgValidator(
-            YangRequestWorkBench bldr, String name, String val, String error) {
-        /*
-         * This try catch is explicitly written to use as utility in other
-         * test cases.
-         */
-        boolean isExpOccurred = false;
-        try {
-            bldr.addLeaf(name, LISTNS, val);
-        } catch (IllegalArgumentException e) {
-            isExpOccurred = true;
-            assertEquals(e.getMessage(), error);
-        }
-        assertEquals(E_LEAF + name, isExpOccurred, true);
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/LogisticsManagerTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/LogisticsManagerTest.java
deleted file mode 100644
index e56a128..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/LogisticsManagerTest.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import static org.onosproject.yms.app.ydt.YdtTestUtils.logisticsManagerYdt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafListContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-public class LogisticsManagerTest {
-
-    // Logger list is used for walker testing.
-    private final List<String> logger = new ArrayList<>();
-
-    private Set<String> valueSet = new HashSet();
-
-    private static final String[] EXPECTED = {
-            "Entry Node is logisticsmanager.",
-            "Entry Node is customssupervisor.",
-            "Entry Node is supervisor.",
-            "Exit Node is supervisor.",
-            "Exit Node is customssupervisor.",
-            "Entry Node is merchandisersupervisor.",
-            "Entry Node is supervisor.",
-            "Exit Node is supervisor.",
-            "Exit Node is merchandisersupervisor.",
-            "Entry Node is materialsupervisor.",
-            "Entry Node is supervisor.",
-            "Entry Node is name.",
-            "Exit Node is name.",
-            "Entry Node is departmentId.",
-            "Exit Node is departmentId.",
-            "Exit Node is supervisor.",
-            "Entry Node is supervisor.",
-            "Entry Node is name.",
-            "Exit Node is name.",
-            "Entry Node is departmentId.",
-            "Exit Node is departmentId.",
-            "Exit Node is supervisor.",
-            "Exit Node is materialsupervisor.",
-            "Entry Node is purchasingsupervisor.",
-            "Entry Node is supervisor.",
-            "Entry Node is purchasing-specialist.",
-            "Exit Node is purchasing-specialist.",
-            "Entry Node is support.",
-            "Exit Node is support.",
-            "Exit Node is supervisor.",
-            "Exit Node is purchasingsupervisor.",
-            "Entry Node is warehousesupervisor.",
-            "Entry Node is supervisor.",
-            "Exit Node is supervisor.",
-            "Exit Node is warehousesupervisor.",
-            "Entry Node is tradingsupervisor.",
-            "Entry Node is supervisor.",
-            "Exit Node is supervisor.",
-            "Exit Node is tradingsupervisor.",
-            "Entry Node is employeeid.",
-            "Entry Node is employeeid.",
-            "Exit Node is employeeid.",
-            "Exit Node is employeeid.",
-            "Exit Node is logisticsmanager."
-    };
-
-    /**
-     * Creates and validates logistics manager ydt.
-     */
-    @Test
-    public void logisticsManagerTest() {
-        YangRequestWorkBench ydtBuilder = logisticsManagerYdt();
-        validateTree(ydtBuilder);
-        // walker test
-        walkINTree(ydtBuilder, EXPECTED);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-        valueSet.add("1");
-        valueSet.add("2");
-        valueSet.add("3");
-        valueSet.add("4");
-        valueSet.add("5");
-        // assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, "logisticsmanager", null);
-
-        ydtNode = ydtNode.getFirstChild();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, "customssupervisor", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "supervisor", "abc");
-
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "merchandisersupervisor", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "supervisor", "abc");
-
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "materialsupervisor", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "supervisor", MERGE);
-
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "name", "abc");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "departmentId", "xyz");
-
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "supervisor", MERGE);
-
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "name", "ab");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "departmentId", "xy");
-
-        ydtNode = ydtNode.getParent().getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "purchasingsupervisor", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "supervisor", MERGE);
-
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "purchasing-specialist", "abc");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "support", "xyz");
-
-        ydtNode = ydtNode.getParent().getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "warehousesupervisor", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafListContents(ydtNode, "supervisor", valueSet);
-
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "tradingsupervisor", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "supervisor", "abc");
-
-        ydtNode = ydtNode.getParent();
-
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "employeeid", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafListContents(ydtNode, "employeeid", valueSet);
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/RpcTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/RpcTest.java
deleted file mode 100644
index 68894aa..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/RpcTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.onosproject.yms.app.ydt.YdtTestUtils.helloOnos;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-public class RpcTest {
-
-    // Logger list is used for walker testing.
-    private final List<String> logger = new ArrayList<>();
-
-    private static final String[] EXPECTED = {
-            "Entry Node is Hello-ONOS.",
-            "Entry Node is Hello_ONOS.",
-            "Entry Node is hello-world.",
-            "Entry Node is input.",
-            "Entry Node is name.",
-            "Exit Node is name.",
-            "Entry Node is surName.",
-            "Exit Node is surName.",
-            "Entry Node is stringList.",
-            "Entry Node is string1.",
-            "Exit Node is string1.",
-            "Entry Node is string2.",
-            "Exit Node is string2.",
-            "Exit Node is stringList.",
-            "Exit Node is input.",
-            "Exit Node is hello-world.",
-            "Exit Node is Hello_ONOS.",
-            "Exit Node is Hello-ONOS."
-    };
-
-    /**
-     * Creates and validates hello onos ydt.
-     */
-    @Test
-    public void rpc1Test() {
-        YangRequestWorkBench ydtBuilder = helloOnos();
-        validateTree(ydtBuilder);
-        // walker test
-        walkINTree(ydtBuilder, EXPECTED);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        // assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, "Hello-ONOS", null);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "Hello_ONOS", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "hello-world", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "input", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "name", "onos");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "surName", "yang");
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "stringList", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "string1", "ON");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "string2", "LAB");
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtBitTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtBitTest.java
deleted file mode 100644
index ac60f21..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtBitTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-
-import static org.onosproject.yms.app.ydt.YdtTestUtils.bitYdt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-public class YdtBitTest {
-
-    /*
-        BINARY
-
-        Positive scenario
-        input with position 0
-        input with position 1
-        input with position 2
-    */
-
-    /**
-     * Creates and validates bit ydt covering different positive scenario.
-     */
-    @Test
-    public void positiveTest() {
-        YangRequestWorkBench ydtBuilder = bitYdt();
-        validateTree(ydtBuilder);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        // assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, "builtInType", null);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "bit", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "bitList", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "bit", "disable-nagle");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "bitList", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "bit", "auto-sense-speed");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "bitList", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "bit", "ten-Mb-only");
-    }
-
-    //TODO negative scenario will be handled later
-//    /*
-//        Negative scenario
-//
-//        input with position 0
-//        input with position 1
-//        input with position 2
-//    */
-//
-//    /**
-//     * Tests all the negative scenario's for bit data type.
-//     */
-//    @Test
-//    public void negativeTest() {
-//        validateErrMsg("bit", BITNS, "0", BIT, "bitList");
-//        validateErrMsg("bit", BITNS, "default", BIT, "bitList");
-//        validateErrMsg("bit", BITNS, "1", BIT, "bitList");
-//        validateErrMsg("bit", BITNS, "", BIT, "bitList");
-//    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtBooleanTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtBooleanTest.java
deleted file mode 100644
index 2d38f78..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtBooleanTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-
-import static org.onosproject.yms.app.ydt.YdtTestUtils.booleanYdt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-public class YdtBooleanTest {
-
-    /*
-        BOOLEAN
-        Positive scenario
-        input with in "booleanList" and false
-    */
-
-    /**
-     * Creates and validates boolean ydt covering different positive scenario.
-     */
-    @Test
-    public void positiveTest() {
-        YangRequestWorkBench ydtBuilder = booleanYdt();
-        validateTree(ydtBuilder);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        // assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, "builtInType", null);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "bool", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "booleanList", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "boolean", "true");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "booleanList", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "boolean", "false");
-    }
-
-    //TODO negative scenario will be handled later
-//    /*
-//        Negative scenario
-//
-//        input with in non zero value in case of "booleanList"
-//        input with zero value in case of false
-//        input with empty value in case of false
-//    */
-//
-//    /**
-//     * Tests all the negative scenario's for boolean data type.
-//     */
-//    @Test
-//    public void negativeTest() {
-//        validateErrMsg("boolean", BOOLNS, "10", BOOL, "booleanList");
-//        validateErrMsg("boolean", BOOLNS, "0", BOOL, "booleanList");
-//        validateErrMsg("boolean", BOOLNS, "", BOOL, "booleanList");
-//        validateErrMsg("boolean", BOOLNS, "-1", BOOL, "booleanList");
-//        validateErrMsg("boolean", BOOLNS, "tru", BOOL, "booleanList");
-//        validateErrMsg("boolean", BOOLNS, "boolean", BOOL, "booleanList");
-//    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtDecimal64Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtDecimal64Test.java
deleted file mode 100644
index 69fffb0..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtDecimal64Test.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-
-import static org.onosproject.yms.app.ydt.YdtTestConstants.A;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.B;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.C;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.E;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.F;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.G;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.H;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MINIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MRV;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.NIWMF;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.NWF;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.PIWMF;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.PWF;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.decimal64Ydt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-public class YdtDecimal64Test {
-
-    @Rule
-    public ExpectedException thrown = ExpectedException.none();
-
-    /*
-
-    Positive scenario
-
-    input at boundary for decimal64 with fraction 2
-        i. min value
-        ii. max value
-
-    input at boundry for decimal64 with minimum fraction
-        i. min value
-        ii. mid value
-        iii. max value
-
-    input at boundry for decimal64 with maximum fraction
-        i. min value
-        ii. mid value
-        iii. max value
-
-    input with in range
-        if range is 10 to 100 for integer
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-    input with multi interval range
-        if range is 10..40 | 50..100 for decimal64
-            i.1. input 11
-            i.2. input 10
-            i.3. input 40
-            i.4. input 50
-            i.5. input 55
-            i.6. input 100
-
-        if range is "min .. 3.14 | 10 | 20..max" for decimal64
-            i.1. input min
-            i.2. input 2.505
-            i.3. input 3.14
-            i.4. input 10
-            i.5. input 20
-            i.6. input 92233720368547757
-            i.7. input 92233720368547758.07
-
-    */
-
-    /**
-     * Creates and validates decimal64 ydt covering different positive scenario.
-     */
-    @Test
-    public void positiveTest() throws YdtException {
-        YangRequestWorkBench ydtBuilder = decimal64Ydt();
-        validateTree(ydtBuilder);
-
-        //TODO need to be handled later
-//        YangRequestWorkBench sbiYdt = validateYangObject(
-//                ydtBuilder, "builtInType", "ydt.decimal64");
-//        validateTree(sbiYdt);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        // assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, TYPE, null);
-
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "decimal64", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "negInt", C);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "posInt", A);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, NIWMF, F);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, PIWMF, G);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, NWF, H);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, PWF, E);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MIDIWR, "11");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MINIWR, "10");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MAXIWR, "100");
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "decimal", "11");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "decimal", "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "decimal", "40");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "decimal", "50");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "decimal", "55");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "decimal", "100");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revDecimal", C);
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revDecimal", "2.505");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revDecimal", "3.14");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revDecimal", "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revDecimal", "20");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revDecimal", B);
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revDecimal", A);
-    }
-
-    //TODO negative scenario will be handled later
-    /*
-        Negative scenario
-
-        input with position 0
-        input with position 1
-        input with position 2
-    */
-
-//    /**
-//     * Tests all the negative scenario's for bit data type.
-//     */
-//    @Test
-//    public void negativeTest() {
-//        thrown.expect(IllegalArgumentException.class);
-//        thrown.expectMessage(E_D64);
-//        YangRequestWorkBench ydtBuilder;
-//        ydtBuilder = getYdtBuilder("builtInType", "decimal64", "ydt.decimal64",
-//                                   MERGE);
-//        ydtBuilder.addLeaf("l1", null, "-9.1999999999e17");
-//        ydtBuilder.traverseToParent();
-//    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtEmptyTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtEmptyTest.java
deleted file mode 100644
index e7ca320..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtEmptyTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-
-import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.emptyTypeYdt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-public class YdtEmptyTest {
-
-    /*
-        EMPTY
-        Positive scenario
-        input with in empty.
-    */
-
-    /**
-     * Creates and validates empty ydt covering different positive scenario.
-     */
-    @Test
-    public void positiveTest() throws YdtException {
-        YangRequestWorkBench ydtBuilder = emptyTypeYdt();
-        validateTree(ydtBuilder);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        // assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, TYPE, null);
-
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "emptydata", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "emptyList", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "empty", "");
-    }
-
-    //TODO negative scenario will be handled later
-//    /*
-//        Negative scenario
-//
-//        input with " "
-//        input with "tab"
-//        input with """"
-//    */
-//
-//    /**
-//     * Tests all the negative scenario's for empty data type.
-//     */
-//    @Test
-//    public void negativeTest() throws YdtException {
-//        validateErrMsg("empty", EMPTYNS, " ", EMPTY, "emptyList");
-//        validateErrMsg("empty", EMPTYNS, "    ", EMPTY, "emptyList");
-//        validateErrMsg("empty", EMPTYNS, " ", EMPTY, "emptyList");
-//    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtEnumTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtEnumTest.java
deleted file mode 100644
index 3c71ede..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtEnumTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-
-import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.enumYdt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-public class YdtEnumTest {
-
-/*
-    ENUM
-
-    Positive scenario
-
-        input with in enum
-        input with "ten"
-        input with "hundred"
-        input with "thousand"
-*/
-
-    /**
-     * Creates and validates enum ydt covering different positive scenario.
-     */
-    @Test
-    public void positiveTest() throws YdtException {
-        YangRequestWorkBench ydtBuilder = enumYdt();
-        validateTree(ydtBuilder);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        // assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, TYPE, null);
-
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "enumtest", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "enumList", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "enumleaf", "ten");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "enumList", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "enumleaf", "hundred");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, "enumList", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "enumleaf", "thousand");
-    }
-
-    //TODO negative scenario will be handled later
-//    /*
-//        Negative scenario
-//
-//        input with "10"
-//        input with "thousands"
-//    */
-//
-//    /**
-//     * Tests all the negative scenario's for enum data type.
-//     */
-//    @Test
-//    public void negativeTest() throws YdtException {
-//        validateErrMsg("enumleaf", ENUMNS, "10", ENUM, "enumList");
-//        validateErrMsg("enumleaf", ENUMNS, "thousands", ENUM, "enumList");
-//        validateErrMsg("enumleaf", ENUMNS, "enumeration", ENUM, "enumList");
-//    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger16Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger16Test.java
deleted file mode 100644
index ceb5e89..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger16Test.java
+++ /dev/null
@@ -1,418 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDUIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MINIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MINUIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MRV;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.RUI;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.integer16Ydt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-public class YdtInteger16Test {
-
-    /*
-    Positive scenario
-
-    input at boundry for integer
-        i. min value
-        ii. max value
-
-    input at boundry for uinteger
-        i. min value
-        ii. max value
-
-    input with in range
-        if range is 10 to 100 for integer
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-        if range is 10 to 100 for uinteger
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-    input with multi interval range
-        if range is 10..40 | 50..100 for integer
-            i.1. input 11
-            i.2. input 10
-            i.3. input 40
-            i.4. input 50
-            i.5. input 55
-            i.6. input 100
-
-        if range is 10..40 | 50..100 for uinteger
-            i.1. input 11
-            i.2. input 10
-            i.3. input 40
-            i.4. input 50
-            i.5. input 55
-            i.6. input 100
-
-        if range is "min .. 2 | 10 | 20..max" for integer
-            i.1. input -32768
-            i.2. input 1
-            i.3. input 2
-            i.4. input 10
-            i.5. input 20
-            i.6. input 100
-            i.7. input 32767
-
-         if range is "min .. 2 | 10 | 20..max" for uInteger
-            i.1. input 0
-            i.2. input 1
-            i.3. input 2
-            i.4. input 10
-            i.5. input 20
-            i.6. input 100
-            i.7. input 65535
-    */
-
-    /**
-     * Creates and validates integer16 ydt covering different positive scenario.
-     */
-    @Test
-    public void positiveTest() throws YdtException {
-        YangRequestWorkBench ydtBuilder = integer16Ydt();
-        validateTree(ydtBuilder);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        // assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, TYPE, null);
-
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "integer16", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "negInt", "-32768");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "posInt", "32767");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "minUInt", "0");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "maxUInt", "65535");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MIDIWR, "11");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MINIWR, "10");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MAXIWR, "100");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MIDUIWR, "11");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MINUIWR, "10");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MAXUIWR, "100");
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "11");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "40");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "50");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "55");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "100");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "11");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "40");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "50");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "55");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "100");
-
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "-32768");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "1");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-
-        validate1Tree(ydtNode);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validate1Tree(YdtNode ydtNode) {
-
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "2");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "20");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "100");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "32767");
-
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "0");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "1");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "2");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "20");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "100");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "65535");
-    }
-
-    //TODO negative scenario will be handled later
-    /*
-        Negative scenario
-
-        wrong type input
-            i. input string instead of integer
-            ii. input string instead of uinteger
-
-    input out of range
-        i. input for int 8 range -32768 to 32767
-        i.1. input -32769
-        i.2. input 32768
-
-        ii. input for uint 8 range 0 to 65535
-        ii.1. input -32769
-        ii.2. input 65536
-
-        input out of range parameter
-            if range is 10 to 100 for int
-                i.1. input 9
-                i.2. input 101
-
-            if range is 10 to 100 for uInt
-                i.1. input 9
-                i.2. input 101
-
-        input with multi interval range
-        if range is 10..40 | 50..100 for integer
-            i.1. input 9
-            i.2. input 41
-            i.3. input 49
-            i.4. input 101
-
-        if range is 10..40 | 50..100 for uinteger
-            i.1. input 9
-            i.2. input 41
-            i.3. input 49
-            i.4. input 101
-
-        input with multi interval range
-        if range is min ..  | 10 | 20..max for integer
-            i.1. input -32769
-            i.2. input 4
-            i.3. input 9
-            i.4. input 11
-            i.5. input 19
-            i.6. input 32768
-
-        if range is min .. 3 | 10 | 20..max for uinteger
-            i.1. input -32769
-            i.2. input 4
-            i.3. input 9
-            i.4. input 11
-            i.5. input 19
-            i.6. input 65536
-
-    */
-
-    /**
-     * Tests all the minimum and maximum value's negative scenario's for
-     * signed integer16 data type.
-     */
-//    @Test
-//    public void negative1Test() throws YdtException {
-//        validateErrMsg("posInt", INT16NS, "integer", SINT16, null);
-//        validateErrMsg("posInt", INT16NS, "127.0", SINT16, null);
-//        validateErrMsg("negInt", INT16NS, "-32769", SINT16, null);
-//        validateErrMsg("posInt", INT16NS, "32768", SINT16, null);
-//        validateErrMsg(MINIWR, INT16NS, "9", CAPSINT16, null);
-//        validateErrMsg(MAXIWR, INT16NS, "101", CAPSINT16, null);
-//    }
-//
-//    /**
-//     * Tests all the minimum and maximum value's negative scenario's for
-//     * unsigned integer16 data type.
-//     */
-//    @Test
-//    public void negative2Test() throws YdtException {
-//        validateErrMsg("maxUInt", INT16NS, "integer", SUINT16, null);
-//        validateErrMsg("maxUInt", INT16NS, "127.0", SUINT16, null);
-//        validateErrMsg("minUInt", INT16NS, "-32769", MINVALUE, null);
-//        validateErrMsg("maxUInt", INT16NS, "65536", MAXUINT16, null);
-//        validateErrMsg(MINUIWR, INT16NS, "9", CAPSUINT16, null);
-//        validateErrMsg(MAXUIWR, INT16NS, "101", CAPSUINT16, null);
-//    }
-//
-//    /**
-//     * Tests all possible negative scenario's for signed integer16 data type
-//     * with range "10..40 | 50..100".
-//     */
-//    @Test
-//    public void negative3Test() throws YdtException {
-//        validateErrMsg("integer", INT16NS, "9", CAPSINT16, MRV);
-//        validateErrMsg("integer", INT16NS, "41", CAPSINT16, MRV);
-//        validateErrMsg("integer", INT16NS, "49", CAPSINT16, MRV);
-//        validateErrMsg("integer", INT16NS, "101", CAPSINT16, MRV);
-//    }
-//
-//    /**
-//     * Tests all possible negative scenario's for unsigned integer16 data type
-//     * with range "10..40 | 50..100".
-//     */
-//    @Test
-//    public void negative4Test() throws YdtException {
-//        validateErrMsg("UnInteger", INT16NS, "9", CAPSUINT16, MRV);
-//        validateErrMsg("UnInteger", INT16NS, "41", CAPSUINT16, MRV);
-//        validateErrMsg("UnInteger", INT16NS, "49", CAPSUINT16, MRV);
-//        validateErrMsg("UnInteger", INT16NS, "101", CAPSUINT16, MRV);
-//    }
-//
-//    /**
-//     * Tests all possible negative scenario's for signed integer16 data type
-//     * with range "min .. 2 | 10 | 20..max".
-//     */
-//    @Test
-//    public void negative5Test() throws YdtException {
-//        // multi range validation
-//        validateErrMsg("revInteger", INT16NS, "-32769", SINT16, MRV);
-//        validateErrMsg("revInteger", INT16NS, "19", CAPSINT16, MRV);
-//        validateErrMsg("revInteger", INT16NS, "4", CAPSINT16, MRV);
-//        validateErrMsg("revInteger", INT16NS, "32768", SINT16, MRV);
-//        validateErrMsg("revInteger", INT16NS, "9", CAPSINT16, MRV);
-//        validateErrMsg("revInteger", INT16NS, "11", CAPSINT16, MRV);
-//    }
-//
-//    /**
-//     * Tests all possible negative scenario's for unsigned integer16 data type
-//     * with range "min .. 2 | 10 | 20..max".
-//     */
-//    @Test
-//    public void negative6Test() throws YdtException {
-//        // multi range validation
-//        validateErrMsg(RUI, INT16NS, "-32769", MINVALUE, MRV);
-//        validateErrMsg(RUI, INT16NS, "4", CAPSUINT16, MRV);
-//        validateErrMsg(RUI, INT16NS, "9", CAPSUINT16, MRV);
-//        validateErrMsg(RUI, INT16NS, "11", CAPSUINT16, MRV);
-//        validateErrMsg(RUI, INT16NS, "19", CAPSUINT16, MRV);
-//        validateErrMsg(RUI, INT16NS, "65536", MAXUINT16, MRV);
-//    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger32Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger32Test.java
deleted file mode 100644
index 20c3c37..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger32Test.java
+++ /dev/null
@@ -1,419 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT32;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDUIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MINIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MINUIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MINVALUE;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MRV;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.RUI;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.integer32Ydt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-public class YdtInteger32Test {
-
-    /*
-    Positive scenario
-
-    input at boundry for integer
-        i. min value
-        ii. max value
-
-    input at boundry for uinteger
-        i. min value
-        ii. max value
-
-    input with in range
-        if range is 10 to 100 for integer
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-        if range is 10 to 100 for uinteger
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-    input with multi interval range
-        if range is 10..40 | 50..100 for integer
-            i.1. input 11
-            i.2. input 10
-            i.3. input 40
-            i.4. input 50
-            i.5. input 55
-            i.6. input 100
-
-        if range is 10..40 | 50..100 for uinteger
-            i.1. input 11
-            i.2. input 10
-            i.3. input 40
-            i.4. input 50
-            i.5. input 55
-            i.6. input 100
-
-        if range is "min .. 2 | 10 | 20..max" for integer
-            i.1. input -2147483648
-            i.2. input 1
-            i.3. input 2
-            i.4. input 10
-            i.5. input 20
-            i.6. input 100
-            i.7. input 2147483647
-
-         if range is "min .. 2 | 10 | 20..max" for uInteger
-            i.1. input 0
-            i.2. input 1
-            i.3. input 2
-            i.4. input 10
-            i.5. input 20
-            i.6. input 100
-            i.7. input 4294967295
-    */
-
-    /**
-     * Creates and validates integer32 ydt covering different positive scenario.
-     */
-    @Test
-    public void positiveTest() throws YdtException {
-        YangRequestWorkBench ydtBuilder = integer32Ydt();
-        validateTree(ydtBuilder);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        // assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, TYPE, null);
-
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "integer32", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "negInt", "-2147483648");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "posInt", "2147483647");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "minUInt", MINVALUE);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "maxUInt", MAXUINT32);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MIDIWR, "11");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MINIWR, "10");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MAXIWR, "100");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MIDUIWR, "11");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MINUIWR, "10");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MAXUIWR, "100");
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "11");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "40");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "50");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "55");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "100");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "11");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "40");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "50");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "55");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "100");
-
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "-2147483648");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "1");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "2");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "20");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-
-        validate1Tree(ydtNode);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validate1Tree(YdtNode ydtNode) {
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "100");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "2147483647");
-
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, MINVALUE);
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "1");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "2");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "20");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "100");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, MAXUINT32);
-    }
-
-    //TODO negative scenario will be handled later
-    /*
-        Negative scenario
-
-        wrong type input
-            i. input string instead of integer
-            ii. input string instead of uinteger
-
-        input out of range
-            i. input for int 8 range -2147483648 to 2147483647
-            i.1. input -2147483649
-            i.2. input 2147483648
-
-            ii. input for uint 8 range 0 to 4294967295
-            ii.1. input -2147483649
-            ii.2. input 4294967296
-
-            input out of range parameter
-                if range is 10 to 100 for int
-                    i.1. input 9
-                    i.2. input 101
-
-                if range is 10 to 100 for uInt
-                    i.1. input 9
-                    i.2. input 101
-
-            input with multi interval range
-            if range is 10..40 | 50..100 for integer
-                i.1. input 9
-                i.2. input 41
-                i.3. input 49
-                i.4. input 101
-
-            if range is 10..40 | 50..100 for uinteger
-                i.1. input 9
-                i.2. input 41
-                i.3. input 49
-                i.4. input 101
-
-            input with multi interval range
-            if range is min ..  | 10 | 20..max for integer
-                i.1. input -2147483649
-                i.2. input 4
-                i.3. input 9
-                i.4. input 11
-                i.5. input 19
-                i.6. input 256
-
-            if range is min .. 3 | 10 | 20..max for uinteger
-                i.1. input -2147483649
-                i.2. input 4
-                i.3. input 9
-                i.4. input 11
-                i.5. input 19
-                i.6. input 4294967296
-
-        */
-
-    /**
-     * Tests all the minimum and maximum value's negative scenario's for
-     * signed integer32 data type.
-     */
-//    @Test
-//    public void negative1Test() throws YdtException {
-//        validateErrMsg("posInt", INT32NS, "integer", SINT32, null);
-//        validateErrMsg("posInt", INT32NS, "127.0", SINT32, null);
-//        validateErrMsg("negInt", INT32NS, "-2147483649", SINT32, null);
-//        validateErrMsg("posInt", INT32NS, "2147483648", SINT32, null);
-//        validateErrMsg(MINIWR, INT32NS, "9", CAPSINT32, null);
-//        validateErrMsg(MAXIWR, INT32NS, "101", CAPSINT32, null);
-//    }
-//
-//    /**
-//     * Tests all the minimum and maximum value's negative scenario's for
-//     * unsigned integer32 data type.
-//     */
-//    @Test
-//    public void negative2Test() throws YdtException {
-//        validateErrMsg("maxUInt", INT32NS, "integer", SUINT32, null);
-//        validateErrMsg("maxUInt", INT32NS, "127.0", SUINT32, null);
-//        validateErrMsg("minUInt", INT32NS, "-2147483649", MINVALUE, null);
-//        validateErrMsg("maxUInt", INT32NS, "4294967296", MAXUINT32, null);
-//        validateErrMsg(MINUIWR, INT32NS, "9", CAPSUINT32, null);
-//        validateErrMsg(MAXUIWR, INT32NS, "101", CAPSUINT32, null);
-//    }
-//
-//    /**
-//     * Tests all possible negative scenario's for signed integer32 data type
-//     * with range "10..40 | 50..100".
-//     */
-//    @Test
-//    public void negative3Test() throws YdtException {
-//        validateErrMsg("integer", INT32NS, "9", CAPSINT32, MRV);
-//        validateErrMsg("integer", INT32NS, "41", CAPSINT32, MRV);
-//        validateErrMsg("integer", INT32NS, "49", CAPSINT32, MRV);
-//        validateErrMsg("integer", INT32NS, "101", CAPSINT32, MRV);
-//    }
-//
-//    /**
-//     * Tests all possible negative scenario's for unsigned integer32 data type
-//     * with range "10..40 | 50..100".
-//     */
-//    @Test
-//    public void negative4Test() throws YdtException {
-//        validateErrMsg("UnInteger", INT32NS, "9", CAPSUINT32, MRV);
-//        validateErrMsg("UnInteger", INT32NS, "41", CAPSUINT32, MRV);
-//        validateErrMsg("UnInteger", INT32NS, "49", CAPSUINT32, MRV);
-//        validateErrMsg("UnInteger", INT32NS, "101", CAPSUINT32, MRV);
-//    }
-//
-//    /**
-//     * Tests all possible negative scenario's for signed integer32 data type
-//     * with range "min .. 2 | 10 | 20..max".
-//     */
-//    @Test
-//    public void negative5Test() throws YdtException {
-//        // Multi range validation
-//        validateErrMsg("revInteger", INT32NS, "-2147483649", SINT32, MRV);
-//        validateErrMsg("revInteger", INT32NS, "4", CAPSINT32, MRV);
-//        validateErrMsg("revInteger", INT32NS, "9", CAPSINT32, MRV);
-//        validateErrMsg("revInteger", INT32NS, "11", CAPSINT32, MRV);
-//        validateErrMsg("revInteger", INT32NS, "19", CAPSINT32, MRV);
-//        validateErrMsg("revInteger", INT32NS, "2147483648", SINT32, MRV);
-//    }
-//
-//    /**
-//     * Tests all possible negative scenario's for unsigned integer32 data type
-//     * with range "min .. 2 | 10 | 20..max".
-//     */
-//    @Test
-//    public void negative6Test() throws YdtException {
-//        // Multi range validation
-//        validateErrMsg(RUI, INT32NS, "-2147483649", MINVALUE, MRV);
-//        validateErrMsg(RUI, INT32NS, "4", CAPSUINT32, MRV);
-//        validateErrMsg(RUI, INT32NS, "9", CAPSUINT32, MRV);
-//        validateErrMsg(RUI, INT32NS, "11", CAPSUINT32, MRV);
-//        validateErrMsg(RUI, INT32NS, "19", CAPSUINT32, MRV);
-//        validateErrMsg(RUI, INT32NS, "4294967296", MAXUINT32, MRV);
-//    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger64Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger64Test.java
deleted file mode 100644
index 4805786..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger64Test.java
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-
-import static org.onosproject.yms.app.ydt.YdtTestConstants.J;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.K;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT64;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDUIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MINIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MINUIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MINVALUE;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MRV;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.RUI;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.integer64Ydt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-public class YdtInteger64Test {
-
-    /*
-
-    Positive scenario
-
-    input at boundry for integer
-        i. min value
-        ii. max value
-
-    input at boundry for uinteger
-        i. min value
-        ii. max value
-
-    input with in range
-        if range is 10 to 100 for integer
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-        if range is 10 to 100 for uinteger
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-    input with multi interval range
-        if range is 10..40 | 50..100 for integer
-            i.1. input 11
-            i.2. input 10
-            i.3. input 40
-            i.4. input 50
-            i.5. input 55
-            i.6. input 100
-
-        if range is 10..40 | 50..100 for uinteger
-            i.1. input 11
-            i.2. input 10
-            i.3. input 40
-            i.4. input 50
-            i.5. input 55
-            i.6. input 100
-
-        if range is "min .. 2 | 10 | 20..max" for integer
-            i.1. input -9223372036854775808
-            i.2. input 1
-            i.3. input 2
-            i.4. input 10
-            i.5. input 20
-            i.6. input 100
-            i.7. input 9223372036854775807
-
-         if range is "min .. 2 | 10 | 20..max" for uInteger
-            i.1. input 0
-            i.2. input 1
-            i.3. input 2
-            i.4. input 10
-            i.5. input 20
-            i.6. input 100
-            i.7. input 18446744073709551615
-    */
-
-    /**
-     * Creates and validates integer64 ydt covering different positive scenario.
-     */
-    @Test
-    public void positiveTest() throws YdtException {
-        YangRequestWorkBench ydtBuilder = integer64Ydt();
-        validateTree(ydtBuilder);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        // assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, TYPE, null);
-
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "integer64", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "negInt", K);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "posInt", J);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "minUInt", MINVALUE);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "maxUInt", MAXUINT64);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MIDIWR, "11");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MINIWR, "10");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MAXIWR, "100");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MIDUIWR, "11");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MINUIWR, "10");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MAXUIWR, "100");
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "11");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "40");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "50");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "55");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "100");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "11");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "40");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "50");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "55");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "100");
-
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", K);
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "1");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "2");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-
-        validate1Tree(ydtNode);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validate1Tree(YdtNode ydtNode) {
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "20");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "100");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", J);
-
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, MINVALUE);
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "1");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "2");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "20");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "100");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, MAXUINT64);
-    }
-
-    //TODO negative scenario will be handled later
-    /*
-        Negative scenario
-
-        wrong type input
-            i. input string instead of integer
-            ii. input string instead of uinteger
-
-        input out of range
-            i. input for int 8 range -9223372036854775808 to 9223372036854775807
-            i.1. input -9223372036854775809
-            i.2. input 9223372036854775808
-
-            ii. input for uint 8 range 0 to 18446744073709551615
-            ii.1. input -9223372036854775809
-            ii.2. input 18446744073709551616
-
-        input out of range parameter
-            if range is 10 to 100 for int
-                i.1. input 9
-                i.2. input 101
-
-            if range is 10 to 100 for uInt
-                i.1. input 9
-                i.2. input 101
-
-        input with multi interval range
-        if range is 10..40 | 50..100 for integer
-            i.1. input 9
-            i.2. input 41
-            i.3. input 49
-            i.4. input 101
-
-        if range is 10..40 | 50..100 for uinteger
-            i.1. input 9
-            i.2. input 41
-            i.3. input 49
-            i.4. input 101
-
-        input with multi interval range
-        if range is min ..  | 10 | 20..max for integer
-            i.1. input -9223372036854775809
-            i.2. input 4
-            i.3. input 9
-            i.4. input 11
-            i.5. input 19
-            i.6. input 9223372036854775808
-
-        if range is min .. 3 | 10 | 20..max for uinteger
-            i.1. input -9223372036854775809
-            i.2. input 4
-            i.3. input 9
-            i.4. input 11
-            i.5. input 19
-            i.6. input 18446744073709551616
-
-    */
-
-    /**
-     * Tests all the minimum and maximum value's negative scenario's for
-     * signed integer64 data type.
-     */
-//    @Test
-//    public void negative1Test() throws YdtException {
-//        validateErrMsg("posInt", INT64NS, "integer", SMALLINT64, null);
-//        validateErrMsg("posInt", INT64NS, "127.0", SMALLINT64, null);
-//        validateErrMsg("negInt", INT64NS, L, SMALLINT64, null);
-//        validateErrMsg("posInt", INT64NS, I, SMALLINT64, null);
-//        validateErrMsg(MINIWR, INT64NS, "9", CAPSINT64, null);
-//        validateErrMsg(MAXIWR, INT64NS, "101", CAPSINT64, null);
-//    }
-//
-//    /**
-//     * Tests all the minimum and maximum value's negative scenario's for
-//     * unsigned integer64 data type.
-//     */
-//    @Test
-//    public void negative2Test() throws YdtException {
-//        validateErrMsg("maxUInt", INT64NS, "integer", SMALLUINT64, null);
-//        validateErrMsg("maxUInt", INT64NS, "127.0", SMALLUINT64, null);
-//        validateErrMsg("minUInt", INT64NS, L, MINVALUE, null);
-//        validateErrMsg("maxUInt", INT64NS, M, MAXUINT64, null);
-//        validateErrMsg(MINUIWR, INT64NS, "9", CAPSUINT64, null);
-//        validateErrMsg(MAXUIWR, INT64NS, "101", CAPSUINT64, null);
-//    }
-//
-//    /**
-//     * Tests all possible negative scenario's for signed integer64 data type
-//     * with range "10..40 | 50..100".
-//     */
-//    @Test
-//    public void negative3Test() throws YdtException {
-//        validateErrMsg("integer", INT64NS, "9", CAPSINT64, MRV);
-//        validateErrMsg("integer", INT64NS, "41", CAPSINT64, MRV);
-//        validateErrMsg("integer", INT64NS, "49", CAPSINT64, MRV);
-//        validateErrMsg("integer", INT64NS, "101", CAPSINT64, MRV);
-//    }
-//
-//    /**
-//     * Tests all possible negative scenario's for unsigned integer64 data type
-//     * with range "10..40 | 50..100".
-//     */
-//    @Test
-//    public void negative4Test() throws YdtException {
-//        validateErrMsg("UnInteger", INT64NS, "9", CAPSUINT64, MRV);
-//        validateErrMsg("UnInteger", INT64NS, "41", CAPSUINT64, MRV);
-//        validateErrMsg("UnInteger", INT64NS, "49", CAPSUINT64, MRV);
-//        validateErrMsg("UnInteger", INT64NS, "101", CAPSUINT64, MRV);
-//    }
-//
-//    /**
-//     * Tests all possible negative scenario's for signed integer64 data type
-//     * with range "min .. 2 | 10 | 20..max".
-//     */
-//    @Test
-//    public void negative5Test() throws YdtException {
-//        // multi range validation
-//        validateErrMsg("revInteger", INT64NS, L, SMALLINT64, MRV);
-//        validateErrMsg("revInteger", INT64NS, "11", CAPSINT64, MRV);
-//        validateErrMsg("revInteger", INT64NS, "4", CAPSINT64, MRV);
-//        validateErrMsg("revInteger", INT64NS, "9", CAPSINT64, MRV);
-//        validateErrMsg("revInteger", INT64NS, "19", CAPSINT64, MRV);
-//        validateErrMsg("revInteger", INT64NS, I, SMALLINT64, MRV);
-//    }
-//
-//    /**
-//     * Tests all possible negative scenario's for unsigned integer64 data type
-//     * with range "min .. 2 | 10 | 20..max".
-//     */
-//    @Test
-//    public void negative6Test() throws YdtException {
-//        // multi range validation
-//        validateErrMsg(RUI, INT64NS, L, MINVALUE, MRV);
-//        validateErrMsg(RUI, INT64NS, "4", CAPSUINT64, MRV);
-//        validateErrMsg(RUI, INT64NS, "9", CAPSUINT64, MRV);
-//        validateErrMsg(RUI, INT64NS, "11", CAPSUINT64, MRV);
-//        validateErrMsg(RUI, INT64NS, "19", CAPSUINT64, MRV);
-//        validateErrMsg(RUI, INT64NS, M, MAXUINT64, MRV);
-//    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger8Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger8Test.java
deleted file mode 100644
index 70727aa..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger8Test.java
+++ /dev/null
@@ -1,418 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.exceptions.YdtException;
-
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT8;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDUIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MINIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MINUIWR;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MINVALUE;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MRV;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.RUI;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.integer8Ydt;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
-import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-
-public class YdtInteger8Test {
-
-    /*
-    Positive scenario
-
-    input at boundry for integer
-        i. min value
-        ii. max value
-
-    input at boundry for uinteger
-        i. min value
-        ii. max value
-
-    input with in range
-        if range is 10 to 100 for integer
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-        if range is 10 to 100 for uinteger
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-    input with multi interval range
-        if range is 10..40 | 50..100 for integer
-            i.1. input 11
-            i.2. input 10
-            i.3. input 40
-            i.4. input 50
-            i.5. input 55
-            i.6. input 100
-
-        if range is 10..40 | 50..100 for uinteger
-            i.1. input 11
-            i.2. input 10
-            i.3. input 40
-            i.4. input 50
-            i.5. input 55
-            i.6. input 100
-
-        if range is "min .. 2 | 10 | 20..max" for integer
-            i.1. input -128
-            i.2. input 1
-            i.3. input 2
-            i.4. input 10
-            i.5. input 20
-            i.6. input 100
-            i.7. input 127
-
-         if range is "min .. 2 | 10 | 20..max" for uInteger
-            i.1. input 0
-            i.2. input 1
-            i.3. input 2
-            i.4. input 10
-            i.5. input 20
-            i.6. input 100
-            i.7. input 255
-    */
-
-    /**
-     * Creates and validates integer8 ydt covering different positive scenario.
-     */
-    @Test
-    public void positiveTest() throws YdtException {
-        YangRequestWorkBench ydtBuilder = integer8Ydt();
-        validateTree(ydtBuilder);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validateTree(YangRequestWorkBench ydtBuilder) {
-
-        // assign root node to ydtNode for validating purpose.
-        YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
-        // Logical root node does not have operation type
-        validateNodeContents(ydtNode, TYPE, null);
-
-        ydtNode = ydtNode.getFirstChild();
-        validateNodeContents(ydtNode, "integer8", MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "negInt", "-128");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "posInt", "127");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "minUInt", MINVALUE);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, "maxUInt", MAXUINT8);
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MIDIWR, "11");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MINIWR, "10");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MAXIWR, "100");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MIDUIWR, "11");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MINUIWR, "10");
-        ydtNode = ydtNode.getNextSibling();
-        validateLeafContents(ydtNode, MAXUIWR, "100");
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "11");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "40");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "50");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "55");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "integer", "100");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "11");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "40");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "50");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "55");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "UnInteger", "100");
-
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "-128");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "1");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "2");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        validate1Tree(ydtNode);
-    }
-
-    /**
-     * Validates the given built ydt.
-     */
-    private void validate1Tree(YdtNode ydtNode) {
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "20");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "100");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, "revInteger", "127");
-
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, MINVALUE);
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "1");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "2");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "10");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "20");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, "100");
-        ydtNode = ydtNode.getParent();
-        ydtNode = ydtNode.getNextSibling();
-        validateNodeContents(ydtNode, MRV, MERGE);
-        ydtNode = ydtNode.getFirstChild();
-        validateLeafContents(ydtNode, RUI, MAXUINT8);
-    }
-
-    //TODO negative scenario will be handled later
-    /*
-        Negative scenario
-
-        wrong type input
-            i. input string instead of integer
-            ii. input string instead of uinteger
-
-        input out of range
-            i. input for int 8 range -128 to 127
-            i.1. input -129
-            i.2. input 128
-
-            ii. input for uint 8 range 0 to 255
-            ii.1. input -128
-            ii.2. input 256
-
-        input out of range parameter
-            if range is 10 to 100 for int
-                i.1. input 9
-                i.2. input 101
-
-            if range is 10 to 100 for uInt
-                i.1. input 9
-                i.2. input 101
-
-        input with multi interval range
-        if range is 10..40 | 50..100 for integer
-            i.1. input 9
-            i.2. input 41
-            i.3. input 49
-            i.4. input 101
-
-        if range is 10..40 | 50..100 for uinteger
-            i.1. input 9
-            i.2. input 41
-            i.3. input 49
-            i.4. input 101
-
-        input with multi interval range
-        if range is min ..  | 10 | 20..max for integer
-            i.1. input -129
-            i.2. input 4
-            i.3. input 9
-            i.4. input 11
-            i.5. input 19
-            i.6. input 128
-
-        if range is min .. 3 | 10 | 20..max for uinteger
-            i.1. input -129
-            i.2. input 4
-            i.3. input 9
-            i.4. input 11
-            i.5. input 19
-            i.6. input 256
-
-    */
-
-    /**
-     * Tests all the minimum and maximum value's negative scenario's for
-     * signed integer8 data type.
-     */
-//    @Test
-//    public void negative1Test() throws YdtException {
-//        validateErrMsg("posInt", INT8NS, "integer", SMALLINT8, null);
-//        validateErrMsg("posInt", INT8NS, "127.0", SMALLINT8, null);
-//        validateErrMsg("negInt", INT8NS, "-129", SMALLINT8, null);
-//        validateErrMsg("posInt", INT8NS, "128", SMALLINT8, null);
-//        validateErrMsg(MINIWR, INT8NS, "9", CAPSINT8, null);
-//        validateErrMsg(MAXIWR, INT8NS, "101", CAPSINT8, null);
-//    }
-//
-//    /**
-//     * Tests all the minimum and maximum value's negative scenario's for
-//     * unsigned integer8 data type.
-//     */
-//    @Test
-//    public void negative2Test() throws YdtException {
-//        validateErrMsg("maxUInt", INT8NS, "integer", SMALLUINT8, null);
-//        validateErrMsg("maxUInt", INT8NS, "127.0", SMALLUINT8, null);
-//        validateErrMsg("minUInt", INT8NS, "-128", MINVALUE, null);
-//        validateErrMsg("maxUInt", INT8NS, "256", MAXUINT8, null);
-//        validateErrMsg(MINUIWR, INT8NS, "9", CAPSUINT8, null);
-//        validateErrMsg(MAXUIWR, INT8NS, "101", CAPSUINT8, null);
-//    }
-//
-//    /**
-//     * Tests all possible negative scenario's for signed integer8 data type
-//     * with range "10..40 | 50..100".
-//     */
-//    @Test
-//    public void negative3Test() throws YdtException {
-//        validateErrMsg("integer", INT8NS, "9", CAPSINT8, MRV);
-//        validateErrMsg("integer", INT8NS, "41", CAPSINT8, MRV);
-//        validateErrMsg("integer", INT8NS, "49", CAPSINT8, MRV);
-//        validateErrMsg("integer", INT8NS, "101", CAPSINT8, MRV);
-//    }
-//
-//    /**
-//     * Tests all possible negative scenario's for unsigned integer8 data type
-//     * with range "10..40 | 50..100".
-//     */
-//    @Test
-//    public void negative4Test() throws YdtException {
-//        validateErrMsg("UnInteger", INT8NS, "9", CAPSUINT8, MRV);
-//        validateErrMsg("UnInteger", INT8NS, "41", CAPSUINT8, MRV);
-//        validateErrMsg("UnInteger", INT8NS, "49", CAPSUINT8, MRV);
-//        validateErrMsg("UnInteger", INT8NS, "101", CAPSUINT8, MRV);
-//    }
-//
-//    /**
-//     * Tests all possible negative scenario's for signed integer8 data type
-//     * with range "min .. 2 | 10 | 20..max".
-//     */
-//    @Test
-//    public void negative5Test() throws YdtException {
-//        // multi range validation
-//        validateErrMsg("revInteger", INT8NS, "-129", SMALLINT8, MRV);
-//        validateErrMsg("revInteger", INT8NS, "128", SMALLINT8, MRV);
-//        validateErrMsg("revInteger", INT8NS, "4", CAPSINT8, MRV);
-//        validateErrMsg("revInteger", INT8NS, "11", CAPSINT8, MRV);
-//        validateErrMsg("revInteger", INT8NS, "9", CAPSINT8, MRV);
-//        validateErrMsg("revInteger", INT8NS, "19", CAPSINT8, MRV);
-//    }
-//
-//    /**
-//     * Tests all possible negative scenario's for unsigned integer8 data type
-//     * with range "min .. 2 | 10 | 20..max".
-//     */
-//    @Test
-//    public void negative6Test() throws YdtException {
-//        // multi range validation
-//        validateErrMsg(RUI, INT8NS, "-129", MINVALUE, MRV);
-//        validateErrMsg(RUI, INT8NS, "4", CAPSUINT8, MRV);
-//        validateErrMsg(RUI, INT8NS, "9", CAPSUINT8, MRV);
-//        validateErrMsg(RUI, INT8NS, "11", CAPSUINT8, MRV);
-//        validateErrMsg(RUI, INT8NS, "19", CAPSUINT8, MRV);
-//        validateErrMsg(RUI, INT8NS, "256", MAXUINT8, MRV);
-//    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtTestConstants.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtTestConstants.java
deleted file mode 100644
index d4f3d8b..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtTestConstants.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-/**
- * Represents common constant utility for YANG data tree UT framework.
- */
-final class YdtTestConstants {
-
-    // No instantiation.
-    private YdtTestConstants() {
-    }
-
-    public static final String BACKSLASH = "\"";
-    public static final String PERIOD = ".";
-    public static final String A = "92233720368547758.07";
-    public static final String B = "92233720368547757";
-    public static final String C = "-92233720368547758.08";
-    public static final String D = "92233720368547757";
-    public static final String E = "9.223372036854775807";
-    public static final String F = "-922337203685477580.8";
-    public static final String G = "922337203685477580.7";
-    public static final String H = "-9.223372036854775808";
-    public static final String I = "9223372036854775808";
-    public static final String J = "9223372036854775807";
-    public static final String K = "-9223372036854775808";
-    public static final String L = "-9223372036854775809";
-    public static final String M = "18446744073709551616";
-    public static final String NWF = "negIntWithMaxFraction";
-    public static final String PWF = "posIntWithMaxFraction";
-    public static final String NIWMF = "negIntWithMinFraction";
-    public static final String PIWMF = "posIntWithMinFraction";
-    public static final String CAPSUINT8 = "UINT8";
-    public static final String CAPSINT8 = "INT8";
-    public static final String SMALLUINT8 = "uint8.";
-    public static final String SMALLINT8 = "int8.";
-    public static final String MAXUINT8 = "255";
-    public static final String CAPSUINT16 = "UINT16";
-    public static final String CAPSINT16 = "INT16";
-    public static final String SUINT16 = "uint16.";
-    public static final String SINT16 = "int16.";
-    public static final String MAXUINT16 = "65535";
-    public static final String CAPSUINT32 = "UINT32";
-    public static final String CAPSINT32 = "INT32";
-    public static final String SUINT32 = "uint32.";
-    public static final String SINT32 = "int32.";
-    public static final String MAXUINT32 = "4294967295";
-    public static final String CAPSUINT64 = "UINT64";
-    public static final String CAPSINT64 = "INT64";
-    public static final String SMALLUINT64 = "uint64.";
-    public static final String SMALLINT64 = "int64.";
-    public static final String MAXUINT64 = "18446744073709551615";
-    public static final String MINVALUE = "0";
-    public static final String MINIWR = "minIntWithRange";
-    public static final String MIDIWR = "midIntWithRange";
-    public static final String MAXIWR = "maxIntWithRange";
-    public static final String MINUIWR = "minUIntWithRange";
-    public static final String MIDUIWR = "midUIntWithRange";
-    public static final String MAXUIWR = "maxUIntWithRange";
-    public static final String MRV = "multiRangeValidation";
-    public static final String RUI = "revUnInteger";
-    public static final String TYPE = "builtInType";
-    public static final String INT8NS = "ydt.integer8";
-    public static final String BIT = "BITS";
-    public static final String BOOL = "BOOLEAN";
-    public static final String EMPTY = "";
-    public static final String ENUM = "ENUMERATION";
-    public static final String LIST = "List";
-    public static final String LWC = "listwithcontainer";
-    public static final String INV = "invalidinterval";
-    public static final String INT16NS = "ydt.integer16";
-    public static final String INT32NS = "ydt.integer32";
-    public static final String INT64NS = "ydt.integer64";
-    public static final String BITNS = "ydt.bit";
-    public static final String BOOLNS = "ydt.boolean";
-    public static final String EMPTYNS = "ydt.emptydata";
-    public static final String ENUMNS = "ydt.enumtest";
-    public static final String LISTNS = "ydt.rootlist";
-    public static final String A1 = "ydt.augment-topology1";
-    public static final String A2 = "ydt.augment-topology2";
-    public static final String A3 = "ydt.augment-topology3";
-    public static final String A4 = "ydt.augment-topology4";
-    public static final String A5 = "ydt.augment-topology5";
-    public static final String A6 = "ydt.augment-topology6";
-    public static final String A2L = "augment2leafList";
-    public static final String A5L = "augment5leafList";
-    public static final String A6L = "augment6leafList";
-    public static final String MATERIALNS = "ydt.material-supervisor";
-    public static final String PURCHASNS = "ydt.purchasing-supervisor";
-    public static final String WAREHNS = "ydt.warehouse-supervisor";
-    public static final String TRADNS = "ydt.trading-supervisor";
-    public static final String EMPNS = "ydt.employee-id";
-    public static final String COUSTOMNS = "ydt.customs-supervisor";
-    public static final String MERCHNS = "ydt.Merchandiser-supervisor";
-    public static final String STP = "supporting-termination-point";
-    public static final String SLINK = "supporting-link";
-    public static final String AUGSE = "/aug:l1";
-    public static final String ELNS = "ydt.Empty.leafList";
-    public static final String AUG1 = "/nd:networks/nd:network";
-    public static final String AUG2 = "/nd:networks/nd:network/nd:node";
-    public static final String AUG3 = "/nd:networks/nd:network/topo:link";
-    public static final String AUG4 = "/nd:networks/nd:network/nd:node/" +
-            "topo:t-point/supporting-termination-point";
-    public static final String AUG5 = "/nd:networks/nd:network/topo:link/" +
-            "aug2:augment2";
-    public static final String AUG6 = "/nd:networks/nd:network/nd:node/" +
-            "topo:t-point/supporting-termination-point/aug2:augment2";
-    public static final String AUG7 = "/nd:networks/nd:network/topo:link/" +
-            "aug2:augment2/aug3:augment3";
-    public static final String AUG8 = "/nd:networks/nd:network/topo:link/" +
-            "aug2:augment2/aug3:augment3/aug5:augment5";
-    public static final String AUG9 = "/nd:networks/nd:network/topo:link/" +
-            "aug2:augment2/aug5:augment5";
-    public static final String AUG10 = "/aug:node/aug:cont1s/aug:cont1s";
-    public static final String NETNS = "ydt.augmentNetwork";
-    public static final String AUGNS = "ydt.augmentSequence1";
-    public static final String IETFNS =
-            "urn:ietf:params:xml:ns:yang:ietf-network";
-    public static final String IETF = "yms-ietf-network";
-    public static final String TOPONS =
-            "urn:ietf:params:xml:ns:yang:ietf-network-topology";
-    public static final String E_LEAF = "Exception has not occurred for " +
-            "invalid leaf value with name ";
-    public static final String E_LIST = "Exception has not occurred for " +
-            "invalid node addition with the name ";
-    public static final String E_TOPARENT = "Exception has not occurred " +
-            "in traverse back to parent for multi instance node.";
-    public static final String E_D64 = "YANG file error : value is not in" +
-            " decimal64 range.";
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtTestUtils.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtTestUtils.java
deleted file mode 100644
index 989f85d..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtTestUtils.java
+++ /dev/null
@@ -1,1938 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ydt;
-
-import org.junit.Rule;
-import org.junit.rules.ExpectedException;
-import org.onosproject.yms.app.yob.DefaultYobBuilder;
-import org.onosproject.yms.app.ysr.TestYangSchemaNodeProvider;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-import org.onosproject.yms.app.ytb.DefaultYangTreeBuilder;
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ydt.YdtContextOperationType;
-import org.onosproject.yms.ydt.YdtListener;
-import org.onosproject.yms.ydt.YdtType;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.A1;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.A2;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.A2L;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.A3;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.A4;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.A5;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.A5L;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.A6;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.A6L;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.BACKSLASH;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.BIT;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.BITNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.BOOL;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.BOOLNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSINT16;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSINT32;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSINT64;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSINT8;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSUINT16;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSUINT32;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSUINT64;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSUINT8;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.COUSTOMNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.ELNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.EMPNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.EMPTY;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.EMPTYNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.ENUM;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.ENUMNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.E_LEAF;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.IETF;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.IETFNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.INT16NS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.INT32NS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.INT64NS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.INT8NS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.INV;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.LIST;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.LISTNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.LWC;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MATERIALNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT16;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT32;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT64;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT8;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MERCHNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MINVALUE;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.MRV;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.NETNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.NIWMF;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.NWF;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.PERIOD;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.PIWMF;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.PURCHASNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.PWF;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.SINT16;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.SINT32;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.SLINK;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.SMALLINT64;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.SMALLINT8;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.SMALLUINT64;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.SMALLUINT8;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.STP;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.SUINT16;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.SUINT32;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.TOPONS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.TRADNS;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE;
-import static org.onosproject.yms.app.ydt.YdtTestConstants.WAREHNS;
-import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REPLY;
-
-public class YdtTestUtils implements YdtListener {
-
-    private static List<String> kValList = new ArrayList<>();
-
-    @Rule
-    public ExpectedException thrown = ExpectedException.none();
-
-    private static YangSchemaRegistry schemaRegistry;
-
-    private static TestYangSchemaNodeProvider schemaProvider =
-            new TestYangSchemaNodeProvider();
-
-    // Logger list is used for walker testing.
-    private static final List<String> LOGGER = new ArrayList<>();
-
-    /**
-     * Returns the LOGGER with log for testing the YDT walker.
-     *
-     * @return list of logs
-     */
-    public static List<String> getLogger() {
-        return LOGGER;
-    }
-
-    /**
-     * Clear the LOGGER array.
-     */
-    public static void resetLogger() {
-        LOGGER.clear();
-    }
-
-    @Override
-    public void enterYdtNode(YdtContext ydtContext) {
-        LOGGER.add("Entry Node is " + ydtContext.getName() + PERIOD);
-    }
-
-    @Override
-    public void exitYdtNode(YdtContext ydtContext) {
-        LOGGER.add("Exit Node is " + ydtContext.getName() + PERIOD);
-    }
-
-    /**
-     * Returns schema registry of YDT.
-     *
-     * @return schema registry
-     */
-    public static YangSchemaRegistry getSchemaRegistry() {
-        return schemaRegistry;
-    }
-
-    /**
-     * Sets the ydt schema registry.
-     *
-     * @param registry schema registry
-     */
-    public static void setSchemaRegistry(YangSchemaRegistry registry) {
-        schemaRegistry = registry;
-    }
-
-    /**
-     * Returns the ydt builder for food module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench foodArenaYdt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder("foodarena", "food", "ydt.food", MERGE);
-        ydtBuilder.addChild("food", "ydt.food");
-//        ydtBuilder.addChild("snack", null, "ydt.food");
-//        ydtBuilder.addChild("latenight", null, "ydt.food");
-        ydtBuilder.addLeaf("chocolate", "ydt.food", "dark");
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for empty leaf list module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench emptyLeafListYdt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder("empty", "EmptyLeafList", ELNS, MERGE);
-        ydtBuilder.addChild("l1", ELNS);
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild("l2", ELNS);
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild("l3", ELNS);
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild("list1", ELNS);
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild("list2", ELNS);
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild("list3", ELNS);
-        ydtBuilder.traverseToParent();
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for yms-ietf-network module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench ietfNetwork1Ydt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder(IETF, IETF, IETFNS, MERGE);
-        // Adding container
-        ydtBuilder.addChild("networks", null);
-        // Adding list inside container
-        ydtBuilder.addChild("network", null);
-        // Adding key element network Id
-        ydtBuilder.addLeaf("network-id", null, "network1");
-        ydtBuilder.traverseToParent();
-
-        // Adding list inside list
-        ydtBuilder.addChild("supporting-network", null);
-        // Adding key element network-ref
-        ydtBuilder.addLeaf("network-ref", null, "network2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        // Adding list inside list
-        ydtBuilder.addChild("node", null);
-        // Adding key element node-id
-        ydtBuilder.addLeaf("node-id", null, "node1");
-        ydtBuilder.traverseToParent();
-
-        // Adding list inside list
-        ydtBuilder.addChild("supporting-node", null);
-        // Adding key element network-ref
-        ydtBuilder.addLeaf("network-ref", null, "network3");
-        ydtBuilder.traverseToParent();
-
-        // Adding key element node-ref
-        ydtBuilder.addLeaf("node-ref", null, "network4");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        // Adding container
-        ydtBuilder.addChild("networks-state", null);
-        // Adding list inside container
-        ydtBuilder.addChild("network", null);
-        // Adding key element network-ref
-        ydtBuilder.addLeaf("network-ref", null, "network5");
-        ydtBuilder.traverseToParent();
-        // Adding leaf server-provided
-        ydtBuilder.addLeaf("server-provided", null, "true");
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for yms-ietf-network-topology module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench ietfNetworkTopologyYdt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder(IETF, IETF, IETFNS, MERGE);
-        // Adding container
-        ydtBuilder.addChild("networks", IETFNS, MERGE);
-        // Adding list inside container
-        ydtBuilder.addChild("network", IETFNS, MERGE);
-
-        // Adding key element network Id
-        ydtBuilder.addLeaf("network-id", null, "network1");
-        ydtBuilder.traverseToParent();
-
-        kValList.clear();
-        kValList.add("id1");
-        // adding the augmented node
-        ydtBuilder.addMultiInstanceChild("link", TOPONS, kValList, MERGE);
-        // container source
-        ydtBuilder.addChild("source", TOPONS, MERGE);
-        ydtBuilder.addLeaf("source-node", null, "source1");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("source-tp", null, "source2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        // container destination
-        ydtBuilder.addChild("destination", TOPONS, MERGE);
-        ydtBuilder.addLeaf("dest-node", null, "dest1");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("dest-tp", null, "dest2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        kValList.clear();
-        kValList.add("network1");
-        kValList.add("id2");
-        // adding the supporting-link list node
-        ydtBuilder.addMultiInstanceChild(SLINK, TOPONS, kValList, MERGE);
-        ydtBuilder.traverseToParent();
-
-        kValList.clear();
-        kValList.add("network2");
-        kValList.add("id3");
-        // adding the supporting-link list another instance
-        ydtBuilder.addMultiInstanceChild(SLINK, TOPONS, kValList, MERGE);
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        // Adding list inside list
-        ydtBuilder.addChild("supporting-network", null);
-        // Adding key element network-ref
-        ydtBuilder.addLeaf("network-ref", null, "network2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        // Adding list inside list
-        ydtBuilder.addChild("node", null);
-        // Adding key element node-id
-        ydtBuilder.addLeaf("node-id", null, "node1");
-        ydtBuilder.traverseToParent();
-
-        kValList.clear();
-        kValList.add("tp_id1");
-        //adding augmented termination-point list
-        ydtBuilder.addMultiInstanceChild("t-point", TOPONS,
-                                         kValList, MERGE);
-        kValList.clear();
-        kValList.add("network-ref");
-        kValList.add("node-ref");
-        kValList.add("tp-ref");
-        //adding supporting-termination-point
-        ydtBuilder.addMultiInstanceChild(STP, TOPONS, kValList, MERGE);
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        // Adding list inside list
-        ydtBuilder.addChild("supporting-node", null);
-        // Adding key element network-ref
-        ydtBuilder.addLeaf("network-ref", null, "network3");
-        ydtBuilder.traverseToParent();
-
-        // Adding key element node-ref
-        ydtBuilder.addLeaf("node-ref", null, "network4");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("link-id", TOPONS, "id1");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        // Adding container
-        ydtBuilder.addChild("networks-state", null);
-        // Adding list inside container
-        ydtBuilder.addChild("network", null);
-        // Adding key element network-ref
-        ydtBuilder.addLeaf("network-ref", null, "network5");
-        ydtBuilder.traverseToParent();
-        // Adding leaf server-provided
-        ydtBuilder.addLeaf("server-provided", null, "true");
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for augmented module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench augmentNetworkYdt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder(IETF, IETF, IETFNS, MERGE);
-        // Adding container
-        ydtBuilder.addChild("networks", IETFNS, MERGE);
-        // Adding list inside container
-        ydtBuilder.addChild("network", IETFNS, MERGE);
-
-        // Adding key element network Id
-        ydtBuilder.addLeaf("network-id", null, "network1");
-        ydtBuilder.traverseToParent();
-
-        kValList.clear();
-        kValList.add("id1");
-        // adding the augmented node
-        ydtBuilder.addMultiInstanceChild("link", TOPONS, kValList, MERGE);
-        // container source
-        ydtBuilder.addChild("source", TOPONS, MERGE);
-        ydtBuilder.addLeaf("source-node", null, "source1");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("source-tp", null, "source2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        // container destination
-        ydtBuilder.addChild("destination", TOPONS, MERGE);
-        ydtBuilder.addLeaf("dest-node", null, "dest1");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("dest-tp", null, "dest2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        kValList.clear();
-        kValList.add("network1");
-        kValList.add("id2");
-        // adding the supporting-link list node
-        ydtBuilder.addMultiInstanceChild(SLINK, TOPONS, kValList, MERGE);
-        ydtBuilder.traverseToParent();
-
-        kValList.clear();
-        kValList.add("network2");
-        kValList.add("id3");
-        // adding the supporting-link list another instance
-        ydtBuilder.addMultiInstanceChild(SLINK, TOPONS, kValList, MERGE);
-        ydtBuilder.traverseToParent();
-
-        kValList.clear();
-        kValList.add("1");
-        ydtBuilder.addMultiInstanceChild("augment1", A1, kValList, MERGE);
-        ydtBuilder.traverseToParent();
-
-        kValList.clear();
-        kValList.add("1");
-        kValList.add("2");
-        ydtBuilder.addMultiInstanceChild("augment2", A2, kValList, MERGE);
-
-        ydtBuilder.addChild("augment5", A5, DELETE);
-
-        ydtBuilder.addMultiInstanceChild(A6L, A6, kValList, DELETE);
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("value5", null, "5");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addMultiInstanceChild(A5L, A5, kValList, DELETE);
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild("augment3", A3, MERGE);
-
-        ydtBuilder.addChild("augment4", A4, DELETE);
-        ydtBuilder.addLeaf("value4", null, "4");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild("augment5", A5, MERGE);
-
-        ydtBuilder.addLeaf("leaf6", A6, "6");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("value5", null, "5");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild("augment6", A6, DELETE);
-        ydtBuilder.addLeaf("value6", null, "6");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("value3", null, "3");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("augment3leaf", A3, "3");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addMultiInstanceChild(A2L, A2, kValList, MERGE);
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.traverseToParent();
-
-        // Adding list inside list
-        ydtBuilder.addChild("supporting-network", null);
-        // Adding key element network-ref
-        ydtBuilder.addLeaf("network-ref", null, "network2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        // Adding list inside list
-        ydtBuilder.addChild("node", null);
-        // Adding key element node-id
-        ydtBuilder.addLeaf("node-id", null, "node1");
-        ydtBuilder.traverseToParent();
-
-        kValList.clear();
-        kValList.add("tp_id1");
-        //adding augmented termination-point list
-        ydtBuilder.addMultiInstanceChild("t-point", TOPONS,
-                                         kValList, MERGE);
-        kValList.clear();
-        kValList.add("network-ref");
-        kValList.add("node-ref");
-        kValList.add("tp-ref");
-        //adding supporting-termination-point
-        ydtBuilder.addMultiInstanceChild(STP, TOPONS, kValList, MERGE);
-
-        // Adding augmented container1 inside supporting-termination-point
-        augmentTerminationPointYdt(ydtBuilder);
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Adds augments inside supporting-termination-point in augmented module.
-     *
-     * @param ydtBuilder ydt builder which need to be updated
-     */
-    private static void augmentTerminationPointYdt(YangRequestWorkBench ydtBuilder) {
-
-        ydtBuilder.addChild("augment1", A1);
-        ydtBuilder.addLeaf("value1", null, "1");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("augment1-leaf", A1, "1");
-
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild("augment2", A2, MERGE);
-
-        ydtBuilder.addChild("augment3", A3, MERGE);
-        ydtBuilder.addLeaf("value3", null, "3");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("augment4leaf", A4, "4");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("value2", null, "2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        kValList.clear();
-        kValList.add("1");
-        kValList.add("2");
-        ydtBuilder.addMultiInstanceChild(A2L, A2, kValList, MERGE);
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("augment2leaf", A2, "2");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        // Adding list inside list
-        ydtBuilder.addChild("supporting-node", null);
-        // Adding key element network-ref
-        ydtBuilder.addLeaf("network-ref", null, "network3");
-        ydtBuilder.traverseToParent();
-
-        // Adding key element node-ref
-        ydtBuilder.addLeaf("node-ref", null, "network4");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("link-id", TOPONS, "id1");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        // Adding container
-        ydtBuilder.addChild("networks-state", null);
-        // Adding list inside container
-        ydtBuilder.addChild("network", null);
-        // Adding key element network-ref
-        ydtBuilder.addLeaf("network-ref", null, "network5");
-        ydtBuilder.traverseToParent();
-        // Adding leaf server-provided
-        ydtBuilder.addLeaf("server-provided", null, "true");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        augmentNetworkYdt(ydtBuilder);
-    }
-
-    /**
-     * Adds augmented module augment-network under logical node ietf-network.
-     *
-     * @param ydtBuilder ydt builder which need to be updated
-     */
-    private static void augmentNetworkYdt(YangRequestWorkBench ydtBuilder) {
-        ydtBuilder.addChild("augmentNetwork", NETNS);
-
-        //adding list with name node under module node
-        ydtBuilder.addChild("node", null);
-
-        //adding key leaf for node
-        ydtBuilder.addLeaf("name", null, "node1");
-        ydtBuilder.traverseToParent();
-
-        // adding augmented container cont1s under list
-        ydtBuilder.addChild("cont1s", null);
-        // adding container cont1s under cont1s
-        ydtBuilder.addChild("cont1s", null);
-        //adding leaf under cont1s
-        ydtBuilder.addLeaf("fine", null, "leaf");
-
-        //adding augmented list node bu augment-topology1 under container
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild("augment1", A1, DELETE);
-        //adding key leaf for list node augment1
-        ydtBuilder.addLeaf("value1", null, "1");
-    }
-
-    /**
-     * Returns the ydt builder for rootlist module with listwithcontainer node
-     * using addMultiInstanceChild interface for adding multi instance node.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench listWithContainerYdt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder("list", "rootlist", "ydt.rootlist", MERGE);
-        kValList.clear();
-        kValList.add("12");
-        kValList.add("12");
-        ydtBuilder.addMultiInstanceChild(LWC, null, kValList, MERGE);
-        ydtBuilder.addLeaf(INV, null, "1");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf(INV, null, "2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild("interface", null);
-        ydtBuilder.addLeaf(INV, null, "12");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("invalid", null, "121");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for rootlist module with listwithcontainer
-     * node using addChild interface for adding multi instance node.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench listWithContainer1Ydt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder("list", "rootlist", "ydt.rootlist", MERGE);
-        ydtBuilder.addChild(LWC, null);
-        ydtBuilder.addLeaf("invalid", null, "12");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("invalid1", null, "12");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf(INV, null, "1");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf(INV, null, "2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild("interface", null);
-        ydtBuilder.addLeaf(INV, null, "12");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("invalid", null, "121");
-        ydtBuilder.traverseToParent();
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for rootlist module with multiple instances of
-     * listwithcontainer node using addMultiInstanceChild interface for adding
-     * multi instance node.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench listWithContainer2Ydt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder("list", "rootlist", "ydt.rootlist", MERGE);
-        kValList.clear();
-        kValList.add("1222");
-        kValList.add("1212");
-        ydtBuilder.addMultiInstanceChild(LWC, null, kValList, MERGE);
-
-        kValList.clear();
-        kValList.add("12");
-        kValList.add("1");
-        ydtBuilder.addMultiInstanceChild(INV, null, kValList, MERGE);
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf(INV, null, "122");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf(INV, null, "2222");
-        ydtBuilder.traverseToParent();
-
-        kValList.clear();
-        kValList.add("1222");
-        kValList.add("1212");
-        ydtBuilder.addMultiInstanceChild(INV, null, kValList, MERGE);
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild("interface", null);
-        ydtBuilder.addLeaf(INV, null, "12");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for rootlist module with listwithoutcontainer
-     * node.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench listWithoutContainerYdt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder("list", "rootlist", "ydt.rootlist", MERGE);
-        ydtBuilder.addChild("listwithoutcontainer", null);
-        ydtBuilder.addLeaf(INV, null, "12");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for logisticsmanager module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench logisticsManagerYdt() {
-
-        Set<String> valueSet = new HashSet();
-        valueSet.add("1");
-        valueSet.add("2");
-        valueSet.add("3");
-        valueSet.add("4");
-        valueSet.add("5");
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder("logisticsmanager", "customssupervisor",
-                                   null, MERGE);
-        ydtBuilder.addLeaf("supervisor", COUSTOMNS, "abc");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild("merchandisersupervisor", MERCHNS, MERGE);
-        ydtBuilder.addLeaf("supervisor", MERCHNS, "abc");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild("materialsupervisor", MATERIALNS, MERGE);
-        ydtBuilder.addChild("supervisor", MATERIALNS);
-        ydtBuilder.addLeaf("name", MATERIALNS, "abc");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("departmentId", MATERIALNS, "xyz");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild("supervisor", MATERIALNS);
-        ydtBuilder.addLeaf("name", MATERIALNS, "ab");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("departmentId", MATERIALNS, "xy");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild("purchasingsupervisor", PURCHASNS, MERGE);
-        ydtBuilder.addChild("supervisor", PURCHASNS);
-        ydtBuilder.addLeaf("purchasing-specialist", PURCHASNS, "abc");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("support", "ydt.purchasing-supervisor", "xyz");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild("warehousesupervisor", WAREHNS, MERGE);
-        ydtBuilder.addLeaf("supervisor", WAREHNS, valueSet);
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild("tradingsupervisor", TRADNS, MERGE);
-        ydtBuilder.addLeaf("supervisor", TRADNS, "abc");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild("employeeid", EMPNS, MERGE);
-        ydtBuilder.addLeaf("employeeid", EMPNS, valueSet);
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for bit module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench bitYdt() {
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder("builtInType", "bit", "ydt.bit", MERGE);
-        ydtBuilder.addChild("bitList", null);
-        ydtBuilder.addLeaf("bit", null, "disable-nagle");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild("bitList", null);
-        ydtBuilder.addLeaf("bit", null, "auto-sense-speed");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild("bitList", null);
-        ydtBuilder.addLeaf("bit", null, "ten-Mb-only");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild("bitList", null);
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for bool module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench booleanYdt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder("builtInType", "bool", "ydt.boolean", MERGE);
-        ydtBuilder.addChild("booleanList", null);
-        ydtBuilder.addLeaf("boolean", null, "true");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild("booleanList", null);
-        ydtBuilder.addLeaf("boolean", null, "false");
-        ydtBuilder.traverseToParent();
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for emptydata module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench emptyTypeYdt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder(
-                "builtInType", "emptydata", "ydt.emptydata", MERGE);
-        ydtBuilder.addChild("emptyList", null);
-        ydtBuilder.addLeaf("empty", null, "");
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for enumtest module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench enumYdt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder(
-                "builtInType", "enumtest", "ydt.enumtest", MERGE);
-        ydtBuilder.addChild("enumList", null);
-        ydtBuilder.addLeaf("enumleaf", null, "ten");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild("enumList", null);
-        ydtBuilder.addLeaf("enumleaf", null, "hundred");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild("enumList", null);
-        ydtBuilder.addLeaf("enumleaf", null, "thousand");
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for augmentSequence module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench augmentSequenceYdt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder(
-                "augment", "augmentSequence", "ydt.augmentSequence", MERGE);
-        ydtBuilder.addChild("l1", null);
-        ydtBuilder.addLeaf("leaf1", null, "1");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild("c1", "ydt.augmentSequence1");
-        ydtBuilder.addLeaf("leaf2", null, "2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild("c2", "ydt.augmentSequence2");
-        ydtBuilder.addLeaf("leaf2", null, "3");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for crypto-base module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench identityRefYdt() {
-
-        Set<String> valueSet = new HashSet();
-        valueSet.add("crypto-alg");
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder(
-                "identityref", "crypto-base", "ydt.crypto-base", MERGE);
-        ydtBuilder.addLeaf("crypto", null, "crypto-alg");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("abc-zeunion", null, "crypto-alg");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("level2", null, "crypto-alg2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("level3", null, "crypto-alg3");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("level4", null, "crypto-alg3");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("abc-type", null, valueSet);
-        ydtBuilder.traverseToParent();
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for builtin type integer8 module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench integer8Ydt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder(
-                "builtInType", "integer8", "ydt.integer8", MERGE);
-        ydtBuilder.addLeaf("negInt", null, "-128");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("posInt", null, "127");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("minUInt", null, "0");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("maxUInt", null, "255");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("midIntWithRange", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("minIntWithRange", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("maxIntWithRange", null, "100");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("midUIntWithRange", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("minUIntWithRange", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("maxUIntWithRange", null, "100");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "40");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "50");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "55");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("UnInteger", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "40");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "50");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "55");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("revInteger", null, "-128");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "1");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "20");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "127");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "0");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "1");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "20");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "255");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for builtin type integer16 module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench integer16Ydt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder(
-                "builtInType", "integer16", "ydt.integer16", MERGE);
-        ydtBuilder.addLeaf("negInt", null, "-32768");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("posInt", null, "32767");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("minUInt", null, "0");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("maxUInt", null, "65535");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("midIntWithRange", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("minIntWithRange", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("maxIntWithRange", null, "100");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("midUIntWithRange", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("minUIntWithRange", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("maxUIntWithRange", null, "100");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "40");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "50");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "55");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("UnInteger", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "40");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "50");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "55");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("revInteger", null, "-32768");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "1");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "20");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "32767");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "0");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "1");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "20");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "65535");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for builtin type integer32 module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench integer32Ydt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder(
-                "builtInType", "integer32", "ydt.integer32", MERGE);
-        ydtBuilder.addLeaf("negInt", null, "-2147483648");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("posInt", null, "2147483647");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("minUInt", null, "0");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("maxUInt", null, "4294967295");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("midIntWithRange", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("minIntWithRange", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("maxIntWithRange", null, "100");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("midUIntWithRange", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("minUIntWithRange", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("maxUIntWithRange", null, "100");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "40");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "50");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "55");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("UnInteger", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "40");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "50");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "55");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("revInteger", null, "-2147483648");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "1");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "20");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "2147483647");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "0");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "1");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "20");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "4294967295");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for builtin type integer64 module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench integer64Ydt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder(
-                "builtInType", "integer64", "ydt.integer64", MERGE);
-        ydtBuilder.addLeaf("negInt", null, "-9223372036854775808");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("posInt", null, "9223372036854775807");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("minUInt", null, "0");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("maxUInt", null, "18446744073709551615");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("midIntWithRange", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("minIntWithRange", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("maxIntWithRange", null, "100");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addLeaf("midUIntWithRange", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("minUIntWithRange", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("maxUIntWithRange", null, "100");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "40");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "50");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "55");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("integer", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("UnInteger", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "40");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "50");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "55");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("UnInteger", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("revInteger", null, "-9223372036854775808");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "1");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "20");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revInteger", null, "9223372036854775807");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "0");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "1");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "2");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "20");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE);
-        ydtBuilder.addLeaf("revUnInteger", null, "18446744073709551615");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder for builtin type decimal64 module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench decimal64Ydt() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder(
-                "builtInType", "decimal64", "ydt.decimal64", MERGE);
-        ydtBuilder.addLeaf("negInt", null, "-92233720368547758.08");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("posInt", null, "92233720368547758.07");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf(NIWMF, null, "-922337203685477580.8");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf(PIWMF, null, "922337203685477580.7");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf(NWF, null, "-9.223372036854775808");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf(PWF, null, "9.223372036854775807");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("midIntWithRange", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("minIntWithRange", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("maxIntWithRange", null, "100");
-        ydtBuilder.traverseToParent();
-
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("decimal", null, "11");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("decimal", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("decimal", null, "40");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("decimal", null, "50");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("decimal", null, "55");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("decimal", null, "100");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("revDecimal", null, "-92233720368547758.08");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("revDecimal", null, "2.505");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("revDecimal", null, "3.14");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("revDecimal", null, "10");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("revDecimal", null, "20");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("revDecimal", null, "92233720368547757");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild(MRV, null);
-        ydtBuilder.addLeaf("revDecimal", null, "92233720368547758.07");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the ydt builder with requested logical root name and module name.
-     *
-     * @param rootName   logical rootNode name
-     * @param moduleName application(module) name
-     * @param nameSpace  namespace of module
-     * @param opType     operation type
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench getYdtBuilder(String rootName, String
-            moduleName, String nameSpace, YdtContextOperationType opType) {
-        setSchemaRegistry(schemaProvider.getDefaultYangSchemaRegistry());
-        YangRequestWorkBench ydtBuilder;
-        schemaProvider.processSchemaRegistry(null);
-        ydtBuilder = new YangRequestWorkBench(
-                rootName, null, null, schemaProvider
-                .getDefaultYangSchemaRegistry(), true);
-        ydtBuilder.addChild(moduleName, nameSpace, opType);
-        return ydtBuilder;
-    }
-
-    /**
-     * Compares the two value sets.
-     */
-    public static void compareValueSet(Set<String> valueSet,
-                                       Set<String> userInputValueSet) {
-        // Check the value against user input.
-        assertTrue("Expected 'valueSet' and 'userInputValueSet' to be equal.",
-                   valueSet.containsAll(userInputValueSet));
-    }
-
-    /**
-     * Returns the ydt builder for Hello_ONOS module.
-     *
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench helloOnos() {
-
-        YangRequestWorkBench ydtBuilder;
-        ydtBuilder = getYdtBuilder(
-                "Hello-ONOS", "Hello_ONOS", "ydt:hello_onos", MERGE);
-        ydtBuilder.addChild("hello-world", null);
-        ydtBuilder.addChild("input", null);
-        ydtBuilder.addLeaf("name", null, "onos");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf("surName", null, "yang");
-        ydtBuilder.traverseToParent();
-
-        kValList.clear();
-        kValList.add("ON");
-        kValList.add("LAB");
-        ydtBuilder.addMultiInstanceChild("stringList", null, kValList,
-                                         MERGE);
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-
-        return ydtBuilder;
-    }
-
-    /**
-     * Returns the error message for requested node.
-     *
-     * @param value    value in string format
-     * @param dataType requested data type
-     * @return error string
-     */
-    static String getErrorString(String value, String dataType) {
-        StringBuilder msg = new StringBuilder();
-        switch (dataType) {
-            case SINT16:
-            case SINT32:
-            case SMALLINT8:
-            case SMALLINT64:
-            case SMALLUINT8:
-            case SMALLUINT64:
-            case SUINT16:
-            case SUINT32:
-            case CAPSINT8:
-            case CAPSINT16:
-            case CAPSINT32:
-            case CAPSINT64:
-            case CAPSUINT8:
-            case CAPSUINT16:
-            case CAPSUINT32:
-            case CAPSUINT64:
-            case BIT:
-            case BOOL:
-            case ENUM:
-                msg.append("YANG file error : Input value ").append(BACKSLASH)
-                        .append(value).append(BACKSLASH)
-                        .append(" is not a valid ").append(dataType);
-                break;
-            case EMPTY:
-                msg.append("YANG file error : Input value ").append(BACKSLASH)
-                        .append(value).append(BACKSLASH).append(
-                        " is not allowed for a data type EMPTY");
-                break;
-            case MINVALUE:
-                msg.append("YANG file error : ").append(value)
-                        .append(" is lesser than minimum value ")
-                        .append(MINVALUE).append(PERIOD);
-                break;
-            case MAXUINT8:
-            case MAXUINT16:
-            case MAXUINT32:
-            case MAXUINT64:
-                msg.append("YANG file error : ").append(value)
-                        .append(" is greater than maximum value ")
-                        .append(dataType).append(PERIOD);
-                break;
-            default:
-                return null;
-        }
-        return msg.toString();
-    }
-
-    /**
-     * Validates the error message which is obtained by checking the given
-     * value against its data type restrictions.
-     *
-     * @param name      leaf name
-     * @param nameSpace leaf namespace
-     * @param val       leaf value
-     * @param type      data type suffix string for exception message
-     * @param childName child name
-     */
-    public static void validateErrMsg(String name, String nameSpace,
-                                      String val, String type, String childName) {
-        YangRequestWorkBench ydtBuilder = getTestYdtBuilder(nameSpace);
-        boolean isExpOccurred = false;
-        /*
-         * If childName exist then leaf need to be added under the
-         * child node with the given childName
-         */
-        if (childName != null) {
-            ydtBuilder.addChild(childName, nameSpace);
-        }
-        /*
-         * This try catch is explicitly written to use as utility in other
-         * test cases.
-         */
-        try {
-            ydtBuilder.addLeaf(name, nameSpace, val);
-        } catch (IllegalArgumentException e) {
-            isExpOccurred = true;
-            assertEquals(e.getMessage(), getErrorString(val, type));
-        }
-        assertEquals(E_LEAF + name, isExpOccurred, true);
-    }
-
-    /**
-     * Returns ydt builder for requested namespace.
-     *
-     * @param namespace namespace of the requested yang data tree
-     * @return ydt builder
-     */
-    public static YangRequestWorkBench getTestYdtBuilder(String namespace) {
-
-        switch (namespace) {
-            case INT8NS:
-                return getYdtBuilder(TYPE, "integer8", INT8NS, MERGE);
-            case INT16NS:
-                return getYdtBuilder(TYPE, "integer16", INT16NS, MERGE);
-            case INT32NS:
-                return getYdtBuilder(TYPE, "integer32", INT32NS, MERGE);
-            case INT64NS:
-                return getYdtBuilder(TYPE, "integer64", INT64NS, MERGE);
-            case BITNS:
-                return getYdtBuilder(TYPE, "bit", BITNS, MERGE);
-            case BOOLNS:
-                return getYdtBuilder(TYPE, "bool", BOOLNS, MERGE);
-            case EMPTYNS:
-                return getYdtBuilder(TYPE, "emptydata", EMPTYNS, MERGE);
-            case ENUMNS:
-                return getYdtBuilder(TYPE, "enumtest", ENUMNS, MERGE);
-            case LISTNS:
-                return getYdtBuilder(LIST, "rootlist", LISTNS, MERGE);
-            default:
-                return null;
-        }
-    }
-
-    /**
-     * Validates the contents of node like name, namespace and operation type.
-     *
-     * @param ydtNode node need to be validate
-     * @param name    name of the node
-     * @param opType  operation type of the node
-     */
-    public static void validateNodeContents(YdtNode ydtNode, String name,
-                                            YdtContextOperationType opType) {
-        assertEquals(ydtNode.getName(), name);
-        assertEquals(ydtNode.getYdtContextOperationType(), opType);
-    }
-
-    /**
-     * Validates the contents of leaf node like name, namespace and operation
-     * type.
-     *
-     * @param ydtNode node need to be validate
-     * @param name    name of the node
-     * @param value   value of the leaf node
-     */
-    public static void validateLeafContents(YdtNode ydtNode, String name,
-                                            String value) {
-        validateNodeContents(ydtNode, name, null);
-        assertEquals(ydtNode.getValue(), value);
-    }
-
-    /**
-     * Validates the contents of leaf-list node like name, namespace and
-     * operation type.
-     *
-     * @param ydtNode  node need to be validate
-     * @param name     name of the node
-     * @param valueSet value of the leaf node
-     */
-    public static void validateLeafListContents(YdtNode ydtNode, String name,
-                                                Set<String> valueSet) {
-        validateNodeContents(ydtNode, name, null);
-        compareValueSet(ydtNode.getValueSet(), valueSet);
-    }
-
-    /**
-     * Validates the contents of ydt application logical node.
-     *
-     * @param ydtAppNode node need to be validate
-     */
-    public static void validateAppLogicalNodeContents(
-            YdtAppContext ydtAppNode) {
-
-        assertNull(ydtAppNode.getOperationType());
-        assertNull(ydtAppNode.getParent());
-        assertNull(ydtAppNode.getNextSibling());
-        assertNull(ydtAppNode.getPreviousSibling());
-        assertNotNull(ydtAppNode.getFirstChild());
-        assertNotNull(ydtAppNode.getLastChild());
-    }
-
-    /**
-     * Validates the contents of ydt application module node.
-     *
-     * @param ydtAppNode node need to be validate
-     * @param name       name of the node
-     * @param opType     operation type of the app node
-     */
-    public static void validateAppModuleNodeContents(
-            YdtAppContext ydtAppNode, String name,
-            YdtAppNodeOperationType opType) {
-
-        assertEquals(ydtAppNode.getModuleContext().getName(), name);
-        assertEquals(ydtAppNode.getOperationType(), opType);
-    }
-
-    /**
-     * Validates the contents of ydt application node like name, namespace
-     * and operation type.
-     *
-     * @param ydtAppNode node need to be validate
-     * @param name       name of the schema node
-     * @param ns         namespace of the schema node
-     * @param opType     operation type of the app node
-     */
-    public static void validateAppNodeContents(
-            YdtAppContext ydtAppNode, String name, String ns,
-            YdtAppNodeOperationType opType) {
-        assertEquals(ydtAppNode.getAugmentingSchemaNode().getName(), name);
-        assertEquals(ydtAppNode.getAugmentingSchemaNode().getNameSpace()
-                             .getModuleNamespace(), ns);
-        assertEquals(ydtAppNode.getOperationType(), opType);
-    }
-
-    /**
-     * Walks in the given built ydt and validates it.
-     */
-    public static void walkINTree(YangRequestWorkBench ydtBuilder,
-                                  String[] expected) {
-        DefaultYdtWalker ydtWalker = new DefaultYdtWalker();
-        resetLogger();
-
-        YdtTestUtils utils = new YdtTestUtils();
-        // Assign root node as starting node to walk the whole tree.
-        ydtWalker.walk(utils, ydtBuilder.getRootNode());
-        // Logger list is used for walker testing.
-        List<String> logger = getLogger();
-
-        for (int i = 0; i < expected.length; i++) {
-            assertEquals(expected[i], logger.get(i));
-        }
-    }
-
-    /**
-     * Creates Ydt from YO using YTB.
-     */
-    static YangRequestWorkBench validateYangObject(
-            YangRequestWorkBench ydtBuilder, String name, String namespace) {
-
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-
-        YdtContext childCtx = rootCtx.getFirstChild();
-
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, YdtTestUtils
-                        .getSchemaRegistry());
-
-        List<Object> list = new LinkedList<>();
-        list.add(yangObject);
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YangRequestWorkBench defaultYdtBuilder =
-                (YangRequestWorkBench) treeBuilder.getYdtBuilderForYo(
-                        list, name, namespace, EDIT_CONFIG_REPLY, YdtTestUtils
-                                .getSchemaRegistry());
-        return defaultYdtBuilder;
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockCoreService.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockCoreService.java
deleted file mode 100644
index 2b8d7e6..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockCoreService.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ymsm;
-
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.core.IdGenerator;
-import org.onosproject.core.Version;
-
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicLong;
-
-/**
- * Represents implementation of CoreService interfaces.
- */
-public class MockCoreService implements CoreService {
-    @Override
-    public Version version() {
-        return null;
-    }
-
-    @Override
-    public Set<ApplicationId> getAppIds() {
-        return null;
-    }
-
-    @Override
-    public ApplicationId getAppId(Short id) {
-        return null;
-    }
-
-    @Override
-    public ApplicationId getAppId(String name) {
-        return null;
-    }
-
-    @Override
-    public ApplicationId registerApplication(String name) {
-        return null;
-    }
-
-    @Override
-    public ApplicationId registerApplication(String name,
-                                             Runnable preDeactivate) {
-        return null;
-    }
-
-    @Override
-    public IdGenerator getIdGenerator(String topic) {
-        return new IdGenerator() {
-            private AtomicLong counter = new AtomicLong(0);
-
-            @Override
-            public long getNewId() {
-                return counter.getAndIncrement();
-            }
-        };
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockOverriddenDataTreeCodec.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockOverriddenDataTreeCodec.java
deleted file mode 100644
index 3585ee1..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockOverriddenDataTreeCodec.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ymsm;
-
-import org.onosproject.yms.app.ych.YchException;
-import org.onosproject.yms.ych.YangCompositeEncoding;
-import org.onosproject.yms.ych.YangDataTreeCodec;
-import org.onosproject.yms.ydt.YdtBuilder;
-import org.onosproject.yms.ydt.YmsOperationType;
-
-/**
- * Represents implementation of overridden YANG data tree codec interfaces.
- */
-public class MockOverriddenDataTreeCodec implements YangDataTreeCodec {
-    private static final String PREFIX = "OverriddenDataTreeCodec ";
-    private static final String ENCODE = PREFIX +
-            "encodeYdtToProtocolFormat Called.";
-    private static final String COMPOSITE_ENCODE = PREFIX +
-            "encodeYdtToCompositeProtocolFormat Called.";
-    private static final String DECODE = PREFIX +
-            "decodeProtocolDataToYdt Called.";
-    private static final String COMPOSITE_DECODE = PREFIX +
-            "decodeCompositeProtocolDataToYdt Called.";
-
-    @Override
-    public String encodeYdtToProtocolFormat(YdtBuilder ydtBuilder) {
-
-        throw new YchException(ENCODE);
-    }
-
-    @Override
-    public YangCompositeEncoding encodeYdtToCompositeProtocolFormat(
-            YdtBuilder ydtBuilder) {
-
-        throw new YchException(COMPOSITE_ENCODE);
-    }
-
-    @Override
-    public YdtBuilder decodeProtocolDataToYdt(String protocolData,
-                                              Object schemaRegistryForYdt,
-                                              YmsOperationType proOper) {
-
-        throw new YchException(DECODE);
-    }
-
-    @Override
-    public YdtBuilder decodeCompositeProtocolDataToYdt(
-            YangCompositeEncoding protocolData,
-            Object schemaRegistryForYdt,
-            YmsOperationType proOper) {
-
-        throw new YchException(COMPOSITE_DECODE);
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockRegisteredDataTreeCodec.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockRegisteredDataTreeCodec.java
deleted file mode 100644
index c3fa150..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockRegisteredDataTreeCodec.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ymsm;
-
-import org.onosproject.yms.app.ych.YchException;
-import org.onosproject.yms.ych.YangCompositeEncoding;
-import org.onosproject.yms.ych.YangDataTreeCodec;
-import org.onosproject.yms.ydt.YdtBuilder;
-import org.onosproject.yms.ydt.YmsOperationType;
-
-/**
- * Represents implementation of YANG SBI broker interfaces.
- */
-public class MockRegisteredDataTreeCodec implements YangDataTreeCodec {
-    private static final String PREFIX = "RegisteredDataTreeCodec ";
-    private static final String ENCODE = PREFIX +
-            "encodeYdtToProtocolFormat Called.";
-    private static final String COMPOSITE_ENCODE = PREFIX +
-            "encodeYdtToCompositeProtocolFormat Called.";
-    private static final String DECODE = PREFIX +
-            "decodeProtocolDataToYdt Called.";
-    private static final String COMPOSITE_DECODE = PREFIX +
-            "decodeCompositeProtocolDataToYdt Called.";
-
-    @Override
-    public String encodeYdtToProtocolFormat(YdtBuilder ydtBuilder) {
-        throw new YchException(ENCODE);
-    }
-
-    @Override
-    public YangCompositeEncoding encodeYdtToCompositeProtocolFormat(
-            YdtBuilder ydtBuilder) {
-
-        throw new YchException(COMPOSITE_ENCODE);
-    }
-
-    @Override
-    public YdtBuilder decodeProtocolDataToYdt(String protocolData,
-                                              Object schemaRegistry,
-                                              YmsOperationType proOper) {
-
-        throw new YchException(DECODE);
-    }
-
-    @Override
-    public YdtBuilder decodeCompositeProtocolDataToYdt(
-            YangCompositeEncoding protocolData,
-            Object schemaRegistry,
-            YmsOperationType proOper) {
-
-        throw new YchException(COMPOSITE_DECODE);
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockYangCompositeEncoding.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockYangCompositeEncoding.java
deleted file mode 100644
index af4dc7c..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockYangCompositeEncoding.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ymsm;
-
-import org.onosproject.yms.ych.YangCompositeEncoding;
-import org.onosproject.yms.ych.YangResourceIdentifierType;
-
-/**
- * Represents implementation of YangCompositeEncoding interfaces.
- */
-public class MockYangCompositeEncoding implements YangCompositeEncoding {
-    /**
-     * Resource identifier for composite encoding.
-     */
-    private String resourceIdentifier;
-
-    /**
-     * Resource information for composite encoding.
-     */
-    private String resourceInformation;
-
-    /**
-     * Resource identifier type.
-     */
-    private YangResourceIdentifierType resourceIdentifierType;
-
-    /**
-     * Sets resource identifier.
-     *
-     * @param resIdentifier resource identifier
-     */
-    public void setResourceIdentifier(String resIdentifier) {
-        resourceIdentifier = resIdentifier;
-    }
-
-    /**
-     * Sets the resource information.
-     *
-     * @param resInformation resource information
-     */
-    public void setResourceInformation(String resInformation) {
-        resourceInformation = resInformation;
-    }
-
-    /**
-     * Sets the resource identifier type.
-     *
-     * @param resIdent resource identifier
-     */
-    public void setResourceIdentifierType(YangResourceIdentifierType resIdent) {
-        resourceIdentifierType = resIdent;
-    }
-
-    @Override
-    public String getResourceIdentifier() {
-        return resourceIdentifier;
-    }
-
-    @Override
-    public YangResourceIdentifierType getResourceIdentifierType() {
-        return resourceIdentifierType;
-    }
-
-    @Override
-    public String getResourceInformation() {
-        return resourceInformation;
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/YchCompositeHandlerTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/YchCompositeHandlerTest.java
deleted file mode 100644
index 50f178c..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/YchCompositeHandlerTest.java
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ymsm;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.onosproject.yang.gen.v1.ydt.customs.supervisor.rev20160524.CustomssupervisorOpParam;
-import org.onosproject.yms.app.ych.defaultcodecs.YangCodecRegistry;
-import org.onosproject.yms.app.ysr.TestYangSchemaNodeProvider;
-import org.onosproject.yms.ych.YangCodecHandler;
-import org.onosproject.yms.ych.YangCompositeEncoding;
-import org.onosproject.yms.ych.YangDataTreeCodec;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static junit.framework.TestCase.assertNotNull;
-import static org.onosproject.yms.ych.YangProtocolEncodingFormat.XML;
-
-/**
- * Unit test case for YCH composite codec handler.
- */
-public class YchCompositeHandlerTest {
-    @Rule
-    public ExpectedException thrown = ExpectedException.none();
-
-    private static final String REG_PREFIX = "RegisteredDataTreeCodec ";
-    private static final String REG_ENCODE = REG_PREFIX +
-            "encodeYdtToProtocolFormat Called.";
-    private static final String REG_DECODE = REG_PREFIX +
-            "decodeProtocolDataToYdt Called.";
-    private static final String REG_COMPO_ENCODE = REG_PREFIX +
-            "encodeYdtToCompositeProtocolFormat Called.";
-    private static final String REG_COMPO_DECODE = REG_PREFIX +
-            "decodeCompositeProtocolDataToYdt Called.";
-    private static final String OVERRIDE_PREFIX = "OverriddenDataTreeCodec ";
-    private static final String OVERRIDE_ENCODE = OVERRIDE_PREFIX +
-            "encodeYdtToProtocolFormat Called.";
-    private static final String OVERRIDE_DECODE = OVERRIDE_PREFIX +
-            "decodeProtocolDataToYdt Called.";
-    private static final String OVERRIDE_COMPO_ENCODE = OVERRIDE_PREFIX +
-            "encodeYdtToCompositeProtocolFormat Called.";
-    private static final String OVERRIDE_COMPO_DECODE = OVERRIDE_PREFIX +
-            "decodeCompositeProtocolDataToYdt Called.";
-
-    private TestYangSchemaNodeProvider provider =
-            new TestYangSchemaNodeProvider();
-
-    /**
-     * Unit test case in which verifying codec handler is null or not.
-     */
-    @Test
-    public void checkForCodecHandler() {
-        YmsManager ymsManager = new YmsManager();
-        ymsManager.coreService = new MockCoreService();
-        ymsManager.activate();
-        YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler();
-        assertNotNull("Codec handler is null", yangCodecHandler);
-    }
-
-    /**
-     * Unit test case in which verifying registered codec handler for encode is
-     * null or not.
-     */
-    @Test
-    public void checkForRegisterDefaultCodecEncode() {
-        thrown.expectMessage(REG_ENCODE);
-        YangDataTreeCodec yangDataTreeCodec = new MockRegisteredDataTreeCodec();
-        YmsManager ymsManager = new YmsManager();
-        YangCodecRegistry.initializeDefaultCodec();
-        ymsManager.coreService = new MockCoreService();
-        ymsManager.activate();
-        ymsManager.registerDefaultCodec(yangDataTreeCodec, XML);
-        YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler();
-        assertNotNull("Codec handler is null", yangCodecHandler);
-
-        provider.processSchemaRegistry(null);
-        List<Object> yangModuleList = new ArrayList<>();
-
-        // Creating the object
-        Object object = CustomssupervisorOpParam.builder()
-                .supervisor("Customssupervisor").build();
-        yangModuleList.add(object);
-
-        // Get the xml string and compare
-        Map<String, String> tagAttr = new HashMap<String, String>();
-        tagAttr.put("type", "subtree");
-
-        yangCodecHandler.encodeOperation("filter", "ydt.filter-type",
-                                         tagAttr, yangModuleList,
-                                         XML, null);
-    }
-
-    /**
-     * Unit test case in which verifying registered codec handler for decode is
-     * null or not.
-     */
-    @Test
-    public void checkForRegisterDefaultCodecDecode() {
-        thrown.expectMessage(REG_DECODE);
-        YangDataTreeCodec yangDataTreeCodec = new MockRegisteredDataTreeCodec();
-        YmsManager ymsManager = new YmsManager();
-        YangCodecRegistry.initializeDefaultCodec();
-        ymsManager.coreService = new MockCoreService();
-        ymsManager.activate();
-        ymsManager.registerDefaultCodec(yangDataTreeCodec, XML);
-        YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler();
-        assertNotNull("Codec handler is null", yangCodecHandler);
-
-        provider.processSchemaRegistry(null);
-        yangCodecHandler.decode("XML String", XML, null);
-    }
-
-    /**
-     * Unit test case in which verifying registered codec handler for
-     * composite encode is null or not.
-     */
-    @Test
-    public void checkForRegisterDefaultCodecCompEncode() {
-        thrown.expectMessage(REG_COMPO_ENCODE);
-        YangDataTreeCodec yangDataTreeCodec = new MockRegisteredDataTreeCodec();
-        YmsManager ymsManager = new YmsManager();
-        YangCodecRegistry.initializeDefaultCodec();
-        ymsManager.coreService = new MockCoreService();
-        ymsManager.activate();
-        ymsManager.registerDefaultCodec(yangDataTreeCodec, XML);
-        YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler();
-        assertNotNull("Codec handler is null", yangCodecHandler);
-
-        provider.processSchemaRegistry(null);
-        // Creating the object
-        Object object = CustomssupervisorOpParam.builder()
-                .supervisor("Customssupervisor").build();
-
-        yangCodecHandler.encodeCompositeOperation("filter",
-                                                  "ydt.filter-type", object,
-                                                  XML, null);
-    }
-
-    /**
-     * Unit test case in which verifying registered codec handler for
-     * composite decode is null or not.
-     */
-    @Test
-    public void checkForRegisterDefaultCodecCompDecode() {
-        thrown.expectMessage(REG_COMPO_DECODE);
-        YangDataTreeCodec yangDataTreeCodec = new MockRegisteredDataTreeCodec();
-        YmsManager ymsManager = new YmsManager();
-        YangCodecRegistry.initializeDefaultCodec();
-        ymsManager.coreService = new MockCoreService();
-        ymsManager.activate();
-        ymsManager.registerDefaultCodec(yangDataTreeCodec, XML);
-        YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler();
-        assertNotNull("Codec handler is null", yangCodecHandler);
-
-        provider.processSchemaRegistry(null);
-        // Creating the object
-        YangCompositeEncoding yangCompositeEncoding =
-                new MockYangCompositeEncoding();
-        yangCodecHandler.decode(yangCompositeEncoding, XML, null);
-    }
-
-    /**
-     * Unit test case in which verifying overridden codec handler for encode is
-     * null or not.
-     */
-    @Test
-    public void checkForOverriddenDataTreeCodecEncode() {
-        thrown.expectMessage(OVERRIDE_ENCODE);
-        YangDataTreeCodec yangDataTreeCodec = new MockRegisteredDataTreeCodec();
-        YmsManager ymsManager = new YmsManager();
-        ymsManager.coreService = new MockCoreService();
-        ymsManager.activate();
-        ymsManager.registerDefaultCodec(yangDataTreeCodec, XML);
-        YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler();
-        assertNotNull("Codec handler is null", yangCodecHandler);
-
-        YangDataTreeCodec overriddenCodec = new MockOverriddenDataTreeCodec();
-        yangCodecHandler.registerOverriddenCodec(overriddenCodec, XML);
-
-        provider.processSchemaRegistry(null);
-        List<Object> yangModuleList = new ArrayList<>();
-
-        // Creating the object
-        Object object = CustomssupervisorOpParam.builder()
-                .supervisor("Customssupervisor").build();
-        yangModuleList.add(object);
-
-        // Get the xml string and compare
-        Map<String, String> tagAttr = new HashMap<String, String>();
-        tagAttr.put("type", "subtree");
-        yangCodecHandler.encodeOperation("filter", "ydt.filter-type",
-                                         tagAttr, yangModuleList,
-                                         XML, null);
-    }
-
-    /**
-     * Unit test case in which verifying overridden codec handler for decode is
-     * null or not.
-     */
-    @Test
-    public void checkForOverriddenDataTreeCodecDecode() {
-        thrown.expectMessage(OVERRIDE_DECODE);
-        YangDataTreeCodec yangDataTreeCodec = new MockRegisteredDataTreeCodec();
-        YmsManager ymsManager = new YmsManager();
-        ymsManager.coreService = new MockCoreService();
-        ymsManager.activate();
-        ymsManager.registerDefaultCodec(yangDataTreeCodec, XML);
-        YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler();
-        assertNotNull("Codec handler is null", yangCodecHandler);
-
-        YangDataTreeCodec overriddenCodec = new MockOverriddenDataTreeCodec();
-        yangCodecHandler.registerOverriddenCodec(overriddenCodec, XML);
-
-        provider.processSchemaRegistry(null);
-        yangCodecHandler.decode("XML String", XML, null);
-    }
-
-    /**
-     * Unit test case in which verifying overridden codec handler for
-     * composite encode is null or not.
-     */
-    @Test
-    public void checkForOverriddenDataTreeCodecCompoEncode() {
-        thrown.expectMessage(OVERRIDE_COMPO_ENCODE);
-        YangDataTreeCodec yangDataTreeCodec = new MockRegisteredDataTreeCodec();
-        YmsManager ymsManager = new YmsManager();
-        ymsManager.coreService = new MockCoreService();
-        ymsManager.activate();
-        ymsManager.registerDefaultCodec(yangDataTreeCodec, XML);
-        YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler();
-        assertNotNull("Codec handler is null", yangCodecHandler);
-
-        YangDataTreeCodec overriddenCodec = new MockOverriddenDataTreeCodec();
-        yangCodecHandler.registerOverriddenCodec(overriddenCodec, XML);
-
-        provider.processSchemaRegistry(null);
-        // Creating the object
-        Object object = CustomssupervisorOpParam.builder()
-                .supervisor("Customssupervisor").build();
-        yangCodecHandler.encodeCompositeOperation("filter",
-                                                  "ydt.filter-type",
-                                                  object,
-                                                  XML, null);
-    }
-
-    /**
-     * Unit test case in which verifying overridden codec handler for
-     * composite decode is null or not.
-     */
-    @Test
-    public void checkForOverriddenDataTreeCodecCompoDecode() {
-        thrown.expectMessage(OVERRIDE_COMPO_DECODE);
-        YangDataTreeCodec yangDataTreeCodec = new MockRegisteredDataTreeCodec();
-        YmsManager ymsManager = new YmsManager();
-        ymsManager.coreService = new MockCoreService();
-        ymsManager.activate();
-        ymsManager.registerDefaultCodec(yangDataTreeCodec, XML);
-        YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler();
-        assertNotNull("Codec handler is null", yangCodecHandler);
-
-        YangDataTreeCodec overriddenCodec = new MockOverriddenDataTreeCodec();
-        yangCodecHandler.registerOverriddenCodec(overriddenCodec, XML);
-
-        provider.processSchemaRegistry(null);
-        // Verify the received object list
-        YangCompositeEncoding yangCompositeEncoding =
-                new MockYangCompositeEncoding();
-        yangCodecHandler.decode(yangCompositeEncoding, XML, null);
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobAugmentTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobAugmentTest.java
deleted file mode 100644
index c366c4b..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobAugmentTest.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Test;
-import org.onosproject.yang.gen.v1.urn.ip.topo.rev20140101.ymsiptopology.node.AugmentedTopoNode;
-import org.onosproject.yang.gen.v1.urn.ip.topo.rev20140101.ymsiptopology.node.DefaultAugmentedTopoNode;
-import org.onosproject.yang.gen.v1.urn.topo.rev20140101.YmsTopologyOpParam;
-import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.DefaultNode;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.io.IOException;
-
-import static org.hamcrest.core.Is.is;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThat;
-import static org.onosproject.yms.app.yob.YobTestUtils.NODE;
-import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE;
-import static org.onosproject.yms.app.yob.YobTestUtils.ROUTER_ID;
-import static org.onosproject.yms.app.yob.YobTestUtils.ROUTER_IP;
-import static org.onosproject.yms.app.yob.YobTestUtils.STR_LEAF_VALUE;
-import static org.onosproject.yms.app.yob.YobTestUtils.TOPOLOGY;
-import static org.onosproject.yms.ydt.YdtContextOperationType.NONE;
-
-/**
- * Test the YANG object building for the YANG data tree based on the non
- * schema augmented nodes.
- */
-public class YobAugmentTest {
-
-    private YobTestUtils utils = YobTestUtils.instance();
-
-    @Test
-    public void augmentedLeaf() throws IOException {
-
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-
-        ydtBuilder.addChild(TOPOLOGY, null, NONE);
-        ydtBuilder.addChild(NODE, null);
-        ydtBuilder.addLeaf(ROUTER_ID, "urn:ip:topo", STR_LEAF_VALUE);
-
-        YdtContext logicalRoot = ydtBuilder.getRootNode();
-        YdtExtendedContext appRoot =
-                (YdtExtendedContext) logicalRoot.getFirstChild();
-
-        DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
-        Object yangObject = yobBuilder.getYangObject(appRoot,
-                                                     utils.schemaRegistry());
-        assertNotNull("Fail to create augmented YANG object", yangObject);
-
-        assertEquals("invalid augmented node created", YmsTopologyOpParam.class,
-                     yangObject.getClass());
-
-        YmsTopologyOpParam topology = (YmsTopologyOpParam) yangObject;
-        assertNotNull("failed to build augmented node", topology.node());
-        assertEquals("Single node entry is expected", 1, topology.node().size());
-        assertEquals("Node type is not DefaultNode", DefaultNode.class,
-                     topology.node().get(0).getClass());
-
-        DefaultNode node = (DefaultNode) topology.node().get(0);
-        assertNotNull("Augmented info is missing", node.yangAugmentedInfo(
-                AugmentedTopoNode.class));
-        assertEquals("Augmented class is incorrect",
-                     DefaultAugmentedTopoNode.class,
-                     node.yangAugmentedInfo(AugmentedTopoNode.class)
-                             .getClass());
-
-        DefaultAugmentedTopoNode augmentedNode = (DefaultAugmentedTopoNode)
-                node.yangAugmentedInfo(AugmentedTopoNode.class);
-        assertThat("Augmented leaf value is incorrect",
-                   augmentedNode.routerId(), is(STR_LEAF_VALUE));
-    }
-
-    @Test
-    public void augmentedLeaves() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-
-        ydtBuilder.addChild(TOPOLOGY, null, NONE);
-        ydtBuilder.addChild(NODE, null);
-        ydtBuilder.addLeaf(ROUTER_ID, "urn:ip:topo", STR_LEAF_VALUE);
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf(ROUTER_IP, "urn:ip:topo", STR_LEAF_VALUE);
-
-        YdtContext logicalRoot = ydtBuilder.getRootNode();
-        YdtExtendedContext appRoot =
-                (YdtExtendedContext) logicalRoot.getFirstChild();
-
-        DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
-        Object yangObject = yobBuilder.getYangObject(appRoot,
-                                                     utils.schemaRegistry());
-        assertNotNull("Fail to create augmented YANG object", yangObject);
-
-        assertEquals("invalid augmented node created",
-                     YmsTopologyOpParam.class, yangObject.getClass());
-
-        YmsTopologyOpParam topology = (YmsTopologyOpParam) yangObject;
-        assertNotNull("failed to build augmented node", topology.node());
-        assertEquals("Single node entry is expected", 1,
-                     topology.node().size());
-        assertEquals("Node type is not DefaultNode", DefaultNode.class,
-                     topology.node().get(0).getClass());
-
-        DefaultNode node = (DefaultNode) topology.node().get(0);
-        assertNotNull("Augmented info is missing", node.yangAugmentedInfo(
-                AugmentedTopoNode.class));
-        assertEquals("Augmented class is incorrect",
-                     DefaultAugmentedTopoNode.class,
-                     node.yangAugmentedInfo(AugmentedTopoNode.class)
-                             .getClass());
-
-        DefaultAugmentedTopoNode augmentedNode = (DefaultAugmentedTopoNode)
-                node.yangAugmentedInfo(AugmentedTopoNode.class);
-        assertThat("Augmented router id is incorrect",
-                   augmentedNode.routerId(), is(STR_LEAF_VALUE));
-        assertThat("Augmented router ip is incorrect",
-                   augmentedNode.routerIp(), is(STR_LEAF_VALUE));
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBinaryTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBinaryTest.java
deleted file mode 100644
index 2b3d4cb..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBinaryTest.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Test;
-import org.onosproject.yang.gen.v1.ydt.binarytest.rev20160524.BinarytestOpParam;
-import org.onosproject.yang.gen.v1.ydt.binarytest.rev20160524.binarytest.cont1.AugmentedCont1;
-import org.onosproject.yang.gen.v1.ydt.binarytest.rev20160524.binarytest.food.snack.Sportsarena;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.io.IOException;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.IsNull.notNullValue;
-import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE;
-
-/**
- * Test the YANG object building for the YANG data tree based on the binary.
- */
-public class YobBinaryTest {
-
-    private YobTestUtils utils = YobTestUtils.instance();
-
-    @Test
-    public void testBinaryInLeaf() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("binarytest", "ydt.binarytest");
-        ydtBuilder.addChild("binaryList", null);
-        ydtBuilder.addLeaf("binary", null, "YmluYXJ5");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        BinarytestOpParam binarytestOpParam = ((BinarytestOpParam) yangObject);
-
-        byte[] binaryValue = binarytestOpParam.binaryList().get(0).binary();
-        String value = new String(binaryValue);
-        assertThat(value, is("binary"));
-    }
-
-    @Test
-    public void testBinaryInTypedef() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("binarytest", "ydt.binarytest");
-        ydtBuilder.addLeaf("name", null, "YmluYXJ5");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        BinarytestOpParam binarytestOpParam = ((BinarytestOpParam) yangObject);
-
-        byte[] binaryValue = binarytestOpParam.name().binary();
-        String value = new String(binaryValue);
-        assertThat(value, is("binary"));
-    }
-
-    @Test
-    public void testBinaryInGrouping() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("binarytest", "ydt.binarytest");
-        ydtBuilder.addChild("cont1", "ydt.binarytest");
-        ydtBuilder.addLeaf("surname", null, "YmluYXJ5");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        BinarytestOpParam binarytestOpParam = ((BinarytestOpParam) yangObject);
-
-        byte[] binaryValue = binarytestOpParam.cont1().surname();
-        String value = new String(binaryValue);
-        assertThat(value, is("binary"));
-    }
-
-    @Test
-    public void testBinaryInAugment() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("binarytest", "ydt.binarytest");
-        ydtBuilder.addChild("cont1", "ydt.binarytest");
-        ydtBuilder.addLeaf("lastname", null, "YmluYXJ5");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        BinarytestOpParam binarytestOpParam = ((BinarytestOpParam) yangObject);
-
-        AugmentedCont1 augmentedCont1 = (AugmentedCont1) binarytestOpParam.cont1()
-                .yangAugmentedInfo(AugmentedCont1.class);
-        byte[] binaryValue = augmentedCont1.lastname();
-        String value = new String(binaryValue);
-        assertThat(value, is("binary"));
-    }
-
-    @Test
-    public void testBinaryInCase() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("binarytest", "ydt.binarytest");
-        ydtBuilder.addChild("food", "ydt.binarytest");
-        ydtBuilder.addLeaf("pretzel", null, "YmluYXJ5");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        BinarytestOpParam binarytestOpParam = ((BinarytestOpParam) yangObject);
-        Sportsarena sportsArena = ((Sportsarena) binarytestOpParam.food()
-                .snack());
-        byte[] binaryValue = sportsArena.pretzel();
-        String value = new String(binaryValue);
-        assertThat(value, is("binary"));
-    }
-
-    @Test
-    public void testBinaryInUnion() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("binarytest", "ydt.binarytest");
-        ydtBuilder.addLeaf("middlename", null, "YmluYXJ5");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        BinarytestOpParam binarytestOpParam = ((BinarytestOpParam) yangObject);
-
-        byte[] binaryValue = binarytestOpParam.middlename().binary();
-        String value = new String(binaryValue);
-        assertThat(value, is("binary"));
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBitTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBitTest.java
deleted file mode 100644
index 565576f..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBitTest.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Test;
-import org.onosproject.yang.gen.v1.ydt.bit.rev20160524.BitOpParam;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ydt.YmsOperationType;
-
-import java.io.IOException;
-
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE;
-
-/**
- * Test the YANG object building for the YDT based on the bits.
- */
-public class YobBitTest {
-
-    private YobTestUtils utils = YobTestUtils.instance();
-
-    @Test
-    public void testBitsInLeaf() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("bit", "ydt.bit");
-        ydtBuilder.addChild("bitList", null);
-        ydtBuilder.addLeaf("bit", null, "disable-nagle");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild("bitList", null);
-        ydtBuilder.addLeaf("bit", null, "auto-sense-speed");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addChild("bitList", null);
-        ydtBuilder.addLeaf("bit", null, "ten-Mb-only");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        BitOpParam bitOpParam = ((BitOpParam) yangObject);
-
-        assertThat(bitOpParam.bitList().get(0).bit().get(0), is(true));
-        assertThat(bitOpParam.bitList().get(0).bit().get(1), is(false));
-        assertThat(bitOpParam.bitList().get(1).bit().get(0), is(false));
-        assertThat(bitOpParam.bitList().get(1).bit().get(1), is(true));
-        assertThat(bitOpParam.bitList().get(2).bit().get(0), is(false));
-        assertThat(bitOpParam.bitList().get(2).bit().get(1), is(false));
-        assertThat(bitOpParam.bitList().get(2).bit().get(2), is(true));
-        assertThat(bitOpParam.bitList().get(2).bit().get(2), is(true));
-    }
-
-    @Test
-    public void testBitsInTypedef() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("bit", "ydt.bit");
-        ydtBuilder.addLeaf("name", null, "bit3");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        BitOpParam bitOpParam = ((BitOpParam) yangObject);
-
-        assertThat(bitOpParam.name().bits().get(0), is(false));
-        assertThat(bitOpParam.name().bits().get(3), is(true));
-    }
-
-    @Test
-    public void testBitsQuery() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, YmsOperationType.QUERY_REQUEST,
-                utils.schemaRegistry(), true);
-        ydtBuilder.addChild("bit", "ydt.bit");
-        ydtBuilder.addChild("name", "ydt.bit");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        BitOpParam bitOpParam = ((BitOpParam) yangObject);
-        assertThat(bitOpParam.selectLeafFlags().get(1), is(true));
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBooleanTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBooleanTest.java
deleted file mode 100644
index ea87ca7..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBooleanTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.YdtTestUtils;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.lang.reflect.Field;
-import java.util.List;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-public class YobBooleanTest {
-
-    private static final String BOOLEAN_LIST = "booleanList";
-    private static final String AUTO_PREFIX_BOOLEAN = "yangAutoPrefixBoolean";
-
-    /*
-        BOOLEAN
-        Positive scenario
-        input with in true and false
-    */
-    @Test
-    public void positiveTest() {
-        YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.booleanYdt();
-        validateYangObject(defaultYdtBuilder);
-    }
-
-    private void validateYangObject(YangRequestWorkBench defaultYdtBuilder) {
-
-        YdtContext rootCtx = defaultYdtBuilder.getRootNode();
-
-        YdtContext childCtx = rootCtx.getFirstChild();
-
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, YdtTestUtils
-                        .getSchemaRegistry());
-        assertNotNull(yangObject);
-        try {
-
-            Field field = yangObject.getClass().getDeclaredField(BOOLEAN_LIST);
-            field.setAccessible(true);
-            List booleanList = (List) field.get(yangObject);
-            Field invalidInterval = booleanList.get(0).getClass()
-                    .getDeclaredField(AUTO_PREFIX_BOOLEAN);
-            invalidInterval.setAccessible(true);
-            assertTrue((boolean) invalidInterval.get(booleanList.get(0)));
-            assertFalse((boolean) invalidInterval.get(booleanList.get(1)));
-        } catch (NoSuchFieldException | IllegalAccessException e) {
-            Assert.fail();
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobChoiceTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobChoiceTest.java
deleted file mode 100644
index fdad2ec..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobChoiceTest.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Test;
-import org.onosproject.yang.gen.v1.urn.topo.rev20140101.YmsTopologyOpParam;
-import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.DefaultNode;
-import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.Node;
-import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.node.choice1.Case1a;
-import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.node.choice1.Case1b;
-import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.node.choice1.DefaultCase1a;
-import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.node.choice1.DefaultCase1b;
-import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.node.choice1.case1b.choice1b.Case1Bi;
-import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.node.choice1.case1b.choice1b.DefaultCase1Bi;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.io.IOException;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.onosproject.yms.app.yob.YobTestUtils.LEAF_1A1;
-import static org.onosproject.yms.app.yob.YobTestUtils.LEAF_1A2;
-import static org.onosproject.yms.app.yob.YobTestUtils.LEAF_1BIA;
-import static org.onosproject.yms.app.yob.YobTestUtils.LEAF_1BIB;
-import static org.onosproject.yms.app.yob.YobTestUtils.NODE;
-import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE;
-import static org.onosproject.yms.app.yob.YobTestUtils.STR_LEAF_VALUE;
-import static org.onosproject.yms.app.yob.YobTestUtils.TOPOLOGY;
-import static org.onosproject.yms.ydt.YdtContextOperationType.NONE;
-
-/**
- * Test the YANG object building for the YANG data tree based on the non
- * schema choice and case nodes.
- */
-public class YobChoiceTest {
-
-    private YobTestUtils utils = YobTestUtils.instance();
-
-    @Test
-    public void caseInChoice() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-
-        ydtBuilder.addChild(TOPOLOGY, null, NONE);
-        ydtBuilder.addChild(NODE, null);
-        ydtBuilder.addLeaf(LEAF_1A1, null, STR_LEAF_VALUE);
-
-        YdtContext logicalRoot = ydtBuilder.getRootNode();
-        YdtExtendedContext appRoot =
-                (YdtExtendedContext) logicalRoot.getFirstChild();
-
-        DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
-        Object yangObject = yobBuilder.getYangObject(appRoot,
-                                                     utils.schemaRegistry());
-        assertNotNull(yangObject);
-        assertEquals("YANG object created is not topology object",
-                     YmsTopologyOpParam.class, yangObject.getClass());
-
-        YmsTopologyOpParam topology = (YmsTopologyOpParam) yangObject;
-        assertNotNull("Failed to build the object", topology.node());
-        assertEquals("Single node entry is expected", 1,
-                     topology.node().size());
-        assertEquals("Node type is not DefaultNode", DefaultNode.class,
-                     topology.node().get(0).getClass());
-
-        Node node = topology.node().get(0);
-        assertNotNull("choice1 is not set in node", node.choice1());
-        assertEquals("choice 1 type is not ", DefaultCase1a.class,
-                     node.choice1().getClass());
-
-        Case1a case1a = (Case1a) node.choice1();
-        assertNotNull("leaf1a1 is not set in case", case1a.leaf1A1());
-        assertEquals("leaf1a1 type is not correct", String.class,
-                     case1a.leaf1A1().getClass());
-        assertEquals("leaf1a1 value is not correct", STR_LEAF_VALUE,
-                     case1a.leaf1A1());
-
-    }
-
-    @Test
-    public void caseWithMultiAttribute() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-
-        ydtBuilder.addChild(TOPOLOGY, null, NONE);
-        ydtBuilder.addChild(NODE, null);
-        ydtBuilder.addLeaf(LEAF_1A1, null, STR_LEAF_VALUE);
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf(LEAF_1A2, null, STR_LEAF_VALUE);
-
-        YdtContext logicalRoot = ydtBuilder.getRootNode();
-        YdtExtendedContext appRoot =
-                (YdtExtendedContext) logicalRoot.getFirstChild();
-
-        DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
-        Object yangObject = yobBuilder.getYangObject(appRoot,
-                                                     utils.schemaRegistry());
-        assertNotNull(yangObject);
-        assertEquals("YANG object created is not topology object",
-                     YmsTopologyOpParam.class, yangObject.getClass());
-
-        YmsTopologyOpParam topology = (YmsTopologyOpParam) yangObject;
-        assertNotNull("Failed to build the object", topology.node());
-        assertEquals("Single node entry is expected", 1,
-                     topology.node().size());
-        assertEquals("Node type is not DefaultNode", DefaultNode.class,
-                     topology.node().get(0).getClass());
-
-        Node node = topology.node().get(0);
-        assertNotNull("choice1 is not set in node", node.choice1());
-        assertEquals("choice 1 type is not ", DefaultCase1a.class,
-                     node.choice1().getClass());
-
-        Case1a case1a = (Case1a) node.choice1();
-        assertNotNull("leaf1a1 is not set in case", case1a.leaf1A1());
-        assertEquals("leaf1a1 type is not correct", String.class,
-                     case1a.leaf1A1().getClass());
-        assertEquals("leaf1a1 value is not correct", STR_LEAF_VALUE,
-                     case1a.leaf1A1());
-
-        assertNotNull("leaf1a2 is not set in case", case1a.leaf1A2());
-        assertEquals("leaf1a2 type is not correct", String.class,
-                     case1a.leaf1A2().getClass());
-        assertEquals("leaf1a1 value is not correct", STR_LEAF_VALUE,
-                     case1a.leaf1A1());
-
-    }
-
-    @Test
-    public void recursiveChoice() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-
-        ydtBuilder.addChild(TOPOLOGY, null, NONE);
-        ydtBuilder.addChild(NODE, null);
-        ydtBuilder.addLeaf(LEAF_1BIA, null, STR_LEAF_VALUE);
-
-        YdtContext logicalRoot = ydtBuilder.getRootNode();
-        YdtExtendedContext appRoot =
-                (YdtExtendedContext) logicalRoot.getFirstChild();
-
-        DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
-        Object yangObject = yobBuilder.getYangObject(appRoot,
-                                                     utils.schemaRegistry());
-        assertNotNull(yangObject);
-        assertEquals("YANG object created is not topology object",
-                     YmsTopologyOpParam.class, yangObject.getClass());
-
-        YmsTopologyOpParam topology = (YmsTopologyOpParam) yangObject;
-        assertNotNull("Failed to build the object", topology.node());
-        assertEquals("Single node entry is expected", 1,
-                     topology.node().size());
-        assertEquals("Node type is not DefaultNode", DefaultNode.class,
-                     topology.node().get(0).getClass());
-
-        Node node = topology.node().get(0);
-        assertNotNull("Choice 1 is not set in Node", node.choice1());
-        assertEquals("Choice 1 is not of type DefaultCase1b",
-                     DefaultCase1b.class, node.choice1().getClass());
-
-        Case1b case1b = (Case1b) node.choice1();
-        assertNotNull("Case1b does not have child choice1b ",
-                      case1b.choice1b());
-        assertEquals("choice1b is not of type DefaultCase1Bi",
-                     DefaultCase1Bi.class, case1b.choice1b().getClass());
-
-        Case1Bi case1Bi = (Case1Bi) case1b.choice1b();
-        assertNotNull("leaf1bia is not set", case1Bi.leaf1Bia());
-        assertEquals("leaf1bia type is not string", String.class,
-                     case1Bi.leaf1Bia().getClass());
-        assertEquals("leaf1bia value is wrong", STR_LEAF_VALUE,
-                     case1Bi.leaf1Bia());
-    }
-
-    @Test
-    public void recursiveChoiceWithMultipleAttribute() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-
-        ydtBuilder.addChild(TOPOLOGY, null, NONE);
-        ydtBuilder.addChild(NODE, null);
-        ydtBuilder.addLeaf(LEAF_1BIA, null, STR_LEAF_VALUE);
-        ydtBuilder.traverseToParent();
-        ydtBuilder.addLeaf(LEAF_1BIB, null, STR_LEAF_VALUE);
-
-        YdtContext logicalRoot = ydtBuilder.getRootNode();
-        YdtExtendedContext appRoot =
-                (YdtExtendedContext) logicalRoot.getFirstChild();
-
-        DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
-        Object yangObject = yobBuilder.getYangObject(appRoot,
-                                                     utils.schemaRegistry());
-        assertNotNull(yangObject);
-        assertEquals("YANG object created is not topology object",
-                     YmsTopologyOpParam.class, yangObject.getClass());
-
-        YmsTopologyOpParam topology = (YmsTopologyOpParam) yangObject;
-        assertNotNull("Failed to build the object", topology.node());
-        assertEquals("Single node entry is expected", 1,
-                     topology.node().size());
-        assertEquals("Node type is not DefaultNode", DefaultNode.class,
-                     topology.node().get(0).getClass());
-
-        Node node = topology.node().get(0);
-        assertNotNull("Choice 1 is not set in Node", node.choice1());
-        assertEquals("Choice 1 is not of type DefaultCase1b",
-                     DefaultCase1b.class,
-                     node.choice1().getClass());
-
-        Case1b case1b = (Case1b) node.choice1();
-        assertNotNull("Case1b does not have child choice1b ",
-                      case1b.choice1b());
-        assertEquals("choice1b is not of type DefaultCase1Bi",
-                     DefaultCase1Bi.class,
-                     case1b.choice1b().getClass());
-
-        Case1Bi case1Bi = (Case1Bi) case1b.choice1b();
-        assertNotNull("leaf1bia is not set", case1Bi.leaf1Bia());
-        assertEquals("leaf1bia type is not string", String.class,
-                     case1Bi.leaf1Bia().getClass());
-        assertEquals("leaf1bia value is wrong", STR_LEAF_VALUE,
-                     case1Bi.leaf1Bia());
-
-        assertNotNull("leaf1bib is not set", case1Bi.leaf1Bib());
-        assertEquals("leaf1bia type is not string", String.class,
-                     case1Bi.leaf1Bib().getClass());
-        assertEquals("leaf1bia value is wrong", STR_LEAF_VALUE,
-                     case1Bi.leaf1Bib());
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobDecimal64Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobDecimal64Test.java
deleted file mode 100644
index d0b9f1e..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobDecimal64Test.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.YdtTestUtils;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.lang.reflect.Field;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-public class YobDecimal64Test {
-
-    /*
-
-    Positive scenario
-
-    input at boundary for decimal64 with fraction 2
-        i. min value
-        ii. max value
-
-    input at boundary for decimal64 with minimum fraction
-        i. min value
-        ii. mid value
-        iii. max value
-
-    input at boundary for decimal64 with maximum fraction
-        i. min value
-        ii. mid value
-        iii. max value
-
-    input with in range
-        if range is 10 to 100 for integer
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-    input with multi interval range
-        if range is 10..40 | 50..100 for decimal64
-            i.1. input 11
-            i.2. input 10
-            i.3. input 40
-            i.4. input 50
-            i.5. input 55
-            i.6. input 100
-
-        if range is "min .. 3.14 | 10 | 20..max" for decimal64
-            i.1. input min
-            i.2. input 2.505
-            i.3. input 3.14
-            i.4. input 10
-            i.5. input 20
-            i.6. input 92233720368547757
-            i.7. input 92233720368547758.07
-
-    */
-    @Test
-    public void positiveTest() {
-        YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.decimal64Ydt();
-        validateYangObject(defaultYdtBuilder);
-    }
-
-    private void validateYangObject(YangRequestWorkBench defaultYdtBuilder) {
-
-        YdtContext rootCtx = defaultYdtBuilder.getRootNode();
-
-        YdtContext childCtx = rootCtx.getFirstChild();
-
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, YdtTestUtils
-                        .getSchemaRegistry());
-        assertNotNull(yangObject);
-        try {
-            Field negInt = yangObject.getClass().getDeclaredField("negInt");
-            negInt.setAccessible(true);
-            assertEquals("-92233720368547758.08", negInt
-                    .get(yangObject).toString());
-            Field negIntWithMaxFraction = yangObject.getClass()
-                    .getDeclaredField("negIntWithMaxFraction");
-            negIntWithMaxFraction.setAccessible(true);
-            assertEquals("-9.223372036854775808", negIntWithMaxFraction
-                    .get(yangObject).toString());
-            Field negIntWithMinFraction = yangObject.getClass()
-                    .getDeclaredField("negIntWithMinFraction");
-            negIntWithMinFraction.setAccessible(true);
-            assertEquals("-922337203685477580.8", negIntWithMinFraction
-                    .get(yangObject).toString());
-            Field posInt = yangObject.getClass()
-                    .getDeclaredField("posInt");
-            posInt.setAccessible(true);
-            assertEquals("92233720368547758.07", posInt
-                    .get(yangObject).toString());
-            Field posIntWithMaxFraction = yangObject
-                    .getClass().getDeclaredField("posIntWithMaxFraction");
-            posIntWithMaxFraction.setAccessible(true);
-            assertEquals("9.223372036854775807", posIntWithMaxFraction
-                    .get(yangObject).toString());
-            Field posIntWithMinFraction = yangObject.getClass()
-                    .getDeclaredField("posIntWithMinFraction");
-            posIntWithMinFraction.setAccessible(true);
-            assertEquals("922337203685477580.7", posIntWithMinFraction
-                    .get(yangObject).toString());
-            Field minIntWithRange = yangObject.getClass()
-                    .getDeclaredField("minIntWithRange");
-            minIntWithRange.setAccessible(true);
-            assertEquals("10", minIntWithRange
-                    .get(yangObject).toString());
-            Field midIntWithRange = yangObject
-                    .getClass().getDeclaredField("midIntWithRange");
-            midIntWithRange.setAccessible(true);
-            assertEquals("11", midIntWithRange.get(yangObject).toString());
-            Field maxIntWithRange = yangObject
-                    .getClass().getDeclaredField("maxIntWithRange");
-            maxIntWithRange.setAccessible(true);
-            assertEquals("100", maxIntWithRange.get(yangObject).toString());
-        } catch (IllegalAccessException | NoSuchFieldException e) {
-            Assert.fail();
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobEmptyTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobEmptyTest.java
deleted file mode 100644
index 6a3fc05..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobEmptyTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.ydt.YdtTestUtils;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.lang.reflect.Field;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-
-/**
- * Test the YANG object building for the YANG data tree based on the schema
- * nodes with empty data type.
- */
-public class YobEmptyTest {
-
-    /*
-        EMPTY
-        Positive scenario
-        input with in empty.
-    */
-    @Test
-    public void positiveTest() {
-        YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.emptyTypeYdt();
-        validateYangObject(defaultYdtBuilder);
-    }
-
-    private void validateYangObject(YangRequestWorkBench defaultYdtBuilder) {
-        YdtContext rootCtx = defaultYdtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, YdtTestUtils
-                        .getSchemaRegistry());
-        assertNotNull(yangObject);
-
-        try {
-            Field field = yangObject.getClass().getDeclaredField("emptyList");
-            field.setAccessible(true);
-            List booleanList = (List) field.get(yangObject);
-            Field invalidInterval = booleanList.get(0)
-                    .getClass().getDeclaredField("empty");
-            invalidInterval.setAccessible(true);
-            assertEquals(true, invalidInterval.get(booleanList.get(0)));
-        } catch (NoSuchFieldException | IllegalAccessException e) {
-            fail();
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobEnumTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobEnumTest.java
deleted file mode 100644
index 48eda96..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobEnumTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.YdtTestUtils;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.lang.reflect.Field;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-public class YobEnumTest {
-
-/*
-    ENUM
-
-    Positive scenario
-
-        input with in enum
-        input with "ten"
-        input with "hundred"
-        input with "thousand"
-*/
-
-    @Test
-    public void positiveTest() {
-        YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.enumYdt();
-        validateYangObject(defaultYdtBuilder);
-    }
-
-    private void validateYangObject(YangRequestWorkBench defaultYdtBuilder) {
-
-        YdtContext rootCtx = defaultYdtBuilder.getRootNode();
-
-        YdtContext childCtx = rootCtx.getFirstChild();
-
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, YdtTestUtils
-                        .getSchemaRegistry());
-        assertNotNull(yangObject);
-        try {
-            Field field = yangObject.getClass().getDeclaredField("enumList");
-            field.setAccessible(true);
-            List enumList = (List) field.get(yangObject);
-            assertEquals(false, enumList.isEmpty());
-            Field enumleaf = enumList.get(0)
-                    .getClass().getDeclaredField("enumleaf");
-            enumleaf.setAccessible(true);
-            assertEquals("ten", enumleaf
-                    .get(enumList.get(0)).toString().toLowerCase());
-            assertEquals("hundred", enumleaf
-                    .get(enumList.get(1)).toString().toLowerCase());
-            assertEquals("thousand", enumleaf
-                    .get(enumList.get(2)).toString().toLowerCase());
-        } catch (IllegalAccessException | NoSuchFieldException e) {
-            Assert.fail();
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobGroupingUsesTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobGroupingUsesTest.java
deleted file mode 100644
index 08b2484..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobGroupingUsesTest.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Test;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.YmsIetfNetworkOpParam;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.networksstate.Network;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.YmsNetworkTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ymsnetworktopology.networks.network.AugmentedNdNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ymsnetworktopology.networks.network.DefaultAugmentedNdNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ymsnetworktopology.networks.network.augmentedndnetwork.Link;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.YmsIetfTeTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.YmsIetfTeTopologyOpParam;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.TeAdminStatus;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.networks.network.link.AugmentedNtLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.networks.network.link.DefaultAugmentedNtLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.teadminstatus.TeAdminStatusEnum;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.telinkconfig.bundlestacklevel.DefaultBundle;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.telinkconfig.bundlestacklevel.bundle.bundledlinks.BundledLink;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.io.IOException;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.IsNull.notNullValue;
-import static org.onosproject.yms.app.yob.YobTestUtils.ADMIN_STATUS;
-import static org.onosproject.yms.app.yob.YobTestUtils.BUNDLED_LINK;
-import static org.onosproject.yms.app.yob.YobTestUtils.BUNDLED_LINKS;
-import static org.onosproject.yms.app.yob.YobTestUtils.CONFIG;
-import static org.onosproject.yms.app.yob.YobTestUtils.IETF_TE_TOPOLOGY;
-import static org.onosproject.yms.app.yob.YobTestUtils.LINK;
-import static org.onosproject.yms.app.yob.YobTestUtils.NETWORK;
-import static org.onosproject.yms.app.yob.YobTestUtils.NETWORKS;
-import static org.onosproject.yms.app.yob.YobTestUtils.NETWORKS_STATE;
-import static org.onosproject.yms.app.yob.YobTestUtils.NETWORK_REF;
-import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE;
-import static org.onosproject.yms.app.yob.YobTestUtils.SEQUENCE;
-import static org.onosproject.yms.app.yob.YobTestUtils.STR_LEAF_VALUE;
-import static org.onosproject.yms.app.yob.YobTestUtils.TE;
-import static org.onosproject.yms.app.yob.YobTestUtils.TE_LINK_TEMPLATE;
-import static org.onosproject.yms.app.yob.YobTestUtils.TE_NODE_ATTRIBUTES;
-import static org.onosproject.yms.app.yob.YobTestUtils.TE_NODE_EVENT;
-import static org.onosproject.yms.app.yob.YobTestUtils.UP;
-import static org.onosproject.yms.app.yob.YobTestUtils.YMS_IETF_NETWORK;
-import static org.onosproject.yms.app.yob.YobTestUtils.YMS_NETWORK_TOPOLOGY;
-import static org.onosproject.yms.ydt.YdtContextOperationType.CREATE;
-
-/**
- * Test the YANG object building for the YANG data tree based on the grouping
- * and uses nodes.
- */
-public class YobGroupingUsesTest {
-
-    private YobTestUtils utils = YobTestUtils.instance();
-
-    @Test
-    public void testGroupingUsesLeaf() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild(YMS_IETF_NETWORK, null, CREATE);
-        ydtBuilder.addChild(NETWORKS_STATE, null);
-        ydtBuilder.addChild(NETWORK, null);
-        ydtBuilder.addLeaf(NETWORK_REF, null, STR_LEAF_VALUE);
-        YdtContext logicalRoot = ydtBuilder.getRootNode();
-        YdtExtendedContext appRoot =
-                (YdtExtendedContext) logicalRoot.getFirstChild();
-
-        DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
-        Object yangObject = yobBuilder.getYangObject(appRoot,
-                                                     utils.schemaRegistry());
-        assertThat(yangObject, is(notNullValue()));
-        YmsIetfNetworkOpParam ietfNetwork = (YmsIetfNetworkOpParam) yangObject;
-        Network network = ietfNetwork.networksState().network().iterator().next();
-        assertThat(network.networkRef(), is(STR_LEAF_VALUE));
-    }
-
-    @Test
-    public void testGroupingUsesContainer() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild(IETF_TE_TOPOLOGY, null, CREATE);
-        ydtBuilder.addChild(TE_NODE_EVENT, null);
-        ydtBuilder.addChild(TE_NODE_ATTRIBUTES, null);
-        ydtBuilder.addLeaf(ADMIN_STATUS, null, UP);
-        YdtContext logicalRoot = ydtBuilder.getRootNode();
-        YdtExtendedContext appRoot =
-                (YdtExtendedContext) logicalRoot.getFirstChild();
-
-        DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
-        Object yangObject = yobBuilder.getYangObject(appRoot,
-                                                     utils.schemaRegistry());
-        assertThat(yangObject, is(notNullValue()));
-        YmsIetfTeTopologyOpParam ietfTeTopology = (YmsIetfTeTopologyOpParam)
-                yangObject;
-        TeAdminStatus adminStatus = ietfTeTopology.teNodeEvent()
-                .teNodeAttributes()
-                .adminStatus();
-        assertThat(adminStatus.enumeration(), is(TeAdminStatusEnum.UP));
-    }
-
-    @Test
-    public void testGroupingUsesInterfile() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild(YMS_IETF_NETWORK, null, CREATE);
-        ydtBuilder.addChild(NETWORKS, null);
-        ydtBuilder.addChild(NETWORK, null);
-        ydtBuilder.addChild(LINK, YMS_NETWORK_TOPOLOGY);
-        ydtBuilder.addChild(TE, IETF_TE_TOPOLOGY);
-        ydtBuilder.addChild(CONFIG, IETF_TE_TOPOLOGY);
-        ydtBuilder.addChild(BUNDLED_LINKS, IETF_TE_TOPOLOGY);
-        ydtBuilder.addChild(BUNDLED_LINK, IETF_TE_TOPOLOGY);
-        ydtBuilder.addLeaf(SEQUENCE, null, "1");
-        YdtContext logicalRoot = ydtBuilder.getRootNode();
-        YdtExtendedContext appRoot =
-                (YdtExtendedContext) logicalRoot.getFirstChild();
-
-        DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
-        Object yangObject = yobBuilder.getYangObject(appRoot,
-                                                     utils.schemaRegistry());
-        assertThat(yangObject, is(notNullValue()));
-        YmsIetfNetworkOpParam ietfNetwork = (YmsIetfNetworkOpParam) yangObject;
-
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang
-                .ietf.network.rev20151208.ymsietfnetwork
-                .networks.Network network = ietfNetwork.networks().network().get(0);
-
-        DefaultAugmentedNdNetwork augmentedNdNetworks = (DefaultAugmentedNdNetwork) network
-                .yangAugmentedInfo(AugmentedNdNetwork.class);
-        assertThat(augmentedNdNetworks.yangAugmentedNdNetworkOpType(),
-                   is(YmsNetworkTopology.OnosYangOpType.CREATE));
-
-        Link link = augmentedNdNetworks.link().get(0);
-        DefaultAugmentedNtLink augmentedNtLink = (DefaultAugmentedNtLink) link
-                .yangAugmentedInfo(AugmentedNtLink.class);
-        assertThat(augmentedNtLink.yangAugmentedNtLinkOpType(),
-                   is(YmsIetfTeTopology.OnosYangOpType.CREATE));
-
-        DefaultBundle bundleStackLevel = (DefaultBundle) augmentedNtLink.te()
-                .config().bundleStackLevel();
-        assertThat(bundleStackLevel.yangBundleOpType(),
-                   is(YmsIetfTeTopology.OnosYangOpType.CREATE));
-
-        BundledLink bundledLink = bundleStackLevel.bundledLinks().bundledLink().get(0);
-        assertThat(bundledLink.yangBundledLinkOpType(),
-                   is(YmsIetfTeTopology.OnosYangOpType.CREATE));
-        assertThat(bundledLink.sequence(), is(1L));
-    }
-
-    @Test
-    public void testGroupingUsesAugment() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild(YMS_IETF_NETWORK, null, CREATE);
-        ydtBuilder.addChild(NETWORKS, null);
-        ydtBuilder.addChild(NETWORK, null);
-        ydtBuilder.addChild(LINK, YMS_NETWORK_TOPOLOGY);
-        ydtBuilder.addChild(TE, IETF_TE_TOPOLOGY);
-        ydtBuilder.addChild(CONFIG, IETF_TE_TOPOLOGY);
-        ydtBuilder.addLeaf(TE_LINK_TEMPLATE, null, "1");
-        YdtContext logicalRoot = ydtBuilder.getRootNode();
-        YdtExtendedContext appRoot =
-                (YdtExtendedContext) logicalRoot.getFirstChild();
-
-        DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
-        Object yangObject = yobBuilder.getYangObject(appRoot,
-                                                     utils.schemaRegistry());
-        assertThat(yangObject, is(notNullValue()));
-        YmsIetfNetworkOpParam ietfNetwork = (YmsIetfNetworkOpParam) yangObject;
-
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang
-                .ietf.network.rev20151208.ymsietfnetwork
-                .networks.Network network = ietfNetwork.networks().network().get(0);
-
-        DefaultAugmentedNdNetwork augmentedNdNetworks = (DefaultAugmentedNdNetwork) network
-                .yangAugmentedInfo(AugmentedNdNetwork.class);
-        assertThat(augmentedNdNetworks.yangAugmentedNdNetworkOpType(),
-                   is(YmsNetworkTopology.OnosYangOpType.CREATE));
-
-        Link link = augmentedNdNetworks.link().get(0);
-        DefaultAugmentedNtLink augmentedNtLink = (DefaultAugmentedNtLink) link
-                .yangAugmentedInfo(AugmentedNtLink.class);
-        assertThat(augmentedNtLink.yangAugmentedNtLinkOpType(),
-                   is(YmsIetfTeTopology.OnosYangOpType.CREATE));
-
-        assertThat(augmentedNtLink.te().config().teLinkTemplate().get(0),
-                   is("1"));
-    }
-}
-
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobIetfNetworkTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobIetfNetworkTest.java
deleted file mode 100644
index df6df658..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobIetfNetworkTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.YdtTestUtils;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-
-import static org.junit.Assert.assertNotNull;
-
-public class YobIetfNetworkTest {
-
-    @Test
-    public void ietfNetwork1Test() {
-        YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.ietfNetwork1Ydt();
-        validateYangObject(defaultYdtBuilder);
-    }
-
-    private void validateYangObject(YangRequestWorkBench defaultYdtBuilder) {
-
-        YdtContext rootCtx = defaultYdtBuilder.getRootNode();
-
-        YdtContext childCtx = rootCtx.getFirstChild();
-
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, YdtTestUtils
-                        .getSchemaRegistry());
-        assertNotNull(yangObject);
-        //TODO yangObject need to verify
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger16Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger16Test.java
deleted file mode 100644
index 650a958..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger16Test.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.YdtTestUtils;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.lang.reflect.Field;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-public class YobInteger16Test {
-
-    /*
-
-    Positive scenario
-
-    input at boundary for integer
-        i. min value
-        ii. max value
-
-    input at boundary for unsigned integer
-        i. min value
-        ii. max value
-
-    input with in range
-        if range is 10 to 100 for integer
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-        if range is 10 to 100 for unsigned integer
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-    */
-    @Test
-    public void positiveTest() {
-        YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.integer16Ydt();
-        validateYangObject(defaultYdtBuilder);
-    }
-
-    public void validateYangObject(YangRequestWorkBench defaultYdtBuilder) {
-
-        YdtContext rootCtx = defaultYdtBuilder.getRootNode();
-
-        YdtContext childCtx = rootCtx.getFirstChild();
-
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, YdtTestUtils
-                        .getSchemaRegistry());
-        assertNotNull(yangObject);
-        try {
-            Field negInt = yangObject.getClass().getDeclaredField("negInt");
-            negInt.setAccessible(true);
-            assertEquals("-32768", negInt.get(yangObject).toString());
-            Field posInt = yangObject.getClass().getDeclaredField("posInt");
-            posInt.setAccessible(true);
-            assertEquals("32767", posInt.get(yangObject).toString());
-            Field minIntWithRange = yangObject
-                    .getClass().getDeclaredField("minIntWithRange");
-            minIntWithRange.setAccessible(true);
-            assertEquals("10", minIntWithRange.get(yangObject).toString());
-            Field midIntWithRange = yangObject
-                    .getClass().getDeclaredField("midIntWithRange");
-            midIntWithRange.setAccessible(true);
-            assertEquals("11", midIntWithRange.get(yangObject).toString());
-            Field maxIntWithRange = yangObject
-                    .getClass().getDeclaredField("maxIntWithRange");
-            maxIntWithRange.setAccessible(true);
-            assertEquals("100", maxIntWithRange.get(yangObject).toString());
-            Field minUint = yangObject.getClass().getDeclaredField("minUint");
-            minUint.setAccessible(true);
-            assertEquals("0", minUint.get(yangObject).toString());
-            Field maxUint = yangObject.getClass().getDeclaredField("maxUint");
-            maxUint.setAccessible(true);
-            assertEquals("65535", maxUint.get(yangObject).toString());
-            Field minUintWithRange = yangObject
-                    .getClass().getDeclaredField("minUintWithRange");
-            minUintWithRange.setAccessible(true);
-            assertEquals("10", minUintWithRange.get(yangObject).toString());
-            Field midUintWithRange = yangObject
-                    .getClass().getDeclaredField("midUintWithRange");
-            midUintWithRange.setAccessible(true);
-            assertEquals("11", midUintWithRange.get(yangObject).toString());
-            Field maxUintWithRange = yangObject
-                    .getClass().getDeclaredField("maxUintWithRange");
-            maxUintWithRange.setAccessible(true);
-            assertEquals("100", maxUintWithRange.get(yangObject).toString());
-        } catch (IllegalAccessException | NoSuchFieldException e) {
-            Assert.fail();
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger32Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger32Test.java
deleted file mode 100644
index 663b544..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger32Test.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.YdtTestUtils;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.lang.reflect.Field;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-public class YobInteger32Test {
-
-    /*
-
-    Positive scenario
-
-    input at boundary for integer
-        i. min value
-        ii. max value
-
-    input at boundary for unsigned integer
-        i. min value
-        ii. max value
-
-    input with in range
-        if range is 10 to 100 for integer
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-        if range is 10 to 100 for unsigned integer
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-    */
-    @Test
-    public void positiveTest() {
-        YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.integer32Ydt();
-        validateYangObject(defaultYdtBuilder);
-    }
-
-    public void validateYangObject(YangRequestWorkBench defaultYdtBuilder) {
-
-        YdtContext rootCtx = defaultYdtBuilder.getRootNode();
-
-        YdtContext childCtx = rootCtx.getFirstChild();
-
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, YdtTestUtils
-                        .getSchemaRegistry());
-        assertNotNull(yangObject);
-        try {
-            Field negInt = yangObject.getClass().getDeclaredField("negInt");
-            negInt.setAccessible(true);
-            assertEquals("-2147483648", negInt.get(yangObject).toString());
-            Field posInt = yangObject.getClass().getDeclaredField("posInt");
-            posInt.setAccessible(true);
-            assertEquals("2147483647", posInt.get(yangObject).toString());
-            Field minIntWithRange = yangObject
-                    .getClass().getDeclaredField("minIntWithRange");
-            minIntWithRange.setAccessible(true);
-            assertEquals("10", minIntWithRange.get(yangObject).toString());
-            Field midIntWithRange = yangObject
-                    .getClass().getDeclaredField("midIntWithRange");
-            midIntWithRange.setAccessible(true);
-            assertEquals("11", midIntWithRange.get(yangObject).toString());
-            Field maxIntWithRange = yangObject
-                    .getClass().getDeclaredField("maxIntWithRange");
-            maxIntWithRange.setAccessible(true);
-            assertEquals("100", maxIntWithRange.get(yangObject).toString());
-            Field minUint = yangObject.getClass().getDeclaredField("minUint");
-            minUint.setAccessible(true);
-            assertEquals("0", minUint.get(yangObject).toString());
-            Field maxUint = yangObject.getClass().getDeclaredField("maxUint");
-            maxUint.setAccessible(true);
-            assertEquals("4294967295", maxUint.get(yangObject).toString());
-            Field minUintWithRange = yangObject
-                    .getClass().getDeclaredField("minUintWithRange");
-            minUintWithRange.setAccessible(true);
-            assertEquals("10", minUintWithRange.get(yangObject).toString());
-            Field midUintWithRange = yangObject
-                    .getClass().getDeclaredField("midUintWithRange");
-            midUintWithRange.setAccessible(true);
-            assertEquals("11", midUintWithRange.get(yangObject).toString());
-            Field maxUintWithRange = yangObject
-                    .getClass().getDeclaredField("maxUintWithRange");
-            maxUintWithRange.setAccessible(true);
-            assertEquals("100", maxUintWithRange.get(yangObject).toString());
-        } catch (IllegalAccessException | NoSuchFieldException e) {
-            Assert.fail();
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger64Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger64Test.java
deleted file mode 100644
index 0f3ba8b..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger64Test.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.YdtTestUtils;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.lang.reflect.Field;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-
-public class YobInteger64Test {
-
-    /*
-
-    Positive scenario
-
-    input at boundary for integer
-        i. min value
-        ii. max value
-
-    input at boundary for unsigned integer
-        i. min value
-        ii. max value
-
-    input with in range
-        if range is 10 to 100 for integer
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-        if range is 10 to 100 for unsigned integer
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-    */
-    @Test
-    public void positiveTest() {
-        YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.integer64Ydt();
-        validateYangObject(defaultYdtBuilder);
-    }
-
-    private void validateYangObject(YangRequestWorkBench defaultYdtBuilder) {
-
-        YdtContext rootCtx = defaultYdtBuilder.getRootNode();
-
-        YdtContext childCtx = rootCtx.getFirstChild();
-
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, YdtTestUtils
-                        .getSchemaRegistry());
-        assertNotNull(yangObject);
-        try {
-            Field negInt = yangObject.getClass().getDeclaredField("negInt");
-            negInt.setAccessible(true);
-            assertEquals("-9223372036854775808", negInt
-                    .get(yangObject).toString());
-            Field posIntField = yangObject
-                    .getClass().getDeclaredField("posInt");
-            posIntField.setAccessible(true);
-            assertEquals("9223372036854775807", posIntField
-                    .get(yangObject).toString());
-            Field minIntWithRange = yangObject
-                    .getClass().getDeclaredField("minIntWithRange");
-            minIntWithRange.setAccessible(true);
-            assertEquals("10", minIntWithRange.get(yangObject).toString());
-            Field midIntWithRange = yangObject
-                    .getClass().getDeclaredField("midIntWithRange");
-            midIntWithRange.setAccessible(true);
-            assertEquals("11", midIntWithRange.get(yangObject).toString());
-            Field maxIntWithRange = yangObject
-                    .getClass().getDeclaredField("maxIntWithRange");
-            maxIntWithRange.setAccessible(true);
-            assertEquals("100", maxIntWithRange.get(yangObject).toString());
-            Field minUint = yangObject.getClass().getDeclaredField("minUint");
-            minUint.setAccessible(true);
-            assertEquals("0", minUint.get(yangObject).toString());
-            Field maxUint = yangObject.getClass().getDeclaredField("maxUint");
-            maxUint.setAccessible(true);
-            assertEquals("18446744073709551615", maxUint
-                    .get(yangObject).toString());
-            Field minUintWithRange = yangObject
-                    .getClass().getDeclaredField("minUintWithRange");
-            minUintWithRange.setAccessible(true);
-            assertEquals("10", minUintWithRange.get(yangObject).toString());
-            Field midUintWithRange = yangObject
-                    .getClass().getDeclaredField("midUintWithRange");
-            midUintWithRange.setAccessible(true);
-            assertEquals("11", midUintWithRange.get(yangObject).toString());
-            Field maxUintWithRange = yangObject
-                    .getClass().getDeclaredField("maxUintWithRange");
-            maxUintWithRange.setAccessible(true);
-            assertEquals("100", maxUintWithRange.get(yangObject).toString());
-        } catch (IllegalAccessException | NoSuchFieldException e) {
-            Assert.fail();
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger8Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger8Test.java
deleted file mode 100644
index 9755c65..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger8Test.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.YdtTestUtils;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.lang.reflect.Field;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-public class YobInteger8Test {
-
-    /*
-
-    Positive scenario
-
-    input at boundary for integer
-        i. min value
-        ii. max value
-
-    input at boundary for unsigned integer
-        i. min value
-        ii. max value
-
-    input with in range
-        if range is 10 to 100 for integer
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-        if range is 10 to 100 for unsigned integer
-            i.1. input 11
-            i.2. min value 10
-            i.3. max value 100
-
-    input with multi interval range
-        if range is 10..40 | 50..100 for integer
-            i.1. input 11
-            i.2. input 10
-            i.3. input 40
-            i.4. input 50
-            i.5. input 55
-            i.6. input 100
-
-        if range is 10..40 | 50..100 for unsigned integer
-            i.1. input 11
-            i.2. input 10
-            i.3. input 40
-            i.4. input 50
-            i.5. input 55
-            i.6. input 100
-
-        if range is "min .. 2 | 10 | 20..max" for integer
-            i.1. input -128
-            i.2. input 1
-            i.3. input 2
-            i.4. input 10
-            i.5. input 20
-            i.6. input 100
-            i.7. input 127
-
-         if range is "min .. 2 | 10 | 20..max" for unsigned Integer
-            i.1. input 0
-            i.2. input 1
-            i.3. input 2
-            i.4. input 10
-            i.5. input 20
-            i.6. input 100
-            i.7. input 255
-    */
-    @Test
-    public void positiveTest() {
-        YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.integer8Ydt();
-        validateYangObject(defaultYdtBuilder);
-    }
-
-    private void validateYangObject(YangRequestWorkBench defaultYdtBuilder) {
-
-        YdtContext rootCtx = defaultYdtBuilder.getRootNode();
-
-        YdtContext childCtx = rootCtx.getFirstChild();
-
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, YdtTestUtils
-                        .getSchemaRegistry());
-        assertNotNull(yangObject);
-        try {
-            Field negInt = yangObject.getClass().getDeclaredField("negInt");
-            negInt.setAccessible(true);
-            assertEquals("-128", negInt.get(yangObject).toString());
-            Field posInt = yangObject.getClass().getDeclaredField("posInt");
-            posInt.setAccessible(true);
-            assertEquals("127", posInt.get(yangObject).toString());
-            Field minIntWithRange = yangObject
-                    .getClass().getDeclaredField("minIntWithRange");
-            minIntWithRange.setAccessible(true);
-            assertEquals("10", minIntWithRange
-                    .get(yangObject).toString());
-            Field midIntWithRange = yangObject
-                    .getClass().getDeclaredField("midIntWithRange");
-            midIntWithRange.setAccessible(true);
-            assertEquals("11", midIntWithRange
-                    .get(yangObject).toString());
-            Field maxIntWithRange = yangObject
-                    .getClass().getDeclaredField("maxIntWithRange");
-            maxIntWithRange.setAccessible(true);
-            assertEquals("100", maxIntWithRange.get(yangObject).toString());
-            Field minUint = yangObject.getClass().getDeclaredField("minUint");
-            minUint.setAccessible(true);
-            assertEquals("0", minUint.get(yangObject).toString());
-            Field maxUint = yangObject.getClass().getDeclaredField("maxUint");
-            maxUint.setAccessible(true);
-            assertEquals("255", maxUint.get(yangObject).toString());
-            Field minUintWithRange = yangObject
-                    .getClass().getDeclaredField("maxIntWithRange");
-            minUintWithRange.setAccessible(true);
-            assertEquals("100", minUintWithRange.get(yangObject).toString());
-            Field midUintWithRange = yangObject
-                    .getClass().getDeclaredField("midUintWithRange");
-            midUintWithRange.setAccessible(true);
-            assertEquals("11", midUintWithRange.get(yangObject).toString());
-            Field maxUintWithRange = yangObject
-                    .getClass().getDeclaredField("maxUintWithRange");
-            maxUintWithRange.setAccessible(true);
-            assertEquals("100", maxUintWithRange.get(yangObject).toString());
-        } catch (IllegalAccessException | NoSuchFieldException e) {
-            Assert.fail();
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobLeafRefTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobLeafRefTest.java
deleted file mode 100644
index fe6801e..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobLeafRefTest.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Test;
-import org.onosproject.yang.gen.v1.ydt.leafreftest.rev20160524.LeafreftestOpParam;
-import org.onosproject.yang.gen.v1.ydt.leafreftest.rev20160524.leafreftest.cont1.AugmentedCont1;
-import org.onosproject.yang.gen.v1.ydt.leafreftest.rev20160524.leafreftest.food.snack.Sportsarena;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.io.IOException;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE;
-
-/**
- * Test the YANG object building for the YANG data tree based on the leaf ref.
- */
-public class YobLeafRefTest {
-
-    private YobTestUtils utils = YobTestUtils.instance();
-
-    @Test
-    public void testLeafrefInLeaf() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("leafreftest", "ydt.leafreftest");
-        ydtBuilder.addChild("leafrefList", null);
-        ydtBuilder.addLeaf("id", null, "leafref");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        LeafreftestOpParam leafrefTestOpParam = ((LeafreftestOpParam)
-                yangObject);
-        assertThat(leafrefTestOpParam.leafrefList().get(0).id().toString(),
-                   is("leafref"));
-    }
-
-    @Test
-    public void testLeafrefInTypedef() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("leafreftest", "ydt.leafreftest");
-        ydtBuilder.addLeaf("name", null, "leafref");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        LeafreftestOpParam leafrefTestOpParam = ((LeafreftestOpParam) yangObject);
-        assertThat(leafrefTestOpParam.name().toString(), is("leafref"));
-    }
-
-    @Test
-    public void testLeafrefInGrouping() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("leafreftest", "ydt.leafreftest");
-        ydtBuilder.addChild("cont1", "ydt.leafreftest");
-        ydtBuilder.addLeaf("surname", null, "leafref");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        LeafreftestOpParam leafreftestOpParam = ((LeafreftestOpParam) yangObject);
-        assertThat(leafreftestOpParam.cont1().surname().toString(),
-                   is("leafref"));
-    }
-
-    @Test
-    public void testLeafrefInAugment() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("leafreftest", "ydt.leafreftest");
-        ydtBuilder.addChild("cont1", "ydt.leafreftest");
-        ydtBuilder.addLeaf("lastname", null, "yang");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        LeafreftestOpParam leafreftestOpParam = ((LeafreftestOpParam) yangObject);
-        AugmentedCont1 augmentedCont1 = (AugmentedCont1) leafreftestOpParam
-                .cont1().yangAugmentedInfo(AugmentedCont1.class);
-        assertThat(augmentedCont1.lastname().toString(), is("yang"));
-    }
-
-    @Test
-    public void testLeafrefInCase() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("leafreftest", "ydt.leafreftest");
-        ydtBuilder.addChild("food", "ydt.leafreftest");
-        ydtBuilder.addLeaf("pretzel", null, "yang");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        LeafreftestOpParam leafreftestOpParam = ((LeafreftestOpParam)
-                yangObject);
-        Sportsarena sportsArena = ((Sportsarena) leafreftestOpParam.food()
-                .snack());
-        assertThat(sportsArena.pretzel().toString(), is("yang"));
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobListTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobListTest.java
deleted file mode 100644
index 1c32f86..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobListTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.YdtTestUtils;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-public class YobListTest {
-
-    @Test
-    public void listwithoutcontainerTest() {
-        YangRequestWorkBench defaultYdtBuilder =
-                YdtTestUtils.listWithoutContainerYdt();
-        validateYangObjectList(defaultYdtBuilder);
-    }
-
-    private void validateYangObjectList(
-            YangRequestWorkBench defaultYdtBuilder) {
-
-        YdtContext rootCtx = defaultYdtBuilder.getRootNode();
-
-        YdtContext childCtx = rootCtx.getFirstChild();
-
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, YdtTestUtils.
-                        getSchemaRegistry());
-        assertNotNull(yangObject);
-        assertTrue("RootlistOpParam".equals(yangObject.getClass().getSimpleName()));
-        try {
-
-            Field field =
-                    yangObject.getClass().getDeclaredField("listwithcontainer");
-            field.setAccessible(true);
-            List listwithcontainer = (List) field.get(yangObject);
-            assertNull(listwithcontainer);
-            Field field1 = yangObject.getClass()
-                    .getDeclaredField("listwithoutcontainer");
-            field1.setAccessible(true);
-            List listwithoutcontainer = (List) field1.get(yangObject);
-            assertEquals(false, listwithoutcontainer.isEmpty());
-            Field invalidinterval = listwithoutcontainer.get(0).getClass()
-                    .getDeclaredField("invalidinterval");
-            invalidinterval.setAccessible(true);
-            assertEquals("12", invalidinterval.get(listwithoutcontainer.get(0))
-                    .toString());
-        } catch (NoSuchFieldException | IllegalAccessException e) {
-            Assert.fail();
-        }
-    }
-
-    @Test
-    public void listwithcontainerTest()
-            throws IOException {
-        YangRequestWorkBench defaultYdtBuilder =
-                YdtTestUtils.listWithContainerYdt();
-
-        validateYangObject(defaultYdtBuilder);
-    }
-
-    public void validateYangObject(YangRequestWorkBench defaultYdtBuilder) {
-
-        YdtContext ydtContext = defaultYdtBuilder.getRootNode();
-
-        YdtContext ydtContext1 = ydtContext.getFirstChild();
-
-        DefaultYobBuilder defaultYobBuilder = new DefaultYobBuilder();
-
-        Object yangObject = defaultYobBuilder.getYangObject(
-                (YdtExtendedContext) ydtContext1, YdtTestUtils
-                        .getSchemaRegistry());
-        assertNotNull(yangObject);
-        assertTrue("RootlistOpParam".equals(yangObject.getClass().getSimpleName()));
-        try {
-
-            Field field = yangObject.getClass()
-                    .getDeclaredField("listwithoutcontainer");
-            field.setAccessible(true);
-            List listwithoutcontainer = (List) field.get(yangObject);
-            assertNull(listwithoutcontainer);
-            Field listwithcontainerField =
-                    yangObject.getClass().getDeclaredField("listwithcontainer");
-            listwithcontainerField.setAccessible(true);
-            List listwithcontainer =
-                    (List) listwithcontainerField.get(yangObject);
-            Field invalid = listwithcontainer.get(0).getClass()
-                    .getDeclaredField("invalid");
-            invalid.setAccessible(true);
-            assertEquals("12",
-                         invalid.get(listwithcontainer.get(0)).toString());
-            Field invalidinterval = listwithcontainer.get(0).getClass()
-                    .getDeclaredField("invalidinterval");
-            invalidinterval.setAccessible(true);
-            List invalidintervalList =
-                    (List) invalidinterval.get(listwithcontainer.get(0));
-            assertEquals("1", invalidintervalList.get(0).toString());
-            assertEquals("2", invalidintervalList.get(1).toString());
-        } catch (NoSuchFieldException | IllegalAccessException e) {
-            Assert.fail();
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobLogisticsManagerTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobLogisticsManagerTest.java
deleted file mode 100644
index ec1f14c..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobLogisticsManagerTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.onosproject.yms.app.ydt.YdtTestUtils;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-
-import static org.junit.Assert.assertEquals;
-
-public class YobLogisticsManagerTest {
-
-    @Test
-    public void logisticsManagerTest() throws IOException {
-        YangRequestWorkBench defaultYdtBuilder = YdtTestUtils
-                .logisticsManagerYdt();
-
-        YdtContext rootCtx = defaultYdtBuilder.getRootNode();
-
-        YdtContext childCtx = rootCtx.getFirstChild();
-
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-
-        while (childCtx != null) {
-
-            Object yangObject = builder.getYangObject(
-                    (YdtExtendedContext) childCtx, YdtTestUtils
-                            .getSchemaRegistry());
-            Class<?> aClass = yangObject.getClass();
-            if ("CustomssupervisorOpParam".equals(aClass.getSimpleName())) {
-                try {
-                    Field field = aClass.getDeclaredField("supervisor");
-                    Field onosYangNodeOperationType = aClass
-                            .getDeclaredField("yangCustomssupervisorOpType");
-                    field.setAccessible(true);
-                    onosYangNodeOperationType.setAccessible(true);
-                    try {
-                        assertEquals("abc", field.get(yangObject).toString());
-                        assertEquals("MERGE", onosYangNodeOperationType
-                                .get(yangObject).toString());
-                    } catch (IllegalAccessException e) {
-                        Assert.fail();
-                    }
-                } catch (NoSuchFieldException e) {
-                    Assert.fail();
-                }
-            }
-
-            if ("MerchandisersupervisorOpParam".equals(aClass.getSimpleName())) {
-                try {
-                    Field field = aClass.getDeclaredField("supervisor");
-                    field.setAccessible(true);
-                    try {
-                        assertEquals("abc", field.get(yangObject).toString());
-                    } catch (IllegalAccessException e) {
-                        Assert.fail();
-                    }
-                } catch (NoSuchFieldException e) {
-                    Assert.fail();
-                }
-            }
-
-            if ("WarehousesupervisorOpParam".equals(aClass.getSimpleName())) {
-                try {
-                    Field field = aClass.getDeclaredField("supervisor");
-                    field.setAccessible(true);
-                    try {
-                        ArrayList<String> arrayList =
-                                (ArrayList<String>) field.get(yangObject);
-                        assertEquals("1", arrayList.get(0));
-                        assertEquals("2", arrayList.get(1));
-                        assertEquals("3", arrayList.get(2));
-                        assertEquals("4", arrayList.get(3));
-                        assertEquals("5", arrayList.get(4));
-                    } catch (IllegalAccessException e) {
-                        Assert.fail();
-                    }
-                } catch (NoSuchFieldException e) {
-                    Assert.fail();
-                }
-            }
-            childCtx = childCtx.getNextSibling();
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobTestUtils.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobTestUtils.java
deleted file mode 100644
index 6ec1517..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobTestUtils.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.onosproject.yms.app.ysr.TestYangSchemaNodeProvider;
-import org.onosproject.yms.app.ysr.YangSchemaRegistry;
-
-/**
- * YOB test Utility.
- */
-final class YobTestUtils {
-
-    /**
-     * Schema nodes.
-     */
-    static final String ROOT_DATA_RESOURCE = "/restconf/data";
-    static final String TOPOLOGY = "yms-topology";
-    static final String NODE = "node";
-    static final String LEAF_1A1 = "leaf1a1";
-    static final String LEAF_1A2 = "leaf1a2";
-    static final String LEAF_1BIA = "leaf1bia";
-    static final String LEAF_1BIB = "leaf1bib";
-    static final String ROUTER_ID = "router-id";
-    static final String ROUTER_IP = "router-ip";
-    static final String STR_LEAF_VALUE = "leaf value";
-    static final String YMS_IETF_NETWORK = "yms-ietf-network";
-    static final String NETWORKS_STATE = "networks-state";
-    static final String NETWORKS = "networks";
-    static final String NETWORK = "network";
-    static final String NETWORK_REF = "network-ref";
-    static final String IETF_TE_TOPOLOGY = "yms-ietf-te-topology";
-    static final String TE_NODE_EVENT = "te-node-event";
-    static final String TE_NODE_ATTRIBUTES = "te-node-attributes";
-    static final String ADMIN_STATUS = "admin-status";
-    static final String UP = "up";
-    static final String LINK = "link";
-    static final String YMS_NETWORK_TOPOLOGY = "yms-network-topology";
-    static final String TE = "te";
-    static final String CONFIG = "config";
-    static final String BUNDLED_LINKS = "bundled-links";
-    static final String BUNDLED_LINK = "bundled-link";
-    static final String SEQUENCE = "sequence";
-    static final String TE_LINK_TEMPLATE = "te-link-template";
-
-    private YobTestUtils() {
-        TEST_SCHEMA_PROVIDER.processSchemaRegistry(null);
-    }
-
-    private static final TestYangSchemaNodeProvider
-            TEST_SCHEMA_PROVIDER = new TestYangSchemaNodeProvider();
-
-    YangSchemaRegistry schemaRegistry() {
-        return TEST_SCHEMA_PROVIDER.getDefaultYangSchemaRegistry();
-    }
-
-    /**
-     * Returns the YANG object builder factory instance.
-     *
-     * @return YANG object builder factory instance
-     */
-    static YobTestUtils instance() {
-        return LazyHolder.INSTANCE;
-    }
-
-    /*
-     * Bill Pugh Singleton pattern. INSTANCE won't be instantiated until the
-     * LazyHolder class is loaded via a call to the instance() method below.
-     */
-    private static class LazyHolder {
-        private static final YobTestUtils INSTANCE = new YobTestUtils();
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobUnionTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobUnionTest.java
deleted file mode 100644
index 729829b..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobUnionTest.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.yob;
-
-import org.junit.Test;
-import org.onosproject.yang.gen.v1.ydt.uniontest.rev20160524.UniontestOpParam;
-import org.onosproject.yang.gen.v1.ydt.uniontest.rev20160524.uniontest.cont1.AugmentedCont1;
-import org.onosproject.yang.gen.v1.ydt.uniontest.rev20160524.uniontest.food.snack.Sportsarena;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.io.IOException;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE;
-
-/**
- * Test the YANG object building for the YANG data tree based on the union.
- */
-public class YobUnionTest {
-
-    private YobTestUtils utils = YobTestUtils.instance();
-
-    @Test
-    public void testUnionInLeaf() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("uniontest", "ydt.uniontest");
-        ydtBuilder.addChild("unionList", null);
-        ydtBuilder.addLeaf("id", null, "YmluYXJ5");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        UniontestOpParam unionTestOpParam = ((UniontestOpParam) yangObject);
-
-        byte[] binaryValue = unionTestOpParam.unionList().get(0).id().binary();
-        String value = new String(binaryValue);
-        assertThat(value, is("binary"));
-    }
-
-    @Test
-    public void testUnionInTypedef() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("uniontest", "ydt.uniontest");
-        ydtBuilder.addLeaf("name", null, "bit1");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        UniontestOpParam unionTestOpParam = ((UniontestOpParam) yangObject);
-        assertThat(unionTestOpParam.name().union().bits().get(1), is(true));
-    }
-
-    @Test
-    public void testUnionInGrouping() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("uniontest", "ydt.uniontest");
-        ydtBuilder.addChild("cont1", "ydt.uniontest");
-        ydtBuilder.addLeaf("surname", null, "yang");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        UniontestOpParam uniontestOpParam = ((UniontestOpParam) yangObject);
-        assertThat(uniontestOpParam.cont1().surname().string(), is("yang"));
-    }
-
-    @Test
-    public void testUnionInAugment() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("uniontest", "ydt.uniontest");
-        ydtBuilder.addChild("cont1", "ydt.uniontest");
-        ydtBuilder.addLeaf("lastname", null, "bit0");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        UniontestOpParam uniontestOpParam = ((UniontestOpParam) yangObject);
-
-        AugmentedCont1 augmentedCont1 = (AugmentedCont1) uniontestOpParam
-                .cont1().yangAugmentedInfo(AugmentedCont1.class);
-        assertThat(augmentedCont1.lastname().bits().get(0), is(true));
-    }
-
-    @Test
-    public void testUnionInCase() throws IOException {
-        YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
-                ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
-        ydtBuilder.addChild("uniontest", "ydt.uniontest");
-        ydtBuilder.addChild("food", "ydt.uniontest");
-        ydtBuilder.addLeaf("pretzel", null, "YmluYXJ5");
-        ydtBuilder.traverseToParent();
-        ydtBuilder.traverseToParent();
-        YdtContext rootCtx = ydtBuilder.getRootNode();
-        YdtContext childCtx = rootCtx.getFirstChild();
-        DefaultYobBuilder builder = new DefaultYobBuilder();
-        Object yangObject = builder.getYangObject(
-                (YdtExtendedContext) childCtx, utils.schemaRegistry());
-        assertThat(yangObject, notNullValue());
-        UniontestOpParam uniontestOpParam = ((UniontestOpParam) yangObject);
-        Sportsarena sportsArena = ((Sportsarena) uniontestOpParam.food()
-                .snack());
-        byte[] binaryValue = sportsArena.pretzel().binary();
-        String value = new String(binaryValue);
-        assertThat(value, is("binary"));
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/DefaultYpmNodeTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/DefaultYpmNodeTest.java
deleted file mode 100644
index a5f561db..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/DefaultYpmNodeTest.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ypm;
-
-import org.junit.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.hamcrest.Matchers.nullValue;
-
-import org.onosproject.yms.ypm.YpmContext;
-import org.onosproject.yms.ypm.DefaultYpmNode;
-
-/**
- * Unit tests for DefaultYpmNode class.
- */
-public class DefaultYpmNodeTest {
-    private final String logicalName = "logicalYpmNode";
-    private final String moduleName1 = "portPairModule1";
-    private final String moduleName2 = "portPairModule2";
-    private final String xNodeName = "x";
-    private final String yNodeName = "y";
-    private final String zNodeName = "z";
-    private final String x1NodeName = "x1";
-    private final String x2NodeName = "x2";
-    private final String y1NodeName = "y1";
-    private final String y2NodeName = "y2";
-    private final String z1NodeName = "z1";
-    private final String z2NodeName = "z2";
-
-    /**
-     * Constructs ypm tree with single module.
-     *
-     * @return ypm tree root node
-     */
-    private YpmContext constructYpmTreeSingleModule() {
-        // Create logical node
-        DefaultYpmNode rootNode = new DefaultYpmNode(logicalName);
-        // Create module node with moduleName1
-        rootNode.addChild(moduleName1); // child to logical node
-        YpmContext moduleNode = rootNode.getChild(moduleName1);
-        moduleNode.addChild(xNodeName); // child to module node
-        moduleNode.addChild(yNodeName); // sibling node to child node "x"
-        YpmContext xNode = moduleNode.getChild("x");
-        xNode.addSibling(zNodeName); // sibling node to child node "x"
-        xNode.addChild(x1NodeName); // child to node x
-        xNode.addChild(x2NodeName); // child to node x
-        YpmContext yNode = moduleNode.getChild(yNodeName);
-        yNode.addChild(y1NodeName); // child to node y
-        yNode.addChild(y2NodeName); // child to node y
-        YpmContext zNode = moduleNode.getChild(zNodeName);
-        zNode.addChild(z1NodeName); // child to node z
-        zNode.addChild(z2NodeName); // child to node z
-        return rootNode;
-    }
-
-    /**
-     * Constructs ypm tree with multi module.
-     *
-     * @return ypm tree root node
-     */
-    private YpmContext constructYpmTreeMultiModule(DefaultYpmNode rootNode) {
-        rootNode.addChild(moduleName2); // child to logical node
-        YpmContext moduleNode = rootNode.getChild(moduleName2);
-        moduleNode.addChild(xNodeName); // child to module node
-        moduleNode.addChild(yNodeName); // sibling node to child node "x"
-        YpmContext xNode = moduleNode.getChild("x");
-        xNode.addSibling(zNodeName); // sibling node to child node "x"
-        xNode.addChild(x1NodeName); // child to node x
-        xNode.addChild(x2NodeName); // child to node x
-        YpmContext yNode = moduleNode.getChild(yNodeName);
-        yNode.addChild(y1NodeName); // child to node y
-        yNode.addChild(y2NodeName); // child to node y
-        YpmContext zNode = moduleNode.getChild(zNodeName);
-        zNode.addChild(z1NodeName); // child to node z
-        zNode.addChild(z2NodeName); // child to node z
-        return rootNode;
-    }
-
-    /**
-     * Checks ypm tree single module construction.
-     */
-    @Test
-    public void testYpmTreeSingleModuleConstruction() {
-        DefaultYpmNode rootNode = (DefaultYpmNode) constructYpmTreeSingleModule();
-        // Check one by one node
-        String name = rootNode.getName();
-        assertThat(name, is(logicalName));
-        YpmContext moduleNode = rootNode.getChild(moduleName1);
-        assertThat(moduleNode.getName(), is(moduleName1));
-        YpmContext ypmNode = moduleNode.getChild(xNodeName);
-        assertThat(ypmNode.getName(), is(xNodeName));
-        // Check sibling by using getNextSibling();
-        ypmNode = ypmNode.getNextSibling();
-        assertThat(ypmNode, notNullValue()); // either y or z should be there as sibling
-        ypmNode = ypmNode.getNextSibling();
-        assertThat(ypmNode, notNullValue()); // either y or z should be there as sibling
-        ypmNode = ypmNode.getNextSibling();
-        assertThat(ypmNode, nullValue()); // last sibling point to next sibling as null
-        // Check sibling by using getPreviousSibling()
-        ypmNode = moduleNode.getChild(zNodeName);
-        assertThat(ypmNode.getName(), is(zNodeName));
-        ypmNode = ypmNode.getPreviousSibling();
-        assertThat(ypmNode, notNullValue()); // either x or y should be there as sibling
-        ypmNode = ypmNode.getPreviousSibling();
-        assertThat(ypmNode, notNullValue()); // either x or y should be there as sibling
-        ypmNode = ypmNode.getPreviousSibling();
-        assertThat(ypmNode, nullValue()); // last sibling point to next sibling as null
-        // Checks the child x1 and x2
-        ypmNode = moduleNode.getChild(xNodeName);
-        ypmNode = ypmNode.getChild(x1NodeName);
-        assertThat(ypmNode.getName(), is(x1NodeName));
-        ypmNode = ypmNode.getSibling(x2NodeName);
-        assertThat(ypmNode.getName(), is(x2NodeName));
-        // Checks the child y1 and y2
-        ypmNode = moduleNode.getChild(yNodeName);
-        ypmNode = ypmNode.getChild(y1NodeName);
-        assertThat(ypmNode.getName(), is(y1NodeName));
-        ypmNode = ypmNode.getSibling(y2NodeName);
-        assertThat(ypmNode.getName(), is(y2NodeName));
-        // Checks the child z1 and z2
-        ypmNode = moduleNode.getChild(zNodeName);
-        ypmNode = ypmNode.getChild(z1NodeName);
-        assertThat(ypmNode.getName(), is(z1NodeName));
-        ypmNode = ypmNode.getSibling(z2NodeName);
-        assertThat(ypmNode.getName(), is(z2NodeName));
-    }
-
-    /**
-     * Checks ypm tree multiple module construction.
-     */
-    @Test
-    public void testYpmTreeMultiModuleConstruction() {
-        DefaultYpmNode rootNode = (DefaultYpmNode) constructYpmTreeSingleModule();
-        rootNode = (DefaultYpmNode) constructYpmTreeMultiModule(rootNode);
-        // Check one by one node
-        String name = rootNode.getName();
-        assertThat(name, is(logicalName));
-        YpmContext moduleNode = rootNode.getChild(moduleName2);
-        assertThat(moduleNode.getName(), is(moduleName2));
-        YpmContext ypmNode = moduleNode.getChild(xNodeName);
-        assertThat(ypmNode.getName(), is(xNodeName));
-        // Check sibling by using getNextSibling();
-        ypmNode = ypmNode.getNextSibling();
-        assertThat(ypmNode, notNullValue()); // either y or z should be there as sibling
-        ypmNode = ypmNode.getNextSibling();
-        assertThat(ypmNode, notNullValue()); // either y or z should be there as sibling
-        ypmNode = ypmNode.getNextSibling();
-        assertThat(ypmNode, nullValue()); // last sibling point to next sibling as null
-        // Check sibling by using getPreviousSibling()
-        ypmNode = moduleNode.getChild(zNodeName);
-        assertThat(ypmNode.getName(), is(zNodeName));
-        ypmNode = ypmNode.getPreviousSibling();
-        assertThat(ypmNode, notNullValue()); // either x or y should be there as sibling
-        ypmNode = ypmNode.getPreviousSibling();
-        assertThat(ypmNode, notNullValue()); // either x or y should be there as sibling
-        ypmNode = ypmNode.getPreviousSibling();
-        assertThat(ypmNode, nullValue()); // last sibling point to next sibling as null
-        // Checks the child x1 and x2
-        ypmNode = moduleNode.getChild(xNodeName);
-        ypmNode = ypmNode.getChild(x1NodeName);
-        assertThat(ypmNode.getName(), is(x1NodeName));
-        ypmNode = ypmNode.getSibling(x2NodeName);
-        assertThat(ypmNode.getName(), is(x2NodeName));
-        // Checks the child y1 and y2
-        ypmNode = moduleNode.getChild(yNodeName);
-        ypmNode = ypmNode.getChild(y1NodeName);
-        assertThat(ypmNode.getName(), is(y1NodeName));
-        ypmNode = ypmNode.getSibling(y2NodeName);
-        assertThat(ypmNode.getName(), is(y2NodeName));
-        // Checks the child z1 and z2
-        ypmNode = moduleNode.getChild(zNodeName);
-        ypmNode = ypmNode.getChild(z1NodeName);
-        assertThat(ypmNode.getName(), is(z1NodeName));
-        ypmNode = ypmNode.getSibling(z2NodeName);
-        assertThat(ypmNode.getName(), is(z2NodeName));
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/YdtNodeAdapter.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/YdtNodeAdapter.java
deleted file mode 100644
index a5b6556..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/YdtNodeAdapter.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ypm;
-
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier;
-import org.onosproject.yms.app.ydt.AppType;
-import org.onosproject.yms.app.ydt.YdtExtendedContext;
-import org.onosproject.yms.app.ydt.YdtNode;
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ydt.YdtContextOperationType;
-import org.onosproject.yms.ydt.YdtExtendedInfoType;
-import org.onosproject.yms.ydt.YdtType;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Represents implementation of interfaces to build and obtain YANG data tree.
- */
-public class YdtNodeAdapter<T> implements YdtExtendedContext {
-
-    /**
-     * Parent reference.
-     */
-    private YdtNodeAdapter parent;
-
-    /**
-     * First child reference.
-     */
-    private YdtNodeAdapter child;
-
-    /**
-     * Next sibling reference.
-     */
-    private YdtNodeAdapter nextSibling;
-
-    /**
-     * Previous sibling reference.
-     */
-    private YdtNodeAdapter previousSibling;
-
-    /**
-     * Last child reference.
-     */
-    private YdtNode lastChild;
-
-    /**
-     * Type of node.
-     */
-    private YdtType ydtType;
-
-    /**
-     * Flag to keep the track of context switch.
-     */
-    private boolean isContextSwitch;
-
-    private T ydtExtendedInfo;
-
-    /**
-     * YDT extended information type.
-     */
-    YdtExtendedInfoType ydtExtendedInfoType;
-
-    /**
-     * Ydt map to keep the track of node added in YDT.
-     */
-    private Map<YangSchemaNodeIdentifier, List<YdtNode<T>>> ydtNodeMap = new HashMap<>();
-
-    /**
-     * Reference for data-model schema node.
-     */
-    private YangSchemaNode yangSchemaNode;
-
-    /**
-     * Reference for ydt node operation type.
-     */
-    private YdtContextOperationType ydtContextOperationType;
-
-    /**
-     * Key object for ydtNodeMap.
-     */
-    protected YangSchemaNodeIdentifier nodeIdentifier;
-
-    /**
-     * Ydt map to keep the track of application information object with respective type.
-     */
-    Map<AppType, Object> ydtAppInfoMap = new HashMap<>();
-
-
-    /**
-     * Creation of YANG node object.
-     */
-    public YdtNodeAdapter() {
-    }
-
-    /**
-     * Creates a specific type of node.
-     *
-     * @param type of YDT node
-     * @param name name of the YDT node
-     */
-    public YdtNodeAdapter(YdtType type, String name) {
-        setYdtType(type);
-    }
-
-    @Override
-    public String getName() {
-        return this.nodeIdentifier.getName();
-    }
-
-    @Override
-    public String getNamespace() {
-        return yangSchemaNode.getNameSpace().getModuleNamespace();
-    }
-
-    @Override
-    public String getModuleNameAsNameSpace() {
-        return null;
-    }
-
-    @Override
-    public <T> T getYdtContextExtendedInfo() {
-        return (T) ydtExtendedInfo;
-    }
-
-    @Override
-    public YdtExtendedInfoType getYdtExtendedInfoType() {
-        return ydtExtendedInfoType;
-    }
-
-    @Override
-    public YdtType getYdtType() {
-        return ydtType;
-    }
-
-    /**
-     * Sets the node type.
-     *
-     * @param ydtType type of YDT attribute
-     */
-    public void setYdtType(YdtType ydtType) {
-        this.ydtType = ydtType;
-    }
-
-    @Override
-    public YdtNodeAdapter getParent() {
-        return parent;
-    }
-
-    /**
-     * Sets the parent of node.
-     *
-     * @param parent node
-     */
-    public void setParent(YdtNodeAdapter parent) {
-        this.parent = parent;
-    }
-
-    @Override
-    public YdtNodeAdapter getFirstChild() {
-        return child;
-    }
-
-    @Override
-    public YdtNodeAdapter getNextSibling() {
-        return nextSibling;
-    }
-
-    /**
-     * Sets the next sibling of node.
-     *
-     * @param sibling YANG node
-     */
-    public void setNextSibling(YdtNodeAdapter sibling) {
-        nextSibling = sibling;
-    }
-
-    @Override
-    public YdtNodeAdapter getPreviousSibling() {
-        return previousSibling;
-    }
-
-    /**
-     * Sets the previous sibling.
-     *
-     * @param previousSibling points to predecessor sibling
-     */
-    public void setPreviousSibling(YdtNodeAdapter previousSibling) {
-        this.previousSibling = previousSibling;
-    }
-
-    /**
-     * Returns data-model node reference for of a given node.
-     *
-     * @return yang schema data node of a data-model.
-     */
-    public YangSchemaNode getYangSchemaNode() {
-        return yangSchemaNode;
-    }
-
-    /**
-     * Sets the data-model node reference for of a given node..
-     *
-     * @param yangSchemaNode YANG data node.
-     */
-    public void setYangSchemaNode(YangSchemaNode yangSchemaNode) {
-        this.yangSchemaNode = yangSchemaNode;
-    }
-
-    @Override
-    public YdtNode getLastChild() {
-        return lastChild;
-    }
-
-    /**
-     * Sets the last instance of a child node.
-     *
-     * @param child is last child to be set
-     */
-    public void setLastChild(YdtNode child) {
-        this.lastChild = child;
-    }
-
-    public void setNodeIdentifier(YangSchemaNodeIdentifier nodeIdentifier) {
-        this.nodeIdentifier = nodeIdentifier;
-    }
-
-    /**
-     * Adds a child node.
-     *
-     * @param newChild refers to a child to be added
-     */
-    public void addChild(YdtContext newChild) {
-
-        ((YdtNodeAdapter) newChild).setParent(this);
-
-        if (this.child == null) {
-            this.child = (YdtNodeAdapter) newChild;
-            return;
-        }
-
-        YdtNodeAdapter currNode = this.child;
-        while (currNode.getNextSibling() != null) {
-            currNode = currNode.getNextSibling();
-        }
-        currNode.setNextSibling((YdtNodeAdapter) newChild);
-        ((YdtNodeAdapter) newChild).setPreviousSibling(currNode);
-    }
-
-    /**
-     * Adds a sibling to YANG data tree.
-     *
-     * @param newSibling context of sibling to be added
-     */
-    public void addSibling(YdtContext newSibling) {
-
-        ((YdtNodeAdapter) newSibling).setParent(this.getParent());
-
-        YdtNodeAdapter currNode = this;
-
-        while (currNode.getNextSibling() != null) {
-            currNode = currNode.getNextSibling();
-        }
-        currNode.setNextSibling((YdtNodeAdapter) newSibling);
-        ((YdtNodeAdapter) newSibling).setPreviousSibling(currNode);
-    }
-
-    /**
-     * Gets the flag for node if context switch.
-     *
-     * @return isContextSwitch flag of a node.
-     */
-    public boolean getContextSwitch() {
-        return isContextSwitch;
-    }
-
-    /**
-     * Sets the flag to keep the track of context switch.
-     *
-     * @param contextSwitch boolean flag.
-     */
-    public void setContextSwitch(boolean contextSwitch) {
-        isContextSwitch = contextSwitch;
-    }
-
-    @Override
-    public String getValue() {
-        return null;
-    }
-
-    @Override
-    public Set<String> getValueSet() {
-        return null;
-    }
-
-    @Override
-    public Object getAppInfo(AppType appType) {
-        return null;
-    }
-
-    @Override
-    public void addAppInfo(AppType appType, Object object) {
-
-    }
-
-    @Override
-    public YdtContextOperationType getYdtContextOperationType() {
-        return ydtContextOperationType;
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/YpmManagerTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/YpmManagerTest.java
deleted file mode 100644
index d9ebca7..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/YpmManagerTest.java
+++ /dev/null
@@ -1,492 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ypm;
-
-import org.junit.Test;
-import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier;
-import org.onosproject.yms.ypm.DefaultYpmNode;
-import org.onosproject.yms.ypm.YpmContext;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.hamcrest.Matchers.nullValue;
-
-/**
- * Unit tests for YpmManager class.
- */
-public class YpmManagerTest {
-    private final String logicalName = "logicalYpmNode";
-    private final String moduleName1 = "portPairModule1";
-    private final String moduleName2 = "portPairModule2";
-    private final String xNodeName = "x";
-    private final String yNodeName = "y";
-    private final String zNodeName = "z";
-    private final String x1NodeName = "x1";
-    private final String x2NodeName = "x2";
-    private final String y1NodeName = "y1";
-    private final String y2NodeName = "y2";
-    private final String y11NodeName = "y11";
-    private final String z1NodeName = "z1";
-    private final String z2NodeName = "z2";
-    private final String z3NodeName = "z3";
-
-    /**
-     * Creates module1 ydt tree.
-     */
-    public YdtNodeAdapter createModule1Tree() throws CloneNotSupportedException {
-        YangSchemaNodeIdentifier tmpNodeIdentifier;
-        YdtNodeAdapter rootNode = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(logicalName);
-        rootNode.setNodeIdentifier(tmpNodeIdentifier);
-
-        // Create module node with moduleName1
-        YdtNodeAdapter moduleNode = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(moduleName1);
-        moduleNode.setNodeIdentifier(tmpNodeIdentifier);
-        moduleNode.setParent(rootNode);
-        rootNode.addChild(moduleNode); // child to logical node
-        YdtNodeAdapter xNode = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(xNodeName);
-        xNode.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter yNode = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(yNodeName);
-        yNode.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter zNode = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(zNodeName);
-        zNode.setNodeIdentifier(tmpNodeIdentifier);
-        moduleNode.addChild(xNode); // child to module node
-        xNode.addSibling(yNode);
-        yNode.addSibling(zNode);
-        YdtNodeAdapter x1Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(x1NodeName);
-        x1Node.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter x2Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(x2NodeName);
-        x2Node.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter y1Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(y1NodeName);
-        y1Node.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter y2Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(y2NodeName);
-        y2Node.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter z1Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(z1NodeName);
-        z1Node.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter z2Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(z2NodeName);
-        z2Node.setNodeIdentifier(tmpNodeIdentifier);
-        xNode.addChild(x1Node);
-        x1Node.addSibling(x2Node);
-        yNode.addChild(y1Node);
-        y1Node.addSibling(y2Node);
-        zNode.addChild(z1Node);
-        z1Node.addSibling(z2Node);
-
-        return rootNode;
-    }
-
-    /**
-     * Checks the protocol data added in YpmManger when only single module exists.
-     */
-    @Test
-    public void retrieveAndCheckProtocolDataWhenSingleModule() throws CloneNotSupportedException {
-        YdtNodeAdapter rootNode = createModule1Tree();
-
-        YpmManager ypmManager = new YpmManager();
-        Object metaData = 10;
-        ypmManager.setProtocolData(rootNode, metaData);
-        YpmContext ypmContext = ypmManager.getProtocolData(rootNode);
-        DefaultYpmNode rootYpmNode = (DefaultYpmNode) ypmContext;
-        assertThat(rootYpmNode.getName(), is(logicalName));
-        DefaultYpmNode currYpmNode = (DefaultYpmNode) rootYpmNode.getFirstChild();
-        assertThat(currYpmNode.getName(), is(moduleName1));
-        currYpmNode = (DefaultYpmNode) currYpmNode.getFirstChild();
-        assertThat(currYpmNode.getName(), is(xNodeName));  // x node
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        assertThat(currYpmNode.getNextSibling(), notNullValue()); // y or z node
-        currYpmNode = currYpmNode.getNextSibling();
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        assertThat(currYpmNode.getNextSibling(), notNullValue()); // y or z node
-        currYpmNode = currYpmNode.getNextSibling();
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        assertThat(currYpmNode.getNextSibling(), nullValue());  // no sibling
-
-        // Check x node leaf's x1 and x2
-        DefaultYpmNode moduleYpmNode = currYpmNode.getParent();
-        assertThat(moduleYpmNode.getName(), is(moduleName1));
-        DefaultYpmNode xYpmNode = (DefaultYpmNode) moduleYpmNode.getFirstChild();
-        assertThat(xYpmNode.getName(), is(xNodeName));
-        assertThat(xYpmNode.getMetaData(), is(metaData));
-        // Check x1 node
-        currYpmNode = (DefaultYpmNode) xYpmNode.getFirstChild();
-        assertThat(currYpmNode.getName(), is(x1NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        // Check x2 node
-        currYpmNode = currYpmNode.getNextSibling();
-        assertThat(currYpmNode.getName(), is(x2NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-
-        // Check y node leaf's y1 and y2
-        DefaultYpmNode yYpmNode = xYpmNode.getNextSibling();
-        assertThat(yYpmNode.getName(), is(yNodeName));
-        assertThat(yYpmNode.getMetaData(), is(metaData));
-        // Check y1 node
-        currYpmNode = (DefaultYpmNode) yYpmNode.getFirstChild();
-        assertThat(currYpmNode.getName(), is(y1NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        // Check y2 node
-        currYpmNode = currYpmNode.getNextSibling();
-        assertThat(currYpmNode.getName(), is(y2NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-
-        // Check z node leaf's z1 and z2
-        DefaultYpmNode zYpmNode = yYpmNode.getNextSibling();
-        assertThat(zYpmNode.getName(), is(zNodeName));
-        assertThat(zYpmNode.getMetaData(), is(metaData));
-        // Check z1 node
-        currYpmNode = (DefaultYpmNode) zYpmNode.getFirstChild();
-        assertThat(currYpmNode.getName(), is(z1NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        // Check z2 node
-        currYpmNode = currYpmNode.getNextSibling();
-        assertThat(currYpmNode.getName(), is(z2NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-    }
-
-    /**
-     * Creates module2 ydt tree. Module1 and Module2 trees are point to same logical root.
-     */
-    public YdtNodeAdapter createModule2Tree() throws CloneNotSupportedException {
-        YangSchemaNodeIdentifier tmpNodeIdentifier;
-        YdtNodeAdapter rootNode = createModule1Tree();
-        YdtNodeAdapter moduleNode = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(moduleName2);
-        moduleNode.setNodeIdentifier(tmpNodeIdentifier);
-        moduleNode.setParent(rootNode);
-        rootNode.addChild(moduleNode); // child to logical node
-        YdtNodeAdapter xNode = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(xNodeName);
-        xNode.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter yNode = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(yNodeName);
-        yNode.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter zNode = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(zNodeName);
-        zNode.setNodeIdentifier(tmpNodeIdentifier);
-        moduleNode.addChild(xNode); // child to module node
-        xNode.addSibling(yNode);
-        yNode.addSibling(zNode);
-        YdtNodeAdapter x1Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(x1NodeName);
-        x1Node.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter x2Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(x2NodeName);
-        x2Node.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter y1Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(y1NodeName);
-        y1Node.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter y2Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(y2NodeName);
-        y2Node.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter z1Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(z1NodeName);
-        z1Node.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter z2Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(z2NodeName);
-        z2Node.setNodeIdentifier(tmpNodeIdentifier);
-        xNode.addChild(x1Node);
-        x1Node.addSibling(x2Node);
-        yNode.addChild(y1Node);
-        y1Node.addSibling(y2Node);
-        zNode.addChild(z1Node);
-        z1Node.addSibling(z2Node);
-
-        return rootNode;
-    }
-
-    /**
-     * Checks the protocol data added in YpmManger when multiple modules exists.
-     */
-    @Test
-    public void retrieveAndCheckProtocolDataWhenMultipleModule() throws CloneNotSupportedException {
-        YdtNodeAdapter rootNode = createModule2Tree();
-
-        YpmManager ypmManager = new YpmManager();
-        Object metaData = 10;
-        ypmManager.setProtocolData(rootNode, metaData);
-        YpmContext ypmContext = ypmManager.getProtocolData(rootNode);
-        DefaultYpmNode rootYpmNode = (DefaultYpmNode) ypmContext;
-        assertThat(rootYpmNode.getName(), is(logicalName));
-        DefaultYpmNode currYpmNode = (DefaultYpmNode) rootYpmNode.getFirstChild();
-        currYpmNode = currYpmNode.getNextSibling(); // jump to next module (module2)
-        assertThat(currYpmNode.getName(), is(moduleName2));
-        currYpmNode = (DefaultYpmNode) currYpmNode.getFirstChild();
-        assertThat(currYpmNode.getName(), is(xNodeName));  // x node
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        assertThat(currYpmNode.getNextSibling(), notNullValue()); // y or z node
-        currYpmNode = currYpmNode.getNextSibling();
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        assertThat(currYpmNode.getNextSibling(), notNullValue()); // y or z node
-        currYpmNode = currYpmNode.getNextSibling();
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        assertThat(currYpmNode.getNextSibling(), nullValue());  // no sibling
-
-        // Check x node leaf's x1 and x2
-        DefaultYpmNode moduleYpmNode = currYpmNode.getParent();
-        assertThat(moduleYpmNode.getName(), is(moduleName2));
-        DefaultYpmNode xYpmNode = (DefaultYpmNode) moduleYpmNode.getFirstChild();
-        assertThat(xYpmNode.getName(), is(xNodeName));
-        assertThat(xYpmNode.getMetaData(), is(metaData));
-        // Check x1 node
-        currYpmNode = (DefaultYpmNode) xYpmNode.getFirstChild();
-        assertThat(currYpmNode.getName(), is(x1NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        // Check x2 node
-        currYpmNode = currYpmNode.getNextSibling();
-        assertThat(currYpmNode.getName(), is(x2NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-
-        // Check y node leaf's y1 and y2
-        DefaultYpmNode yYpmNode = xYpmNode.getNextSibling();
-        assertThat(yYpmNode.getName(), is(yNodeName));
-        assertThat(yYpmNode.getMetaData(), is(metaData));
-        // Check y1 node
-        currYpmNode = (DefaultYpmNode) yYpmNode.getFirstChild();
-        assertThat(currYpmNode.getName(), is(y1NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        // Check y2 node
-        currYpmNode = currYpmNode.getNextSibling();
-        assertThat(currYpmNode.getName(), is(y2NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-
-        // Check z node leaf's z1 and z2
-        DefaultYpmNode zYpmNode = yYpmNode.getNextSibling();
-        assertThat(zYpmNode.getName(), is(zNodeName));
-        assertThat(zYpmNode.getMetaData(), is(metaData));
-        // Check z1 node
-        currYpmNode = (DefaultYpmNode) zYpmNode.getFirstChild();
-        assertThat(currYpmNode.getName(), is(z1NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        // Check z2 node
-        currYpmNode = currYpmNode.getNextSibling();
-        assertThat(currYpmNode.getName(), is(z2NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-    }
-
-    /**
-     * Checks the protocol data added in YpmManger, but tests only part of module1 tree.
-     */
-    @Test
-    public void retrieveAndCheckProtocolDataChosenFromPartOfModule1Tree() throws CloneNotSupportedException {
-        YangSchemaNodeIdentifier tmpNodeIdentifier;
-        YdtNodeAdapter rootNode = createModule2Tree();
-
-        // Sets the tree
-        YpmManager ypmManager = new YpmManager();
-        Object metaData = 10;
-        ypmManager.setProtocolData(rootNode, metaData);
-
-        // Create new ydt tree part of module1 tree
-        YdtNodeAdapter rootNewYdtNode = new YdtNodeAdapter();
-        // Create module node with moduleName1
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(logicalName);
-        rootNewYdtNode.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter moduleNode = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(moduleName1);
-        moduleNode.setNodeIdentifier(tmpNodeIdentifier);
-        moduleNode.setParent(rootNewYdtNode);
-        rootNewYdtNode.addChild(moduleNode); // child to logical node
-        YdtNodeAdapter yNode = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(yNodeName);
-        yNode.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter zNode = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(zNodeName);
-        zNode.setNodeIdentifier(tmpNodeIdentifier);
-        moduleNode.addChild(yNode); // child to module node
-        yNode.addSibling(zNode);
-        YdtNodeAdapter y1Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(y1NodeName);
-        y1Node.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter y2Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(y2NodeName);
-        y2Node.setNodeIdentifier(tmpNodeIdentifier);
-        yNode.addChild(y1Node);
-        y1Node.addSibling(y2Node);
-
-        // Again sets the protocol data
-        metaData = 20;
-        ypmManager.setProtocolData(rootNewYdtNode, metaData);
-
-        // Retrieve protocol data and check the contents
-        YpmContext ypmContext = ypmManager.getProtocolData(rootNewYdtNode);
-        DefaultYpmNode rootYpmNode = (DefaultYpmNode) ypmContext;
-        assertThat(rootYpmNode.getName(), is(logicalName));
-        DefaultYpmNode currYpmNode = (DefaultYpmNode) rootYpmNode.getFirstChild();
-        assertThat(currYpmNode.getName(), is(moduleName1));
-        // Check y and z node
-        currYpmNode = (DefaultYpmNode) currYpmNode.getFirstChild();
-        DefaultYpmNode yYpmNode = currYpmNode;
-        assertThat(currYpmNode.getName(), is(yNodeName));  // x node
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        assertThat(currYpmNode.getNextSibling(), notNullValue()); // z node
-        currYpmNode = currYpmNode.getNextSibling();
-        assertThat(currYpmNode.getName(), is(zNodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        assertThat(currYpmNode.getNextSibling(), nullValue());  // no sibling
-        // Check y1 and y2 node
-        currYpmNode = (DefaultYpmNode) yYpmNode.getFirstChild();
-        assertThat(currYpmNode.getName(), is(y1NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        assertThat(currYpmNode.getNextSibling(), notNullValue()); // y2 should exists
-        currYpmNode = currYpmNode.getNextSibling();
-        assertThat(currYpmNode.getName(), is(y2NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        assertThat(currYpmNode.getNextSibling(), nullValue());
-    }
-
-    /**
-     * Checks the protocol data added in YpmManger, but tests part of module1 tree with little bit extended tree.
-     */
-    @Test
-    public void retrieveAndCheckProtocolDataChosenFromPartOfModule1TreeWithExtended()
-            throws CloneNotSupportedException {
-        YangSchemaNodeIdentifier tmpNodeIdentifier;
-        YdtNodeAdapter rootNode = createModule2Tree();
-
-        // Sets the tree
-        YpmManager ypmManager = new YpmManager();
-        Object metaData = 10;
-        ypmManager.setProtocolData(rootNode, metaData);
-
-        // Create new ydt tree part of module1 tree
-        YdtNodeAdapter rootNewYdtNode = new YdtNodeAdapter();
-        // Create module node with moduleName1
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(logicalName);
-        rootNewYdtNode.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter moduleNode = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(moduleName1);
-        moduleNode.setNodeIdentifier(tmpNodeIdentifier);
-        moduleNode.setParent(rootNewYdtNode);
-        rootNewYdtNode.addChild(moduleNode); // child to logical node
-        YdtNodeAdapter yNode = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(yNodeName);
-        yNode.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter zNode = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(zNodeName);
-        zNode.setNodeIdentifier(tmpNodeIdentifier);
-        moduleNode.addChild(yNode); // child to module node
-        yNode.addSibling(zNode);
-        YdtNodeAdapter y1Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(y1NodeName);
-        y1Node.setNodeIdentifier(tmpNodeIdentifier);
-        YdtNodeAdapter y2Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(y2NodeName);
-        y2Node.setNodeIdentifier(tmpNodeIdentifier);
-        yNode.addChild(y1Node);
-        y1Node.addSibling(y2Node);
-        YdtNodeAdapter y11Node = new YdtNodeAdapter();
-        // Add new y11 node
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(y11NodeName);
-        y11Node.setNodeIdentifier(tmpNodeIdentifier);
-        y1Node.addChild(y11Node);
-        // Add new y3 node
-        YdtNodeAdapter z3Node = new YdtNodeAdapter();
-        tmpNodeIdentifier = new YangSchemaNodeIdentifier();
-        tmpNodeIdentifier.setName(z3NodeName);
-        z3Node.setNodeIdentifier(tmpNodeIdentifier);
-        zNode.addChild(z3Node);
-
-        // Again sets the protocol data
-        metaData = 20;
-        ypmManager.setProtocolData(rootNewYdtNode, metaData);
-
-        // Retrieve protocol data and check the contents
-        YpmContext ypmContext = ypmManager.getProtocolData(rootNewYdtNode);
-        DefaultYpmNode rootYpmNode = (DefaultYpmNode) ypmContext;
-        assertThat(rootYpmNode.getName(), is(logicalName));
-        DefaultYpmNode currYpmNode = (DefaultYpmNode) rootYpmNode.getFirstChild();
-        assertThat(currYpmNode.getName(), is(moduleName1));
-        // Check y and z node
-        currYpmNode = (DefaultYpmNode) currYpmNode.getFirstChild();
-        DefaultYpmNode yYpmNode = currYpmNode;
-        assertThat(currYpmNode.getName(), is(yNodeName));  // y node
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        assertThat(currYpmNode.getNextSibling(), notNullValue()); // z node
-        currYpmNode = currYpmNode.getNextSibling();
-        DefaultYpmNode zYpmNode = currYpmNode;
-        assertThat(currYpmNode.getName(), is(zNodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        assertThat(currYpmNode.getNextSibling(), nullValue());  // no sibling
-        // Check y1 and y2 node
-        currYpmNode = (DefaultYpmNode) yYpmNode.getFirstChild();
-        DefaultYpmNode y1YpmNode = currYpmNode;
-        assertThat(currYpmNode.getName(), is(y1NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        assertThat(currYpmNode.getNextSibling(), notNullValue()); // y2 should exists
-        currYpmNode = currYpmNode.getNextSibling();
-        assertThat(currYpmNode.getName(), is(y2NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        assertThat(currYpmNode.getNextSibling(), nullValue());
-        // Check new y11 node
-        currYpmNode = (DefaultYpmNode) y1YpmNode.getFirstChild();
-        assertThat(currYpmNode.getName(), is(y11NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        assertThat(currYpmNode.getNextSibling(), nullValue());
-        assertThat(currYpmNode.getFirstChild(), nullValue());
-        // Check new z3 node
-        currYpmNode = (DefaultYpmNode) zYpmNode.getFirstChild();
-        assertThat(currYpmNode.getName(), is(z3NodeName));
-        assertThat(currYpmNode.getMetaData(), is(metaData));
-        assertThat(currYpmNode.getNextSibling(), nullValue());
-        assertThat(currYpmNode.getFirstChild(), nullValue());
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistryTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistryTest.java
deleted file mode 100644
index 9e40b39..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistryTest.java
+++ /dev/null
@@ -1,704 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ysr;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network1.rev20151208.IetfNetwork1Service;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.IetfNetwork2Service;
-import org.onosproject.yang.gen.v1.ydt.test.rev20160524.TestService;
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangRevision;
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-import org.onosproject.yms.app.yab.TestManager;
-
-import java.io.IOException;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-
-/**
- * Unit test case for default schema registry.
- */
-public class DefaultYangSchemaRegistryTest {
-
-    private static final String SERVICE_NAME_1 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network1.rev20151208.IetfNetwork1Service";
-    private static final String SCHEMA_NAME_1 = "ietf-network1";
-    private static final String EVENT_NAME_1 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network1.rev20151208.ietfnetwork1.IetfNetwork1Event";
-    private static final String INTERFACE_NAME_1 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network1.rev20151208.IetfNetwork1";
-    private static final String OP_PARAM_NAME_1 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network1.rev20151208.IetfNetwork1OpParam";
-
-    private static final String SERVICE_NAME_2 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network2.rev20151208.IetfNetwork2Service";
-    private static final String SCHEMA_NAME_2 = "ietf-network2";
-    private static final String EVENT_NAME_2 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network2.rev20151208.ietfnetwork2.IetfNetwork2Event";
-    private static final String INTERFACE_NAME_2 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network2.rev20151208.IetfNetwork2";
-    private static final String OP_PARAM_NAME_2 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network2.rev20151208.IetfNetwork2OpParam";
-
-    private static final String SERVICE_NAME_3 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network3.rev20151208.IetfNetwork3Service";
-    private static final String SCHEMA_NAME_3 = "ietf-network3";
-    private static final String EVENT_NAME_3 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network3.rev20151208.ietfnetwork3.IetfNetwork3Event";
-    private static final String INTERFACE_NAME_3 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network3.rev20151208.IetfNetwork3";
-    private static final String OP_PARAM_NAME_3 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network3.rev20151208.IetfNetwork3OpParam";
-
-    private static final String SCHEMA_NAME_4_14 = "ietf-network4@2014-00-08";
-    private static final String SCHEMA_NAME_4_15 = "ietf-network4@2015-00-08";
-    private static final String SCHEMA_NAME_4_16 = "ietf-network4@2016-00-08";
-    private static final String SCHEMA_NAME_4_17 = "ietf-network4@2017-00-08";
-    private static final String SCHEMA_NAME_4 = "ietf-network4";
-    private static final String SERVICE_NAME_REV_14 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.rev20141208.IetfNetwork4Service";
-    private static final String EVENT_NAME_REV_14 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.rev20141208.ietfnetwork4.IetfNetwork4Event";
-    private static final String INTERFACE_NAME_REV_14 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.rev20141208.IetfNetwork4";
-    private static final String OP_PARAM_NAME_REV_14 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.rev20141208.IetfNetwork4OpParam";
-
-    private static final String SERVICE_NAME_REV_15 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.rev20151208.IetfNetwork4Service";
-    private static final String EVENT_NAME_REV_15 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.rev20151208.ietfnetwork4.IetfNetwork4Event";
-    private static final String INTERFACE_NAME_REV_15 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.rev20151208.IetfNetwork4";
-    private static final String OP_PARAM_NAME_REV_15 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.rev20151208.IetfNetwork4OpParam";
-
-    private static final String SERVICE_NAME_REV_16 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.rev20161208.IetfNetwork4Service";
-
-    private static final String EVENT_NAME_REV_16 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.rev20161208.ietfnetwork4.IetfNetwork4Event";
-    private static final String INTERFACE_NAME_REV_16 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.rev20161208.IetfNetwork4";
-    private static final String OP_PARAM_NAME_REV_16 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.rev20161208.IetfNetwork4OpParam";
-
-    private static final String SERVICE_NAME_REV_17 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.rev20171208.IetfNetwork4Service";
-    private static final String EVENT_NAME_REV_17 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.rev20171208.ietfnetwork4.IetfNetwork4Event";
-    private static final String INTERFACE_NAME_REV_17 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.rev20171208.IetfNetwork4";
-    private static final String OP_PARAM_NAME_REV_17 =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.rev20171208.IetfNetwork4OpParam";
-
-    private static final String SERVICE_NAME_NO_REV =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.IetfNetwork4Service";
-    private static final String EVENT_NAME_NO_REV =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.ietfnetwork4.IetfNetwork4Event";
-    private static final String INTERFACE_NAME_NO_REV =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.IetfNetwork4";
-    private static final String OP_PARAM_NAME_NO_REV =
-            "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
-                    ".network4.IetfNetwork4OpParam";
-
-    private static final String DATE = "2014-00-08";
-    private static final String SCHEMA_NAME_WITH_DATE =
-            "ietf-network4@2014-00-08";
-
-    private static final String UN_REG_SCHEMA_NAME = "ietf-routing";
-    private static final String UN_REG_INTERFACE_NAME = "IetfRouting";
-    private static final String UN_REG_OP_PARAM_NAME = "IetfRoutingOpParam";
-    private static final String UN_REG_SERVICE_NAME = "IetfRoutingService";
-    private static final String UN_REG_EVENT_NAME = "IetfRoutingEvent";
-    private static final String CHECK = "check";
-    private static final String DATE_NAMESPACE = "2015-00-08";
-    private static final String NAMESPACE =
-            "urn:ietf:params:xml:ns:yang:ietf-network4:check:namespace";
-
-    private final TestYangSchemaNodeProvider testYangSchemaNodeProvider =
-            new TestYangSchemaNodeProvider();
-    @Rule
-    public ExpectedException thrown = ExpectedException.none();
-
-    /**
-     * Unit test case in which schema node should be present.
-     *
-     * @throws IOException when fails to do IO operation
-     */
-    @Test
-    public void testForGetSchemaNode()
-            throws IOException {
-
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-
-        DefaultYangSchemaRegistry registry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-
-        YangSchemaNode yangNode =
-                registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_1);
-        assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
-
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_1);
-        assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
-                        INTERFACE_NAME_1);
-        assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
-                        OP_PARAM_NAME_1);
-        assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
-
-        yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_1);
-        assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
-
-        //As we have not registered an  application this object should be null.
-        Object object = registry.getRegisteredApplication(yangNode);
-        assertThat(true, is(object == null));
-        testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_1);
-
-        yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_1);
-        assertThat(true, is(yangNode == null));
-
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_1);
-        assertThat(true, is(yangNode == null));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
-                        INTERFACE_NAME_1);
-        assertThat(true, is(yangNode == null));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
-                        OP_PARAM_NAME_1);
-        assertThat(true, is(yangNode == null));
-
-        yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_1);
-        assertThat(true, is(yangNode == null));
-
-        //As we have not registered an  application this object should be null.
-        object = registry.getRegisteredApplication(yangNode);
-        assertThat(true, is(object == null));
-
-        //With second service.
-        yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_2);
-        assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
-
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_2);
-        assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
-                        INTERFACE_NAME_2);
-        assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
-                        OP_PARAM_NAME_2);
-        assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
-
-        yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_2);
-        assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
-
-        //As we have not registered an  application this object should be null.
-        object = registry.getRegisteredApplication(yangNode);
-        assertThat(true, is(object == null));
-
-        testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_2);
-
-        yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_2);
-        assertThat(true, is(yangNode == null));
-
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_2);
-        assertThat(true, is(yangNode == null));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
-                        INTERFACE_NAME_2);
-        assertThat(true, is(yangNode == null));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
-                        OP_PARAM_NAME_2);
-        assertThat(true, is(yangNode == null));
-
-        yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_2);
-        assertThat(true, is(yangNode == null));
-
-        //As we have not registered an  application this object should be null.
-        object = registry.getRegisteredApplication(yangNode);
-        assertThat(true, is(object == null));
-
-        //With third service.
-        yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_3);
-        assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName())));
-
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_3);
-        assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
-                        INTERFACE_NAME_3);
-        assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName())));
-
-        yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_3);
-        assertThat(true, is(yangNode == null));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
-                        OP_PARAM_NAME_3);
-        assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName())));
-
-        //As we have not registered an  application this object should be null.
-        object = registry.getRegisteredApplication(yangNode);
-        assertThat(true, is(object == null));
-
-        testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_3);
-
-        yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_3);
-        assertThat(true, is(yangNode == null));
-
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_3);
-        assertThat(true, is(yangNode == null));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
-                        INTERFACE_NAME_3);
-        assertThat(true, is(yangNode == null));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
-                        OP_PARAM_NAME_3);
-        assertThat(true, is(yangNode == null));
-
-        yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_3);
-        assertThat(true, is(yangNode == null));
-
-        //As we have not registered an  application this object should be null.
-        object = registry.getRegisteredApplication(yangNode);
-        assertThat(true, is(object == null));
-    }
-
-    /**
-     * Unit test case in which schema node should not be present.
-     *
-     * @throws IOException when fails to do IO operation
-     */
-    @Test
-    public void testForDoNotGetSchemaNode()
-            throws IOException {
-
-        DefaultYangSchemaRegistry registry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-
-        // here all nodes should be null as we have not done any registration
-        // for this application.
-        YangSchemaNode yangNode =
-                registry.getYangSchemaNodeUsingAppName(UN_REG_SERVICE_NAME);
-        assertThat(true, is(yangNode == null));
-
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(UN_REG_SCHEMA_NAME);
-        assertThat(true, is(yangNode == null));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
-                        UN_REG_INTERFACE_NAME);
-        assertThat(true, is(yangNode == null));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
-                        UN_REG_OP_PARAM_NAME);
-        assertThat(true, is(yangNode == null));
-
-        yangNode = registry.getRootYangSchemaNodeForNotification(
-                UN_REG_EVENT_NAME);
-        assertThat(true, is(yangNode == null));
-
-        //As we have not registered an  application this object should be null.
-        Object object = registry.getRegisteredApplication(yangNode);
-        assertThat(true, is(object == null));
-    }
-
-    /**
-     * Unit test case in which schema node should be present with multi
-     * revisions.
-     *
-     * @throws IOException when fails to do IO operation
-     */
-    @Test
-    public void testForGetSchemaNodeWhenNoRevision()
-            throws IOException {
-
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-
-        //Service with rev.
-        YangSchemaNode yangNode =
-                registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_15);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
-                        INTERFACE_NAME_REV_15);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
-                        OP_PARAM_NAME_REV_15);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode = registry.getRootYangSchemaNodeForNotification(
-                EVENT_NAME_REV_15);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        //As we have not registered an  application this object should be null.
-        Object object = registry.getRegisteredApplication(yangNode);
-        assertThat(true, is(object == null));
-        testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_15);
-
-        yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15);
-        assertThat(true, is(yangNode == null));
-
-        //Here the yangNode should be the node which does not have revision.
-        // asset should pass with false.
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
-        assertThat(true, is(((YangNode) yangNode).getRevision() == null));
-
-        //Service no revision.
-        yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
-                        INTERFACE_NAME_NO_REV);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
-                        OP_PARAM_NAME_NO_REV);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_NO_REV);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        //As we have not registered an  application this object should be null.
-        object = registry.getRegisteredApplication(yangNode);
-        assertThat(true, is(object == null));
-        testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_NO_REV);
-
-        yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV);
-        assertThat(true, is(yangNode == null));
-
-        //Here the yangNode should be the node which have different revision.
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
-        assertThat(true, is(yangNode != null));
-        assertThat(true, is(((YangNode) yangNode).getRevision() != null));
-    }
-
-    /**
-     * Unit test case in which schema node should be present with multi
-     * revisions.
-     *
-     * @throws IOException when fails to do IO operation
-     */
-    @Test
-    public void testForGetSchemaNodeWhenMultiRevision()
-            throws IOException {
-
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-
-        //Service with rev.
-        YangSchemaNode yangNode =
-                registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_15);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
-                        INTERFACE_NAME_REV_15);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
-                        OP_PARAM_NAME_REV_15);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode = registry.getRootYangSchemaNodeForNotification(
-                EVENT_NAME_REV_15);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        //As we have not registered an  application this object should be null.
-        Object object = registry.getRegisteredApplication(yangNode);
-        assertThat(true, is(object == null));
-        testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_15);
-
-        yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15);
-        assertThat(true, is(yangNode == null));
-
-        //Here the yangNode should be the node which does not have revision.
-        // asset should pass with false.
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
-        assertThat(true, is(((YangNode) yangNode).getRevision() == null));
-
-        //Service with different revision.
-        yangNode = registry
-                .getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_16);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_16);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
-                        INTERFACE_NAME_REV_16);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
-                        OP_PARAM_NAME_REV_16);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_REV_16);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        //As we have not registered an  application this object should be null.
-        object = registry.getRegisteredApplication(yangNode);
-        assertThat(true, is(object == null));
-        testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_16);
-
-        yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_16);
-        assertThat(true, is(yangNode == null));
-
-        //Here the yangNode should be the node which have different revision.
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
-        assertThat(true, is(((YangNode) yangNode).getRevision() == null));
-
-        //Service with different revision.
-        yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_17);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_17);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
-                        INTERFACE_NAME_REV_17);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
-                        OP_PARAM_NAME_REV_17);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode = registry.getRootYangSchemaNodeForNotification(
-                EVENT_NAME_REV_17);
-        assertThat(true, is(yangNode == null));
-
-        //As we have not registered an  application this object should be null.
-        object = registry.getRegisteredApplication(yangNode);
-        assertThat(true, is(object == null));
-        testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_17);
-
-        yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_17);
-        assertThat(true, is(yangNode == null));
-
-        //Here the yangNode should be the node which have different revision.
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
-        assertThat(true, is(((YangNode) yangNode).getRevision() == null));
-
-        //Service no revision.
-        yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
-                        INTERFACE_NAME_NO_REV);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
-                        OP_PARAM_NAME_NO_REV);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_NO_REV);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        //As we have not registered an  application this object should be null.
-        object = registry.getRegisteredApplication(yangNode);
-        assertThat(true, is(object == null));
-        testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_NO_REV);
-
-        yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV);
-        assertThat(true, is(yangNode == null));
-
-        //Here the yangNode should be the node which have different revision.
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
-        assertThat(true, is(yangNode != null));
-        assertThat(true, is(((YangNode) yangNode).getRevision() != null));
-
-        //Service with different revision.
-        yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_14);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_14);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
-                        INTERFACE_NAME_REV_14);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode =
-                registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
-                        OP_PARAM_NAME_REV_14);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        yangNode = registry.getRootYangSchemaNodeForNotification(
-                EVENT_NAME_REV_14);
-        assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
-
-        //As we have not registered an  application this object should be null.
-        object = registry.getRegisteredApplication(yangNode);
-        assertThat(true, is(object == null));
-        testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_14);
-
-        yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_14);
-        assertThat(true, is(yangNode == null));
-    }
-
-    /**
-     * Unit test case should generate exceptions.
-     */
-    @Test
-    public void testRegistration() {
-        thrown.expect(RuntimeException.class);
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        testYangSchemaNodeProvider.processRegistrationOfApp();
-    }
-
-    /**
-     * Unit test case should not generate any exceptions and should
-     * return specific revision node.
-     */
-    @Test
-    public void testGetWithSpecificRevision() {
-        testYangSchemaNodeProvider.processSchemaRegistry(null);
-        YangSchemaNode schemaNode = testYangSchemaNodeProvider
-                .getDefaultYangSchemaRegistry()
-                .getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_WITH_DATE);
-
-        assertThat(true, is(schemaNode.getName().equals(SCHEMA_NAME_4)));
-        String date = testYangSchemaNodeProvider
-                .getDefaultYangSchemaRegistry()
-                .getDateInStringFormat(schemaNode);
-        assertThat(true, is(date.equals(DATE)));
-    }
-
-    /**
-     * Unit test case should not generate any exceptions
-     * verify notification should be checked for registration.
-     */
-    @Test
-    public void testNotification() {
-        MockIetfManager manager = new MockIetfManager();
-        testYangSchemaNodeProvider.processSchemaRegistry(manager);
-        boolean isRegWithNotification =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry()
-                        .verifyNotificationObject(manager, IetfNetwork1Service.class);
-        assertThat(true, is(isRegWithNotification));
-        isRegWithNotification = testYangSchemaNodeProvider
-                .getDefaultYangSchemaRegistry()
-                .verifyNotificationObject(manager, IetfNetwork2Service.class);
-        assertThat(false, is(isRegWithNotification));
-        isRegWithNotification = testYangSchemaNodeProvider
-                .getDefaultYangSchemaRegistry()
-                .verifyNotificationObject(new TestManager(), TestService.class);
-        assertThat(false, is(isRegWithNotification));
-    }
-
-    /**
-     * get schema for namespace in decode test.
-     */
-    @Test
-    public void testGetNodeWrtNamespace() {
-        MockIetfManager manager = new MockIetfManager();
-        testYangSchemaNodeProvider.processSchemaRegistry(manager);
-        DefaultYangSchemaRegistry registry =
-                testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
-
-        YangSchemaNode yangNode =
-                registry.getSchemaWrtNameSpace(NAMESPACE);
-        assertThat(true, is(CHECK.equals(yangNode.getName())));
-
-        YangRevision rev = ((YangNode) yangNode).getRevision();
-        assertThat(true, is(rev != null));
-
-        String date = registry.getDateInStringFormat(yangNode);
-        assertThat(true, is(DATE_NAMESPACE.equals(date)));
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/MockIetfManager.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/MockIetfManager.java
deleted file mode 100644
index 2086ed4..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/MockIetfManager.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ysr;
-
-import org.onosproject.event.ListenerRegistry;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.IetfNetwork2;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.IetfNetwork2OpParam;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.IetfNetwork2Service;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.ietfnetwork2.IetfNetwork2Event;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.ietfnetwork2.IetfNetwork2EventListener;
-
-/**
- * Represent mock implementation for services.
- */
-public class MockIetfManager
-        extends ListenerRegistry<IetfNetwork2Event, IetfNetwork2EventListener>
-        implements IetfNetwork2Service {
-
-    @Override
-    public IetfNetwork2 getIetfNetwork2(IetfNetwork2OpParam ietfNetwork2) {
-        return null;
-    }
-
-    @Override
-    public void setIetfNetwork2(IetfNetwork2OpParam ietfNetwork2) {
-
-    }
-
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/TestYangSchemaNodeProvider.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/TestYangSchemaNodeProvider.java
deleted file mode 100644
index f78d903..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/TestYangSchemaNodeProvider.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ysr;
-
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network1.rev20151208.IetfNetwork1Service;
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangSchemaNode;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.deSerializeDataModel;
-import static org.onosproject.yangutils.utils.UtilConstants.TEMP;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
-
-/**
- * Represents mock bundle context. provides bundle context for YSR to do unit
- * testing.
- */
-public class TestYangSchemaNodeProvider {
-
-    private static final String FS = File.separator;
-    private static final String PATH = System.getProperty("user.dir") +
-            FS + "target" + FS + "classes" + FS;
-    private static final String SER_FILE_PATH = "yang" + FS + "resources" +
-            FS + "YangMetaData.ser";
-    private static final String TEMP_FOLDER_PATH = PATH + TEMP;
-    private final DefaultYangSchemaRegistry registry =
-            new DefaultYangSchemaRegistry();
-    private static final String RESOURCE = "src/test/resources";
-    private List<YangNode> nodes = new ArrayList<>();
-
-    /**
-     * Creates an instance of mock bundle context.
-     */
-    public TestYangSchemaNodeProvider() {
-    }
-
-    /**
-     * Process YANG schema node for a application.
-     *
-     * @param appObject application object
-     */
-    public void processSchemaRegistry(Object appObject) {
-        try {
-            Set<YangNode> appNode = deSerializeDataModel(PATH + SER_FILE_PATH);
-            nodes.addAll(appNode);
-            String appName;
-            ClassLoader classLoader = TestYangSchemaNodeProvider.class.getClassLoader();
-            for (YangSchemaNode node : nodes) {
-                appName = registry.getServiceName(node);
-                Class<?> cls;
-                try {
-                    cls = classLoader.loadClass(appName);
-                } catch (ClassNotFoundException e) {
-                    continue;
-                }
-                registry.processRegistration(cls, RESOURCE, nodes, appObject, true);
-                registry.updateServiceClass(cls);
-                //interface generation.
-                appName = registry.getInterfaceClassName(node);
-                try {
-                    cls = classLoader.loadClass(appName);
-                } catch (ClassNotFoundException e) {
-                    continue;
-                }
-                registry.processRegistration(cls, RESOURCE,
-                                             nodes, appObject, true);
-                registry.updateServiceClass(cls);
-            }
-            deleteDirectory(TEMP_FOLDER_PATH);
-        } catch (IOException e) {
-        }
-    }
-
-    /**
-     * Unregisters services.
-     *
-     * @param appName application name
-     */
-    void unregisterService(String appName) {
-        ClassLoader classLoader = TestYangSchemaNodeProvider.class.getClassLoader();
-        try {
-            Class<?> cls = classLoader.loadClass(appName);
-            registry.unRegisterApplication(null, cls);
-        } catch (ClassNotFoundException e) {
-        }
-
-    }
-
-    /**
-     * Returns schema registry.
-     *
-     * @return schema registry
-     */
-    public DefaultYangSchemaRegistry getDefaultYangSchemaRegistry() {
-        return registry;
-    }
-
-    /**
-     * Process registration of a service.
-     */
-    void processRegistrationOfApp() {
-        getDefaultYangSchemaRegistry().doPreProcessing(IetfNetwork1Service.class,
-                                                       new MockIetfManager());
-    }
-
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/DefaultYangTreeBuilderTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/DefaultYangTreeBuilderTest.java
deleted file mode 100644
index c38aa95..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/DefaultYangTreeBuilderTest.java
+++ /dev/null
@@ -1,1155 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ytb;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.onosproject.yang.gen.v1.yms.test.ytb.derived.type.with.bits.and.binary.rev20160826.YtbDerivedTypeWithBitsAndBinary;
-import org.onosproject.yang.gen.v1.yms.test.ytb.derived.type.with.bits.and.binary.rev20160826.YtbDerivedTypeWithBitsAndBinaryOpParam;
-import org.onosproject.yang.gen.v1.yms.test.ytb.derived.type.with.bits.and.binary.rev20160826.ytbderivedtypewithbitsandbinary.Derivedbinarya;
-import org.onosproject.yang.gen.v1.yms.test.ytb.derived.type.with.bits.and.binary.rev20160826.ytbderivedtypewithbitsandbinary.Derivedbinaryb;
-import org.onosproject.yang.gen.v1.yms.test.ytb.derived.type.with.bits.and.binary.rev20160826.ytbderivedtypewithbitsandbinary.Derivedbitsa;
-import org.onosproject.yang.gen.v1.yms.test.ytb.derived.type.with.bits.and.binary.rev20160826.ytbderivedtypewithbitsandbinary.Derivedbitsb;
-import org.onosproject.yang.gen.v1.yms.test.ytb.derived.type.with.bits.and.binary.rev20160826.ytbderivedtypewithbitsandbinary.ForunionUnion;
-import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.container.rev20160826.YtbModuleWithContainer;
-import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.container.rev20160826.YtbModuleWithContainerOpParam;
-import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.container.rev20160826.ytbmodulewithcontainer.DefaultSched;
-import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.container.rev20160826.ytbmodulewithcontainer.Sched;
-import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.leaf.ietfschedule.rev20160826.YtbIetfSchedule;
-import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.leaf.ietfschedule.rev20160826.YtbIetfSchedule.OnosYangOpType;
-import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.leaf.ietfschedule.rev20160826.YtbIetfScheduleOpParam;
-import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.leaf.ietfschedule.rev20160826.ytbietfschedule.Enum1Enum;
-import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.leaf.ietfschedule.rev20160826.ytbietfschedule.Enum2Enum;
-import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.leaflist.rev20160826.YtbModuleWithLeafList;
-import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.leaflist.rev20160826.YtbModuleWithLeafListOpParam;
-import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.yangautoprefixlist.rev20160826.YtbModuleWithList;
-import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.yangautoprefixlist.rev20160826.YtbModuleWithListOpParam;
-import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.yangautoprefixlist.rev20160826.ytbmodulewithlist.DefaultYtblistlist;
-import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.yangautoprefixlist.rev20160826.ytbmodulewithlist.Find;
-import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.yangautoprefixlist.rev20160826.ytbmodulewithlist.Ytblistlist;
-import org.onosproject.yang.gen.v1.yms.test.ytb.multi.module.a.rev20160826.YtbMultiModulea;
-import org.onosproject.yang.gen.v1.yms.test.ytb.multi.module.a.rev20160826.YtbMultiModuleaOpParam;
-import org.onosproject.yang.gen.v1.yms.test.ytb.multi.module.a.rev20160826.ytbmultimodulea.DefaultYtbmultilist;
-import org.onosproject.yang.gen.v1.yms.test.ytb.multi.module.a.rev20160826.ytbmultimodulea.Ytbmultilist;
-import org.onosproject.yang.gen.v1.yms.test.ytb.multi.module.b.rev20160826.YtbMultiModuleb;
-import org.onosproject.yang.gen.v1.yms.test.ytb.multi.module.b.rev20160826.YtbMultiModulebOpParam;
-import org.onosproject.yang.gen.v1.yms.test.ytb.multi.module.b.rev20160826.ytbmultimoduleb.DefaultYtbmultilistb;
-import org.onosproject.yang.gen.v1.yms.test.ytb.multi.module.b.rev20160826.ytbmultimoduleb.Ytbmultilistb;
-import org.onosproject.yang.gen.v1.yms.test.ytb.multi.notification.with.container.rev20160826.ytbmultinotificationwithcontainer.DefaultFortesta;
-import org.onosproject.yang.gen.v1.yms.test.ytb.multi.notification.with.container.rev20160826.ytbmultinotificationwithcontainer.Fortesta;
-import org.onosproject.yang.gen.v1.yms.test.ytb.multi.notification.with.container.rev20160826.ytbmultinotificationwithcontainer.YtbMultiNotificationWithContainerEvent;
-import org.onosproject.yang.gen.v1.yms.test.ytb.multi.notification.with.container.rev20160826.ytbmultinotificationwithcontainer.YtbMultiNotificationWithContainerEventSubject;
-import org.onosproject.yang.gen.v1.yms.test.ytb.multi.notification.with.container.rev20160826.ytbmultinotificationwithcontainer.fortesta.DefaultYtbnot;
-import org.onosproject.yang.gen.v1.yms.test.ytb.multi.notification.with.container.rev20160826.ytbmultinotificationwithcontainer.fortesta.Ytbnot;
-import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.YtbTreeBuilderForListHavingList;
-import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.YtbTreeBuilderForListHavingListOpParam;
-import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.ytbtreebuilderforlisthavinglist.Carrier;
-import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.ytbtreebuilderforlisthavinglist.DefaultCarrier;
-import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.ytbtreebuilderforlisthavinglist.carrier.DefaultMultiplexes;
-import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.ytbtreebuilderforlisthavinglist.carrier.Multiplexes;
-import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.ytbtreebuilderforlisthavinglist.carrier.multiplexes.ApplicationAreas;
-import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.ytbtreebuilderforlisthavinglist.carrier.multiplexes.DefaultApplicationAreas;
-import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.ytbtreebuilderforlisthavinglist.carrier.multiplexes.TypesEnum;
-import org.onosproject.yms.app.ydt.YdtExtendedBuilder;
-import org.onosproject.yms.app.ydt.YdtNode;
-import org.onosproject.yms.app.ysr.DefaultYangSchemaRegistry;
-import org.onosproject.yms.ydt.YdtBuilder;
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ydt.YdtContextOperationType;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.List;
-import java.util.Set;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsNull.nullValue;
-import static org.onosproject.yms.ydt.YdtContextOperationType.CREATE;
-import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE;
-import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
-import static org.onosproject.yms.ydt.YdtContextOperationType.NONE;
-import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REQUEST;
-import static org.onosproject.yms.ydt.YmsOperationType.QUERY_CONFIG_REQUEST;
-import static org.onosproject.yms.ydt.YmsOperationType.QUERY_REQUEST;
-
-/**
- * Unit test cases for YANG tree builder with different YANG object
- * configuration.
- */
-public class DefaultYangTreeBuilderTest extends YtbErrMsgAndConstants {
-
-    private static final String ONE = "1";
-    private static final String TWO = "2";
-    private static final String THREE = "3";
-    private static final String FOUR = "4";
-    private static final String FIVE = "5";
-    private static final String SIX = "6";
-    private static final String NINE = "9";
-    private static final String IETF_SCHEDULE = "YtbIetfSchedule";
-    private static final String TIME = "time";
-    private static final String MOD_LEAF_LIST = "YtbModuleWithLeafList";
-    private static final String ENUM_1 = "enum1";
-    private static final String ENUM_2 = "enum2";
-    private static final String HUNDRED_100 = "hundred-100";
-    private static final String TEN_10 = "ten-10";
-    private static final String THOUSAND_1000 = "thousand-1000";
-    private static final String MOD_CONT = "YtbModuleWithContainer";
-    private static final String SCHED = "sched";
-    private static final String PREDICT_VAL = "98989";
-    private static final String MOD_LIST = "YtbModuleWithList";
-    private static final String LIST_LIST = "ytblistlist";
-    private static final String PREDICTION = "prediction";
-    private static final String TRUE = "true";
-    private static final String FALSE = "false";
-    private static final String MUL_NOTIFY =
-            "YtbMultiNotificationWithContainer";
-    private static final String NOTIFICATION = "notification";
-    private static final String NOTIFY = "fortesta";
-    private static final String YTB_NOTIFY_CONT = "ytbnot";
-    private static final String NOTIFY_LEAF = "notileaf";
-    private static final String ANT = "ant";
-    private static final String ANIMAL = "animal";
-    private static final String BIRD = "bird";
-    private static final String BALL = "ball";
-    private static final String BAT = "bat";
-    private static final String MUL_MOD_A = "YtbMultiModulea";
-    private static final String MUL_LIST_A = "ytbmultilist";
-    private static final String CHECK = "check";
-    private static final String MUL_MOD_B = "YtbMultiModuleb";
-    private static final String MUL_LIST_B = "ytbmultilistb";
-    private static final String CHECKIN = "checkin";
-    private static final String LIST_WITH_LIST =
-            "YtbTreeBuilderForListHavingList";
-    private static final String CONT_CARRIER = "carrier";
-    private static final String LIST_MULTIPLEXES = "multiplexes";
-    private static final String TYPES = "types";
-    private static final String TIME_DIVISION = "time-division";
-    private static final String APP_AREA_LIST = "application-areas";
-    private static final String DEST_AREA = "destination-areas";
-    private static final String FREQUENCY_DIV = "frequency-division";
-    private static final String MOD_BIT_BIN = "YtbDerivedTypeWithBitsAndBinary";
-    private static final String FOR_BINARY = "forbinary";
-    private static final String BIN_VAL_1 = "BQUF";
-    private static final String FOR_BITS = "forbits";
-    private static final String FOR_BINARY_LIST = "forbinarylist";
-    private static final String BIN_VAL_2 = "CQkA";
-    private static final String BIN_VAL_3 = "DAYA";
-    private static final String BIN_VAL_4 = "EB0Z";
-    private static final String FOR_BITS_LIST = "forbitslist";
-    private static final String FOR_UNION = "forunion";
-    private static final String BIN_VAL_5 = "AAAA";
-    private static final String BIT_VAL_1 = "leaf1 leaf2";
-    private static final String BIN_VAL_6 = "AQYD";
-    private static final String BIN_VAL_7 = "AgcE";
-    private static final String BIN_VAL_8 = "BQYB";
-    private static final String BIN_VAL_9 = "AwgE";
-    private static final String BIN_VAL_10 = "AQAA";
-    private static final String BIN_VAL_11 = "AAAB";
-    private static final String BIN_VAL_12 = "BwcH";
-    private static final String BIN_VAL_13 = "AAE=";
-    private static final String BIT_VAL_2 = "index signature";
-    private static final String BIT_VAL_3 = "index";
-    private static final String BIT_VAL_4 = "index name";
-    private static final String BIT_VAL_5 = "index name signature";
-
-    @Rule
-    public ExpectedException thrown = ExpectedException.none();
-
-    private static String emptyObjErrMsg(String objName) {
-        return "The " + objName + " given for tree creation cannot be null";
-    }
-
-    private static BigDecimal getBigDeci(int bigDecimal) {
-        return BigDecimal.valueOf(bigDecimal);
-    }
-
-    /**
-     * Processes an empty object list to the YTB and checks that the
-     * exception is thrown.
-     */
-    @Test
-    public void processInvalidListInput() {
-        thrown.expect(YtbException.class);
-        thrown.expectMessage(emptyObjErrMsg("object list"));
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        treeBuilder.getYdtBuilderForYo(null, ROOT_NAME, ROOT_NAME_SPACE,
-                                       EDIT_CONFIG_REQUEST, null);
-    }
-
-    /**
-     * Processes an empty notification object to the YTB and checks that the
-     * exception is thrown.
-     */
-    @Test
-    public void processInvalidInputForNotification() {
-        thrown.expect(YtbException.class);
-        thrown.expectMessage(emptyObjErrMsg("event object"));
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        treeBuilder.getYdtForNotification(null, ROOT_NAME, null);
-    }
-
-    /**
-     * Processes an empty rpc output object to the YTB and checks that the
-     * exception is thrown.
-     */
-    @Test
-    public void processInvalidInputForRpc() {
-        thrown.expect(YtbException.class);
-        thrown.expectMessage(emptyObjErrMsg("output object"));
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        treeBuilder.getYdtForRpcResponse(null, null);
-    }
-
-    /**
-     * Processes a YAB/YSB request to YTB with a leaf value being filled in
-     * the app object. Checks the constructed YDT tree for module and leaf
-     * and its value.
-     */
-    @Test
-    public void processModuleAndLeaf() {
-
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-        YtbIetfSchedule schedule = new YtbIetfScheduleOpParam
-                .YtbIetfScheduleBuilder()
-                .time((byte) 9)
-                .yangYtbIetfScheduleOpType(OnosYangOpType.MERGE)
-                .build();
-
-        // As YSB or YAB protocol sets the value for YTB.
-        List<Object> objectList = new ArrayList<>();
-        objectList.add(schedule);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo(
-                objectList, ROOT_NAME, ROOT_NAME_SPACE,
-                EDIT_CONFIG_REQUEST, registry);
-
-        // Receives YDT context and checks the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Gets the first module from logical root node.
-        YdtContext module = context.getFirstChild();
-        YdtContextOperationType opType = ((YdtNode) module)
-                .getYdtContextOperationType();
-        assertThat(getInCrtName(MODULE, IETF_SCHEDULE),
-                   module.getName(), is(IETF_SCHEDULE));
-        assertThat(getInCrtOpType(MODULE, IETF_SCHEDULE),
-                   opType, is(MERGE));
-
-        // Gets the first leaf from module IetfSchedule.
-        YdtContext leafContext = module.getFirstChild();
-        assertThat(getInCrtName(LEAF, TIME),
-                   leafContext.getName(), is(TIME));
-        assertThat(getInCrtLeafValue(TIME, NINE),
-                   leafContext.getValue(), is(NINE));
-    }
-
-    /**
-     * Processes a YAB/YSB request to YTB with a leaf-list value being filled
-     * in the app object. Checks the constructed YDT tree for module and
-     * leaf-list and its value.
-     */
-    @Test
-    public void processModuleAndLeafList() {
-
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-
-        // Creates list of type long for setting the leaf-list.
-        List<Long> longList = new ArrayList<>();
-        longList.add((long) 1);
-        longList.add((long) 2);
-        longList.add((long) 3);
-
-        YtbModuleWithLeafList leafListModule = new YtbModuleWithLeafListOpParam
-                .YtbModuleWithLeafListBuilder().time(longList).build();
-
-        // As YSB or YAB protocol sets the value for YTB.
-        List<Object> objectList = new ArrayList<>();
-        objectList.add(leafListModule);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo(
-                objectList, ROOT_NAME, ROOT_NAME_SPACE, QUERY_REQUEST, registry);
-
-        // Receives YDT context and check the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Gets the first module from logical root node.
-        YdtContext module = context.getFirstChild();
-        YdtContextOperationType opType = ((YdtNode) module)
-                .getYdtContextOperationType();
-        assertThat(getInCrtName(MODULE, MOD_LEAF_LIST),
-                   module.getName(), is(MOD_LEAF_LIST));
-        assertThat(getInCrtOpType(MODULE, MOD_LEAF_LIST), opType, nullValue());
-
-        // Gets the first leaf-list from module.
-        YdtContext leafList = module.getFirstChild();
-        assertThat(getInCrtName(LEAF_LIST, TIME), leafList.getName(),
-                   is(TIME));
-        Set<String> value = leafList.getValueSet();
-        assertThat(getInCrtLeafListValue(TIME, ONE),
-                   value.contains(ONE), is(true));
-        assertThat(getInCrtLeafListValue(TIME, TWO),
-                   value.contains(TWO), is(true));
-        assertThat(getInCrtLeafListValue(TIME, THREE),
-                   value.contains(THREE), is(true));
-    }
-
-    /**
-     * Processes leaf and leaf-list with type enum under module. Checks the
-     * constructed YDT tree has YANG enum value.
-     */
-    @Test
-    public void processWithTypeEnum() {
-
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-
-        // Creates enum list for setting the leaf-list.
-        List<Enum2Enum> enumList = new ArrayList<>();
-        enumList.add(Enum2Enum.HUNDRED_100);
-        enumList.add(Enum2Enum.TEN_10);
-        enumList.add(Enum2Enum.THOUSAND_1000);
-
-        YtbIetfSchedule schedule = new YtbIetfScheduleOpParam
-                .YtbIetfScheduleBuilder()
-                .time((byte) 9)
-                .yangYtbIetfScheduleOpType(OnosYangOpType.MERGE)
-                .enum1(Enum1Enum.HUNDRED)
-                .enum2(enumList)
-                .build();
-
-
-        // As YSB or YAB protocol sets the value for YTB.
-        List<Object> objectList = new ArrayList<>();
-        objectList.add(schedule);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo(
-                objectList, ROOT_NAME, ROOT_NAME_SPACE,
-                EDIT_CONFIG_REQUEST, registry);
-
-        // Receives YDT context and check the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Gets the first module from logical root node.
-        YdtContext module = context.getFirstChild();
-        YdtContextOperationType opType =
-                ((YdtNode) module).getYdtContextOperationType();
-        assertThat(getInCrtName(MODULE, IETF_SCHEDULE),
-                   module.getName(), is(IETF_SCHEDULE));
-        assertThat(getInCrtOpType(MODULE, IETF_SCHEDULE), opType, is(MERGE));
-
-        // Checks the leaf and leaf-list values.
-        YdtContext timeLeaf = module.getFirstChild();
-        assertThat(getInCrtName(LEAF, TIME), timeLeaf.getName(), is(TIME));
-        assertThat(getInCrtLeafValue(TIME, NINE),
-                   timeLeaf.getValue(), is(NINE));
-
-        YdtContext enum1Leaf = timeLeaf.getNextSibling();
-        assertThat(getInCrtName(LEAF, ENUM_1), enum1Leaf.getName(), is(ENUM_1));
-        assertThat(getInCrtLeafValue(ENUM_1, HUNDRED),
-                   enum1Leaf.getValue(), is(HUNDRED));
-
-        YdtContext enum2LeafList = enum1Leaf.getNextSibling();
-        assertThat(getInCrtName(LEAF_LIST, ENUM_2),
-                   enum2LeafList.getName(), is(ENUM_2));
-        Set<String> valueSet = enum2LeafList.getValueSet();
-        assertThat(getInCrtLeafListValue(ENUM_2, HUNDRED_100),
-                   valueSet.contains(HUNDRED_100), is(true));
-        assertThat(getInCrtLeafListValue(ENUM_2, TEN_10),
-                   valueSet.contains(TEN_10), is(true));
-        assertThat(getInCrtLeafListValue(ENUM_2, THOUSAND_1000),
-                   valueSet.contains(THOUSAND_1000), is(true));
-    }
-
-    /**
-     * Processes a YAB/YSB request to YTB with a container having leaf value
-     * being filled in the app object. Checks the constructed YDT tree for
-     * module and container and leaf.
-     */
-    @Test
-    public void processModuleWithContainer() {
-
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-
-        // Creates container object with leaf of decimal type.
-        Sched sched = new DefaultSched.SchedBuilder()
-                .predict(getBigDeci(98989))
-                .yangSchedOpType(
-                        YtbModuleWithContainerOpParam.OnosYangOpType.DELETE)
-                .build();
-        // Creates module object with the container.
-        YtbModuleWithContainer contModule = new YtbModuleWithContainerOpParam
-                .YtbModuleWithContainerBuilder()
-                .sched(sched)
-                .yangYtbModuleWithContainerOpType(
-                        YtbModuleWithContainerOpParam.OnosYangOpType.CREATE)
-                .build();
-
-        // As YSB or YAB protocol sets the value for YTB.
-        List<Object> objectList = new ArrayList<>();
-        objectList.add(contModule);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo(
-                objectList, ROOT_NAME, ROOT_NAME_SPACE,
-                QUERY_CONFIG_REQUEST, registry);
-
-        // Receives YDT context and check the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Gets the first module from logical root node.
-        YdtContext module = context.getFirstChild();
-        YdtContextOperationType opType = ((YdtNode) module)
-                .getYdtContextOperationType();
-
-        assertThat(getInCrtName(MODULE, MOD_CONT),
-                   module.getName(), is(MOD_CONT));
-        assertThat(getInCrtOpType(MODULE, MOD_CONT), opType, is(CREATE));
-
-        // Get the container from module.
-        YdtContext container = module.getFirstChild();
-        YdtContextOperationType opTypeOfCont = ((YdtNode) container)
-                .getYdtContextOperationType();
-
-        assertThat(getInCrtName(CONTAINER, SCHED),
-                   container.getName(), is("sched"));
-        assertThat(getInCrtOpType(CONTAINER, SCHED), opTypeOfCont, is(DELETE));
-
-        // Gets leaf from container.
-        YdtContext leafContext = container.getFirstChild();
-        assertThat(getInCrtName(LEAF, PREDICT),
-                   leafContext.getName(), is(PREDICT));
-        assertThat(getInCrtLeafValue(PREDICT, PREDICT_VAL),
-                   leafContext.getValue(), is(PREDICT_VAL));
-    }
-
-    /**
-     * Processes a YAB/YSB request to YTB with a list having leaf-list value
-     * being filled in the app object. Checks the constructed YDT tree for
-     * module and list and leaf-list.
-     */
-    @Test
-    public void processModuleWithList() {
-
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-
-        // Creates multi typedef values.
-        Find find1 = new Find(true);
-        Find find2 = new Find(false);
-        Find find3 = new Find(true);
-        Find find4 = new Find(false);
-
-        // Creates two lists, with the typedef values added.
-        List<Find> findList1 = new ArrayList<>();
-        List<Find> findList2 = new ArrayList<>();
-        findList1.add(find1);
-        findList1.add(find2);
-        findList2.add(find3);
-        findList2.add(find4);
-
-        // Creates two list contents.
-        Ytblistlist list1 = new DefaultYtblistlist
-                .YtblistlistBuilder().prediction(findList1).build();
-        Ytblistlist list2 = new DefaultYtblistlist
-                .YtblistlistBuilder().prediction(findList2).build();
-
-        List<Ytblistlist> ytbList = new ArrayList<>();
-        ytbList.add(list1);
-        ytbList.add(list2);
-
-        // Creates module having list.
-        YtbModuleWithList listModule = new YtbModuleWithListOpParam
-                .YtbModuleWithListBuilder().ytblistlist(ytbList).build();
-
-        // As YSB or YAB protocol sets the value for YTB.
-        List<Object> objectList = new ArrayList<>();
-        objectList.add(listModule);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo(
-                objectList, ROOT_NAME, ROOT_NAME_SPACE,
-                EDIT_CONFIG_REQUEST, registry);
-
-        // Receives YDT context and check the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Gets the first module from logical root node.
-        YdtContext module = context.getFirstChild();
-        YdtContextOperationType opType = ((YdtNode) module)
-                .getYdtContextOperationType();
-
-        assertThat(getInCrtName(MODULE, MOD_LIST),
-                   module.getName(), is(MOD_LIST));
-        assertThat(getInCrtOpType(MODULE, MOD_LIST), opType, nullValue());
-
-        // Gets the first list from module YtbModuleWithList.
-        YdtContext firstList = module.getFirstChild();
-        YdtContextOperationType listOpType = ((YdtNode) firstList)
-                .getYdtContextOperationType();
-        // Checks the contents in the list.
-        assertThat(getInCrtName(LIST, LIST_LIST),
-                   firstList.getName(), is(LIST_LIST));
-        assertThat(getInCrtOpType(LIST, LIST_LIST), listOpType, nullValue());
-
-        // Gets the contents of the leaf-list in the first list content.
-        YdtContext leafListInList1 = firstList.getFirstChild();
-
-        // Evaluates the leaf-list values.
-        Set leafListValue1 = leafListInList1.getValueSet();
-        assertThat(getInCrtName(LEAF_LIST, PREDICTION),
-                   leafListInList1.getName(), is(PREDICTION));
-        assertThat(getInCrtLeafListValue(PREDICTION, TRUE),
-                   leafListValue1.contains(TRUE), is(true));
-        assertThat(getInCrtLeafListValue(PREDICTION, FALSE),
-                   leafListValue1.contains(FALSE), is(true));
-
-        // Gets the second list from module YtbModuleWithList.
-        YdtContext secondList = firstList.getNextSibling();
-
-        // Gets the contents of the leaf-list in the second list content.
-        YdtContext leafListInList2 = secondList.getFirstChild();
-        // Evaluates the leaf-list values.
-        Set leafListValue2 = leafListInList2.getValueSet();
-        assertThat(getInCrtName(LEAF_LIST, PREDICTION),
-                   leafListInList2.getName(), is(PREDICTION));
-        assertThat(getInCrtLeafListValue(PREDICTION, TRUE),
-                   leafListValue2.contains(TRUE), is(true));
-        assertThat(getInCrtLeafListValue(PREDICTION, FALSE),
-                   leafListValue2.contains(FALSE), is(true));
-    }
-
-    /**
-     * Processes multi notification under module when request comes for one
-     * notification event in module.
-     */
-    @Test
-    public void processMultiNotificationWithContainer() {
-
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-
-        // Sets the bit value.
-        BitSet bitleaf = new BitSet();
-        bitleaf.set(0);
-        bitleaf.set(1);
-
-        // Creates container with the leaf.
-        Ytbnot ytbnot = new DefaultYtbnot.YtbnotBuilder().notileaf(bitleaf)
-                .build();
-        // Creates notification with container.
-        Fortesta testa = new DefaultFortesta.FortestaBuilder()
-                .ytbnot(ytbnot).build();
-        // Invokes event subject class with notification.
-        YtbMultiNotificationWithContainerEventSubject eventSubject = new
-                YtbMultiNotificationWithContainerEventSubject();
-        eventSubject.fortesta(testa);
-        // Invokes event class with the event type and the event subject obj.
-        YtbMultiNotificationWithContainerEvent event =
-                new YtbMultiNotificationWithContainerEvent(
-                        YtbMultiNotificationWithContainerEvent.Type.FORTESTA,
-                        eventSubject);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtContext ydtContext = treeBuilder.getYdtForNotification(
-                event, ROOT_NAME, registry);
-
-        // Gets the first module from logical root node.
-        YdtContext context = ydtContext.getFirstChild();
-        YdtContextOperationType opType = ((YdtNode) context)
-                .getYdtContextOperationType();
-
-        assertThat(getInCrtName(MODULE, MUL_NOTIFY), context.getName(),
-                   is(MUL_NOTIFY));
-        assertThat(getInCrtOpType(MODULE, MUL_NOTIFY), opType, is(NONE));
-
-        // Gets the notification under module.
-        YdtContext notify = context.getFirstChild();
-        YdtContextOperationType notifyOpType = ((YdtNode) notify)
-                .getYdtContextOperationType();
-
-        // Checks the contents in the first notification.
-        assertThat(getInCrtName(NOTIFICATION, NOTIFY), notify.getName(),
-                   is(NOTIFY));
-        assertThat(getInCrtOpType(NOTIFICATION, NOTIFY), notifyOpType,
-                   is(NONE));
-
-        // Gets the container in notification
-        YdtContext container = notify.getFirstChild();
-        assertThat(getInCrtName(CONTAINER, YTB_NOTIFY_CONT),
-                   container.getName(), is(YTB_NOTIFY_CONT));
-
-        // Evaluates the leaf values.
-        YdtContext leafInCont = container.getFirstChild();
-        assertThat(getInCrtName(LEAF, NOTIFY_LEAF), leafInCont.getName(),
-                   is(NOTIFY_LEAF));
-        assertThat(getInCrtLeafValue(NOTIFY_LEAF, BIT_VAL_1),
-                   leafInCont.getValue(), is(BIT_VAL_1));
-    }
-
-    /**
-     * Processes multi module with list in both the modules and checks the
-     * YANG data tree building.
-     */
-    @Test
-    public void processMultiModule() {
-
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-
-        // Creates list of big integer for leaf-list under list1.
-        List<BigInteger> bigIntegerList = new ArrayList<>();
-        bigIntegerList.add(BigInteger.valueOf(1));
-        bigIntegerList.add(BigInteger.valueOf(2));
-        bigIntegerList.add(BigInteger.valueOf(3));
-        // Creates list of big integer for leaf-list under list2.
-        List<BigInteger> bigIntegerList1 = new ArrayList<>();
-        bigIntegerList1.add(BigInteger.valueOf(4));
-        bigIntegerList1.add(BigInteger.valueOf(5));
-        bigIntegerList1.add(BigInteger.valueOf(6));
-
-        // Creates two list contents.
-        Ytbmultilist listContent1 = new DefaultYtbmultilist
-                .YtbmultilistBuilder().check(bigIntegerList).build();
-        Ytbmultilist listContent2 = new DefaultYtbmultilist
-                .YtbmultilistBuilder().check(bigIntegerList1).build();
-
-        List<Ytbmultilist> ytbmultilists = new ArrayList<>();
-        ytbmultilists.add(listContent1);
-        ytbmultilists.add(listContent2);
-
-        // Creates module-a with two list contents created.
-        YtbMultiModulea modulea = new YtbMultiModuleaOpParam
-                .YtbMultiModuleaBuilder().ytbmultilist(ytbmultilists).build();
-
-        // Creates list of string for leaf-list under list1.
-        List<String> stringList = new ArrayList<>();
-        stringList.add(ANT);
-        stringList.add(ANIMAL);
-        stringList.add(BIRD);
-
-        // Creates list of string for leaf-list under list2.
-        List<String> stringList1 = new ArrayList<>();
-        stringList1.add(CATCH);
-        stringList1.add(BALL);
-        stringList1.add(BAT);
-
-        // Creates two list contents.
-        Ytbmultilistb listContent3 = new DefaultYtbmultilistb
-                .YtbmultilistbBuilder().checkin(stringList).build();
-        Ytbmultilistb listContent4 = new DefaultYtbmultilistb
-                .YtbmultilistbBuilder().checkin(stringList1).build();
-
-        List<Ytbmultilistb> ytbMultiListb = new ArrayList<>();
-        ytbMultiListb.add(listContent3);
-        ytbMultiListb.add(listContent4);
-
-        // Creates module-b with two list contents created.
-        YtbMultiModuleb moduleb = new YtbMultiModulebOpParam
-                .YtbMultiModulebBuilder().ytbmultilistb(ytbMultiListb).build();
-
-        // As YSB or YAB protocol sets the value for YTB.
-        List<Object> listOfModules = new ArrayList<>();
-        listOfModules.add(modulea);
-        listOfModules.add(moduleb);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo(
-                listOfModules, ROOT_NAME, ROOT_NAME_SPACE,
-                EDIT_CONFIG_REQUEST, registry);
-
-        // Receives YDT context and check the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Checks module-a under root node.
-        YdtContext moduleA = context.getFirstChild();
-        assertThat(getInCrtName(MODULE, MUL_MOD_A), moduleA.getName(),
-                   is(MUL_MOD_A));
-
-        // Checks list-a in module-a and its respective leaf-list.
-        YdtContext list1InModuleA = moduleA.getFirstChild();
-        assertThat(getInCrtName(LIST, MUL_LIST_A), list1InModuleA.getName(),
-                   is(MUL_LIST_A));
-
-        YdtContext leafListA = list1InModuleA.getFirstChild();
-        assertThat(getInCrtName(LEAF_LIST, CHECK), leafListA.getName(),
-                   is(CHECK));
-
-        Set<String> valueA = leafListA.getValueSet();
-        assertThat(getInCrtLeafListValue(CHECK, ONE), valueA.contains(ONE),
-                   is(true));
-        assertThat(getInCrtLeafListValue(CHECK, TWO), valueA.contains(TWO),
-                   is(true));
-        assertThat(getInCrtLeafListValue(CHECK, THREE), valueA.contains(THREE),
-                   is(true));
-
-        // Checks list-b in module-a and its respective leaf-list.
-        YdtContext list2InModuleA = list1InModuleA.getNextSibling();
-        assertThat(getInCrtName(LIST, MUL_LIST_A), list2InModuleA.getName(),
-                   is(MUL_LIST_A));
-
-        YdtContext leafListB = list2InModuleA.getFirstChild();
-        assertThat(getInCrtName(LEAF_LIST, CHECK), leafListB.getName(),
-                   is(CHECK));
-
-        Set<String> valueB = leafListB.getValueSet();
-        assertThat(getInCrtLeafListValue(CHECK, FOUR), valueB.contains(FOUR),
-                   is(true));
-        assertThat(getInCrtLeafListValue(CHECK, FIVE), valueB.contains(FIVE),
-                   is(true));
-        assertThat(getInCrtLeafListValue(CHECK, SIX), valueB.contains(SIX),
-                   is(true));
-
-        // Checks module-b under root node.
-        YdtContext moduleB = moduleA.getNextSibling();
-        assertThat(getInCrtName(MODULE, MUL_MOD_B), moduleB.getName(),
-                   is(MUL_MOD_B));
-
-        // Checks list-a in module-b and its respective leaf-list.
-        YdtContext list1InModuleB = moduleB.getFirstChild();
-        assertThat(getInCrtName(LIST, MUL_LIST_B), list1InModuleB.getName(),
-                   is(MUL_LIST_B));
-
-        YdtContext leafListC = list1InModuleB.getFirstChild();
-        assertThat(getInCrtName(LEAF_LIST, CHECKIN), leafListC.getName(),
-                   is(CHECKIN));
-
-        Set<String> valueC = leafListC.getValueSet();
-        assertThat(getInCrtLeafListValue(CHECKIN, ANT), valueC.contains(ANT),
-                   is(true));
-        assertThat(getInCrtLeafListValue(CHECKIN, ANIMAL),
-                   valueC.contains(ANIMAL), is(true));
-        assertThat(getInCrtLeafListValue(CHECKIN, BIRD),
-                   valueC.contains(BIRD), is(true));
-
-        // Checks list-b in module-b and its respective leaf-list.
-        YdtContext list2InModuleB = list1InModuleB.getNextSibling();
-        assertThat(getInCrtName(LIST, MUL_LIST_B), list2InModuleB.getName(),
-                   is(MUL_LIST_B));
-
-        YdtContext leafListD = list2InModuleB.getFirstChild();
-        assertThat(getInCrtName(LEAF_LIST, CHECKIN), leafListD.getName(),
-                   is(CHECKIN));
-
-        Set<String> valueD = leafListD.getValueSet();
-        assertThat(getInCrtLeafListValue(CHECKIN, CATCH),
-                   valueD.contains(CATCH), is(true));
-        assertThat(getInCrtLeafListValue(CHECKIN, BALL),
-                   valueD.contains(BALL), is(true));
-        assertThat(getInCrtLeafListValue(CHECKIN, BAT),
-                   valueD.contains(BAT), is(true));
-    }
-
-    /**
-     * Processes tree building when a list node is having list inside it.
-     */
-    @Test
-    public void processTreeBuilderForListHavingList() {
-
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-
-        // Creates two binary leaf-lists for two list app areas.
-        List<byte[]> destArea1 = new ArrayList<>();
-        byte[] arr = new byte[]{1, 6, 3};
-        byte[] arr1 = new byte[]{2, 7, 4};
-        destArea1.add(arr);
-        destArea1.add(arr1);
-
-        List<byte[]> destArea2 = new ArrayList<>();
-        byte[] arr2 = new byte[]{3, 8, 4};
-        byte[] arr3 = new byte[]{5, 6, 1};
-        destArea2.add(arr2);
-        destArea2.add(arr3);
-
-        // Creates two app areas list.
-        ApplicationAreas appArea1 = new DefaultApplicationAreas
-                .ApplicationAreasBuilder().destinationAreas(destArea1).build();
-        ApplicationAreas appArea2 = new DefaultApplicationAreas
-                .ApplicationAreasBuilder().destinationAreas(destArea2).build();
-
-        List<ApplicationAreas> applicationAreasList = new ArrayList<>();
-        applicationAreasList.add(appArea1);
-        applicationAreasList.add(appArea2);
-
-        // Adds two lists under the multiplex list for content 1.
-        Multiplexes mpx1 = new DefaultMultiplexes.MultiplexesBuilder()
-                .types(TypesEnum.TIME_DIVISION)
-                .applicationAreas(applicationAreasList).build();
-
-        // Creates two binary leaf-lists for two list app areas.
-        List<byte[]> destArea3 = new ArrayList<>();
-        byte[] arrB = new byte[]{0, 0, 1};
-        byte[] arr1B = new byte[]{1, 0, 0};
-        destArea3.add(arrB);
-        destArea3.add(arr1B);
-
-        List<byte[]> destArea4 = new ArrayList<>();
-        byte[] arr2B = new byte[]{7, 7, 7};
-        byte[] arr3B = new byte[]{0, 1};
-        destArea4.add(arr2B);
-        destArea4.add(arr3B);
-
-        // Creates two app areas list.
-        ApplicationAreas appArea3 = new DefaultApplicationAreas
-                .ApplicationAreasBuilder().destinationAreas(destArea3).build();
-        ApplicationAreas appArea4 = new DefaultApplicationAreas
-                .ApplicationAreasBuilder().destinationAreas(destArea4).build();
-
-        List<ApplicationAreas> applicationAreasListB = new ArrayList<>();
-        applicationAreasListB.add(appArea3);
-        applicationAreasListB.add(appArea4);
-
-        // Adds two lists under the multiplex list for content 2.
-        Multiplexes mpx2 = new DefaultMultiplexes.MultiplexesBuilder()
-                .types(TypesEnum.FREQUENCY_DIVISION)
-                .applicationAreas(applicationAreasListB).build();
-
-        List<Multiplexes> multiplexList = new ArrayList<>();
-        multiplexList.add(mpx1);
-        multiplexList.add(mpx2);
-
-        // Sets it in the container carrier.
-        Carrier carrier = new DefaultCarrier.CarrierBuilder()
-                .multiplexes(multiplexList).build();
-
-        YtbTreeBuilderForListHavingList listWithList = new
-                YtbTreeBuilderForListHavingListOpParam
-                        .YtbTreeBuilderForListHavingListBuilder()
-                .carrier(carrier).build();
-
-        // As YSB or YAB protocol sets the value for YTB.
-        List<Object> objectList = new ArrayList<>();
-        objectList.add(listWithList);
-
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo(
-                objectList, ROOT_NAME, ROOT_NAME_SPACE,
-                QUERY_CONFIG_REQUEST, registry);
-
-        // Receives YDT context and check the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Gets the first module from logical root node.
-        YdtContext module = context.getFirstChild();
-        assertThat(getInCrtName(LIST, LIST_WITH_LIST), module.getName(),
-                   is(LIST_WITH_LIST));
-
-        // Checks the container node under module node.
-        YdtContext container = module.getFirstChild();
-        assertThat(getInCrtName(CONTAINER, CONT_CARRIER), container.getName(),
-                   is(CONT_CARRIER));
-
-        // Checks the list node with content 1 of multiplex.
-        YdtContext mtx1 = container.getFirstChild();
-        assertThat(getInCrtName(LIST, LIST_MULTIPLEXES), mtx1.getName(),
-                   is(LIST_MULTIPLEXES));
-
-        // Checks enum leaf under multiplex of content1.
-        YdtContext enumLeaf1 = mtx1.getFirstChild();
-        assertThat(getInCrtName(LEAF, TYPES), enumLeaf1.getName(), is(TYPES));
-        assertThat(getInCrtLeafValue(TYPES, TIME_DIVISION),
-                   enumLeaf1.getValue(), is(TIME_DIVISION));
-
-        // Checks list app area content 1 under multiplex content 1.
-        YdtContext appAreaList1 = enumLeaf1.getNextSibling();
-        assertThat(getInCrtName(LIST, APP_AREA_LIST), appAreaList1.getName(),
-                   is(APP_AREA_LIST));
-
-        YdtContext leafList1 = appAreaList1.getFirstChild();
-        assertThat(getInCrtName(LEAF_LIST, DEST_AREA), leafList1.getName(),
-                   is(DEST_AREA));
-        Set value1 = leafList1.getValueSet();
-        assertThat(getInCrtLeafListValue(DEST_AREA, BIN_VAL_6),
-                   value1.contains(BIN_VAL_6), is(true));
-        assertThat(getInCrtLeafListValue(DEST_AREA, BIN_VAL_7),
-                   value1.contains(BIN_VAL_7), is(true));
-
-        // Checks list app area content 2 under multiplex content 1.
-        YdtContext appAreaList2 = appAreaList1.getNextSibling();
-        assertThat(getInCrtName(LIST, APP_AREA_LIST), appAreaList2.getName(),
-                   is(APP_AREA_LIST));
-
-        YdtContext leafList2 = appAreaList2.getFirstChild();
-        assertThat(getInCrtName(LEAF_LIST, DEST_AREA), leafList2.getName(),
-                   is(DEST_AREA));
-        Set value2 = leafList2.getValueSet();
-        assertThat(getInCrtLeafListValue(DEST_AREA, BIN_VAL_8),
-                   value2.contains(BIN_VAL_8), is(true));
-        assertThat(getInCrtLeafListValue(DEST_AREA, BIN_VAL_9),
-                   value2.contains(BIN_VAL_9), is(true));
-
-        // Checks the list node with content 2 of multiplex.
-        YdtContext mtx2 = mtx1.getNextSibling();
-        assertThat(getInCrtName(LIST, LIST_MULTIPLEXES), mtx2.getName(),
-                   is(LIST_MULTIPLEXES));
-
-        // Checks enum leaf under multiplex of content2.
-        YdtContext enumLeaf2 = mtx2.getFirstChild();
-        assertThat(getInCrtName(LEAF, TYPES), enumLeaf2.getName(), is(TYPES));
-        assertThat(getInCrtLeafValue(TYPES, FREQUENCY_DIV),
-                   enumLeaf2.getValue(), is(FREQUENCY_DIV));
-
-        // Checks list app area content 1 under multiplex content 2.
-        YdtContext appAreaList3 = enumLeaf2.getNextSibling();
-        assertThat(getInCrtName(LIST, APP_AREA_LIST), appAreaList3.getName(),
-                   is(APP_AREA_LIST));
-
-        YdtContext leafList3 = appAreaList3.getFirstChild();
-        assertThat(getInCrtName(LEAF_LIST, DEST_AREA), leafList3.getName(),
-                   is(DEST_AREA));
-        Set value3 = leafList3.getValueSet();
-        assertThat(getInCrtLeafListValue(DEST_AREA, BIN_VAL_10),
-                   value3.contains(BIN_VAL_10), is(true));
-        assertThat(getInCrtLeafListValue(DEST_AREA, BIN_VAL_11),
-                   value3.contains(BIN_VAL_11), is(true));
-
-        // Checks list app area content 2 under multiplex content 2.
-        YdtContext appAreaList4 = appAreaList3.getNextSibling();
-        assertThat(getInCrtName(LIST, APP_AREA_LIST), appAreaList4.getName(),
-                   is(APP_AREA_LIST));
-
-        YdtContext leafList4 = appAreaList4.getFirstChild();
-        assertThat(getInCrtName(LEAF_LIST, DEST_AREA), leafList4.getName(),
-                   is(DEST_AREA));
-        Set value4 = leafList4.getValueSet();
-        assertThat(getInCrtLeafListValue(DEST_AREA, BIN_VAL_12),
-                   value4.contains(BIN_VAL_12), is(true));
-        assertThat(getInCrtLeafListValue(DEST_AREA, BIN_VAL_13),
-                   value4.contains(BIN_VAL_13), is(true));
-    }
-
-    /**
-     * Processes tree building from the derived type of leaf and leaf-list
-     * having binary and bits .
-     */
-    @Test
-    public void processTreeBuilderForBinaryAndBits() {
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-
-        // Creates a byte array for binary leaf.
-        byte[] binLeaf = new byte[]{5, 5, 5};
-
-        // Assigns the value in the chained loop of typedef.
-        Derivedbinaryb derBinb = new Derivedbinaryb(binLeaf);
-        Derivedbinarya derBina = new Derivedbinarya(derBinb);
-
-        // Creates bit set for bit leaf.
-        BitSet bitLeaf = new BitSet();
-        bitLeaf.set(1);
-        bitLeaf.set(100);
-
-        // Assigns the value in the chained loop of typedef.
-        Derivedbitsb derBitb = new Derivedbitsb(bitLeaf);
-        Derivedbitsa derBita = new Derivedbitsa(derBitb);
-
-        // Creates a byte array list for binary leaf-list.
-        byte[] binList1 = new byte[]{9, 9, 0};
-        byte[] binList2 = new byte[]{12, 6, 0};
-        byte[] binList3 = new byte[]{16, 29, 25};
-
-        // Assigns the value in the chained loop of typedef.
-        Derivedbinaryb derBinBList1 = new Derivedbinaryb(binList1);
-        Derivedbinaryb derBinBList2 = new Derivedbinaryb(binList2);
-        Derivedbinaryb derBinBList3 = new Derivedbinaryb(binList3);
-
-        Derivedbinarya derBinAList1 = new Derivedbinarya(derBinBList1);
-        Derivedbinarya derBinAList2 = new Derivedbinarya(derBinBList2);
-        Derivedbinarya derBinAList3 = new Derivedbinarya(derBinBList3);
-
-        List<Derivedbinarya> binAlist = new ArrayList<>();
-        binAlist.add(derBinAList1);
-        binAlist.add(derBinAList2);
-        binAlist.add(derBinAList3);
-
-        // Creates a bit set list for bit leaf-list.
-        BitSet bitList1 = new BitSet();
-        bitList1.set(1);
-        BitSet bitList2 = new BitSet();
-        bitList2.set(1);
-        bitList2.set(10);
-        BitSet bitList3 = new BitSet();
-        bitList3.set(1);
-        bitList3.set(10);
-        bitList3.set(100);
-
-        // Assigns the value in the chained loop of typedef.
-        Derivedbitsb bitBlist1 = new Derivedbitsb(bitList1);
-        Derivedbitsb bitBlist2 = new Derivedbitsb(bitList2);
-        Derivedbitsb bitBlist3 = new Derivedbitsb(bitList3);
-
-        Derivedbitsa bitAlist1 = new Derivedbitsa(bitBlist1);
-        Derivedbitsa bitAlist2 = new Derivedbitsa(bitBlist2);
-        Derivedbitsa bitAlist3 = new Derivedbitsa(bitBlist3);
-
-        List<Derivedbitsa> bitAlist = new ArrayList<>();
-        bitAlist.add(bitAlist1);
-        bitAlist.add(bitAlist2);
-        bitAlist.add(bitAlist3);
-
-        // Creates a module by assigning all the leaf and leaf-list.
-        YtbDerivedTypeWithBitsAndBinary bitsAndBinary = new
-                YtbDerivedTypeWithBitsAndBinaryOpParam
-                        .YtbDerivedTypeWithBitsAndBinaryBuilder()
-                .forbinary(derBina).forbits(derBita)
-                .forbinarylist(binAlist)
-                .forbitslist(bitAlist).build();
-
-        // As YSB or YAB protocol, sets the value for YTB.
-        List<Object> objectList = new ArrayList<>();
-        objectList.add(bitsAndBinary);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo(
-                objectList, ROOT_NAME, ROOT_NAME_SPACE,
-                EDIT_CONFIG_REQUEST, registry);
-
-        // Receives YDT context and check the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Gets the first module from logical root node.
-        YdtContext module = context.getFirstChild();
-        assertThat(getInCrtName(MODULE, MOD_BIT_BIN), module.getName(),
-                   is(MOD_BIT_BIN));
-
-        // Checks the leaf for binary.
-        YdtContext binaryLeaf = module.getFirstChild();
-        assertThat(getInCrtName(LEAF, FOR_BINARY), binaryLeaf.getName(),
-                   is(FOR_BINARY));
-        assertThat(getInCrtLeafValue(FOR_BINARY, BIN_VAL_1),
-                   binaryLeaf.getValue(), is(BIN_VAL_1));
-
-        // Checks the leaf for bits.
-        YdtContext bitsLeaf = binaryLeaf.getNextSibling();
-        assertThat(getInCrtName(LEAF, FOR_BITS), bitsLeaf.getName(),
-                   is(FOR_BITS));
-        assertThat(getInCrtLeafValue(FOR_BITS, BIT_VAL_2),
-                   bitsLeaf.getValue(), is(BIT_VAL_2));
-
-        // Checks the leaf-list for binary.
-        YdtContext binaryLeafList = bitsLeaf.getNextSibling();
-        assertThat(getInCrtName(LEAF_LIST, FOR_BINARY_LIST),
-                   binaryLeafList.getName(), is(FOR_BINARY_LIST));
-
-        Set value2 = binaryLeafList.getValueSet();
-        assertThat(getInCrtLeafListValue(FOR_BINARY_LIST, BIN_VAL_2),
-                   value2.contains(BIN_VAL_2), is(true));
-        assertThat(getInCrtLeafListValue(FOR_BINARY_LIST, BIN_VAL_3),
-                   value2.contains(BIN_VAL_3), is(true));
-        assertThat(getInCrtLeafListValue(FOR_BINARY_LIST, BIN_VAL_4),
-                   value2.contains(BIN_VAL_4), is(true));
-
-        // Checks the leaf-list for bits.
-        YdtContext bitsLeafList = binaryLeafList.getNextSibling();
-        assertThat(getInCrtName(LEAF_LIST, FOR_BITS_LIST),
-                   bitsLeafList.getName(), is(FOR_BITS_LIST));
-        Set value3 = bitsLeafList.getValueSet();
-        assertThat(getInCrtLeafListValue(FOR_BITS_LIST, BIT_VAL_3),
-                   value3.contains(BIT_VAL_3), is(true));
-        assertThat(getInCrtLeafListValue(FOR_BITS_LIST, BIT_VAL_4),
-                   value3.contains(BIT_VAL_4), is(true));
-        assertThat(getInCrtLeafListValue(FOR_BITS_LIST, BIT_VAL_5),
-                   value3.contains(BIT_VAL_5), is(true));
-    }
-
-    /**
-     * Processes tree building for the union type.
-     */
-    @Test
-    public void processYtbUnionType() {
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-
-        // Creates union with binary type.
-        byte[] binary = new byte[]{0, 0, 0};
-        ForunionUnion union = new ForunionUnion(binary);
-
-        // Creates module with union.
-        YtbDerivedTypeWithBitsAndBinary unionType = new
-                YtbDerivedTypeWithBitsAndBinaryOpParam
-                        .YtbDerivedTypeWithBitsAndBinaryBuilder()
-                .forunion(union)
-                .build();
-
-        // As YSB or YAB protocol, sets the value for YTB.
-        List<Object> objectList = new ArrayList<>();
-        objectList.add(unionType);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo(
-                objectList, ROOT_NAME, ROOT_NAME_SPACE,
-                EDIT_CONFIG_REQUEST, registry);
-
-        // Receives YDT context and check the tree that is built.
-        YdtContext rootNode = ydtBuilder.getRootNode();
-        YdtContext module = rootNode.getFirstChild();
-        YdtContext unionChild = module.getFirstChild();
-        assertThat(getInCrtName(LEAF, FOR_UNION), unionChild.getName(),
-                   is(FOR_UNION));
-        assertThat(getInCrtLeafValue(FOR_UNION, BIN_VAL_5),
-                   unionChild.getValue(), is(BIN_VAL_5));
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbContextSwitchTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbContextSwitchTest.java
deleted file mode 100644
index 5787f62..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbContextSwitchTest.java
+++ /dev/null
@@ -1,1216 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ytb;
-
-import org.junit.Test;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ymsietfinettypes.Uri;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.YmsIetfNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.YmsIetfNetworkOpParam;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.DefaultNetworks;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.NetworkId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.Networks;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.NodeId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.networks.DefaultNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.networks.Network;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.networks.network.DefaultNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.networks.network.Node;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.networks.network.node.DefaultSupportingNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.networks.network.node.SupportingNode;
-import org.onosproject.yang.gen.v1.yms.test.ytb.augment.from.another.file.rev20160826.ytbaugmentfromanotherfile.networks.network.node.AugmentedNdNode;
-import org.onosproject.yang.gen.v1.yms.test.ytb.augment.from.another.file.rev20160826.ytbaugmentfromanotherfile.networks.network.node.DefaultAugmentedNdNode;
-import org.onosproject.yang.gen.v1.yms.test.ytb.augment.from.another.file.rev20160826.ytbaugmentfromanotherfile.networks.network.node.augmentedndnode.DefaultTerminationPoint;
-import org.onosproject.yang.gen.v1.yms.test.ytb.augment.from.another.file.rev20160826.ytbaugmentfromanotherfile.networks.network.node.augmentedndnode.TerminationPoint;
-import org.onosproject.yang.gen.v1.yms.test.ytb.augment.from.another.file.rev20160826.ytbaugmentfromanotherfile.networks.network.node.augmentedndnode.terminationpoint.DefaultSupportingTerminationPoint;
-import org.onosproject.yang.gen.v1.yms.test.ytb.augment.from.another.file.rev20160826.ytbaugmentfromanotherfile.networks.network.node.augmentedndnode.terminationpoint.SupportingTerminationPoint;
-import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput.activatesoftwareimage.output.AugmentedRpcOutput;
-import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput.activatesoftwareimage.output.DefaultAugmentedRpcOutput;
-import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput.activatesoftwareimage.output.augmentedrpcoutput.Selection;
-import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput.activatesoftwareimage.output.augmentedrpcoutput.selection.DefaultValueIn;
-import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput.activatesoftwareimage.output.augmentedrpcoutput.selection.valuein.ValueIn;
-import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput2.activatesoftwareimage.output.AugmentedInputOutput;
-import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput2.activatesoftwareimage.output.DefaultAugmentedInputOutput;
-import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput2.activatesoftwareimage.output.augmentedinputoutput.DefaultFriction;
-import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput2.activatesoftwareimage.output.augmentedinputoutput.Friction;
-import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.YtbChoiceWithContainerAndLeafList;
-import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.YtbChoiceWithContainerAndLeafListOpParam;
-import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.ContentTest;
-import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.CurrentValue;
-import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.contenttest.DefaultChoiceContainer;
-import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.contenttest.choicecontainer.ChoiceContainer;
-import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.contenttest.choicecontainer.choicecontainer.DefaultPredict;
-import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.contenttest.choicecontainer.choicecontainer.Predict;
-import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.contenttest.choicecontainer.choicecontainer.predict.DefaultReproduce;
-import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.contenttest.choicecontainer.choicecontainer.predict.Reproduce;
-import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.currentvalue.DefaultYtbAbsent;
-import org.onosproject.yang.gen.v1.yms.test.ytb.rpc.response.with.advanced.input.and.output.rev20160826.ytbrpcresponsewithadvancedinputandoutput.activatesoftwareimage.ActivateSoftwareImageOutput;
-import org.onosproject.yang.gen.v1.yms.test.ytb.rpc.response.with.advanced.input.and.output.rev20160826.ytbrpcresponsewithadvancedinputandoutput.activatesoftwareimage.DefaultActivateSoftwareImageOutput;
-import org.onosproject.yang.gen.v1.yms.test.ytb.rpc.response.with.advanced.input.and.output.rev20160826.ytbrpcresponsewithadvancedinputandoutput.activatesoftwareimage.activatesoftwareimageoutput.DefaultOutputList;
-import org.onosproject.yang.gen.v1.yms.test.ytb.rpc.response.with.advanced.input.and.output.rev20160826.ytbrpcresponsewithadvancedinputandoutput.activatesoftwareimage.activatesoftwareimageoutput.OutputList;
-import org.onosproject.yang.gen.v1.yms.test.ytb.rpc.response.with.advanced.input.and.output.rev20160826.ytbrpcresponsewithadvancedinputandoutput.activatesoftwareimage.activatesoftwareimageoutput.outputlist.ContentInside;
-import org.onosproject.yang.gen.v1.yms.test.ytb.rpc.response.with.advanced.input.and.output.rev20160826.ytbrpcresponsewithadvancedinputandoutput.activatesoftwareimage.activatesoftwareimageoutput.outputlist.DefaultContentInside;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.YtbSimpleAugment;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.YtbSimpleAugmentOpParam;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.ytbsimpleaugment.Cont1;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.ytbsimpleaugment.DefaultCont1;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.ytbsimpleaugment.cont1.DefaultCont2;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.ytbsimpleaugment.cont1.cont2.AugmentedCont2;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.ytbsimpleaugment.cont1.cont2.DefaultAugmentedCont2;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.ytbsimpleaugment.cont1.cont2.augmentedcont2.Cont1s;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.ytbsimpleaugment.cont1.cont2.augmentedcont2.DefaultCont1s;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.choice.yangautoprefixcase.rev20160826.YtbSimpleChoiceCase;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.choice.yangautoprefixcase.rev20160826.YtbSimpleChoiceCaseOpParam;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.choice.yangautoprefixcase.rev20160826.ytbsimplechoicecase.DefaultYtbFood;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.choice.yangautoprefixcase.rev20160826.ytbsimplechoicecase.YtbFood;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.choice.yangautoprefixcase.rev20160826.ytbsimplechoicecase.ytbfood.YtbSnack;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.choice.yangautoprefixcase.rev20160826.ytbsimplechoicecase.ytbfood.ytbsnack.DefaultYtbLateNight;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.rpc.response.rev20160826.ytbsimplerpcresponse.rpc.DefaultRpcOutput;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.rpc.response.rev20160826.ytbsimplerpcresponse.rpc.RpcOutput;
-import org.onosproject.yms.app.ydt.YangRequestWorkBench;
-import org.onosproject.yms.app.ydt.YdtExtendedBuilder;
-import org.onosproject.yms.app.ysr.DefaultYangSchemaRegistry;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsNull.notNullValue;
-import static org.onosproject.yms.ydt.YdtContextOperationType.NONE;
-import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REPLY;
-import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REQUEST;
-import static org.onosproject.yms.ydt.YmsOperationType.QUERY_CONFIG_REPLY;
-import static org.onosproject.yms.ydt.YmsOperationType.RPC_REQUEST;
-
-/**
- * Unit test cases for YANG tree builder for context switch for augment, RPC
- * and case.
- */
-public class YtbContextSwitchTest extends YtbErrMsgAndConstants {
-
-    private static final String RPC_ADV_NAME = "RPCAdvanced";
-    private static final String RPC_ADV_NAMESPACE = "RPCAdvancedSpace";
-    private static final String RPC_ADV_IO =
-            "YtbRpcResponseWithAdvancedInputAndOutput";
-    private static final String ACT_IMG = "activate-software-image";
-    private static final String INPUT = "input";
-    private static final String FINAL = "final";
-    private static final String AUG_NW_REF_1 = "network-ref-aug1";
-    private static final String AUG_NODE_REF_1 = "node-ref-aug1";
-    private static final String AUG_TP_REF_1 = "tp-ref-aug-1";
-    private static final String AUG_TP_ID_1 = "tp-id-aug-1";
-    private static final String AUG_NW_REF_B1 = "network-ref-augb1";
-    private static final String AUG_NODE_REF_B1 = "node-ref-augb1";
-    private static final String AUG_TP_REF_B1 = "tp-ref-aug-b1";
-    private static final String AUG_TP_ID_B1 = "tp-id-aug-1b";
-    private static final String NW_REF = "network-ref";
-    private static final String NODE_REF = "node-ref";
-    private static final String NW_REF_2 = "network-ref2";
-    private static final String NODE_REF_3 = "node-ref3";
-    private static final String NW_REF_B = "network-ref-b";
-    private static final String NODE_REF_B = "node-ref-b";
-    private static final String NW_REF_2B = "network-ref2-b";
-    private static final String NODE_REF_2B = "node-ref2-b";
-    private static final String NODE_REF_3B = "node-ref3-b";
-    private static final String CHOC = "choc";
-    private static final String CHOICE_CASE = "YtbSimpleChoiceCase";
-    private static final String FOOD = "YtbFood";
-    private static final String CHOCOLATE = "chocolate";
-    private static final String VAL = "val";
-    private static final String IND = "ind";
-    private static final String CHOICE_ROOT_NAME = "choiceContainerRootName";
-    private static final String CHOICE_ROOT_NAMESPACE =
-            "choiceContainerRootNamespace";
-    private static final String CHOICE_CONT =
-            "YtbChoiceWithContainerAndLeafList";
-    private static final String CONT_CHOICE = "choice-container";
-    private static final String REPRODUCE = "reproduce";
-    private static final String NINETY = "90";
-    private static final String HUNDRED = "100";
-    private static final String RPC_RT_NAME = "rpcRootName";
-    private static final String RPC_RT_NAMESPACE = "rpcRootNameSpace";
-    private static final String OUTPUT_LEAF = "output-leaf";
-    private static final String FIVE_HUNDRED = "500";
-    private static final String OUTPUT_LIST = "output-list";
-    private static final String LIST_KEY = "list-key";
-    private static final String BIN_VAL_1 = "AAE=";
-    private static final String CONT_INSIDE = "content_inside";
-    private static final String BIN_VAL_2 = "CAk=";
-    private static final String AVAILABLE = "available";
-    private static final String EIGHTY_NINE = "89";
-    private static final String NINETY_EIGHT = "98";
-    private static final String BIN_VAL_3 = "AAA=";
-    private static final String SIM_AUG = "simpleAugment";
-    private static final String SIM_AUG_NAMESPACE = "simpleAugmentSpace";
-    private static final String SIMPLE_AUG = "YtbSimpleAugment";
-    private static final String CONT1 = "cont1";
-    private static final String CONT2 = "cont2";
-    private static final String LEAF4 = "leaf4";
-    private static final String CONT1S = "cont1s";
-    private static final String INTER_AUG = "inter-file-augment";
-    private static final String INTER_AUG_NAMESPACE =
-            "inter-file-augment-space";
-    private static final String IETF_NW = "yms-ietf-network";
-    private static final String NWS = "networks";
-    private static final String NW = "network";
-    private static final String NODE = "node";
-    private static final String NODE_ID = "node-id";
-    private static final String TERM_POINT = "termination-point";
-    private static final String TP_ID = "tp-id";
-    private static final String SUP_TERM_POINT = "supporting-termination-point";
-    private static final String TP_REF = "tp-ref";
-    private static final String SUP_NODE = "supporting-node";
-    private static final String KIN1 = "kin1";
-    private static final String KIN2 = "kin2";
-
-    /**
-     * Creates object as like an application for RPC with list.
-     *
-     * @return object of RPC
-     */
-    private List<OutputList> createApplicationBuiltObjectForRpc() {
-
-        // Creates a empty container inside without leaf for list1.
-        ContentInside inside1 = new DefaultContentInside.ContentInsideBuilder()
-                .build();
-
-        // Creates a leaf list-key which is a leaf ref.
-        byte[] listKey1 = new byte[]{0, 1};
-
-        // Creates the list content 1.
-        OutputList output1 = new DefaultOutputList.OutputListBuilder()
-                .listKey(listKey1).contentInside(inside1).build();
-
-        // Creates a list of leaf for available.
-        List<Short> avail = new ArrayList<>();
-        avail.add((short) 89);
-        avail.add((short) 98);
-
-        // Adds the leaf list in the inside container.
-        ContentInside inside2 = new DefaultContentInside.ContentInsideBuilder()
-                .available(avail).build();
-
-        // Creates a leaf, list-key which is a leaf ref.
-        byte[] listKey2 = new byte[]{8, 9};
-
-        // Creates the list content 2.
-        OutputList outputList2 = new DefaultOutputList.OutputListBuilder()
-                .listKey(listKey2).contentInside(inside2).build();
-
-        // Creates only leaf, list-key which is a leaf ref.
-        byte[] arr3 = new byte[]{0, 0};
-
-        // Creates the list content 3.
-        OutputList outputList3 = new DefaultOutputList.OutputListBuilder()
-                .listKey(arr3).build();
-
-        // Adds all the list contents in array list and gives returns it.
-        List<OutputList> outputLists = new ArrayList<>();
-        outputLists.add(output1);
-        outputLists.add(outputList2);
-        outputLists.add(outputList3);
-        return outputLists;
-    }
-
-    /**
-     * Builds YANG request work bench for RPC with container input.
-     *
-     * @param registry schema registry
-     * @return YANG request work bench
-     */
-    private YangRequestWorkBench buildYangRequestWorkBenchForRpc(
-            DefaultYangSchemaRegistry registry) {
-
-        // Creates a request work bench and adds the input child into it.
-        YangRequestWorkBench workBench = new YangRequestWorkBench(
-                RPC_ADV_NAME, RPC_ADV_NAMESPACE, RPC_REQUEST,
-                registry, true);
-        Set<String> valueList = new HashSet<>();
-        valueList.add("800");
-        valueList.add("900");
-        workBench.addChild(RPC_ADV_IO, null, NONE);
-        workBench.addChild(ACT_IMG, null, NONE);
-        workBench.addChild(INPUT, null, NONE);
-        workBench.addChild(FINAL, null, NONE);
-        workBench.addLeaf("value", null, valueList);
-        return workBench;
-    }
-
-    /**
-     * Creates an application object for inter file augment.
-     *
-     * @return application object
-     */
-    private Object createObjectForInterFileAugment() {
-
-        // Creates leaf value for network-ref.
-        Uri nwkRef = new Uri(AUG_NW_REF_1);
-        NetworkId nwIdUri = new NetworkId(nwkRef);
-        Uri nwkRef2 = new Uri("network-ref-aug2");
-        NetworkId nwIdUri2 = new NetworkId(nwkRef2);
-
-        // Creates leaf value for node-ref
-        Uri nodeRef = new Uri(AUG_NODE_REF_1);
-        NodeId nodeId = new NodeId(nodeRef);
-
-        Uri nodeRef2 = new Uri("node-ref-aug2");
-        NodeId nodeId2 = new NodeId(nodeRef2);
-
-        // Creates support termination list with the above two contents.
-        SupportingTerminationPoint point1 =
-                new DefaultSupportingTerminationPoint
-                        .SupportingTerminationPointBuilder()
-                        .networkRef(nwIdUri).nodeRef(nodeId)
-                        .tpRef(AUG_TP_REF_1).build();
-        SupportingTerminationPoint point2 =
-                new DefaultSupportingTerminationPoint
-                        .SupportingTerminationPointBuilder()
-                        .networkRef(nwIdUri2).nodeRef(nodeId2)
-                        .tpRef("tp-ref-aug-2").build();
-
-        List<SupportingTerminationPoint> pointList = new ArrayList<>();
-        pointList.add(point1);
-        pointList.add(point2);
-
-        // Adds the list created to the termination point content1.
-        TerminationPoint tPoint1 = new DefaultTerminationPoint
-                .TerminationPointBuilder()
-                .supportingTerminationPoint(pointList)
-                .tpId(AUG_TP_ID_1).build();
-
-        // Creates leaf value for network-ref.
-        Uri nwkRef3 = new Uri(AUG_NW_REF_B1);
-        NetworkId nwIdUri3 = new NetworkId(nwkRef3);
-        Uri nwkRef4 = new Uri("network-ref-augb2");
-        NetworkId nwIdUri4 = new NetworkId(nwkRef4);
-
-        // Creates leaf value for node-ref
-        Uri nodeRef3 = new Uri(AUG_NODE_REF_B1);
-        NodeId nodeId3 = new NodeId(nodeRef3);
-
-        Uri nodeRef4 = new Uri("node-ref-augb2");
-        NodeId nodeId4 = new NodeId(nodeRef4);
-
-        // Creates support termination list with the above two contents.
-        SupportingTerminationPoint point3 =
-                new DefaultSupportingTerminationPoint
-                        .SupportingTerminationPointBuilder()
-                        .networkRef(nwIdUri3).nodeRef(nodeId3)
-                        .tpRef(AUG_TP_REF_B1).build();
-        SupportingTerminationPoint point4 =
-                new DefaultSupportingTerminationPoint
-                        .SupportingTerminationPointBuilder()
-                        .networkRef(nwIdUri4).nodeRef(nodeId4)
-                        .tpRef("tp-ref-aug-b2").build();
-
-        List<SupportingTerminationPoint> pointList2 = new ArrayList<>();
-        pointList2.add(point3);
-        pointList2.add(point4);
-
-        // Adds the list created to the termination point content2.
-        TerminationPoint tPoint2 = new DefaultTerminationPoint
-                .TerminationPointBuilder()
-                .supportingTerminationPoint(pointList2)
-                .tpId(AUG_TP_ID_B1).build();
-
-        List<TerminationPoint> terminationPointList = new ArrayList<>();
-        terminationPointList.add(tPoint1);
-        terminationPointList.add(tPoint2);
-
-        // Adds all the above contents to the augment.
-        AugmentedNdNode augment = new DefaultAugmentedNdNode
-                .AugmentedNdNodeBuilder()
-                .terminationPoint(terminationPointList)
-                .build();
-
-        // Creates leaf value for network-ref in augmented node(ietf-network).
-        Uri nwRef5 = new Uri(NW_REF);
-        NetworkId nwIdUri5 = new NetworkId(nwRef5);
-
-        //Creates leaf value for node-ref in augmented node(ietf-network).
-        Uri nodeRef5 = new Uri(NODE_REF);
-        NodeId nodeId5 = new NodeId(nodeRef5);
-
-        // Creates supporting node list content 1 with above contents.
-        SupportingNode supNode1 = new DefaultSupportingNode
-                .SupportingNodeBuilder().nodeRef(nodeId5)
-                .networkRef(nwIdUri5).build();
-
-        // Creates leaf value for network-ref in augmented node(ietf-network).
-        Uri nwRef6 = new Uri(NW_REF_2);
-        NetworkId nwIdUri6 = new NetworkId(nwRef6);
-
-        //Creates leaf value for node-ref in augmented node(ietf-network).
-        Uri nodeRef6 = new Uri("node-ref2");
-        NodeId nodeId6 = new NodeId(nodeRef6);
-
-        // Creates supporting node list content 2 with above contents.
-        SupportingNode supNode2 = new DefaultSupportingNode
-                .SupportingNodeBuilder()
-                .nodeRef(nodeId6)
-                .networkRef(nwIdUri6).build();
-
-        List<SupportingNode> supNodeList = new ArrayList<>();
-        supNodeList.add(supNode1);
-        supNodeList.add(supNode2);
-
-        // Creates leaf value for node-id in augmented node(ietf-network).
-        Uri nodeId1 = new Uri(NODE_REF_3);
-        NodeId nodeIdForId = new NodeId(nodeId1);
-
-        // Creates node list with content 1 by adding augment also.
-        DefaultNode.NodeBuilder nodeBuilder = new DefaultNode.NodeBuilder();
-        nodeBuilder.addYangAugmentedInfo(
-                augment, AugmentedNdNode.class);
-        nodeBuilder.supportingNode(supNodeList);
-        nodeBuilder.nodeId(nodeIdForId);
-        Node node1 = nodeBuilder.build();
-
-        // Creates an augment node without any values set to it.
-        AugmentedNdNode augmentedNdNode2 = new DefaultAugmentedNdNode
-                .AugmentedNdNodeBuilder().build();
-
-        // Creates leaf value for network-ref in augmented node(ietf-network).
-        Uri nwRef7 = new Uri(NW_REF_B);
-        NetworkId nwIdUri7 = new NetworkId(nwRef7);
-        //Creates leaf value for node-ref in augmented node(ietf-network).
-        Uri nodeRef7 = new Uri(NODE_REF_B);
-        NodeId nodeId7 = new NodeId(nodeRef7);
-
-        // Creates supporting node list content 1 with above contents.
-        SupportingNode supNode3 = new DefaultSupportingNode
-                .SupportingNodeBuilder().nodeRef(nodeId7)
-                .networkRef(nwIdUri7).build();
-
-        // Creates leaf value for network-ref in augmented node(ietf-network).
-        Uri nwRef8 = new Uri(NW_REF_2B);
-        NetworkId nwIdUri8 = new NetworkId(nwRef8);
-
-        //Creates leaf value for node-ref in augmented node(ietf-network).
-        Uri nodeRef8 = new Uri(NODE_REF_2B);
-        NodeId nodeId8 = new NodeId(nodeRef8);
-
-        // Creates supporting node list content 1 with above contents.
-        SupportingNode supNode4 = new DefaultSupportingNode
-                .SupportingNodeBuilder()
-                .nodeRef(nodeId8)
-                .networkRef(nwIdUri8).build();
-
-        List<SupportingNode> supNodeList2 = new ArrayList<>();
-        supNodeList2.add(supNode3);
-        supNodeList2.add(supNode4);
-
-        // Creates leaf value for node-id in augmented node(ietf-network).
-        Uri nodeIdLeaf = new Uri(NODE_REF_3B);
-        NodeId nodeIdForId2 = new NodeId(nodeIdLeaf);
-
-        // Creates node list with content 2 by adding empty augment also.
-        DefaultNode.NodeBuilder nodeBuilder2 = new DefaultNode.NodeBuilder();
-        nodeBuilder2.addYangAugmentedInfo(
-                augmentedNdNode2, AugmentedNdNode.class);
-        nodeBuilder2.supportingNode(supNodeList2);
-        nodeBuilder2.nodeId(nodeIdForId2);
-        Node node2 = nodeBuilder2.build();
-
-        // Adds both nodes into the list.
-        List<Node> nodeList = new LinkedList<>();
-        nodeList.add(node1);
-        nodeList.add(node2);
-
-        // Adds the list into the network list.
-        Network nwkList = new DefaultNetwork.NetworkBuilder()
-                .node(nodeList).build();
-
-        List<Network> networkList = new ArrayList<>();
-        networkList.add(nwkList);
-
-        // Adds the network list into networks container.
-        Networks contNetworks = new DefaultNetworks.NetworksBuilder()
-                .network(networkList).build();
-
-        // Adds the container into the module.
-        YmsIetfNetwork opParam = new YmsIetfNetworkOpParam
-                .YmsIetfNetworkBuilder()
-                .networks(contNetworks).build();
-        return opParam;
-    }
-
-    /**
-     * Processes a simple choice case and builds the YDT.
-     */
-    @Test
-    public void processSimpleChoiceCase() {
-
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-
-        // Creates a choice snack with the case late night.
-        YtbSnack lateNight = new DefaultYtbLateNight.YtbLateNightBuilder()
-                .chocolate(CHOC).build();
-
-        // Creates container food with the created case.
-        YtbFood food = new DefaultYtbFood.YtbFoodBuilder()
-                .ytbSnack(lateNight).build();
-
-        // Creates module with the container food.
-        YtbSimpleChoiceCase choiceCase = new YtbSimpleChoiceCaseOpParam
-                .YtbSimpleChoiceCaseBuilder().ytbFood(food).build();
-
-        // As YSB or YAB protocol, sets the value for YTB.
-        List<Object> objectList = new ArrayList<>();
-        objectList.add(choiceCase);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo(
-                objectList, ROOT_NAME, ROOT_NAME_SPACE,
-                EDIT_CONFIG_REPLY, registry);
-
-        // Receives YDT context and check the tree that is built.
-        YdtContext rootNode = ydtBuilder.getRootNode();
-
-        // Gets the first module from logical root node.
-        YdtContext module = rootNode.getFirstChild();
-        assertThat(getInCrtName(MODULE, CHOICE_CASE), module.getName(),
-                   is(CHOICE_CASE));
-
-        // Gets the container food from module.
-        YdtContext container = module.getFirstChild();
-        assertThat(getInCrtName(CONTAINER, FOOD), container.getName(),
-                   is(FOOD));
-
-        // Gets the case-leaf from container
-        YdtContext caseNode = container.getFirstChild();
-        assertThat(getInCrtName(LEAF, CHOCOLATE), caseNode.getName(),
-                   is(CHOCOLATE));
-        assertThat(getInCrtLeafValue(CHOCOLATE, CHOC), caseNode.getValue(),
-                   is(CHOC));
-    }
-
-    /**
-     * Processes module with two choices and a choice having node and a
-     * leaf-list.
-     */
-    @Test
-    public void processChoiceWithNodeAndLeafList() {
-
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-
-        // Creates reproduce container for list predict-1.
-        Reproduce reproduce1 = new DefaultReproduce.ReproduceBuilder()
-                .yangAutoPrefixCatch((short) 90).build();
-
-        // Assigns predict-1 with the container.
-        Predict predict1 = new DefaultPredict.PredictBuilder()
-                .reproduce(reproduce1).build();
-
-        // Creates reproduce container for list predict-2.
-        Reproduce reproduce2 = new DefaultReproduce.ReproduceBuilder()
-                .yangAutoPrefixCatch((short) 100).build();
-
-        // Assigns predict-2 with the container.
-        Predict predict2 = new DefaultPredict.PredictBuilder()
-                .reproduce(reproduce2).build();
-
-        List<Predict> predictList = new ArrayList<>();
-        predictList.add(predict1);
-        predictList.add(predict2);
-
-        // Case container is added to the choice content-test.
-        ChoiceContainer containerCase = new org.onosproject.yang.gen.v1.yms
-                .test.ytb.choice.with.container.and.leaf.yangautoprefixlist
-                .rev20160826.ytbchoicewithcontainerandleaflist.contenttest
-                .choicecontainer.DefaultChoiceContainer.ChoiceContainerBuilder()
-                .predict(predictList).build();
-
-        // Case container is added to the choice content-test.
-        ContentTest contentTest = new DefaultChoiceContainer
-                .ChoiceContainerBuilder().choiceContainer(containerCase).build();
-
-        // Creates string list for leaf-list final.
-        List<String> stringList = new ArrayList<>();
-        stringList.add(VAL);
-        stringList.add(IND);
-
-        // For choice current value, the leaf list gets added as case.
-        CurrentValue currentValue = new DefaultYtbAbsent.YtbAbsentBuilder()
-                .yangAutoPrefixFinal(stringList).build();
-
-        // Adds choice as child to the module.
-        YtbChoiceWithContainerAndLeafList choiceWithContainerAndLeafList =
-                new YtbChoiceWithContainerAndLeafListOpParam
-                        .YtbChoiceWithContainerAndLeafListBuilder()
-                        .contentTest(contentTest).currentValue(currentValue)
-                        .build();
-
-        // As YSB or YAB protocol, sets the value for YTB.
-        List<Object> objectList = new ArrayList<>();
-        objectList.add(choiceWithContainerAndLeafList);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo(
-                objectList, CHOICE_ROOT_NAME, CHOICE_ROOT_NAMESPACE,
-                QUERY_CONFIG_REPLY, registry);
-
-        // Receives YDT context and check the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Gets the first module from logical root node.
-        YdtContext module = context.getFirstChild();
-        assertThat(getInCrtName(MODULE, CHOICE_CONT), module.getName(),
-                   is(CHOICE_CONT));
-
-        // Gets the first choice content under the module, as container.
-        YdtContext choice1 = module.getFirstChild();
-        assertThat(getInCrtName(CONTAINER, CONT_CHOICE), choice1.getName(),
-                   is(CONT_CHOICE));
-
-        // Gets the first content in the list predict.
-        YdtContext list1 = choice1.getFirstChild();
-        assertThat(getInCrtName(LIST, PREDICT), list1.getName(), is(PREDICT));
-
-        // Gets the container and its child leaf in the list predict.
-        YdtContext container1 = list1.getFirstChild();
-        assertThat(getInCrtName(CONTAINER, REPRODUCE), container1.getName(),
-                   is(REPRODUCE));
-        YdtContext leaf1 = container1.getFirstChild();
-        assertThat(getInCrtName(LEAF, CATCH), leaf1.getName(), is(CATCH));
-        assertThat(getInCrtLeafValue(CATCH, NINETY), leaf1.getValue(),
-                   is(NINETY));
-
-        // Gets the second content in the list predict.
-        YdtContext list2 = list1.getNextSibling();
-        assertThat(getInCrtName(LIST, PREDICT), list2.getName(), is(PREDICT));
-
-        // Gets the container and its child leaf in the list predict.
-        YdtContext container2 = list2.getFirstChild();
-        assertThat(getInCrtName(CONTAINER, REPRODUCE), container2.getName(),
-                   is(REPRODUCE));
-        YdtContext leaf2 = container2.getFirstChild();
-        assertThat(getInCrtName(LEAF, CATCH), leaf2.getName(), is(CATCH));
-        assertThat(getInCrtLeafValue(CATCH, HUNDRED), leaf2.getValue(),
-                   is(HUNDRED));
-
-        // Gets the second choice content under the module, as leaf-list.
-        YdtContext choice2 = choice1.getNextSibling();
-        assertThat(getInCrtName(LEAF_LIST, FINAL), choice2.getName(),
-                   is(FINAL));
-        Set value2 = choice2.getValueSet();
-        assertThat(getInCrtLeafListValue(FINAL, VAL), value2.contains(VAL),
-                   is(true));
-        assertThat(getInCrtLeafListValue(FINAL, IND), value2.contains(IND),
-                   is(true));
-    }
-
-    /**
-     * Processes RPC response of a simple output with only a leaf content
-     * inside.
-     */
-    @Test
-    public void processSimpleRpcResponse() {
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-        RpcOutput output = new DefaultRpcOutput.RpcOutputBuilder()
-                .outputLeaf(500).build();
-
-        // Creates request work bench of rpc.
-        YangRequestWorkBench workBench = new YangRequestWorkBench(
-                RPC_RT_NAME, RPC_RT_NAMESPACE, RPC_REQUEST, registry, true);
-        workBench.addChild(RPC_NAME, null, NONE);
-        workBench.addChild(RPC, null, NONE);
-        workBench.addChild(INPUT, null, NONE);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtForRpcResponse(
-                output, workBench);
-
-        // Receives YDT context and check the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Gets the first module from logical root node.
-        YdtContext module = context.getFirstChild();
-        assertThat(getInCrtName(MODULE, RPC_NAME), module.getName(),
-                   is(RPC_NAME));
-
-        // Gets the rpc node from the module.
-        YdtContext rpc = module.getFirstChild();
-        assertThat(getInCrtName(RPC, RPC), rpc.getName(), is(RPC));
-
-        // Gets the output node from the module.
-        // TODO: Change assert after YANG utils is merged.
-        YdtContext rpcOutput = rpc.getFirstChild();
-        //assertThat(rpcOutputNode.getName(), is("output"));
-
-        YdtContext outputLeaf = rpcOutput.getFirstChild();
-        assertThat(getInCrtName(LEAF, OUTPUT_LEAF), outputLeaf.getName(),
-                   is(OUTPUT_LEAF));
-        assertThat(getInCrtLeafValue(OUTPUT_LEAF, FIVE_HUNDRED),
-                   outputLeaf.getValue(), is(FIVE_HUNDRED));
-    }
-
-    /**
-     * Processes RPC response of an output defined with list.
-     */
-    @Test
-    public void processRpcResponseForAdvInputOutput() {
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-        List<OutputList> list = createApplicationBuiltObjectForRpc();
-        ActivateSoftwareImageOutput output =
-                new DefaultActivateSoftwareImageOutput
-                        .ActivateSoftwareImageOutputBuilder()
-                        .outputList(list).build();
-
-        // Creates request work bench of rpc.
-        YangRequestWorkBench workBench = buildYangRequestWorkBenchForRpc(
-                registry);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtForRpcResponse(
-                output, workBench);
-
-        // Receives YDT context and check the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Gets the first module from logical root node.
-        YdtContext module = context.getFirstChild();
-        assertThat(getInCrtName(MODULE, RPC_ADV_IO), module.getName(),
-                   is(RPC_ADV_IO));
-
-        // Gets the rpc node from module.
-        YdtContext rpc = module.getFirstChild();
-        assertThat(getInCrtName(RPC, ACT_IMG), rpc.getName(), is(ACT_IMG));
-
-        // Gets the output node from the module.
-        // TODO: Change assert after YANG utils is merged.
-        YdtContext rpcOutput = rpc.getFirstChild();
-        //assertThat(rpcOutputNode.getName(), is("output"));
-
-        // Gets the list content 1 as the node from output.
-        YdtContext outputList1 = rpcOutput.getFirstChild();
-        assertThat(getInCrtName(LIST, OUTPUT_LIST), outputList1.getName(),
-                   is(OUTPUT_LIST));
-
-        // Gets the leaf key-list from list content1.
-        YdtContext keyList1 = outputList1.getFirstChild();
-        assertThat(getInCrtName(LEAF, LIST_KEY), keyList1.getName(),
-                   is(LIST_KEY));
-        assertThat(getInCrtLeafValue(LIST_KEY, BIN_VAL_1), keyList1.getValue(),
-                   is(BIN_VAL_1));
-
-        // Gets the content inside container from list content 1.
-        YdtContext cont1 = keyList1.getNextSibling();
-        assertThat(getInCrtName(CONTAINER, CONT_INSIDE), cont1.getName(),
-                   is(CONT_INSIDE));
-
-        // Gets the list content 2 as the node from output.
-        YdtContext outputList2 = outputList1.getNextSibling();
-        assertThat(getInCrtName(LIST, OUTPUT_LIST), outputList2.getName(),
-                   is(OUTPUT_LIST));
-
-        // Gets the leaf-list key-list from list content2.
-        YdtContext keyList2 = outputList2.getFirstChild();
-        assertThat(getInCrtName(LEAF, LIST_KEY), keyList2.getName(),
-                   is(LIST_KEY));
-        assertThat(getInCrtLeafValue(LIST_KEY, BIN_VAL_2), keyList2.getValue(),
-                   is(BIN_VAL_2));
-
-        // Gets the content inside container from list content 2.
-        YdtContext cont2 = keyList2.getNextSibling();
-        assertThat(getInCrtName(CONTAINER, CONT_INSIDE), cont2.getName(),
-                   is(CONT_INSIDE));
-
-        // Gets the leaf-list available inside container.
-        YdtContext availLeafList = cont2.getFirstChild();
-        assertThat(getInCrtName(LEAF_LIST, AVAILABLE), availLeafList.getName(),
-                   is(AVAILABLE));
-        Set value1 = availLeafList.getValueSet();
-        assertThat(getInCrtLeafListValue(AVAILABLE, EIGHTY_NINE),
-                   value1.contains(EIGHTY_NINE), is(true));
-        assertThat(getInCrtLeafListValue(AVAILABLE, NINETY_EIGHT),
-                   value1.contains(NINETY_EIGHT), is(true));
-
-        // Gets the list content 3.
-        YdtContext outputList3 = outputList2.getNextSibling();
-        assertThat(getInCrtName(LIST, OUTPUT_LIST), outputList3.getName(),
-                   is(OUTPUT_LIST));
-
-        // Gets the leaf list-key in content 3 of list.
-        YdtContext keyList3 = outputList3.getFirstChild();
-        assertThat(getInCrtName(LEAF, LIST_KEY), keyList3.getName(),
-                   is(LIST_KEY));
-        assertThat(getInCrtLeafValue(LIST_KEY, BIN_VAL_3), keyList3.getValue(),
-                   is(BIN_VAL_3));
-    }
-
-    /**
-     * Processes simple self augment file with leaf and container inside
-     * augment.
-     */
-    @Test
-    public void processSimpleAugment() {
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-
-        // Creates container cont1s with the leaf.
-        org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826
-                .ytbsimpleaugment.cont1.cont2.augmentedcont2.cont1s
-                .Cont1s cont1s1 = new org.onosproject.yang.gen.v1.yms.test
-                .ytb.simple.augment.rev20160826.ytbsimpleaugment.cont1.cont2
-                .augmentedcont2.cont1s.DefaultCont1s.Cont1sBuilder().build();
-
-        // Appends the created container into another container.
-        Cont1s cont1s = new DefaultCont1s.Cont1sBuilder()
-                .cont1s(cont1s1).build();
-
-        // Creates augment with the container and leaf.
-        AugmentedCont2 augment = new DefaultAugmentedCont2
-                .AugmentedCont2Builder().cont1s(cont1s).leaf4(500).build();
-
-        // Creates for the node which will be getting augmented.
-        // Creates cont2 where content will be augmented into.
-        DefaultCont2.Cont2Builder augCont2 = new DefaultCont2
-                .Cont2Builder();
-        augCont2.addYangAugmentedInfo(augment, AugmentedCont2.class);
-
-        // Creates cont1 where cont2 is added.
-        Cont1 cont1 = new DefaultCont1.Cont1Builder()
-                .cont2(augCont2.build()).build();
-
-        // Creates module with the nodes inside.
-        YtbSimpleAugment simpleAugment = new YtbSimpleAugmentOpParam
-                .YtbSimpleAugmentBuilder().cont1(cont1).build();
-
-        // As YSB or YAB protocol, sets the value for YTB.
-        List<Object> objectList = new ArrayList<>();
-        objectList.add(simpleAugment);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo(
-                objectList, SIM_AUG, SIM_AUG_NAMESPACE,
-                EDIT_CONFIG_REQUEST, registry);
-
-        // Receives YDT context and check the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Gets the first module from logical root node.
-        YdtContext module = context.getFirstChild();
-        assertThat(getInCrtName(MODULE, SIMPLE_AUG), module.getName(),
-                   is(SIMPLE_AUG));
-
-        // Gets the cont1 under module.
-        YdtContext container1 = module.getFirstChild();
-        assertThat(getInCrtName(CONTAINER, CONT1), container1.getName(),
-                   is(CONT1));
-
-        // Gets the cont2 under cont1.
-        YdtContext container2 = container1.getFirstChild();
-        assertThat(getInCrtName(CONTAINER, CONT2), container2.getName(),
-                   is(CONT2));
-
-        // Gets the leaf4 which was augmented under cont2.
-        YdtContext leaf4 = container2.getFirstChild();
-        assertThat(getInCrtName(LEAF, LEAF4), leaf4.getName(), is(LEAF4));
-        assertThat(getInCrtLeafValue(LEAF4, FIVE_HUNDRED), leaf4.getValue(),
-                   is(FIVE_HUNDRED));
-
-        // Gets the cont1s which was augmented under cont2.
-        YdtContext container1s = leaf4.getNextSibling();
-        assertThat(getInCrtName(CONTAINER, CONT1S), container1s.getName(),
-                   is(CONT1S));
-
-        // Gets the cont2s which was augmented under cont1s.
-        YdtContext container2s = container1s.getFirstChild();
-        assertThat(getInCrtName(CONTAINER, CONT1S), container2s.getName(),
-                   is(CONT1S));
-    }
-
-    /**
-     * Processes inter file augment with augmented node as list and the
-     * augment having list.
-     */
-    @Test
-    public void processInterFileAugment() {
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-        Object opParam = createObjectForInterFileAugment();
-
-        // As YSB or YAB protocol, sets the value for YTB.
-        List<Object> objectList = new ArrayList<>();
-        objectList.add(opParam);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo(
-                objectList, INTER_AUG, INTER_AUG_NAMESPACE,
-                EDIT_CONFIG_REQUEST, registry);
-
-        // Receives YDT context and check the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Checks the first module from logical root node.
-        YdtContext module = context.getFirstChild();
-        assertThat(getInCrtName(MODULE, IETF_NW), module.getName(),
-                   is(IETF_NW));
-
-        // Checks the container networks from module.
-        YdtContext nwksCont = module.getFirstChild();
-        assertThat(getInCrtName(CONTAINER, NWS), nwksCont.getName(), is(NWS));
-
-        // Checks the list network from container networks.
-        YdtContext nwrkList = nwksCont.getFirstChild();
-        assertThat(getInCrtName(LIST, NW), nwrkList.getName(), is(NW));
-
-        // Checks the node list content 1 under network list.
-        YdtContext node1 = nwrkList.getFirstChild();
-        assertThat(getInCrtName(LIST, NODE), node1.getName(), is(NODE));
-
-        // Checks the node-id leaf for list content 1.
-        YdtContext nodeId1 = node1.getFirstChild();
-        assertThat(getInCrtName(LEAF, NODE_ID), nodeId1.getName(), is(NODE_ID));
-        assertThat(getInCrtLeafValue(NODE_ID, NODE_REF_3), nodeId1.getValue(),
-                   is(NODE_REF_3));
-
-        // Checks termination list 1 under node 1, from augment.
-        YdtContext terList1 = nodeId1.getNextSibling();
-        assertThat(getInCrtName(LIST, TERM_POINT), terList1.getName(),
-                   is(TERM_POINT));
-
-        // Checks tp-id leaf from termination list content 1.
-        YdtContext tpId1 = terList1.getFirstChild();
-        assertThat(getInCrtName(LEAF, TP_ID), tpId1.getName(), is(TP_ID));
-        assertThat(getInCrtLeafValue(TP_ID, AUG_TP_ID_1), tpId1.getValue(),
-                   is(AUG_TP_ID_1));
-
-        // Checks supporting term point list content1 from term list content 1.
-        YdtContext supTerm1 = tpId1.getNextSibling();
-        assertThat(getInCrtName(LIST, SUP_TERM_POINT), supTerm1.getName(),
-                   is(SUP_TERM_POINT));
-
-        YdtContext nwkRefSupTerm1 = supTerm1.getFirstChild();
-        assertThat(getInCrtName(LEAF, NW_REF), nwkRefSupTerm1.getName(),
-                   is(NW_REF));
-        assertThat(getInCrtLeafValue(NW_REF, AUG_NW_REF_1),
-                   nwkRefSupTerm1.getValue(), is(AUG_NW_REF_1));
-
-        YdtContext nodeRefSupTerm1 = nwkRefSupTerm1.getNextSibling();
-        assertThat(getInCrtName(LEAF, NODE_REF), nodeRefSupTerm1.getName(),
-                   is(NODE_REF));
-        assertThat(getInCrtLeafValue(NODE_REF, AUG_NODE_REF_1),
-                   nodeRefSupTerm1.getValue(), is(AUG_NODE_REF_1));
-
-        YdtContext tpRefSupTerm1 = nodeRefSupTerm1.getNextSibling();
-        assertThat(getInCrtName(LEAF, TP_REF), tpRefSupTerm1.getName(),
-                   is(TP_REF));
-        assertThat(getInCrtLeafValue(TP_REF, AUG_TP_REF_1),
-                   tpRefSupTerm1.getValue(), is(AUG_TP_REF_1));
-
-        // Checks termination list 2 under node 1, from augment.
-        YdtContext terminationList2 = terList1.getNextSibling();
-        assertThat(getInCrtName(LIST, TERM_POINT), terminationList2.getName(),
-                   is(TERM_POINT));
-
-        YdtContext terList2 = terminationList2.getFirstChild();
-        assertThat(getInCrtName(LEAF, TP_ID), terList2.getName(), is(TP_ID));
-        assertThat(getInCrtLeafValue(TP_ID, AUG_TP_ID_B1), terList2.getValue(),
-                   is(AUG_TP_ID_B1));
-
-        // Checks supporting term point list content1 from term list content 2.
-        YdtContext supTerm2 = terList2.getNextSibling();
-        assertThat(getInCrtName(LIST, SUP_TERM_POINT), supTerm2.getName(),
-                   is(SUP_TERM_POINT));
-
-        YdtContext nwkRefSupTerm2 = supTerm2.getFirstChild();
-        assertThat(getInCrtName(LEAF, NW_REF), nwkRefSupTerm2.getName(),
-                   is(NW_REF));
-        assertThat(getInCrtLeafValue(NW_REF, AUG_NW_REF_B1),
-                   nwkRefSupTerm2.getValue(), is(AUG_NW_REF_B1));
-
-        YdtContext nodeRefSupTerm2 = nwkRefSupTerm2.getNextSibling();
-        assertThat(getInCrtName(LEAF, NODE_REF), nodeRefSupTerm2.getName(),
-                   is(NODE_REF));
-        assertThat(getInCrtLeafValue(NODE_REF, AUG_NODE_REF_B1),
-                   nodeRefSupTerm2.getValue(), is(AUG_NODE_REF_B1));
-
-        YdtContext tpRefSupTerm2 = nodeRefSupTerm2.getNextSibling();
-        assertThat(getInCrtName(LEAF, TP_REF), tpRefSupTerm2.getName(),
-                   is(TP_REF));
-        assertThat(getInCrtLeafValue(TP_REF, AUG_TP_REF_B1),
-                   tpRefSupTerm2.getValue(), is(AUG_TP_REF_B1));
-
-        // Checks the content of the supporting node list content 1 in node 1.
-        YdtContext supNode1 = terminationList2.getNextSibling();
-        assertThat(getInCrtName(LIST, SUP_NODE), supNode1.getName(),
-                   is(SUP_NODE));
-
-        YdtContext nwkRefSupNode1 = supNode1.getFirstChild();
-        assertThat(getInCrtName(LEAF, NW_REF), nwkRefSupNode1.getName(),
-                   is(NW_REF));
-        assertThat(getInCrtLeafValue(NW_REF, NW_REF), nwkRefSupNode1.getValue(),
-                   is(NW_REF));
-
-        YdtContext nodeRefSupNode1 = nwkRefSupNode1.getNextSibling();
-        assertThat(getInCrtName(LEAF, NODE_REF), nodeRefSupNode1.getName(),
-                   is(NODE_REF));
-        assertThat(getInCrtLeafValue(NODE_REF, NW_REF),
-                   nwkRefSupNode1.getValue(), is(NW_REF));
-
-        // Checks the content of the supporting node list content 2 in node 1.
-        YdtContext supNode2 = supNode1.getNextSibling();
-        assertThat(getInCrtName(LIST, SUP_NODE), supNode2.getName(),
-                   is(SUP_NODE));
-
-        YdtContext nwkRefSupNode2 = supNode2.getFirstChild();
-        assertThat(getInCrtName(LEAF, NW_REF), nwkRefSupNode2.getName(),
-                   is(NW_REF));
-        assertThat(getInCrtLeafValue(NW_REF, NW_REF_2),
-                   nwkRefSupNode2.getValue(), is(NW_REF_2));
-
-        YdtContext nodeRefSupNode2 = nwkRefSupNode2.getNextSibling();
-        assertThat(getInCrtName(LEAF, NODE_REF), nodeRefSupNode2.getName(),
-                   is(NODE_REF));
-        assertThat(getInCrtLeafValue(NODE_REF, NW_REF_2),
-                   nwkRefSupNode2.getValue(), is(NW_REF_2));
-
-        // Checks the node list content 2 under network list.
-        YdtContext node2 = node1.getNextSibling();
-        assertThat(getInCrtName(LIST, NODE), node2.getName(), is(NODE));
-
-        // Checks the node-id leaf for list content 2.
-        YdtContext nodeId2 = node2.getFirstChild();
-        assertThat(getInCrtName(LEAF, NODE_ID), nodeId2.getName(), is(NODE_ID));
-        assertThat(getInCrtLeafValue(NODE_ID, NODE_REF_3B), nodeId2.getValue(),
-                   is(NODE_REF_3B));
-
-        // Checks supporting term point list content1 from term list content 2.
-        YdtContext supNode3 = nodeId2.getNextSibling();
-        assertThat(getInCrtName(LIST, SUP_NODE), supNode3.getName(),
-                   is(SUP_NODE));
-
-        YdtContext nwkRefSupNode3 = supNode3.getFirstChild();
-        assertThat(getInCrtName(LEAF, NW_REF), nwkRefSupNode3.getName(),
-                   is(NW_REF));
-        assertThat(getInCrtLeafValue(NW_REF, NW_REF_B),
-                   nwkRefSupNode3.getValue(), is(NW_REF_B));
-
-        YdtContext nodeRefSupNode3 = nwkRefSupNode3.getNextSibling();
-        assertThat(getInCrtName(LEAF, NODE_REF), nodeRefSupNode3.getName(),
-                   is(NODE_REF));
-        assertThat(getInCrtLeafValue(NODE_REF, NODE_REF_B),
-                   nodeRefSupNode3.getValue(), is(NODE_REF_B));
-
-        // Checks supporting term point list content2 from term list content 2.
-        YdtContext supNode4 = supNode3.getNextSibling();
-        assertThat(getInCrtName(LIST, SUP_NODE), supNode4.getName(),
-                   is(SUP_NODE));
-
-        YdtContext nwkRefSupNode4 = supNode4.getFirstChild();
-        assertThat(getInCrtName(LEAF, NW_REF), nwkRefSupNode4.getName(),
-                   is(NW_REF));
-        assertThat(getInCrtLeafValue(NW_REF, NW_REF_2B),
-                   nwkRefSupNode4.getValue(), is(NW_REF_2B));
-
-        YdtContext nodeRefSupNode4 = nwkRefSupNode4.getNextSibling();
-        assertThat(getInCrtName(LEAF, NODE_REF), nodeRefSupNode4.getName(),
-                   is(NODE_REF));
-        assertThat(getInCrtLeafValue(NODE_REF, NODE_REF_2B),
-                   nodeRefSupNode4.getValue(), is(NODE_REF_2B));
-    }
-
-    /**
-     * Processes inter file augment with rpc output as its target node.
-     */
-    @Test
-    public void processInterFileAugmentWithRpcInputAsTarget() {
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // Builds RPC request tree in YDT.
-        YangRequestWorkBench workBench =
-                buildYangRequestWorkBenchForRpc(registry);
-
-        // Creates augment code object.
-
-        // Creates the list of value in, case value in.
-        ValueIn valuein1 = new org.onosproject.yang.gen.v1.yms.test.ytb.augment
-                .yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput
-                .activatesoftwareimage.output.augmentedrpcoutput.selection
-                .valuein.DefaultValueIn.ValueInBuilder().kinetic(KIN1)
-                .build();
-        ValueIn valuein2 = new org.onosproject.yang.gen.v1.yms.test.ytb.augment
-                .yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput
-                .activatesoftwareimage.output.augmentedrpcoutput.selection
-                .valuein.DefaultValueIn.ValueInBuilder().kinetic(KIN2)
-                .build();
-
-        List<ValueIn> valueInList = new ArrayList<>();
-        valueInList.add(valuein1);
-        valueInList.add(valuein2);
-
-        // Adds the case value into the choice interface.
-        Selection selection = new DefaultValueIn.ValueInBuilder()
-                .valueIn(valueInList).build();
-
-        // Augment is created for the object.
-        AugmentedRpcOutput augmentRpcOutput = new DefaultAugmentedRpcOutput
-                .AugmentedRpcOutputBuilder().selection(selection).build();
-
-        // Create two list object of friction.
-        Friction friction1 = new DefaultFriction.FrictionBuilder()
-                .speed(BigInteger.valueOf(500)).build();
-        Friction friction2 = new DefaultFriction.FrictionBuilder()
-                .speed(BigInteger.valueOf(1000)).build();
-
-        List<Friction> fricList = new ArrayList<>();
-        fricList.add(friction1);
-        fricList.add(friction2);
-
-        // Create augment with the friction object created.
-        AugmentedInputOutput augmentedIO = new DefaultAugmentedInputOutput
-                .AugmentedInputOutputBuilder().friction(fricList).build();
-
-        // Creates RPC object.
-        List<OutputList> outputLists = createApplicationBuiltObjectForRpc();
-
-        // Adds the augment and the rps output values into the output.
-        DefaultActivateSoftwareImageOutput
-                .ActivateSoftwareImageOutputBuilder output =
-                new DefaultActivateSoftwareImageOutput
-                        .ActivateSoftwareImageOutputBuilder();
-        output.addYangAugmentedInfo(augmentRpcOutput, AugmentedRpcOutput.class);
-        output.addYangAugmentedInfo(augmentedIO, AugmentedInputOutput.class);
-        output.outputList(outputLists);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtForRpcResponse(
-                output, workBench);
-
-        // Receives YDT context and check the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Checks the first module from logical root node.
-        YdtContext module = context.getFirstChild();
-        assertThat(getInCrtName(MODULE, RPC_ADV_IO), module.getName(),
-                   is(RPC_ADV_IO));
-
-        // Gets the rpc under module.
-        YdtContext rpc = module.getFirstChild();
-        assertThat(getInCrtName(RPC, ACT_IMG), rpc.getName(), is(ACT_IMG));
-
-        // Gets the output value under rpc.
-        // TODO: Change assert after YANG utils is merged.
-        YdtContext rpcOutputNode = rpc.getFirstChild();
-        //assertThat(rpcOutputNode.getName(), is("output"));
-
-        YdtContext firstNode = rpcOutputNode.getFirstChild();
-        assertThat(firstNode, notNullValue());
-
-        YdtContext secondNode = firstNode.getNextSibling();
-        assertThat(secondNode, notNullValue());
-
-        YdtContext thirdNode = secondNode.getNextSibling();
-        assertThat(thirdNode, notNullValue());
-
-        YdtContext fourthNode = thirdNode.getNextSibling();
-        assertThat(fourthNode, notNullValue());
-
-        // Gets the list content 1 as the node from output.
-        YdtContext outputList1 = fourthNode.getNextSibling();
-        assertThat(getInCrtName(LIST, OUTPUT_LIST), outputList1.getName(),
-                   is(OUTPUT_LIST));
-
-        // Gets the leaf key-list from list content1.
-        YdtContext keyList1 = outputList1.getFirstChild();
-        assertThat(getInCrtName(LEAF, LIST_KEY), keyList1.getName(),
-                   is(LIST_KEY));
-        assertThat(getInCrtLeafValue(LIST_KEY, BIN_VAL_1), keyList1.getValue(),
-                   is(BIN_VAL_1));
-
-        // Gets the content inside container from list content 1.
-        YdtContext cont1 = keyList1.getNextSibling();
-        assertThat(getInCrtName(CONTAINER, CONT_INSIDE), cont1.getName(),
-                   is(CONT_INSIDE));
-
-        // Gets the list content 2 as the node from output.
-        YdtContext outputList2 = outputList1.getNextSibling();
-        assertThat(getInCrtName(LIST, OUTPUT_LIST), outputList2.getName(),
-                   is(OUTPUT_LIST));
-
-        // Gets the leaf-list key-list from list content2.
-        YdtContext keyList2 = outputList2.getFirstChild();
-        assertThat(getInCrtName(LEAF, LIST_KEY), keyList2.getName(),
-                   is(LIST_KEY));
-        assertThat(getInCrtLeafValue(LIST_KEY, BIN_VAL_2), keyList2.getValue(),
-                   is(BIN_VAL_2));
-
-        // Gets the content inside container from list content 2.
-        YdtContext cont2 = keyList2.getNextSibling();
-        assertThat(getInCrtName(CONTAINER, CONT_INSIDE), cont2.getName(),
-                   is(CONT_INSIDE));
-
-        // Gets the leaf-list available inside container.
-        YdtContext availLeafList = cont2.getFirstChild();
-        assertThat(getInCrtName(LEAF_LIST, AVAILABLE), availLeafList.getName(),
-                   is(AVAILABLE));
-        Set value1 = availLeafList.getValueSet();
-        assertThat(getInCrtLeafListValue(AVAILABLE, EIGHTY_NINE),
-                   value1.contains(EIGHTY_NINE), is(true));
-        assertThat(getInCrtLeafListValue(AVAILABLE, NINETY_EIGHT),
-                   value1.contains(NINETY_EIGHT), is(true));
-
-        // Gets the list content 3.
-        YdtContext outputList3 = outputList2.getNextSibling();
-        assertThat(getInCrtName(LIST, OUTPUT_LIST), outputList3.getName(),
-                   is(OUTPUT_LIST));
-
-        // Gets the leaf list-key in content 3 of list.
-        YdtContext keyList3 = outputList3.getFirstChild();
-        assertThat(getInCrtName(LEAF, LIST_KEY), keyList3.getName(),
-                   is(LIST_KEY));
-        assertThat(getInCrtLeafValue(LIST_KEY, BIN_VAL_3), keyList3.getValue(),
-                   is(BIN_VAL_3));
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbErrMsgAndConstants.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbErrMsgAndConstants.java
deleted file mode 100644
index 7b82454..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbErrMsgAndConstants.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ytb;
-
-import org.onosproject.yms.app.ysr.TestYangSchemaNodeProvider;
-
-/**
- * Represents the abstract class for ytb test classes having common methods
- * and the constants.
- */
-public abstract class YtbErrMsgAndConstants {
-
-    /**
-     * Static attribute of root name.
-     */
-    public static final String ROOT_NAME = "rootName";
-
-    /**
-     * Static attribute of root name space.
-     */
-    public static final String ROOT_NAME_SPACE = "rootNameSpace";
-
-    /**
-     * Static attribute of module which is YANG name.
-     */
-    public static final String MODULE = "module";
-
-    /**
-     * Static attribute of list which is YANG name.
-     */
-    public static final String LIST = "list";
-
-    /**
-     * Static attribute of leaf which is YANG name.
-     */
-    public static final String LEAF = "leaf";
-
-    /**
-     * Static attribute of leaf-list which is YANG name.
-     */
-    public static final String LEAF_LIST = "leaf-list";
-
-    /**
-     * Static attribute of container which is YANG name.
-     */
-    public static final String CONTAINER = "container";
-
-    /**
-     * Static attribute of name predict.
-     */
-    public static final String PREDICT = "predict";
-
-    /**
-     * Static attribute of name catch.
-     */
-    public static final String CATCH = "catch";
-
-    /**
-     * Static attribute of YANG file name.
-     */
-    public static final String RPC_NAME = "YtbSimpleRpcResponse";
-
-    /**
-     * Static attribute of name rpc.
-     */
-    public static final String RPC = "rpc";
-    public static final String HUNDRED = "hundred";
-    /**
-     * Created a schema node provider, which will register the app.
-     */
-    public TestYangSchemaNodeProvider schemaProvider =
-            new TestYangSchemaNodeProvider();
-
-    /**
-     * Returns the error message for when leaf value doesn't match with the
-     * expected value. It takes name of leaf and expected value as its
-     * parameter, to throw the message.
-     *
-     * @param name  leaf name
-     * @param value expected value of leaf
-     * @return error message of leaf value as incorrect
-     */
-    public static String getInCrtLeafValue(String name, String value) {
-        return "The value of leaf " + name + " is not " + value;
-    }
-
-    /**
-     * Returns the error message, when node name doesn't match with the
-     * expected value. It takes YANG name of the node and the node name as
-     * parameter, to throw the message.
-     *
-     * @param node     YANG node name
-     * @param nodeName node name
-     * @return error message as the node name is incorrect
-     */
-    public static String getInCrtName(String node, String nodeName) {
-        return getCapitalCase(node) + "'s name " + nodeName + " is incorrect.";
-    }
-
-    /**
-     * Returns the error message, when operation type doesn't match with the
-     * expected value. It takes YANG name of the node and the node name as
-     * parameter, to throw the message.
-     *
-     * @param node     YANG node name
-     * @param nodeName node name
-     * @return error message as the operation type is incorrect
-     */
-    public static String getInCrtOpType(String node, String nodeName) {
-        return "The operation type of " + node + " " + nodeName + " is " +
-                "incorrect";
-    }
-
-    /**
-     * Returns the error message for when leaf-list value doesn't match with the
-     * expected value. It takes name of leaf-list and expected value as its
-     * parameter, to throw the message.
-     *
-     * @param name  leaf-list name
-     * @param value value in leaf-list
-     * @return error message as the value in the leaf-list is incorrect
-     */
-    public static String getInCrtLeafListValue(String name, String value) {
-        return "The leaf-list " + name + " does not have " + value + " in it.";
-    }
-
-    /**
-     * Returns the capital cased first letter of the given string.
-     *
-     * @param name string to be capital cased
-     * @return capital cased string
-     */
-    private static String getCapitalCase(String name) {
-        return name.substring(0, 1).toUpperCase() + name.substring(1);
-    }
-}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbInvalidNodeSkipTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbInvalidNodeSkipTest.java
deleted file mode 100644
index 42da150..0000000
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbInvalidNodeSkipTest.java
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.yms.app.ytb;
-
-import org.junit.Test;
-import org.onosproject.yang.gen.v1.yms.test.ytb.data.type.rev20160826.YtbDataType;
-import org.onosproject.yang.gen.v1.yms.test.ytb.data.type.rev20160826.YtbDataTypeOpParam;
-import org.onosproject.yang.gen.v1.yms.test.ytb.data.type.rev20160826.ytbdatatype.EnumDer1;
-import org.onosproject.yang.gen.v1.yms.test.ytb.data.type.rev20160826.ytbdatatype.EnumDer2;
-import org.onosproject.yang.gen.v1.yms.test.ytb.data.type.rev20160826.ytbdatatype.EnumLeafListUnion;
-import org.onosproject.yang.gen.v1.yms.test.ytb.data.type.rev20160826.ytbdatatype.UnionEnumUnion;
-import org.onosproject.yang.gen.v1.yms.test.ytb.data.type.rev20160826.ytbdatatype.enumder2.EnumDer2Enum;
-import org.onosproject.yang.gen.v1.yms.test.ytb.data.type.rev20160826.ytbdatatype.enumleaflistunion.EnumLeafListUnionEnum1;
-import org.onosproject.yang.gen.v1.yms.test.ytb.empty.type.rev20160826.YtbEmptyType;
-import org.onosproject.yang.gen.v1.yms.test.ytb.empty.type.rev20160826.YtbEmptyTypeOpParam;
-import org.onosproject.yang.gen.v1.yms.test.ytb.empty.type.rev20160826.ytbemptytype.EmpType;
-import org.onosproject.yang.gen.v1.yms.test.ytb.empty.type.rev20160826.ytbemptytype.EmpType2;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.rpc.response.rev20160826.YtbSimpleRpcResponse;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.rpc.response.rev20160826.YtbSimpleRpcResponseOpParam;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.rpc.response.rev20160826.ytbsimplerpcresponse.Cumulative;
-import org.onosproject.yang.gen.v1.yms.test.ytb.simple.rpc.response.rev20160826.ytbsimplerpcresponse.DefaultCumulative;
-import org.onosproject.yms.app.ydt.YdtExtendedBuilder;
-import org.onosproject.yms.app.ysr.DefaultYangSchemaRegistry;
-import org.onosproject.yms.ydt.YdtContext;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsNull.nullValue;
-import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REQUEST;
-
-/**
- * Unit test cases for invalid node skip in YANG tree builder.
- */
-public class YtbInvalidNodeSkipTest extends YtbErrMsgAndConstants {
-
-    private static final String CUMULATIVE = "cumulative";
-    private static final String SUM = "sum";
-    private static final String FIVE = "5";
-    private static final String TEN_NUM = "10";
-    private static final String DATA_TYPE = "YtbDataType";
-    private static final String ENUM = "enum";
-    private static final String EMPTY = "empty";
-    private static final String THOUSAND = "thousand";
-    private static final String TEN = "ten";
-    private static final String ENUM_LEAF_LIST = "enum-leaf-list";
-    private static final String UNION_ENUM = "union-enum";
-    private static final String ENUM_LEAF_REF = "leaf-ref-enum";
-    private static final String EMPTY_MOD = "YtbEmptyType";
-    private static final String EMPTY_REF_LIST = "empty-list-ref";
-    private static final String EMPTY_TYPE = "empty-type";
-    private static final String EMP_LIST_REF_TYPE = "empty-list-ref-type";
-
-    /**
-     * Processes RPC node which is the sibling to the empty current node.
-     */
-    @Test
-    public void processRpcSiblingWhenNodeIsEmpty() {
-
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-        Cumulative cumulative1 = new DefaultCumulative.CumulativeBuilder()
-                .sum((byte) 5).build();
-        Cumulative cumulative2 = new DefaultCumulative.CumulativeBuilder()
-                .sum((byte) 10).build();
-        List<Cumulative> list = new ArrayList<>();
-        list.add(cumulative1);
-        list.add(cumulative2);
-        YtbSimpleRpcResponse rpc = new YtbSimpleRpcResponseOpParam
-                .YtbSimpleRpcResponseBuilder().cumulative(list).build();
-
-        // As YSB or YAB protocol sets the value for YTB.
-        List<Object> objectList = new ArrayList<>();
-        objectList.add(rpc);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo(
-                objectList, ROOT_NAME, ROOT_NAME_SPACE,
-                EDIT_CONFIG_REQUEST, registry);
-
-        // Receives YDT context and checks the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Gets the first module from logical root node.
-        YdtContext module = context.getFirstChild();
-        assertThat(getInCrtName(MODULE, RPC_NAME), module.getName(),
-                   is(RPC_NAME));
-
-        // Gets the first list content of cumulative.
-        YdtContext list1 = module.getFirstChild();
-        assertThat(getInCrtName(LIST, CUMULATIVE), list1.getName(),
-                   is(CUMULATIVE));
-
-        YdtContext sum1 = list1.getFirstChild();
-        assertThat(getInCrtName(LEAF, SUM), sum1.getName(), is(SUM));
-        assertThat(getInCrtLeafValue(SUM, FIVE), sum1.getValue(), is(FIVE));
-
-        // Gets the second list content of cumulative.
-        YdtContext list2 = list1.getNextSibling();
-        assertThat(getInCrtName(LIST, CUMULATIVE), list2.getName(),
-                   is(CUMULATIVE));
-
-        YdtContext sum2 = list2.getFirstChild();
-        assertThat(getInCrtName(LEAF, SUM), sum2.getName(), is(SUM));
-        assertThat(getInCrtLeafValue(SUM, TEN_NUM), sum2.getValue(), is(TEN_NUM));
-    }
-
-    @Test
-    public void processEnumDataType() {
-
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-
-        // Creates the enum hundred for leaf enum.
-        EnumDer2 der2 = new EnumDer2(EnumDer2Enum.HUNDRED);
-        EnumDer1 der1 = new EnumDer1(der2);
-
-        // Creates the enum hundred and ten for leaf-list having union.
-        EnumLeafListUnion union1 = new EnumLeafListUnion(EnumLeafListUnionEnum1
-                                                                 .HUNDRED);
-        EnumLeafListUnion union2 = new EnumLeafListUnion(EnumLeafListUnionEnum1
-                                                                 .TEN);
-
-        List<EnumLeafListUnion> leafList = new ArrayList<>();
-        leafList.add(union1);
-        leafList.add(union2);
-
-        // Creates a leaf having typedef in union, where as the typedef is enum.
-        UnionEnumUnion enumUnion = new UnionEnumUnion(der1);
-
-        // Creates a leaf-list with leaf-ref pointing to leaf with enum.
-        EnumDer2 enum2 = new EnumDer2(EnumDer2Enum.THOUSAND);
-        EnumDer1 enum1 = new EnumDer1(enum2);
-        EnumDer2 enum4 = new EnumDer2(EnumDer2Enum.HUNDRED);
-        EnumDer1 enum3 = new EnumDer1(enum4);
-
-        List<EnumDer1> enumDer1 = new ArrayList<>();
-        enumDer1.add(enum1);
-        enumDer1.add(enum3);
-
-        YtbDataType dataType = new YtbDataTypeOpParam.YtbDataTypeBuilder()
-                .yangAutoPrefixEnum(der1).enumLeafList(leafList)
-                .unionEnum(enumUnion).leafRefEnum(enumDer1).build();
-
-        // As YSB or YAB protocol sets the value for YTB.
-        List<Object> objectList = new ArrayList<>();
-        objectList.add(dataType);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo(
-                objectList, ROOT_NAME, ROOT_NAME_SPACE,
-                EDIT_CONFIG_REQUEST, registry);
-
-        // Receives YDT context and checks the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Gets the first module from logical root node.
-        YdtContext module = context.getFirstChild();
-        assertThat(getInCrtName(MODULE, DATA_TYPE), module.getName(),
-                   is(DATA_TYPE));
-
-        // Gets the first list content of cumulative.
-        YdtContext leafEnum = module.getFirstChild();
-        assertThat(getInCrtName(LEAF, ENUM), leafEnum.getName(), is(ENUM));
-        assertThat(getInCrtLeafValue(ENUM, HUNDRED), leafEnum.getValue(),
-                   is(HUNDRED));
-
-        YdtContext unionEnum = leafEnum.getNextSibling();
-        assertThat(getInCrtName(LEAF_LIST, UNION_ENUM), unionEnum.getName(),
-                   is(UNION_ENUM));
-        assertThat(getInCrtLeafValue(UNION_ENUM, HUNDRED), unionEnum.getValue(),
-                   is(HUNDRED));
-
-        YdtContext leafListEnum = unionEnum.getNextSibling();
-        Set leafListVal = leafListEnum.getValueSet();
-        assertThat(getInCrtName(LEAF_LIST, ENUM_LEAF_LIST),
-                   leafListEnum.getName(), is(ENUM_LEAF_LIST));
-        assertThat(getInCrtLeafListValue(ENUM_LEAF_LIST, HUNDRED),
-                   leafListVal.contains(HUNDRED), is(true));
-        assertThat(getInCrtLeafListValue(ENUM_LEAF_LIST, TEN_NUM),
-                   leafListVal.contains(TEN), is(true));
-
-        YdtContext leafRef = leafListEnum.getNextSibling();
-        Set leafRefVal = leafRef.getValueSet();
-        assertThat(getInCrtName(LEAF_LIST, ENUM_LEAF_REF), leafRef.getName(),
-                   is(ENUM_LEAF_REF));
-        assertThat(getInCrtLeafListValue(ENUM_LEAF_REF, HUNDRED),
-                   leafRefVal.contains(HUNDRED), is(true));
-        assertThat(getInCrtLeafListValue(ENUM_LEAF_REF, TEN_NUM),
-                   leafRefVal.contains(THOUSAND), is(true));
-    }
-
-    @Test
-    public void processEmptyDataType() {
-
-        schemaProvider.processSchemaRegistry(null);
-        DefaultYangSchemaRegistry registry = schemaProvider
-                .getDefaultYangSchemaRegistry();
-
-        // As an application, creates the object.
-
-        // For leaf-list empty-list.
-        List<Boolean> empList = new ArrayList<>();
-        empList.add(false);
-        empList.add(true);
-
-        // For leaf-list empty-list-ref-type and emp-ref-list.
-        List<Boolean> empRefList = new ArrayList<>();
-        empRefList.add(true);
-        empRefList.add(false);
-
-        // For leaf empty-type with typedef emp-type
-        EmpType2 type2 = new EmpType2(true);
-        EmpType type1 = new EmpType(type2);
-
-        // For leaf-list empty-list-type with typedef emp-type
-        EmpType2 type4 = new EmpType2(false);
-        EmpType type3 = new EmpType(type4);
-        EmpType2 type6 = new EmpType2(true);
-        EmpType type5 = new EmpType(type6);
-
-        List<EmpType> typeList = new ArrayList<>();
-        typeList.add(type3);
-        typeList.add(type5);
-
-        YtbEmptyType emType = new YtbEmptyTypeOpParam.YtbEmptyTypeBuilder()
-                .empty(true).emptyList(empList).emptyRef(false)
-                .emptyListRef(empRefList).emptyType(type1)
-                .emptyListType(typeList).emptyRefType(false)
-                .emptyListRefType(empRefList).build();
-
-        // As YSB or YAB protocol sets the value for YTB.
-        List<Object> objectList = new ArrayList<>();
-        objectList.add(emType);
-
-        // Builds YANG tree in YTB.
-        DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder();
-        YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo(
-                objectList, ROOT_NAME, ROOT_NAME_SPACE,
-                EDIT_CONFIG_REQUEST, registry);
-
-        // Receives YDT context and checks the tree that is built.
-        YdtContext context = ydtBuilder.getRootNode();
-
-        // Gets the first module from logical root node.
-        YdtContext module = context.getFirstChild();
-        assertThat(getInCrtName(MODULE, EMPTY_MOD), module.getName(),
-                   is(EMPTY_MOD));
-
-        // Gets the first list content of cumulative.
-        YdtContext empty = module.getFirstChild();
-        assertThat(getInCrtName(LEAF, EMPTY), empty.getName(), is(EMPTY));
-        assertThat(empty.getValue(), nullValue());
-
-        YdtContext emptyType = empty.getNextSibling();
-        assertThat(getInCrtName(LEAF_LIST, EMPTY_TYPE), emptyType.getName(),
-                   is(EMPTY_TYPE));
-        assertThat(emptyType.getValue(), nullValue());
-
-        YdtContext emptyRefList = emptyType.getNextSibling();
-        assertThat(getInCrtName(LEAF_LIST, EMPTY_REF_LIST),
-                   emptyRefList.getName(), is(EMPTY_REF_LIST));
-        Set valueSet = emptyRefList.getValueSet();
-        assertThat(valueSet.isEmpty(), is(true));
-
-        YdtContext emptyListRefType = emptyRefList.getNextSibling();
-        assertThat(getInCrtName(LEAF_LIST, EMP_LIST_REF_TYPE),
-                   emptyListRefType.getName(), is(EMP_LIST_REF_TYPE));
-        Set valueSet1 = emptyListRefType.getValueSet();
-        assertThat(valueSet1.isEmpty(), is(true));
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/YobTestYangFiles/ip-topology.yang b/apps/yms/ut/src/test/resources/YobTestYangFiles/ip-topology.yang
deleted file mode 100644
index ca117b7..0000000
--- a/apps/yms/ut/src/test/resources/YobTestYangFiles/ip-topology.yang
+++ /dev/null
@@ -1,29 +0,0 @@
-
-module yms-ip-topology {
-    yang-version 1;
-    namespace urn:ip:topo;
-    prefix ip-topo;
-    import yms-topology {
-       prefix topo;
-       revision-date "2014-01-01";
-    }
-    revision 2014-01-01 {
-        description "desc";
-        reference "ref";
-    }
-
-    augment /topo:node{
-        leaf router-id {
-            type string;
-        }
-        leaf router-ip {
-            type string;
-        }
-    }
-
-    augment /topo:node/topo:termination-points/topo:termination-point {
-        leaf ip-address {
-            type string;
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/YobTestYangFiles/topology.yang b/apps/yms/ut/src/test/resources/YobTestYangFiles/topology.yang
deleted file mode 100644
index 62c0279..0000000
--- a/apps/yms/ut/src/test/resources/YobTestYangFiles/topology.yang
+++ /dev/null
@@ -1,74 +0,0 @@
-
-module yms-topology {
-    yang-version 1;
-    namespace urn:topo;
-    prefix topo;
-    revision 2014-01-01 {
-        description "desc";
-        reference "ref";
-    }
-    list node {
-        key "node-id";
-        leaf node-id{
-           type string;
-        }
-        leaf-list node-prop{
-           type string;
-        }
-        container termination-points{
-            leaf number-of-tp {
-                type int16;
-            }
-            list termination-point {
-                key "tp-id";
-                leaf tp-id {
-                    type string;
-                }
-            }
-        }
-        choice choice1{
-           case case1a{
-               leaf leaf1a1{
-                   type string;
-               }
-               leaf leaf1a2{
-                   type string;
-               }
-           }
-           case case1b{
-               choice choice1b{
-                   case case1bi{
-                       leaf leaf1bia{
-                           type string;
-                       }
-                       leaf leaf1bib{
-                           type string;
-                       }
-                   }
-                   case case1bii{
-                       leaf leaf1biia{
-                           type string;
-                       }
-                       leaf leaf1biib{
-                           type string;
-                       }
-                   }
-               }
-           }
-        }
-    }
-
-    rpc set-node-limit {
-        input {
-            leaf node-limit {
-                type int16;
-            }
-        }
-    }
-
-    notification node-limit-reached {
-        leaf node-limit {
-            type int16;
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/yabTestYangFiles/test.yang b/apps/yms/ut/src/test/resources/yabTestYangFiles/test.yang
deleted file mode 100644
index e37bed6..0000000
--- a/apps/yms/ut/src/test/resources/yabTestYangFiles/test.yang
+++ /dev/null
@@ -1,111 +0,0 @@
-module test {
-
-    yang-version 1;
-    namespace "ydt.test";
-    prefix "t6";
-    organization "ON-LAB";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    container cont1 {
-        container cont2 {
-                container cont3 {
-                    leaf leaf1 {
-                        type string;
-                    }
-                }
-        }
-        list list1 {
-           key leaf2;
-           leaf leaf2 {
-               type string;
-           }
-           leaf leaf3 {
-               type string;
-           }
-       }
-       leaf leaf4 {
-          type string;
-       }
-    }
-    list list2 {
-        key "leaf5 leaf6";
-        leaf leaf5 {
-            type string;
-        }
-        leaf leaf6 {
-            type string;
-        }
-        leaf leaf7 {
-            type string;
-        }
-        leaf-list leaflist8 {
-            type string;
-        }
-        container cont7 {
-            leaf leaf12 {
-                type string;
-            }
-        }
-    }
-    container cont4 {
-        container cont5 {
-            leaf leaf9 {
-                type string;
-            }
-        }
-    }
-    leaf leaf10 {
-       type string;
-    }
-
-    rpc rock-the-house {
-        input {
-            leaf zip-code {
-                type string;
-            }
-        }
-        output {
-            leaf hello {
-                type string;
-            }
-        }
-    }
-
-    rpc rock-the-house1 {
-        input {
-            leaf leaf13 {
-               type string;
-            }
-        }
-    }
-
-    rpc rock-the-house2 {
-        output {
-            leaf leaf14 {
-                type string;
-            }
-        }
-    }
-
-    rpc rock-the-house3 {
-    }
-
-    augment "/cont4" {
-        container cont6 {
-            leaf leaf11 {
-                type string;
-            }
-        }
-    }
-
-    augment "/cont4/cont6" {
-        container cont7 {
-            leaf leaf12 {
-                type string;
-            }
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/Combined.yang b/apps/yms/ut/src/test/resources/ychTestResourceFiles/Combined.yang
deleted file mode 100644
index a9c2f48..0000000
--- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/Combined.yang
+++ /dev/null
@@ -1,114 +0,0 @@
-module Combined {
-
-    yang-version 1;
-    namespace "ych:combined";
-    prefix "combined";
-
-    organization "Huawei India Pvt. Ltd.";
-
-    description "This module defines for purchasing-supervisor.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    typedef protocol-version {
-        type uint8 {
-            range 1..7;
-        }
-    }
-
-    typedef path-id {
-        type uint32;
-        default 0;
-        description
-            "Identifier of a single path. The identifier does not
-             carry any semantic meaning beyond uniquely identifying
-             a path.";
-    }
-
-    typedef as-num {
-        type uint32;
-        default 0;
-        description
-            "Identifier of a single path. The identifier does not
-             carry any semantic meaning beyond uniquely identifying
-             a path.";
-    }
-
-    typedef metric {
-        type uint32;
-        default 0;
-        description
-            "Identifier of a single path. The identifier does not
-             carry any semantic meaning beyond uniquely identifying
-             a path.";
-    }
-
-    container attributes {
-        container origin {
-            reference "http://tools.ietf.org/html/rfc4271#section-5.1.1";
-            leaf value {
-                type path-id;
-                mandatory true;
-            }
-        }
-        container multi-exit-disc {
-            reference "http://tools.ietf.org/html/rfc4271#section-5.1.4";
-            leaf med {
-                type uint32;
-            }
-        }
-        container local-pref {
-            reference "http://tools.ietf.org/html/rfc4271#section-5.1.5";
-            leaf pref {
-                type uint32;
-            }
-        }
-        container aigp {
-            container aigp-tlv {
-                leaf metric {
-                    type metric;
-                }
-            }
-        }
-
-        list unrecognized-attributes {
-            key type;
-            leaf partial {
-                type boolean;
-                mandatory true;
-            }
-            leaf transitive {
-                type boolean;
-                mandatory true;
-            }
-            leaf type {
-                type uint8;
-                mandatory true;
-            }
-            leaf value {
-                type binary {
-                    length 0..65535;
-                }
-                mandatory true;
-            }
-        }
-
-        list bgp-parameters {
-            config false;
-            list optional-capabilities {
-                config false;
-                reference "http://tools.ietf.org/html/rfc5492#section-4";
-                container c-parameters {
-                    container as4-bytes-capability {
-                        reference "http://tools.ietf.org/html/rfc6793";
-                        leaf as-number {
-                            type as-num;
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/EmptyContainer.yang b/apps/yms/ut/src/test/resources/ychTestResourceFiles/EmptyContainer.yang
deleted file mode 100644
index 92106e9..0000000
--- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/EmptyContainer.yang
+++ /dev/null
@@ -1,19 +0,0 @@
-module EmptyContainer {
-
-    yang-version 1;
-
-    namespace "ych.Empty.Container";
-
-    prefix "purchasing";
-
-    organization "ON-LAB";
-
-    description "This module defines for purchasing-supervisor.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    container EmptyContainer {
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/combinedrootname.xml b/apps/yms/ut/src/test/resources/ychTestResourceFiles/combinedrootname.xml
deleted file mode 100644
index 04078f1..0000000
--- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/combinedrootname.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<rpc message-id="101"
-     xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-    <edit-config>
-        <target>
-            <running/>
-        </target>
-        <filter xmlns="ydt.filter-type" type="subtree">
-            <attributes xmlns="ych:combined">
-                <origin>
-                    <value>123</value>
-                </origin>
-                <multi-exit-disc>
-                    <med>456</med>
-                </multi-exit-disc>
-                <local-pref>
-                    <pref>23</pref>
-                </local-pref>
-                <aigp>
-                    <aigp-tlv>
-                        <metric>456</metric>
-                    </aigp-tlv>
-                </aigp>
-                <unrecognized-attributes>
-                    <partial>false</partial>
-                    <transitive>false</transitive>
-                    <type>1</type>
-                    <value>QUJD</value>
-                </unrecognized-attributes>
-                <unrecognized-attributes>
-                    <partial>true</partial>
-                    <transitive>true</transitive>
-                    <type>2</type>
-                    <value>QUJD</value>
-                </unrecognized-attributes>
-                <unrecognized-attributes>
-                    <partial>true</partial>
-                    <transitive>false</transitive>
-                    <type>3</type>
-                    <value>QUJD</value>
-                </unrecognized-attributes>
-                <unrecognized-attributes>
-                    <partial>false</partial>
-                    <transitive>true</transitive>
-                    <type>4</type>
-                    <value>QUJD</value>
-                </unrecognized-attributes>
-                <bgp-parameters>
-                    <optional-capabilities>
-                        <c-parameters>
-                            <as4-bytes-capability>
-                                <as-number>11</as-number>
-                            </as4-bytes-capability>
-                        </c-parameters>
-                    </optional-capabilities>
-                    <optional-capabilities>
-                        <c-parameters>
-                            <as4-bytes-capability>
-                                <as-number>22</as-number>
-                            </as4-bytes-capability>
-                        </c-parameters>
-                    </optional-capabilities>
-                    <optional-capabilities>
-                        <c-parameters>
-                            <as4-bytes-capability>
-                                <as-number>33</as-number>
-                            </as4-bytes-capability>
-                        </c-parameters>
-                    </optional-capabilities>
-                </bgp-parameters>
-                <bgp-parameters>
-                    <optional-capabilities>
-                        <c-parameters>
-                            <as4-bytes-capability>
-                                <as-number>33</as-number>
-                            </as4-bytes-capability>
-                        </c-parameters>
-                    </optional-capabilities>
-                    <optional-capabilities>
-                        <c-parameters>
-                            <as4-bytes-capability>
-                                <as-number>33</as-number>
-                            </as4-bytes-capability>
-                        </c-parameters>
-                    </optional-capabilities>
-                    <optional-capabilities>
-                        <c-parameters>
-                            <as4-bytes-capability>
-                                <as-number>33</as-number>
-                            </as4-bytes-capability>
-                        </c-parameters>
-                    </optional-capabilities>
-                </bgp-parameters>
-            </attributes>
-        </filter>
-    </edit-config>
-</rpc>
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/configrootname.xml b/apps/yms/ut/src/test/resources/ychTestResourceFiles/configrootname.xml
deleted file mode 100644
index 64c25aa..0000000
--- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/configrootname.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<rpc message-id="101"
-     xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-    <edit-config>
-        <target>
-            <running/>
-        </target>
-        <config>
-            <Customs-supervisor xmlns="ydt.root">abc</Customs-supervisor>
-            <Purchasing-supervisor xmlns="ydt.root">
-                <purchasing-specialist>bcd</purchasing-specialist>
-                <support>cde</support>
-            </Purchasing-supervisor>
-            <supervisor xmlns="ydt.Merchandiser-supervisor">abc</supervisor>
-        </config>
-    </edit-config>
-</rpc>
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/configrootnameOperationType.xml b/apps/yms/ut/src/test/resources/ychTestResourceFiles/configrootnameOperationType.xml
deleted file mode 100644
index ce63205..0000000
--- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/configrootnameOperationType.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<rpc message-id="101"
-     xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-    <edit-config>
-        <target>
-            <running/>
-        </target>
-        <config>
-            <Customs-supervisor xmlns="ydt.root">abc</Customs-supervisor>
-            <Purchasing-supervisor xmlns="ydt.root" operation="delete">
-                <purchasing-specialist>bcd</purchasing-specialist>
-                <support>cde</support>
-            </Purchasing-supervisor>
-            <supervisor xmlns="ydt.Merchandiser-supervisor">abc</supervisor>
-        </config>
-    </edit-config>
-</rpc>
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getReply.xml b/apps/yms/ut/src/test/resources/ychTestResourceFiles/getReply.xml
deleted file mode 100644
index 0b836d3..0000000
--- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getReply.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<rpc-reply message-id="101"
-           xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
-           xmlns:ex="http://example.net/content/1.0">
-    <data>
-        <Purchasing-supervisor xmlns="ydt.root">
-            <purchasing-specialist>bcd</purchasing-specialist>
-        </Purchasing-supervisor>
-    </data>
-</rpc-reply>
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigReply.xml b/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigReply.xml
deleted file mode 100644
index bf3fc7b..0000000
--- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigReply.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<rpc message-id="101"
-     xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-    <data>
-        <supervisor xmlns="ydt.Merchandiser-supervisor">abc</supervisor>
-    </data>
-</rpc>
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigemptycontainer.xml b/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigemptycontainer.xml
deleted file mode 100644
index adc7902..0000000
--- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigemptycontainer.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<rpc message-id="101"
-     xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-    <get-config>
-        <source>
-            <running/>
-        </source>
-        <filter xmlns="ydt.filter-type" type="subtree">
-            <EmptyContainer xmlns="ych.Empty.Container"/>
-        </filter>
-    </get-config>
-</rpc>
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigrootname.xml b/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigrootname.xml
deleted file mode 100644
index 0c35df5..0000000
--- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigrootname.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<rpc message-id="101"
-     xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-    <get-config>
-        <source>
-            <running/>
-        </source>
-        <filter type="subtree">
-            <supervisor xmlns="ydt.Merchandiser-supervisor">abc</supervisor>
-        </filter>
-    </get-config>
-</rpc>
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getrootname.xml b/apps/yms/ut/src/test/resources/ychTestResourceFiles/getrootname.xml
deleted file mode 100644
index b7fc97d..0000000
--- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getrootname.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<rpc message-id="101"
-     xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-    <get>
-        <filter type="subtree">
-            <Purchasing-supervisor xmlns="ydt.root">
-                <purchasing-specialist>bcd</purchasing-specialist>
-            </Purchasing-supervisor>
-        </filter>
-    </get>
-</rpc>
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/purchasingsupervisor.yang b/apps/yms/ut/src/test/resources/ychTestResourceFiles/purchasingsupervisor.yang
deleted file mode 100644
index 29123a8..0000000
--- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/purchasingsupervisor.yang
+++ /dev/null
@@ -1,43 +0,0 @@
-module ych-purchasingsupervisor {
-
-    yang-version 1;
-
-    namespace "ych.purchasing-supervisor";
-
-    prefix "purchasing";
-
-    organization "ON-LAB";
-
-    description "This module defines for purchasing-supervisor.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    container ych-purchasing-supervisor {
-        leaf ych-purchasing-specialist {
-            type string;
-            description "name of the purchasing-specialist person";
-        }
-
-        leaf ych-purchasing-support {
-            type string;
-            description "name of the support person";
-        }
-
-        leaf ych-purchasing-options {
-            type bits {
-                bit "option0";
-                bit "option1";
-                bit "option2";
-                bit "option3";
-            }
-            description
-            "A bit mask that may have 0, 1, many or all options present";
-        }
-
-        container ych-is-manager {
-            presence "If node is present denotes that supervisor is a manager";
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/EmptyLeafList.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/EmptyLeafList.yang
deleted file mode 100644
index b6174c7..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/EmptyLeafList.yang
+++ /dev/null
@@ -1,51 +0,0 @@
-module EmptyLeafList {
-
-    yang-version 1;
-
-    namespace "ydt.Empty.leafList";
-
-    prefix "emptyleaflist";
-
-    organization "ON-LAB";
-
-    description "This module defines for empty leaf list.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    typedef type-def {
-        type leafref {
-                    path /l1;
-                }
-    }
-
-    leaf l1 {
-        type empty;
-    }
-
-    leaf l2 {
-        type leafref {
-            path /l1;
-        }
-    }
-
-    leaf l3 {
-        type type-def;
-    }
-
-    leaf-list list1 {
-        type empty;
-    }
-
-    leaf-list list2 {
-        type leafref {
-            path /l1;
-        }
-    }
-
-    leaf-list list3 {
-        type type-def;
-    }
-
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/Hello_ONOS.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/Hello_ONOS.yang
deleted file mode 100644
index d5eafbe..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/Hello_ONOS.yang
+++ /dev/null
@@ -1,57 +0,0 @@
-module Hello_ONOS {
-    yang-version 1;
-    namespace "ydt:hello_onos";
-    prefix "hello";
-
-    revision "2016-09-03" {
-        description "Initial revision of hello model";
-    }
-
-    grouping greeting {
-        leaf name {
-            type string;
-        }
-
-        leaf surName {
-            type string;
-        }
-    }
-
-    rpc hello-world {
-        input {
-
-            // uses greeting;
-
-            leaf name {
-                type string;
-            }
-
-            leaf surName {
-                type string;
-            }
-
-            leaf inputDefault {
-                type string;
-            }
-
-            list stringList {
-                key "string1 string2";
-                unique "string3";
-                leaf string1 {
-                      type string;
-                }
-                leaf string2 {
-                      type string;
-                }
-                leaf string3 {
-                      type string;
-                }
-            }
-        }
-        output {
-            leaf greetingOut {
-                type string;
-            }
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/Logistics-manager.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/Logistics-manager.yang
deleted file mode 100644
index 3cd4321..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/Logistics-manager.yang
+++ /dev/null
@@ -1,66 +0,0 @@
-module Logistics-manager {
-
-    yang-version 1;
-
-    namespace "ydt.root";
-
-    prefix "root";
-
-    organization "ON-LAB";
-
-    description "This module defines for organisation.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    leaf Customs-supervisor {
-        type string;
-        description "name of the customs-supervisor.";
-    }
-
-    leaf Merchandiser-supervisor {
-        type string;
-        description "name of merchandiser-supervisor";
-    }
-
-    list Material-supervisor {
-        key "name";
-        leaf name {
-            type string;
-            description "name of logistics-supervisor";
-        }
-
-        leaf departmentId {
-            type string;
-            description "name of department";
-        }
-    }
-
-    container Purchasing-supervisor {
-        leaf purchasing-specialist {
-            type string;
-            description "name of the purchasing-specialist person";
-        }
-
-        leaf support {
-            type string;
-            description "name of the support person";
-        }
-    }
-
-    leaf-list Warehouse-supervisor {
-        type string;
-        description "name of the warehouse-supervisor's";
-    }
-
-    leaf trading-supervisor {
-        type string;
-        description "name of the trading-supervisor";
-    }
-
-    leaf-list employee-id {
-        type string;
-        description "list of the employee id";
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology1.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology1.yang
deleted file mode 100644
index fc0eee5..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology1.yang
+++ /dev/null
@@ -1,66 +0,0 @@
-module augment-topology1 {
-
-    yang-version 1;
-
-    namespace "ydt.augment-topology1";
-
-    prefix "aug1";
-
-    import yms-ietf-network {
-        prefix nd;
-    }
-
-    import yms-network-topology {
-        prefix topo;
-    }
-
-    import augmentNetwork {
-        prefix aug;
-    }
-
-    organization "ON-LAB";
-
-    description "This module defines for augment-topology1 classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    augment "/nd:networks/nd:network/topo:link" {
-        description
-        "Add augment1 to the link model.";
-        list augment1 {
-            key "value1";
-            leaf value1 {
-                  type int8;
-            }
-        }
-    }
-
-    augment "/nd:networks/nd:network/nd:node/topo:t-point" +
-    "/supporting-termination-point" {
-        description
-        "Add augment1 to the termination-point model.";
-        container augment1 {
-            leaf value1 {
-                  type int8;
-            }
-        }
-
-        leaf augment1-leaf {
-            type string;
-        }
-
-    }
-
-    augment "/aug:node/aug:cont1s/aug:cont1s" {
-        description
-        "Add augment1 to the link model.";
-        list augment1 {
-            key "value1";
-            leaf value1 {
-                  type int8;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology2.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology2.yang
deleted file mode 100644
index 82a19d7..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology2.yang
+++ /dev/null
@@ -1,63 +0,0 @@
-module augment-topology2 {
-
-    yang-version 1;
-
-    namespace "ydt.augment-topology2";
-
-    prefix "aug2";
-
-    import yms-ietf-network {
-        prefix nd;
-    }
-
-    import yms-network-topology {
-        prefix topo;
-    }
-
-    organization "ON-LAB";
-
-    description "This module defines for augment-topology2 classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    augment "/nd:networks/nd:network/topo:link" {
-        description
-        "Add augment2 to the link model.";
-        list augment2 {
-            key "key1 key2";
-            leaf key1 {
-                  type int8;
-            }
-            leaf key2 {
-                  type int8;
-            }
-        }
-
-        leaf-list augment2leafList {
-            type string;
-        }
-    }
-
-    augment "/nd:networks/nd:network/nd:node/topo:t-point/" +
-    "supporting-termination-point" {
-        description
-        "Add augment2 to the supporting-termination-point model.";
-        container augment2 {
-            config false;
-            leaf value2 {
-                  type int8;
-            }
-        }
-
-        leaf-list augment2leafList {
-            type string;
-        }
-
-        leaf augment2leaf {
-            type string;
-        }
-
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology3.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology3.yang
deleted file mode 100644
index d2c58ce..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology3.yang
+++ /dev/null
@@ -1,59 +0,0 @@
-module augment-topology3 {
-
-    yang-version 1;
-
-    namespace "ydt.augment-topology3";
-
-    prefix "aug3";
-
-    import yms-ietf-network {
-        prefix nd;
-    }
-
-    import augment-topology1 {
-        prefix aug1;
-    }
-
-    import augment-topology2 {
-        prefix aug2;
-    }
-
-    import yms-network-topology {
-        prefix topo;
-    }
-
-    organization "ON-LAB";
-
-    description "This module defines for augment-topology3 classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    augment "/nd:networks/nd:network/topo:link/aug2:augment2" {
-        description
-        "Add augment3 to the augment2 model.";
-        container augment3 {
-            config false;
-            leaf value3 {
-                  type int8;
-            }
-        }
-
-        leaf augment3leaf {
-            type string;
-        }
-    }
-
-    augment "/nd:networks/nd:network/nd:node/topo:t-point/" +
-    "supporting-termination-point/aug2:augment2" {
-        description
-        "Add augment3 to the augment2 model.";
-        container augment3 {
-            config false;
-            leaf value3 {
-                  type int8;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology4.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology4.yang
deleted file mode 100644
index b8cea93..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology4.yang
+++ /dev/null
@@ -1,58 +0,0 @@
-module augment-topology4 {
-
-    yang-version 1;
-
-    namespace "ydt.augment-topology4";
-
-    prefix "aug4";
-
-    import yms-ietf-network {
-        prefix nd;
-    }
-
-    import augment-topology1 {
-        prefix aug1;
-    }
-
-    import augment-topology2 {
-        prefix aug2;
-    }
-
-    import augment-topology3 {
-        prefix aug3;
-    }
-
-    import yms-network-topology {
-        prefix topo;
-    }
-
-    organization "ON-LAB";
-
-    description "This module defines for augment-topology4 classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug3:augment3" {
-        description
-        "Add augment4 to the augment3 model.";
-        container augment4 {
-            config false;
-            leaf value4 {
-                  type int8;
-            }
-        }
-    }
-
-    augment "/nd:networks/nd:network/nd:node/topo:t-point/" +
-    "supporting-termination-point/aug2:augment2" {
-        description
-        "Add augment4leaf to the augment2 model.";
-
-        leaf augment4leaf{
-            type string;
-        }
-
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology5.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology5.yang
deleted file mode 100644
index a13a688..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology5.yang
+++ /dev/null
@@ -1,66 +0,0 @@
-module augment-topology5 {
-
-    yang-version 1;
-
-    namespace "ydt.augment-topology5";
-
-    prefix "aug5";
-
-    import yms-ietf-network {
-        prefix nd;
-    }
-
-    import augment-topology1 {
-        prefix aug1;
-    }
-
-    import augment-topology2 {
-        prefix aug2;
-    }
-
-    import augment-topology3 {
-        prefix aug3;
-    }
-
-    import augment-topology4 {
-        prefix aug4;
-    }
-
-    import yms-network-topology {
-        prefix topo;
-    }
-
-    organization "ON-LAB";
-
-    description "This module defines for augment-topology5 classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    augment "/nd:networks/nd:network/topo:link/aug2:augment2" {
-        description
-        "Add container to the augment2 model.";
-        container augment5 {
-            config false;
-            leaf value5 {
-                  type int8;
-            }
-        }
-
-        leaf-list augment5leafList {
-            type string;
-        }
-    }
-
-    augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug3:augment3" {
-        description
-        "Add augment5 to the augment3 model.";
-        container augment5 {
-            config false;
-            leaf value5 {
-                  type int8;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology6.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology6.yang
deleted file mode 100644
index 15bd3d5..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology6.yang
+++ /dev/null
@@ -1,73 +0,0 @@
-module augment-topology6 {
-
-    yang-version 1;
-
-    namespace "ydt.augment-topology6";
-
-    prefix "aug5";
-
-    import yms-ietf-network {
-        prefix nd;
-    }
-
-    import augment-topology1 {
-        prefix aug1;
-    }
-
-    import augment-topology2 {
-        prefix aug2;
-    }
-
-    import augment-topology3 {
-        prefix aug3;
-    }
-
-    import augment-topology4 {
-        prefix aug4;
-    }
-
-    import augment-topology5 {
-        prefix aug5;
-    }
-
-    import yms-network-topology {
-        prefix topo;
-    }
-
-    organization "ON-LAB";
-
-    description "This module defines for augment-topology6 classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug3:augment3" {
-        description
-        "Add augment6 to the augment3 model.";
-        container augment6 {
-            config true;
-            leaf value6 {
-                  type int8;
-            }
-        }
-    }
-
-    augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug3:augment3/" +
-    "aug5:augment5" {
-        description
-        "Add leaf6 to the augment5 model.";
-        leaf leaf6 {
-            type string;
-        }
-
-    }
-
-    augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug5:augment5" {
-        description
-        "Add list to the augment5 model.";
-        leaf-list augment6leafList {
-            type string;
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment2.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment2.yang
deleted file mode 100644
index 70d45c4..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment2.yang
+++ /dev/null
@@ -1,32 +0,0 @@
-module augment2 {
-
-    yang-version 1;
-
-    namespace "ydt.augment2";
-
-    prefix "aug";
-
-    organization "ON-LAB";
-
-    description "This module defines for augmentNetwork classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    container aug {
-        container aug {
-            leaf aug {
-                type string;
-            }
-        }
-    }
-
-    augment "/aug:" {
-        description
-        "Add container to the augment2 model.";
-        leaf aug1 {
-            type string;
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentNetwork.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentNetwork.yang
deleted file mode 100644
index a769a5e..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentNetwork.yang
+++ /dev/null
@@ -1,36 +0,0 @@
-module augmentNetwork {
-
-    yang-version 1;
-
-    namespace "ydt.augmentNetwork";
-
-    prefix "aug";
-
-    organization "ON-LAB";
-
-    description "This module defines for augmentNetwork classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    list node {
-        key "name";
-        leaf name {
-            type string;
-            description "name of node";
-        }
-    }
-
-    augment "/node" {
-        description
-        "Add container to the node model.";
-        container cont1s {
-            container cont1s {
-                leaf fine {
-                    type string;
-                }
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence.yang
deleted file mode 100644
index aba3c17..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence.yang
+++ /dev/null
@@ -1,23 +0,0 @@
-module augmentSequence {
-
-    yang-version 1;
-
-    namespace "ydt.augmentSequence";
-
-    prefix "aug";
-
-    organization "ON-LAB";
-
-    description "This module defines for augmentSequence classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    list l1 {
-        key  leaf1;
-        leaf leaf1 {
-              type int8;
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence1.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence1.yang
deleted file mode 100644
index adaf43f..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence1.yang
+++ /dev/null
@@ -1,28 +0,0 @@
-module augmentSequence1 {
-
-    yang-version 1;
-
-    namespace "ydt.augmentSequence1";
-
-    prefix "sequence1";
-
-    import augmentSequence {
-        prefix aug;
-    }
-
-    organization "ON-LAB";
-
-    description "This module defines for augmentSequence1 classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    augment "/aug:l1" {
-        container c1 {
-            leaf leaf2 {
-                  type int8;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence2.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence2.yang
deleted file mode 100644
index f32d508..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence2.yang
+++ /dev/null
@@ -1,28 +0,0 @@
-module augmentSequence2 {
-
-    yang-version 1;
-
-    namespace "ydt.augmentSequence2";
-
-    prefix "sequence2";
-
-    import augmentSequence {
-        prefix aug;
-    }
-
-    organization "ON-LAB";
-
-    description "This module defines for augmentSequence2 classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    augment "/aug:l1" {
-        container c2 {
-            leaf leaf2 {
-                  type int8;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/binarytest.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/binarytest.yang
deleted file mode 100644
index f6db459d..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/binarytest.yang
+++ /dev/null
@@ -1,74 +0,0 @@
-module binarytest {
-
-    yang-version 1;
-
-    namespace "ydt.binarytest";
-
-    prefix "binarytest";
-
-    organization "ON-LAB";
-
-    description "This module defines for binarytest classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    list binaryList {
-        config false;
-        leaf binary {
-              type binary;
-        }
-        leaf binaryWithRange {
-              type binary {
-                   length "2 .. 10";
-              }
-        }
-        leaf binaryWithMultiRange {
-              type binary {
-                   length "min..10 | 20 | 30..max";
-              }
-        }
-    }
-
-    typedef percent {
-        type binary;
-    }
-
-    leaf name {
-        type percent;
-    }
-
-    grouping greeting {
-        leaf surname {
-            type binary;
-        }
-    }
-
-    container cont1 {
-        uses greeting;
-    }
-
-    augment "/cont1" {
-        leaf lastname {
-            type binary;
-        }
-    }
-
-    container food {
-        choice snack {
-            case sportsarena {
-                leaf pretzel {
-                    type binary;
-                }
-            }
-        }
-    }
-
-    leaf middlename {
-        type union {
-            type int8;
-            type binary;
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/bit.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/bit.yang
deleted file mode 100644
index 8b4f0c3..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/bit.yang
+++ /dev/null
@@ -1,107 +0,0 @@
-module bit {
-
-    yang-version 1;
-
-    namespace "ydt.bit";
-
-    prefix "bit";
-
-    organization "ON-LAB";
-
-    description "This module defines for bit classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    list bitList {
-        config false;
-        leaf bit {
-            type bits {
-                bit disable-nagle {
-                position 0;
-                }
-                bit auto-sense-speed {
-                position 1;
-                }
-                bit ten-Mb-only {
-                position 2;
-                }
-            }
-        }
-    }
-
-    typedef percent {
-        type bits {
-            bit bit3 {
-                position 3;
-            }
-            bit bit4 {
-                position 4;
-            }
-            bit bit5 {
-                position 5;
-            }
-        }
-    }
-
-    leaf name {
-        type percent;
-    }
-
-    grouping greeting {
-        leaf surname {
-            type bits {
-                bit bit6 {
-                    position 6;
-                }
-                bit bit7 {
-                    position 7;
-                }
-                bit bit8 {
-                    position 8;
-                }
-            }
-        }
-    }
-
-    container cont1 {
-        uses greeting;
-    }
-
-    augment "/cont1" {
-        leaf lastname {
-            type bits {
-                bit bit9 {
-                    position 9;
-                }
-                bit bit10 {
-                    position 10;
-                }
-                bit bit11 {
-                    position 11;
-                }
-            }
-        }
-    }
-
-    container food {
-        choice snack {
-           case sportsarena {
-               leaf pretzel {
-                   type bits {
-                       bit bit12 {
-                          position 12;
-                       }
-                       bit bit13 {
-                          position 13;
-                       }
-                       bit bit14 {
-                          position 14;
-                       }
-                   }
-               }
-           }
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/bool.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/bool.yang
deleted file mode 100644
index 1bb6181..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/bool.yang
+++ /dev/null
@@ -1,23 +0,0 @@
-module bool {
-
-    yang-version 1;
-
-    namespace "ydt.boolean";
-
-    prefix "bool";
-
-    organization "ON-LAB";
-
-    description "This module defines for bool classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    list booleanList {
-        key boolean;
-        leaf boolean {
-              type boolean;
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/crypto-base.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/crypto-base.yang
deleted file mode 100644
index 602b911..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/crypto-base.yang
+++ /dev/null
@@ -1,76 +0,0 @@
-module crypto-base {
-
-    yang-version 1;
-
-    namespace "ydt.crypto-base";
-
-    prefix "crypto";
-
-    organization "ON-LAB";
-
-    description "This module defines for crypto-base classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    identity crypto-alg {
-    description
-        "Base identity from which all crypto algorithms
-        are derived.";
-    }
-
-    identity crypto-alg2 {
-       base crypto-alg;
-    }
-
-    identity crypto-alg3 {
-       base crypto-alg2;
-    }
-
-    leaf crypto {
-        type identityref {
-            base "crypto-alg";
-        }
-    }
-
-    typedef abc {
-       type identityref {
-                   base "crypto-alg";
-               }
-    }
-
-    leaf-list abc-type {
-        type abc;
-    }
-
-    leaf abc-zeunion {
-        type union {
-             type identityref {
-                               base "crypto-alg";
-                           }
-        type abc;
-        }
-    }
-
-    leaf level2 {
-       type identityref {
-                          base "crypto-alg2";
-                      }
-    }
-
-    leaf level3 {
-       type identityref {
-                          base "crypto-alg3";
-                      }
-    }
-
-    leaf level4 {
-        type union {
-             type identityref {
-                               base "crypto-alg3";
-                           }
-        type abc;
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/customssupervisor.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/customssupervisor.yang
deleted file mode 100644
index 73aa806..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/customssupervisor.yang
+++ /dev/null
@@ -1,21 +0,0 @@
-module customssupervisor {
-
-    yang-version 1;
-
-    namespace "ydt.customs-supervisor";
-
-    prefix "customs";
-
-    organization "ON-LAB";
-
-    description "This module defines for customs-supervisor.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    leaf supervisor {
-        type string;
-        description "name of the customs-supervisor.";
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/decimal64.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/decimal64.yang
deleted file mode 100644
index 746c23e3..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/decimal64.yang
+++ /dev/null
@@ -1,95 +0,0 @@
-module decimal64 {
-
-    yang-version 1;
-
-    namespace "ydt.decimal64";
-
-    prefix "decimal64";
-
-    organization "ON-LAB";
-
-    description "This module defines for decimal64 classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-    leaf negInt {
-          type decimal64 {
-                fraction-digits 2;
-          }
-    }
-
-    leaf posInt {
-          type decimal64 {
-                fraction-digits 2;
-          }
-    }
-
-    leaf negIntWithMinFraction {
-          type decimal64 {
-                fraction-digits 1;
-          }
-    }
-
-    leaf posIntWithMinFraction {
-          type decimal64 {
-                fraction-digits 1;
-          }
-
-    }
-    leaf negIntWithMaxFraction {
-          type decimal64 {
-                fraction-digits 18;
-          }
-    }
-
-    leaf posIntWithMaxFraction {
-          type decimal64 {
-                fraction-digits 18;
-          }
-
-    }
-
-    leaf midIntWithRange {
-          type decimal64 {
-             fraction-digits 2;
-             range "10 .. 100";
-         }
-    }
-
-    leaf minIntWithRange {
-          type decimal64 {
-                fraction-digits 2;
-                range "10 .. 100";
-          }
-    }
-
-    leaf maxIntWithRange {
-          type decimal64 {
-             fraction-digits 2;
-             range "10 .. 100";
-         }
-    }
-
-    list multiRangeValidation {
-        config false;
-        leaf decimal {
-              type decimal64 {
-                 fraction-digits 2;
-                 range "10..40 | 50..100";
-              }
-        }
-        leaf revDecimal {
-              type decimal64 {
-                 fraction-digits 2;
-                 range "min .. 3.14 | 10 | 20..max";
-              }
-        }
-    }
-
-    leaf l1 {
-        type decimal64 {
-            fraction-digits 2;
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/employeeid.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/employeeid.yang
deleted file mode 100644
index be27c70..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/employeeid.yang
+++ /dev/null
@@ -1,21 +0,0 @@
-module employeeid {
-
-    yang-version 1;
-
-    namespace "ydt.employee-id";
-
-    prefix "id";
-
-    organization "ON-LAB";
-
-    description "This module defines for employee-id.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    leaf-list employeeid {
-        type string;
-        description "list of the employee id";
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/emptydata.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/emptydata.yang
deleted file mode 100644
index 33f58b3..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/emptydata.yang
+++ /dev/null
@@ -1,23 +0,0 @@
-module emptydata {
-
-    yang-version 1;
-
-    namespace "ydt.emptydata";
-
-    prefix "emptydata";
-
-    organization "ON-LAB";
-
-    description "This module defines for emptydata classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    list emptyList {
-        config false;
-        leaf empty {
-              type empty;
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/enumtest.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/enumtest.yang
deleted file mode 100644
index a9255c5..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/enumtest.yang
+++ /dev/null
@@ -1,27 +0,0 @@
-module enumtest {
-
-    yang-version 1;
-
-    namespace "ydt.enumtest";
-
-    prefix "enumtest";
-
-    organization "ON-LAB";
-
-    description "This module defines for enumtest classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    list enumList {
-        key enumleaf;
-        leaf enumleaf {
-            type enumeration {
-              enum ten { value "10";}
-              enum hundred { value "100";}
-              enum thousand { value "1000"; }
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/food.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/food.yang
deleted file mode 100644
index 202d11f..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/food.yang
+++ /dev/null
@@ -1,39 +0,0 @@
-module food {
-
-    yang-version 1;
-
-    namespace "ydt.food";
-
-    prefix "foodType";
-
-    organization "ON-LAB";
-
-    description "This module defines for food.";
-
-    revision "2016-06-24" {
-        description "Initial revision.";
-    }
-
-    container food {
-       choice snack {
-           case sportsarena {
-
-               leaf pretzel {
-                   type empty;
-               }
-               leaf beer {
-                   type empty;
-               }
-           }
-           case latenight {
-               leaf chocolate {
-                   type enumeration {
-                       enum dark;
-                       enum milk;
-                       enum first-available;
-                   }
-               }
-           }
-       }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer16.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer16.yang
deleted file mode 100644
index 8db77be..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer16.yang
+++ /dev/null
@@ -1,98 +0,0 @@
-module integer16 {
-
-    yang-version 1;
-
-    namespace "ydt.integer16";
-
-    prefix "integer16";
-
-    organization "ON-LAB";
-
-    description "This module defines for integer16 classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    list multiRangeValidation {
-        config false;
-        leaf integer {
-              type int16 {
-                 range "10..40 | 50..100";
-              }
-        }
-        leaf UnInteger {
-              type uint16 {
-                 range "10..40 | 50..100";
-              }
-        }
-
-        leaf revInteger {
-              type int16 {
-                 range "min .. 2 | 10 | 20..max";
-              }
-        }
-
-        leaf revUnInteger {
-              type uint16 {
-                 range "min .. 2 | 10 | 20..max";
-              }
-        }
-    }
-
-    leaf negInt {
-          type int16 {
-         }
-    }
-
-    leaf posInt {
-          type int16 {
-         }
-    }
-
-    leaf minIntWithRange {
-          type int16 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf midIntWithRange {
-          type int16 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf maxIntWithRange {
-          type int16 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf minUInt {
-          type uint16 {
-         }
-    }
-
-    leaf maxUInt {
-          type uint16 {
-         }
-    }
-
-    leaf minUIntWithRange {
-          type uint16 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf midUIntWithRange {
-          type uint16 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf maxUIntWithRange {
-          type uint16 {
-             range "10 .. 100";
-         }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer32.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer32.yang
deleted file mode 100644
index fb596cf..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer32.yang
+++ /dev/null
@@ -1,98 +0,0 @@
-module integer32 {
-
-    yang-version 1;
-
-    namespace "ydt.integer32";
-
-    prefix "integer32";
-
-    organization "ON-LAB";
-
-    description "This module defines for integer32 classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    list multiRangeValidation {
-        config false;
-        leaf integer {
-              type int32 {
-                 range "10..40 | 50..100";
-              }
-        }
-        leaf UnInteger {
-              type uint32 {
-                 range "10..40 | 50..100";
-              }
-        }
-
-        leaf revInteger {
-              type int32 {
-                 range "min .. 2 | 10 | 20..max";
-              }
-        }
-
-        leaf revUnInteger {
-              type uint32 {
-                 range "min .. 2 | 10 | 20..max";
-              }
-        }
-    }
-
-    leaf negInt {
-          type int32 {
-         }
-    }
-
-    leaf posInt {
-          type int32 {
-         }
-    }
-
-    leaf minIntWithRange {
-          type int32 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf midIntWithRange {
-          type int32 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf maxIntWithRange {
-          type int32 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf minUInt {
-          type uint32 {
-         }
-    }
-
-    leaf maxUInt {
-          type uint32 {
-         }
-    }
-
-    leaf minUIntWithRange {
-          type uint32 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf midUIntWithRange {
-          type uint32 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf maxUIntWithRange {
-          type uint32 {
-             range "10 .. 100";
-         }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer64.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer64.yang
deleted file mode 100644
index 39479c6..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer64.yang
+++ /dev/null
@@ -1,98 +0,0 @@
-module integer64 {
-
-    yang-version 1;
-
-    namespace "ydt.integer64";
-
-    prefix "integer64";
-
-    organization "ON-LAB";
-
-    description "This module defines for integer64 classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    list multiRangeValidation {
-        config false;
-        leaf integer {
-              type int64 {
-                 range "10..40 | 50..100";
-              }
-        }
-        leaf UnInteger {
-              type uint64 {
-                 range "10..40 | 50..100";
-              }
-        }
-
-        leaf revInteger {
-              type int64 {
-                 range "min .. 2 | 10 | 20..max";
-              }
-        }
-
-        leaf revUnInteger {
-              type uint64 {
-                 range "min .. 2 | 10 | 20..max";
-              }
-        }
-    }
-
-    leaf negInt {
-          type int64 {
-         }
-    }
-
-    leaf posInt {
-          type int64 {
-         }
-    }
-
-    leaf minIntWithRange {
-          type int64 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf midIntWithRange {
-          type int64 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf maxIntWithRange {
-          type int64 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf minUInt {
-          type uint64 {
-         }
-    }
-
-    leaf maxUInt {
-          type uint64 {
-         }
-    }
-
-    leaf minUIntWithRange {
-          type uint64 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf midUIntWithRange {
-          type uint64 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf maxUIntWithRange {
-          type uint64 {
-             range "10 .. 100";
-         }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer8.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer8.yang
deleted file mode 100644
index e05c235..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer8.yang
+++ /dev/null
@@ -1,99 +0,0 @@
-module integer8 {
-
-    yang-version 1;
-
-    namespace "ydt.integer8";
-
-    prefix "integer8";
-
-    organization "ON-LAB";
-
-    description "This module defines for integer8 classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    list multiRangeValidation {
-        config false;
-        leaf integer {
-              type int8 {
-                 range "10..40 | 50..100";
-              }
-        }
-        leaf UnInteger {
-              type uint8 {
-                 range "10..40 | 50..100";
-              }
-        }
-
-        leaf revInteger {
-              type int8 {
-                 range "min .. 2 | 10 | 20..max";
-              }
-        }
-
-        leaf revUnInteger {
-              type uint8 {
-                 range "min .. 2 | 10 | 20..max";
-              }
-        }
-    }
-
-
-    leaf negInt {
-          type int8 {
-         }
-    }
-
-    leaf posInt {
-          type int8 {
-         }
-    }
-
-    leaf minIntWithRange {
-          type int8 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf midIntWithRange {
-          type int8 {
-             range "10 .. 100";
-          }
-    }
-
-    leaf maxIntWithRange {
-         type int8 {
-             range "10 .. 100";
-         }
-    }
-
-    leaf minUInt {
-         type uint8 {
-         }
-    }
-
-    leaf maxUInt {
-         type uint8 {
-         }
-    }
-
-    leaf minUIntWithRange {
-          type uint8 {
-             range "10 .. 100";
-          }
-    }
-
-    leaf midUIntWithRange {
-          type uint8 {
-             range "10 .. 100";
-          }
-    }
-
-    leaf maxUIntWithRange {
-          type uint8 {
-             range "10 .. 100";
-          }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/leafreftest.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/leafreftest.yang
deleted file mode 100644
index 5191b72..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/leafreftest.yang
+++ /dev/null
@@ -1,71 +0,0 @@
-module leafreftest {
-
-    yang-version 1;
-
-    namespace "ydt.leafreftest";
-
-    prefix "uniontest";
-
-    organization "ON-LAB";
-
-    description "This module defines for union classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    leaf middlename  {
-        type string;
-    }
-
-    list leafrefList {
-        config false;
-        leaf id {
-            type leafref {
-                path "/middlename";
-            }
-        }
-    }
-
-    typedef percent {
-        type leafref {
-            path "/middlename";
-        }
-    }
-
-    leaf name {
-        type percent;
-    }
-
-    grouping greeting {
-        leaf surname {
-            type leafref {
-                path "/middlename";
-            }
-        }
-    }
-
-    container cont1 {
-        uses greeting;
-    }
-
-    augment "/cont1" {
-        leaf lastname {
-            type leafref {
-                path "/middlename";
-            }
-        }
-    }
-
-    container food {
-        choice snack {
-            case sportsarena {
-                leaf pretzel {
-                    type leafref {
-                        path "/middlename";
-                    }
-                }
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/logisticsmanager.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/logisticsmanager.yang
deleted file mode 100644
index 7198611..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/logisticsmanager.yang
+++ /dev/null
@@ -1,16 +0,0 @@
-module logisticsmanager {
-
-    yang-version 1;
-
-    namespace "ydt.logistics-manager";
-
-    prefix "root";
-
-    organization "ON-LAB";
-
-    description "This module defines for logistics-manager.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/materialsupervisor.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/materialsupervisor.yang
deleted file mode 100644
index 6ab16ea..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/materialsupervisor.yang
+++ /dev/null
@@ -1,29 +0,0 @@
-module materialsupervisor {
-
-    yang-version 1;
-
-    namespace "ydt.material-supervisor";
-
-    prefix "material";
-
-    organization "ON-LAB";
-
-    description "This module defines for material-supervisor.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    list supervisor {
-        key "name";
-        leaf name {
-            type string;
-            description "name of material-supervisor";
-        }
-
-        leaf departmentId {
-            type string;
-            description "name of department";
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/merchandisersupervisor.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/merchandisersupervisor.yang
deleted file mode 100644
index db40c7e..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/merchandisersupervisor.yang
+++ /dev/null
@@ -1,21 +0,0 @@
-module merchandisersupervisor {
-
-    yang-version 1;
-
-    namespace "ydt.Merchandiser-supervisor";
-
-    prefix "merchandiser";
-
-    organization "ON-LAB";
-
-    description "This module defines for Merchandiser-supervisor.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    leaf supervisor {
-        type string;
-        description "name of the Merchandiser-supervisor.";
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/purchasingsupervisor.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/purchasingsupervisor.yang
deleted file mode 100644
index a52b4c5..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/purchasingsupervisor.yang
+++ /dev/null
@@ -1,27 +0,0 @@
-module purchasingsupervisor {
-
-    yang-version 1;
-
-    namespace "ydt.purchasing-supervisor";
-
-    prefix "purchasing";
-
-    organization "ON-LAB";
-
-    description "This module defines for purchasing-supervisor.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    container supervisor {
-        leaf purchasing-specialist {
-            type string;
-            description "name of the purchasing-specialist person";
-        }
-        leaf support {
-            type string;
-            description "name of the support person";
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/rootlist.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/rootlist.yang
deleted file mode 100644
index ef5a0a0..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/rootlist.yang
+++ /dev/null
@@ -1,111 +0,0 @@
-module rootlist {
-
-    yang-version 1;
-
-    namespace "ydt.rootlist";
-
-    prefix "rootlist";
-
-    organization "ON-LAB";
-
-    description "This submodule defines for root.";
-
-    revision "2016-06-24" {
-        description "Initial revision.";
-    }
-/*
-                 +--------------+---------+-------------+
-                 | substatement | section | cardinality |
-                 +--------------+---------+-------------+
-                 | anyxml       | 7.10    | 0..n        |
-                 | choice       | 7.9     | 0..n        |
-                 | config       | 7.19.1  | 0..1        |
-                 | container    | 7.5     | 0..n        |
-                 | description  | 7.19.3  | 0..1        |
-                 | grouping     | 7.11    | 0..n        |
-                 | if-feature   | 7.18.2  | 0..n        |
-                 | key          | 7.8.2   | 0..1        |
-                 | leaf         | 7.6     | 0..n        |
-                 | leaf-list    | 7.7     | 0..n        |
-                 | list         | 7.8     | 0..n        |
-                 | max-elements | 7.7.4   | 0..1        |
-                 | min-elements | 7.7.3   | 0..1        |
-                 | must         | 7.5.3   | 0..n        |
-                 | ordered-by   | 7.7.5   | 0..1        |
-                 | reference    | 7.19.4  | 0..1        |
-                 | status       | 7.19.2  | 0..1        |
-                 | typedef      | 7.3     | 0..n        |
-                 | unique       | 7.8.3   | 0..n        |
-                 | uses         | 7.12    | 0..n        |
-                 | when         | 7.19.5  | 0..1        |
-                 +--------------+---------+-------------+
-*/
-
-    list listwithoutcontainer {
-        key "invalidinterval";
-        min-elements 1;  //-- comment
-        leaf invalidinterval {
-            type "uint16";
-            units "seconds";
-            description "Interval before a route is declared invalid";
-            config true;
-            mandatory true;
-            status current;
-            reference "RFC 6020";
-        }
-    }
-
-     list listwithcontainer {
-            key "invalid invalid1";
-            max-elements 3;
-            min-elements 1;
-            reference "list reference";
-            unique "invalid";
-            leaf-list invalidinterval {
-                type "uint16";
-                units "seconds";
-                description "Interval before a route is declared invalid";
-                config false;
-                status current;
-                reference "RFC 6020";
-            }
-
-            container interface {
-                leaf invalidinterval {
-                    type "uint16";
-                    units "seconds";
-                    status current;
-                    mandatory true;
-                    reference "RFC 6020";
-                }
-
-                leaf invalid {
-                    type "uint16";
-                    units "seconds";
-                    description "Interval before a route is declared invalid";
-                    default "16";
-                    status current;
-                    reference "RFC 6020";
-                }
-
-            }
-
-            leaf invalid {
-                type "uint16";
-                units "seconds";
-                description "Interval before a route is declared invalid";
-                mandatory true;
-                status current;
-                reference "RFC 6020";
-            }
-
-            leaf invalid1 {
-                type "uint16";
-                units "seconds";
-                description "Interval before a route is declared invalid";
-                mandatory true;
-                status current;
-                reference "RFC 6020";
-            }
-     }
-}
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/tradingsupervisor.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/tradingsupervisor.yang
deleted file mode 100644
index a6c8681..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/tradingsupervisor.yang
+++ /dev/null
@@ -1,21 +0,0 @@
-module tradingsupervisor {
-
-    yang-version 1;
-
-    namespace "ydt.trading-supervisor";
-
-    prefix "trading";
-
-    organization "ON-LAB";
-
-    description "This module defines for trading-supervisor.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    leaf supervisor {
-        type string;
-        description "name of the trading-supervisor";
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/uniontest.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/uniontest.yang
deleted file mode 100644
index 4ab5801..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/uniontest.yang
+++ /dev/null
@@ -1,92 +0,0 @@
-module uniontest {
-
-    yang-version 1;
-
-    namespace "ydt.uniontest";
-
-    prefix "uniontest";
-
-    organization "ON-LAB";
-
-    description "This module defines for union classifier.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    list unionList {
-        config false;
-        leaf id {
-            type union {
-                type int8;
-                type binary;
-            }
-        }
-    }
-
-    typedef percent {
-        type union {
-            type int8;
-            type bits {
-                bit bit0 {
-                    position 0;
-                }
-                bit bit1 {
-                    position 1;
-                }
-                bit bit2 {
-                    position 2;
-                }
-            }
-        }
-    }
-
-    leaf name {
-        type percent;
-    }
-
-    grouping greeting {
-        leaf surname {
-            type union {
-                type int8;
-                type string;
-            }
-        }
-    }
-
-    container cont1 {
-        uses greeting;
-    }
-
-    augment "/cont1" {
-        leaf lastname {
-            type union {
-                type int8;
-                type bits {
-                    bit bit0 {
-                        position 0;
-                    }
-                    bit bit1 {
-                        position 1;
-                    }
-                    bit bit2 {
-                        position 2;
-                    }
-                }
-            }
-        }
-    }
-
-    container food {
-        choice snack {
-            case sportsarena {
-                leaf pretzel {
-                    type union {
-                        type int8;
-                        type binary;
-                    }
-                }
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/warehousesupervisor.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/warehousesupervisor.yang
deleted file mode 100644
index 5145824..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/warehousesupervisor.yang
+++ /dev/null
@@ -1,21 +0,0 @@
-module warehousesupervisor {
-
-    yang-version 1;
-
-    namespace "ydt.warehouse-supervisor";
-
-    prefix "warehouse";
-
-    organization "ON-LAB";
-
-    description "This module defines for warehouse-supervisor.";
-
-    revision "2016-05-24" {
-        description "Initial revision.";
-    }
-
-    leaf-list supervisor {
-        type string;
-        description "name of the warehouse-supervisor's";
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-inet-types.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-inet-types.yang
deleted file mode 100644
index 6b994bb..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-inet-types.yang
+++ /dev/null
@@ -1,454 +0,0 @@
-  module yms-ietf-inet-types {
-
-    yang-version 1;
-
-    namespace
-      "urn:ietf:params:xml:ns:yang:ietf-inet-types";
-
-    prefix inet;
-
-    organization
-      "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-    contact
-      "WG Web:   <http://tools.ietf.org/wg/netmod/>
-    WG List:  <mailto:netmod@ietf.org>
-
-    WG Chair: David Kessens
-              <mailto:david.kessens@nsn.com>
-
-    WG Chair: Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>
-
-    Editor:   Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>";
-
-    description
-      "This module contains a collection of generally useful derived
-    YANG data types for Internet addresses and related things.
-
-    Copyright (c) 2013 IETF Trust and the persons identified as
-    authors of the code.  All rights reserved.
-
-    Redistribution and use in source and binary forms, with or
-    without modification, is permitted pursuant to, and subject
-    to the license terms contained in, the Simplified BSD License
-    set forth in Section 4.c of the IETF Trust's Legal Provisions
-    Relating to IETF Documents
-    (http://trustee.ietf.org/license-info).
-
-    This version of this YANG module is part of RFC 6991; see
-    the RFC itself for full legal notices.";
-
-    revision "2013-07-15" {
-      description
-        "This revision adds the following new data types:
-      - ip-address-no-zone
-      - ipv4-address-no-zone
-      - ipv6-address-no-zone";
-      reference
-        "RFC 6991: Common YANG Data Types";
-
-    }
-
-    revision "2010-09-24" {
-      description "Initial revision.";
-      reference
-        "RFC 6021: Common YANG Data Types";
-
-    }
-
-
-    typedef ip-version {
-      type enumeration {
-        enum "unknown" {
-          value 0;
-          description
-            "An unknown or unspecified version of the Internet
-          protocol.";
-        }
-        enum "ipv4" {
-          value 1;
-          description
-            "The IPv4 protocol as defined in RFC 791.";
-        }
-        enum "ipv6" {
-          value 2;
-          description
-            "The IPv6 protocol as defined in RFC 2460.";
-        }
-      }
-      description
-        "This value represents the version of the IP protocol.
-
-      In the value set and its semantics, this type is equivalent
-      to the InetVersion textual convention of the SMIv2.";
-      reference
-        "RFC  791: Internet Protocol
-         RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
-         RFC 4001: Textual Conventions for Internet Network Addresses";
-
-    }
-
-    typedef dscp {
-      type uint8 {
-        range "0..63";
-      }
-      description
-        "The dscp type represents a Differentiated Services Code Point
-      that may be used for marking packets in a traffic stream.
-      In the value set and its semantics, this type is equivalent
-      to the Dscp textual convention of the SMIv2.";
-      reference
-        "RFC 3289: Management Information Base for the Differentiated
-        	  Services Architecture
-         RFC 2474: Definition of the Differentiated Services Field
-        	  (DS Field) in the IPv4 and IPv6 Headers
-         RFC 2780: IANA Allocation Guidelines For Values In
-        	  the Internet Protocol and Related Headers";
-
-    }
-
-    typedef ipv6-flow-label {
-      type uint32 {
-        range "0..1048575";
-      }
-      description
-        "The ipv6-flow-label type represents the flow identifier or Flow
-      Label in an IPv6 packet header that may be used to
-      discriminate traffic flows.
-
-      In the value set and its semantics, this type is equivalent
-      to the IPv6FlowLabel textual convention of the SMIv2.";
-      reference
-        "RFC 3595: Textual Conventions for IPv6 Flow Label
-         RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
-
-    }
-
-    typedef port-number {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "The port-number type represents a 16-bit port number of an
-      Internet transport-layer protocol such as UDP, TCP, DCCP, or
-      SCTP.  Port numbers are assigned by IANA.  A current list of
-      all assignments is available from <http://www.iana.org/>.
-
-      Note that the port number value zero is reserved by IANA.  In
-      situations where the value zero does not make sense, it can
-      be excluded by subtyping the port-number type.
-      In the value set and its semantics, this type is equivalent
-      to the InetPortNumber textual convention of the SMIv2.";
-      reference
-        "RFC  768: User Datagram Protocol
-         RFC  793: Transmission Control Protocol
-         RFC 4960: Stream Control Transmission Protocol
-         RFC 4340: Datagram Congestion Control Protocol (DCCP)
-         RFC 4001: Textual Conventions for Internet Network Addresses";
-
-    }
-
-    typedef as-number {
-      type uint32;
-      description
-        "The as-number type represents autonomous system numbers
-      which identify an Autonomous System (AS).  An AS is a set
-      of routers under a single technical administration, using
-      an interior gateway protocol and common metrics to route
-      packets within the AS, and using an exterior gateway
-      protocol to route packets to other ASes.  IANA maintains
-      the AS number space and has delegated large parts to the
-      regional registries.
-
-      Autonomous system numbers were originally limited to 16
-      bits.  BGP extensions have enlarged the autonomous system
-      number space to 32 bits.  This type therefore uses an uint32
-      base type without a range restriction in order to support
-      a larger autonomous system number space.
-
-      In the value set and its semantics, this type is equivalent
-      to the InetAutonomousSystemNumber textual convention of
-      the SMIv2.";
-      reference
-        "RFC 1930: Guidelines for creation, selection, and registration
-        	  of an Autonomous System (AS)
-         RFC 4271: A Border Gateway Protocol 4 (BGP-4)
-         RFC 4001: Textual Conventions for Internet Network Addresses
-         RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
-        	  Number Space";
-
-    }
-
-    typedef ip-address {
-      type union {
-        type ipv4-address;
-        type ipv6-address;
-      }
-      description
-        "The ip-address type represents an IP address and is IP
-      version neutral.  The format of the textual representation
-      implies the IP version.  This type supports scoped addresses
-      by allowing zone identifiers in the address format.";
-      reference
-        "RFC 4007: IPv6 Scoped Address Architecture";
-
-    }
-
-    typedef ipv4-address {
-      type string {
-        pattern
-          '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\p{N}\p{L}]+)?';
-      }
-      description
-        "The ipv4-address type represents an IPv4 address in
-       dotted-quad notation.  The IPv4 address may include a zone
-       index, separated by a % sign.
-
-       The zone index is used to disambiguate identical address
-       values.  For link-local addresses, the zone index will
-       typically be the interface index number or the name of an
-       interface.  If the zone index is not present, the default
-       zone of the device will be used.
-
-       The canonical format for the zone index is the numerical
-       format";
-    }
-
-    typedef ipv6-address {
-      type string {
-        pattern
-          '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\p{N}\p{L}]+)?';
-        pattern
-          '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?';
-      }
-      description
-        "The ipv6-address type represents an IPv6 address in full,
-      mixed, shortened, and shortened-mixed notation.  The IPv6
-      address may include a zone index, separated by a % sign.
-
-      The zone index is used to disambiguate identical address
-      values.  For link-local addresses, the zone index will
-      typically be the interface index number or the name of an
-      interface.  If the zone index is not present, the default
-      zone of the device will be used.
-
-
-
-      The canonical format of IPv6 addresses uses the textual
-      representation defined in Section 4 of RFC 5952.  The
-      canonical format for the zone index is the numerical
-      format as described in Section 11.2 of RFC 4007.";
-      reference
-        "RFC 4291: IP Version 6 Addressing Architecture
-         RFC 4007: IPv6 Scoped Address Architecture
-         RFC 5952: A Recommendation for IPv6 Address Text
-        	  Representation";
-
-    }
-
-    typedef ip-address-no-zone {
-      type union {
-        type ipv4-address-no-zone;
-        type ipv6-address-no-zone;
-      }
-      description
-        "The ip-address-no-zone type represents an IP address and is
-      IP version neutral.  The format of the textual representation
-      implies the IP version.  This type does not support scoped
-      addresses since it does not allow zone identifiers in the
-      address format.";
-      reference
-        "RFC 4007: IPv6 Scoped Address Architecture";
-
-    }
-
-    typedef ipv4-address-no-zone {
-      type ipv4-address {
-        pattern '[0-9\.]*';
-      }
-      description
-        "An IPv4 address without a zone index.  This type, derived from
-       ipv4-address, may be used in situations where the zone is
-       known from the context and hence no zone index is needed.";
-    }
-
-    typedef ipv6-address-no-zone {
-      type ipv6-address {
-        pattern '[0-9a-fA-F:\.]*';
-      }
-      description
-        "An IPv6 address without a zone index.  This type, derived from
-       ipv6-address, may be used in situations where the zone is
-       known from the context and hence no zone index is needed.";
-      reference
-        "RFC 4291: IP Version 6 Addressing Architecture
-         RFC 4007: IPv6 Scoped Address Architecture
-         RFC 5952: A Recommendation for IPv6 Address Text
-        	  Representation";
-
-    }
-
-    typedef ip-prefix {
-      type union {
-        type ipv4-prefix;
-        type ipv6-prefix;
-      }
-      description
-        "The ip-prefix type represents an IP prefix and is IP
-      version neutral.  The format of the textual representations
-      implies the IP version.";
-    }
-
-    typedef ipv4-prefix {
-      type string {
-        pattern
-          '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))';
-      }
-      description
-        "The ipv4-prefix type represents an IPv4 address prefix.
-      The prefix length is given by the number following the
-      slash character and must be less than or equal to 32.
-
-      A prefix length value of n corresponds to an IP address
-      mask that has n contiguous 1-bits from the most
-      significant bit (MSB) and all other bits set to 0.
-
-      The canonical format of an IPv4 prefix has all bits of
-      the IPv4 address set to zero that are not part of the
-      IPv4 prefix.";
-    }
-
-    typedef ipv6-prefix {
-      type string {
-        pattern
-          '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
-        pattern
-          '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(/.+)';
-      }
-      description
-        "The ipv6-prefix type represents an IPv6 address prefix.
-      The prefix length is given by the number following the
-      slash character and must be less than or equal to 128.
-
-      A prefix length value of n corresponds to an IP address
-      mask that has n contiguous 1-bits from the most
-      significant bit (MSB) and all other bits set to 0.
-
-      The IPv6 address should have all bits that do not belong
-      to the prefix set to zero.
-
-      The canonical format of an IPv6 prefix has all bits of
-      the IPv6 address set to zero that are not part of the
-      IPv6 prefix.  Furthermore, the IPv6 address is represented
-      as defined in Section 4 of RFC 5952.";
-      reference
-        "RFC 5952: A Recommendation for IPv6 Address Text
-        	  Representation";
-
-    }
-
-    typedef domain-name {
-      type string {
-        length "1..253";
-        pattern
-          '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)|\.';
-      }
-      description
-        "The domain-name type represents a DNS domain name.  The
-      name SHOULD be fully qualified whenever possible.
-
-      Internet domain names are only loosely specified.  Section
-      3.5 of RFC 1034 recommends a syntax (modified in Section
-      2.1 of RFC 1123).  The pattern above is intended to allow
-      for current practice in domain name use, and some possible
-      future expansion.  It is designed to hold various types of
-      domain names, including names used for A or AAAA records
-      (host names) and other records, such as SRV records.  Note
-      that Internet host names have a stricter syntax (described
-      in RFC 952) than the DNS recommendations in RFCs 1034 and
-      1123, and that systems that want to store host names in
-      schema nodes using the domain-name type are recommended to
-      adhere to this stricter standard to ensure interoperability.
-
-      The encoding of DNS names in the DNS protocol is limited
-      to 255 characters.  Since the encoding consists of labels
-      prefixed by a length bytes and there is a trailing NULL
-      byte, only 253 characters can appear in the textual dotted
-      notation.
-
-      The description clause of schema nodes using the domain-name
-      type MUST describe when and how these names are resolved to
-      IP addresses.  Note that the resolution of a domain-name value
-      may require to query multiple DNS records (e.g., A for IPv4
-      and AAAA for IPv6).  The order of the resolution process and
-      which DNS record takes precedence can either be defined
-      explicitly or may depend on the configuration of the
-      resolver.
-
-      Domain-name values use the US-ASCII encoding.  Their canonical
-      format uses lowercase US-ASCII characters.  Internationalized
-      domain names MUST be A-labels as per RFC 5890.";
-      reference
-        "RFC  952: DoD Internet Host Table Specification
-         RFC 1034: Domain Names - Concepts and Facilities
-         RFC 1123: Requirements for Internet Hosts -- Application
-        	  and Support
-         RFC 2782: A DNS RR for specifying the location of services
-        	  (DNS SRV)
-         RFC 5890: Internationalized Domain Names in Applications
-        	  (IDNA): Definitions and Document Framework";
-
-    }
-
-    typedef host {
-      type union {
-        type ip-address;
-        type domain-name;
-      }
-      description
-        "The host type represents either an IP address or a DNS
-      domain name.";
-    }
-
-    typedef uri {
-      type string;
-      description
-        "The uri type represents a Uniform Resource Identifier
-      (URI) as defined by STD 66.
-
-      Objects using the uri type MUST be in US-ASCII encoding,
-      and MUST be normalized as described by RFC 3986 Sections
-      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
-      percent-encoding is removed, and all case-insensitive
-      characters are set to lowercase except for hexadecimal
-      digits, which are normalized to uppercase as described in
-      Section 6.2.2.1.
-
-      The purpose of this normalization is to help provide
-      unique URIs.  Note that this normalization is not
-      sufficient to provide uniqueness.  Two URIs that are
-      textually distinct after this normalization may still be
-      equivalent.
-
-      Objects using the uri type may restrict the schemes that
-      they permit.  For example, 'data:' and 'urn:' schemes
-      might not be appropriate.
-
-      A zero-length URI is not a valid URI.  This can be used to
-      express 'URI absent' where required.
-
-      In the value set and its semantics, this type is equivalent
-      to the Uri SMIv2 textual convention defined in RFC 5017.";
-      reference
-        "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
-         RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
-        	  Group: Uniform Resource Identifiers (URIs), URLs,
-        	  and Uniform Resource Names (URNs): Clarifications
-        	  and Recommendations
-         RFC 5017: MIB Textual Conventions for Uniform Resource
-        	  Identifiers (URIs)";
-
-    }
-  }  // module ietf-inet-types
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-network.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-network.yang
deleted file mode 100644
index dc65182..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-network.yang
+++ /dev/null
@@ -1,216 +0,0 @@
-   module yms-ietf-network {
-     yang-version 1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-network";
-     prefix nd;
-
-     import yms-ietf-inet-types {
-       prefix inet;
-     }
-
-     organization
-       "IETF I2RS (Interface to the Routing System) Working Group";
-
-     contact
-       "WG Web:    <http://tools.ietf.org/wg/i2rs/>
-        WG List:   <mailto:i2rs@ietf.org>
-
-        WG Chair:  Susan Hares
-                   <mailto:shares@ndzh.com>
-
-        WG Chair:  Jeffrey Haas
-                   <mailto:jhaas@pfrc.org>
-
-        Editor:    Alexander Clemm
-                   <mailto:alex@cisco.com>
-
-        Editor:    Jan Medved
-                   <mailto:jmedved@cisco.com>
-
-        Editor:    Robert Varga
-                   <mailto:rovarga@cisco.com>
-
-        Editor:    Tony Tkacik
-                   <mailto:ttkacik@cisco.com>
-
-        Editor:    Nitin Bahadur
-                   <mailto:nitin_bahadur@yahoo.com>
-
-        Editor:    Hariharan Ananthakrishnan
-                   <mailto:hari@packetdesign.com>";
-
-     description
-       "This module defines a common base model for a collection
-        of nodes in a network. Node definitions are further used
-        in network topologies and inventories.
-
-        Copyright (c) 2015 IETF Trust and the persons identified as
-        authors of the code.  All rights reserved.
-
-        Redistribution and use in source and binary forms, with or
-        without modification, is permitted pursuant to, and subject
-        to the license terms contained in, the Simplified BSD License
-        set forth in Section 4.c of the IETF Trust's Legal Provisions
-        Relating to IETF Documents
-        (http://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of
-        draft-ietf-i2rs-yang-network-topo-02;
-        see the RFC itself for full legal notices.
-
-        NOTE TO RFC EDITOR: Please replace above reference to
-        draft-ietf-i2rs-yang-network-topo-02 with RFC
-        number when published (i.e. RFC xxxx).";
-
-     revision 2015-12-08 {
-       description
-         "Initial revision.
-          NOTE TO RFC EDITOR: Please replace the following reference
-          to draft-ietf-i2rs-yang-network-topo-02 with
-          RFC number when published (i.e. RFC xxxx).";
-       reference
-         "draft-ietf-i2rs-yang-network-topo-02";
-     }
-
-     typedef node-id {
-       type inet:uri;
-       description
-         "Identifier for a node.";
-     }
-
-     typedef network-id {
-       type inet:uri;
-       description
-         "Identifier for a network.";
-     }
-     grouping network-ref {
-       description
-         "Contains the information necessary to reference a network,
-          for example an underlay network.";
-       leaf network-ref {
-         type leafref {
-           path "/nd:networks/nd:network/nd:network-id";
-         require-instance false;
-         }
-         description
-           "Used to reference a network, for example an underlay
-            network.";
-       }
-     }
-
-     grouping node-ref {
-       description
-         "Contains the information necessary to reference a node.";
-       leaf node-ref {
-         type leafref {
-           path "/nd:networks/nd:network[nd:network-id=current()/../"+
-             "network-ref]/nd:node/nd:node-id";
-           require-instance false;
-         }
-         description
-           "Used to reference a node.
-            Nodes are identified relative to the network they are
-            contained in.";
-       }
-       uses network-ref;
-     }
-
-     container networks {
-       description
-         "Serves as top-level container for a list of networks.";
-       list network {
-         key "network-id";
-         description
-           "Describes a network.
-            A network typically contains an inventory of nodes,
-            topological information (augmented through
-            network-topology model), as well as layering
-            information.";
-         container network-types {
-           description
-             "Serves as an augmentation target.
-              The network type is indicated through corresponding
-              presence containers augmented into this container.";
-         }
-         leaf network-id {
-           type network-id;
-           description
-             "Identifies a network.";
-         }
-         list supporting-network {
-           key "network-ref";
-           description
-             "An underlay network, used to represent layered network
-              topologies.";
-           leaf network-ref {
-             type leafref {
-               path "/networks/network/network-id";
-             require-instance false;
-             }
-             description
-               "References the underlay network.";
-           }
-         }
-         list node {
-           key "node-id";
-           description
-             "The inventory of nodes of this network.";
-           leaf node-id {
-             type node-id;
-             description
-               "Identifies a node uniquely within the containing
-                network.";
-           }
-           list supporting-node {
-             key "network-ref node-ref";
-             description
-               "Represents another node, in an underlay network, that
-                this node is supported by.  Used to represent layering
-                structure.";
-             leaf network-ref {
-               type leafref {
-                 path "../../../supporting-network/network-ref";
-               require-instance false;
-               }
-               description
-                 "References the underlay network that the
-                  underlay node is part of.";
-             }
-             leaf node-ref {
-               type leafref {
-                 path "/networks/network/node/node-id";
-               require-instance false;
-               }
-               description
-                 "References the underlay node itself.";
-             }
-           }
-         }
-       }
-     }
-     container networks-state {
-       config false;
-       description
-         "Serves as top-level container for a list of state information
-          for networks";
-       list network {
-         key "network-ref";
-         description
-           "Data nodes representing operational data and state of
-            networks.
-            An instance is automatically created for every network
-            in the corresponding list under the networks container.";
-         uses network-ref;
-         leaf server-provided {
-           type boolean;
-           description
-             "Indicates whether the information concerning this
-              particular network is populated by the server
-              (server-provided true, the general case for network
-              information discovered from the server),
-              or whether it is configured by a client
-              (server-provided true, possible e.g. for
-              service overlays managed through a controller).";
-         }
-       }
-     }
-   }
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-schedule.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-schedule.yang
deleted file mode 100644
index 6b278b7..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-schedule.yang
+++ /dev/null
@@ -1,64 +0,0 @@
-   module yms-ietf-schedule {
-     yang-version 1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-schedule";
-     // replace with IANA namespace when assigned
-
-     prefix "sch";
-
-     import yms-ietf-yang-types {
-       prefix "yang";
-     }
-
-     organization "TBD";
-     contact "TBD";
-     description
-       "The model allows time scheduling parameters to be specified.";
-
-     revision "2016-03-01" {
-       description "Initial revision";
-       reference "TBD";
-     }
-
-     /*
-      * Groupings
-      */
-
-     grouping schedules {
-       description
-         "A list of schedules defining when a particular
-          configuration takes effect.";
-       container schedules {
-         description
-           "Container of a schedule list defining when a particular
-            configuration takes effect.";
-         list schedule {
-           key "schedule-id";
-           description "A list of schedule elements.";
-
-           leaf schedule-id {
-             type uint32;
-             description "Identifies the schedule element.";
-           }
-           leaf start {
-             type yang:date-and-time;
-             description "Start time.";
-           }
-           leaf schedule-duration {
-             type string {
-               pattern
-                 'P(\d+Y)?(\d+M)?(\d+W)?(\d+D)?T(\d+H)?(\d+M)?(\d+S)?';
-             }
-             description "Schedule duration in ISO 8601 format.";
-           }
-           leaf repeat-interval {
-             type string {
-               pattern
-                 'R\d*/P(\d+Y)?(\d+M)?(\d+W)?(\d+D)?T(\d+H)?(\d+M)?'
-                 + '(\d+S)?';
-             }
-             description "Repeat interval in ISO 8601 format.";
-           }
-         }
-       }
-     } // schedules
-   }
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-te-topology.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-te-topology.yang
deleted file mode 100644
index 8815682..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-te-topology.yang
+++ /dev/null
@@ -1,1112 +0,0 @@
-module yms-ietf-te-topology {
- yang-version 1;
- namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology";
- // replace with IANA namespace when assigned
-
- prefix "tet";
-
- import yms-ietf-inet-types {
-   prefix "inet";
- }
-
- import yms-ietf-schedule {
-   prefix "sch";
- }
-
- import yms-ietf-te-types {
-   prefix "te-types";
- }
-
- import yms-ietf-network {
-   prefix "nw";
- }
-
- import yms-network-topology {
-   prefix "nt";
- }
-
- organization
-   "Traffic Engineering Architecture and Signaling (TEAS)
-    Working Group";
-
- contact
-   "WG Web:   <http://tools.ietf.org/wg/teas/>
-    WG List:  <mailto:teas@ietf.org>
-    WG Chair: Lou Berger
-              <mailto:lberger@labn.net>
-    WG Chair: Vishnu Pavan Beeram
-              <mailto:vbeeram@juniper.net>
-    Editor:   Xufeng Liu
-              <mailto:xliu@kuatrotech.com>
-    Editor:   Igor Bryskin
-              <mailto:Igor.Bryskin@huawei.com>
-    Editor:   Vishnu Pavan Beeram
-              <mailto:vbeeram@juniper.net>
-    Editor:   Tarek Saad
-              <mailto:tsaad@cisco.com>
-    Editor:   Himanshu Shah
-              <mailto:hshah@ciena.com>
-    Editor:   Oscar Gonzalez De Dios
-              <mailto:oscar.gonzalezdedios@telefonica.com>";
-
- description "TE topology model";
-
- revision "2016-03-17" {
-   description "Initial revision";
-   reference "TBD";
- }
-
- /*
-  * Features
-  */
-
- feature configuration-schedule {
-   description
-     "This feature indicates that the system supports
-      configuration scheduling.";
- }
-
- feature te-topology-hierarchy {
-   description
-     "This feature indicates that the system allows underlay
-      and/or overlay TE topology hierarchy.";
- }
-
- feature te-performance-metric {
-   description
-     "This feature indicates that the system supports
-      TE performance metric defined in
-      RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.";
- }
-
- feature template {
-   description
-     "This feature indicates that the system supports
-      template configuration.";
- }
-
- /*
-  * Typedefs
-  */
- typedef performance-metric-normality {
-   type enumeration {
-     enum "unknown" {
-       value 0;
-       description
-         "Unknown.";
-     }
-     enum "normal" {
-       value 1;
-       description
-         "Normal.";
-     }
-     enum "abnormal" {
-       value 2;
-       description
-         "Abnormal. The anomalous bit is set.";
-     }
-   }
-   description
-     "Indicates whether a performance metric is normal, abnormal, or
-      unknown.";
-   reference
-     "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.";
- }
-
- typedef te-admin-status {
-   type enumeration {
-     enum up {
-       description
-         "Enabled.";
-     }
-     enum down {
-       description
-         "Disabled.";
-     }
-     enum testing {
-       description
-         "In some test mode.";
-     }
-     enum preparing-maintenance {
-       description
-         "Resource is disabled in the control plane to prepare for
-          graceful shutdown for maintenance purposes.";
-       reference
-         "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS
-          Traffic Engineering Networks";
-     }
-     enum maintenance {
-       description
-         "Resource is disabled in the data plane for maintenance
-          purposes.";
-     }
-   }
-   description
-     "Defines a type representing the administrative status of
-      a TE resource.";
- }
- typedef te-global-id {
-   type uint32;
-   description
-     "An identifier to uniquely identify an operator, which can be
-      either a provider or a client.
-      The definition of this type is taken from RFC6370 and RFC5003.
-      This attribute type is used solely to provide a globally
-      unique context for TE topologies.";
- }
-
- typedef te-link-access-type {
-   type enumeration {
-     enum point-to-point {
-       description
-         "The link is point-to-point.";
-     }
-     enum multi-access {
-       description
-         "The link is multi-access, including broacast and NBMA.";
-     }
-   }
-   description
-     "Defines a type representing the access type of a TE link.";
-   reference
-     "RFC3630: Traffic Engineering (TE) Extensions to OSPF
-      Version 2.";
- }
-
- typedef te-node-id {
-   type inet:ip-address;
-   description
-     "An identifier for a node in a topology.
-      The identifier is represented as an IPv4 or IPv6 address.
-      This attribute is mapped to Router ID in
-      RFC3630, RFC5329, RFC5305, and RFC 6119.";
- }
-
- typedef te-oper-status {
-   type enumeration {
-     enum up {
-       description
-       "Operational up.";
-     }
-     enum down {
-       description
-       "Operational down.";
-     }
-     enum testing {
-       description
-       "In some test mode.";
-     }
-     enum unknown {
-       description
-       "Status cannot be determined for some reason.";
-     }
-     enum preparing-maintenance {
-       description
-         "Resource is disabled in the control plane to prepare for
-          graceful shutdown for maintenance purposes.";
-       reference
-         "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS
-          Traffic Engineering Networks";
-     }
-     enum maintenance {
-       description
-         "Resource is disabled in the data plane for maintenance
-          purposes.";
-     }
-   }
-   description
-     "Defines a type representing the operational status of
-      a TE resource.";
- }
-
- typedef te-recovery-status {
-   type enumeration {
-     enum normal {
-       description
-         "Both the recovery and working spans are fully
-          allocated and active, data traffic is being
-          transported over (or selected from) the working
-          span, and no trigger events are reported.";
-     }
-     enum recovery-started {
-       description
-         "The recovery action has been started, but not completed.";
-     }
-     enum recovery-succeeded {
-       description
-         "The recovery action has succeeded. The working span has
-          reported a failure/degrade condition and the user traffic
-          is being transported (or selected) on the recovery span.";
-     }
-     enum recovery-failed {
-       description
-         "The recovery action has failed.";
-     }
-     enum reversion-started {
-       description
-         "The reversion has started.";
-     }
-     enum reversion-failed {
-       description
-         "The reversion has failed.";
-     }
-     enum recovery-unavailable {
-       description
-         "The recovery is unavailable -- either as a result of an
-          operator Lockout command or a failure condition detected
-          on the recovery span.";
-     }
-     enum recovery-admin {
-       description
-         "The operator has issued a command switching the user
-          traffic to the recovery span.";
-     }
-     enum wait-to-restore {
-       description
-         "The recovery domain is recovering from a failuer/degrade
-          condition on the working span that is being controlled by
-          the Wait-to-Restore (WTR) timer.";
-     }
-   }
- }
-
- typedef te-template-name {
-   type string {
-     pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
-   }
- }
-
- typedef te-topology-event-type {
-   type enumeration {
-     enum "add" {
-       value 0;
-     }
-     enum "remove" {
-       value 1;
-     }
-     enum "update" {
-       value 2;
-     }
-   }
- } // te-topology-event-type
- typedef te-topology-id {
-   type string {
-     pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
-   }
- }
-
- typedef te-tp-id {
-   type union {
-     type uint32;          // Unnumbered
-     type inet:ip-address; // IPv4 or IPv6 address
-   }
- }
-
- /*
-  * Identities
-  */
-
- /*
-  * Groupings
-  */
- grouping information-source-attributes {
-   leaf information-source {
-     type enumeration {
-       enum "unknown";
-       enum "locally-configured";
-       enum "ospfv2";
-       enum "ospfv3";
-       enum "isis";
-       enum "system-processed";
-       enum "other";
-     }
-   }
-   container information-source-state {
-     leaf credibility-preference {
-       type uint16;
-     }
-     container topology {
-       uses te-topology-ref;
-     } // topology
-     leaf routing-instance {
-       type string;
-     } // routing-information
-   }
- } // information-source-attributes
-
- grouping performance-metric-attributes {
-   leaf unidirectional-delay {
-     type uint32 {
-       range 0..16777215;
-     }
-   }
-   leaf unidirectional-min-delay {
-     type uint32 {
-       range 0..16777215;
-     }
-   }
-   leaf unidirectional-max-delay {
-     type uint32 {
-       range 0..16777215;
-     }
-   }
-   leaf unidirectional-delay-variation {
-     type uint32 {
-       range 0..16777215;
-     }
-   }
-   leaf unidirectional-packet-loss {
-     type decimal64 {
-       fraction-digits 6;
-       range "0 .. 50.331642";
-     }
-   }
-   leaf unidirectional-residual-bandwidth {
-     type decimal64 {
-       fraction-digits 2;
-     }
-   }
-   leaf unidirectional-available-bandwidth {
-     type decimal64 {
-       fraction-digits 2;
-     }
-   }
-   leaf unidirectional-utilized-bandwidth {
-     type decimal64 {
-       fraction-digits 2;
-     }
-   }
- } // performance-metric-attributes
- grouping performance-metric-normality-attributes {
-   leaf unidirectional-delay {
-     type performance-metric-normality;
-   }
-   leaf unidirectional-min-delay {
-     type performance-metric-normality;
-   }
-   leaf unidirectional-max-delay {
-     type performance-metric-normality;
-   }
-   leaf unidirectional-delay-variation {
-     type performance-metric-normality;
-   }
-   leaf unidirectional-packet-loss {
-     type performance-metric-normality;
-   }
-   leaf unidirectional-residual-bandwidth {
-     type performance-metric-normality;
-   }
-   leaf unidirectional-available-bandwidth {
-     type performance-metric-normality;
-   }
-   leaf unidirectional-utilized-bandwidth {
-     type performance-metric-normality;
-   }
- } // performance-metric-normality-attributes
-
- grouping performance-metric-throttle-container {
-   container performance-metric-throttle {
-     leaf unidirectional-delay-offset {
-       type uint32 {
-         range 0..16777215;
-       }
-     }
-     leaf measure-interval {
-       type uint32;
-       default 30;
-     }
-     leaf advertisement-interval {
-       type uint32;
-     }
-     leaf suppression-interval {
-       type uint32 {
-         range "1 .. max";
-       }
-       default 120;
-     }
-     container threshold-out {
-       uses performance-metric-attributes;
-     }
-     container threshold-in {
-       uses performance-metric-attributes;
-     }
-     container threshold-accelerated-advertisement {
-       uses performance-metric-attributes;
-     }
-   }
- } // performance-metric-throttle-container
-
- grouping te-link-augment {
-   container te {
-     presence "TE support.";
-     container config {
-       uses te-link-config;
-     } // config
-     container state {
-       config false;
-       uses te-link-config;
-       uses te-link-state-derived;
-     } // state
-   } // te
- } // te-link-augment
-
- grouping te-link-config {
-   choice bundle-stack-level {
-     case bundle {
-       container bundled-links {
-         list bundled-link {
-           key "sequence";
-           leaf sequence {
-             type uint32;
-           }
-           leaf src-tp-ref {
-             type leafref {
-               path "../../../../../../nw:node[nw:node-id = "
-                 + "current()/../../../../../nt:source/"
-                 + "nt:source-node]/"
-                 + "nt:t-point/nt:tp-id";
-               require-instance true;
-             }
-           }
-           leaf des-tp-ref {
-             type leafref {
-               path "../../../../../../nw:node[nw:node-id = "
-                 + "current()/../../../../../nt:destination/"
-                 + "nt:dest-node]/"
-                 + "nt:t-point/nt:tp-id";
-               require-instance true;
-             }
-           }
-         } // list bundled-link
-       }
-     }
-     case component {
-       container component-links {
-         list component-link {
-           key "sequence";
-           leaf sequence {
-             type uint32;
-           }
-           leaf src-interface-ref {
-             type string;
-           }
-           leaf des-interface-ref {
-             type string;
-           }
-         }
-       }
-     }
-   } // bundle-stack-level
-
-   leaf-list te-link-template {
-     if-feature template;
-     type leafref {
-       path "../../../../../te/templates/link-template/name";
-     }
-   }
-   uses te-link-config-attributes;
- } // te-link-config
-
- grouping te-link-config-attributes {
-   container te-link-attributes {
-     uses sch:schedules;
-     leaf access-type {
-       type te-link-access-type;
-     }
-     leaf is-abstract {
-       type empty;
-     }
-     leaf name {
-       type string;
-     }
-     container underlay {
-       presence
-         "Indicates the underlay exists for this link.";
-       uses te-link-underlay-attributes;
-     } // underlay
-     leaf admin-status {
-       type te-admin-status;
-       description
-         "The administrative state of the link.";
-     }
-
-     uses performance-metric-throttle-container;
-     uses te-link-info-attributes;
-   } // te-link-attributes
- } // te-link-config-attributes
-
- grouping te-link-info-attributes {
-   leaf link-index {
-     type uint64;
-   }
-   leaf administrative-group {
-     type te-types:admin-groups;
-   }
-   leaf max-link-bandwidth {
-     type decimal64 {
-       fraction-digits 2;
-     }
-   }
-   leaf max-resv-link-bandwidth {
-     type decimal64 {
-       fraction-digits 2;
-     }
-   }
-   list unreserved-bandwidth {
-     key "priority";
-     max-elements "8";
-     leaf priority {
-       type uint8 {
-         range "0..7";
-       }
-     }
-     leaf bandwidth {
-       type decimal64 {
-         fraction-digits 2;
-       }
-     }
-   }
-   leaf te-default-metric {
-     type uint32;
-   }
-   container performance-metric {
-     container measurement {
-       uses performance-metric-attributes;
-     }
-     container normality
-     {
-       uses performance-metric-normality-attributes;
-     }
-   }
-   leaf link-protection-type {
-     type enumeration {
-       enum "unprotected";
-       enum "extra-traffic";
-       enum "shared";
-       enum "1-for-1";
-       enum "1-plus-1";
-       enum "enhanced";
-     }
-   }
-   list interface-switching-capability {
-     key "switching-capability";
-     leaf switching-capability {
-       type identityref {
-         base te-types:switching-capabilities;
-       }
-     }
-     leaf encoding {
-       type identityref {
-         base te-types:lsp-encoding-types;
-       }
-     }
-     list max-lsp-bandwidth {
-       key "priority";
-       max-elements "8";
-       leaf priority {
-         type uint8 {
-           range "0..7";
-         }
-       }
-       leaf bandwidth {
-         type decimal64 {
-           fraction-digits 2;
-         }
-       }
-     }
-     container time-division-multiplex-capable {
-       leaf minimum-lsp-bandwidth {
-         type decimal64 {
-           fraction-digits 2;
-         }
-       }
-       leaf indication {
-         type enumeration {
-           enum "standard";
-           enum "arbitrary";
-         }
-       }
-     }
-     list interface-adjustment-capability {
-       key "upper-sc";
-       leaf upper-sc {
-         type identityref {
-           base te-types:switching-capabilities;
-         }
-       }
-       leaf upper-encoding {
-         type identityref {
-           base te-types:lsp-encoding-types;
-         }
-       }
-       list max-lsp-bandwidth {
-         key "priority";
-         max-elements "8";
-         leaf priority {
-           type uint8 {
-             range "0..7";
-           }
-           description "Priority.";
-         }
-         leaf bandwidth {
-           type decimal64 {
-             fraction-digits 2;
-           }
-         }
-       }
-     } // interface-adjustment-capability
-   } // interface-switching-capability
-   container te-srlgs {
-     leaf-list values {
-       type te-types:srlg;
-     }
-   }
- } // te-link-info-attributes
-
- grouping te-link-state-derived {
-   leaf oper-status {
-     type te-oper-status;
-   }
-   uses information-source-attributes;
-   list alt-information-sources {
-     key "information-source";
-     uses information-source-attributes;
-     uses te-link-info-attributes;
-   }
-   container recovery {
-     leaf restoration-status {
-       type te-recovery-status;
-     }
-     leaf protection-status {
-       type te-recovery-status;
-     }
-   }
-   container underlay {
-     uses te-link-state-underlay-attributes;
-   }
- } // te-link-state-derived
- grouping te-link-state-underlay-attributes {
-   leaf dynamic {
-     type boolean;
-   }
-   leaf committed {
-     type boolean;
-   }
- } // te-link-state-underlay-attributes
-
- grouping te-link-underlay-attributes {
-   container underlay-primary-path {
-     uses te-topology-ref;
-     list path-element {
-       key "path-element-id";
-       leaf path-element-id {
-         type uint32;
-       }
-       uses te-path-element;
-     }
-   } // underlay-primary-path
-   list underlay-backup-path {
-     key "index";
-     leaf index {
-       type uint32;
-     }
-     uses te-topology-ref;
-     list path-element {
-       key "path-element-id";
-       leaf path-element-id {
-         type uint32;
-       }
-       uses te-path-element;
-     }
-   } // underlay-backup-path
-   leaf underlay-protection-type {
-     type uint16;
-   }
-   container underlay-trail-src {
-     uses nt:tp-ref;
-   }
-   container underlay-trail-des {
-     uses nt:tp-ref;
-   }
- } // te-link-underlay-attributes
-
- grouping te-node-augment {
-   container te {
-     presence "TE support.";
-     leaf te-node-id {
-       type te-node-id;
-     }
-
-     container config {
-       description
-         "Configuration data.";
-       uses te-node-config;
-     } // config
-     container state {
-       config false;
-       description
-         "Operational state data.";
-
-       uses te-node-config;
-       uses te-node-state-derived;
-     } // state
-
-     list tunnel-termination-point {
-       key "tunnel-tp-id";
-       leaf tunnel-tp-id {
-         type binary;
-       }
-       container config {
-         uses te-node-tunnel-termination-capability;
-       }
-
-       container state {
-         config false;
-         uses te-node-tunnel-termination-capability;
-         leaf switching-capability {
-           type identityref {
-             base te-types:switching-capabilities;
-           }
-         }
-         leaf encoding {
-           type identityref {
-             base te-types:lsp-encoding-types;
-           }
-         }
-       } // state
-
-     } // tunnel-termination-point
-   } // te
- } // te-node-augment
-
- grouping te-node-config {
-   leaf-list te-node-template {
-     if-feature template;
-     type leafref {
-       path "../../../../../te/templates/node-template/name";
-     }
-   }
-   uses te-node-config-attributes;
- } // te-node-config
-
- grouping te-node-config-attributes {
-   container te-node-attributes {
-     uses sch:schedules;
-     leaf admin-status {
-       type te-admin-status;
-       description
-         "The administrative state of the link.";
-     }
-     uses te-node-connectivity-matrix;
-     uses te-node-info-attributes;
-   } // te-node-attributes
- } // te-node-config-attributes
-
- grouping te-node-config-attributes-notification {
-   container te-node-attributes {
-     uses sch:schedules;
-     leaf admin-status {
-       type te-admin-status;
-     }
-     uses te-node-connectivity-matrix-abs;
-     uses te-node-info-attributes;
-   } // te-node-attributes
- } // te-node-config-attributes-notification
-
- grouping te-node-config-attributes-template {
-   container te-node-attributes {
-     uses sch:schedules;
-     leaf admin-status {
-       type te-admin-status;
-     }
-     uses te-node-info-attributes;
-   } // te-node-attributes
- } // te-node-config-attributes-template
-
- grouping te-node-connectivity-matrix {
-   list connectivity-matrix {
-     key "id";
-     leaf id {
-       type uint32;
-     }
-     container from {
-       leaf tp-ref {
-         type leafref {
-           path "../../../../../../nt:t-point/nt:tp-id";
-         }
-       }
-     }
-     container to {
-       leaf tp-ref {
-         type leafref {
-           path "../../../../../../nt:t-point/nt:tp-id";
-         }
-       }
-     }
-     leaf is-allowed {
-       type boolean;
-     }
-   }
- } // te-node-connectivity-matrix
-
- grouping te-node-connectivity-matrix-abs {
-   list connectivity-matrix {
-     key "id";
-     leaf id {
-       type uint32;
-     }
-     container from {
-       uses nt:tp-ref;
-     }
-     container to {
-       uses nt:tp-ref;
-     }
-     leaf is-allowed {
-       type boolean;
-     }
-   }
- } // te-node-connectivity-matrix-abs
-
- grouping te-node-info-attributes {
-   leaf domain-id {
-     type uint32;
-   }
-   leaf is-abstract {
-     type empty;
-   }
-   leaf name {
-     type inet:domain-name;
-   }
-   leaf-list signaling-address {
-     type inet:ip-address;
-   }
-   container underlay-topology {
-     if-feature te-topology-hierarchy;
-     uses te-topology-ref;
-   }
- } // te-node-info-attributes
-
- grouping te-node-state-derived {
-   description "Node state attributes in a TE topology.";
-   leaf oper-status {
-     type te-oper-status;
-   }
-   leaf is-multi-access-dr {
-     type empty;
-   }
-   uses information-source-attributes;
-   list alt-information-sources {
-     key "information-source";
-     uses information-source-attributes;
-     uses te-node-connectivity-matrix;
-     uses te-node-info-attributes;
-   }
- } // te-node-state-derived
-
- grouping te-node-state-derived-notification {
-   description "Node state attributes in a TE topology.";
-   leaf oper-status {
-     type te-oper-status;
-   }
-   leaf is-multi-access-dr {
-     type empty;
-   }
-   uses information-source-attributes;
-   list alt-information-sources {
-     key "information-source";
-     uses information-source-attributes;
-     uses te-node-connectivity-matrix-abs;
-     uses te-node-info-attributes;
-   }
- } // te-node-state-derived-notification
-
- grouping te-node-tunnel-termination-capability {
-   list termination-capability {
-     key "link-tp";
-     leaf link-tp {
-       type leafref {
-         path "../../../../../nt:t-point/nt:tp-id";
-       }
-     }
-   } // termination-capability
- } // te-node-tunnel-termination-capability
-
- grouping te-path-element {
-   uses te-types:explicit-route-subobject;
- } // te-path-element
-
- grouping te-termination-point-augment {
-
-   container te {
-     presence "TE support.";
-
-     leaf te-tp-id {
-       type te-tp-id;
-       mandatory true;
-     }
-
-     container config {
-       uses te-termination-point-config;
-     } // config
-     container state {
-       config false;
-       uses te-termination-point-config;
-     } // state
-   } // te
- } // te-termination-point-augment
-
- grouping te-termination-point-config {
-   uses sch:schedules;
- } // te-termination-point-config
-
- grouping te-topologies-augment {
-
-   container te {
-     presence "TE support.";
-
-     container templates {
-       list node-template {
-         if-feature template;
-         key "name";
-         leaf name {
-           type te-template-name;
-         }
-         uses template-attributes;
-         uses te-node-config-attributes-template;
-       } // node-template
-
-       list link-template {
-         if-feature template;
-         key "name";
-         leaf name {
-           type te-template-name;
-         }
-         uses template-attributes;
-         uses te-link-config-attributes;
-       } // link-template
-     } // templates
-   } // te
- } // te-topologies-augment
-
- grouping te-topology-augment {
-
-   container te {
-     presence "TE support.";
-     leaf provider-id {
-       type te-global-id;
-     }
-     leaf client-id {
-       type te-global-id;
-     }
-     leaf te-topology-id {
-       type te-topology-id;
-       mandatory true;
-     }
-
-     container config {
-       uses te-topology-config;
-     } // config
-     container state {
-       config false;
-       uses te-topology-config;
-     } // state
-   } // te
- } // te-topology-augment
-
- grouping te-topology-config {
-   uses sch:schedules;
-   leaf preference {
-     type uint8 {
-       range "1..255";
-     }
-   }
- } // te-topology-config
-
- grouping te-topology-ref {
-   leaf provider-id-ref {
-     type leafref {
-       path "/nw:networks/nw:network[nw:network-id = "
-         + "current()/../network-id-ref]/tet:te/tet:provider-id";
-       require-instance false;
-     }
-   }
-   leaf client-id-ref {
-     type leafref {
-       path "/nw:networks/nw:network[nw:network-id = "
-         + "current()/../network-id-ref]/tet:te/tet:client-id";
-       require-instance false;
-     }
-   }
-   leaf te-topology-id-ref {
-     type leafref {
-       path "/nw:networks/nw:network[nw:network-id = "
-         + "current()/../network-id-ref]/tet:te/tet:te-topology-id";
-       require-instance false;
-     }
-   }
-   leaf network-id-ref {
-     type leafref {
-       path "/nw:networks/nw:network/nw:network-id";
-       require-instance false;
-     }
-   }
- } // te-topology-ref
-
- grouping te-topology-type {
-   container te-topology {
-     presence "Indicates TE topology.";
-   }
- } // te-topology-type
-
- grouping template-attributes {
-   leaf priority {
-     type uint16;
-   }
-   leaf reference-change-policy {
-     type enumeration {
-       enum no-action;
-       enum not-allowed;
-       enum cascade;
-     }
-   }
- } // template-attributes
-
- /*
-  * Configuration data nodes
-  */
- augment "/nw:networks/nw:network/nw:network-types" {
-   uses te-topology-type;
- }
-
- augment "/nw:networks" {
-   uses te-topologies-augment;
- }
-
- augment "/nw:networks/nw:network" {
-   uses te-topology-augment;
- }
-
- augment "/nw:networks/nw:network/nw:node" {
-   uses te-node-augment;
- }
-
- augment "/nw:networks/nw:network/nt:link" {
-   uses te-link-augment;
- }
-
- augment "/nw:networks/nw:network/nw:node/"
-       + "nt:t-point" {
-   uses te-termination-point-augment;
- }
-
- container te-node-event {
-   leaf event-type {
-     type te-topology-event-type;
-     description "Event type.";
-   }
-   uses nw:node-ref;
-   uses te-topology-type;
-   uses tet:te-node-config-attributes-notification;
-   uses tet:te-node-state-derived-notification;
- }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-te-types.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-te-types.yang
deleted file mode 100644
index 206346b..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-te-types.yang
+++ /dev/null
@@ -1,870 +0,0 @@
-   module yms-ietf-te-types {
-
-     namespace "urn:ietf:params:xml:ns:yang:ietf-te-types";
-
-     /* Replace with IANA when assigned */
-     prefix "te-types";
-
-     import yms-ietf-inet-types {
-       prefix inet;
-     }
-
-     organization
-       "IETF Traffic Engineering Architecture and Signaling (TEAS)
-        Working Group";
-
-     contact
-       "WG Web:   <http://tools.ietf.org/wg/teas/>
-        WG List:  <mailto:teas@ietf.org>
-
-        WG Chair: Lou Berger
-                  <mailto:lberger@labn.net>
-
-        WG Chair: Vishnu Pavan Beeram
-                  <mailto:vbeeram@juniper.net>
-
-        Editor:   Tarek Saad
-                  <mailto:tsaad@cisco.com>
-
-        Editor:   Rakesh Gandhi
-                  <mailto:rgandhi@cisco.com>
-
-        Editor:   Vishnu Pavan Beeram
-                  <mailto:vbeeram@juniper.net>
-
-        Editor:   Himanshu Shah
-                  <mailto:hshah@ciena.com>
-
-        Editor:   Xufeng Liu
-                  <mailto:xufeng.liu@ericsson.com>
-
-        Editor:   Xia Chen
-                  <mailto:jescia.chenxia@huawei.com>
-
-        Editor:   Raqib Jones
-                  <mailto:raqib@Brocade.com>
-
-        Editor:   Bin Wen
-                  <mailto:Bin_Wen@cable.comcast.com>";
-
-     description
-       "This module contains a collection of generally
-       useful TE specific YANG data type defintions.";
-
-     revision 2016-03-20 {
-       description "Latest revision of TE generic types";
-       reference "RFC3209";
-     }
-
-     identity tunnel-type {
-       description
-         "Base identity from which specific tunnel types are
-         derived.";
-     }
-
-     identity tunnel-p2p {
-       base tunnel-type;
-       description
-         "TE point-to-point tunnel type.";
-     }
-
-     identity tunnel-p2mp {
-       base tunnel-type;
-       description
-         "TE point-to-multipoint tunnel type.";
-     }
-
-     identity state-type {
-       description
-         "Base identity for TE states";
-     }
-
-     identity state-up {
-       base state-type;
-       description
-         "State up";
-     }
-
-     identity state-down {
-       base state-type;
-       description
-         "State down";
-     }
-
-     identity lsp-prot-type {
-       description
-         "Base identity from which LSP protection types are
-         derived.";
-     }
-
-     identity lsp-prot-unprotected {
-       description
-         "LSP protection 'Unprotected'";
-       reference "RFC4872";
-     }
-
-     identity lsp-prot-reroute-extra {
-       description
-         "LSP protection '(Full) Rerouting'";
-       reference "RFC4872";
-     }
-
-     identity lsp-prot-reroute {
-       description
-         "LSP protection 'Rerouting without Extra-Traffic'";
-       reference "RFC4872";
-     }
-
-     identity lsp-prot-1-for-n {
-       description
-         "LSP protection '1:N Protection with Extra-Traffic'";
-       reference "RFC4872";
-     }
-
-     identity lsp-prot-unidir-1-to-1 {
-       description
-         "LSP protection '1+1 Unidirectional Protection'";
-       reference "RFC4872";
-     }
-
-     identity lsp-prot-bidir-1-to-1 {
-       description
-         "LSP protection '1+1 Bidirectional Protection'";
-       reference "RFC4872";
-     }
-
-     identity switching-capabilities {
-       description
-         "Base identity for interface switching capabilities";
-     }
-
-     identity switching-psc1 {
-       base switching-capabilities;
-       description
-         "Packet-Switch Capable-1 (PSC-1)";
-     }
-
-     identity switching-evpl {
-       base switching-capabilities;
-       description
-         "Ethernet Virtual Private Line (EVPL)";
-     }
-
-     identity switching-l2sc {
-       base switching-capabilities;
-       description
-         "Layer-2 Switch Capable (L2SC)";
-     }
-
-     identity switching-tdm {
-       base switching-capabilities;
-       description
-         "Time-Division-Multiplex Capable (TDM)";
-     }
-
-     identity switching-otn {
-       base switching-capabilities;
-       description
-         "OTN-TDM capable";
-     }
-
-     identity switching-dcsc {
-       base switching-capabilities;
-       description
-         "Data Channel Switching Capable (DCSC)";
-     }
-     identity switching-lsc {
-       base switching-capabilities;
-       description
-         "Lambda-Switch Capable (LSC)";
-     }
-
-     identity switching-fsc {
-       base switching-capabilities;
-       description
-         "Fiber-Switch Capable (FSC)";
-     }
-
-     identity lsp-encoding-types {
-       description
-         "Base identity for encoding types";
-     }
-
-     identity lsp-encoding-packet {
-       base lsp-encoding-types;
-       description
-         "Packet LSP encoding";
-     }
-
-     identity lsp-encoding-ethernet {
-       base lsp-encoding-types;
-       description
-         "Ethernet LSP encoding";
-     }
-
-     identity lsp-encoding-pdh {
-       base lsp-encoding-types;
-       description
-         "ANSI/ETSI LSP encoding";
-     }
-
-     identity lsp-encoding-sdh {
-       base lsp-encoding-types;
-       description
-         "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding";
-     }
-
-     identity lsp-encoding-digital-wrapper {
-       base lsp-encoding-types;
-       description
-         "Digital Wrapper LSP encoding";
-     }
-
-     identity lsp-encoding-lambda {
-       base lsp-encoding-types;
-       description
-         "Lambda (photonic) LSP encoding";
-     }
-
-     identity lsp-encoding-fiber {
-       base lsp-encoding-types;
-       description
-         "Fiber LSP encoding";
-     }
-
-     identity lsp-encoding-fiber-channel {
-       base lsp-encoding-types;
-       description
-         "FiberChannel LSP encoding";
-     }
-
-     identity lsp-encoding-oduk {
-       base lsp-encoding-types;
-       description
-         "G.709 ODUk (Digital Path)LSP encoding";
-     }
-
-     identity lsp-encoding-optical-channel {
-       base lsp-encoding-types;
-       description
-         "Line (e.g., 8B/10B) LSP encoding";
-     }
-
-     identity lsp-encoding-line {
-       base lsp-encoding-types;
-       description
-         "Line (e.g., 8B/10B) LSP encoding";
-     }
-
-     /* TE basic features */
-     feature p2mp-te {
-       description
-         "Indicates support for P2MP-TE";
-     }
-
-     feature frr-te {
-       description
-         "Indicates support for TE FastReroute (FRR)";
-     }
-
-     feature extended-admin-groups {
-       description
-         "Indicates support for TE link extended admin
-         groups.";
-     }
-
-     feature named-path-affinities {
-       description
-         "Indicates support for named path affinities";
-     }
-
-     feature named-extended-admin-groups {
-       description
-         "Indicates support for named extended admin groups";
-     }
-
-     feature named-srlg-groups {
-       description
-         "Indicates support for named SRLG groups";
-     }
-
-     feature named-path-constraints {
-       description
-         "Indicates support for named path constraints";
-     }
-
-     grouping explicit-route-subobject {
-       description
-         "The explicit route subobject grouping";
-       choice type {
-         description
-           "The explicit route subobject type";
-         case ipv4-address {
-           description
-             "IPv4 address explicit route subobject";
-           leaf v4-address {
-             type inet:ipv4-address;
-             description
-               "An IPv4 address.  This address is
-               treated as a prefix based on the
-               prefix length value below. Bits beyond
-               the prefix are ignored on receipt and
-               SHOULD be set to zero on transmission.";
-           }
-           leaf v4-prefix-length {
-             type uint8;
-             description
-               "Length in bits of the IPv4 prefix";
-           }
-           leaf v4-loose {
-             type boolean;
-             description
-               "Describes whether the object is loose
-               if set, or otherwise strict";
-           }
-         }
-         case ipv6-address {
-           description
-             "IPv6 address Explicit Route Object";
-           leaf v6-address {
-             type inet:ipv6-address;
-             description
-               "An IPv6 address.  This address is
-               treated as a prefix based on the
-               prefix length value below.  Bits
-               beyond the prefix are ignored on
-               receipt and SHOULD be set to zero
-               on transmission.";
-           }
-           leaf v6-prefix-length {
-             type uint8;
-             description
-               "Length in bits of the IPv4 prefix";
-           }
-           leaf v6-loose {
-             type boolean;
-             description
-               "Describes whether the object is loose
-               if set, or otherwise strict";
-           }
-         }
-         case as-number {
-           leaf as-number {
-             type uint16;
-             description "AS number";
-           }
-           description
-             "Autonomous System explicit route subobject";
-         }
-         case unnumbered-link {
-           leaf router-id {
-             type inet:ip-address;
-             description
-               "A router-id address";
-           }
-           leaf interface-id {
-             type uint32;
-             description "The interface identifier";
-           }
-           description
-             "Unnumbered link explicit route subobject";
-           reference
-             "RFC3477: Signalling Unnumbered Links in
-             RSVP-TE";
-         }
-         case label {
-           leaf value {
-             type uint32;
-             description "the label value";
-           }
-           description
-             "The Label ERO subobject";
-         }
-         /* AS domain sequence..? */
-       }
-     }
-
-     grouping record-route-subobject {
-       description
-         "The record route subobject grouping";
-       choice type {
-         description
-           "The record route subobject type";
-         case ipv4-address {
-           leaf v4-address {
-             type inet:ipv4-address;
-             description
-               "An IPv4 address.  This address is
-               treated as a prefix based on the prefix
-               length value below. Bits beyond the
-               prefix are ignored on receipt and
-               SHOULD be set to zero on transmission.";
-           }
-           leaf v4-prefix-length {
-             type uint8;
-             description
-               "Length in bits of the IPv4 prefix";
-           }
-           leaf v4-flags {
-             type uint8;
-             description
-               "IPv4 address sub-object flags";
-             reference "RFC3209";
-           }
-         }
-         case ipv6-address {
-           leaf v6-address {
-             type inet:ipv6-address;
-             description
-               "An IPv6 address.  This address is
-               treated as a prefix based on the
-               prefix length value below. Bits
-               beyond the prefix are ignored on
-               receipt and SHOULD be set to zero
-               on transmission.";
-           }
-           leaf v6-prefix-length {
-             type uint8;
-             description
-               "Length in bits of the IPv4 prefix";
-           }
-           leaf v6-flags {
-             type uint8;
-             description
-               "IPv6 address sub-object flags";
-             reference "RFC3209";
-           }
-         }
-         case label {
-           leaf value {
-             type uint32;
-             description "the label value";
-           }
-           leaf flags {
-             type uint8;
-             description
-               "Label sub-object flags";
-             reference "RFC3209";
-           }
-           description
-             "The Label ERO subobject";
-         }
-       }
-     }
-
-     identity route-usage-type {
-       description
-         "Base identity for route usage";
-     }
-
-     identity route-include-ero {
-       base route-usage-type;
-       description
-         "Include ERO from route";
-     }
-
-     identity route-exclude-ero {
-       base route-usage-type;
-       description
-         "Exclude ERO from route";
-     }
-
-     identity route-exclude-srlg {
-       base route-usage-type;
-       description
-         "Exclude SRLG from route";
-     }
-
-     identity path-metric-type {
-       description
-         "Base identity for path metric type";
-     }
-
-     identity path-metric-te {
-       base path-metric-type;
-       description
-         "TE path metric";
-     }
-
-     identity path-metric-igp {
-       base path-metric-type;
-       description
-         "IGP path metric";
-     }
-
-     identity path-tiebreaker-type {
-       description
-         "Base identity for path tie-breaker type";
-     }
-
-     identity path-tiebreaker-minfill {
-       base path-tiebreaker-type;
-       description
-         "Min-Fill LSP path placement";
-     }
-
-     identity path-tiebreaker-maxfill {
-       base path-tiebreaker-type;
-       description
-         "Max-Fill LSP path placement";
-     }
-
-     identity path-tiebreaker-randoom {
-       base path-tiebreaker-type;
-       description
-         "Random LSP path placement";
-     }
-
-     identity bidir-provisioning-mode {
-       description
-         "Base identity for bidirectional provisioning
-         mode.";
-     }
-
-     identity bidir-provisioning-single-sided {
-       base bidir-provisioning-mode;
-       description
-         "Single-sided bidirectional provioning mode";
-     }
-
-     identity bidir-provisioning-double-sided {
-       base bidir-provisioning-mode;
-       description
-         "Double-sided bidirectional provioning mode";
-     }
-
-     identity bidir-association-type {
-       description
-         "Base identity for bidirectional association type";
-     }
-
-     identity bidir-assoc-corouted {
-       base bidir-association-type;
-       description
-         "Co-routed bidirectional association type";
-     }
-
-     identity bidir-assoc-non-corouted {
-       base bidir-association-type;
-       description
-         "Non co-routed bidirectional association type";
-     }
-
-     identity resource-affinities-type {
-       description
-         "Base identity for resource affinities";
-     }
-
-     identity resource-aff-include-all {
-       base resource-affinities-type;
-       description
-         "The set of attribute filters associated with a
-         tunnel all of which must be present for a link
-         to be acceptable";
-     }
-
-     identity resource-aff-include-any {
-       base resource-affinities-type;
-       description
-         "The set of attribute filters associated with a
-         tunnel any of which must be present for a link
-         to be acceptable";
-     }
-
-     identity resource-aff-exclude-any {
-       base resource-affinities-type;
-       description
-         "The set of attribute filters associated with a
-         tunnel any of which renders a link unacceptable";
-     }
-
-     typedef admin-group {
-       type binary {
-         length 32;
-       }
-       description
-         "Administrative group/Resource class/Color.";
-     }
-
-     typedef extended-admin-group {
-       type binary;
-       description
-         "Extended administrative group/Resource class/Color.";
-     }
-
-     typedef admin-groups {
-       type union {
-         type admin-group;
-         type extended-admin-group;
-       }
-       description "TE administrative group derived type";
-     }
-
-     typedef srlg {
-       type uint32;
-       description "SRLG type";
-     }
-
-     identity path-computation-srlg-type {
-       description
-         "Base identity for SRLG path computation";
-     }
-
-     identity srlg-ignore {
-       base path-computation-srlg-type;
-       description
-         "Ignores SRLGs in path computation";
-     }
-
-     identity srlg-strict {
-       base path-computation-srlg-type;
-       description
-         "Include strict SRLG check in path computation";
-     }
-
-     identity srlg-preferred {
-       base path-computation-srlg-type;
-       description
-         "Include preferred SRLG check in path computation";
-     }
-
-     identity srlg-weighted {
-       base path-computation-srlg-type;
-       description
-         "Include weighted SRLG check in path computation";
-     }
-
-     typedef te-metric {
-       type uint32;
-       description
-         "TE link metric";
-     }
-
-     typedef topology-id {
-       type string {
-         pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
-       }
-       description
-         "An identifier for a topology.";
-     }
-
-     /**
-      * TE tunnel generic groupings
-      **/
-
-     /* Tunnel path selection parameters */
-     grouping tunnel-path-selection {
-       description
-         "Tunnel path selection properties grouping";
-       container path-selection {
-         description
-           "Tunnel path selection properties container";
-         leaf topology {
-           type te-types:topology-id;
-           description
-             "The tunnel path is computed using the specific
-             topology identified by this identifier";
-         }
-         leaf cost-limit {
-           type uint32 {
-             range "1..4294967295";
-           }
-           description
-             "The tunnel path cost limit.";
-         }
-         leaf hop-limit {
-           type uint8 {
-             range "1..255";
-           }
-           description
-             "The tunnel path hop limit.";
-         }
-         leaf metric-type {
-           type identityref {
-             base path-metric-type;
-           }
-           default path-metric-te;
-           description
-             "The tunnel path metric type.";
-         }
-         leaf tiebreaker-type {
-           type identityref {
-             base path-tiebreaker-type;
-           }
-           default path-tiebreaker-maxfill;
-           description
-             "The tunnel path computation tie breakers.";
-         }
-         leaf ignore-overload {
-           type boolean;
-           description
-             "The tunnel path can traverse overloaded node.";
-         }
-         uses tunnel-path-affinities;
-         uses tunnel-path-srlgs;
-       }
-     }
-
-     grouping tunnel-path-affinities {
-       description
-         "Path affinities grouping";
-       container tunnel-path-affinities {
-         if-feature named-path-affinities;
-         description
-           "Path affinities container";
-         choice style {
-           description
-             "Path affinities representation style";
-           case values {
-             leaf value {
-               type uint32 {
-                 range "0..4294967295";
-               }
-               description
-                 "Affinity value";
-             }
-             leaf mask {
-               type uint32 {
-                 range "0..4294967295";
-               }
-               description
-                 "Affinity mask";
-             }
-           }
-           case named {
-             list constraints {
-               key "usage";
-               leaf usage {
-                 type identityref {
-                   base resource-affinities-type;
-                 }
-                 description "Affinities usage";
-               }
-               container constraint {
-                 description
-                   "Container for named affinities";
-                 list affinity-names {
-                   key "name";
-                   leaf name {
-                     type string;
-                     description
-                       "Affinity name";
-                   }
-                   description
-                     "List of named affinities";
-                 }
-               }
-               description
-                 "List of named affinity constraints";
-             }
-           }
-         }
-       }
-     }
-
-     grouping tunnel-path-srlgs {
-       description
-         "Path SRLG properties grouping";
-       container tunnel-path-srlgs {
-         description
-           "Path SRLG properties container";
-         choice style {
-           description
-             "Type of SRLG representation";
-           case values {
-             leaf usage {
-               type identityref {
-                 base route-exclude-srlg;
-               }
-               description "SRLG usage";
-             }
-             leaf-list values {
-               type te-types:srlg;
-               description "SRLG value";
-             }
-           }
-           case named {
-             list constraints {
-               key "usage";
-               leaf usage {
-                 type identityref {
-                   base route-exclude-srlg;
-                 }
-                 description "SRLG usage";
-               }
-               container constraint {
-                 description
-                   "Container for named SRLG list";
-                 list srlg-names {
-                   key "name";
-                   leaf name {
-                     type string;
-                     description
-                       "The SRLG name";
-                   }
-                   description
-                     "List named SRLGs";
-                 }
-               }
-               description
-                 "List of named SRLG constraints";
-             }
-           }
-         }
-       }
-     }
-
-     grouping tunnel-bidir-assoc-properties {
-       description
-         "TE tunnel associated bidirectional properties
-         grouping";
-       container bidirectional {
-         description
-           "TE tunnel associated bidirectional attributes.";
-         container association {
-           description
-             "Tunnel bidirectional association properties";
-           leaf id {
-             type uint16;
-             description
-               "The TE tunnel association identifier.";
-           }
-           leaf source {
-             type inet:ip-address;
-             description
-               "The TE tunnel association source.";
-           }
-           leaf global-source {
-             type inet:ip-address;
-             description
-               "The TE tunnel association global
-               source.";
-           }
-           leaf type {
-             type identityref {
-               base bidir-association-type;
-             }
-             default bidir-assoc-non-corouted;
-             description
-               "The TE tunnel association type.";
-           }
-           leaf provisioing {
-             type identityref {
-               base bidir-provisioning-mode;
-             }
-             description
-               "Describes the provisioning model of the
-               associated bidirectional LSP";
-             reference
-               "draft-ietf-teas-mpls-tp-rsvpte-ext-
-               associated-lsp, section-3.2";
-           }
-         }
-       }
-     }
-     /*** End of TE tunnel groupings ***/
-
-     /**
-      * TE interface generic groupings
-      **/
-   }
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-yang-types.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-yang-types.yang
deleted file mode 100644
index bc248a6..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-yang-types.yang
+++ /dev/null
@@ -1,490 +0,0 @@
-  module yms-ietf-yang-types {
-
-    yang-version 1;
-
-    namespace
-      "urn:ietf:params:xml:ns:yang:ietf-yang-types";
-
-    prefix yang;
-
-    organization
-      "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-    contact
-      "WG Web:   <http://tools.ietf.org/wg/netmod/>
-    WG List:  <mailto:netmod@ietf.org>
-
-    WG Chair: David Kessens
-              <mailto:david.kessens@nsn.com>
-
-    WG Chair: Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>
-
-    Editor:   Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>";
-
-    description
-      "This module contains a collection of generally useful derived
-    YANG data types.
-
-    Copyright (c) 2013 IETF Trust and the persons identified as
-    authors of the code.  All rights reserved.
-
-    Redistribution and use in source and binary forms, with or
-    without modification, is permitted pursuant to, and subject
-    to the license terms contained in, the Simplified BSD License
-    set forth in Section 4.c of the IETF Trust's Legal Provisions
-    Relating to IETF Documents
-    (http://trustee.ietf.org/license-info).
-
-    This version of this YANG module is part of RFC 6991; see
-    the RFC itself for full legal notices.";
-
-    revision "2013-07-15" {
-      description
-        "This revision adds the following new data types:
-      - yang-identifier
-      - hex-string
-      - uuid
-      - dotted-quad";
-      reference
-        "RFC 6991: Common YANG Data Types";
-
-    }
-
-    revision "2010-09-24" {
-      description "Initial revision.";
-      reference
-        "RFC 6021: Common YANG Data Types";
-
-    }
-
-
-    typedef counter32 {
-      type uint32;
-      description
-        "The counter32 type represents a non-negative integer
-      that monotonically increases until it reaches a
-      maximum value of 2^32-1 (4294967295 decimal), when it
-      wraps around and starts increasing again from zero.
-
-      Counters have no defined 'initial' value, and thus, a
-      single value of a counter has (in general) no information
-      content.  Discontinuities in the monotonically increasing
-      value normally occur at re-initialization of the
-      management system, and at other times as specified in the
-      description of a schema node using this type.  If such
-      other times can occur, for example, the creation of
-      a schema node of type counter32 at times other than
-      re-initialization, then a corresponding schema node
-      should be defined, with an appropriate type, to indicate
-      the last discontinuity.
-
-      The counter32 type should not be used for configuration
-      schema nodes.  A default statement SHOULD NOT be used in
-      combination with the type counter32.
-
-      In the value set and its semantics, this type is equivalent
-      to the Counter32 type of the SMIv2.";
-      reference
-        "RFC 2578: Structure of Management Information Version 2
-        	  (SMIv2)";
-
-    }
-
-    typedef zero-based-counter32 {
-      type counter32;
-      default "0";
-      description
-        "The zero-based-counter32 type represents a counter32
-      that has the defined 'initial' value zero.
-
-      A schema node of this type will be set to zero (0) on creation
-      and will thereafter increase monotonically until it reaches
-      a maximum value of 2^32-1 (4294967295 decimal), when it
-      wraps around and starts increasing again from zero.
-
-      Provided that an application discovers a new schema node
-      of this type within the minimum time to wrap, it can use the
-      'initial' value as a delta.  It is important for a management
-      station to be aware of this minimum time and the actual time
-      between polls, and to discard data if the actual time is too
-      long or there is no defined minimum time.
-
-      In the value set and its semantics, this type is equivalent
-      to the ZeroBasedCounter32 textual convention of the SMIv2.";
-      reference
-        "RFC 4502: Remote Network Monitoring Management Information
-        	  Base Version 2";
-
-    }
-
-    typedef counter64 {
-      type uint64;
-      description
-        "The counter64 type represents a non-negative integer
-      that monotonically increases until it reaches a
-      maximum value of 2^64-1 (18446744073709551615 decimal),
-      when it wraps around and starts increasing again from zero.
-
-      Counters have no defined 'initial' value, and thus, a
-      single value of a counter has (in general) no information
-      content.  Discontinuities in the monotonically increasing
-      value normally occur at re-initialization of the
-      management system, and at other times as specified in the
-      description of a schema node using this type.  If such
-      other times can occur, for example, the creation of
-      a schema node of type counter64 at times other than
-      re-initialization, then a corresponding schema node
-      should be defined, with an appropriate type, to indicate
-      the last discontinuity.
-
-      The counter64 type should not be used for configuration
-      schema nodes.  A default statement SHOULD NOT be used in
-      combination with the type counter64.
-
-      In the value set and its semantics, this type is equivalent
-      to the Counter64 type of the SMIv2.";
-      reference
-        "RFC 2578: Structure of Management Information Version 2
-        	  (SMIv2)";
-
-    }
-
-    typedef zero-based-counter64 {
-      type counter64;
-      default "0";
-      description
-        "The zero-based-counter64 type represents a counter64 that
-      has the defined 'initial' value zero.
-
-
-
-
-      A schema node of this type will be set to zero (0) on creation
-      and will thereafter increase monotonically until it reaches
-      a maximum value of 2^64-1 (18446744073709551615 decimal),
-      when it wraps around and starts increasing again from zero.
-
-      Provided that an application discovers a new schema node
-      of this type within the minimum time to wrap, it can use the
-      'initial' value as a delta.  It is important for a management
-      station to be aware of this minimum time and the actual time
-      between polls, and to discard data if the actual time is too
-      long or there is no defined minimum time.
-
-      In the value set and its semantics, this type is equivalent
-      to the ZeroBasedCounter64 textual convention of the SMIv2.";
-      reference
-        "RFC 2856: Textual Conventions for Additional High Capacity
-        	  Data Types";
-
-    }
-
-    typedef gauge32 {
-      type uint32;
-      description
-        "The gauge32 type represents a non-negative integer, which
-      may increase or decrease, but shall never exceed a maximum
-      value, nor fall below a minimum value.  The maximum value
-      cannot be greater than 2^32-1 (4294967295 decimal), and
-      the minimum value cannot be smaller than 0.  The value of
-      a gauge32 has its maximum value whenever the information
-      being modeled is greater than or equal to its maximum
-      value, and has its minimum value whenever the information
-      being modeled is smaller than or equal to its minimum value.
-      If the information being modeled subsequently decreases
-      below (increases above) the maximum (minimum) value, the
-      gauge32 also decreases (increases).
-
-      In the value set and its semantics, this type is equivalent
-      to the Gauge32 type of the SMIv2.";
-      reference
-        "RFC 2578: Structure of Management Information Version 2
-        	  (SMIv2)";
-
-    }
-
-    typedef gauge64 {
-      type uint64;
-      description
-        "The gauge64 type represents a non-negative integer, which
-      may increase or decrease, but shall never exceed a maximum
-      value, nor fall below a minimum value.  The maximum value
-      cannot be greater than 2^64-1 (18446744073709551615), and
-      the minimum value cannot be smaller than 0.  The value of
-      a gauge64 has its maximum value whenever the information
-      being modeled is greater than or equal to its maximum
-      value, and has its minimum value whenever the information
-      being modeled is smaller than or equal to its minimum value.
-      If the information being modeled subsequently decreases
-      below (increases above) the maximum (minimum) value, the
-      gauge64 also decreases (increases).
-
-      In the value set and its semantics, this type is equivalent
-      to the CounterBasedGauge64 SMIv2 textual convention defined
-      in RFC 2856";
-      reference
-        "RFC 2856: Textual Conventions for Additional High Capacity
-        	  Data Types";
-
-    }
-
-    typedef object-identifier {
-      type string {
-        pattern
-          '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))(\.(0|([1-9]\d*)))*';
-      }
-      description
-        "The object-identifier type represents administratively
-      assigned names in a registration-hierarchical-name tree.
-
-      Values of this type are denoted as a sequence of numerical
-      non-negative sub-identifier values.  Each sub-identifier
-      value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
-      are separated by single dots and without any intermediate
-      whitespace.
-
-      The ASN.1 standard restricts the value space of the first
-      sub-identifier to 0, 1, or 2.  Furthermore, the value space
-      of the second sub-identifier is restricted to the range
-      0 to 39 if the first sub-identifier is 0 or 1.  Finally,
-      the ASN.1 standard requires that an object identifier
-      has always at least two sub-identifiers.  The pattern
-      captures these restrictions.
-
-      Although the number of sub-identifiers is not limited,
-      module designers should realize that there may be
-      implementations that stick with the SMIv2 limit of 128
-      sub-identifiers.
-
-      This type is a superset of the SMIv2 OBJECT IDENTIFIER type
-      since it is not restricted to 128 sub-identifiers.  Hence,
-      this type SHOULD NOT be used to represent the SMIv2 OBJECT
-      IDENTIFIER type; the object-identifier-128 type SHOULD be
-      used instead.";
-      reference
-        "ISO9834-1: Information technology -- Open Systems
-        Interconnection -- Procedures for the operation of OSI
-        Registration Authorities: General procedures and top
-        arcs of the ASN.1 Object Identifier tree";
-
-    }
-
-    typedef object-identifier-128 {
-      type object-identifier {
-        pattern '\d*(\.\d*){1,127}';
-      }
-      description
-        "This type represents object-identifiers restricted to 128
-      sub-identifiers.
-
-      In the value set and its semantics, this type is equivalent
-      to the OBJECT IDENTIFIER type of the SMIv2.";
-      reference
-        "RFC 2578: Structure of Management Information Version 2
-        	  (SMIv2)";
-
-    }
-
-    typedef yang-identifier {
-      type string {
-        length "1..max";
-        pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
-        pattern
-          '.|..|[^xX].*|.[^mM].*|..[^lL].*';
-      }
-      description
-        "A YANG identifier string as defined by the 'identifier'
-       rule in Section 12 of RFC 6020.  An identifier must
-       start with an alphabetic character or an underscore
-       followed by an arbitrary sequence of alphabetic or
-       numeric characters, underscores, hyphens, or dots.
-
-       A YANG identifier MUST NOT start with any possible
-       combination of the lowercase or uppercase character
-       sequence 'xml'.";
-      reference
-        "RFC 6020: YANG - A Data Modeling Language for the Network
-        	  Configuration Protocol (NETCONF)";
-
-    }
-
-    typedef date-and-time {
-      type string {
-        pattern
-          '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[\+\-]\d{2}:\d{2})';
-      }
-      description
-        "The date-and-time type is a profile of the ISO 8601
-      standard for representation of dates and times using the
-      Gregorian calendar.  The profile is defined by the
-      date-time production in Section 5.6 of RFC 3339.
-
-      The date-and-time type is compatible with the dateTime XML
-      schema type with the following notable exceptions:
-
-      (a) The date-and-time type does not allow negative years.
-
-      (b) The date-and-time time-offset -00:00 indicates an unknown
-          time zone (see RFC 3339) while -00:00 and +00:00 and Z
-          all represent the same time zone in dateTime.
-
-      (c) The canonical format (see below) of data-and-time values
-          differs from the canonical format used by the dateTime XML
-          schema type, which requires all times to be in UTC using
-          the time-offset 'Z'.
-
-      This type is not equivalent to the DateAndTime textual
-      convention of the SMIv2 since RFC 3339 uses a different
-      separator between full-date and full-time and provides
-      higher resolution of time-secfrac.
-
-      The canonical format for date-and-time values with a known time
-      zone uses a numeric time zone offset that is calculated using
-      the device's configured known offset to UTC time.  A change of
-      the device's offset to UTC time will cause date-and-time values
-      to change accordingly.  Such changes might happen periodically
-      in case a server follows automatically daylight saving time
-      (DST) time zone offset changes.  The canonical format for
-      date-and-time values with an unknown time zone (usually
-      referring to the notion of local time) uses the time-offset
-      -00:00.";
-      reference
-        "RFC 3339: Date and Time on the Internet: Timestamps
-         RFC 2579: Textual Conventions for SMIv2
-        XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
-
-    }
-
-    typedef timeticks {
-      type uint32;
-      description
-        "The timeticks type represents a non-negative integer that
-      represents the time, modulo 2^32 (4294967296 decimal), in
-      hundredths of a second between two epochs.  When a schema
-      node is defined that uses this type, the description of
-      the schema node identifies both of the reference epochs.
-
-      In the value set and its semantics, this type is equivalent
-      to the TimeTicks type of the SMIv2.";
-      reference
-        "RFC 2578: Structure of Management Information Version 2
-        	  (SMIv2)";
-
-    }
-
-    typedef timestamp {
-      type timeticks;
-      description
-        "The timestamp type represents the value of an associated
-      timeticks schema node at which a specific occurrence
-      happened.  The specific occurrence must be defined in the
-      description of any schema node defined using this type.  When
-      the specific occurrence occurred prior to the last time the
-      associated timeticks attribute was zero, then the timestamp
-      value is zero.  Note that this requires all timestamp values
-      to be reset to zero when the value of the associated timeticks
-      attribute reaches 497+ days and wraps around to zero.
-
-      The associated timeticks schema node must be specified
-      in the description of any schema node using this type.
-
-      In the value set and its semantics, this type is equivalent
-      to the TimeStamp textual convention of the SMIv2.";
-      reference
-        "RFC 2579: Textual Conventions for SMIv2";
-
-    }
-
-    typedef phys-address {
-      type string {
-        pattern
-          '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
-      }
-      description
-        "Represents media- or physical-level addresses represented
-      as a sequence octets, each octet represented by two hexadecimal
-      numbers.  Octets are separated by colons.  The canonical
-      representation uses lowercase characters.
-
-      In the value set and its semantics, this type is equivalent
-      to the PhysAddress textual convention of the SMIv2.";
-      reference
-        "RFC 2579: Textual Conventions for SMIv2";
-
-    }
-
-    typedef mac-address {
-      type string {
-        pattern
-          '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
-      }
-      description
-        "The mac-address type represents an IEEE 802 MAC address.
-      The canonical representation uses lowercase characters.
-
-      In the value set and its semantics, this type is equivalent
-      to the MacAddress textual convention of the SMIv2.";
-      reference
-        "IEEE 802: IEEE Standard for Local and Metropolitan Area
-        	  Networks: Overview and Architecture
-         RFC 2579: Textual Conventions for SMIv2";
-
-    }
-
-    typedef xpath1.0 {
-      type string;
-      description
-        "This type represents an XPATH 1.0 expression.
-
-      When a schema node is defined that uses this type, the
-      description of the schema node MUST specify the XPath
-      context in which the XPath expression is evaluated.";
-      reference
-        "XPATH: XML Path Language (XPath) Version 1.0";
-
-    }
-
-    typedef hex-string {
-      type string {
-        pattern
-          '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
-      }
-      description
-        "A hexadecimal string with octets represented as hex digits
-      separated by colons.  The canonical representation uses
-      lowercase characters.";
-    }
-
-    typedef uuid {
-      type string {
-        pattern
-          '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
-      }
-      description
-        "A Universally Unique IDentifier in the string representation
-      defined in RFC 4122.  The canonical representation uses
-      lowercase characters.
-
-      The following is an example of a UUID in string representation:
-      f81d4fae-7dec-11d0-a765-00a0c91e6bf6
-      ";
-      reference
-        "RFC 4122: A Universally Unique IDentifier (UUID) URN
-        	  Namespace";
-
-    }
-
-    typedef dotted-quad {
-      type string {
-        pattern
-          '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
-      }
-      description
-        "An unsigned 32-bit number expressed in the dotted-quad
-       notation, i.e., four octets written as decimal numbers
-       and separated with the '.' (full stop) character.";
-    }
-  }  // module ietf-yang-types
-
diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-network-topology.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-network-topology.yang
deleted file mode 100644
index 4700365..0000000
--- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-network-topology.yang
+++ /dev/null
@@ -1,304 +0,0 @@
- module yms-network-topology {
-   yang-version 1;
-   namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology";
-   prefix lnk;
-
-   import yms-ietf-inet-types {
-     prefix inet;
-   }
-   import yms-ietf-network {
-     prefix nd;
-   }
-
-   organization
-     "IETF I2RS (Interface to the Routing System) Working Group";
-
-   contact
-     "WG Web:    <http://tools.ietf.org/wg/i2rs/>
-      WG List:   <mailto:i2rs@ietf.org>
-
-      WG Chair:  Susan Hares
-                 <mailto:shares@ndzh.com>
-
-      WG Chair:  Jeffrey Haas
-                 <mailto:jhaas@pfrc.org>
-
-      Editor:    Alexander Clemm
-                 <mailto:alex@cisco.com>
-
-      Editor:    Jan Medved
-                 <mailto:jmedved@cisco.com>
-
-      Editor:    Robert Varga
-                 <mailto:rovarga@cisco.com>
-
-      Editor:    Tony Tkacik
-                 <mailto:ttkacik@cisco.com>
-
-      Editor:    Nitin Bahadur
-                 <mailto:nitin_bahadur@yahoo.com>
-
-      Editor:    Hariharan Ananthakrishnan
-                 <mailto:hari@packetdesign.com>";
-
-   description
-     "This module defines a common base model for network topology,
-      augmenting the base network model with links to connect nodes,
-      as well as termination points to terminate links on nodes.
-
-      Copyright (c) 2015 IETF Trust and the persons identified as
-      authors of the code.  All rights reserved.
-
-      Redistribution and use in source and binary forms, with or
-      without modification, is permitted pursuant to, and subject
-      to the license terms contained in, the Simplified BSD License
-      set forth in Section 4.c of the IETF Trust's Legal Provisions
-      Relating to IETF Documents
-      (http://trustee.ietf.org/license-info).
-
-      This version of this YANG module is part of
-      draft-ietf-i2rs-yang-network-topo-02;
-      see the RFC itself for full legal notices.
-
-      NOTE TO RFC EDITOR: Please replace above reference to
-      draft-ietf-i2rs-yang-network-topo-02 with RFC
-      number when published (i.e. RFC xxxx).";
-
-   revision 2015-12-08 {
-     description
-       "Initial revision.
-        NOTE TO RFC EDITOR: Please replace the following reference
-        to draft-ietf-i2rs-yang-network-topo-02 with
-        RFC number when published (i.e. RFC xxxx).";
-     reference
-       "draft-ietf-i2rs-yang-network-topo-02.";
-   }
-
-   typedef link-id {
-     type inet:uri;
-     description
-       "An identifier for a link in a topology.
-        The identifier SHOULD be chosen such that the same link in a
-        real network topology will always be identified through the
-        same identifier, even if the model is instantiated in
-            separate datastores. An implementation MAY choose to capture
-        semantics in the identifier, for example to indicate the type
-        of link and/or the type of topology that the link is a part
-        of.";
-   }
-
-   typedef tp-id {
-     type inet:uri;
-     description
-       "An identifier for termination points on a node.
-        The identifier SHOULD be chosen such that the same TP in a
-        real network topology will always be identified through the
-        same identifier, even if the model is instantiated in
-        separate datastores. An implementation MAY choose to capture
-        semantics in the identifier, for example to indicate the type
-        of TP and/or the type of node and topology that the TP is a
-        part of.";
-   }
-   grouping link-ref {
-     description
-       "References a link in a specific network.";
-     leaf link-ref {
-       type leafref {
-         path "/nd:networks/nd:network[nd:network-id=current()/../"+
-           "network-ref]/lnk:link/lnk:link-id";
-         require-instance false;
-       }
-       description
-         "A type for an absolute reference a link instance.
-          (This type should not be used for relative references.
-          In such a case, a relative path should be used instead.)";
-     }
-     uses nd:network-ref;
-   }
-
-   grouping tp-ref {
-     description
-       "References a termination point in a specific node.";
-     leaf tp-ref {
-       type leafref {
-         path "/nd:networks/nd:network[nd:network-id=current()/../"+
-           "network-ref]/nd:node[nd:node-id=current()/../"+
-           "node-ref]/lnk:t-point/lnk:tp-id";
-         require-instance false;
-       }
-       description
-         "A type for an absolute reference to a termination point.
-          (This type should not be used for relative references.
-          In such a case, a relative path should be used instead.)";
-     }
-     uses nd:node-ref;
-   }
-
-   augment "/nd:networks/nd:network" {
-     description
-       "Add links to the network model.";
-     list link {
-       key "link-id";
-       description
-         "A Network Link connects a by Local (Source) node and
-          a Remote (Destination) Network Nodes via a set of the
-          nodes' termination points.
-          As it is possible to have several links between the same
-          source and destination nodes, and as a link could
-          potentially be re-homed between termination points, to
-          ensure that we would always know to distinguish between
-          links, every link is identified by a dedicated link
-          identifier.
-          Note that a link models a point-to-point link, not a
-          multipoint link.
-          Layering dependencies on links in underlay topologies are
-          not represented as the layering information of nodes and of
-          termination points is sufficient.";
-       container source {
-         description
-           "This container holds the logical source of a particular
-            link.";
-         leaf source-node {
-           type leafref {
-             path "../../../nd:node/nd:node-id";
-           }
-           mandatory true;
-           description
-             "Source node identifier, must be in same topology.";
-         }
-         leaf source-tp {
-           type leafref {
-             path "../../../nd:node[nd:node-id=current()/../"+
-               "source-node]/t-point/tp-id";
-           }
-           description
-             "Termination point within source node that terminates
-              the link.";
-         }
-       }
-       container destination {
-         description
-           "This container holds the logical destination of a
-            particular link.";
-         leaf dest-node {
-           type leafref {
-             path "../../../nd:node/nd:node-id";
-           }
-           mandatory true;
-           description
-             "Destination node identifier, must be in the same
-              network.";
-         }
-         leaf dest-tp {
-           type leafref {
-             path "../../../nd:node[nd:node-id=current()/../"+
-               "dest-node]/t-point/tp-id";
-           }
-           description
-             "Termination point within destination node that
-              terminates the link.";
-         }
-       }
-       leaf link-id {
-         type link-id;
-         description
-           "The identifier of a link in the topology.
-            A link is specific to a topology to which it belongs.";
-       }
-       list supporting-link {
-         key "network-ref link-ref";
-         description
-           "Identifies the link, or links, that this link
-            is dependent on.";
-         leaf network-ref {
-           type leafref {
-             path "../../../nd:supporting-network/nd:network-ref";
-           require-instance false;
-           }
-           description
-             "This leaf identifies in which underlay topology
-              supporting link is present.";
-         }
-         leaf link-ref {
-           type leafref {
-             path "/nd:networks/nd:network[nd:network-id=current()/"+
-               "../network-ref]/link/link-id";
-             require-instance false;
-           }
-           description
-             "This leaf identifies a link which is a part
-              of this link's underlay. Reference loops, in which
-              a link identifies itself as its underlay, either
-              directly or transitively, are not allowed.";
-         }
-       }
-     }
-
-     leaf link-id {
-        type link-id;
-        description
-            "The identifier of a link in the topology.
-             A link is specific to a topology to which it belongs.";
-     }
-   }
-   augment "/nd:networks/nd:network/nd:node" {
-     description
-       "Augment termination points which terminate links.
-        Termination points can ultimately be mapped to interfaces.";
-     list t-point {
-       key "tp-id";
-       description
-         "A termination point can terminate a link.
-          Depending on the type of topology, a termination point
-          could, for example, refer to a port or an interface.";
-       leaf tp-id {
-         type tp-id;
-         description
-           "Termination point identifier.";
-       }
-       list supporting-termination-point {
-         key "network-ref node-ref tp-ref";
-         description
-           "The leaf list identifies any termination points that
-            the termination point is dependent on, or maps onto.
-            Those termination points will themselves be contained
-            in a supporting node.
-            This dependency information can be inferred from
-            the dependencies between links.  For this reason,
-            this item is not separately configurable.  Hence no
-            corresponding constraint needs to be articulated.
-            The corresponding information is simply provided by the
-            implementing system.";
-         leaf network-ref {
-           type leafref {
-             path "../../../nd:supporting-node/nd:network-ref";
-           require-instance false;
-           }
-           description
-             "This leaf identifies in which topology the
-              supporting termination point is present.";
-         }
-         leaf node-ref {
-           type leafref {
-             path "../../../nd:supporting-node/nd:node-ref";
-           require-instance false;
-           }
-           description
-             "This leaf identifies in which node the supporting
-              termination point is present.";
-         }
-         leaf tp-ref {
-           type leafref {
-             path "/nd:networks/nd:network[nd:network-id=current()/"+
-               "../network-ref]/nd:node[nd:node-id=current()/../"+
-               "node-ref]/t-point/tp-id";
-             require-instance false;
-           }
-           description
-             "Reference to the underlay node, must be in a
-              different topology";
-         }
-       }
-     }
-   }
- }
diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/CheckWithNamespace.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/CheckWithNamespace.yang
deleted file mode 100644
index 7e5726e..0000000
--- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/CheckWithNamespace.yang
+++ /dev/null
@@ -1,80 +0,0 @@
-   module check {
-     yang-version 1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-network4:check:namespace";
-     prefix nd;
-
-     organization
-       "IETF I2RS (Interface to the Routing System) Working Group";
-
-     contact
-       "WG Web:    <http://tools.ietf.org/wg/i2rs/>
-        WG List:   <mailto:i2rs@ietf.org>
-
-        WG Chair:  Susan Hares
-                   <mailto:shares@ndzh.com>
-
-        WG Chair:  Jeffrey Haas
-                   <mailto:jhaas@pfrc.org>
-
-        Editor:    Alexander Clemm
-                   <mailto:alex@cisco.com>
-
-        Editor:    Jan Medved
-                   <mailto:jmedved@cisco.com>
-
-        Editor:    Robert Varga
-                   <mailto:rovarga@cisco.com>
-
-        Editor:    Tony Tkacik
-                   <mailto:ttkacik@cisco.com>
-
-        Editor:    Nitin Bahadur
-                   <mailto:nitin_bahadur@yahoo.com>
-
-        Editor:    Hariharan Ananthakrishnan
-                   <mailto:hari@packetdesign.com>";
-
-     description
-       "This module defines a common base model for a collection
-        of nodes in a network. Node definitions are further used
-        in network topologies and inventories.
-
-        Copyright (c) 2015 IETF Trust and the persons identified as
-        authors of the code.  All rights reserved.
-
-        Redistribution and use in source and binary forms, with or
-        without modification, is permitted pursuant to, and subject
-        to the license terms contained in, the Simplified BSD License
-        set forth in Section 4.c of the IETF Trust's Legal Provisions
-        Relating to IETF Documents
-        (http://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of
-        draft-ietf-i2rs-yang-network-topo-02;
-        see the RFC itself for full legal notices.
-
-        NOTE TO RFC EDITOR: Please replace above reference to
-        draft-ietf-i2rs-yang-network-topo-02 with RFC
-        number when published (i.e. RFC xxxx).";
-
-     revision 2015-12-08 {
-       description
-         "Initial revision.
-          NOTE TO RFC EDITOR: Please replace the following reference
-          to draft-ietf-i2rs-yang-network-topo-02 with
-          RFC number when published (i.e. RFC xxxx).";
-       reference
-         "draft-ietf-i2rs-yang-network-topo-02";
-     }
-
-         container networks {
-             leaf id {
-                 type int32;
-             }
-             container network {
-                  leaf ip-address {
-                      type int32;
-                  }
-             }
-         }
-}
diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/norev.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/norev.yang
deleted file mode 100644
index 23eaaba..0000000
--- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/norev.yang
+++ /dev/null
@@ -1,85 +0,0 @@
-   module ietf-network4 {
-     yang-version 1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-network4";
-     prefix nd;
-
-     organization
-       "IETF I2RS (Interface to the Routing System) Working Group";
-
-     contact
-       "WG Web:    <http://tools.ietf.org/wg/i2rs/>
-        WG List:   <mailto:i2rs@ietf.org>
-
-        WG Chair:  Susan Hares
-                   <mailto:shares@ndzh.com>
-
-        WG Chair:  Jeffrey Haas
-                   <mailto:jhaas@pfrc.org>
-
-        Editor:    Alexander Clemm
-                   <mailto:alex@cisco.com>
-
-        Editor:    Jan Medved
-                   <mailto:jmedved@cisco.com>
-
-        Editor:    Robert Varga
-                   <mailto:rovarga@cisco.com>
-
-        Editor:    Tony Tkacik
-                   <mailto:ttkacik@cisco.com>
-
-        Editor:    Nitin Bahadur
-                   <mailto:nitin_bahadur@yahoo.com>
-
-        Editor:    Hariharan Ananthakrishnan
-                   <mailto:hari@packetdesign.com>";
-
-     description
-       "This module defines a common base model for a collection
-        of nodes in a network. Node definitions are further used
-        in network topologies and inventories.
-
-        Copyright (c) 2015 IETF Trust and the persons identified as
-        authors of the code.  All rights reserved.
-
-        Redistribution and use in source and binary forms, with or
-        without modification, is permitted pursuant to, and subject
-        to the license terms contained in, the Simplified BSD License
-        set forth in Section 4.c of the IETF Trust's Legal Provisions
-        Relating to IETF Documents
-        (http://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of
-        draft-ietf-i2rs-yang-network-topo-02;
-        see the RFC itself for full legal notices.
-
-        NOTE TO RFC EDITOR: Please replace above reference to
-        draft-ietf-i2rs-yang-network-topo-02 with RFC
-        number when published (i.e. RFC xxxx).";
-
-     notification network-up {
-         container networks {
-             leaf id {
-                 type int32;
-             }
-             container network {
-                  leaf ip-address {
-                      type int32;
-                  }
-             }
-         }
-      }
-     notification network-down {
-         container networks {
-             leaf id {
-                 type int32;
-             }
-             container network {
-                  leaf ip-address {
-                      type int32;
-                  }
-             }
-         }
-     }
-
-}
diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev.yang
deleted file mode 100644
index ab0cffa..0000000
--- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev.yang
+++ /dev/null
@@ -1,95 +0,0 @@
-   module ietf-network4 {
-     yang-version 1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-network4";
-     prefix nd;
-
-     organization
-       "IETF I2RS (Interface to the Routing System) Working Group";
-
-     contact
-       "WG Web:    <http://tools.ietf.org/wg/i2rs/>
-        WG List:   <mailto:i2rs@ietf.org>
-
-        WG Chair:  Susan Hares
-                   <mailto:shares@ndzh.com>
-
-        WG Chair:  Jeffrey Haas
-                   <mailto:jhaas@pfrc.org>
-
-        Editor:    Alexander Clemm
-                   <mailto:alex@cisco.com>
-
-        Editor:    Jan Medved
-                   <mailto:jmedved@cisco.com>
-
-        Editor:    Robert Varga
-                   <mailto:rovarga@cisco.com>
-
-        Editor:    Tony Tkacik
-                   <mailto:ttkacik@cisco.com>
-
-        Editor:    Nitin Bahadur
-                   <mailto:nitin_bahadur@yahoo.com>
-
-        Editor:    Hariharan Ananthakrishnan
-                   <mailto:hari@packetdesign.com>";
-
-     description
-       "This module defines a common base model for a collection
-        of nodes in a network. Node definitions are further used
-        in network topologies and inventories.
-
-        Copyright (c) 2015 IETF Trust and the persons identified as
-        authors of the code.  All rights reserved.
-
-        Redistribution and use in source and binary forms, with or
-        without modification, is permitted pursuant to, and subject
-        to the license terms contained in, the Simplified BSD License
-        set forth in Section 4.c of the IETF Trust's Legal Provisions
-        Relating to IETF Documents
-        (http://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of
-        draft-ietf-i2rs-yang-network-topo-02;
-        see the RFC itself for full legal notices.
-
-        NOTE TO RFC EDITOR: Please replace above reference to
-        draft-ietf-i2rs-yang-network-topo-02 with RFC
-        number when published (i.e. RFC xxxx).";
-
-     revision 2015-12-08 {
-       description
-         "Initial revision.
-          NOTE TO RFC EDITOR: Please replace the following reference
-          to draft-ietf-i2rs-yang-network-topo-02 with
-          RFC number when published (i.e. RFC xxxx).";
-       reference
-         "draft-ietf-i2rs-yang-network-topo-02";
-     }
-
-     notification network-up {
-         container networks {
-             leaf id {
-                 type int32;
-             }
-             container network {
-                  leaf ip-address {
-                      type int32;
-                  }
-             }
-         }
-      }
-     notification network-down {
-         container networks {
-             leaf id {
-                 type int32;
-             }
-             container network {
-                  leaf ip-address {
-                      type int32;
-                  }
-             }
-         }
-     }
-
-}
diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev2.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev2.yang
deleted file mode 100644
index f7c9a16..0000000
--- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev2.yang
+++ /dev/null
@@ -1,95 +0,0 @@
-   module ietf-network4 {
-     yang-version 1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-network4";
-     prefix nd;
-
-     organization
-       "IETF I2RS (Interface to the Routing System) Working Group";
-
-     contact
-       "WG Web:    <http://tools.ietf.org/wg/i2rs/>
-        WG List:   <mailto:i2rs@ietf.org>
-
-        WG Chair:  Susan Hares
-                   <mailto:shares@ndzh.com>
-
-        WG Chair:  Jeffrey Haas
-                   <mailto:jhaas@pfrc.org>
-
-        Editor:    Alexander Clemm
-                   <mailto:alex@cisco.com>
-
-        Editor:    Jan Medved
-                   <mailto:jmedved@cisco.com>
-
-        Editor:    Robert Varga
-                   <mailto:rovarga@cisco.com>
-
-        Editor:    Tony Tkacik
-                   <mailto:ttkacik@cisco.com>
-
-        Editor:    Nitin Bahadur
-                   <mailto:nitin_bahadur@yahoo.com>
-
-        Editor:    Hariharan Ananthakrishnan
-                   <mailto:hari@packetdesign.com>";
-
-     description
-       "This module defines a common base model for a collection
-        of nodes in a network. Node definitions are further used
-        in network topologies and inventories.
-
-        Copyright (c) 2015 IETF Trust and the persons identified as
-        authors of the code.  All rights reserved.
-
-        Redistribution and use in source and binary forms, with or
-        without modification, is permitted pursuant to, and subject
-        to the license terms contained in, the Simplified BSD License
-        set forth in Section 4.c of the IETF Trust's Legal Provisions
-        Relating to IETF Documents
-        (http://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of
-        draft-ietf-i2rs-yang-network-topo-02;
-        see the RFC itself for full legal notices.
-
-        NOTE TO RFC EDITOR: Please replace above reference to
-        draft-ietf-i2rs-yang-network-topo-02 with RFC
-        number when published (i.e. RFC xxxx).";
-
-     revision 2016-12-08 {
-       description
-         "Initial revision.
-          NOTE TO RFC EDITOR: Please replace the following reference
-          to draft-ietf-i2rs-yang-network-topo-02 with
-          RFC number when published (i.e. RFC xxxx).";
-       reference
-         "draft-ietf-i2rs-yang-network-topo-02";
-     }
-
-     notification network-up {
-         container networks {
-             leaf id {
-                 type int32;
-             }
-             container network {
-                  leaf ip-address {
-                      type int32;
-                  }
-             }
-         }
-      }
-     notification network-down {
-         container networks {
-             leaf id {
-                 type int32;
-             }
-             container network {
-                  leaf ip-address {
-                      type int32;
-                  }
-             }
-         }
-     }
-
-}
diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev3.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev3.yang
deleted file mode 100644
index f4abc06..0000000
--- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev3.yang
+++ /dev/null
@@ -1,95 +0,0 @@
-   module ietf-network4 {
-     yang-version 1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-network4";
-     prefix nd;
-
-     organization
-       "IETF I2RS (Interface to the Routing System) Working Group";
-
-     contact
-       "WG Web:    <http://tools.ietf.org/wg/i2rs/>
-        WG List:   <mailto:i2rs@ietf.org>
-
-        WG Chair:  Susan Hares
-                   <mailto:shares@ndzh.com>
-
-        WG Chair:  Jeffrey Haas
-                   <mailto:jhaas@pfrc.org>
-
-        Editor:    Alexander Clemm
-                   <mailto:alex@cisco.com>
-
-        Editor:    Jan Medved
-                   <mailto:jmedved@cisco.com>
-
-        Editor:    Robert Varga
-                   <mailto:rovarga@cisco.com>
-
-        Editor:    Tony Tkacik
-                   <mailto:ttkacik@cisco.com>
-
-        Editor:    Nitin Bahadur
-                   <mailto:nitin_bahadur@yahoo.com>
-
-        Editor:    Hariharan Ananthakrishnan
-                   <mailto:hari@packetdesign.com>";
-
-     description
-       "This module defines a common base model for a collection
-        of nodes in a network. Node definitions are further used
-        in network topologies and inventories.
-
-        Copyright (c) 2015 IETF Trust and the persons identified as
-        authors of the code.  All rights reserved.
-
-        Redistribution and use in source and binary forms, with or
-        without modification, is permitted pursuant to, and subject
-        to the license terms contained in, the Simplified BSD License
-        set forth in Section 4.c of the IETF Trust's Legal Provisions
-        Relating to IETF Documents
-        (http://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of
-        draft-ietf-i2rs-yang-network-topo-02;
-        see the RFC itself for full legal notices.
-
-        NOTE TO RFC EDITOR: Please replace above reference to
-        draft-ietf-i2rs-yang-network-topo-02 with RFC
-        number when published (i.e. RFC xxxx).";
-
-     revision 2014-12-08 {
-       description
-         "Initial revision.
-          NOTE TO RFC EDITOR: Please replace the following reference
-          to draft-ietf-i2rs-yang-network-topo-02 with
-          RFC number when published (i.e. RFC xxxx).";
-       reference
-         "draft-ietf-i2rs-yang-network-topo-02";
-     }
-
-     notification network-up {
-         container networks {
-             leaf id {
-                 type int32;
-             }
-             container network {
-                  leaf ip-address {
-                      type int32;
-                  }
-             }
-         }
-      }
-     notification network-down {
-         container networks {
-             leaf id {
-                 type int32;
-             }
-             container network {
-                  leaf ip-address {
-                      type int32;
-                  }
-             }
-         }
-     }
-
-}
diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev4.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev4.yang
deleted file mode 100644
index 9352fb4..0000000
--- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev4.yang
+++ /dev/null
@@ -1,76 +0,0 @@
-   module ietf-network4 {
-     yang-version 1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-network4";
-     prefix nd;
-
-     organization
-       "IETF I2RS (Interface to the Routing System) Working Group";
-
-     contact
-       "WG Web:    <http://tools.ietf.org/wg/i2rs/>
-        WG List:   <mailto:i2rs@ietf.org>
-
-        WG Chair:  Susan Hares
-                   <mailto:shares@ndzh.com>
-
-        WG Chair:  Jeffrey Haas
-                   <mailto:jhaas@pfrc.org>
-
-        Editor:    Alexander Clemm
-                   <mailto:alex@cisco.com>
-
-        Editor:    Jan Medved
-                   <mailto:jmedved@cisco.com>
-
-        Editor:    Robert Varga
-                   <mailto:rovarga@cisco.com>
-
-        Editor:    Tony Tkacik
-                   <mailto:ttkacik@cisco.com>
-
-        Editor:    Nitin Bahadur
-                   <mailto:nitin_bahadur@yahoo.com>
-
-        Editor:    Hariharan Ananthakrishnan
-                   <mailto:hari@packetdesign.com>";
-
-     description
-       "This module defines a common base model for a collection
-        of nodes in a network. Node definitions are further used
-        in network topologies and inventories.
-
-        Copyright (c) 2015 IETF Trust and the persons identified as
-        authors of the code.  All rights reserved.
-
-        Redistribution and use in source and binary forms, with or
-        without modification, is permitted pursuant to, and subject
-        to the license terms contained in, the Simplified BSD License
-        set forth in Section 4.c of the IETF Trust's Legal Provisions
-        Relating to IETF Documents
-        (http://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of
-        draft-ietf-i2rs-yang-network-topo-02;
-        see the RFC itself for full legal notices.
-
-        NOTE TO RFC EDITOR: Please replace above reference to
-        draft-ietf-i2rs-yang-network-topo-02 with RFC
-        number when published (i.e. RFC xxxx).";
-
-     revision 2017-12-08 {
-       description
-         "Initial revision.
-          NOTE TO RFC EDITOR: Please replace the following reference
-          to draft-ietf-i2rs-yang-network-topo-02 with
-          RFC number when published (i.e. RFC xxxx).";
-       reference
-         "draft-ietf-i2rs-yang-network-topo-02";
-     }
-
-     container network {
-          leaf ip {
-             type int32;
-          }
-     }
-
-}
diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/withNotification/ysr1.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/withNotification/ysr1.yang
deleted file mode 100644
index a58e99d..0000000
--- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/withNotification/ysr1.yang
+++ /dev/null
@@ -1,95 +0,0 @@
-   module ietf-network1 {
-     yang-version 1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-network1";
-     prefix nd;
-
-     organization
-       "IETF I2RS (Interface to the Routing System) Working Group";
-
-     contact
-       "WG Web:    <http://tools.ietf.org/wg/i2rs/>
-        WG List:   <mailto:i2rs@ietf.org>
-
-        WG Chair:  Susan Hares
-                   <mailto:shares@ndzh.com>
-
-        WG Chair:  Jeffrey Haas
-                   <mailto:jhaas@pfrc.org>
-
-        Editor:    Alexander Clemm
-                   <mailto:alex@cisco.com>
-
-        Editor:    Jan Medved
-                   <mailto:jmedved@cisco.com>
-
-        Editor:    Robert Varga
-                   <mailto:rovarga@cisco.com>
-
-        Editor:    Tony Tkacik
-                   <mailto:ttkacik@cisco.com>
-
-        Editor:    Nitin Bahadur
-                   <mailto:nitin_bahadur@yahoo.com>
-
-        Editor:    Hariharan Ananthakrishnan
-                   <mailto:hari@packetdesign.com>";
-
-     description
-       "This module defines a common base model for a collection
-        of nodes in a network. Node definitions are further used
-        in network topologies and inventories.
-
-        Copyright (c) 2015 IETF Trust and the persons identified as
-        authors of the code.  All rights reserved.
-
-        Redistribution and use in source and binary forms, with or
-        without modification, is permitted pursuant to, and subject
-        to the license terms contained in, the Simplified BSD License
-        set forth in Section 4.c of the IETF Trust's Legal Provisions
-        Relating to IETF Documents
-        (http://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of
-        draft-ietf-i2rs-yang-network-topo-02;
-        see the RFC itself for full legal notices.
-
-        NOTE TO RFC EDITOR: Please replace above reference to
-        draft-ietf-i2rs-yang-network-topo-02 with RFC
-        number when published (i.e. RFC xxxx).";
-
-     revision 2015-12-08 {
-       description
-         "Initial revision.
-          NOTE TO RFC EDITOR: Please replace the following reference
-          to draft-ietf-i2rs-yang-network-topo-02 with
-          RFC number when published (i.e. RFC xxxx).";
-       reference
-         "draft-ietf-i2rs-yang-network-topo-02";
-     }
-
-     notification network-up {
-         container networks {
-             leaf id {
-                 type int32;
-             }
-             container network {
-                  leaf ip-address {
-                      type int32;
-                  }
-             }
-         }
-      }
-     notification network-down {
-         container networks {
-             leaf id {
-                 type int32;
-             }
-             container network {
-                  leaf ip-address {
-                      type int32;
-                  }
-             }
-         }
-     }
-
-}
diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/withNotification/ysr2.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/withNotification/ysr2.yang
deleted file mode 100644
index c241068..0000000
--- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/withNotification/ysr2.yang
+++ /dev/null
@@ -1,95 +0,0 @@
-   module ietf-network2 {
-     yang-version 1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-network2";
-     prefix nd;
-
-     organization
-       "IETF I2RS (Interface to the Routing System) Working Group";
-
-     contact
-       "WG Web:    <http://tools.ietf.org/wg/i2rs/>
-        WG List:   <mailto:i2rs@ietf.org>
-
-        WG Chair:  Susan Hares
-                   <mailto:shares@ndzh.com>
-
-        WG Chair:  Jeffrey Haas
-                   <mailto:jhaas@pfrc.org>
-
-        Editor:    Alexander Clemm
-                   <mailto:alex@cisco.com>
-
-        Editor:    Jan Medved
-                   <mailto:jmedved@cisco.com>
-
-        Editor:    Robert Varga
-                   <mailto:rovarga@cisco.com>
-
-        Editor:    Tony Tkacik
-                   <mailto:ttkacik@cisco.com>
-
-        Editor:    Nitin Bahadur
-                   <mailto:nitin_bahadur@yahoo.com>
-
-        Editor:    Hariharan Ananthakrishnan
-                   <mailto:hari@packetdesign.com>";
-
-     description
-       "This module defines a common base model for a collection
-        of nodes in a network. Node definitions are further used
-        in network topologies and inventories.
-
-        Copyright (c) 2015 IETF Trust and the persons identified as
-        authors of the code.  All rights reserved.
-
-        Redistribution and use in source and binary forms, with or
-        without modification, is permitted pursuant to, and subject
-        to the license terms contained in, the Simplified BSD License
-        set forth in Section 4.c of the IETF Trust's Legal Provisions
-        Relating to IETF Documents
-        (http://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of
-        draft-ietf-i2rs-yang-network-topo-02;
-        see the RFC itself for full legal notices.
-
-        NOTE TO RFC EDITOR: Please replace above reference to
-        draft-ietf-i2rs-yang-network-topo-02 with RFC
-        number when published (i.e. RFC xxxx).";
-
-     revision 2015-12-08 {
-       description
-         "Initial revision.
-          NOTE TO RFC EDITOR: Please replace the following reference
-          to draft-ietf-i2rs-yang-network-topo-02 with
-          RFC number when published (i.e. RFC xxxx).";
-       reference
-         "draft-ietf-i2rs-yang-network-topo-02";
-     }
-
-     notification network-up {
-         container networks {
-             leaf id {
-                 type int32;
-             }
-             container network {
-                  leaf ip-address {
-                      type int32;
-                  }
-             }
-         }
-      }
-     notification network-down {
-         container networks {
-             leaf id {
-                 type int32;
-             }
-             container network {
-                  leaf ip-address {
-                      type int32;
-                  }
-             }
-         }
-     }
-
-}
diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/withoutNotification/ysr3.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/withoutNotification/ysr3.yang
deleted file mode 100644
index 0e86062..0000000
--- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/withoutNotification/ysr3.yang
+++ /dev/null
@@ -1,81 +0,0 @@
-   module ietf-network3 {
-     yang-version 1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-network3";
-     prefix nd;
-
-     organization
-       "IETF I2RS (Interface to the Routing System) Working Group";
-
-     contact
-       "WG Web:    <http://tools.ietf.org/wg/i2rs/>
-        WG List:   <mailto:i2rs@ietf.org>
-
-        WG Chair:  Susan Hares
-                   <mailto:shares@ndzh.com>
-
-        WG Chair:  Jeffrey Haas
-                   <mailto:jhaas@pfrc.org>
-
-        Editor:    Alexander Clemm
-                   <mailto:alex@cisco.com>
-
-        Editor:    Jan Medved
-                   <mailto:jmedved@cisco.com>
-
-        Editor:    Robert Varga
-                   <mailto:rovarga@cisco.com>
-
-        Editor:    Tony Tkacik
-                   <mailto:ttkacik@cisco.com>
-
-        Editor:    Nitin Bahadur
-                   <mailto:nitin_bahadur@yahoo.com>
-
-        Editor:    Hariharan Ananthakrishnan
-                   <mailto:hari@packetdesign.com>";
-
-     description
-       "This module defines a common base model for a collection
-        of nodes in a network. Node definitions are further used
-        in network topologies and inventories.
-
-        Copyright (c) 2015 IETF Trust and the persons identified as
-        authors of the code.  All rights reserved.
-
-        Redistribution and use in source and binary forms, with or
-        without modification, is permitted pursuant to, and subject
-        to the license terms contained in, the Simplified BSD License
-        set forth in Section 4.c of the IETF Trust's Legal Provisions
-        Relating to IETF Documents
-        (http://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of
-        draft-ietf-i2rs-yang-network-topo-02;
-        see the RFC itself for full legal notices.
-
-        NOTE TO RFC EDITOR: Please replace above reference to
-        draft-ietf-i2rs-yang-network-topo-02 with RFC
-        number when published (i.e. RFC xxxx).";
-
-     revision 2015-12-08 {
-       description
-         "Initial revision.
-          NOTE TO RFC EDITOR: Please replace the following reference
-          to draft-ietf-i2rs-yang-network-topo-02 with
-          RFC number when published (i.e. RFC xxxx).";
-       reference
-         "draft-ietf-i2rs-yang-network-topo-02";
-     }
-
-     container networks {
-         leaf id {
-            type int32;
-         }
-         container network {
-              leaf ip-address {
-                  type int32;
-              }
-         }
-     }
-
-}
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput.yang
deleted file mode 100644
index 2e8d1b3..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput.yang
+++ /dev/null
@@ -1,20 +0,0 @@
-module YtbAugmentForRpcInput {
-    yang-version 1;
-    namespace "yms:test:ytb:augment:for:rpc:input";
-    prefix "sch";
-    import YtbRpcResponseWithAdvancedInputAndOutput {
-        prefix rpc;
-    }
-    revision "2016-08-26";
-
-    augment "/rpc:activate-software-image/rpc:output/" {
-        choice selection {
-            list value-in {
-                key "kinetic";
-                leaf kinetic {
-                    type "string";
-                }
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput2.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput2.yang
deleted file mode 100644
index af59b47..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput2.yang
+++ /dev/null
@@ -1,17 +0,0 @@
-module YtbAugmentForRpcInput2 {
-    yang-version 1;
-    namespace "yms:test:ytb:augment:for:rpc:input";
-    prefix "sch";
-    import YtbRpcResponseWithAdvancedInputAndOutput {
-        prefix input;
-    }
-    revision "2016-08-26";
-    augment "/input:activate-software-image/input:output/" {
-        list friction {
-            key "speed";
-            leaf speed {
-                type uint64;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentFromAnotherFile.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentFromAnotherFile.yang
deleted file mode 100644
index 990bf55..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentFromAnotherFile.yang
+++ /dev/null
@@ -1,41 +0,0 @@
-module YtbAugmentFromAnotherFile {
-    yang-version 1;
-    namespace "yms:test:ytb:augment:from:another:file";
-    prefix "sch";
-    import yms-ietf-network {
-        prefix nd;
-    }
-    revision "2016-08-26";
-
-    augment "/nd:networks/nd:network/nd:node" {
-        list termination-point {
-            key "tp-id";
-            leaf tp-id {
-                type string;
-            }
-            list supporting-termination-point {
-                key "network-ref node-ref tp-ref";
-                leaf network-ref {
-                    type leafref {
-                        path "../../../nd:supporting-node/nd:network-ref";
-                        require-instance false;
-                    }
-                }
-                leaf node-ref {
-                    type leafref {
-                        path "../../../nd:supporting-node/nd:node-ref";
-                        require-instance false;
-                    }
-                }
-                leaf tp-ref {
-                    type leafref {
-                        path "/nd:networks/nd:network[nd:network-id=current()/"+
-                            "../network-ref]/nd:node[nd:node-id=current()/../"+
-                            "node-ref]/termination-point/tp-id";
-                        require-instance false;
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbChoiceWithContainerAndLeafList.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbChoiceWithContainerAndLeafList.yang
deleted file mode 100644
index 9ae462e..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbChoiceWithContainerAndLeafList.yang
+++ /dev/null
@@ -1,76 +0,0 @@
-module YtbChoiceWithContainerAndLeafList {
-    yang-version 1;
-    namespace "yms:test:ytb:choice:with:container:and:leaf:list";
-    prefix "sch";
-    revision "2016-08-26";
-    leaf refer {
-        type binary;
-    }
-    rpc invalid1 {
-        input {
-            leaf value {
-                type string;
-            }
-        }
-        output {
-            leaf value {
-                type string;
-            }
-        }
-    }
-    choice content-test {
-        leaf-list list-items {
-            type leafref {
-                path "/refer";
-            }
-        }
-        container choice-container {
-            list predict {
-                config "false";
-                container reproduce {
-                    leaf catch {
-                        type int16;
-                    }
-                }
-            }
-        }
-        case valid {
-            list validlistincase {
-                config "false";
-                leaf validity {
-                    type int32;
-                }
-            }
-        }
-        case invalid {
-            leaf create-invalid {
-                type uint16;
-            }
-        }
-    }
-    notification invalid {
-        leaf value {
-            type string;
-        }
-    }
-    notification invalid2 {
-        list node {
-            config false;
-            leaf value {
-                type string;
-            }
-        }
-    }
-    choice current-value {
-        case ytb-present {
-            leaf-list represent {
-                type uint32;
-            }
-        }
-        case ytb-absent {
-            leaf-list final {
-                type instance-identifier;
-            }
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbDataType.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbDataType.yang
deleted file mode 100644
index 3d2e7c8..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbDataType.yang
+++ /dev/null
@@ -1,48 +0,0 @@
-module YtbDataType {
-    yang-version 1;
-    namespace "yms:test:ytb:data:type";
-    prefix "data";
-    revision "2016-08-26";
-    // Enum with all combinations.
-    typedef enum-der-1 {
-        type enum-der-2;
-    }
-    typedef enum-der-2 {
-        type enumeration {
-            enum ten { value "10";}
-            enum hundred { value "100";}
-            enum thousand { value "1000"; }
-        }
-    }
-    leaf enum {
-        type enum-der-1;
-    }
-    leaf-list enum-leaf-list {
-        type union {
-            type uint64;
-            type enumeration {
-                enum ten { value "10";}
-                enum hundred { value "100";}
-                enum thousand { value "1000"; }
-            }
-        }
-    }
-    leaf union-enum {
-        type union {
-            type enumeration {
-                enum ten { value "10";}
-                enum hundred { value "100";}
-                enum thousand { value "1000"; }
-            }
-            type enum-der-1;
-        }
-    }
-    leaf-list leaf-ref-enum {
-        type leafref {
-            path "/enum";
-        }
-    }
-
-
-
-}
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbDerivedTypeWithBitsAndBinary.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbDerivedTypeWithBitsAndBinary.yang
deleted file mode 100644
index 1ca30a4..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbDerivedTypeWithBitsAndBinary.yang
+++ /dev/null
@@ -1,56 +0,0 @@
-module YtbDerivedTypeWithBitsAndBinary {
-    yang-version 1;
-    namespace "yms:test:ytb:derived:type:with:bits:and:binary";
-    prefix "sch";
-    revision "2016-08-26";
-
-    typedef derivedbinarya {
-        type derivedbinaryb;
-    }
-
-    typedef derivedbinaryb {
-        type binary;
-    }
-
-    typedef derivedbitsa {
-        type derivedbitsb;
-    }
-
-    typedef derivedbitsb {
-        type bits {
-            bit index {
-                position 1;
-            }
-            bit name {
-                position 10;
-            }
-            bit signature {
-                position 100;
-            }
-        }
-    }
-
-    leaf forbinary {
-        type derivedbinarya;
-    }
-
-    leaf forbits {
-        type derivedbitsa;
-    }
-
-    leaf-list forbinarylist {
-        type derivedbinarya;
-    }
-
-    leaf-list forbitslist {
-        type derivedbitsa;
-    }
-
-    leaf forunion {
-        type union {
-            type binary;
-            type int8;
-        }
-    }
-}
-
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbEmptyType.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbEmptyType.yang
deleted file mode 100644
index 8fcb277..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbEmptyType.yang
+++ /dev/null
@@ -1,45 +0,0 @@
-module YtbEmptyType {
-    yang-version 1;
-    namespace "yms:test:ytb:empty:type";
-    prefix "data";
-    revision "2016-08-26";
-    typedef emp-type {
-        type emp-type2;
-    }
-    typedef emp-type2 {
-        type empty;
-    }
-    typedef emp-type3 {
-        type leafref {
-            path "/empty";
-        }
-    }
-    leaf empty {
-        type empty;
-    }
-    leaf-list empty-list {
-        type empty;
-    }
-    leaf empty-ref {
-        type leafref {
-            path "/empty";
-        }
-    }
-    leaf-list empty-list-ref {
-        type leafref {
-            path "/empty-list";
-        }
-    }
-    leaf empty-type {
-        type emp-type;
-    }
-    leaf-list empty-list-type {
-        type emp-type;
-    }
-    leaf empty-ref-type {
-        type emp-type3;
-    }
-    leaf-list empty-list-ref-type {
-        type emp-type3;
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbIetfSchedule.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbIetfSchedule.yang
deleted file mode 100644
index 84c908b..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbIetfSchedule.yang
+++ /dev/null
@@ -1,29 +0,0 @@
-module YtbIetfSchedule {
-    yang-version 1;
-    namespace "yms:test:ytb:module:with:leaf:ietfschedule";
-    prefix "sch";
-    revision "2016-08-26";
-        leaf time {
-            type int8;
-        }
-        leaf enum1 {
-        type enumeration {
-                      enum ten { value "10";}
-                      enum hundred { value "100";}
-                      enum thousand { value "1000"; }
-                    }
-        }
-        leaf-list enum2 {
-        type enumeration {
-                      enum ten-10 { value "10";}
-                      enum hundred-100 { value "100";}
-                      enum thousand-1000 { value "1000"; }
-                    }
-        }
-    container monitor {
-        leaf check {
-            type uint8;
-        }
-    }
-}
-
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithContainer.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithContainer.yang
deleted file mode 100644
index d611bee..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithContainer.yang
+++ /dev/null
@@ -1,13 +0,0 @@
-module YtbModuleWithContainer {
-    yang-version 1;
-    namespace "yms:test:ytb:module:with:container";
-    prefix "sch";
-    revision "2016-08-26";
-    container sched {
-        leaf predict {
-            type decimal64 {
-                fraction-digits 2;
-            }
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithLeafList.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithLeafList.yang
deleted file mode 100644
index 3d02384..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithLeafList.yang
+++ /dev/null
@@ -1,9 +0,0 @@
-module YtbModuleWithLeafList {
-    yang-version 1;
-    namespace "yms:test:ytb:module:with:leaflist";
-    prefix "sch";
-    revision "2016-08-26";
-    leaf-list time {
-        type int64;
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithList.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithList.yang
deleted file mode 100644
index 297a8f4..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithList.yang
+++ /dev/null
@@ -1,15 +0,0 @@
-module YtbModuleWithList {
-    yang-version 1;
-    namespace "yms:test:ytb:module:with:list";
-    prefix "sch";
-    revision "2016-08-26";
-    list ytblistlist {
-        config false;
-        leaf-list prediction {
-            type find;
-        }
-    }
-    typedef find {
-        type boolean;
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiModulea.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiModulea.yang
deleted file mode 100644
index 523f400..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiModulea.yang
+++ /dev/null
@@ -1,12 +0,0 @@
-module YtbMultiModulea {
-    yang-version 1;
-    namespace "yms:test:ytb:multi:module:a";
-    prefix "sch";
-    revision "2016-08-26";
-    list ytbmultilist {
-        config false;
-        leaf-list check {
-            type uint64;
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiModuleb.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiModuleb.yang
deleted file mode 100644
index 7c2c257..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiModuleb.yang
+++ /dev/null
@@ -1,12 +0,0 @@
-module YtbMultiModuleb {
-    yang-version 1;
-    namespace "yms:test:ytb:multi:module:b";
-    prefix "sch";
-    revision "2016-08-26";
-    list ytbmultilistb {
-        config false;
-        leaf-list checkin {
-            type string;
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiNotificationWithContainer.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiNotificationWithContainer.yang
deleted file mode 100644
index 9a66110..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiNotificationWithContainer.yang
+++ /dev/null
@@ -1,31 +0,0 @@
-module YtbMultiNotificationWithContainer {
-    yang-version 1;
-    namespace "yms:test:ytb:multi:notification:with:container";
-    prefix "sch";
-    revision "2016-08-26";
-    notification fortesta {
-        container ytbnot {
-            leaf notileaf {
-                type bits {
-                    bit leaf1 {
-                        position 0;
-                    }
-                    bit leaf2 {
-                        position 1;
-                    }
-                }
-            }
-        }
-    }
-    list cumulative {
-        key "sum";
-        leaf sum {
-            type int8;
-        }
-    }
-    notification fortestb {
-        leaf-list notileaflist {
-            type empty;
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbRpcResponseWithAdvancedInputAndOutput.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbRpcResponseWithAdvancedInputAndOutput.yang
deleted file mode 100644
index c9f708e..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbRpcResponseWithAdvancedInputAndOutput.yang
+++ /dev/null
@@ -1,39 +0,0 @@
-module YtbRpcResponseWithAdvancedInputAndOutput {
-    yang-version 1;
-    namespace "yms:test:ytb:rpc:response:with:advanced:input:and:output";
-    prefix "sch";
-    revision "2016-08-26";
-    leaf refer {
-        type binary;
-    }
-    rpc activate-software-image {
-        input {
-            container final {
-                leaf-list value {
-                    type uint16;
-                }
-            }
-        }
-        output {
-            list output-list {
-                key "list-key";
-                leaf list-key {
-                    type leafref {
-                        path "/refer";
-                    }
-                }
-                container content_inside {
-                    leaf-list available {
-                        type int16;
-                    }
-                }
-            }
-        }
-    }
-    list cumulative {
-        key "sum";
-        leaf sum {
-            type int8;
-        }
-    }
-}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleAugment.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleAugment.yang
deleted file mode 100644
index 919d5ed..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleAugment.yang
+++ /dev/null
@@ -1,26 +0,0 @@
-module YtbSimpleAugment {
-    yang-version 1;
-    namespace "yms:test:ytb:simple:augment";
-    prefix "sch";
-    revision "2016-08-26";
-    container cont1 {
-        container cont2 {
-            leaf fine {
-                type string;
-            }
-        }
-     }
-
-    augment /cont1/cont2 {
-        leaf leaf4 {
-            type int32;
-        }
-        container cont1s {
-            container cont1s {
-                leaf fine {
-                    type string;
-                }
-            }
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleChoiceCase.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleChoiceCase.yang
deleted file mode 100644
index 818d04e..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleChoiceCase.yang
+++ /dev/null
@@ -1,23 +0,0 @@
-module YtbSimpleChoiceCase {
-    yang-version 1;
-    namespace "yms:test:ytb:simple:choice:case";
-    prefix "sch";
-    revision "2016-08-26";
-    container YtbFood {
-       choice YtbSnack {
-           case ytb-sports-arena {
-               leaf pretzel {
-                   type string;
-               }
-               leaf beer {
-                   type string;
-               }
-           }
-           case ytb-late-night {
-               leaf chocolate {
-                   type string;
-               }
-           }
-       }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleRpcResponse.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleRpcResponse.yang
deleted file mode 100644
index 7aaa50f..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleRpcResponse.yang
+++ /dev/null
@@ -1,26 +0,0 @@
-module YtbSimpleRpcResponse {
-    yang-version 1;
-    namespace "yms:test:ytb:simple:rpc:response";
-    prefix "sch";
-    revision "2016-08-26";
-    container ytb-rpc-cont {
-        leaf vary {
-            type uint8;
-        }
-    }
-    rpc rpc {
-        input {
-        }
-        output {
-            leaf output-leaf {
-                type uint32;
-            }
-        }
-    }
-    list cumulative {
-        key "sum";
-        leaf sum {
-            type int8;
-        }
-    }
-}
diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbTreeBuilderForListHavingList.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbTreeBuilderForListHavingList.yang
deleted file mode 100644
index bd58e30..0000000
--- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbTreeBuilderForListHavingList.yang
+++ /dev/null
@@ -1,26 +0,0 @@
-module YtbTreeBuilderForListHavingList {
-    yang-version 1;
-    namespace "yms:test:ytb:tree:builder:for:list:having:list";
-    prefix "sch";
-    revision "2016-08-26";
-    container carrier {
-        list multiplexes {
-            key "types";
-            list application-areas {
-                config false;
-                leaf-list destination-areas {
-                    type binary;
-                }
-            }
-            leaf types {
-                type enumeration {
-                    enum space-division;
-                    enum frequency-division;
-                    enum time-division {
-                        value 3;
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/models/huawei/BUILD b/models/huawei/BUILD
deleted file mode 100644
index 93be622..0000000
--- a/models/huawei/BUILD
+++ /dev/null
@@ -1,7 +0,0 @@
-load("//tools/build/bazel:yang.bzl", "yang_model")
-
-yang_model(
-    app_name = "org.onosproject.models.huawei",
-    custom_registrator = True,
-    title = "Huawei YANG Models",
-)
diff --git a/models/huawei/src/main/java/org/onosproject/HuaweiModelRegistrator.java b/models/huawei/src/main/java/org/onosproject/HuaweiModelRegistrator.java
deleted file mode 100644
index ea5e7cc..0000000
--- a/models/huawei/src/main/java/org/onosproject/HuaweiModelRegistrator.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.models.huawei;
-
-import com.google.common.collect.ImmutableMap;
-import org.osgi.service.component.annotations.Component;
-import org.onosproject.yang.AbstractYangModelRegistrator;
-import org.onosproject.yang.gen.v1.nebgpcomm.rev20141225.NeBgpcomm;
-import org.onosproject.yang.gen.v1.nebgpcommtype.rev20141225.NeBgpcommType;
-import org.onosproject.yang.gen.v1.nel3vpnapi.rev20141225.NeL3VpnApi;
-import org.onosproject.yang.gen.v1.nel3vpncomm.rev20141225.NeL3Vpncomm;
-import org.onosproject.yang.gen.v1.nel3vpncommtype.rev20141225.NeL3VpncommType;
-import org.onosproject.yang.gen.v1.netnlm.rev20141225.NeTnlm;
-import org.onosproject.yang.gen.v1.netnlmtype.rev20141225.NeTnlmType;
-import org.onosproject.yang.model.DefaultYangModuleId;
-import org.onosproject.yang.model.YangModuleId;
-import org.onosproject.yang.runtime.AppModuleInfo;
-import org.onosproject.yang.runtime.DefaultAppModuleInfo;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Representation of huawei model registrator which registers huawei device
- * models.
- */
-@Component(immediate = true)
-public class HuaweiModelRegistrator extends AbstractYangModelRegistrator {
-
-    private static final String MODEL_VERSION = "2014-12-25";
-
-    /**
-     * Creates L3VPN model registrator.
-     */
-    public HuaweiModelRegistrator() {
-        super(HuaweiModelRegistrator.class, getAppInfo());
-    }
-
-    private static Map<YangModuleId, AppModuleInfo> getAppInfo() {
-        Map<YangModuleId, AppModuleInfo> appInfo = new HashMap<>();
-        appInfo.put(new DefaultYangModuleId("ne-bgpcomm", MODEL_VERSION),
-                    new DefaultAppModuleInfo(NeBgpcomm.class, null));
-        appInfo.put(new DefaultYangModuleId("ne-bgpcomm-type", MODEL_VERSION),
-                    new DefaultAppModuleInfo(NeBgpcommType.class, null));
-        appInfo.put(new DefaultYangModuleId("ne-l3vpn-api", MODEL_VERSION),
-                    new DefaultAppModuleInfo(NeL3VpnApi.class, null));
-        appInfo.put(new DefaultYangModuleId("ne-l3vpncomm", MODEL_VERSION),
-                    new DefaultAppModuleInfo(NeL3Vpncomm.class, null));
-        appInfo.put(new DefaultYangModuleId("ne-l3vpncomm-type", MODEL_VERSION),
-                    new DefaultAppModuleInfo(NeL3VpncommType.class, null));
-        appInfo.put(new DefaultYangModuleId("ne-tnlm", MODEL_VERSION),
-                    new DefaultAppModuleInfo(NeTnlm.class, null));
-        appInfo.put(new DefaultYangModuleId("ne-tnlm-type", MODEL_VERSION),
-                    new DefaultAppModuleInfo(NeTnlmType.class, null));
-        return ImmutableMap.copyOf(appInfo);
-    }
-}
diff --git a/models/huawei/src/main/java/org/onosproject/package-info.java b/models/huawei/src/main/java/org/onosproject/package-info.java
deleted file mode 100644
index 0169ca5..0000000
--- a/models/huawei/src/main/java/org/onosproject/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-/**
- * Huawei YANG models.
- */
-package org.onosproject.models.huawei;
diff --git a/models/huawei/src/main/yang/ne-bgpcomm-type@2014-12-25.yang b/models/huawei/src/main/yang/ne-bgpcomm-type@2014-12-25.yang
deleted file mode 100644
index 28f98e4..0000000
--- a/models/huawei/src/main/yang/ne-bgpcomm-type@2014-12-25.yang
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-WARNING:
-This yang model is just for fuction ONOS opensource project demo purpose only,
-And is subject to change in future, Huawei does not commit provide compatibilty
-in commercial product.
-*/
-module ne-bgpcomm-type {
-    namespace "ne-bgpcomm-type";
-    prefix bgpcomm-type;
-    organization "Huawei Technologies Co., Ltd";
-    contact "Huawei Industrial Base
-     Bantian, Longgang
-     Shenzhen 518129
-     People's Republic of China
-     Website: http://www.huawei.com
-     Email: support@huawei.com";
-    description "ne-bgpcomm-type yang";
-    revision "2014-12-25" {
-        description "Initial version";
-    }
-    typedef bgpcommImRouteProtocol {
-        type enumeration {
-            enum "direct" {
-                value 0;
-                description "direct:";
-            }
-            enum "ospf" {
-                value 1;
-                description "ospf:";
-            }
-            enum "isis" {
-                value 2;
-                description "isis:";
-            }
-            enum "static" {
-                value 3;
-                description "static:";
-            }
-            enum "rip" {
-                value 4;
-                description "rip:";
-            }
-            enum "ospfv3" {
-                value 5;
-                description "ospfv3:";
-            }
-            enum "ripng" {
-                value 6;
-                description "ripng:";
-            }
-            enum "unr" {
-                value 7;
-                description "unr:";
-            }
-            enum "op-route" {
-                value 8;
-                description "op-route:";
-            }
-        }
-        description "";
-    }
-    typedef bgpcommPrefixType {
-        type enumeration {
-            enum "ipv4uni" {
-                value 0;
-                description "ipv4uni:";
-            }
-            enum "ipv4multi" {
-                value 1;
-                description "ipv4multi:";
-            }
-            enum "ipv4vpn" {
-                value 2;
-                description "ipv4vpn:";
-            }
-            enum "ipv6uni" {
-                value 3;
-                description "ipv6uni:";
-            }
-            enum "ipv6vpn" {
-                value 4;
-                description "ipv6vpn:";
-            }
-            enum "ipv4flow" {
-                value 5;
-                description "ipv4flow:";
-            }
-            enum "l2vpnad" {
-                value 6;
-                description "l2vpnad:";
-            }
-            enum "mvpn" {
-                value 7;
-                description "mvpn:";
-            }
-            enum "evpn" {
-                value 8;
-                description "evpn:";
-            }
-            enum "ipv4vpnmcast" {
-                value 9;
-                description "ipv4vpnmcast:";
-            }
-            enum "ls" {
-                value 10;
-                description "ls:";
-            }
-            enum "mdt" {
-                value 11;
-                description "mdt:";
-            }
-        }
-        description "";
-    }
-}
diff --git a/models/huawei/src/main/yang/ne-bgpcomm@2014-12-25.yang b/models/huawei/src/main/yang/ne-bgpcomm@2014-12-25.yang
deleted file mode 100644
index b0bb113..0000000
--- a/models/huawei/src/main/yang/ne-bgpcomm@2014-12-25.yang
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-WARNING:
-This yang model is just for fuction ONOS opensource project demo purpose only,
-And is subject to change in future, Huawei does not commit provide compatibilty
-in commercial product.
-*/
-module ne-bgpcomm {
-    namespace "ne-bgpcomm";
-    prefix bgpcomm;
-    import ne-bgpcomm-type {
-        prefix bgpcomm-type;
-    }
-    organization "Huawei Technologies Co., Ltd";
-    contact "Huawei Industrial Base
-     Bantian, Longgang
-     Shenzhen 518129
-     People's Republic of China
-     Website: http://www.huawei.com
-     Email: support@huawei.com";
-    description "ne-bgpcomm yang";
-    revision "2014-12-25" {
-        description "Initial version";
-    }
-
-    container devices {
-        list device {
-            key deviceid;
-            leaf deviceid {
-                type string;
-            }
-            container bgp {
-                container bgpcomm {
-                    description "";
-                    container bgpVrfs {
-                        description "";
-                        list bgpVrf {
-                            key "vrfName";
-                            description "BGP instance class";
-                            leaf vrfName {
-                                description "Specifies the name of the VPN in stance.
-                                It is a string of 1 to 31 case-sensitive characters.";
-                                type string;
-                            }
-                            container bgpVrfAFs {
-                                description "";
-                                list bgpVrfAF {
-                                    key "afType";
-                                    description "IPv4 unicast Address family class for
-                                    BGP instance";
-                                    leaf afType {
-                                        type "bgpcomm-type:bgpcommPrefixType";
-                                        description "Address family";
-                                    }
-                                    container importRoutes {
-                                        description "";
-                                        list importRoute {
-                                            key "importProtocol importProcessId";
-                                            description "Import route class";
-                                            leaf importProtocol {
-                                                type "bgpcomm-type:bgpcommImRouteProtocol";
-                                                description "Specifies the protocol from
-                                                which routes are imported.";
-                                            }
-                                            leaf importProcessId {
-                                                type "string";
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/models/huawei/src/main/yang/ne-l3vpn-api@2014-12-25.yang b/models/huawei/src/main/yang/ne-l3vpn-api@2014-12-25.yang
deleted file mode 100644
index 5320617..0000000
--- a/models/huawei/src/main/yang/ne-l3vpn-api@2014-12-25.yang
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
-WARNING:
-This yang model is just for fuction ONOS opensource project demo purpose only,
-And is subject to change in future, Huawei does not commit provide compatibilty
-in commercial product.
-*/
-module ne-l3vpn-api {
-    namespace "ne-l3vpn-api";
-    prefix l3vpn-api;
-    import ne-l3vpncomm-type {
-        prefix l3vpncomm-type;
-    }
-    import ne-l3vpncomm {
-        prefix l3vpncomm;
-    }
-    organization "Huawei Technologies Co., Ltd";
-    contact "Huawei Industrial Base
-        Bantian, Longgang
-        Shenzhen 518129
-        People's Republic of China
-        Website: http://www.huawei.com
-        Email: support@huawei.com";
-    description "VRP V800R010 Schema";
-    revision "2014-12-25" {
-        reference "Huawei VRPV8 Schema";
-    }
-    container devices {
-        list device {
-            key deviceid;
-            leaf deviceid {
-                type string;
-            }
-            container l3vpn {
-                container l3vpncomm {
-                    container l3vpnInstances {
-                    description "";
-                        list l3vpnInstance {
-                            key "vrfName";
-                            leaf vrfName {
-                                type string;
-                            }
-                            leaf vrfDescription {
-                                type string;
-                            }
-                            uses l3vpncomm:l3vpnIfs;
-                            container vpnInstAFs {
-                                description "";
-                                list vpnInstAF {
-                                    key "afType";
-                                    description "Address family";
-                                    leaf afType {
-                                        type "l3vpncomm-type:l3vpncommonL3vpnPrefixType";
-                                        description "Address family";
-                                    }
-                                    leaf vrfRD {
-                                        when "vrfName != '_public_'";
-                                        type "string";
-                                        description "route-distinguisher.";
-                                    }
-                                    leaf tnlPolicyName {
-                                        type "string";
-                                    }
-                                    container vpnTargets {
-                                        description "";
-                                        list vpnTarget {
-                                            must "vrfName != '_public_' and vpnTarget = '0'";
-                                            key "vrfRTValue vrfRTType";
-                                            description "L3vpn vpntarget configure class";
-                                            leaf vrfRTValue {
-                                                type "string";
-                                            }
-                                            leaf vrfRTType {
-                                                type "l3vpncomm-type:l3vpncommonVrfRtType";
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/models/huawei/src/main/yang/ne-l3vpncomm-type@2014-12-25.yang b/models/huawei/src/main/yang/ne-l3vpncomm-type@2014-12-25.yang
deleted file mode 100644
index 3bc62f2..0000000
--- a/models/huawei/src/main/yang/ne-l3vpncomm-type@2014-12-25.yang
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-WARNING:
-This yang model is just for fuction ONOS opensource project demo purpose only,
-And is subject to change in future, Huawei does not commit provide compatibilty
-in commercial product.
-*/
-module ne-l3vpncomm-type {
-    namespace "l3vpn-comm-type";
-    prefix l3vpncomm-type;
-    organization "Huawei Technologies Co., Ltd";
-    contact "Huawei Industrial Base
-        Bantian, Longgang
-        Shenzhen 518129
-        People's Republic of China
-        Website: http://www.huawei.com
-        Email: support@huawei.com";
-    description "";
-    revision "2014-12-25" {
-        description "Initial version";
-    }
-    typedef l3vpncommonL3vpnPrefixType {
-        type enumeration {
-            enum "ipv4uni" {
-                value 0;
-                description "ipv4uni:";
-            }
-            enum "ipv6uni" {
-                value 1;
-                description "ipv6uni:";
-            }
-        }
-        description "";
-        }
-        typedef l3vpncommonVrfRtType {
-            type enumeration {
-                enum "export_extcommunity" {
-                    value 0;
-                    description "export-extcommunity:";
-                }
-                enum "import_extcommunity" {
-                    value 1;
-                    description "import-extcommunity:";
-                }
-            }
-            description "";
-        }
-        typedef ipv4Address {
-        type string {
-            length "0..255";
-            pattern "((([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))";
-        }
-    }
-}
diff --git a/models/huawei/src/main/yang/ne-l3vpncomm@2014-12-25.yang b/models/huawei/src/main/yang/ne-l3vpncomm@2014-12-25.yang
deleted file mode 100644
index b03c382..0000000
--- a/models/huawei/src/main/yang/ne-l3vpncomm@2014-12-25.yang
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-WARNING:
-This yang model is just for fuction ONOS opensource project demo purpose only,
-And is subject to change in future, Huawei does not commit provide compatibilty
-in commercial product.
-*/
-module ne-l3vpncomm {
-    namespace "ne-l3vpn-comm";
-    prefix "l3vpncomm";
-    import ne-l3vpncomm-type {
-        prefix l3vpncomm-type;
-    }
-    organization "Huawei Technologies Co., Ltd";
-    contact "Huawei Industrial Base
-        Bantian, Longgang
-        Shenzhen 518129
-        People's Republic of China
-        Website: http://www.huawei.com
-        Email: support@huawei.com";
-    description "";
-    revision "2014-12-25" {
-        description "Initial version";
-    }
-    grouping l3vpnIfs {
-        container l3vpnIfs {
-        description "";
-            list l3vpnIf {
-                key "ifName";
-                description "interface Name.";
-                leaf ifName {
-                    type string;
-                    description "interface Name";
-                }
-                leaf ipv4Addr {
-                    when "subnetMask != null";
-                    mandatory "true";
-                    type "l3vpncomm-type:ipv4Address";
-                    description "Interface Address.";
-                }
-                leaf subnetMask {
-                    when "ipv4Addr != null";
-                    mandatory "true";
-                    type "l3vpncomm-type:ipv4Address";
-                    description "Interface address mask.";
-                }
-            }
-        }
-    }
-}
diff --git a/models/huawei/src/main/yang/ne-tnlm-type@2014-12-25.yang b/models/huawei/src/main/yang/ne-tnlm-type@2014-12-25.yang
deleted file mode 100644
index 8dac8e8..0000000
--- a/models/huawei/src/main/yang/ne-tnlm-type@2014-12-25.yang
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-WARNING:
-This yang model is just for fuction ONOS opensource project demo purpose only,
-And is subject to change in future, Huawei does not commit provide compatibilty
-in commercial product.
-*/
-module ne-tnlm-type {
-    namespace "ne-tnlm-type";
-    prefix tnlm-type;
-    organization "Huawei Technologies Co., Ltd";
-    contact "Huawei Industrial Base
-        Bantian, Longgang
-        Shenzhen 518129
-        People's Republic of China
-        Website: http://www.huawei.com
-        Email: support@huawei.com";
-    description "VRP V800R010 Schema";
-
-    revision "2014-12-25" {
-        reference "Huawei VRPV8 Schema";
-    }
-
-    typedef tnlmbaseTnlPolicyType {
-        type enumeration {
-            enum invalid;
-            enum tnlSelectSeq;
-            enum tnlBinding;
-        }
-    }
-}
\ No newline at end of file
diff --git a/models/huawei/src/main/yang/ne-tnlm@2014-12-25.yang b/models/huawei/src/main/yang/ne-tnlm@2014-12-25.yang
deleted file mode 100644
index 73796f4..0000000
--- a/models/huawei/src/main/yang/ne-tnlm@2014-12-25.yang
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
-WARNING:
-This yang model is just for fuction ONOS opensource project demo purpose only,
-And is subject to change in future, Huawei does not commit provide compatibilty
-in commercial product.
-*/
-module ne-tnlm {
-    namespace "ne-tnlm";
-    prefix tnlm;
-
-    import ne-l3vpncomm-type {
-        prefix l3vpncomm-type;
-    }
-    import ne-tnlm-type {
-        prefix tnlmtype;
-    }
-    organization "Huawei Technologies Co., Ltd";
-    contact "Huawei Industrial Base
-        Bantian, Longgang
-        Shenzhen 518129
-        People's Republic of China
-        Website: http://www.huawei.com
-        Email: support@huawei.com";
-    description "VRP V800R010 Schema";
-    revision "2014-12-25" {
-        reference "Huawei VRPV8 Schema";
-    }
-    container devices {
-        list device {
-            key deviceid;
-            leaf deviceid {
-                type string;
-            }
-            container tnlm {
-                container tunnelPolicys {
-                    list tunnelPolicy {
-                        key tnlPolicyName;
-                        leaf tnlPolicyName {
-                            type string;
-                        }
-                        leaf tnlPolicyType {
-                            type tnlmtype:tnlmbaseTnlPolicyType;
-                        }
-                        container tpNexthops {
-                            list tpNexthop {
-                                key nexthopIPaddr;
-                                leaf nexthopIPaddr {
-                                    type "l3vpncomm-type:ipv4Address";
-                                }
-                                leaf tnlPolicyName {
-                                    type string;
-                                }
-                                container tpTunnels {
-                                    list tpTunnel {
-                                        key "tunnelName";
-                                        leaf autoTunnel {
-                                            type boolean;
-                                        }
-                                        leaf tunnelName {
-                                            type string;
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/models/l3vpn/BUILD b/models/l3vpn/BUILD
deleted file mode 100644
index d7b0870..0000000
--- a/models/l3vpn/BUILD
+++ /dev/null
@@ -1,17 +0,0 @@
-load("//tools/build/bazel:yang.bzl", "yang_model")
-
-COMPILE_DEPS = [
-    "//models/common:onos-models-common",
-]
-
-APPS = [
-    "org.onosproject.models.common",
-]
-
-yang_model(
-    app_name = "org.onosproject.models.l3vpn",
-    custom_registrator = True,
-    required_apps = APPS,
-    title = "L3VPN YANG Models",
-    deps = COMPILE_DEPS,
-)
diff --git a/models/l3vpn/src/main/java/org/onosproject/models/l3vpn/L3VpnModelRegistrator.java b/models/l3vpn/src/main/java/org/onosproject/models/l3vpn/L3VpnModelRegistrator.java
deleted file mode 100644
index 1c3cd64..0000000
--- a/models/l3vpn/src/main/java/org/onosproject/models/l3vpn/L3VpnModelRegistrator.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.models.l3vpn;
-
-import com.google.common.collect.ImmutableMap;
-import org.osgi.service.component.annotations.Component;
-import org.onosproject.yang.AbstractYangModelRegistrator;
-import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.IetfBgpL3Vpn;
-import org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.IetfInterfaces;
-import org.onosproject.yang.gen.v1.ietfip.rev20140616.IetfIp;
-import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.IetfL3VpnSvc;
-import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.IetfNetworkInstance;
-import org.onosproject.yang.gen.v1.l3vpnsvcext.rev20160730.L3VpnSvcExt;
-import org.onosproject.yang.model.DefaultYangModuleId;
-import org.onosproject.yang.model.YangModuleId;
-import org.onosproject.yang.runtime.AppModuleInfo;
-import org.onosproject.yang.runtime.DefaultAppModuleInfo;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Representation of L3VPN model registrator which registers L3VPN service
- * model.
- */
-@Component(immediate = true)
-public class L3VpnModelRegistrator extends AbstractYangModelRegistrator {
-
-    /**
-     * Creates L3VPN model registrator.
-     */
-    public L3VpnModelRegistrator() {
-        super(L3VpnModelRegistrator.class, getAppInfo());
-    }
-
-    private static Map<YangModuleId, AppModuleInfo> getAppInfo() {
-        Map<YangModuleId, AppModuleInfo> appInfo = new HashMap<>();
-        appInfo.put(new DefaultYangModuleId("ietf-l3vpn-svc", "2016-07-30"),
-                    new DefaultAppModuleInfo(IetfL3VpnSvc.class, null));
-        appInfo.put(new DefaultYangModuleId("l3vpn-svc-ext", "2016-07-30"),
-                    new DefaultAppModuleInfo(L3VpnSvcExt.class, null));
-        appInfo.put(new DefaultYangModuleId("ietf-interfaces", "2014-05-08"),
-                    new DefaultAppModuleInfo(IetfInterfaces.class, null));
-        appInfo.put(new DefaultYangModuleId("ietf-bgp-l3vpn", "2016-09-09"),
-                    new DefaultAppModuleInfo(IetfBgpL3Vpn.class, null));
-        appInfo.put(new DefaultYangModuleId("ietf-ip", "2014-06-16"),
-                    new DefaultAppModuleInfo(IetfIp.class, null));
-        appInfo.put(new DefaultYangModuleId("ietf-network-instance",
-                                            "2016-06-23"),
-                    new DefaultAppModuleInfo(IetfNetworkInstance.class, null));
-        return ImmutableMap.copyOf(appInfo);
-    }
-}
diff --git a/models/l3vpn/src/main/java/org/onosproject/models/l3vpn/package-info.java b/models/l3vpn/src/main/java/org/onosproject/models/l3vpn/package-info.java
deleted file mode 100644
index 55e1dbb..0000000
--- a/models/l3vpn/src/main/java/org/onosproject/models/l3vpn/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-/**
- * L3vpn YANG models.
- */
-package org.onosproject.models.l3vpn;
diff --git a/models/l3vpn/src/main/yang/ietf-bgp-l3vpn@2016-09-09.yang b/models/l3vpn/src/main/yang/ietf-bgp-l3vpn@2016-09-09.yang
deleted file mode 100644
index 276a59f..0000000
--- a/models/l3vpn/src/main/yang/ietf-bgp-l3vpn@2016-09-09.yang
+++ /dev/null
@@ -1,723 +0,0 @@
-module ietf-bgp-l3vpn {

-  namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-l3vpn";

-  // replace with IANA namespace when assigned

-  prefix l3vpn ;

-

-  import ietf-network-instance {

-    prefix ni;

-    revision-date 2016-06-23;

-  }

-

-  import ietf-interfaces {

-    prefix if;

-  }

-

-// TODO: TBD for bgp-info

-//  import ietf-bgp {

-//    prefix bgp;

-//    revision-date 2016-06-21;

-//  }

-

-  organization

-     "IETF BGP Enabled Services WG";

-

-  contact

-     "BESS working group - bess@ietf.org";

-  description

-    "This YANG module defines a YANG data model to configure and

-     manage BGP Layer3 VPNs. It augments the IETF bgp yang model

-     and IETF network instance model to add L3VPN specific

-     configuration and operational knobs.

-

-

-     Terms and Acronyms

-

-     AF : Address Family

-

-     AS : Autonomous System

-

-     ASBR : Autonomous Systems Border Router

-

-     BGP (bgp) : Border Gateway Protocol

-

-     CE  : Customer Edge

-

-     IP (ip) : Internet Protocol

-

-     IPv4 (ipv4):Internet Protocol Version 4

-

-     IPv6 (ipv6): Internet Protocol Version 6

-

-     L3VPN: Layer 3 VPN

-

-     PE : Provider Edge

-

-     RT : Route Target

-

-     RD : Route Distinguisher

-

-     VPN : Virtual Private Network

-

-     VRF : Virtual Routing and Forwarding

-

-    ";

-

-  revision 2016-09-09 {

-    description

-      "Initial revision.";

-    reference

-      "RFC XXXX: A YANG Data Model for BGP L3VPN config management";

-  }

-

-  //RD

-  grouping route-distinguisher-params {

-    description "BGP route distinguisher";

-    container route-distinguisher {

-      description "Route distinguisher value as per RFC4364";

-        container config {

-          description

-            "Configuration parameters for route distinguisher";

-          leaf rd {

-            type string;

-            description "Route distinguisher value as per RFC4364";

-          }

-        }

-        container state {

-          config "false" ;

-          description

-            "State information for route distinguisher";

-          leaf rd {

-            type string;

-            description "Route distinguisher value";

-          }

-        }

-     }

-  }

-

-  //Label mode

-  typedef bgp-label-mode {

-    type enumeration {

-      enum per-ce {

-        description "Allocate labels per CE";

-      }

-      enum per-route {

-        description "Allocate labels per prefix";

-      }

-      enum per-vpn {

-        description "Allocate labels per VRF";

-      }

-    }

-    description "BGP label allocation mode";

-  }

-

-  //Fwding mode

-  typedef fwd-mode-type {

-    type enumeration {

-      enum mpls {

-        description "Forwarding mode mpls";

-      }

-    }

-    description

-      "Enable forwarding mode under ASBR facing interface";

-  }

-

-  grouping forwarding-mode {

-    description "Forwarding mode of interface for ASBR scenario";

-    container forwarding-mode {

-      description "Forwarding mode of interface for ASBR scenario";

-      container config {

-        description "Configuration of Forwarding mode";

-        leaf forwarding-mode {

-          type  fwd-mode-type;

-          description "Forwarding mode for this interface";

-        }

-      }

-      container state {

-        config "false";

-        description "State information of Forwarding mode";

-        leaf forwarding-mode {

-        type  fwd-mode-type;

-          description "Forwarding mode for this interface";

-        }

-      }

-    }

- }

-

-  grouping label-security {

-    description "Mpls label security for ASBR option B scenario";

-    container mpls-label-security {

-      description "MPLS label secruity";

-      container config {

-        description "Configuration parameters";

-        leaf rpf {

-          type boolean;

-          description "Enable MPLS label security rpf on interface";

-        }

-      }

-      container state {

-        config "false";

-        description "State information";

-        leaf rpf {

-          type boolean;

-          description "MPLS label security rpf on interface";

-        }

-      }

-    }

-  }

-

-

-  //per VPN instance table limit under BGP

-  grouping prefix-limit {

-    description

-       "The prefix limit command sets a limit on the maximum

-        number of prefixes supported in the existing VPN

-        instance, preventing the PE from importing excessive

-        VPN route prefixes.

-       ";

-

-    leaf prefix-limit-number {

-      type uint32 {

-         range "1..4294967295";

-      }

-      description

-             "Specifies the maximum number of prefixes supported in the

-              VPN instance IPv4 or IPv6 address family.";

-    }

-

-    choice prefix-limit-action {

-      description ".";

-      case enable-alert-percent {

-        leaf alert-percent-value {

-           type uint8 {

-             range "1..100";

-           }

-           description

-             "Specifies the proportion of the alarm threshold to the

-              maximum number of prefixes.";

-        }

-        leaf route-unchanged {

-           type boolean;

-           default "false";

-           description

-                 "Indicates that the routing table remains unchanged.

-                  By default, route-unchanged is not configured. When

-                  the number of prefixes in the routing table is

-                  greater than the value of the parameter number,

-                  routes are processed as follows:

-                  (1)If route-unchanged is configured, routes in the

-                     routing table remain unchanged.

-                  (2)If route-unchanged is not configured, all routes

-                     in the routing table are deleted and then

-                     re-added.";

-        }

-      }

-      case enable-simple-alert {

-        leaf simple-alert {

-          type boolean;

-          default "false";

-          description

-                 "Indicates that when the number of VPN route prefixes

-                  exceeds number, prefixes can still join the VPN

-                  routing table and alarms are displayed.";

-        }

-      }

-    }

-  }

-

-  grouping  vpn-pfx-limit {

-    description "Per VPN instance table limit under BGP";

-    container vpn-prefix-limit {

-      description "Prefix limit for this table";

-      container config {

-         description "Config parameters";

-         uses prefix-limit;

-      }

-      container state {

-         config "false";

-         description "State parameters";

-         uses prefix-limit;

-      }

-    }

-  }

-

-  grouping route-target-set {

-    description

-      "Extended community route-target set ";

-    list rts {

-      key "rt" ;

-      description

-         "List of route-targets" ;

-      leaf rt {

-        type string {

-          pattern '([0-9]+:[0-9]+)';

-        }

-        description "Route target extended community as per RFC4360";

-      }

-      leaf rt-type {

-        type enumeration {

-          enum import {

-            description "Route target is for import routes";

-          }

-          enum export {

-            description "Route target is for export routes";

-          }

-          enum both {

-            description

-              "Route target is for both import and export routes";

-          }

-        }

-        description "Route target type";

-      }

-    }

-    leaf route-policy {

-      type string;

-      description

-         "Reference to the policy containing set of routes.

-          TBD: leafref to policy entry in IETF policy model";

-    }

-  }

-

-  grouping import-from-gbl {

-    description "Import from global routing table";

-    leaf enable {

-      type boolean;

-        description "Enable";

-    }

-    leaf advertise-as-vpn {

-      type boolean;

-      description

-        "Advertise routes imported from global table as VPN routes";

-    }

-    leaf route-policy {

-      type string;

-      description "Route policy as filter for importing routes";

-    }

-

-    leaf bgp-valid-route {

-      type boolean;

-      description

-        "Enable all valid routes (including non-best paths) to be

-         candidate for import";

-    }

-

-    leaf protocol {

-      type enumeration {

-        enum ALL {

-          value "0";

-          description "ALL:";

-        }

-        enum Direct {

-          value "1";

-          description "Direct:";

-        }

-        enum OSPF {

-          value "2";

-          description "OSPF:";

-        }

-        enum ISIS {

-          value "3";

-          description "ISIS:";

-        }

-        enum Static {

-          value "4";

-          description "Static:";

-        }

-        enum RIP {

-          value "5";

-          description "RIP:";

-        }

-        enum BGP {

-          value "6";

-          description "BGP:";

-        }

-        enum OSPFV3 {

-          value "7";

-          description "OSPFV3:";

-        }

-        enum RIPNG {

-          value "8";

-          description "RIPNG:";

-        }

-      }

-      description

-         "Specifies the protocol from which routes are imported.

-          At present, In the IPv4 unicast address family view,

-          the protocol can be IS-IS,static, direct and BGP.";

-      }

-

-      leaf instance {

-        type string;

-        description

-             "Specifies the instance id of the protocol";

-      }

-  }

-  grouping global-imports {

-      description "Grouping for imports from global routing table";

-    container import-from-global {

-      description "Import from global routing table";

-      container config {

-          description "Configuration";

-          uses import-from-gbl;

-      }

-      container state {

-          config "false";

-          description "State";

-          uses import-from-gbl;

-      }

-    }

-  }

-

-

-  grouping export-to-gbl {

-    description "Export routes to default VRF";

-    leaf enable {

-      type boolean;

-        description "Enable";

-    }

-  }

-

-  grouping global-exports {

-    description "Grouping for exports routes to global table";

-    container export-to-global {

-      description "Export to global routing table";

-      container config {

-         description "Configuration";

-         uses export-to-gbl;

-      }

-      container state {

-        config "false";

-        description "State";

-        uses export-to-gbl;

-      }

-    }

-  }

-

-  grouping route-target-params {

-    description "Grouping to specify rules for route import and export";

-    container route-targets {

-      description

-        "Set of route-targets to match for import and export routes

-         to/from VRF";

-      container config {

-         description

-               "Configuration of route targets";

-           uses route-target-set ;

-      }

-      container state {

-        config "false" ;

-        description

-               "State information for route targets";

-           uses route-target-set ;

-      }

-    }

-  }

-

-  grouping route-tbl-limit-params {

-     description "Grouping for VPN table prefix limit config";

-     leaf routing-table-limit-number {

-        type uint32 {

-          range "1..4294967295";

-        }

-        description

-          "Specifies the maximum number of routes supported by a

-           VPN instance. ";

-        }

-

-       choice routing-table-limit-action {

-          description ".";

-           case enable-alert-percent {

-             leaf alert-percent-value {

-               type uint8 {

-                 range "1..100";

-               }

-               description

-                 "Specifies the percentage of the maximum number of

-                  routes. When the maximum number of routes that join

-                  the VPN instance is up to the value

-                  (number*alert-percent)/100, the system prompts

-                  alarms. The VPN routes can be still added to the

-                  routing table, but after the number of routes

-                  reaches number, the subsequent routes are

-                  dropped.";

-           }

-        }

-        case enable-simple-alert {

-          leaf simple-alert {

-               type boolean;

-               description

-                 "Indicates that when VPN routes exceed number, routes

-                  can still be added into the routing table, but the

-                  system prompts alarms.

-                  However, after the total number of VPN routes and

-                  network public routes reaches the unicast route limit

-                  specified in the License, the subsequent VPN routes

-                  are dropped.";

-             }

-           }

-       }

-   }

-

-   grouping routing-tbl-limit {

-      description ".";

-      container routing-table-limit {

-         description

-           "The routing-table limit command sets a limit on the maximum

-            number of routes that the IPv4 or IPv6 address family of a

-            VPN instance can support.

-            By default, there is no limit on the maximum number of

-            routes that the IPv4 or IPv6 address family of a VPN

-            instance can support, but the total number of private

-            network and public network routes on a device cannot

-            exceed the allowed maximum number of unicast routes.";

-          container config {

-             description "Config parameters";

-             uses route-tbl-limit-params;

-          }

-          container state {

-              config "false";

-              description "State parameters";

-              uses route-tbl-limit-params;

-          }

-       }

-   }

-

-  // Tunnel policy parameters

-  grouping tunnel-params {

-     description "Tunnel parameters";

-     container tunnel-params {

-        description "Tunnel config parameters";

-        container config {

-           description "configuration parameters";

-           leaf tunnel-policy {

-              type string;

-              description

-                  "Tunnel policy name.";

-           }

-        }

-        container state {

-           config "false";

-           description "state parameters";

-           leaf tunnel-policy {

-              type string;

-              description

-                   "Tunnel policy name.";

-           }

-        }

-     }

-  }

-

-  // Grouping for the L3vpn specific parameters under VRF

-  // (network-instance)

-  grouping l3vpn-vrf-params {

-      description "Specify route filtering rules for import/export";

-      container ipv4 {

-         description

-           "Specify route filtering rules for import/export";

-         container unicast {

-            description

-              "Specify route filtering rules for import/export";

-            uses route-target-params;

-            uses global-imports;

-            uses global-exports;

-            uses routing-tbl-limit;

-            uses tunnel-params;

-         }

-      }

-      container ipv6 {

-         description

-           "Ipv6 address family specific rules for import/export";

-         container unicast {

-             description "Ipv6 unicast address family";

-             uses route-target-params;

-             uses global-imports;

-             uses global-exports;

-             uses routing-tbl-limit;

-             uses tunnel-params;

-         }

-     }

-  }

-

-  grouping bgp-label-mode {

-       description "MPLS/VPN label allocation mode";

-       container config {

-         description

-           "Configuration parameters for label allocation mode";

-         leaf label-mode {

-           type bgp-label-mode;

-           description "Label allocation mode";

-         }

-       }

-       container state {

-         config "false" ;

-         description "State information for label allocation mode";

-         leaf label-mode {

-           type bgp-label-mode;

-           description "Label allocation mode";

-         }

-       }

-  }

-

-  grouping retain-route-targets {

-       description "Grouping for route target accept";

-    container retain-route-targets {

-      description "Control route target acceptance behavior for ASBRs";

-      container config {

-         description

-           "Configuration parameters for retaining route targets";

-         leaf all {

-            type empty;

-            description "Disable filtering of all route-targets";

-         }

-         leaf route-policy {

-            type string;

-            description "Filter routes as per filter policy name

-                         TBD: leafref to IETF routing policy model";

-         }

-      }

-      container state {

-         config "false" ;

-         description "State information for retaining route targets";

-         leaf all {

-            type empty;

-            description "Disable filtering of all route-targets";

-         }

-         leaf route-policy {

-            type string;

-            description "Filter routes as per filter policy name";

-         }

-      }

-    }

-  }

-

-  grouping nexthop-opts {

-     description "Next hop control options for inter-as route exchange";

-     leaf next-hop-self {

-        type boolean;

-        description

-          "Set nexthop of the route to self when advertising routes";

-     }

-     leaf next-hop-unchanged {

-        type boolean;

-        description "Enforce no nexthop change when advertising routes";

-     }

-  }

-

-  grouping asbr-nexthop-options {

-     description "Nexthop parameters for inter-as VPN options ";

-     container nexthop-options {

-         description "Nexthop related options for inter-as options";

-         container config {

-             description "Configuration parameters for nexthop options";

-             uses nexthop-opts;

-         }

-         container state {

-             config "false";

-             description "State information for nexthop options" ;

-             uses nexthop-opts;

-         }

-     }

-  }

-

-  //

-  // VRF specific parameters.

-  // RD and RTs and route import-export rules are added under

-  // network instance container in network instance model, hence

-  // per VRF scoped

-  augment "/ni:devices/ni:device/ni:network-instances/ni:network-instance" {

-     description

-       "Augment network instance for per VRF L3vpn parameters";

-     container l3vpn {

-        //Enable this check once network instance model has

-        //identify defined for VRF type

-        //when "../type='rt:vrf-network-instance'" {

-        //  description

-        //    "This container is only valid for vrf routing instance.";

-        //}

-        description "Configuration of L3VPN specific parameters";

-

-        uses route-distinguisher-params;

-        uses l3vpn-vrf-params ;

-     }

-  }

-

-  // bgp mpls forwarding enable required for inter-as option AB.

-  augment "/if:devices/if:device/if:interfaces/if:interface" {

-    description

-      "BGP mpls forwarding mode configuration on interface for

-       ASBR scenario";

-    uses forwarding-mode ;

-    uses label-security;

-  }

-

-  //

-  // BGP Specific Paramters

-  //

-

-  //

-  // Retain route-target for inter-as option ASBR knob.

-  // vpn prefix limits

-  // vpnv4/vpnv6 address-family only.

-  //augment "/bgp:bgp/bgp:global/bgp:afi-safis/" +

-  //        "bgp:afi-safi/bgp:l3vpn-ipv4-unicast" {

-  //  description "Retain route targets for ASBR scenario";

-  //  uses retain-route-targets;

-  //  uses vpn-pfx-limit;

- // }

-

- // augment "/bgp:bgp/bgp:global/bgp:afi-safis/" +

- //         "bgp:afi-safi/bgp:l3vpn-ipv6-unicast" {

- //   description "Retain route targets for ASBR scenario";

- //   uses retain-route-targets;

- //   uses vpn-pfx-limit;

- // }

-

-  // Label allocation mode configuration. Certain AFs only.

- // augment "/bgp:bgp/bgp:global/bgp:afi-safis/" +

- //         "bgp:afi-safi/bgp:ipv4-unicast" {

- //    description

- //      "Augment BGP global AF mode for label allocation mode

- //       configuration";

- //    uses bgp-label-mode ;

- //    uses routing-tbl-limit;

- // }

-

- // augment "/bgp:bgp/bgp:global/bgp:afi-safis/" +

- //         "bgp:afi-safi/bgp:ipv6-unicast" {

- //    description

- //      "Augment BGP global AF mode for label allocation mode

- //       configuration";

- //    uses bgp-label-mode ;

- //    uses routing-tbl-limit;

- // }

-

-

-  // Nexthop options for the inter-as ASBR peering.

- // augment "/bgp:bgp/bgp:neighbors/bgp:neighbor" {

- //    description

- //      "Augment BGP NBR mode with nexthop options for inter-as ASBRs";

- //    uses asbr-nexthop-options;

- // }

-

- // augment "/bgp:bgp/bgp:peer-groups/bgp:peer-group" {

- //    description

- //      "Augment BGP peer-group mode with nexthop options for inter-as

- //       ASBRs";

- //    uses asbr-nexthop-options;

- // }

-

- // augment "/bgp:bgp/bgp:neighbors/bgp:neighbor/" +

- //         "bgp:afi-safis/bgp:afi-safi" {

- //    description

- //      "Augment BGP NBR AF mode with nexthop options for inter-as

- //       ASBRs";

- //    uses asbr-nexthop-options;

- // }

-

- // augment "/bgp:bgp/bgp:peer-groups/bgp:peer-group/" +

- //         "bgp:afi-safis/bgp:afi-safi" {

- //    description

- //      "Augment BGP peer-group AF mode with nexthop options for inter-as

- //       ASBRs";

- //    uses asbr-nexthop-options;

- // }

-}

diff --git a/models/l3vpn/src/main/yang/ietf-interfaces@2014-05-08.yang b/models/l3vpn/src/main/yang/ietf-interfaces@2014-05-08.yang
deleted file mode 100644
index 2171a5a..0000000
--- a/models/l3vpn/src/main/yang/ietf-interfaces@2014-05-08.yang
+++ /dev/null
@@ -1,704 +0,0 @@
-module ietf-interfaces {

-

-     namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";

-     prefix if;

-

-     import ietf-yang-types {

-       prefix yang;

-     }

-

-     organization

-       "IETF NETMOD (NETCONF Data Modeling Language) Working Group";

-

-     contact

-       "WG Web:   <http://tools.ietf.org/wg/netmod/>

-        WG List:  <mailto:netmod@ietf.org>

-

-        WG Chair: Thomas Nadeau

-                  <mailto:tnadeau@lucidvision.com>

-

-        WG Chair: Juergen Schoenwaelder

-                  <mailto:j.schoenwaelder@jacobs-university.de>

-

-        Editor:   Martin Bjorklund

-                  <mailto:mbj@tail-f.com>";

-

-     description

-       "This module contains a collection of YANG definitions for

-        managing network interfaces.

-

-        Copyright (c) 2014 IETF Trust and the persons identified as

-        authors of the code.  All rights reserved.

-

-        Redistribution and use in source and binary forms, with or

-        without modification, is permitted pursuant to, and subject

-        to the license terms contained in, the Simplified BSD License

-        set forth in Section 4.c of the IETF Trust's Legal Provisions

-        Relating to IETF Documents

-        (http://trustee.ietf.org/license-info).

-

-        This version of this YANG module is part of RFC 7223; see

-        the RFC itself for full legal notices.";

-     revision 2014-05-08 {

-       description

-         "Initial revision.";

-       reference

-         "RFC 7223: A YANG Data Model for Interface Management";

-     }

-

-     /*

-      * Typedefs

-      */

-

-     typedef interface-ref {

-       type leafref {

-         path "/if:devices/if:device/if:interfaces/if:interface/if:name";

-       }

-       description

-         "This type is used by data models that need to reference

-          configured interfaces.";

-     }

-

-     typedef interface-state-ref {

-       type leafref {

-         path "/if:devices/if:device/if:interfaces-state/if:interface/if:name";

-       }

-       description

-         "This type is used by data models that need to reference

-          the operationally present interfaces.";

-     }

-

-     /*

-      * Identities

-      */

-

-     identity interface-type {

-       description

-         "Base identity from which specific interface types are

-          derived.";

-     }

-

-     /*

-      * Features

-      */

-

-     feature arbitrary-names {

-       description

-         "This feature indicates that the device allows user-controlled

-          interfaces to be named arbitrarily.";

-     }

-     feature pre-provisioning {

-       description

-         "This feature indicates that the device supports

-          pre-provisioning of interface configuration, i.e., it is

-          possible to configure an interface whose physical interface

-          hardware is not present on the device.";

-     }

-

-     feature if-mib {

-       description

-         "This feature indicates that the device implements

-          the IF-MIB.";

-       reference

-         "RFC 2863: The Interfaces Group MIB";

-     }

-

-     /*

-      * Configuration data nodes

-      */

-     container devices {

-         list device {

-             key deviceid;

-             leaf deviceid {

-                 type string;

-             }

-             container interfaces {

-                 description

-                     "Interface configuration parameters.";

-

-                 list interface {

-                     key "name";

-

-                     description

-                         "The list of configured interfaces on the device.

-                         The operational state of an interface is available

-                         in the /interfaces-state/interface list.  If the

-                         configuration of a system-controlled interface

-                         cannot be used by the system (e.g., the interface

-                         hardware present does not match the interface type),

-                         then the configuration is not applied to the

-                         system-controlled interface shown in the of a

-                         /interfaces-state/interface list.  If the configuration

-                         user-controlled interface cannot be used by the system,

-                         the configured interface is not instantiated in the

-                         /interfaces-state/interface list.";

-

-                     leaf name {

-                         type string;

-                         description

-                             "The name of the interface.

-

-                             A device MAY restrict the allowed values for

-                             this leaf, possibly depending on the type of the

-                             interface. For system-controlled interfaces,

-                             this leaf is the device-specific name of the

-                             interface.  The 'config false' list

-                             /interfaces-state/interface contains the

-                             currently existing interfaces on the device.

-

-                             If a client tries to create configuration for a

-                             system-controlled interface that is not present

-                             in the /interfaces-state/interface list, the

-                             server MAY reject the request if the

-                             implementation does not support pre-provisioning

-                             of interfaces or if the name refers to an

-                             interface that can never exist in the system.  A

-                             NETCONF server MUST reply with an rpc-error with

-                             the error-tag 'invalid-value' in this case.

-

-                             If the device supports pre-provisioning of

-                             interface configuration, the 'pre-provisioning'

-                             feature is advertised.

-

-                             If the device allows arbitrarily named

-                             user-controlled interfaces, the

-                             'arbitrary-names' feature is advertised.

-

-                             When a configured user-controlled interface is

-                             created by the system, it is instantiated with

-                             the same name in the /interface-state/interface

-                             list.";

-                     }

-

-                     leaf description {

-                         type string;

-                         description

-                             "A textual description of the interface.

-

-                             A server implementation MAY map this leaf to the

-                             ifAlias MIB object.  Such an implementation

-                             needs touse some mechanism to handle the

-                             differences in sizeand characters allowed

-                             between this leaf and ifAlias.The definition of

-                             such a mechanism is outside the scope of this

-                             document.

-

-                             Since ifAlias is defined to be stored in

-                             non-volatile storage, the MIB implementation

-                             MUST map ifAlias to the value of 'description'

-                             in the persistently stored datastore.

-

-                             Specifically, if the device supports ':startup',

-                             when ifAlias is read the device MUST return the

-                             value of 'description' in the 'startup'

-                             datastore, and when it is written, it MUST be

-                             written to the 'running' and 'startup'

-                             datastores.  Note that it is up to the

-                             implementation to decide whether to modify this

-                             single leaf in 'startup' or perform an implicit

-                             copy-config from 'running' to 'startup'.

-

-                             If the device does not support ':startup',

-                             ifAlias MUST be mapped to the 'description' leaf

-                             in the 'running' datastore.";

-                         reference

-                            "RFC 2863: The Interfaces Group MIB - ifAlias";

-                     }

-

-                     leaf type {

-                         type identityref {

-                             base interface-type;

-                         }

-                         mandatory true;

-                         description

-                             "The type of the interface.

-

-                             When an interface entry is created, a server MAY

-                             initialize the type leaf with a valid value, e.g.,

-                             if it is possible to derive the type from the name

-                             of the interface.

-

-                             If a client tries to set the type of an

-                             interface to a value that can never be used by

-                             the system, e.g., if the type is not supported

-                             or if the type does not match the name of the

-                             interface, the server MUST reject the request. A

-                             NETCONF server MUST reply with an rpc-error with

-                             the error-tag 'invalid-value' in this case.";

-                         reference

-                             "RFC 2863: The Interfaces Group MIB - ifType";

-                     }

-

-                     leaf enabled {

-                         type boolean;

-                         default "true";

-                         description

-                             "This leaf contains the configured, desired state

-                             of the interface.

-

-                             Systems that implement the IF-MIB use the value

-                             of this leaf in the 'running' datastore to set

-                             IF-MIB.ifAdminStatus to 'up' or 'down' after an

-                             ifEntry has been initialized, as described in

-                             RFC 2863. Changes in this leaf in the 'running'

-                             datastore are reflected in ifAdminStatus, but if

-                             ifAdminStatus is changed over SNMP, this leaf is

-                             not affected.";

-                         reference

-                             "RFC 2863: The Interfaces Group MIB -

-                             ifAdminStatus";

-                     }

-

-                     leaf link-up-down-trap-enable {

-                         if-feature if-mib;

-                         type enumeration {

-                             enum enabled {

-                                 value 1;

-                             }

-                             enum disabled {

-                                 value 2;

-                             }

-                         }

-                         description

-                             "Controls whether linkUp/linkDown SNMP

-                             notifications should be generated for this

-                             interface.

-

-                             If this node is not configured, the value 'enabled'

-                             is operationally used by the server for

-                             interfaces that do not operate on top of any

-                             other interface (i.e., there are no

-                             'lower-layer-if' entries), and 'disabled'

-                             otherwise.";

-                         reference

-                             "RFC 2863: The Interfaces Group MIB -

-                             ifLinkUpDownTrapEnable";

-                     }

-                 }

-             }

-             /*

-              * Operational state data nodes

-              */

-

-             container interfaces-state {

-               config false;

-               description

-                 "Data nodes for the operational state of interfaces.";

-

-               list interface {

-                 key "name";

-                 description

-                   "The list of interfaces on the device.

-

-                    System-controlled interfaces created by the system are

-                    always present in this list, whether they are configured or

-                    not.";

-

-                 leaf name {

-                   type string;

-                   description

-                     "The name of the interface.

-

-                      A server implementation MAY map this leaf to the ifName

-                      MIB object.  Such an implementation needs to use some

-                      mechanism to handle the differences in size and characters

-                      allowed between this leaf and ifName.  The definition of

-                      such a mechanism is outside the scope of this document.";

-                   reference

-                     "RFC 2863: The Interfaces Group MIB - ifName";

-                 }

-

-                 leaf type {

-                   type identityref {

-                     base interface-type;

-                   }

-                   mandatory true;

-                   description

-                     "The type of the interface.";

-                   reference

-                     "RFC 2863: The Interfaces Group MIB - ifType";

-                 }

-

-                 leaf admin-status {

-                   if-feature if-mib;

-                   type enumeration {

-                     enum up {

-                       value 1;

-                       description

-                         "Ready to pass packets.";

-                     }

-                     enum down {

-                       value 2;

-                       description

-                         "Not ready to pass packets and not in some test mode.";

-                     }

-                     enum testing {

-                       value 3;

-                       description

-                         "In some test mode.";

-                     }

-                   }

-                   mandatory true;

-                   description

-                     "The desired state of the interface.

-

-                      This leaf has the same read semantics as ifAdminStatus.";

-                   reference

-                     "RFC 2863: The Interfaces Group MIB - ifAdminStatus";

-                 }

-

-                 leaf oper-status {

-                   type enumeration {

-                     enum up {

-                       value 1;

-                       description

-                         "Ready to pass packets.";

-                     }

-                     enum down {

-                       value 2;

-                       description

-                         "The interface does not pass any packets.";

-                     }

-                     enum testing {

-                       value 3;

-                       description

-                         "In some test mode.  No operational packets can

-                          be passed.";

-                     }

-                     enum unknown {

-                       value 4;

-                       description

-                         "Status cannot be determined for some reason.";

-                     }

-                     enum dormant {

-                       value 5;

-                       description

-                         "Waiting for some external event.";

-                     }

-                     enum not-present {

-                       value 6;

-                       description

-                         "Some component (typically hardware) is missing.";

-                     }

-                     enum lower-layer-down {

-                       value 7;

-                       description

-                         "Down due to state of lower-layer interface(s).";

-                     }

-                   }

-                   mandatory true;

-                   description

-                     "The current operational state of the interface.

-

-                      This leaf has the same semantics as ifOperStatus.";

-                   reference

-                     "RFC 2863: The Interfaces Group MIB - ifOperStatus";

-                 }

-

-                 leaf last-change {

-                   type yang:date-and-time;

-                   description

-                     "The time the interface entered its current operational

-                      state.  If the current state was entered prior to the

-                      last re-initialization of the local network management

-                      subsystem, then this node is not present.";

-                   reference

-                     "RFC 2863: The Interfaces Group MIB - ifLastChange";

-                 }

-

-                 leaf if-index {

-                   if-feature if-mib;

-                   type int32 {

-                     range "1..2147483647";

-                   }

-                   mandatory true;

-                   description

-                     "The ifIndex value for the ifEntry represented by this

-                      interface.";

-                   reference

-                     "RFC 2863: The Interfaces Group MIB - ifIndex";

-                 }

-

-                 leaf phys-address {

-                   type yang:phys-address;

-                   description

-                     "The interface's address at its protocol sub-layer.  For

-                      example, for an 802.x interface, this object normally

-                      contains a Media Access Control (MAC) address.  The

-                      interface's media-specific modules must define the bit

-

-                      and byte ordering and the format of the value of this

-                      object.  For interfaces that do not have such an address

-                      (e.g., a serial line), this node is not present.";

-                   reference

-                     "RFC 2863: The Interfaces Group MIB - ifPhysAddress";

-                 }

-

-                 leaf-list higher-layer-if {

-                   type interface-state-ref;

-                   description

-                     "A list of references to interfaces layered on top of this

-                      interface.";

-                   reference

-                     "RFC 2863: The Interfaces Group MIB - ifStackTable";

-                 }

-

-                 leaf-list lower-layer-if {

-                   type interface-state-ref;

-                   description

-                     "A list of references to interfaces layered underneath this

-                      interface.";

-                   reference

-                     "RFC 2863: The Interfaces Group MIB - ifStackTable";

-                 }

-

-                 leaf speed {

-                   type yang:gauge64;

-                   units "bits/second";

-                   description

-                       "An estimate of the interface's current bandwidth in bits

-                        per second.  For interfaces that do not vary in

-                        bandwidth or for those where no accurate estimation can

-                        be made, this node should contain the nominal bandwidth.

-                        For interfaces that have no concept of bandwidth, this

-                        node is not present.";

-                   reference

-                     "RFC 2863: The Interfaces Group MIB -

-                                ifSpeed, ifHighSpeed";

-                 }

-                 container statistics {

-                   description

-                     "A collection of interface-related statistics objects.";

-

-                   leaf discontinuity-time {

-                     type yang:date-and-time;

-                     mandatory true;

-                     description

-                       "The time on the most recent occasion at which any one or

-                        more of this interface's counters suffered a

-                        discontinuity.  If no such discontinuities have occurred

-                        since the last re-initialization of the local management

-                        subsystem, then this node contains the time the local

-                        management subsystem re-initialized itself.";

-                   }

-

-                   leaf in-octets {

-                     type yang:counter64;

-                     description

-                       "The total number of octets received on the interface,

-                        including framing characters.

-

-                        Discontinuities in the value of this counter can occur

-                        at re-initialization of the management system, and at

-                        other times as indicated by the value of

-                        'discontinuity-time'.";

-                     reference

-                       "RFC 2863: The Interfaces Group MIB - ifHCInOctets";

-                   }

-

-                   leaf in-unicast-pkts {

-                     type yang:counter64;

-                     description

-                       "The number of packets, delivered by this sub-layer to a

-                        higher (sub-)layer, that were not addressed to a

-                        multicast or broadcast address at this sub-layer.

-

-                        Discontinuities in the value of this counter can occur

-                        at re-initialization of the management system, and at

-                        other times as indicated by the value of

-                        'discontinuity-time'.";

-                     reference

-                       "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";

-                   }

-                   leaf in-broadcast-pkts {

-                     type yang:counter64;

-                     description

-                       "The number of packets, delivered by this sub-layer to a

-                        higher (sub-)layer, that were addressed to a broadcast

-                        address at this sub-layer.

-

-                        Discontinuities in the value of this counter can occur

-                        at re-initialization of the management system, and at

-                        other times as indicated by the value of

-                        'discontinuity-time'.";

-                     reference

-                       "RFC 2863: The Interfaces Group MIB -

-                                  ifHCInBroadcastPkts";

-                   }

-

-                   leaf in-multicast-pkts {

-                     type yang:counter64;

-                     description

-                       "The number of packets, delivered by this sub-layer to a

-                        higher (sub-)layer, that were addressed to a multicast

-                        address at this sub-layer.  For a MAC-layer protocol,

-                        this includes both Group and Functional addresses.

-

-                        Discontinuities in the value of this counter can occur

-                        at re-initialization of the management system, and at

-                        other times as indicated by the value of

-                        'discontinuity-time'.";

-                     reference

-                       "RFC 2863: The Interfaces Group MIB -

-                                  ifHCInMulticastPkts";

-                   }

-

-                   leaf in-discards {

-                     type yang:counter32;

-                     description

-                       "The number of inbound packets that were chosen to be

-                        discarded even though no errors had been detected to

-                        prevent their being deliverable to a higher-layer

-                        protocol.  One possible reason for discarding such a

-                        packet could be to free up buffer space.

-

-                        Discontinuities in the value of this counter can occur

-                        at re-initialization of the management system, and at

-                        other times as indicated by the value of

-                        'discontinuity-time'.";

-                     reference

-                       "RFC 2863: The Interfaces Group MIB - ifInDiscards";

-                   }

-

-                   leaf in-errors {

-                     type yang:counter32;

-                     description

-                       "For packet-oriented interfaces, the number of inbound

-                        packets that contained errors preventing them from being

-                        deliverable to a higher-layer protocol.  For character-

-                        oriented or fixed-length interfaces, the number of

-                        inbound transmission units that contained errors

-                        preventing them from being deliverable to a higher-layer

-                        protocol.

-

-                        Discontinuities in the value of this counter can occur

-                        at re-initialization of the management system, and at

-                        other times as indicated by the value of

-                        'discontinuity-time'.";

-                     reference

-                       "RFC 2863: The Interfaces Group MIB - ifInErrors";

-                   }

-

-                   leaf in-unknown-protos {

-                     type yang:counter32;

-                     description

-                       "For packet-oriented interfaces, the number of packets

-                        received via the interface that were discarded because

-                        of an unknown or unsupported protocol.  For

-                        character-oriented or fixed-length interfaces that

-                        support protocol multiplexing, the number of

-                        transmission units received via the interface that were

-                        discarded because of an unknown or unsupported protocol.

-                        For any interface that does not support protocol

-                        multiplexing, this counter is not present.

-

-                        Discontinuities in the value of this counter can occur

-                        at re-initialization of the management system, and at

-                        other times as indicated by the value of

-                        'discontinuity-time'.";

-                     reference

-                       "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";

-                   }

-                   leaf out-octets {

-                     type yang:counter64;

-                     description

-                       "The total number of octets transmitted out of the

-                        interface, including framing characters.

-

-                        Discontinuities in the value of this counter can occur

-                        at re-initialization of the management system, and at

-                        other times as indicated by the value of

-                        'discontinuity-time'.";

-                     reference

-                       "RFC 2863: The Interfaces Group MIB - ifHCOutOctets";

-                   }

-

-                   leaf out-unicast-pkts {

-                     type yang:counter64;

-                     description

-                       "The total number of packets that higher-level protocols

-                        requested be transmitted, and that were not addressed

-                        to a multicast or broadcast address at this sub-layer,

-                        including those that were discarded or not sent.

-

-                        Discontinuities in the value of this counter can occur

-                        at re-initialization of the management system, and at

-                        other times as indicated by the value of

-                        'discontinuity-time'.";

-                     reference

-                       "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";

-                   }

-

-                   leaf out-broadcast-pkts {

-                     type yang:counter64;

-                     description

-                       "The total number of packets that higher-level protocols

-                        requested be transmitted, and that were addressed to a

-                        broadcast address at this sub-layer, including those

-                        that were discarded or not sent.

-

-                        Discontinuities in the value of this counter can occur

-                        at re-initialization of the management system, and at

-                        other times as indicated by the value of

-                        'discontinuity-time'.";

-                     reference

-                       "RFC 2863: The Interfaces Group MIB -

-                                  ifHCOutBroadcastPkts";

-                   }

-                   leaf out-multicast-pkts {

-                     type yang:counter64;

-                     description

-                       "The total number of packets that higher-level protocols

-                        requested be transmitted, and that were addressed to a

-                        multicast address at this sub-layer, including those

-                        that were discarded or not sent.  For a MAC-layer

-                        protocol, this includes both Group and Functional

-                        addresses.

-

-                        Discontinuities in the value of this counter can occur

-                        at re-initialization of the management system, and at

-                        other times as indicated by the value of

-                        'discontinuity-time'.";

-                     reference

-                       "RFC 2863: The Interfaces Group MIB -

-                                  ifHCOutMulticastPkts";

-                   }

-

-                   leaf out-discards {

-                     type yang:counter32;

-                     description

-                       "The number of outbound packets that were chosen to be

-                        discarded even though no errors had been detected to

-                        prevent their being transmitted.  One possible reason

-                        for discarding such a packet could be to free up buffer

-                        space.

-

-                        Discontinuities in the value of this counter can occur

-                        at re-initialization of the management system, and at

-                        other times as indicated by the value of

-                        'discontinuity-time'.";

-                     reference

-                       "RFC 2863: The Interfaces Group MIB - ifOutDiscards";

-                   }

-

-                   leaf out-errors {

-                     type yang:counter32;

-                     description

-                       "For packet-oriented interfaces, the number of outbound

-                        packets that could not be transmitted because of errors.

-                        For character-oriented or fixed-length interfaces, the

-                        number of outbound transmission units that could not be

-                        transmitted because of errors.

-                        Discontinuities in the value of this counter can occur

-                        at re-initialization of the management system, and at

-                        other times as indicated by the value of

-                        'discontinuity-time'.";

-                     reference

-                       "RFC 2863: The Interfaces Group MIB - ifOutErrors";

-                   }

-                 }

-               }

-             }

-         }

-     }

-   }
\ No newline at end of file
diff --git a/models/l3vpn/src/main/yang/ietf-ip@2014-06-16.yang b/models/l3vpn/src/main/yang/ietf-ip@2014-06-16.yang
deleted file mode 100644
index 0446258..0000000
--- a/models/l3vpn/src/main/yang/ietf-ip@2014-06-16.yang
+++ /dev/null
@@ -1,740 +0,0 @@
-module ietf-ip {

-

-    yang-version 1;

-

-    namespace

-      "urn:ietf:params:xml:ns:yang:ietf-ip";

-

-    prefix ip;

-

-    import ietf-interfaces {

-      prefix if;

-    }

-    import ietf-inet-types {

-      prefix inet;

-    }

-    import ietf-yang-types {

-      prefix yang;

-    }

-

-    organization

-      "IETF NETMOD (NETCONF Data Modeling Language) Working Group";

-

-    contact

-      "WG Web:   <http://tools.ietf.org/wg/netmod/>

-    WG List:  <mailto:netmod@ietf.org>

-

-    WG Chair: Thomas Nadeau

-              <mailto:tnadeau@lucidvision.com>

-

-    WG Chair: Juergen Schoenwaelder

-              <mailto:j.schoenwaelder@jacobs-university.de>

-

-    Editor:   Martin Bjorklund

-              <mailto:mbj@tail-f.com>";

-

-    description

-      "This module contains a collection of YANG definitions for

-    configuring IP implementations.

-

-    Copyright (c) 2014 IETF Trust and the persons identified as

-    authors of the code.  All rights reserved.

-

-    Redistribution and use in source and binary forms, with or

-    without modification, is permitted pursuant to, and subject

-    to the license terms contained in, the Simplified BSD License

-    set forth in Section 4.c of the IETF Trust's Legal Provisions

-    Relating to IETF Documents

-    (http://trustee.ietf.org/license-info).

-

-    This version of this YANG module is part of RFC 7277; see

-    the RFC itself for full legal notices.";

-

-    revision "2014-06-16" {

-      description "Initial revision.";

-      reference

-        "RFC 7277: A YANG Data Model for IP Management";

-

-    }

-

-    feature ipv4-non-contiguous-netmasks {

-      description

-        "Indicates support for configuring non-contiguous

-      subnet masks.";

-    }

-

-    feature ipv6-privacy-autoconf {

-      description

-        "Indicates support for Privacy Extensions for Stateless Address

-      Autoconfiguration in IPv6.";

-      reference

-        "RFC 4941: Privacy Extensions for Stateless Address

-              Autoconfiguration in IPv6";

-    }

-

-    typedef ip-address-origin {

-      type enumeration {

-        enum "other" {

-          value 0;

-          description

-            "None of the following.";

-        }

-        enum "static" {

-          value 1;

-          description

-            "Indicates that the address has been statically

-          configured - for example, using NETCONF or a Command Line

-          Interface.";

-        }

-        enum "dhcp" {

-          value 2;

-          description

-            "Indicates an address that has been assigned to this

-          system by a DHCP server.";

-        }

-        enum "link-layer" {

-          value 3;

-          description

-            "Indicates an address created by IPv6 stateless

-          autoconfiguration that embeds a link-layer address in its

-          interface identifier.";

-        }

-        enum "random" {

-          value 4;

-          description

-            "Indicates an address chosen by the system at

-

-          random, e.g., an IPv4 address within 169.254/16, an

-          RFC 4941 temporary address, or an RFC 7217 semantically

-          opaque address.";

-          reference

-            "RFC 4941: Privacy Extensions for Stateless Address

-                  Autoconfiguration in IPv6

-             RFC 7217: A Method for Generating Semantically Opaque

-                  Interface Identifiers with IPv6 Stateless

-                  Address Autoconfiguration (SLAAC)";

-        }

-      }

-      description

-        "The origin of an address.";

-    }

-

-    typedef neighbor-origin {

-      type enumeration {

-        enum "other" {

-          value 0;

-          description

-            "None of the following.";

-        }

-        enum "static" {

-          value 1;

-          description

-            "Indicates that the mapping has been statically

-          configured - for example, using NETCONF or a Command Line

-          Interface.";

-        }

-        enum "dynamic" {

-          value 2;

-          description

-            "Indicates that the mapping has been dynamically resolved

-          using, e.g., IPv4 ARP or the IPv6 Neighbor Discovery

-          protocol.";

-        }

-      }

-      description

-        "The origin of a neighbor entry.";

-    }

-

-    augment /if:devices/if:device/if:interfaces/if:interface {

-      description

-        "Parameters for configuring IP on interfaces.

-

-      If an interface is not capable of running IP, the server

-      must not allow the client to configure these parameters.";

-      container ipv4 {

-        presence

-          "Enables IPv4 unless the 'enabled' leaf

-        (which defaults to 'true') is set to 'false'";

-        description

-          "Parameters for the IPv4 address family.";

-        leaf enabled {

-          type boolean;

-          default true;

-          description

-            "Controls whether IPv4 is enabled or disabled on this

-          interface.  When IPv4 is enabled, this interface is

-          connected to an IPv4 stack, and the interface can send

-          and receive IPv4 packets.";

-        }

-

-        leaf forwarding {

-          type boolean;

-          default false;

-          description

-            "Controls IPv4 packet forwarding of datagrams received by,

-          but not addressed to, this interface.  IPv4 routers

-          forward datagrams.  IPv4 hosts do not (except those

-          source-routed via the host).";

-        }

-

-        leaf mtu {

-          type uint16 {

-            range "68..max";

-          }

-          units "octets";

-          description

-            "The size, in octets, of the largest IPv4 packet that the

-          interface will send and receive.

-

-          The server may restrict the allowed values for this leaf,

-          depending on the interface's type.

-

-          If this leaf is not configured, the operationally used MTU

-          depends on the interface's type.";

-          reference

-            "RFC 791: Internet Protocol";

-

-        }

-

-        list address {

-          key "ip";

-          description

-            "The list of configured IPv4 addresses on the interface.";

-          leaf ip {

-            type inet:ipv4-address-no-zone;

-            description

-              "The IPv4 address on the interface.";

-          }

-

-          choice subnet {

-            mandatory true;

-            description

-              "The subnet can be specified as a prefix-length, or,

-            if the server supports non-contiguous netmasks, as

-            a netmask.";

-            leaf prefix-length {

-              type uint8 {

-                range "0..32";

-              }

-              description

-                "The length of the subnet prefix.";

-            }

-            leaf netmask {

-              if-feature ipv4-non-contiguous-netmasks;

-              type yang:dotted-quad;

-              description

-                "The subnet specified as a netmask.";

-            }

-          }  // choice subnet

-        }  // list address

-

-        list neighbor {

-          key "ip";

-          description

-            "A list of mappings from IPv4 addresses to

-          link-layer addresses.

-

-          Entries in this list are used as static entries in the

-          ARP Cache.";

-          reference

-            "RFC 826: An Ethernet Address Resolution Protocol";

-

-          leaf ip {

-            type inet:ipv4-address-no-zone;

-            description

-              "The IPv4 address of the neighbor node.";

-          }

-

-          leaf link-layer-address {

-            type yang:phys-address;

-            mandatory true;

-            description

-              "The link-layer address of the neighbor node.";

-          }

-        }  // list neighbor

-      }  // container ipv4

-

-      container ipv6 {

-        presence

-          "Enables IPv6 unless the 'enabled' leaf

-        (which defaults to 'true') is set to 'false'";

-        description

-          "Parameters for the IPv6 address family.";

-        leaf enabled {

-          type boolean;

-          default true;

-          description

-            "Controls whether IPv6 is enabled or disabled on this

-          interface.  When IPv6 is enabled, this interface is

-          connected to an IPv6 stack, and the interface can send

-          and receive IPv6 packets.";

-        }

-

-        leaf forwarding {

-          type boolean;

-          default false;

-          description

-            "Controls IPv6 packet forwarding of datagrams received by,

-          but not addressed to, this interface.  IPv6 routers

-          forward datagrams.  IPv6 hosts do not (except those

-          source-routed via the host).";

-          reference

-            "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)

-                  Section 6.2.1, IsRouter";

-

-        }

-

-        leaf mtu {

-          type uint32 {

-            range "1280..max";

-          }

-          units "octets";

-          description

-            "The size, in octets, of the largest IPv6 packet that the

-          interface will send and receive.

-

-          The server may restrict the allowed values for this leaf,

-          depending on the interface's type.

-

-          If this leaf is not configured, the operationally used MTU

-          depends on the interface's type.";

-          reference

-            "RFC 2460: Internet Protocol, Version 6 (IPv6) Specification

-                  Section 5";

-

-        }

-

-        list address {

-          key "ip";

-          description

-            "The list of configured IPv6 addresses on the interface.";

-          leaf ip {

-            type inet:ipv6-address-no-zone;

-            description

-              "The IPv6 address on the interface.";

-          }

-

-          leaf prefix-length {

-            type uint8 {

-              range "0..128";

-            }

-            mandatory true;

-            description

-              "The length of the subnet prefix.";

-          }

-        }  // list address

-

-        list neighbor {

-          key "ip";

-          description

-            "A list of mappings from IPv6 addresses to

-          link-layer addresses.

-

-          Entries in this list are used as static entries in the

-          Neighbor Cache.";

-          reference

-            "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)";

-

-          leaf ip {

-            type inet:ipv6-address-no-zone;

-            description

-              "The IPv6 address of the neighbor node.";

-          }

-

-          leaf link-layer-address {

-            type yang:phys-address;

-            mandatory true;

-            description

-              "The link-layer address of the neighbor node.";

-          }

-        }  // list neighbor

-

-        leaf dup-addr-detect-transmits {

-          type uint32;

-          default 1;

-          description

-            "The number of consecutive Neighbor Solicitation messages

-          sent while performing Duplicate Address Detection on a

-          tentative address.  A value of zero indicates that

-          Duplicate Address Detection is not performed on

-          tentative addresses.  A value of one indicates a single

-          transmission with no follow-up retransmissions.";

-          reference

-            "RFC 4862: IPv6 Stateless Address Autoconfiguration";

-

-        }

-

-        container autoconf {

-          description

-            "Parameters to control the autoconfiguration of IPv6

-          addresses, as described in RFC 4862.";

-          reference

-            "RFC 4862: IPv6 Stateless Address Autoconfiguration";

-

-          leaf create-global-addresses {

-            type boolean;

-            default true;

-            description

-              "If enabled, the host creates global addresses as

-            described in RFC 4862.";

-            reference

-              "RFC 4862: IPv6 Stateless Address Autoconfiguration

-                  Section 5.5";

-

-          }

-

-          leaf create-temporary-addresses {

-            if-feature ipv6-privacy-autoconf;

-            type boolean;

-            default false;

-            description

-              "If enabled, the host creates temporary addresses as

-            described in RFC 4941.";

-            reference

-              "RFC 4941: Privacy Extensions for Stateless Address

-                  Autoconfiguration in IPv6";

-

-          }

-

-          leaf temporary-valid-lifetime {

-            if-feature ipv6-privacy-autoconf;

-            type uint32;

-            units "seconds";

-            default 604800;

-            description

-              "The time period during which the temporary address

-            is valid.";

-            reference

-              "RFC 4941: Privacy Extensions for Stateless Address

-                  Autoconfiguration in IPv6

-                  - TEMP_VALID_LIFETIME";

-

-          }

-

-          leaf temporary-preferred-lifetime {

-            if-feature ipv6-privacy-autoconf;

-            type uint32;

-            units "seconds";

-            default 86400;

-            description

-              "The time period during which the temporary address is

-            preferred.";

-            reference

-              "RFC 4941: Privacy Extensions for Stateless Address

-                  Autoconfiguration in IPv6

-                  - TEMP_PREFERRED_LIFETIME";

-

-          }

-        }  // container autoconf

-      }  // container ipv6

-    }

-

-    augment /if:devices/if:device/if:interfaces-state/if:interface {

-      description

-        "Data nodes for the operational state of IP on interfaces.";

-      container ipv4 {

-        presence

-          "Present if IPv4 is enabled on this interface";

-        config false;

-        description

-          "Interface-specific parameters for the IPv4 address family.";

-        leaf forwarding {

-          type boolean;

-          description

-            "Indicates whether IPv4 packet forwarding is enabled or

-          disabled on this interface.";

-        }

-

-        leaf mtu {

-          type uint16 {

-            range "68..max";

-          }

-          units "octets";

-          description

-            "The size, in octets, of the largest IPv4 packet that the

-          interface will send and receive.";

-          reference

-            "RFC 791: Internet Protocol";

-

-        }

-

-        list address {

-          key "ip";

-          description

-            "The list of IPv4 addresses on the interface.";

-          leaf ip {

-            type inet:ipv4-address-no-zone;

-            description

-              "The IPv4 address on the interface.";

-          }

-

-          choice subnet {

-            description

-              "The subnet can be specified as a prefix-length, or,

-            if the server supports non-contiguous netmasks, as

-            a netmask.";

-            leaf prefix-length {

-              type uint8 {

-                range "0..32";

-              }

-              description

-                "The length of the subnet prefix.";

-            }

-            leaf netmask {

-              if-feature ipv4-non-contiguous-netmasks;

-              type yang:dotted-quad;

-              description

-                "The subnet specified as a netmask.";

-            }

-          }  // choice subnet

-

-          leaf origin {

-            type ip-address-origin;

-            description

-              "The origin of this address.";

-          }

-        }  // list address

-

-        list neighbor {

-          key "ip";

-          description

-            "A list of mappings from IPv4 addresses to

-          link-layer addresses.

-

-          This list represents the ARP Cache.";

-          reference

-            "RFC 826: An Ethernet Address Resolution Protocol";

-

-          leaf ip {

-            type inet:ipv4-address-no-zone;

-            description

-              "The IPv4 address of the neighbor node.";

-          }

-

-          leaf link-layer-address {

-            type yang:phys-address;

-            description

-              "The link-layer address of the neighbor node.";

-          }

-

-          leaf origin {

-            type neighbor-origin;

-            description

-              "The origin of this neighbor entry.";

-          }

-        }  // list neighbor

-      }  // container ipv4

-

-      container ipv6 {

-        presence

-          "Present if IPv6 is enabled on this interface";

-        config false;

-        description

-          "Parameters for the IPv6 address family.";

-        leaf forwarding {

-          type boolean;

-          default false;

-          description

-            "Indicates whether IPv6 packet forwarding is enabled or

-          disabled on this interface.";

-          reference

-            "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)

-                  Section 6.2.1, IsRouter";

-

-        }

-

-        leaf mtu {

-          type uint32 {

-            range "1280..max";

-          }

-          units "octets";

-          description

-            "The size, in octets, of the largest IPv6 packet that the

-          interface will send and receive.";

-          reference

-            "RFC 2460: Internet Protocol, Version 6 (IPv6) Specification

-                  Section 5";

-

-        }

-

-        list address {

-          key "ip";

-          description

-            "The list of IPv6 addresses on the interface.";

-          leaf ip {

-            type inet:ipv6-address-no-zone;

-            description

-              "The IPv6 address on the interface.";

-          }

-

-          leaf prefix-length {

-            type uint8 {

-              range "0..128";

-            }

-            mandatory true;

-            description

-              "The length of the subnet prefix.";

-          }

-

-          leaf origin {

-            type ip-address-origin;

-            description

-              "The origin of this address.";

-          }

-

-          leaf status {

-            type enumeration {

-              enum "preferred" {

-                value 0;

-                description

-                  "This is a valid address that can appear as the

-                destination or source address of a packet.";

-              }

-              enum "deprecated" {

-                value 1;

-                description

-                  "This is a valid but deprecated address that should

-                no longer be used as a source address in new

-                communications, but packets addressed to such an

-                address are processed as expected.";

-              }

-              enum "invalid" {

-                value 2;

-                description

-                  "This isn't a valid address, and it shouldn't appear

-                as the destination or source address of a packet.";

-              }

-              enum "inaccessible" {

-                value 3;

-                description

-                  "The address is not accessible because the interface

-                to which this address is assigned is not

-                operational.";

-              }

-              enum "unknown" {

-                value 4;

-                description

-                  "The status cannot be determined for some reason.";

-              }

-              enum "tentative" {

-                value 5;

-                description

-                  "The uniqueness of the address on the link is being

-                verified.  Addresses in this state should not be

-                used for general communication and should only be

-                used to determine the uniqueness of the address.";

-              }

-              enum "duplicate" {

-                value 6;

-                description

-                  "The address has been determined to be non-unique on

-                the link and so must not be used.";

-              }

-              enum "optimistic" {

-                value 7;

-                description

-                  "The address is available for use, subject to

-                restrictions, while its uniqueness on a link is

-                being verified.";

-              }

-            }

-            description

-              "The status of an address.  Most of the states correspond

-            to states from the IPv6 Stateless Address

-            Autoconfiguration protocol.";

-            reference

-              "RFC 4293: Management Information Base for the

-                  Internet Protocol (IP)

-                  - IpAddressStatusTC

-               RFC 4862: IPv6 Stateless Address Autoconfiguration";

-

-          }

-        }  // list address

-

-        list neighbor {

-          key "ip";

-          description

-            "A list of mappings from IPv6 addresses to

-          link-layer addresses.

-

-          This list represents the Neighbor Cache.";

-          reference

-            "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)";

-

-          leaf ip {

-            type inet:ipv6-address-no-zone;

-            description

-              "The IPv6 address of the neighbor node.";

-          }

-

-          leaf link-layer-address {

-            type yang:phys-address;

-            description

-              "The link-layer address of the neighbor node.";

-          }

-

-          leaf origin {

-            type neighbor-origin;

-            description

-              "The origin of this neighbor entry.";

-          }

-

-          leaf is-router {

-            type empty;

-            description

-              "Indicates that the neighbor node acts as a router.";

-          }

-

-          leaf state {

-            type enumeration {

-              enum "incomplete" {

-                value 0;

-                description

-                  "Address resolution is in progress, and the link-layer

-                address of the neighbor has not yet been

-                determined.";

-              }

-              enum "reachable" {

-                value 1;

-                description

-                  "Roughly speaking, the neighbor is known to have been

-                reachable recently (within tens of seconds ago).";

-              }

-              enum "stale" {

-                value 2;

-                description

-                  "The neighbor is no longer known to be reachable, but

-                until traffic is sent to the neighbor no attempt

-                should be made to verify its reachability.";

-              }

-              enum "delay" {

-                value 3;

-                description

-                  "The neighbor is no longer known to be reachable, and

-                traffic has recently been sent to the neighbor.

-                Rather than probe the neighbor immediately, however,

-                delay sending probes for a short while in order to

-                give upper-layer protocols a chance to provide

-                reachability confirmation.";

-              }

-              enum "probe" {

-                value 4;

-                description

-                  "The neighbor is no longer known to be reachable, and

-                unicast Neighbor Solicitation probes are being sent

-                to verify reachability.";

-              }

-            }

-            description

-              "The Neighbor Unreachability Detection state of this

-            entry.";

-            reference

-              "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)

-                  Section 7.3.2";

-

-          }

-        }  // list neighbor

-      }  // container ipv6

-    }

-  }  // module ietf-ip

-

diff --git a/models/l3vpn/src/main/yang/ietf-l3vpn-svc@2016-07-30.yang b/models/l3vpn/src/main/yang/ietf-l3vpn-svc@2016-07-30.yang
deleted file mode 100644
index dbd60dc..0000000
--- a/models/l3vpn/src/main/yang/ietf-l3vpn-svc@2016-07-30.yang
+++ /dev/null
@@ -1,2599 +0,0 @@
-module ietf-l3vpn-svc {

-

-    namespace "urn:ietf:params:xml:ns:yang:ietf-l3vpn-svc";

-

-    prefix l3vpn-svc;

-

-    import ietf-inet-types {

-        prefix inet;

-    }

-

-    import ietf-yang-types {

-        prefix yang;

-    }

-

-    organization

-     "IETF L3SM Working Group";

-

-    contact

-        "WG List:   &lt;mailto:l3sm@ietf.org&gt;

-

-        Editor:

-

-        ";

-

-    description

-        "The YANG module defines a generic service configuration

-        model for Layer 3 VPN common across all of the vendor

-        implementations.";

-

-    revision 2016-07-30 {

-        description

-        "Eliminated warnings";

-        reference

-            "draft-ietf-l3sm-l3vpn-service-yang-11";

-    }

-

-    revision 2016-07-05 {

-        description

-        "Draft text update";

-        reference

-            "draft-ietf-l3sm-l3vpn-service-yang-11";

-    }

-    revision 2016-06-27 {

-        description

-        "

-        * Removed templates

-        * Add site-network-access-type

-        * Add a leaf number-of-dynamic-address in case

-        of pe-dhcp addressing;

-

-        ";

-        reference "draft-ietf-l3sm-l3vpn-service-yang-10";

-    }

-    revision 2016-06-10 {

-        description

-         "Add site-vpn-flavor NNI";

-        reference "draft-ietf-l3sm-l3vpn-service-yang-09";

-    }

-    revision 2016-06-09 {

-        description

-         "Traffic protection moved to site level.

-          Decouple operational-requirements in two containers.

-         ";

-        reference "draft-ietf-l3sm-l3vpn-service-yang-08";

-    }

-    revision 2016-06-06 {

-        description

-         "Set config false to actual-site-start and stop

-          Add a container before cloud-access list

-          Add a container before authorized-sites list

-          Add a container before denied-sites list

-          Modified access-diversity modeling

-          Replacing type placement diversity by an identity";

-        reference "draft-ietf-l3sm-l3vpn-service-yang-07";

-    }

-    revision 2016-04-19 {

-        description

-         "* remove reference to core routing model :

-            created new address family identities

-          * added features

-          * Modified bearer parameters

-          * Modified union for ipv4/ipv6 addresses to ip-address

-          type

-          * Add BSR parameters for multicast

-          * Add applications matching for QoS classification

-          ";

-        reference "draft-ietf-l3sm-l3vpn-service-yang-06";

-    }

-    revision 2016-04-05 {

-        description

-         "

-         * Added linecard diverse for site diversity

-         * Added a new diversity enum in placement-diversity : none

-         * Added state to site location

-

-         ";

-        reference "";

-    }

-    revision 2016-03-11 {

-        description

-        "

-            * Modify VPN policy and creating a vpn-policy-list

-            * Add VPN policy reference and VPN ID reference

-            under site-network-access

-        ";

-        reference "draft-ietf-l3sm-l3vpn-service-yang-05";

-    }

-    revision 2016-01-04 {

-        description

-        "

-            * Add extranet-vpn container in vpn-svc

-            * Creating top level containers

-            * Refine groupings

-            * Added site-vpn-flavor

-        ";

-        reference "draft-ietf-l3sm-l3vpn-service-yang-03";

-    }

-    revision 2016-01-04 {

-        description

-         "

-            * qos-profile moved to choice

-            * vpn leaf moved to vpn-id in vpn-policy

-            * added ordered-by user to qos classification list

-            * moved traffic protection to access availability

-            * creating a choice in matching filter for VPN policy

-            * added dot1p matching field in flow-definition

-        ";

-        reference "";

-    }

-    revision 2015-12-07 {

-        description

-         "

-            * A site is now a collection of site-accesses.

-            This was introduced to support M to N availability.

-            * Site-availability has been removed, replaced by

-            availability parameters under site-accesses

-            * Added transport-constraints within vpn-svc

-        ";

-        reference "draft-ietf-l3sm-l3vpn-service-yang-02";

-    }

-    revision 2015-11-03 {

-        description "

-        * Add ToS support in match-flow

-        * nexthop in cascaded lan as mandatory

-        * customer-specific-info deleted and moved to routing

-        protocols

-        * customer-lan-connection modified : need prefix and CE address

-        * add choice in managing PE-CE addressing

-        * Simplifying traffic protection

-        ";

-        reference "";

-    }

-    revision 2015-09-10 {

-        description "

-        * Refine groupings for vpn-svc

-        * Removed name in vpn-svc

-        * id in vpn-svc moved to string

-        * Rename id in vpn-svc to vpn-id

-        * Changed key of vpn-svc list to vpn-id

-        * Add DSCP support in flow definition

-        ";

-        reference "";

-    }

-    revision 2015-08-07 {

-        description

-         "

-          Multicast :

-            * Removed ACL from security

-            * Add FW for site and cloud access

-         ";

-        reference "";

-    }

-    revision 2015-08-05 {

-        description

-         "

-          Multicast :

-          * Removed anycast-rp identity as discovery mechanism

-          * Added rp-group mappings for multicast

-          * Added flag for provider managed RP.

-         ";

-        reference "";

-    }

-    revision 2015-08-03 {

-        description

-         " * Creating multiple reusable groupings

-           * Added mpls leaf in vpn-svc for carrier's carrier case

-           * Modify identity single to single-site

-           * Modify site-type to site-role and also child identities.

-           * Creating OAM container under site and moved BFD in.

-           * Creating flow-definition grouping to be reused

-           in ACL, QoS ...

-           * Simplified VPN policy.

-           * Adding multicast static group to RP mappings.

-           * Removed native-vpn and site-role from global site

-           cfg, now managed within the VPN policy.

-           * Creating a separate list for site templates.

-         ";

-        reference "draft-ietf-l3sm-l3vpn-service-yang-01";

-    }

-    revision 2015-07-02 {

-        reference "draft-ietf-l3sm-l3vpn-service-yang-00";

-    }

-    revision 2015-04-24 {

-        description "

-        * Add encryption parameters

-        * Adding holdtime for BFD.

-        * Add postal address in location

-        ";

-        reference "draft-lstd-l3sm-l3vpn-service-yang-00";

-    }

-    revision 2015-02-05 {

-        description "Initial revision.";

-        reference "draft-l3vpn-service-yang-00";

-    }

-

-    /* Features */

-

-    feature cloud-access {

-        description

-         "Allow VPN to connect to a Cloud Service

-         provider.";

-    }

-    feature multicast {

-        description

-        "Enables multicast capabilities in a VPN";

-    }

-    feature ipv4 {

-        description

-        "Enables IPv4 support in a VPN";

-    }

-    feature ipv6 {

-        description

-        "Enables IPv6 support in a VPN";

-    }

-    feature carrierscarrier {

-        description

-        "Enables support of carrier's carrier";

-    }

-    feature traffic-engineering {

-        description

-        "Enables support of transport constraint.";

-    }

-    feature traffic-engineering-multicast {

-        description

-        "Enables support of transport constraint

-        for multicast.";

-    }

-    feature extranet-vpn {

-        description

-        "Enables support of extranet VPNs";

-    }

-    feature site-diversity {

-        description

-        "Enables support of site diversity constraints";

-    }

-    feature encryption {

-        description

-        "Enables support of encryption";

-    }

-    feature qos {

-        description

-        "Enables support of Class of Services";

-    }

-    feature qos-custom {

-        description

-        "Enables support of custom qos profile";

-    }

-    feature rtg-bgp {

-        description

-        "Enables support of BGP routing protocol.";

-    }

-    feature rtg-rip {

-        description

-        "Enables support of RIP routing protocol.";

-    }

-    feature rtg-ospf {

-        description

-        "Enables support of OSPF routing protocol.";

-    }

-    feature rtg-ospf-sham-link {

-        description

-        "Enables support of OSPF sham-links.";

-    }

-    feature rtg-vrrp {

-        description

-        "Enables support of VRRP routing protocol.";

-    }

-    feature fast-reroute {

-        description

-        "Enables support of Fast Reroute.";

-    }

-    feature bfd {

-        description

-        "Enables support of BFD.";

-    }

-    feature always-on {

-        description

-        "Enables support for always-on access

-        constraint.";

-    }

-    feature requested-type {

-        description

-        "Enables support for requested-type access

-        constraint.";

-    }

-    feature bearer-reference {

-        description

-        "Enables support for bearer-reference access

-        constraint.";

-    }

-

-    /* Typedefs */

-

-    typedef svc-id {

-        type string;

-        description

-         "Defining a type of service component

-         identificators.";

-    }

-

-    typedef template-id {

-        type string;

-        description

-         "Defining a type of service template

-         identificators.";

-    }

-

-    /* Identities */

-

-    identity site-network-access-type {

-        description

-         "Base identity for site-network-access type";

-    }

-    identity point-to-point {

-        base site-network-access-type;

-        description

-        "Identity for point-to-point connection";

-    }

-    identity multipoint {

-        base site-network-access-type;

-        description

-        "Identity for multipoint connection

-        Example : ethernet broadcast segment";

-    }

-    identity placement-diversity {

-        description

-         "Base identity for site placement

-         constraints";

-    }

-    identity pe-diverse {

-        base placement-diversity;

-        description

-        "Identity for PE diversity";

-    }

-    identity pop-diverse {

-        base placement-diversity;

-        description

-        "Identity for POP diversity";

-    }

-    identity linecard-diverse {

-        base placement-diversity;

-        description

-        "Identity for linecard diversity";

-    }

-    identity same-pe {

-        base placement-diversity;

-        description

-        "Identity for having sites connected

-        on the same PE";

-    }

-    identity same-bearer {

-        base placement-diversity;

-        description

-        "Identity for having sites connected

-        using the same bearer";

-    }

-    identity customer-application {

-        description

-         "Base identity for customer application";

-    }

-    identity web {

-        base customer-application;

-        description

-         "Identity for web application (e.g. HTTP,HTTPS)";

-    }

-    identity mail {

-        base customer-application;

-        description

-         "Identity for mail applications";

-    }

-    identity file-transfer {

-        base customer-application;

-        description

-         "Identity for file transfer applications (

-         e.g. FTP, SFTP, ...)";

-    }

-    identity database {

-        base customer-application;

-        description

-         "Identity for database applications";

-    }

-    identity social {

-        base customer-application;

-        description

-         "Identity for social network applications";

-    }

-    identity games {

-        base customer-application;

-        description

-         "Identity for gaming applications";

-    }

-    identity p2p {

-        base customer-application;

-        description

-         "Identity for peer to peer applications";

-    }

-    identity network-management {

-        base customer-application;

-        description

-         "Identity for management applications (e.g. telnet

-            syslog, snmp ...)";

-    }

-    identity voice {

-        base customer-application;

-        description

-         "Identity for voice applications";

-    }

-    identity video {

-        base customer-application;

-        description

-         "Identity for video conference applications";

-    }

-    identity address-family {

-        description

-         "Base identity for an address family.";

-    }

-    identity ipv4 {

-        base address-family;

-        description

-        "Identity for IPv4 address family.";

-    }

-    identity ipv6 {

-        base address-family;

-        description

-        "Identity for IPv6 address family.";

-    }

-    identity site-vpn-flavor {

-        description

-        "Base identity for the site VPN service flavor.";

-    }

-    identity site-vpn-flavor-single {

-        base site-vpn-flavor;

-        description

-        "Base identity for the site VPN service flavor.

-        Used when the site belongs to only one VPN.";

-    }

-    identity site-vpn-flavor-multi {

-        base site-vpn-flavor;

-        description

-        "Base identity for the site VPN service flavor.

-        Used when a logical connection of a site

-        belongs to multiple VPNs.";

-    }

-    identity site-vpn-flavor-sub {

-        base site-vpn-flavor;

-        description

-        "Base identity for the site VPN service flavor.

-        Used when a site has multiple logical connections.

-        Each of the connection may belong to different

-        multiple VPNs.";

-    }

-    identity site-vpn-flavor-nni {

-        base site-vpn-flavor;

-        description

-        "Base identity for the site VPN service flavor.

-        Used to describe a NNI option A connection.";

-    }

-    identity transport-constraint {

-        description

-         "Base identity for transport constraint.";

-    }

-    identity tc-latency {

-        base transport-constraint;

-        description

-         "Base identity for transport constraint

-         based on latency.";

-    }

-    identity tc-jitter {

-        base transport-constraint;

-        description

-         "Base identity for transport constraint

-         based on jitter.";

-    }

-    identity tc-bandwidth {

-        base transport-constraint;

-        description

-         "Base identity for transport constraint

-         based on bandwidth.";

-    }

-    identity tc-path-diversity {

-        base transport-constraint;

-        description

-         "Base identity for transport constraint

-         based on path diversity.";

-    }

-    identity tc-site-diversity {

-        base transport-constraint;

-        description

-         "Base identity for transport constraint

-         based on site diversity.";

-    }

-    identity management {

-        description

-         "Base identity for site management scheme.";

-    }

-    identity co-managed {

-        base management;

-        description

-         "Base identity for comanaged site.";

-    }

-    identity customer-managed {

-        base management;

-        description

-         "Base identity for customer managed site.";

-    }

-    identity provider-managed {

-        base management;

-        description

-         "Base identity for provider managed site.";

-    }

-    identity address-allocation-type {

-        description

-         "Base identity for address-allocation-type

-         for PE-CE link.";

-    }

-    identity pe-dhcp {

-        base address-allocation-type;

-        description

-         "PE router provides DHCP service to CE.";

-    }

-    identity static-address {

-        base address-allocation-type;

-        description

-         "PE-CE addressing is static.";

-    }

-    identity slaac {

-        base address-allocation-type;

-        description

-         "Use IPv6 SLAAC.";

-    }

-    identity site-role {

-        description

-         "Base identity for site type.";

-    }

-    identity any-to-any-role {

-        base site-role;

-        description

-         "Site in a any to any IPVPN.";

-    }

-    identity spoke-role {

-        base site-role;

-        description

-         "Spoke Site in a Hub & Spoke IPVPN.";

-    }

-    identity hub-role {

-        base site-role;

-        description

-         "Hub Site in a Hub & Spoke IPVPN.";

-    }

-    identity vpn-topology {

-        description

-         "Base identity for VPN topology.";

-    }

-    identity any-to-any {

-        base vpn-topology;

-        description

-         "Identity for any to any VPN topology.";

-    }

-    identity hub-spoke {

-        base vpn-topology;

-        description

-         "Identity for Hub'n'Spoke VPN topology.";

-    }

-    identity hub-spoke-disjoint {

-        base vpn-topology;

-        description

-         "Identity for Hub'n'Spoke VPN topology

-          where Hubs cannot talk between each other.";

-    }

-    identity multicast-tree-type {

-        description

-         "Base identity for multicast tree type.";

-    }

-    identity ssm-tree-type {

-        base multicast-tree-type;

-        description

-         "Identity for SSM tree type.";

-    }

-    identity asm-tree-type {

-        base multicast-tree-type;

-        description

-         "Identity for ASM tree type.";

-    }

-    identity bidir-tree-type {

-        base multicast-tree-type;

-        description

-         "Identity for BiDir tree type.";

-    }

-    identity multicast-rp-discovery-type {

-        description

-         "Base identity for rp discovery type.";

-    }

-    identity auto-rp {

-        base multicast-rp-discovery-type;

-        description

-         "Base identity for auto-rp discovery type.";

-    }

-    identity static-rp {

-        base multicast-rp-discovery-type;

-        description

-         "Base identity for static type.";

-    }

-    identity bsr-rp {

-        base multicast-rp-discovery-type;

-        description

-         "Base identity for BDR discovery type.";

-    }

-    identity routing-protocol-type {

-        description

-         "Base identity for routing-protocol type.";

-    }

-    identity ospf {

-        base routing-protocol-type;

-        description

-         "Identity for OSPF protocol type.";

-    }

-    identity bgp {

-        base routing-protocol-type;

-        description

-         "Identity for BGP protocol type.";

-    }

-    identity static {

-        base routing-protocol-type;

-        description

-         "Identity for static routing protocol type.";

-    }

-    identity rip {

-        base routing-protocol-type;

-        description

-         "Identity for RIP protocol type.";

-    }

-    identity rip-ng {

-        base routing-protocol-type;

-        description

-         "Identity for RIPng protocol type.";

-    }

-    identity vrrp {

-        base routing-protocol-type;

-        description

-         "Identity for VRRP protocol type.

-         This is to be used when LAn are directly connected

-         to provider Edge routers.";

-    }

-    identity direct {

-        base routing-protocol-type;

-        description

-         "Identity for direct protocol type.

-        .";

-    }

-    identity protocol-type {

-        description

-         "Base identity for protocol field type.";

-    }

-    identity tcp {

-        base protocol-type;

-        description

-         "TCP protocol type.";

-    }

-    identity udp {

-        base protocol-type;

-        description

-         "UDP protocol type.";

-    }

-    identity icmp {

-        base protocol-type;

-        description

-         "icmp protocol type.";

-    }

-    identity icmp6 {

-        base protocol-type;

-        description

-         "icmp v6 protocol type.";

-    }

-    identity gre {

-        base protocol-type;

-        description

-         "GRE protocol type.";

-    }

-    identity ipip {

-        base protocol-type;

-        description

-         "IPinIP protocol type.";

-    }

-    identity hop-by-hop {

-        base protocol-type;

-        description

-         "Hop by Hop IPv6 header type.";

-    }

-    identity routing {

-        base protocol-type;

-        description

-         "Routing IPv6 header type.";

-    }

-    identity esp {

-        base protocol-type;

-        description

-         "ESP header type.";

-    }

-    identity ah {

-        base protocol-type;

-        description

-         "AH header type.";

-    }

-

-    /* Groupings */

-

-    grouping vpn-service-cloud-access {

-        container cloud-accesses {

-        list cloud-access {

-            if-feature cloud-access;

-            key cloud-identifier;

-

-            leaf cloud-identifier {

-                type string;

-                description

-                 "Identification of cloud service. Local

-                 admin meaning.";

-            }

-            container authorized-sites {

-                list authorized-site {

-                    key site-id;

-

-                    leaf site-id {

-                        type leafref {

-                            path "/l3vpn-svc/sites/site/site-id";

-                        }

-                        description

-                         "Site ID.";

-                    }

-                    description

-                     "List of authorized sites.";

-                }

-                description

-                "Configuration of authorized sites";

-            }

-            container denied-sites {

-                list denied-site {

-                    key site-id;

-

-                    leaf site-id {

-                        type leafref {

-                            path "/l3vpn-svc/sites/site/site-id";

-                        }

-                        description

-                         "Site ID.";

-                    }

-                    description

-                     "List of denied sites.";

-                }

-                description

-                "Configuration of denied sites";

-            }

-            leaf nat-enabled {

-                type boolean;

-                description

-                 "Control if NAT is required or not.";

-            }

-            leaf customer-nat-address {

-                type inet:ipv4-address;

-                description

-                 "NAT address to be used in case of public

-                 or shared cloud.

-                 This is to be used in case customer is providing

-                 the public address.";

-            }

-            description

-             "Cloud access configuration.";

-        }

-            description

-             "Container for cloud access configurations";

-        }

-        description

-         "grouping for vpn cloud definition";

-    }

-

-    grouping multicast-rp-group-cfg {

-        choice group-format {

-            case startend {

-                leaf group-start {

-                    type inet:ip-address;

-                    description

-                     "First group address.";

-                }

-                leaf group-end {

-                    type inet:ip-address;

-                    description

-                     "Last group address.";

-                }

-            }

-            case singleaddress {

-                leaf group-address {

-                    type inet:ip-address;

-                    description

-                     "Group address";

-                }

-            }

-            description

-             "Choice for group format.";

-        }

-        description

-         "Definition of groups for

-         RP to group mapping.";

-    }

-

-    grouping vpn-service-multicast {

-        container multicast {

-            if-feature multicast;

-            leaf enabled {

-                type boolean;

-                default false;

-                description

-                 "Enable multicast.";

-            }

-            container customer-tree-flavors {

-                list tree-flavor {

-                    key type;

-

-                    leaf type {

-                        type identityref {

-                            base multicast-tree-type;

-                        }

-                        description

-                         "Type of tree to be used.";

-                    }

-                    description

-                     "List of tree flavors.";

-                }

-                description

-                 "Type of trees used by customer.";

-            }

-            container rp {

-                container rp-group-mappings {

-                    list rp-group-mapping {

-                        key "id";

-

-                        leaf id {

-                            type uint16;

-                            description

-                             "Unique identifier for the mapping.";

-                        }

-                        container provider-managed {

-                            leaf enabled {

-                                type boolean;

-                                default false;

-                                description

-                                 "Set to true, if the RP must be a

-                                 provider

-                                 managed node.

-                                 Set to false, if it is a customer

-                                 managed node.";

-                            }

-

-                            leaf rp-redundancy {

-                                when "../enabled = 'true'" {

-                                    description

-                                     "Relevant when RP

-                                     is provider managed.";

-                                }

-                                type boolean;

-                                default false;

-                                description

-                                 "If true, redundancy

-                                 mechanism for RP is required.";

-                            }

-                            leaf optimal-traffic-delivery {

-                                when "../enabled = 'true'" {

-                                    description

-                                     "Relevant when RP

-                                     is provider managed.";

-                                }

-                                type boolean;

-                                default false;

-                                description

-                                 "If true, SP must ensure

-                                 that traffic uses an optimal path.";

-                            }

-                            description

-                             "Parameters for provider managed RP.";

-                        }

-

-                        leaf rp-address {

-                            when "../provider-managed/enabled='false'" {

-                                description

-                                 "Relevant when RP

-                                 is provider managed.";

-                            }

-                            type inet:ip-address;

-                            description

-                            "Defines the address of the

-                            RendezvousPoint.

-                            Used if RP is customer managed.";

-                        }

-

-                        container groups {

-                            list group {

-                                key id;

-

-                                leaf id {

-                                    type uint16;

-                                    description

-                                     "Identifier for the group.";

-                                }

-                                uses multicast-rp-group-cfg;

-                                description

-                                "List of groups.";

-                            }

-                            description

-                             "Multicast groups associated with RP.";

-                        }

-

-                        description

-                         "List of RP to group mappings.";

-                    }

-                    description

-                    "RP to group mappings.";

-                }

-                container rp-discovery {

-                    leaf rp-discovery-type {

-                        type identityref {

-                            base multicast-rp-discovery-type;

-                        }

-                        default static-rp;

-                        description

-                         "Type of RP discovery used.";

-                    }

-                    container bsr-candidates {

-                        when "../rp-discovery-type='bsr-rp'" {

-                            description

-                             "Only applicable if discovery type

-                             is BSR-RP";

-                        }

-                        list bsr-candidate {

-                            key address;

-

-                            leaf address {

-                                type inet:ip-address;

-                                description

-                                 "Address of BSR candidate";

-                            }

-

-                            description

-                             "List of customer BSR candidates";

-                        }

-                        description

-                         "Customer BSR candidates address";

-                    }

-                    description

-                     "RP discovery parameters";

-                }

-

-                description

-                 "RendezvousPoint parameters.";

-            }

-            description

-                "Multicast global parameters for the VPN service.";

-        }

-        description

-         "grouping for multicast vpn definition";

-    }

-

-    grouping vpn-service-mpls {

-        leaf carrierscarrier {

-            if-feature carrierscarrier;

-            type boolean;

-            default false;

-            description

-             "The VPN is using Carrier's Carrier,

-             and so MPLS is required.";

-        }

-        description

-         "grouping for mpls CsC definition";

-    }

-

-    grouping customer-location-info {

-        container location {

-                leaf address {

-                    type string;

-                    description

-                    "Address (number and street)

-                    of the site.";

-

-                }

-                leaf zip-code {

-                    type string;

-                    description

-                    "ZIP code of the site.";

-                }

-                leaf state {

-                    type string;

-                    description

-                    "State of the site.

-                    This leaf can also be used

-                    to describe a region

-                    for country who does not have

-                    states.

-                    ";

-                }

-                leaf city {

-                    type string;

-                    description

-                     "City of the site.";

-                }

-                leaf country-code {

-                    type string;

-                    description

-                     "Country of the site.";

-                }

-                description

-                    "Location of the site.";

-        }

-        description

-         "This grouping defines customer location

-          parameters";

-    }

-

-    grouping site-diversity {

-        container site-diversity {

-                if-feature site-diversity;

-

-                container groups {

-                    list group {

-                        key group-id;

-

-                        leaf group-id {

-                            type string;

-                            description

-                             "Group-id the site

-                             is belonging to";

-                        }

-                        description

-                        "List of group-id";

-                    }

-                    description

-                     "Groups the site

-                     is belonging to.

-                     All site network accesses will

-                     inherit those group values.";

-                }

-                description

-                     "Diversity constraint type.";

-            }

-        description

-         "This grouping defines site diversity

-          parameters";

-    }

-

-    grouping access-diversity {

-        container access-diversity {

-                if-feature site-diversity;

-                container groups {

-                    list group {

-                        key group-id;

-

-                        leaf group-id {

-                            type string;

-                            description

-                             "Group-id the site network access

-                             is belonging to";

-                        }

-                        description

-                        "List of group-id";

-                    }

-                    description

-                     "Groups the site network access

-                     is belonging to";

-                }

-                container constraints {

-                    list constraint {

-                        key constraint-type;

-

-                        leaf constraint-type {

-                            type identityref {

-                                base placement-diversity;

-                            }

-                            description

-                             "Diversity constraint type.";

-                        }

-                        container target {

-                            choice target-flavor {

-                                case id {

-                                    list group {

-                                        key group-id;

-

-                                        leaf group-id {

-                                            type string;

-                                            description

-                                             "The constraint will apply

-                                             against this particular

-                                             group-id";

-                                        }

-                                        description

-                                         "List of groups";

-                                    }

-                                }

-                                case all-accesses {

-                                    leaf all-other-accesses {

-                                        type empty;

-                                        description

-                                         "The constraint will apply

-                                         against all other site network

-                                         access

-                                         of this site";

-                                    }

-                                }

-                                case all-groups {

-                                    leaf all-other-groups {

-                                        type empty;

-                                        description

-                                         "The constraint will apply

-                                         against all other groups the

-                                         customer

-                                         is managing";

-                                    }

-                                }

-                                description

-                                 "Choice for the group definition";

-                            }

-                            description

-                             "The constraint will apply against

-                             this list of groups";

-                        }

-                        description

-                         "List of constraints";

-                    }

-                    description

-                     "Constraints for placing this site

-                     network access";

-                }

-

-                description

-                     "Diversity parameters.";

-            }

-        description

-         "This grouping defines access diversity

-          parameters";

-    }

-

-    grouping operational-requirements {

-          leaf requested-site-start {

-               type yang:date-and-time;

-               description

-                "Optional leaf indicating requested date

-                and time

-                when the service at a particular site is

-                expected

-                to start";

-           }

-

-           leaf requested-site-stop {

-               type yang:date-and-time;

-               description

-                "Optional leaf indicating requested date

-                and time

-                when the service at a particular site is

-                expected

-                to stop";

-           }

-        description

-         "This grouping defines some operational parameters

-          parameters";

-    }

-

-    grouping operational-requirements-ops {

-           leaf actual-site-start {

-               type yang:date-and-time;

-               config false;

-               description

-                "Optional leaf indicating actual date

-                and time

-                when the service at a particular site

-                actually

-                started";

-           }

-           leaf actual-site-stop {

-               type yang:date-and-time;

-               config false;

-               description

-                "Optional leaf indicating actual date

-                and time

-                when the service at a particular site

-                actually

-                stopped";

-           }

-        description

-         "This grouping defines some operational parameters

-          parameters";

-    }

-

-    grouping flow-definition {

-        container match-flow {

-            leaf dscp {

-                type uint8 {

-                    range "0 .. 63";

-                }

-                description

-                 "DSCP value.";

-            }

-            leaf tos {

-                type uint8 {

-                    range "0 .. 254";

-                }

-                description

-                 "TOS value.";

-            }

-            leaf dot1p {

-                type uint8 {

-                    range "0 .. 7";

-                }

-                description

-                "802.1p matching.";

-            }

-            leaf ipv4-src-prefix {

-                type inet:ipv4-prefix;

-                description

-                 "Match on IPv4 src address.";

-            }

-            leaf ipv6-src-prefix {

-                type inet:ipv6-prefix;

-                description

-                 "Match on IPv6 src address.";

-            }

-            leaf ipv4-dst-prefix {

-                type inet:ipv4-prefix;

-                description

-                 "Match on IPv4 dst address.";

-            }

-            leaf ipv6-dst-prefix {

-                type inet:ipv6-prefix;

-                description

-                 "Match on IPv6 dst address.";

-            }

-            leaf l4-src-port {

-                type uint16;

-                description

-                 "Match on layer 4 src port.";

-            }

-            leaf l4-dst-port {

-                type uint16;

-                description

-                 "Match on layer 4 dst port.";

-            }

-            leaf protocol-field {

-                type union {

-                    type uint8;

-                    type identityref {

-                        base protocol-type;

-                    }

-                }

-                description

-                 "Match on IPv4 protocol or

-                  Ipv6 Next Header

-                 field.";

-            }

-

-            description

-             "Describe flow matching

-             criterions.";

-        }

-        description

-         "Flow definition based on criteria.";

-    }

-

-    grouping site-service-basic {

-        leaf svc-input-bandwidth {

-               type uint32;

-               units bps;

-               description

-                "From the PE perspective, the service input

-                bandwidth of the connection.";

-        }

-        leaf svc-output-bandwidth {

-           type uint32;

-           units bps;

-           description

-            "From the PE perspective, the service output

-            bandwidth of the connection.";

-        }

-        leaf svc-mtu {

-            type uint16;

-            units bytes;

-            description

-             "MTU at service level.

-             If the service is IP,

-             it refers to the IP MTU.";

-        }

-        description

-         "Defines basic service parameters for a site.";

-    }

-

-    grouping site-protection {

-        container traffic-protection {

-            if-feature fast-reroute;

-            leaf enabled {

-                type boolean;

-                description

-                 "Enables

-                 traffic protection of access link.";

-            }

-

-            description

-             "Fast reroute service parameters

-             for the site.";

-        }

-        description

-         "Defines protection service parameters for a site.";

-    }

-

-    grouping site-service-mpls {

-        container carrierscarrier {

-            if-feature carrierscarrier;

-            leaf signalling-type {

-                type enumeration {

-                    enum "ldp" {

-                        description

-                            "Use LDP as signalling

-                            protocol between PE and CE.";

-                    }

-                    enum "bgp" {

-                        description

-                            "Use BGP 3107 as signalling

-                            protocol between PE and CE.

-                            In this case, bgp must be also

-                            configured

-                            as routing-protocol.

-                            ";

-                    }

-                }

-                description

-                 "MPLS signalling type.";

-            }

-            description

-             "This container is used when customer provides

-             MPLS based services.

-             This is used in case of Carrier's

-             Carrier.";

-        }

-        description

-         "Defines MPLS service parameters for a site.";

-    }

-

-    grouping site-service-qos-profile {

-        container qos {

-            if-feature qos;

-            container qos-classification-policy {

-                list rule {

-                    key id;

-                    ordered-by user;

-

-                    leaf id {

-                        type uint16;

-                        description

-                         "ID of the rule.";

-                    }

-

-                    choice match-type {

-                        case match-flow {

-                            uses flow-definition;

-                        }

-                        case match-application {

-                            leaf match-application {

-                                type identityref {

-                                    base customer-application;

-                                }

-                                description

-                                 "Defines the application

-                                 to match.";

-                            }

-                        }

-                        description

-                         "Choice for classification";

-                    }

-

-                    leaf target-class-id {

-                        type string;

-                        description

-                         "Identification of the

-                         class of service.

-                         This identifier is internal to

-                         the administration.";

-                    }

-

-                    description

-                     "List of marking rules.";

-                }

-                description

-                 "Need to express marking rules ...";

-            }

-            container qos-profile {

-

-                choice qos-profile {

-                    description

-                     "Choice for QoS profile.

-                     Can be standard profile or custom.";

-                    case standard {

-                        leaf profile {

-                            type string;

-                            description

-                             "QoS profile to be used";

-                        }

-                    }

-                    case custom {

-                        container classes {

-                            if-feature qos-custom;

-                            list class {

-                                key class-id;

-

-                                leaf class-id {

-                                    type string;

-                                    description

-                                     "Identification of the

-                                     class of service.

-                                     This identifier is internal to

-                                     the administration.";

-                                }

-                                leaf rate-limit {

-                                    type uint8;

-                                    units percent;

-                                    description

-                                     "To be used if class must

-                                     be rate

-                                     limited. Expressed as

-                                     percentage of the svc-bw.";

-                                }

-                                leaf priority-level {

-                                    type uint8;

-                                    description

-                                     "Defines the level of the

-                                     class in

-                                     term of priority queueing.

-                                      The higher the level is the

-                                      higher

-                                      is the priority.";

-                                }

-                                leaf guaranteed-bw-percent {

-                                    type uint8;

-                                    units percent;

-                                    description

-                                     "To be used to define the

-                                     guaranteed

-                                     BW in percent of the svc-bw

-                                     available at the priority-level.";

-                                }

-                                description

-                                 "List of class of services.";

-                            }

-                            description

-                                 "Container for

-                                 list of class of services.";

-                        }

-

-                    }

-

-                }

-                description

-                "Qos profile configuration.";

-            }

-            description

-             "QoS configuration.";

-        }

-        description

-         "This grouping defines QoS parameters

-         for a site";

-

-    }

-

-    grouping site-security-authentication {

-        container authentication {

-            description

-             "Authentication parameters";

-        }

-        description

-         "This grouping defines authentication

-         parameters

-         for a site";

-    }

-

-    grouping site-security-encryption {

-        container encryption {

-            if-feature encryption;

-            leaf enabled {

-                type boolean;

-                description

-                 "If true, access encryption is required.";

-            }

-            leaf layer {

-                type enumeration {

-                    enum layer2 {

-                        description

-                         "Encryption will occur at layer2.";

-                    }

-                    enum layer3 {

-                        description

-                         "IPSec is requested.";

-                    }

-                }

-                description

-                 "Layer on which encryption is applied.";

-            }

-            container encryption-profile {

-                choice profile {

-                    case provider-profile {

-                        leaf profile-name {

-                            type string;

-                            description

-                             "Name of the SP profile

-                             to be applied.";

-                        }

-                    }

-                    case customer-profile {

-                        leaf algorithm {

-                            type string;

-                            description

-                             "Encryption algorithm to

-                             be used.";

-                        }

-                        choice key-type {

-                            case psk {

-                                leaf preshared-key {

-                                    type string;

-                                    description

-                                     "Key coming from

-                                     customer.";

-                                }

-                            }

-                            case pki {

-

-                            }

-                            description

-                             "Type of keys to be used.";

-                        }

-                    }

-                    description

-                     "Choice of profile.";

-                }

-                description

-                 "Profile of encryption to be applied.";

-            }

-            description

-             "Encryption parameters.";

-        }

-        description

-         "This grouping defines encryption parameters

-         for a site";

-    }

-

-    grouping site-attachment-bearer {

-        container bearer {

-            container requested-type {

-                if-feature requested-type;

-                leaf requested-type {

-                    type string;

-                    description

-                     "Type of requested bearer Ethernet, DSL,

-                     Wireless ...

-                     Operator specific.";

-                }

-                leaf strict {

-                    type boolean;

-                    default false;

-                    description

-                     "define if the requested-type is a preference

-                     or a strict requirement.";

-                }

-                description

-                 "Container for requested type.";

-            }

-            leaf always-on {

-                if-feature always-on;

-                type boolean;

-                default true;

-                description

-                "Request for an always on access type.

-                This means no Dial access type for

-                example.";

-            }

-            leaf bearer-reference {

-                if-feature bearer-reference;

-                type string;

-                description

-                 "This is an internal reference for the

-                 service provider.

-                 Used ";

-            }

-            description

-             "Bearer specific parameters.

-             To be augmented.";

-        }

-        description

-         "Defines physical properties of

-         a site attachment.";

-    }

-

-    grouping site-routing {

-        container routing-protocols {

-            list routing-protocol {

-                key type;

-

-                leaf type {

-                    type identityref {

-                        base routing-protocol-type;

-                    }

-                    description

-                     "Type of routing protocol.";

-                }

-

-

-                container ospf {

-                    when "../type = 'ospf'" {

-                        description

-                         "Only applies

-                         when protocol is OSPF.";

-                    }

-                    if-feature rtg-ospf;

-                    leaf-list address-family {

-                        type identityref {

-                            base address-family;

-                        }

-                        description

-                         "Address family to be activated.";

-                    }

-                    leaf area-address {

-                        type yang:dotted-quad;

-                        description

-                         "Area address.";

-                    }

-                    leaf metric {

-                        type uint16;

-                        description

-                         "Metric of PE-CE link.";

-                    }

-                    container sham-links {

-                        if-feature rtg-ospf-sham-link;

-                        list sham-link {

-                            key target-site;

-

-                            leaf target-site {

-                                type svc-id;

-                                description

-                                 "Target site for the sham link

-                                  connection.

-                                  The site is referred through it's ID.";

-                            }

-                            leaf metric {

-                                type uint16;

-                                description

-                                 "Metric of the sham link.";

-                            }

-                            description

-                             "Creates a shamlink with another

-                             site";

-                        }

-                        description

-                         "List of Sham links";

-                    }

-                    description

-                     "OSPF specific configuration.";

-                }

-

-                container bgp {

-

-                    when "../type = 'bgp'" {

-                        description

-                         "Only applies when

-                         protocol is BGP.";

-                    }

-                    if-feature rtg-bgp;

-                    leaf autonomous-system {

-                        type uint32;

-                        description

-                         "AS number.";

-                    }

-                    leaf-list address-family {

-                        type identityref {

-                            base address-family;

-                        }

-                        description

-                         "Address family to be activated.";

-                    }

-                    description

-                     "BGP specific configuration.";

-                }

-                container static {

-                    when "../type = 'static'" {

-                        description

-                         "Only applies when protocol

-                         is static.";

-                    }

-

-                    container cascaded-lan-prefixes {

-                        list ipv4-lan-prefixes {

-                            if-feature ipv4;

-                            key "lan next-hop";

-

-                            leaf lan {

-                                type inet:ipv4-prefix;

-                                description

-                                 "Lan prefixes.";

-                            }

-                            leaf lan-tag {

-                                type string;

-                                description

-                                 "Internal tag to be used in vpn

-                                 policies.";

-                            }

-                            leaf next-hop {

-                                type inet:ipv4-address;

-                                description

-                                 "Nexthop address to use at customer

-                                 side.";

-                            }

-                            description "

-                                List of LAN prefixes for

-                                the site.

-                                ";

-                        }

-                        list ipv6-lan-prefixes {

-                            if-feature ipv6;

-                            key "lan next-hop";

-

-                            leaf lan {

-                                type inet:ipv6-prefix;

-                                description

-                                 "Lan prefixes.";

-                            }

-                            leaf lan-tag {

-                                type string;

-                                description

-                                 "Internal tag to be used

-                                 in vpn policies.";

-                            }

-                            leaf next-hop {

-                                type inet:ipv6-address;

-                                description

-                                 "Nexthop address to use at

-                                 customer side.";

-                            }

-                            description "

-                                List of LAN prefixes for the site.

-                                ";

-                        }

-                        description

-                            "LAN prefixes from the customer.";

-                    }

-                    description

-                     "Static routing

-                     specific configuration.";

-                }

-                container rip {

-

-                    when "../type = 'rip'" {

-                        description

-                         "Only applies when

-                         protocol is RIP.";

-                    }

-                    if-feature rtg-rip;

-                    leaf-list address-family {

-                        type identityref {

-                            base address-family;

-                        }

-                        description

-                         "Address family to be

-                         activated.";

-                    }

-

-                    description

-                     "RIP routing specific

-                     configuration.";

-                }

-

-

-                container vrrp {

-

-                    when "../type = 'vrrp'" {

-                        description

-                         "Only applies when

-                         protocol is VRRP.";

-                    }

-                    if-feature rtg-vrrp;

-                    leaf-list address-family {

-                        type identityref {

-                            base address-family;

-                        }

-                        description

-                         "Address family to be activated.";

-                    }

-                    description

-                     "VRRP routing specific configuration.";

-                }

-

-

-                description

-                 "List of routing protocols used

-                 on the site.

-                 Need to be augmented.";

-            }

-            description

-             "Defines routing protocols.";

-        }

-        description

-         "Grouping for routing protocols.";

-    }

-

-    grouping site-attachment-ip-connection {

-        container ip-connection {

-            container ipv4 {

-                if-feature ipv4;

-                leaf address-allocation-type {

-                    type identityref {

-                        base address-allocation-type;

-                    }

-

-                    default "static-address";

-                    description

-                     "Defines how addresses are allocated.

-                     ";

-                }

-

-                leaf number-of-dynamic-address {

-                    when

-                    "../address-allocation-type = 'pe-dhcp'"

-                     {

-                        description

-                         "Only applies when

-                         protocol allocation type is static";

-                    }

-                    type uint8;

-                    default 1;

-                    description

-                     "Describes the number of IP addresses the

-                     customer requires";

-                }

-                container addresses {

-                    when

-                    "../address-allocation-type = 'static-address'" {

-                        description

-                         "Only applies when

-                         protocol allocation type is static";

-                    }

-                    leaf provider-address {

-                        type inet:ipv4-address;

-                        description

-                         "Provider side address.";

-                    }

-                    leaf customer-address {

-                        type inet:ipv4-address;

-                        description

-                         "Customer side address.";

-                    }

-                    leaf mask {

-                        type uint8 {

-                            range "0..32";

-                        }

-                        description

-                         "Subnet mask expressed

-                         in bits";

-                    }

-                    description

-                     "Describes IP addresses used";

-                }

-                description

-                 "IPv4 specific parameters";

-

-            }

-            container ipv6 {

-                if-feature ipv6;

-                leaf address-allocation-type {

-                    type identityref {

-                        base address-allocation-type;

-                    }

-                    default "static-address";

-                    description

-                     "Defines how addresses are allocated.

-                     ";

-                }

-                leaf number-of-dynamic-address {

-                    when

-                    "../address-allocation-type = 'pe-dhcp'" {

-                        description

-                         "Only applies when

-                         protocol allocation type is static";

-                    }

-                    type uint8;

-                    default 1;

-                    description

-                     "Describes the number of IP addresses the

-                     customer requires";

-                }

-                container addresses {

-                    when

-                    "../address-allocation-type = 'static-address'" {

-                        description

-                         "Only applies when

-                         protocol allocation type is static";

-                    }

-                    leaf provider-address {

-                        type inet:ipv6-address;

-                        description

-                         "Provider side address.";

-                    }

-                    leaf customer-address {

-                        type inet:ipv6-address;

-                        description

-                         "Customer side address.";

-                    }

-                    leaf mask {

-                        type uint8 {

-                            range "0..128";

-

-                        }

-                        description

-                         "Subnet mask expressed

-                         in bits";

-                    }

-                    description

-                     "Describes IP addresses used";

-                }

-

-                description

-                 "IPv6 specific parameters";

-

-            }

-            container oam {

-                container bfd {

-                    if-feature bfd;

-                    leaf bfd-enabled {

-                        type boolean;

-                        description

-                         "BFD activation";

-                    }

-

-                    choice holdtime {

-                        case profile {

-                            leaf profile-name {

-                                type string;

-                                description

-                                 "Service provider well

-                                 known profile.";

-                            }

-                            description

-                                 "Service provider well

-                                 known profile.";

-                        }

-                        case fixed {

-                            leaf fixed-value {

-                                type uint32;

-                                units msec;

-                                description

-                                 "Expected holdtime

-                                 expressed

-                                 in msec.";

-                            }

-                        }

-                        description

-                         "Choice for holdtime flavor.";

-                    }

-                    description

-                     "Container for BFD.";

-                }

-                description

-                 "Define the OAM used on the connection.";

-            }

-            description

-             "Defines connection parameters.";

-        }

-        description

-         "This grouping defines IP connection parameters.";

-    }

-

-    grouping site-service-multicast {

-        container multicast {

-            if-feature multicast;

-            leaf multicast-site-type {

-                type enumeration {

-                    enum receiver-only {

-                        description

-                         "The site has only receivers.";

-                    }

-                    enum source-only {

-                        description

-                         "The site has only sources.";

-                    }

-                    enum source-receiver {

-                        description

-                         "The site has both

-                         sources & receivers.";

-                    }

-                }

-                default "source-receiver";

-                description

-                 "Type of multicast site.";

-            }

-            container multicast-transport-protocol {

-                leaf ipv4 {

-                    if-feature ipv4;

-                    type boolean;

-                    default true;

-                    description

-                        "Enables ipv4 multicast transport";

-                }

-                leaf ipv6 {

-                    if-feature ipv6;

-                    type boolean;

-                    default false;

-                    description

-                        "Enables ipv6 multicast transport";

-                }

-                description

-                 "Defines protocol to transport multicast.";

-            }

-            leaf protocol-type {

-                type enumeration {

-                    enum host {

-                        description

-                         "

-                         Hosts are directly connected

-                         to the provider network.

-                         Host protocols like IGMP, MLD

-                         are required.

-                         ";

-                    }

-                    enum router {

-                        description

-                         "

-                         Hosts are behind a customer router.

-                         PIM will be implemented.

-                         ";

-                    }

-                    enum both {

-                        description

-                         "Some Hosts are behind a customer

-                         router and some others are directly

-                         connected to the provider network.

-                         Both host and routing protocols must be

-                         used. Typically IGMP and PIM will be

-                         implemented.

-                         ";

-                    }

-                }

-                default "both";

-                description

-                 "Multicast protocol type to be used

-                 with the customer site.";

-            }

-

-            description

-             "Multicast parameters for the site.";

-        }

-        description

-          "Multicast parameters for the site.";

-    }

-

-    grouping site-management {

-        container management {

-            leaf type {

-                type identityref {

-                    base management;

-                }

-                description

-                "Management type of the connection.";

-            }

-            leaf management-transport {

-                type identityref {

-                    base address-family;

-                }

-                description

-                 "Transport protocol used for management.";

-            }

-            leaf address {

-                type inet:ip-address;

-                description

-                 "Management address";

-            }

-

-            description

-             "Management configuration";

-        }

-        description

-          "Management parameters for the site.";

-    }

-

-    grouping site-vpn-flavor-profile {

-        leaf site-vpn-flavor {

-            type identityref {

-                base site-vpn-flavor;

-            }

-            default site-vpn-flavor-single;

-            description

-             "Defines if the site

-            is a single VPN site, or multiVPN or ...";

-        }

-        description

-         "Grouping for site-vpn-flavor.";

-    }

-

-    grouping site-vpn-policy {

-        container vpn-policy-list {

-            list vpn-policy {

-                key vpn-policy-id;

-

-                leaf vpn-policy-id {

-                    type svc-id;

-                    description

-                     "Unique identifier for

-                     the VPN policy.";

-                }

-

-                list entries {

-                    key id;

-

-                    leaf id {

-                            type svc-id;

-                            description

-                             "Unique identifier for

-                              the policy entry.";

-                    }

-                    container filter {

-                        choice lan {

-                            case lan-prefix {

-                                container lan-prefixes {

-                                    list ipv4-lan-prefixes {

-                                        if-feature ipv4;

-                                        key lan;

-

-                                        leaf lan {

-                                            type inet:ipv4-prefix;

-                                            description

-                                             "Lan prefixes.";

-                                        }

-                                        description "

-                                            List of LAN prefixes

-                                            for the site.

-                                            ";

-                                    }

-                                    list ipv6-lan-prefixes {

-                                        if-feature ipv6;

-                                        key lan;

-

-                                        leaf lan {

-                                            type inet:ipv6-prefix;

-                                            description

-                                             "Lan prefixes.";

-                                        }

-                                        description "

-                                            List of LAN prefixes

-                                            for the site.

-                                            ";

-                                    }

-                                    description

-                                     "LAN prefixes from the customer.";

-                                }

-                            }

-                            case lan-tag {

-                                leaf-list lan-tag {

-                                    type string;

-                                    description

-                                     "List of lan-tags to be matched.";

-                                }

-                            }

-                            description

-                             "Choice for LAN matching type";

-                        }

-                        description

-                         "If used, it permit to split site LANs

-                         among multiple VPNs.

-                         If no filter used, all the LANs will be

-                         part of the same VPNs with the same

-                         role.";

-                    }

-                    container vpn {

-                        leaf vpn-id {

-                            type leafref {

-                                path "/l3vpn-svc/vpn-services/vpn-svc/vpn-id";

-                            }

-                            mandatory true;

-                            description

-                             "Reference to an IPVPN.";

-                        }

-                        leaf site-role {

-                            type identityref {

-                                base site-role;

-                            }

-                            mandatory true;

-                            description

-                             "Role of the site in the IPVPN.";

-                        }

-                        description

-                         "List of VPNs the LAN is associated to.";

-                    }

-                    description

-                     "List of entries for export policy.";

-                }

-                description

-                 "List of VPN policies.";

-            }

-            description

-                 "VPN policy.";

-        }

-        description

-          "VPN policy parameters for the site.";

-    }

-

-    grouping site-maximum-routes {

-        container maximum-routes {

-            list address-family {

-                key af;

-

-                leaf af {

-                    type identityref {

-                        base address-family;

-                    }

-                    description

-                     "Address-family.";

-                }

-                leaf maximum-routes {

-                    type uint32;

-                    description

-                     "Maximum prefixes the VRF can

-                     accept for this

-                     address-family.";

-                }

-                description

-                 "List of address families.";

-            }

-

-            description

-             "Define maximum-routes for the VRF.";

-        }

-        description

-        "Define maximum-routes for the site.";

-    }

-

-    grouping site-security {

-        container security {

-            uses site-security-authentication;

-            uses site-security-encryption;

-

-            description

-             "Site specific security parameters.";

-        }

-        description

-         "Grouping for security parameters.";

-    }

-

-    grouping site-service {

-        container service {

-            uses site-service-basic;

-            uses site-service-qos-profile;

-            uses site-service-mpls;

-            uses site-service-multicast;

-

-            description

-             "Service parameters on the attachement.";

-        }

-        description

-         "Grouping for service parameters.";

-    }

-

-    grouping transport-constraint-profile {

-        list constraint-list {

-            key constraint-type;

-

-            leaf constraint-type {

-                type identityref {

-                    base transport-constraint;

-                }

-                description

-                 "Constraint type to be applied.";

-            }

-            leaf constraint-opaque-value {

-                type string;

-                description

-                "Opaque value that can be used to

-                specify constraint parameters.";

-            }

-            description

-             "List of constraints";

-        }

-        description

-         "Grouping for transport constraint.";

-    }

-

-    grouping transport-constraints {

-        container transport-constraints {

-            if-feature traffic-engineering;

-            container unicast-transport-constraints {

-                list constraint {

-                    key constraint-id;

-

-                    leaf constraint-id {

-                        type svc-id;

-                        description

-                         "Defines an ID for the constraint

-                         rule.";

-                    }

-

-                    leaf site1 {

-                        type svc-id;

-                        description

-                         "The ID refers to one site end.";

-                    }

-                    leaf site2 {

-                        type svc-id;

-                        description

-                         "The ID refers to the other

-                         site end.";

-                    }

-                    uses transport-constraint-profile;

-                    description

-                     "List of constraints.

-                     Constraints are bidirectional.";

-                }

-                description

-                 "Unicast transport constraints.";

-            }

-            container multicast-transport-constraints {

-                if-feature traffic-engineering-multicast;

-                list constraint {

-                    key constraint-id;

-

-                    leaf constraint-id {

-                        type svc-id;

-                        description

-                         "Defines an ID for the constraint

-                         rule.";

-                    }

-

-                    leaf src-site {

-                        type svc-id;

-                        description

-                         "The ID refers to source site.";

-                    }

-                    leaf dst-site {

-                        type svc-id;

-                        description

-                         "The ID refers to the receiver

-                         site.";

-                    }

-                    uses transport-constraint-profile;

-                    description

-                     "List of constraints.

-                     Constraints are unidirectional.";

-                }

-                description

-                 "Multicast transport constraints.";

-            }

-            description

-                 "transport constraints.";

-        }

-        description

-         "Grouping for transport constraints

-         description.";

-    }

-

-    grouping vpn-extranet {

-        container extranet-vpns {

-            if-feature extranet-vpn;

-            list extranet-vpn {

-                key vpn-id;

-

-                leaf vpn-id {

-                    type svc-id;

-                    description

-                        "Identifies the target VPN";

-                }

-                leaf local-sites-role {

-                    type identityref {

-                        base site-role;

-                    }

-                    description

-                     "This describes the role of the

-                     local sites in the target VPN topology.";

-                }

-                description

-                 "List of extranet VPNs the local

-                 VPN is attached to.";

-            }

-            description

-             "Container for extranet vpn cfg.";

-        }

-        description

-            "grouping for extranet VPN configuration.

-            Extranet provides a way to interconnect all sites

-            from two VPNs in a easy way.";

-    }

-

-    grouping site-attachment-availability {

-        container availability {

-            leaf access-priority {

-                type uint32;

-                default 1;

-                description

-                 "Defines the priority for the access.

-                 The highest the priority value is,

-                 the highest the

-                 preference of the access is.";

-            }

-            description

-             "Availability parameters

-             (used for multihoming)";

-        }

-        description

-         "Defines site availability parameters.";

-    }

-

-    grouping access-vpn-policy {

-        container vpn-attachment {

-            choice attachment-flavor {

-                case vpn-policy-id {

-                    leaf vpn-policy-id {

-                        type leafref {

-                            path "/l3vpn-svc/sites/site/"+

-                            "vpn-policy-list/vpn-policy/"+

-                            "vpn-policy-id";

-                        }

-                        description

-                         "Reference to a VPN policy.";

-                    }

-                }

-                case vpn-id {

-                    leaf vpn-id {

-                        type leafref {

-                            path "/l3vpn-svc/vpn-services"+

-                            "/vpn-svc/vpn-id";

-                        }

-                        description

-                            "Reference to a VPN.";

-                    }

-                    leaf site-role {

-                        type identityref {

-                                base site-role;

-                            }

-                        mandatory true;

-                        description

-                         "Role of the site in the IPVPN.";

-                    }

-                }

-                mandatory true;

-                description

-                 "Choice for VPN attachment flavor.";

-            }

-            description

-             "Defines VPN attachment of a site.";

-        }

-        description

-         "Defines the VPN attachment rules

-         for a site logical access.";

-    }

-

-    grouping vpn-svc-cfg {

-        leaf vpn-id {

-                type svc-id;

-                description

-                "VPN identifier. Local administration meaning.";

-            }

-        leaf customer-name {

-            type string;

-            description

-             "Name of the customer.";

-        }

-        leaf topology {

-            type identityref {

-                base vpn-topology;

-            }

-            default "any-to-any";

-            description

-             "VPN topology.";

-        }

-

-        uses vpn-service-cloud-access;

-        uses vpn-service-multicast;

-        uses vpn-service-mpls;

-        uses transport-constraints;

-        uses vpn-extranet;

-

-        description

-         "grouping for vpn-svc configuration.";

-    }

-

-    grouping site-top-level-cfg {

-        uses operational-requirements;

-        uses customer-location-info;

-        uses site-diversity;

-        uses site-management;

-        uses site-vpn-policy;

-        uses site-vpn-flavor-profile;

-        uses site-maximum-routes;

-        uses site-security;

-        uses site-service;

-        uses site-protection;

-        uses site-routing;

-

-        description

-         "Grouping for site top level cfg.";

-    }

-

-    grouping site-network-access-top-level-cfg {

-        leaf site-network-access-type {

-            type identityref {

-                base site-network-access-type;

-            }

-            default "point-to-point";

-            description

-            "Describes the type of connection, e.g. :

-            point-to-point or multipoint";

-        }

-        uses access-diversity;

-        uses site-attachment-bearer;

-        uses site-attachment-ip-connection;

-        uses site-security;

-        uses site-service;

-        uses site-routing;

-        uses site-attachment-availability;

-        uses access-vpn-policy;

-

-        description

-         "Grouping for site network access

-         top level cfg.";

-    }

-

-    /* Main blocks */

-

-    container l3vpn-svc {

-        container vpn-services {

-            list vpn-svc {

-                key vpn-id;

-

-                uses vpn-svc-cfg;

-

-                description "

-                    List of VPN services.

-

-                ";

-            }

-            description

-             "top level container

-             for the VPN services.";

-        }

-

-        container sites {

-            list site {

-                key site-id;

-

-                leaf site-id {

-                    type svc-id;

-                    description

-                        "Identifier of the site.";

-                }

-

-                uses site-top-level-cfg;

-                uses operational-requirements-ops;

-

-                container site-network-accesses {

-                    list site-network-access {

-                        key site-network-access-id;

-

-                        leaf site-network-access-id {

-                            type svc-id;

-                            description

-                             "Identifier for the access";

-                        }

-                        uses site-network-access-top-level-cfg;

-

-                        description

-                         "List of accesses for a site.";

-                    }

-                    description

-                     "List of accesses for a site.";

-                }

-

-                description "List of sites.";

-            }

-            description

-             "Container for sites";

-        }

-

-        description

-         "Main container for L3VPN service configuration.";

-    }

-}
\ No newline at end of file
diff --git a/models/l3vpn/src/main/yang/ietf-network-instance@2016-06-23.yang b/models/l3vpn/src/main/yang/ietf-network-instance@2016-06-23.yang
deleted file mode 100644
index 57eebdc..0000000
--- a/models/l3vpn/src/main/yang/ietf-network-instance@2016-06-23.yang
+++ /dev/null
@@ -1,241 +0,0 @@
-module ietf-network-instance {

-

-     yang-version "1";

-

-     // namespace

-     namespace "urn:ietf:params:xml:ns:yang:ietf-network-instance";

-

-     prefix "ni";

-

-     // import some basic types

-     import ietf-interfaces {

-       prefix if;

-     }

-

-     import ietf-ip {

-       prefix ip;

-     }

-

-     // meta

-     organization "IETF Routing Area Working Group (rtgwg)";

-

-     contact

-         "Routing Area Working Group - <rtgwg@ietf.org>";

-

-

-     description

-       "This module is used to support multiple network instances

-        within a single physical or virtual device.  Network

-        instances are commonly know as VRFs (virtual routing

-        and forwarding) and VSIs (virtual switching instances).";

-

-     revision "2016-06-23" {

-       description

-         "Initial revision.";

-       reference "RFC TBD";

-     }

-

-     // extension statements

-

-     feature bind-network-instance-name {

-       description

-         "Network Instance to which an interface instance is bound";

-     }

-

-     // identity statements

-

-     identity network-instance-type {

-         description

-            "Base identity from which identities describing

-             network instance types are derived.";

-     }

-

-      identity ipv4-interface-protocol-type {

-         description

-             "Base identity for derivation of IPv4 interface

-              protocols";

-      }

-

-      identity ipv6-interface-protocol-type {

-         description

-             "Base identity for derivation of IPv6 interface

-              protocols";

-      }

-

-     // typedef statements

-

-     // grouping statements

-

-     grouping interface-ip-common {

-       description

-         "interface-specific configuration for IP interfaces, IPv4 and

-         IPv6";

-

-     }

-

-     grouping ipv4-interface-protocols {

-         container ipv4-interface-protocols {

-             list ipv4-interface-protocol {

-                 key "type";

-                 leaf type {

-                     type identityref {

-                         base ipv4-interface-protocol-type;

-                     }

-                     mandatory true;

-                     description

-                         "ARP, ICMP, VRRP, DHCP Client, etc.";

-                 }

-                 description

-                     "List of IPv4 protocols configured

-                      on an interface";

-             }

-             description

-                 "Container for list of IPv4 protocols configured

-                   on an interface";

-         }

-         description

-             "Grouping for IPv4 protocols configured on an interface";

-     }

-

-     grouping ipv6-interface-protocols {

-         description

-             "Grouping for IPv6 protocols configured on

-              an interface.";

-         container ipv6-interface-protocols {

-             description

-                 "Container for list of IPv6 protocols configured

-                   on an interface.";

-             list ipv6-interface-protocol {

-                 key "type";

-                 description

-                     "List of IPv6 protocols configured

-                      on an interface";

-                 leaf type {

-                     type identityref {

-                         base ipv6-interface-protocol-type;

-                     }

-                     mandatory true;

-                     description

-                         "ND, ICMPv6, VRRP, DHCPv6 Client, etc.";

-                 }

-             }

-         }

-     }

-

-     grouping network-instance-policy {

-       description

-           "Network instance policies such as route

-            distinguisher, route targets, VPLS ID and neighbor,

-            Ethernet ID, etc. ";

-       reference

-           "RFC 4364 - BGP/MPLS Virtual Private Networks (VPNs)

-            RFC 6074 - Provisioning, Auto-Discovery, and Signaling

-                 in Layer 2 Virtual Private Networks (L2VPNs)

-            RFC 7432 - BGP MPLS-Based Ethernet VPN";

-       container network-instance-policy {

-           description "Network Instance Policy -- details TBD";

-       }

-     }

-

-     // top level device definition statements

-     container devices {

-         list device {

-             key deviceid;

-             leaf deviceid {

-                 type string;

-             }

-             container network-instances {

-                 description "Network instances each of which have

-                      and protocol instantiations. For layer 3,

-                      this consistent with the routing-instance

-                      definition in ietf-routing";

-                 reference "draft-ietf-netmod-routing-cfg";

-                 list network-instance {

-                     key name;

-                     description "List of network-instances";

-                     leaf name {

-                         type string;

-                         description "device scoped

-                              identifier for the network

-                              instance";

-                     }

-                     leaf type {

-                         type identityref {

-                             base network-instance-type;

-                         }

-                         description

-                             "The network instance type -- details TBD

-                              Likely types include core, L3-VRF, VPLS,

-                              L2-cross-connect, L2-VSI, etc.";

-                     }

-                     leaf enabled {

-                         type boolean;

-                         default "true";

-                         description

-                           "Flag indicating whether or not the network

-                            instance is enabled.";

-                     }

-                     leaf description {

-                         type string;

-                         description

-                           "Description of the network instance

-                           and its intended purpose";

-                     }

-                     uses network-instance-policy;

-                //     leaf root {

-                //       type schema-mount;

-                //       description "Root for models supported per

-                //                    network instance";

-                //     }

-                 }

-             }

-         }

-     }

-

-     // augment statements

-     augment "/if:devices/if:device/if:interfaces/if:interface" {

-       description

-           "Add a node for the identification of the logical network

-           instance (which is within the interface's identified logical

-           network element) associated with the IP information

-           configured on an interface";

-

-       leaf bind-network-instance-name {

-         type string;

-         description

-           "Network Instance to which an interface is bound";

-       }

-     }

-

-     augment "/if:devices/if:device/if:interfaces/if:interface/ip:ipv4" {

-       description

-           "Add a node for the identification of the logical

-           network instance (which is within the interface's

-           identified physical or virtual device) associated with

-           the IP information configured on an interface";

-

-       leaf bind-network-instance-name {

-         type string;

-         description

-           "Network Instance to which IPv4 interface is bound";

-

-       }

-     }

-

-     augment "/if:devices/if:device/if:interfaces/if:interface/ip:ipv6" {

-       description

-           "Add a node for the identification of the logical

-           network instance (which is within the interface's

-           identified physical or virtual device) associated with

-           the IP information configured on an interface";

-

-       leaf bind-network-instance-name {

-         type string;

-         description

-           "Network Instance to which IPv6 interface is bound";

-

-       }

-     }

-     // rpc statements

-     // notification statements

-   }
\ No newline at end of file
diff --git a/models/l3vpn/src/main/yang/l3vpn-svc-ext@2016-07-30.yang b/models/l3vpn/src/main/yang/l3vpn-svc-ext@2016-07-30.yang
deleted file mode 100644
index e3fecb6..0000000
--- a/models/l3vpn/src/main/yang/l3vpn-svc-ext@2016-07-30.yang
+++ /dev/null
@@ -1,362 +0,0 @@
-module l3vpn-svc-ext {
-    yang-version 1;
-    namespace "urn:ietf:params:xml:ns:yang:l3vpn:svc:ext";
-    prefix "l3vpn-svc-ext";
-
-    import ietf-inet-types { prefix inet;  }
-    import ietf-l3vpn-svc { prefix l3vpn;  }
-
-    revision 2016-07-30 {
-        description
-        "Eliminated warnings";
-    }
-
-    revision "2016-07-20" {
-        description "Initial revision of extended l3vpn yang model";
-    }
-
-    typedef short-as-number {
-        type inet:as-number {
-            range 0..65535;
-        }
-    }
-
-    typedef route-distinguisher {
-        reference "https://tools.ietf.org/html/rfc4364#section-4.2";
-        type union {
-            type rd-ipv4;
-            type rd-as;
-            type rd-as2;
-        }
-    }
-
-    typedef rd-ipv4 {
-        type string {
-            /* IPv4 : 2B number */
-            pattern '((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-                + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))'
-                + ':'
-                + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
-                + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
-                + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])';
-        }
-    }
-
-    typedef rd-as {
-        type string {
-            /* 2B AS : 4B number */
-            pattern '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
-                + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
-                + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])'
-                + ':'
-                + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
-                + '[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|'
-                + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
-                + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
-                + '4[0-1][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|42[0-8][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
-                + '429[0-3][0-9][0-9][0-9][0-9][0-9][0-9]|4294[0-8][0-9][0-9][0-9][0-9][0-9]|'
-                + '42949[0-5][0-9][0-9][0-9][0-9]|429496[0-6][0-9][0-9][0-9]|4294967[0-1][0-9][0-9]|'
-                + '42949672[0-8][0-9]|429496729[0-5])';
-        }
-    }
-
-    typedef rd-as2 {
-        type string {
-            /* 4B AS : 2B number */
-            pattern '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
-                + '[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|'
-                + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
-                + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
-                + '4[0-1][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|42[0-8][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
-                + '429[0-3][0-9][0-9][0-9][0-9][0-9][0-9]|4294[0-8][0-9][0-9][0-9][0-9][0-9]|'
-                + '42949[0-5][0-9][0-9][0-9][0-9]|429496[0-6][0-9][0-9][0-9]|4294967[0-1][0-9][0-9]|'
-                + '42949672[0-8][0-9]|429496729[0-5])'
-                + ':'
-                + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
-                + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
-                + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])';
-        }
-    }
-
-    identity tc-demanded-tunnel {
-        base l3vpn:transport-constraint;
-        description "on-demand tunnel.";
-    }
-
-    grouping class-profile {
-        list qos-class {
-            key class-id;
-            leaf class-id {
-                type string;
-                description
-                 "Identification of the
-                 class of service.
-                 This identifier is internal to
-                 the administration.";
-            }
-            leaf rate-limit {
-                type uint8;
-                units percent;
-                description
-                 "To be used if class must
-                 be rate
-                 limited. Expressed as
-                 percentage of the svc-bw.";
-            }
-            leaf priority-level {
-                type uint8;
-                description
-                 "Defines the level of the
-                 class in
-                 term of priority queueing.
-                 The higher the level is the
-                 higher
-                 is the priority.";
-            }
-            leaf guaranteed-bw-percent {
-                type uint8;
-                units percent;
-                description
-                 "To be used to define the
-                 guaranteed
-                 BW in percent of the svc-bw
-                 available at the priority-level.";
-            }
-            description
-             "List of class of services.";
-        }
-    }
-
-    augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:service/l3vpn:qos/l3vpn:qos-profile/l3vpn:qos-profile" {
-        case custom-unicom {
-            container inbound-classes {
-                uses class-profile;
-            }
-            container outbound-classes {
-                uses class-profile;
-            }
-        }
-    }
-
-    grouping bearer-attachment-grouping {
-        container bearer-attachment {
-            leaf pe-name {
-                type string;
-            }
-            leaf pe-mgmt-ip {
-                type inet:ipv4-address;
-            }
-            description "attached PE";
-        }
-    }
-
-    augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:bearer" {
-        uses bearer-attachment-grouping;
-    }
-
-    grouping requested-type-grouping {
-        container requested-type-profile {
-            choice requested-type-choice {
-                case dot1q-case {
-                    container dot1q {
-                        leaf physical-if {
-                            description "physical interface name.";
-                            type string;
-                        }
-                        leaf vlan-id {
-                            type uint16 {
-                                range "1..4096";
-                            }
-                        }
-                    }
-                }
-                case physical-case {
-                    container physical {
-                        leaf physical-if {
-                            description "physical interface name.";
-                            type string;
-                        }
-                    }
-                }
-            }
-            leaf circuit-id {
-                description "circuit description for PE-CE port.";
-                type string;
-            }
-        }
-    }
-
-    augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:bearer/l3vpn:requested-type" {
-        uses requested-type-grouping;
-    }
-
-    grouping bfd-grouping {
-        leaf bfd-enabled {
-            type boolean;
-            description
-             "BFD activation";
-        }
-        choice holdtime {
-            case profile {
-                leaf profile-name {
-                    type string;
-                    description
-                     "Service provider well
-                     known profile.";
-                }
-                description
-                 "Service provider well
-                 known profile.";
-            }
-            case fixed {
-                leaf fixed-value {
-                    type uint32;
-                    units msec;
-                    description
-                     "Expected holdtime
-                     expressed
-                     in msec.";
-                }
-            }
-            case dynamic {
-                container dynamic-value {
-                    leaf interval {
-                        type uint16;
-                        units msec;
-                        default 500;
-                    }
-                    leaf multiplier {
-                        type uint16;
-                        default 3;
-                    }
-                    description
-                     "interval * multiplier is
-                     timeout value.";
-                }
-            }
-        }
-    }
-
-    grouping bgp-profile {
-        leaf as-override {
-            type boolean;
-            default false;
-        }
-        container soo {
-            leaf soo-enabled {
-                type boolean;
-            }
-            leaf soo-value {
-                type string;
-            }
-        }
-        container password {
-            leaf password-enabled {
-                type boolean;
-            }
-            leaf password-value {
-                type string;
-            }
-        }
-        container bgp-timer {
-            leaf keep-alive {
-                type uint16;
-                default 60;
-                units "seconds";
-            }
-            leaf hold-time {
-                type uint16;
-                default 180;
-                units "seconds";
-            }
-        }
-        container bfd {
-            uses bfd-grouping;
-        }
-    }
-
-    augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:routing-protocols/l3vpn:routing-protocol/l3vpn:bgp" {
-        uses bgp-profile;
-    }
-
-    augment "/l3vpn:l3vpn-svc/l3vpn:vpn-services/l3vpn:vpn-svc/l3vpn:transport-constraints/l3vpn:unicast-transport-constraints/l3vpn:constraint/l3vpn:constraint-list" {
-        leaf constraint-opaque-value2 {
-            type string;
-            description
-             "Opaque value that can be used to
-             specify constraint parameters.";
-        }
-    }
-
-    grouping route-ipv4-extended-community {
-        reference "http://tools.ietf.org/html/rfc4360";
-        leaf global-administrator {
-            type inet:ipv4-address;
-        }
-        leaf local-administrator {
-            type uint16;
-        }
-    }
-
-    grouping extended-community {
-        choice extended-community {
-            reference "http://tools.ietf.org/html/rfc4360#section-4";
-            default route-target-extended-community-case;
-            case route-target-extended-community-case {
-                container route-target-extended-community {
-                    leaf global-administrator {
-                        type short-as-number;
-                    }
-                    leaf local-administrator {
-                        type uint32;
-                    }
-                }
-            }
-            case route-target-ipv4-case {
-                container route-target-ipv4 {
-                    uses route-ipv4-extended-community;
-                }
-            }
-            case route-target-extended-community-case2 {
-                container route-target-extended-community2 {
-                    leaf global-administrator {
-                        type uint32;
-                    }
-                    leaf local-administrator {
-                        type uint16;
-                    }
-                }
-            }
-        }
-    }
-
-    grouping rdrt-profile {
-        choice site-role {
-            case custom-case {
-                container custom {
-                    list import-rt {
-                        key imrt-id;
-                        leaf imrt-id {
-                          type string;
-                        }
-                        uses extended-community;
-                    }
-                    list export-rt {
-                        key exrt-id;
-                        leaf exrt-id {
-                          type string;
-                        }
-                        uses extended-community;
-                    }
-                    leaf rd {
-                        type route-distinguisher;
-                    }
-                }
-            }
-        }
-    }
-
-    augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:vpn-attachment" {
-        uses rdrt-profile;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/api/BUILD b/protocols/isis/api/BUILD
deleted file mode 100644
index 9e01912..0000000
--- a/protocols/isis/api/BUILD
+++ /dev/null
@@ -1,7 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + NETTY + JACKSON + [
-    "@io_netty_netty//jar",
-]
-
-osgi_jar_with_tests(
-    deps = COMPILE_DEPS,
-)
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisController.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisController.java
deleted file mode 100644
index 2253717..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisController.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.onosproject.isis.controller.topology.IsisLinkListener;
-import org.onosproject.isis.controller.topology.IsisRouterListener;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * Representation of an ISIS controller.
- */
-public interface IsisController {
-
-    /**
-     * Registers a listener for router meta events.
-     *
-     * @param isisRouterListener ISIS router listener instance
-     */
-    void addRouterListener(IsisRouterListener isisRouterListener);
-
-    /**
-     * Unregisters a router listener.
-     *
-     * @param isisRouterListener ISIS router listener instance
-     */
-    void removeRouterListener(IsisRouterListener isisRouterListener);
-
-    /**
-     * Updates configuration of processes.
-     *
-     * @param processesNode json node represents process
-     */
-    void updateConfig(JsonNode processesNode);
-
-    /**
-     * Gets the all configured processes.
-     *
-     * @return list of process instances
-     */
-    List<IsisProcess> allConfiguredProcesses();
-
-    /**
-     * Registers a listener for ISIS message events.
-     *
-     * @param listener the listener to notify
-     */
-    void addLinkListener(IsisLinkListener listener);
-
-    /**
-     * Unregisters a link listener.
-     *
-     * @param listener the listener to unregister
-     */
-    void removeLinkListener(IsisLinkListener listener);
-
-    /**
-     * Gets the list of listeners registered for router events.
-     *
-     * @return list of listeners
-     */
-    Set<IsisRouterListener> listener();
-
-    /**
-     * Gets the list of listeners registered for link events.
-     *
-     * @return list of listeners
-     */
-    Set<IsisLinkListener> linkListener();
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisInterface.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisInterface.java
deleted file mode 100644
index 0ff30cb..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisInterface.java
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller;
-
-import org.jboss.netty.channel.Channel;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.MacAddress;
-
-import java.util.Set;
-
-/**
- * Representation of an ISIS interface.
- */
-public interface IsisInterface {
-
-    /**
-     * Returns interface index.
-     *
-     * @return interface index
-     */
-    int interfaceIndex();
-
-    /**
-     * Sets interface index.
-     *
-     * @param interfaceIndex interface index
-     */
-    void setInterfaceIndex(int interfaceIndex);
-
-    /**
-     * Returns the interface IP address.
-     *
-     * @return interface IP address
-     */
-    Ip4Address interfaceIpAddress();
-
-    /**
-     * Sets the interface IP address.
-     *
-     * @param interfaceIpAddress interface IP address interface IP address
-     */
-    void setInterfaceIpAddress(Ip4Address interfaceIpAddress);
-
-    /**
-     * Returns the network mask.
-     *
-     * @return network mask
-     */
-    byte[] networkMask();
-
-    /**
-     * Sets the network mask.
-     *
-     * @param networkMask network mask
-     */
-    void setNetworkMask(byte[] networkMask);
-
-    /**
-     * Sets the interface MAC address.
-     *
-     * @param interfaceMacAddress interface MAC address
-     */
-    void setInterfaceMacAddress(MacAddress interfaceMacAddress);
-
-    /**
-     * Returns the neighbors list.
-     *
-     * @return neighbors list
-     */
-    Set<MacAddress> neighbors();
-
-    /**
-     * Sets intermediate system name.
-     *
-     * @param intermediateSystemName intermediate system name
-     */
-    void setIntermediateSystemName(String intermediateSystemName);
-
-    /**
-     * Returns system ID.
-     *
-     * @return systemID system ID
-     */
-    String systemId();
-
-    /**
-     * Sets system ID.
-     *
-     * @param systemId system ID
-     */
-    void setSystemId(String systemId);
-
-    /**
-     * Returns LAN ID.
-     *
-     * @return LAN ID
-     */
-    String l1LanId();
-
-    /**
-     * Sets LAN ID.
-     *
-     * @param lanId LAN ID
-     */
-    void setL1LanId(String lanId);
-
-    /**
-     * Returns LAN ID.
-     *
-     * @return LAN ID
-     */
-    String l2LanId();
-
-    /**
-     * Sets LAN ID.
-     *
-     * @param lanId LAN ID
-     */
-    void setL2LanId(String lanId);
-
-    /**
-     * Sets ID length.
-     *
-     * @param idLength ID length
-     */
-    void setIdLength(int idLength);
-
-    /**
-     * Sets max area addresses.
-     *
-     * @param maxAreaAddresses max area addresses
-     */
-    void setMaxAreaAddresses(int maxAreaAddresses);
-
-    /**
-     * Returns reserved packet circuit type.
-     *
-     * @return reserved packet circuit type
-     */
-    int reservedPacketCircuitType();
-
-    /**
-     * Sets reserved packet circuit type.
-     *
-     * @param reservedPacketCircuitType reserved packet circuit type
-     */
-    void setReservedPacketCircuitType(int reservedPacketCircuitType);
-
-    /**
-     * Returns point to point or broadcast.
-     *
-     * @return 1 if point to point, 2 broadcast
-     */
-    IsisNetworkType networkType();
-
-    /**
-     * Sets point to point.
-     *
-     * @param networkType point to point
-     */
-    void setNetworkType(IsisNetworkType networkType);
-
-    /**
-     * Returns area address.
-     *
-     * @return area address
-     */
-    String areaAddress();
-
-    /**
-     * Sets area address.
-     *
-     * @param areaAddress area address
-     */
-    void setAreaAddress(String areaAddress);
-
-    /**
-     * Sets area length.
-     *
-     * @param areaLength area length
-     */
-    void setAreaLength(int areaLength);
-
-    /**
-     * Returns holding time.
-     *
-     * @return holding time
-     */
-    int holdingTime();
-
-    /**
-     * Sets holding time.
-     *
-     * @param holdingTime holding time
-     */
-    void setHoldingTime(int holdingTime);
-
-    /**
-     * Returns priority.
-     *
-     * @return priority
-     */
-    int priority();
-
-    /**
-     * Sets priority.
-     *
-     * @param priority priority
-     */
-    void setPriority(int priority);
-
-    /**
-     * Returns hello interval.
-     *
-     * @return hello interval
-     */
-    public int helloInterval();
-
-    /**
-     * Sets hello interval.
-     *
-     * @param helloInterval hello interval
-     */
-    void setHelloInterval(int helloInterval);
-
-    /**
-     * Starts the hello timer which sends hello packet every configured seconds.
-     *
-     * @param channel netty channel instance
-     */
-    void startHelloSender(Channel channel);
-
-    /**
-     * Stops the hello timer which sends hello packet every configured seconds.
-     */
-    void stopHelloSender();
-
-    /**
-     * Processes an ISIS message which is received on this interface.
-     *
-     * @param isisMessage ISIS message instance
-     * @param isisLsdb    ISIS LSDB instance
-     * @param channel     channel instance
-     */
-    void processIsisMessage(IsisMessage isisMessage, IsisLsdb isisLsdb, Channel channel);
-
-    /**
-     * Returns the interface state.
-     *
-     * @return interface state
-     */
-    IsisInterfaceState interfaceState();
-
-    /**
-     * Sets the interface state.
-     *
-     * @param interfaceState the interface state
-     */
-    void setInterfaceState(IsisInterfaceState interfaceState);
-
-    /**
-     * Returns the LSDB instance.
-     *
-     * @return LSDB instance
-     */
-    IsisLsdb isisLsdb();
-
-    /**
-     * Returns intermediate system name.
-     *
-     * @return intermediate system name
-     */
-    String intermediateSystemName();
-
-    /**
-     * Returns the ISIS neighbor instance if exists.
-     *
-     * @param isisNeighborMac mac address of the neighbor router
-     * @return ISIS neighbor instance if exists else null
-     */
-    IsisNeighbor lookup(MacAddress isisNeighborMac);
-
-    /**
-     * Returns circuit ID.
-     *
-     * @return circuit ID
-     */
-    String circuitId();
-
-    /**
-     * Sets circuit ID.
-     *
-     * @param circuitId circuit ID
-     */
-    void setCircuitId(String circuitId);
-
-    /**
-     * Removes neighbor from the interface neighbor map.
-     *
-     * @param isisNeighbor ISIS neighbor instance
-     */
-    void removeNeighbor(IsisNeighbor isisNeighbor);
-
-    /**
-     * Removes all the neighbors.
-     */
-    void removeNeighbors();
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisInterfaceState.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisInterfaceState.java
deleted file mode 100644
index 8938518..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisInterfaceState.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller;
-
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Enum represents ISIS Interface state.
- */
-public enum IsisInterfaceState {
-    /**
-     * Represents interface is in "up" state.
-     */
-    UP(0),
-    /**
-     * Represents interface is in "initial" state.
-     */
-    INITIAL(1),
-    /**
-     * Represents interface is in "down" state.
-     */
-    DOWN(2);
-
-    // Reverse lookup table
-    private static final Map<Integer, IsisInterfaceState> LOOKUP = new HashMap<>();
-
-    // Populate the lookup table on loading time
-    static {
-        for (IsisInterfaceState isisInterfaceState : EnumSet.allOf(IsisInterfaceState.class)) {
-            LOOKUP.put(isisInterfaceState.value(), isisInterfaceState);
-        }
-    }
-
-    private int value;
-
-    /**
-     * Creates an instance of ISIS interface type.
-     *
-     * @param value represents ISIS interface type
-     */
-    private IsisInterfaceState(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Gets the enum instance from type value - reverse lookup purpose.
-     *
-     * @param interfaceStateTypeValue interface state type value
-     * @return ISIS interface state type instance
-     */
-    public static IsisInterfaceState get(int interfaceStateTypeValue) {
-        return LOOKUP.get(interfaceStateTypeValue);
-    }
-
-    /**
-     * Gets the value representing interface state type.
-     *
-     * @return value represents interface state type
-     */
-    public int value() {
-        return value;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLsdb.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLsdb.java
deleted file mode 100644
index 8480cb6..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLsdb.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * Representation of an ISIS link state database.
- */
-public interface IsisLsdb {
-
-    /**
-     * Returns the ISIS LSDB.
-     *
-     * @return ISIS LSDB
-     */
-    IsisLsdb isisLsdb();
-
-    /**
-     * Initializes LSDB.
-     */
-    void initializeDb();
-
-    /**
-     * Returns the LSDB LSP key.
-     *
-     * @param systemId system ID
-     * @return LSP key
-     */
-    String lspKey(String systemId);
-
-    /**
-     * Returns the sequence number.
-     *
-     * @param lspType L1 or L2 LSP
-     * @return sequence number
-     */
-    int lsSequenceNumber(IsisPduType lspType);
-
-    /**
-     * Finds the LSP from LSDB.
-     *
-     * @param pduType L1 or L2 LSP
-     * @param lspId   LSP ID
-     * @return LSP wrapper object
-     */
-    LspWrapper findLsp(IsisPduType pduType, String lspId);
-
-    /**
-     * Installs a new self-originated LSA in LSDB.
-     * Return true if installing was successful else false.
-     *
-     * @param lsPdu            PDU instance
-     * @param isSelfOriginated true if self originated else false
-     * @param isisInterface    ISIS interface instance
-     * @return true if successfully added
-     */
-    boolean addLsp(IsisMessage lsPdu, boolean isSelfOriginated, IsisInterface isisInterface);
-
-    /**
-     * Checks received LSP is latest, same or old.
-     *
-     * @param receivedLsp received LSP
-     * @param lspFromDb   existing LSP
-     * @return "latest", "old" or "same"
-     */
-    String isNewerOrSameLsp(IsisMessage receivedLsp, IsisMessage lspFromDb);
-
-    /**
-     * Returns all LSPs (L1 and L2).
-     *
-     * @param excludeMaxAgeLsp exclude the max age LSPs
-     * @return List of LSPs
-     */
-    List<LspWrapper> allLspHeaders(boolean excludeMaxAgeLsp);
-
-    /**
-     * Deletes the given LSP.
-     *
-     * @param lsp LSP instance
-     */
-    void deleteLsp(IsisMessage lsp);
-
-    /**
-     * Gets the neighbor database information.
-     *
-     * @return neighbor database information
-     */
-    Map<String, LspWrapper> getL1Db();
-
-    /**
-     * Gets the neighbor database information.
-     *
-     * @return neighbor database information
-     */
-    Map<String, LspWrapper> getL2Db();
-
-    /**
-     * Sets the level 1 link state sequence number.
-     *
-     * @param l1LspSeqNo link state sequence number
-     */
-     void setL1LspSeqNo(int l1LspSeqNo);
-
-    /**
-     * Sets the level 2 link state sequence number.
-     *
-     * @param l2LspSeqNo link state sequence number
-     */
-    void setL2LspSeqNo(int l2LspSeqNo);
-    /**
-     * Removes topology information when neighbor down.
-     *
-     * @param neighbor ISIS neighbor instance
-     * @param isisInterface ISIS interface instance
-     */
-    void removeTopology(IsisNeighbor neighbor, IsisInterface isisInterface);
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLsdbAge.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLsdbAge.java
deleted file mode 100644
index 2d768c6..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLsdbAge.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller;
-
-/**
- * Representation of an ISIS link state database aging.
- */
-public interface IsisLsdbAge {
-
-    /**
-     * Starts the aging timer thread which gets invokes every second.
-     */
-    void startDbAging();
-
-    /**
-     * Returns the age counter.
-     *
-     * @return age counter
-     */
-    int ageCounter();
-
-    /**
-     * Returns the age counter rollover.
-     *
-     * @return age counter rollover
-     */
-    int ageCounterRollOver();
-
-    /**
-     * Returns the bin number.
-     *
-     * @param x can be either age or ageCounter
-     * @return bin number
-     */
-    int age2Bin(int x);
-
-    /**
-     * Returns the LSP bin instance.
-     *
-     * @param binKey key to search
-     * @return LSP bin instance
-     */
-    IsisLspBin getLspBin(int binKey);
-
-    /**
-     * Adds LSP to bin.
-     *
-     * @param binNumber key to store in bin
-     * @param lspBin    LSP bin instance
-     */
-    void addLspBin(int binNumber, IsisLspBin lspBin);
-
-    /**
-     * Removes LSP from bin.
-     *
-     * @param lspWrapper LSP wrapper instance
-     */
-    void removeLspFromBin(LspWrapper lspWrapper);
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLspBin.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLspBin.java
deleted file mode 100644
index 4c88d88..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLspBin.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller;
-
-import java.util.Map;
-
-/**
- * Representation of an ISIS LSP bin which is part of LSP aging process.
- */
-public interface IsisLspBin {
-
-    /**
-     * Returns all the LSPs in the bin.
-     *
-     * @return all LSPs in the bin
-     */
-    Map<String, LspWrapper> listOfLsp();
-
-    /**
-     * Adds LSP to bin for aging.
-     *
-     * @param lspKey     key to add the LSP
-     * @param lspWrapper LSP wrapper instance
-     */
-    void addIsisLsp(String lspKey, LspWrapper lspWrapper);
-
-    /**
-     * Removes LSP from bin.
-     *
-     * @param lspKey     LSP key
-     * @param lspWrapper LSP wrapper instance
-     */
-    void removeIsisLsp(String lspKey, LspWrapper lspWrapper);
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisMessage.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisMessage.java
deleted file mode 100644
index de823f2..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisMessage.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.MacAddress;
-
-/**
- * Representation of an ISIS Message.
- */
-public interface IsisMessage {
-
-    /**
-     * Returns the interface index on which the message received.
-     *
-     * @return interface index on which the message received
-     */
-    int interfaceIndex();
-
-    /**
-     * Sets the interface index on which the message received.
-     *
-     * @param interfaceIndex interface index on which the message received
-     */
-    void setInterfaceIndex(int interfaceIndex);
-
-    /**
-     * Returns the interface mac address on which the message received.
-     *
-     * @return interface mac address on which the message received
-     */
-    MacAddress interfaceMac();
-
-    /**
-     * Sets the interface mac address on which the message received.
-     *
-     * @param interfaceMac mac address on which the message received
-     */
-    void setInterfaceMac(MacAddress interfaceMac);
-
-    /**
-     * Returns the mac address of the message sender.
-     *
-     * @return mac address of the message sender
-     */
-    MacAddress sourceMac();
-
-    /**
-     * Sets the mac address of the message sender.
-     *
-     * @param sourceMac mac address of the message sender
-     */
-    void setSourceMac(MacAddress sourceMac);
-
-    /**
-     * Returns the type of ISIS PDU.
-     *
-     * @return ISIS PDU type instance
-     */
-    IsisPduType isisPduType();
-
-    /**
-     * Reads from channel buffer and initializes the type of PDU.
-     *
-     * @param channelBuffer channel buffer instance
-     */
-    void readFrom(ChannelBuffer channelBuffer);
-
-    /**
-     * Returns IsisMessage as byte array.
-     *
-     * @return ISIS message as bytes
-     */
-    byte[] asBytes();
-}
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisNeighbor.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisNeighbor.java
deleted file mode 100644
index 170f874..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisNeighbor.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller;
-
-import org.onlab.packet.MacAddress;
-
-/**
- * Representation of an ISIS neighbor.
- */
-public interface IsisNeighbor {
-
-    /**
-     * Returns the MAC address of neighbor.
-     *
-     * @return MAC address of neighbor
-     */
-    MacAddress neighborMacAddress();
-
-    /**
-     * Returns the neighbor interface state.
-     *
-     * @return neighbor interface state
-     */
-    IsisInterfaceState interfaceState();
-
-    /**
-     * Sets the neighbor interface state.
-     *
-     * @param interfaceState the neighbor interface state
-     */
-    void setNeighborState(IsisInterfaceState interfaceState);
-
-    /**
-     * Sets the LAN ID.
-     *
-     * @param l1LanId LAN ID
-     */
-    void setL1LanId(String l1LanId);
-
-    /**
-     * Sets the LAN ID.
-     *
-     * @param l2LanId LAN ID
-     */
-    void setL2LanId(String l2LanId);
-
-    /**
-     * Returns neighbor system ID.
-     *
-     * @return neighbor system ID
-     */
-    String neighborSystemId();
-
-    /**
-     * Returns neighbor circuit ID.
-     *
-     * @return neighbor circuit ID
-     */
-    byte localCircuitId();
-
-    /**
-     * Returns neighbor extended circuit ID.
-     *
-     * @return neighbor extended circuit ID
-     */
-    int localExtendedCircuitId();
-
-    /**
-     * Sets neighbor extended circuit ID.
-     *
-     * @param localExtendedCircuitId neighbor extended circuit ID
-     */
-    void setLocalExtendedCircuitId(int localExtendedCircuitId);
-
-    /**
-     * Returns Holding time of neighbor.
-     *
-     * @return Holding time of neighbor
-     */
-    int holdingTime();
-
-    /**
-     * Sets Holding time of neighbor.
-     *
-     * @param holdingTime Holding time of neighbor
-     */
-    void setHoldingTime(int holdingTime);
-
-    /**
-     * Starts the inactivity timer for this neighbor.
-     */
-    void startInactivityTimeCheck();
-
-    /**
-     * Stops the inactivity timer.
-     */
-    void stopInactivityTimeCheck();
-
-    /**
-     * Stops the holding time check timer.
-     */
-    void stopHoldingTimeCheck();
-
-    /**
-     * Returns router type.
-     *
-     * @return router type
-     */
-    IsisRouterType routerType();
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisNetworkType.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisNetworkType.java
deleted file mode 100644
index 7e21f3f..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisNetworkType.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller;
-
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Represents ISIS network types.
- */
-public enum IsisNetworkType {
-    /**
-     * Represents point-to-point network.
-     */
-    P2P(1),
-    /**
-     * Represents broadcast network.
-     */
-    BROADCAST(2);
-    // Reverse lookup table
-    private static final Map<Integer, IsisNetworkType> LOOKUP = new HashMap<>();
-
-    // Populate the lookup table on loading time
-    static {
-        for (IsisNetworkType isisNetworkType : EnumSet.allOf(IsisNetworkType.class)) {
-            LOOKUP.put(isisNetworkType.value(), isisNetworkType);
-        }
-    }
-
-    private int value;
-
-    /**
-     * Creates an instance of ISIS network type.
-     *
-     * @param value represents ISIS network type
-     */
-    private IsisNetworkType(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Gets the enum instance from type value - reverse lookup purpose.
-     *
-     * @param isisNetworkTypeValue interface network type value
-     * @return ISIS interface network type instance
-     */
-    public static IsisNetworkType get(int isisNetworkTypeValue) {
-        return LOOKUP.get(isisNetworkTypeValue);
-    }
-
-    /**
-     * Gets the value representing network type.
-     *
-     * @return value represents network type
-     */
-    public int value() {
-        return value;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisPduType.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisPduType.java
deleted file mode 100644
index 0169529..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisPduType.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller;
-
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Representation of ISIS PDU types.
- */
-public enum IsisPduType {
-
-    /**
-     * Represents Level-1 LAN hello packet.
-     */
-    L1HELLOPDU(15),
-    /**
-     * Represents Level-2 LAN hello packet.
-     */
-    L2HELLOPDU(16),
-    /**
-     * Represents point-to-point hello packet.
-     */
-    P2PHELLOPDU(17),
-    /**
-     * Represents Level-1 link state packet.
-     */
-    L1LSPDU(18),
-    /**
-     * Represents Level-2 link state packet.
-     */
-    L2LSPDU(20),
-    /**
-     * Represents Level-1 complete sequence number packet.
-     */
-    L1CSNP(24),
-    /**
-     * Represents Level-2 complete sequence number packet.
-     */
-    L2CSNP(25),
-    /**
-     * Represents Level-1 partial sequence number packet.
-     */
-    L1PSNP(26),
-    /**
-     * Represents Level-2 partial sequence number packet.
-     */
-    L2PSNP(27);
-
-    // Reverse lookup table
-    private static final Map<Integer, IsisPduType> LOOKUP = new HashMap<>();
-
-    // Populate the lookup table on loading time
-    static {
-        for (IsisPduType isisPduType : EnumSet.allOf(IsisPduType.class)) {
-            LOOKUP.put(isisPduType.value(), isisPduType);
-        }
-    }
-
-    private int value;
-
-    /**
-     * Creates an instance of ISIS PDU type.
-     *
-     * @param value represents ISIS PDU type
-     */
-    private IsisPduType(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Gets the enum instance from type value - reverse lookup purpose.
-     *
-     * @param pduTypeValue PDU type value
-     * @return ISIS PDU type instance
-     */
-    public static IsisPduType get(int pduTypeValue) {
-        return LOOKUP.get(pduTypeValue);
-    }
-
-    /**
-     * Gets the value representing PDU type.
-     *
-     * @return value represents PDU type
-     */
-    public int value() {
-        return value;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisProcess.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisProcess.java
deleted file mode 100644
index 2f11c96..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisProcess.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller;
-
-import java.util.List;
-
-/**
- * Representation of an ISIS process.
- */
-public interface IsisProcess {
-
-    /**
-     * Returns process ID.
-     *
-     * @return process ID
-     */
-    public String processId();
-
-    /**
-     * Sets process ID.
-     *
-     * @param processId process ID
-     */
-    void setProcessId(String processId);
-
-    /**
-     * Sets list of ISIS interfaces.
-     *
-     * @param isisInterfaceList list of ISIS interface details
-     */
-    void setIsisInterfaceList(List<IsisInterface> isisInterfaceList);
-
-    /**
-     * Returns list of ISIS interface details.
-     *
-     * @return list of ISIS interface details
-     */
-    List<IsisInterface> isisInterfaceList();
-}
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisRouterType.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisRouterType.java
deleted file mode 100644
index 1a4ada9..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisRouterType.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller;
-
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Representation of ISIS router types.
- */
-public enum IsisRouterType {
-    /**
-     * Represents ISIS L1 router.
-     */
-    L1(1),
-    /**
-     * Represents ISIS L2 router.
-     */
-    L2(2),
-    /**
-     * Represents ISIS L1/L2 router.
-     */
-    L1L2(3);
-    // Reverse lookup table
-    private static final Map<Integer, IsisRouterType> LOOKUP = new HashMap<>();
-
-    // Populate the lookup table on loading time
-    static {
-        for (IsisRouterType isisRouterType : EnumSet.allOf(IsisRouterType.class)) {
-            LOOKUP.put(isisRouterType.value(), isisRouterType);
-        }
-    }
-
-    private int value;
-
-    /**
-     * Creates an instance of ISIS router type.
-     *
-     * @param value represents ISIS router type
-     */
-    private IsisRouterType(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Gets the enum instance from type value - reverse lookup purpose.
-     *
-     * @param routerTypeValue router type value
-     * @return ISIS router type instance
-     */
-    public static IsisRouterType get(int routerTypeValue) {
-        return LOOKUP.get(routerTypeValue);
-    }
-
-    /**
-     * Gets the value representing router type.
-     *
-     * @return value represents router type
-     */
-    public int value() {
-        return value;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/LspWrapper.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/LspWrapper.java
deleted file mode 100644
index 9d5f124..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/LspWrapper.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller;
-
-/**
- * Representation of a LSP wrapper.
- */
-public interface LspWrapper {
-
-    /**
-     * Returns bin number into which the LSP wrapper is put for aging process.
-     *
-     * @return bin number
-     */
-    int binNumber();
-
-    /**
-     * Sets bin number into which the LSP wrapper is put for aging process.
-     *
-     * @param binNumber bin number
-     */
-    void setBinNumber(int binNumber);
-
-    /**
-     * Checks the contained LSP is self originated or not.
-     *
-     * @return true if self originated else false
-     */
-    boolean isSelfOriginated();
-
-    /**
-     * Sets the contained LSP is self originated or not.
-     *
-     * @param selfOriginated true if self originated else false
-     */
-    void setSelfOriginated(boolean selfOriginated);
-
-    /**
-     * Returns the LSP type.
-     *
-     * @return LSP type
-     */
-    IsisPduType lspType();
-
-    /**
-     * Returns the LSPs remaining life time.
-     *
-     * @return LSPs remaining life time.
-     */
-    int remainingLifetime();
-
-    /**
-     * Returns the age counter value when LSP was received.
-     *
-     * @return age counter value when LSP was received
-     */
-    int ageCounterWhenReceived();
-
-    /**
-     * Returns the age counter roll over value when LSP was added to wrapper instance.
-     *
-     * @return age counter roll over value when LSP was added to wrapper instance
-     */
-    int ageCounterRollOverWhenAdded();
-
-    /**
-     * Returns the LSP instance stored in wrapper.
-     *
-     * @return LSP instance stored in wrapper
-     */
-    IsisMessage lsPdu();
-
-    /**
-     * Sets LSPs remaining life time.
-     *
-     * @param remainingLifetime LSPs remaining life time
-     */
-    void setRemainingLifetime(int remainingLifetime);
-
-    /**
-     * Returns the age of LSP when received.
-     *
-     * @return age of LSP when received
-     */
-    int lspAgeReceived();
-
-    /**
-     * Returns the LSP processing string.
-     *
-     * @return lsp processing value for switch case
-     */
-    String lspProcessing();
-
-    /**
-     * Returns ISIS interface instance.
-     *
-     * @return ISIS interface instance
-     */
-    IsisInterface isisInterface();
-
-    /**
-     * Returns the current LSP age.
-     *
-     * @return LSP age
-     */
-    int currentAge();
-
-    /**
-     * Sets the LSP processing string based on LSP to process.
-     *
-     * @param lspProcessing "refreshLsp" or "maxageLsp" based on LSP to process
-     */
-    void setLspProcessing(String lspProcessing);
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/package-info.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/package-info.java
deleted file mode 100644
index 27b7015..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the ISIS controller.
- */
-package org.onosproject.isis.controller;
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/DeviceInformation.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/DeviceInformation.java
deleted file mode 100644
index 68ae75b..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/DeviceInformation.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.topology;
-
-import org.onlab.packet.Ip4Address;
-
-/**
- * Representation of an ISIS device information.
- */
-public interface DeviceInformation {
-
-    /**
-     * Gets system id.
-     *
-     * @return system id
-     */
-    String systemId();
-
-    /**
-     * Sets system id.
-     *
-     * @param systemId system id
-     */
-    void setSystemId(String systemId);
-
-    /**
-     * Gets interface ids.
-     *
-     * @return interface ids
-     */
-    Ip4Address interfaceId();
-
-    /**
-     * Sets interface id.
-     *
-     * @param interfaceId interface id
-     */
-    void setInterfaceId(Ip4Address interfaceId);
-
-    /**
-     * Gets area id.
-     *
-     * @return area id
-     */
-    String areaId();
-
-    /**
-     * Sets area id.
-     *
-     * @param areaId area id
-     */
-    void setAreaId(String areaId);
-
-    /**
-     * Gets device information is already created or not.
-     *
-     * @return true if device information is already created else false
-     */
-    boolean isAlreadyCreated();
-
-    /**
-     * Sets device information is already created or not.
-     *
-     * @param alreadyCreated true if device information is already created else false
-     */
-    void setAlreadyCreated(boolean alreadyCreated);
-
-    /**
-     * Gets device is dis or not.
-     *
-     * @return true if device is dis else false
-     */
-    boolean isDis();
-
-    /**
-     * Sets device is dis or not.
-     *
-     * @param dis true if device is dr else false
-     */
-    void setDis(boolean dis);
-
-    /**
-     * Gets neighbor id.
-     *
-     * @return neighbor id
-     */
-    String neighborId();
-
-    /**
-     * Sets neighbor id.
-     *
-     * @param neighborId neighbor id
-     */
-    void setNeighborId(String neighborId);
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisAgent.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisAgent.java
deleted file mode 100644
index 07b0f15..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisAgent.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.topology;
-
-/**
- * Representation of an ISIS agent.
- * It is responsible for keeping track of the current set of routers
- * connected to the system.
- */
-public interface IsisAgent {
-    /**
-     * Adds a router that has just connected to the system.
-     *
-     * @param isisRouter the router id to add
-     * @return true if added, false otherwise
-     */
-    boolean addConnectedRouter(IsisRouter isisRouter);
-
-    /**
-     * Removes the router which got disconnected from the system.
-     *
-     * @param isisRouter the router id to remove
-     */
-    void removeConnectedRouter(IsisRouter isisRouter);
-
-    /**
-     * Notifies that got a packet of link from network and need do processing.
-     *
-     * @param isisLink  link instance
-     */
-    void addLink(IsisLink isisLink);
-
-    /**
-     * Notifies that got a packet of link from network and need do processing.
-     *
-     * @param isisLink  link instance
-     */
-    void deleteLink(IsisLink isisLink);
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLink.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLink.java
deleted file mode 100644
index ff8e532..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLink.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.topology;
-
-import org.onlab.packet.Ip4Address;
-
-/**
- * Abstraction of an ISIS Link.
- */
-public interface IsisLink {
-
-    /**
-     * Returns the remote system ID.
-     *
-     * @return remote system ID
-     */
-    String remoteSystemId();
-
-    /**
-     * Returns the local system ID.
-     *
-     * @return local system ID
-     */
-    String localSystemId();
-
-    /**
-     * Returns IP address of the interface.
-     *
-     * @return IP address of the interface
-     */
-    Ip4Address interfaceIp();
-
-    /**
-     * Returns IP address of the neighbor.
-     *
-     * @return IP address of the neighbor
-     */
-    Ip4Address neighborIp();
-
-    /**
-     * Returns the link TED details.
-     *
-     * @return linkTed link TED
-     */
-    IsisLinkTed linkTed();
-
-    /**
-     * Sets remote system ID.
-     *
-     * @param remoteSystemId remote system ID
-     */
-    void setRemoteSystemId(String remoteSystemId);
-
-    /**
-     * Sets local system ID.
-     *
-     * @param localSystemId remote system ID
-     */
-    void setLocalSystemId(String localSystemId);
-
-    /**
-     * Sets IP address of the interface.
-     *
-     * @param interfaceIp IP address of the interface
-     */
-    void setInterfaceIp(Ip4Address interfaceIp);
-
-    /**
-     * Sets IP address of the neighbor.
-     *
-     * @param neighborIp IP address of the neighbor
-     */
-    void setNeighborIp(Ip4Address neighborIp);
-
-    /**
-     * Sets the link TED information.
-     *
-     * @param linkTed link TED
-     */
-    void setLinkTed(IsisLinkTed linkTed);
-}
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLinkListener.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLinkListener.java
deleted file mode 100644
index abf0b82..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLinkListener.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.topology;
-
-/**
- * Abstraction of an ISIS link listener.
- */
-public interface IsisLinkListener {
-
-    /**
-     * Notifies that we got a link from network.
-     *
-     * @param isisLink link instance
-     */
-    void addLink(IsisLink isisLink);
-
-    /**
-     * Notifies that a link got removed from network.
-     *
-     * @param isisLink link instance
-     */
-    void deleteLink(IsisLink isisLink);
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLinkTed.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLinkTed.java
deleted file mode 100644
index 8e1461d..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLinkTed.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.topology;
-
-import org.onlab.packet.Ip4Address;
-import org.onlab.util.Bandwidth;
-
-import java.util.List;
-
-/**
- * Representation of ISIS link traffic engineering parameters.
- */
-public interface IsisLinkTed {
-
-    /**
-     * Gets the administrative group.
-     *
-     * @return administrative group
-     */
-    int administrativeGroup();
-
-    /**
-     * Sets the administrative group.
-     *
-     * @param administrativeGroup administrative group
-     */
-    void setAdministrativeGroup(int administrativeGroup);
-
-    /**
-     * Provides the IPv4 interface address.
-     *
-     * @return IPv4 interface address
-     */
-    Ip4Address ipv4InterfaceAddress();
-
-    /**
-     * Sets the IPv4 interface address.
-     *
-     * @param interfaceAddress IPv4 interface address
-     */
-    void setIpv4InterfaceAddress(Ip4Address interfaceAddress);
-
-    /**
-     * Provides the IPv4 neighbor address.
-     *
-     * @return IPv4 neighbor address
-     */
-    Ip4Address ipv4NeighborAddress();
-
-    /**
-     * Sets the IPv4 neighbor address.
-     *
-     * @param neighborAddress IPv4 neighbor address
-     */
-    void setIpv4NeighborAddress(Ip4Address neighborAddress);
-
-    /**
-     * Gets the maximum link bandwidth.
-     *
-     * @return maximum link bandwidth
-     */
-    Bandwidth maximumLinkBandwidth();
-
-    /**
-     * Sets the maximum link bandwidth.
-     *
-     * @param bandwidth maximum link bandwidth
-     */
-    void setMaximumLinkBandwidth(Bandwidth bandwidth);
-
-    /**
-     * Provides max bandwidth that can be reservable on the link.
-     *
-     * @return max bandwidth reservable
-     */
-    Bandwidth maximumReservableLinkBandwidth();
-
-    /**
-     * Sets max bandwidth that can be reservable on the link.
-     *
-     * @param bandwidth max bandwidth that can be reservable on the link
-     */
-    void setMaximumReservableLinkBandwidth(Bandwidth bandwidth);
-
-    /**
-     * Amount of bandwidth unreserved on the link.
-     *
-     * @return unreserved bandwidth
-     */
-    List<Bandwidth> unreservedBandwidth();
-
-    /**
-     * Sets the bandwidth unreserved on the link.
-     *
-     * @param bandwidth bandwidth unreserved
-     */
-    void setUnreservedBandwidth(List<Bandwidth> bandwidth);
-
-    /**
-     * Provides Traffic Engineering metric for the link.
-     *
-     * @return Traffic Engineering Default metric
-     */
-    long teDefaultMetric();
-
-    /**
-     * Sets Traffic Engineering metric for the link.
-     *
-     * @param teMetric Traffic Engineering Default metric for the link
-     */
-    void setTeDefaultMetric(long teMetric);
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouter.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouter.java
deleted file mode 100644
index 7823ae4..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouter.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.topology;
-
-import org.onlab.packet.Ip4Address;
-
-/**
- * Abstraction of an ISIS Router.
- */
-public interface IsisRouter {
-
-    /**
-     * Returns system ID for the router.
-     *
-     * @return system ID of the router
-     */
-    String systemId();
-
-    /**
-     * Returns IP address of the interface.
-     *
-     * @return IP address of the interface
-     */
-    Ip4Address interfaceId();
-
-    /**
-     * Gets IP address of the interface.
-     *
-     * @param interfaceId IP address of the interface
-     */
-    void setInterfaceId(Ip4Address interfaceId);
-
-    /**
-     * Sets system ID of the Router.
-     *
-     * @param systemId system ID of the router
-     */
-    void setSystemId(String systemId);
-
-    /**
-     * Gets neighbours ID.
-     *
-     * @return neighbour ID
-     */
-    Ip4Address neighborRouterId();
-
-    /**
-     * Sets the neighbour Id.
-     *
-     * @param neighbourId neighbour Id
-     */
-    void setNeighborRouterId(Ip4Address neighbourId);
-
-    /**
-     * Gets if the router id DIS or not.
-     *
-     * @return true if the router is DIS else false
-     */
-    boolean isDis();
-
-    /**
-     * Sets if the router id DIS or not.
-     *
-     * @param dis true if the router is DIS else false
-     */
-    void setDis(boolean dis);
-}
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouterId.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouterId.java
deleted file mode 100644
index e45b659..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouterId.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.topology;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Objects;
-
-import static com.google.common.base.Preconditions.checkArgument;
-
-/**
- * Represents an ISIS router id.
- */
-public class IsisRouterId {
-
-    private static final String SCHEME = "l3";
-    private static final long UNKNOWN = 0;
-    private final String ipAddress;
-
-    /**
-     * Creates an instance of ISIS router id.
-     *
-     * @param ipAddress IP address of the router
-     */
-    public IsisRouterId(String ipAddress) {
-        this.ipAddress = ipAddress;
-    }
-
-    /**
-     * Creates an instance from ip address.
-     *
-     * @param ipAddress IP address
-     * @return ISIS router id instance
-     */
-    public static IsisRouterId isisRouterId(String ipAddress) {
-        return new IsisRouterId(ipAddress);
-    }
-
-    /**
-     * Creates ISIS router id instance from the URI.
-     *
-     * @param uri device URI
-     * @return ISIS router id instance
-     */
-    public static IsisRouterId isisRouterId(URI uri) {
-        checkArgument(uri.getScheme().equals(SCHEME), "Unsupported URI scheme");
-        return new IsisRouterId(uri.getSchemeSpecificPart());
-    }
-
-    /**
-     * Returns device URI from the given router id.
-     *
-     * @param isisRouterId router id instance
-     * @return device URI
-     */
-    public static URI uri(IsisRouterId isisRouterId) {
-        return uri(isisRouterId.ipAddress());
-    }
-
-    /**
-     * Returns device URI from the given IP address.
-     *
-     * @param ipAddress device IP address
-     * @return device URI
-     */
-    public static URI uri(String ipAddress) {
-        try {
-            return new URI(SCHEME, ipAddress, null);
-        } catch (URISyntaxException e) {
-            return null;
-        }
-    }
-
-    /**
-     * Returns the IP address.
-     *
-     * @return IP address
-     */
-    public String ipAddress() {
-        return ipAddress;
-    }
-
-    @Override
-    public String toString() {
-        return ipAddress;
-    }
-
-    @Override
-    public boolean equals(Object other) {
-        if (!(other instanceof IsisRouterId)) {
-            return false;
-        }
-
-        IsisRouterId otherIsisRouterId = (IsisRouterId) other;
-        return Objects.equals(ipAddress, otherIsisRouterId.ipAddress);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(ipAddress);
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouterListener.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouterListener.java
deleted file mode 100644
index d42b23e..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouterListener.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.topology;
-
-/**
- * Abstraction of an ISIS Router Listener.
- * Allows for providers interested in switch events to be notified.
- */
-public interface IsisRouterListener {
-
-    /**
-     * Notifies that a router is added.
-     *
-     * @param isisRouter ISIS router instance
-     */
-    void routerAdded(IsisRouter isisRouter);
-
-    /**
-     * Notifies that a router is removed.
-     *
-     * @param isisRouter ISIS router instance
-     */
-    void routerRemoved(IsisRouter isisRouter);
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/LinkInformation.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/LinkInformation.java
deleted file mode 100644
index 573e5ef..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/LinkInformation.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.topology;
-
-import org.onlab.packet.Ip4Address;
-
-/**
- * Representation of an ISIS link information.
- */
-public interface LinkInformation {
-
-    /**
-     * Gets link id.
-     *
-     * @return link id
-     */
-    String linkId();
-
-    /**
-     * Sets link id.
-     *
-     * @param linkId link id
-     */
-    void setLinkId(String linkId);
-
-    /**
-     * Gets whether link information is already created or not.
-     *
-     * @return true if link information is already created else false
-     */
-    boolean isAlreadyCreated();
-
-    /**
-     * Sets link information is already created or not.
-     *
-     * @param alreadyCreated true if link information is already created else false
-     */
-    void setAlreadyCreated(boolean alreadyCreated);
-
-
-    /**
-     * Returns link destination ID.
-     *
-     * @return link destination ID
-     */
-    String linkDestinationId();
-
-    /**
-     * Sets link destination id.
-     *
-     * @param linkDestinationId link destination id
-     */
-    void setLinkDestinationId(String linkDestinationId);
-
-    /**
-     * Gets link source id.
-     *
-     * @return link source id
-     */
-    String linkSourceId();
-
-    /**
-     * Sets link source id.
-     *
-     * @param linkSourceId link source id
-     */
-    void setLinkSourceId(String linkSourceId);
-
-    /**
-     * Gets interface ip address.
-     *
-     * @return interface ip address
-     */
-    Ip4Address interfaceIp();
-
-    /**
-     * Sets interface ip address.
-     *
-     * @param interfaceIp interface ip address
-     */
-    void setInterfaceIp(Ip4Address interfaceIp);
-
-    /**
-     * Gets neighbor ip address.
-     *
-     * @return neighbor ip address
-     */
-    Ip4Address neighborIp();
-
-    /**
-     * Sets neighbor ip address.
-     *
-     * @param neighborIp neighbor ip address
-     */
-    void setNeighborIp(Ip4Address neighborIp);
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/TopologyForDeviceAndLink.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/TopologyForDeviceAndLink.java
deleted file mode 100644
index 3a61b2b..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/TopologyForDeviceAndLink.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.topology;
-
-import java.util.Map;
-
-/**
- * Represents IP topology for ISIS device and link details.
- */
-public interface TopologyForDeviceAndLink {
-
-    /**
-     * Gets the device information.
-     *
-     * @return device information
-     */
-    Map<String, DeviceInformation> deviceInformationMap();
-
-    /**
-     * Sets the device information.
-     *
-     * @param key                  system ID of the device as key
-     * @param deviceInformationMap device information instance
-     */
-    void setDeviceInformationMap(String key, DeviceInformation deviceInformationMap);
-
-    /**
-     * Gets the link information.
-     *
-     * @return link information
-     */
-    Map<String, LinkInformation> linkInformationMap();
-
-    /**
-     * Sets link information.
-     *
-     * @param key                system ID of the device as key
-     * @param linkInformationMap link information instance
-     */
-    void setLinkInformationMap(String key, LinkInformation linkInformationMap);
-
-    /**
-     * Removes link information.
-     *
-     * @param key key used to remove from map
-     */
-    void removeLinkInformationMap(String key);
-
-    /**
-     * Removes device information.
-     *
-     * @param key key used to remove from map
-     */
-    void removeDeviceInformationMap(String key);
-
-    /**
-     * Removes links from linkInformationMap.
-     *
-     * @param linkId ID
-     */
-    void removeLinks(String linkId);
-
-    /**
-     * Gets deviceInformation as map.
-     *
-     * @return deviceInformationMap to delete from core
-     */
-    Map<String, DeviceInformation> deviceInformationMapToDelete();
-
-    /**
-     * Sets deviceInformation as map.
-     *
-     * @param key                          key used to add in map
-     * @param deviceInformationMapToDelete device information to delete from map
-     */
-    void setDeviceInformationMapToDelete(String key, DeviceInformation deviceInformationMapToDelete);
-
-    /**
-     * Removes Device Information from deviceInformationMapToDelete.
-     *
-     * @param key key to remove from map
-     */
-    void removeDeviceInformationMapFromDeleteMap(String key);
-
-    /**
-     * Gets deviceInformation as map for Point-To-Point.
-     *
-     * @return deviceInformationMap
-     */
-    Map<String, DeviceInformation> deviceInformationMapForPointToPoint();
-
-    /**
-     * Sets deviceInformation as map for Point-To-Point..
-     *
-     * @param key                  key to add to map
-     * @param deviceInformationMap device information map
-     */
-    void setDeviceInformationMapForPointToPoint(String key, DeviceInformation deviceInformationMap);
-
-    /**
-     * Gets linkInformation as map for PointToPoint.
-     *
-     * @return linkInformationMap
-     */
-    Map<String, LinkInformation> linkInformationMapForPointToPoint();
-
-    /**
-     * Sets linkInformation as map for PointToPoint.
-     *
-     * @param key                key to add link information to map
-     * @param linkInformationMap link information to add
-     */
-    void setLinkInformationMapForPointToPoint(String key, LinkInformation linkInformationMap);
-}
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/package-info.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/package-info.java
deleted file mode 100644
index cc563b8..0000000
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the ISIS topology provider.
- */
-package org.onosproject.isis.controller.topology;
\ No newline at end of file
diff --git a/protocols/isis/ctl/BUILD b/protocols/isis/ctl/BUILD
deleted file mode 100644
index 950f043..0000000
--- a/protocols/isis/ctl/BUILD
+++ /dev/null
@@ -1,9 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + NETTY + JACKSON + [
-    "@io_netty_netty//jar",
-    "//protocols/isis/api:onos-protocols-isis-api",
-    "//protocols/isis/isisio:onos-protocols-isis-isisio",
-]
-
-osgi_jar_with_tests(
-    deps = COMPILE_DEPS,
-)
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/Controller.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/Controller.java
deleted file mode 100644
index 381109e..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/Controller.java
+++ /dev/null
@@ -1,598 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.jboss.netty.bootstrap.ClientBootstrap;
-import org.jboss.netty.channel.AdaptiveReceiveBufferSizePredictor;
-import org.jboss.netty.channel.ChannelFuture;
-import org.jboss.netty.channel.ChannelFutureListener;
-import org.jboss.netty.channel.ChannelPipelineFactory;
-import org.jboss.netty.channel.FixedReceiveBufferSizePredictorFactory;
-import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.MacAddress;
-import org.onlab.packet.TpPort;
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisNetworkType;
-import org.onosproject.isis.controller.IsisProcess;
-import org.onosproject.isis.controller.IsisRouterType;
-import org.onosproject.isis.controller.topology.IsisAgent;
-import org.onosproject.isis.controller.topology.IsisLink;
-import org.onosproject.isis.controller.topology.IsisRouter;
-import org.onosproject.isis.io.util.IsisConstants;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.NetworkInterface;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-
-import static org.onlab.util.Tools.groupedThreads;
-
-/**
- * Representation of an ISIS controller.
- */
-public class Controller {
-    protected static final int BUFFER_SIZE = 4 * 1024 * 1024;
-    private static final Logger log = LoggerFactory.getLogger(Controller.class);
-    private static final int RETRY_INTERVAL = 4;
-    private final int peerWorkerThreads = 16;
-    byte[] configPacket = null;
-    private List<IsisProcess> processes = null;
-    private IsisChannelHandler isisChannelHandler;
-    private NioClientSocketChannelFactory peerExecFactory;
-    private ClientBootstrap peerBootstrap = null;
-    private TpPort isisPort = TpPort.tpPort(IsisConstants.SPORT);
-    private ScheduledExecutorService connectExecutor = null;
-    private int connectRetryCounter = 0;
-    private int connectRetryTime;
-    private ScheduledFuture future = null;
-    private IsisAgent agent;
-
-    /**
-     * Deactivates ISIS controller.
-     */
-    public void isisDeactivate() {
-        disconnectExecutor();
-        processes = null;
-        if (peerExecFactory != null) {
-            peerExecFactory.shutdown();
-        }
-    }
-
-    /**
-     * Sets ISIS agent.
-     *
-     * @param agent ISIS agent instance
-     */
-    public void setAgent(IsisAgent agent) {
-        this.agent = agent;
-    }
-
-
-    /**
-     * Updates the processes configuration.
-     *
-     * @param jsonNode json node instance
-     */
-    public void updateConfig(JsonNode jsonNode) {
-        log.debug("Controller::UpdateConfig called");
-        configPacket = new byte[IsisConstants.CONFIG_LENGTH];
-        byte numberOfInterface = 0; // number of interfaces to configure
-
-        configPacket[0] = (byte) 0xFF; // its a conf packet - identifier
-        List<IsisProcess> isisProcesses = getConfig(jsonNode);
-        for (IsisProcess isisProcess : isisProcesses) {
-            log.debug("IsisProcessDetails : " + isisProcess);
-            for (IsisInterface isisInterface : isisProcess.isisInterfaceList()) {
-                DefaultIsisInterface isisInterfaceImpl = (DefaultIsisInterface) isisInterface;
-                log.debug("IsisInterfaceDetails : " + isisInterface);
-                numberOfInterface++;
-                configPacket[2 * numberOfInterface] = (byte) isisInterfaceImpl.interfaceIndex();
-                if (isisInterface.networkType() == IsisNetworkType.BROADCAST &&
-                        isisInterfaceImpl.reservedPacketCircuitType() == IsisRouterType.L1.value()) {
-                    configPacket[(2 * numberOfInterface) + 1] = (byte) 0;
-                } else if (isisInterface.networkType() == IsisNetworkType.BROADCAST &&
-                        isisInterfaceImpl.reservedPacketCircuitType() == IsisRouterType.L2.value()) {
-                    configPacket[(2 * numberOfInterface) + 1] = (byte) 1;
-                } else if (isisInterface.networkType() == IsisNetworkType.P2P) {
-                    configPacket[(2 * numberOfInterface) + 1] = (byte) 2;
-                } else if (isisInterface.networkType() == IsisNetworkType.BROADCAST &&
-                        isisInterfaceImpl.reservedPacketCircuitType() == IsisRouterType.L1L2.value()) {
-                    configPacket[(2 * numberOfInterface) + 1] = (byte) 3;
-                }
-            }
-        }
-        configPacket[1] = numberOfInterface;
-        //First time configuration
-        if (processes == null) {
-            if (!isisProcesses.isEmpty()) {
-                processes = isisProcesses;
-                connectPeer();
-            }
-        } else {
-            isisChannelHandler.updateInterfaceMap(isisProcesses);
-            //Send the config packet
-            isisChannelHandler.sentConfigPacket(configPacket);
-        }
-    }
-
-    /**
-     * Initializes the netty client channel connection.
-     */
-    private void initConnection() {
-        if (peerBootstrap != null) {
-            return;
-        }
-        peerBootstrap = createPeerBootStrap();
-
-        peerBootstrap.setOption("reuseAddress", true);
-        peerBootstrap.setOption("tcpNoDelay", true);
-        peerBootstrap.setOption("keepAlive", true);
-        peerBootstrap.setOption("receiveBufferSize", Controller.BUFFER_SIZE);
-        peerBootstrap.setOption("receiveBufferSizePredictorFactory",
-                new FixedReceiveBufferSizePredictorFactory(
-                        Controller.BUFFER_SIZE));
-        peerBootstrap.setOption("receiveBufferSizePredictor",
-                new AdaptiveReceiveBufferSizePredictor(64, 1024, 65536));
-        peerBootstrap.setOption("child.keepAlive", true);
-        peerBootstrap.setOption("child.tcpNoDelay", true);
-        peerBootstrap.setOption("child.sendBufferSize", Controller.BUFFER_SIZE);
-        peerBootstrap.setOption("child.receiveBufferSize", Controller.BUFFER_SIZE);
-        peerBootstrap.setOption("child.receiveBufferSizePredictorFactory",
-                new FixedReceiveBufferSizePredictorFactory(
-                        Controller.BUFFER_SIZE));
-        peerBootstrap.setOption("child.reuseAddress", true);
-
-        isisChannelHandler = new IsisChannelHandler(this, processes);
-        ChannelPipelineFactory pfact = new IsisPipelineFactory(isisChannelHandler);
-        peerBootstrap.setPipelineFactory(pfact);
-    }
-
-    /**
-     * Creates peer boot strap.
-     *
-     * @return client bootstrap instance
-     */
-    private ClientBootstrap createPeerBootStrap() {
-
-        if (peerWorkerThreads == 0) {
-            peerExecFactory = new NioClientSocketChannelFactory(
-                    Executors.newCachedThreadPool(groupedThreads("onos/isis", "boss-%d")),
-                    Executors.newCachedThreadPool(groupedThreads("onos/isis", "worker-%d")));
-            return new ClientBootstrap(peerExecFactory);
-        } else {
-            peerExecFactory = new NioClientSocketChannelFactory(
-                    Executors.newCachedThreadPool(groupedThreads("onos/isis", "boss-%d")),
-                    Executors.newCachedThreadPool(groupedThreads("onos/isis", "worker-%d")),
-                    peerWorkerThreads);
-            return new ClientBootstrap(peerExecFactory);
-        }
-    }
-
-    /**
-     * Gets all configured processes.
-     *
-     * @return all configured processes
-     */
-    public List<IsisProcess> getAllConfiguredProcesses() {
-        return processes;
-    }
-
-    /**
-     * Gets the list of processes configured.
-     *
-     * @param json posted json
-     * @return list of processes configured
-     */
-    private List<IsisProcess> getConfig(JsonNode json) {
-        List<IsisProcess> isisProcessesList = new ArrayList<>();
-        JsonNode jsonNodes = json;
-        if (jsonNodes == null) {
-            return isisProcessesList;
-        }
-        jsonNodes.forEach(jsonNode -> {
-            List<IsisInterface> interfaceList = new ArrayList<>();
-            for (JsonNode jsonNode1 : jsonNode.path(IsisConstants.INTERFACE)) {
-                IsisInterface isisInterface = new DefaultIsisInterface();
-                String index = jsonNode1.path(IsisConstants.INTERFACEINDEX).asText();
-                if (isPrimitive(index)) {
-                    int input = Integer.parseInt(index);
-                    if (input < 1 || input > 255) {
-                        log.debug("Wrong interface index: {}", index);
-                        continue;
-                    }
-                    isisInterface.setInterfaceIndex(Integer.parseInt(index));
-                } else {
-                    log.debug("Wrong interface index {}", index);
-                    continue;
-                }
-                Ip4Address ipAddress = getInterfaceIp(isisInterface.interfaceIndex());
-                if (ipAddress != null && !ipAddress.equals(IsisConstants.DEFAULTIP)) {
-                    isisInterface.setInterfaceIpAddress(ipAddress);
-                } else {
-                    log.debug("Wrong interface index {}. No matching interface in system.", index);
-                    continue;
-                }
-                MacAddress macAddress = getInterfaceMac(isisInterface.interfaceIndex());
-                if (macAddress != null) {
-                    isisInterface.setInterfaceMacAddress(macAddress);
-                } else {
-                    log.debug("Wrong interface index {}. No matching interface in system.", index);
-                    continue;
-                }
-                String mask = getInterfaceMask(isisInterface.interfaceIndex());
-                if (mask != null) {
-                    try {
-                        isisInterface.setNetworkMask(InetAddress.getByName(mask).getAddress());
-                    } catch (UnknownHostException e) {
-                        log.debug("Wrong interface index {}. Error while getting network mask.", index);
-                    }
-                } else {
-                    log.debug("Wrong interface index {}. Error while getting network mask.", index);
-                    continue;
-                }
-                isisInterface.setIntermediateSystemName(jsonNode1
-                        .path(IsisConstants.INTERMEDIATESYSTEMNAME)
-                        .asText());
-                String systemId = jsonNode1.path(IsisConstants.SYSTEMID).asText();
-                if (isValidSystemId(systemId)) {
-                    isisInterface.setSystemId(systemId);
-                } else {
-                    log.debug("Wrong systemId: {} for interface index {}.", systemId, index);
-                    continue;
-                }
-                String circuitType = jsonNode1.path(IsisConstants.RESERVEDPACKETCIRCUITTYPE).asText();
-                if (isPrimitive(circuitType)) {
-                    int input = Integer.parseInt(circuitType);
-                    if (input < 1 || input > 3) {
-                        log.debug("Wrong ReservedPacketCircuitType: {} for interface index {}.", circuitType, index);
-                        continue;
-                    }
-                    isisInterface.setReservedPacketCircuitType(input);
-                } else {
-                    log.debug("Wrong ReservedPacketCircuitType: {} for interface index {}.", circuitType, index);
-                    continue;
-                }
-                String networkType = jsonNode1.path(IsisConstants.NETWORKTYPE).asText();
-                if (isPrimitive(networkType)) {
-                    int input = Integer.parseInt(networkType);
-                    if (input < 1 || input > 2) {
-                        log.debug("Wrong networkType: {} for interface index {}.", networkType, index);
-                        continue;
-                    }
-                    isisInterface.setNetworkType(IsisNetworkType.get(input));
-                } else {
-                    log.debug("Wrong networkType: {} for interface index {}.", networkType, index);
-                    continue;
-                }
-                String areaAddress = jsonNode1.path(IsisConstants.AREAADDRESS).asText();
-                if (isPrimitive(areaAddress)) {
-                    if (areaAddress.length() > 7) {
-                        log.debug("Wrong areaAddress: {} for interface index {}.", areaAddress, index);
-                        continue;
-                    }
-                    isisInterface.setAreaAddress(areaAddress);
-                } else {
-                    log.debug("Wrong areaAddress: {} for interface index {}.", areaAddress, index);
-                    continue;
-                }
-                String circuitId = jsonNode1.path(IsisConstants.CIRCUITID).asText();
-                if (isPrimitive(circuitId)) {
-                    int input = Integer.parseInt(circuitId);
-                    if (input < 1) {
-                        log.debug("Wrong circuitId: {} for interface index {}.", circuitId, index);
-                        continue;
-                    }
-                    isisInterface.setCircuitId(circuitId);
-                } else {
-                    log.debug("Wrong circuitId: {} for interface index {}.", circuitId, index);
-                    continue;
-                }
-                String holdingTime = jsonNode1.path(IsisConstants.HOLDINGTIME).asText();
-                if (isPrimitive(holdingTime)) {
-                    int input = Integer.parseInt(holdingTime);
-                    if (input < 1 || input > 255) {
-                        log.debug("Wrong holdingTime: {} for interface index {}.", holdingTime, index);
-                        continue;
-                    }
-                    isisInterface.setHoldingTime(input);
-                } else {
-                    log.debug("Wrong holdingTime: {} for interface index {}.", holdingTime, index);
-                    continue;
-                }
-                String helloInterval = jsonNode1.path(IsisConstants.HELLOINTERVAL).asText();
-                if (isPrimitive(helloInterval)) {
-                    int interval = Integer.parseInt(helloInterval);
-                    if (interval > 0 && interval <= 255) {
-                        isisInterface.setHelloInterval(interval);
-                    } else {
-                        log.debug("Wrong hello interval: {} for interface index {}.", helloInterval, index);
-                        continue;
-                    }
-                } else {
-                    log.debug("Wrong hello interval: {} for interface index {}.", helloInterval, index);
-                    continue;
-                }
-                interfaceList.add(isisInterface);
-            }
-            if (!interfaceList.isEmpty()) {
-                IsisProcess process = new DefaultIsisProcess();
-                process.setProcessId(jsonNode.path(IsisConstants.PROCESSESID).asText());
-                process.setIsisInterfaceList(interfaceList);
-                isisProcessesList.add(process);
-            }
-        });
-
-        return isisProcessesList;
-    }
-
-    /**
-     * Returns interface MAC by index.
-     *
-     * @param interfaceIndex interface index
-     * @return interface IP by index
-     */
-    private MacAddress getInterfaceMac(int interfaceIndex) {
-        MacAddress macAddress = null;
-        try {
-            NetworkInterface networkInterface = NetworkInterface.getByIndex(interfaceIndex);
-            macAddress = MacAddress.valueOf(networkInterface.getHardwareAddress());
-        } catch (Exception e) {
-            log.debug("Error while getting Interface IP by index");
-            return macAddress;
-        }
-
-        return macAddress;
-    }
-
-    /**
-     * Returns interface IP by index.
-     *
-     * @param interfaceIndex interface index
-     * @return interface IP by index
-     */
-    private Ip4Address getInterfaceIp(int interfaceIndex) {
-        Ip4Address ipAddress = null;
-        try {
-            NetworkInterface networkInterface = NetworkInterface.getByIndex(interfaceIndex);
-            Enumeration ipAddresses = networkInterface.getInetAddresses();
-            while (ipAddresses.hasMoreElements()) {
-                InetAddress address = (InetAddress) ipAddresses.nextElement();
-                if (!address.isLinkLocalAddress()) {
-                    ipAddress = Ip4Address.valueOf(address.getAddress());
-                    break;
-                }
-            }
-        } catch (Exception e) {
-            log.debug("Error while getting Interface IP by index");
-            return IsisConstants.DEFAULTIP;
-        }
-        return ipAddress;
-    }
-
-    /**
-     * Returns interface MAC by index.
-     *
-     * @param interfaceIndex interface index
-     * @return interface IP by index
-     */
-    private String getInterfaceMask(int interfaceIndex) {
-        String subnetMask = null;
-        try {
-            Ip4Address ipAddress = getInterfaceIp(interfaceIndex);
-            NetworkInterface networkInterface = NetworkInterface.getByInetAddress(
-                    InetAddress.getByName(ipAddress.toString()));
-            Enumeration ipAddresses = networkInterface.getInetAddresses();
-            int index = 0;
-            while (ipAddresses.hasMoreElements()) {
-                InetAddress address = (InetAddress) ipAddresses.nextElement();
-                if (!address.isLinkLocalAddress()) {
-                    break;
-                }
-                index++;
-            }
-            int prfLen = networkInterface.getInterfaceAddresses().get(index).getNetworkPrefixLength();
-            int shft = 0xffffffff << (32 - prfLen);
-            int oct1 = ((byte) ((shft & 0xff000000) >> 24)) & 0xff;
-            int oct2 = ((byte) ((shft & 0x00ff0000) >> 16)) & 0xff;
-            int oct3 = ((byte) ((shft & 0x0000ff00) >> 8)) & 0xff;
-            int oct4 = ((byte) (shft & 0x000000ff)) & 0xff;
-            subnetMask = oct1 + "." + oct2 + "." + oct3 + "." + oct4;
-        } catch (Exception e) {
-            log.debug("Error while getting Interface network mask by index");
-            return subnetMask;
-        }
-        return subnetMask;
-    }
-
-    /**
-     * Checks if primitive or not.
-     *
-     * @param value input value
-     * @return true if number else false
-     */
-    private boolean isPrimitive(String value) {
-        boolean status = true;
-        value = value.trim();
-        if (value.length() < 1) {
-            return false;
-        }
-        for (int i = 0; i < value.length(); i++) {
-            char c = value.charAt(i);
-            if (!Character.isDigit(c)) {
-                status = false;
-                break;
-            }
-        }
-
-        return status;
-    }
-
-    /**
-     * Checks if system id is valid or not.
-     *
-     * @param value input value
-     * @return true if valid else false
-     */
-    private boolean isValidSystemId(String value) {
-        value = value.trim();
-        boolean status = true;
-        if (value.length() != 14) {
-            return false;
-        }
-        for (int i = 0; i < value.length(); i++) {
-            char c = value.charAt(i);
-            if (!Character.isDigit(c)) {
-                if (!((i == 4 || i == 9) && c == '.')) {
-                    status = false;
-                    break;
-                }
-            }
-        }
-
-        return status;
-    }
-
-    /**
-     * Disconnects the executor.
-     */
-    public void disconnectExecutor() {
-        if (connectExecutor != null) {
-            future.cancel(true);
-            connectExecutor.shutdownNow();
-            connectExecutor = null;
-        }
-    }
-
-    /**
-     * Connects to peer.
-     */
-    public void connectPeer() {
-        scheduleConnectionRetry(this.connectRetryTime);
-    }
-
-    /**
-     * Retry connection with exponential back-off mechanism.
-     *
-     * @param retryDelay retry delay
-     */
-    private void scheduleConnectionRetry(long retryDelay) {
-        if (connectExecutor == null) {
-            connectExecutor = Executors.newSingleThreadScheduledExecutor();
-        }
-        future = connectExecutor.schedule(new ConnectionRetry(), retryDelay, TimeUnit.MINUTES);
-    }
-
-    /**
-     * Adds device details.
-     *
-     * @param isisRouter ISIS router instance
-     */
-    public void addDeviceDetails(IsisRouter isisRouter) {
-        agent.addConnectedRouter(isisRouter);
-    }
-
-    /**
-     * Removes device details.
-     *
-     * @param isisRouter Isis router instance
-     */
-    public void removeDeviceDetails(IsisRouter isisRouter) {
-        agent.removeConnectedRouter(isisRouter);
-    }
-
-    /**
-     * Adds link details.
-     *
-     * @param isisLink ISIS link instance
-     */
-    public void addLinkDetails(IsisLink isisLink) {
-        agent.addLink(isisLink);
-    }
-
-    /**
-     * Removes link details.
-     *
-     * @param isisLink ISIS link instance
-     */
-    public void removeLinkDetails(IsisLink isisLink) {
-        agent.deleteLink(isisLink);
-    }
-
-    /**
-     * Returns the isisAgent instance.
-     *
-     * @return agent
-     */
-    public IsisAgent agent() {
-        return this.agent;
-    }
-
-    /**
-     * Implements ISIS connection and manages connection to peer with back-off mechanism in case of failure.
-     */
-    class ConnectionRetry implements Runnable {
-        @Override
-        public void run() {
-            log.debug("Connect to peer {}", IsisConstants.SHOST);
-            initConnection();
-            isisChannelHandler.sentConfigPacket(configPacket);
-            InetSocketAddress connectToSocket = new InetSocketAddress(IsisConstants.SHOST, isisPort.toInt());
-            try {
-                peerBootstrap.connect(connectToSocket).addListener(new ChannelFutureListener() {
-                    @Override
-                    public void operationComplete(ChannelFuture future) throws Exception {
-                        if (!future.isSuccess()) {
-                            connectRetryCounter++;
-                            log.error("Connection failed, ConnectRetryCounter {} remote host {}", connectRetryCounter,
-                                    IsisConstants.SHOST);
-                            /*
-                             * Reconnect to peer on failure is exponential till 4 mins, later on retry after every 4
-                             * mins.
-                             */
-                            if (connectRetryTime < RETRY_INTERVAL) {
-                                connectRetryTime = (connectRetryTime != 0) ? connectRetryTime * 2 : 1;
-                            }
-                            scheduleConnectionRetry(connectRetryTime);
-                        } else {
-                            //Send the config packet
-                            isisChannelHandler.sentConfigPacket(configPacket);
-                            connectRetryCounter++;
-                            log.info("Connected to remote host {}, Connect Counter {}", IsisConstants.SHOST,
-                                    connectRetryCounter);
-                            disconnectExecutor();
-
-                            return;
-                        }
-                    }
-                });
-            } catch (Exception e) {
-                log.info("Connect peer exception : " + e.toString());
-                disconnectExecutor();
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisController.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisController.java
deleted file mode 100644
index 1f17969..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisController.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.google.common.collect.Sets;
-import org.onosproject.isis.controller.IsisController;
-import org.onosproject.isis.controller.IsisProcess;
-import org.onosproject.isis.controller.topology.IsisAgent;
-import org.onosproject.isis.controller.topology.IsisLink;
-import org.onosproject.isis.controller.topology.IsisLinkListener;
-import org.onosproject.isis.controller.topology.IsisRouter;
-import org.onosproject.isis.controller.topology.IsisRouterListener;
-import org.onosproject.net.driver.DriverService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Represents ISIS controller implementation.
- */
-@Component(immediate = true, service = IsisController.class)
-public class DefaultIsisController implements IsisController {
-
-    private static final Logger log = LoggerFactory.getLogger(DefaultIsisController.class);
-    private final Controller controller = new Controller();
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DriverService driverService;
-    protected Set<IsisRouterListener> isisRouterListener = new HashSet<>();
-    protected Set<IsisLinkListener> isisLinkListener = Sets.newHashSet();
-    protected IsisAgent agent = new InternalDeviceConfig();
-
-    @Activate
-    public void activate() {
-        log.debug("ISISControllerImpl activate");
-        controller.setAgent(agent);
-    }
-
-    @Deactivate
-    public void deactivate() {
-        controller.isisDeactivate();
-        log.debug("ISISControllerImpl deActivate");
-    }
-
-    @Override
-    public void addRouterListener(IsisRouterListener listener) {
-        if (!isisRouterListener.contains(listener)) {
-            this.isisRouterListener.add(listener);
-        }
-    }
-
-    @Override
-    public void removeRouterListener(IsisRouterListener listener) {
-        this.isisRouterListener.remove(listener);
-    }
-
-    @Override
-    public void addLinkListener(IsisLinkListener listener) {
-        isisLinkListener.add(listener);
-    }
-
-    @Override
-    public void removeLinkListener(IsisLinkListener listener) {
-        isisLinkListener.remove(listener);
-    }
-
-    @Override
-    public Set<IsisRouterListener> listener() {
-        return isisRouterListener;
-    }
-
-    @Override
-    public Set<IsisLinkListener> linkListener() {
-        return isisLinkListener;
-    }
-
-    @Override
-    public List<IsisProcess> allConfiguredProcesses() {
-        List<IsisProcess> processes = controller.getAllConfiguredProcesses();
-        return processes;
-    }
-
-    @Override
-    public void updateConfig(JsonNode jsonNode) {
-        log.debug("updateConfig::IsisList::processes::{}", jsonNode);
-        try {
-            controller.updateConfig(jsonNode);
-        } catch (Exception e) {
-            log.debug("Error::updateConfig::{}", e.getMessage());
-        }
-    }
-
-    /**
-     * Notifier for internal ISIS device and link changes.
-     */
-    private class InternalDeviceConfig implements IsisAgent {
-        @Override
-        public boolean addConnectedRouter(IsisRouter isisRouter) {
-            for (IsisRouterListener l : listener()) {
-                l.routerAdded(isisRouter);
-            }
-            return true;
-        }
-
-        @Override
-        public void removeConnectedRouter(IsisRouter isisRouter) {
-            for (IsisRouterListener l : listener()) {
-                l.routerRemoved(isisRouter);
-            }
-        }
-
-        @Override
-        public void addLink(IsisLink isisLink) {
-            for (IsisLinkListener l : linkListener()) {
-                l.addLink(isisLink);
-            }
-        }
-
-        @Override
-        public void deleteLink(IsisLink isisLink) {
-            for (IsisLinkListener l : linkListener()) {
-                l.deleteLink(isisLink);
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisInterface.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisInterface.java
deleted file mode 100644
index 2c2aa1a..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisInterface.java
+++ /dev/null
@@ -1,1130 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import org.jboss.netty.channel.Channel;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.MacAddress;
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisInterfaceState;
-import org.onosproject.isis.controller.IsisLsdb;
-import org.onosproject.isis.controller.IsisMessage;
-import org.onosproject.isis.controller.IsisNeighbor;
-import org.onosproject.isis.controller.IsisNetworkType;
-import org.onosproject.isis.controller.IsisPduType;
-import org.onosproject.isis.controller.IsisRouterType;
-import org.onosproject.isis.controller.LspWrapper;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.pdu.Csnp;
-import org.onosproject.isis.io.isispacket.pdu.HelloPdu;
-import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu;
-import org.onosproject.isis.io.isispacket.pdu.LsPdu;
-import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu;
-import org.onosproject.isis.io.isispacket.pdu.Psnp;
-import org.onosproject.isis.io.isispacket.tlv.AdjacencyStateTlv;
-import org.onosproject.isis.io.isispacket.tlv.IsisTlv;
-import org.onosproject.isis.io.isispacket.tlv.LspEntriesTlv;
-import org.onosproject.isis.io.isispacket.tlv.LspEntry;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-import org.onosproject.isis.io.isispacket.tlv.TlvType;
-import org.onosproject.isis.io.util.IsisConstants;
-import org.onosproject.isis.io.util.IsisUtil;
-import org.onosproject.isis.io.util.LspGenerator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Representation of an ISIS interface.
- */
-public class DefaultIsisInterface implements IsisInterface {
-    private static final Logger log = LoggerFactory.getLogger(DefaultIsisInterface.class);
-    boolean flagValue = false;
-    private int interfaceIndex;
-    private Ip4Address interfaceIpAddress;
-    private byte[] networkMask;
-    private MacAddress interfaceMacAddress;
-    private String intermediateSystemName;
-    private String systemId;
-    private String l1LanId = IsisConstants.DEFAULTLANID;
-    private String l2LanId = IsisConstants.DEFAULTLANID;
-    private int idLength;
-    private int maxAreaAddresses;
-    private int reservedPacketCircuitType;
-    private IsisNetworkType networkType;
-    private String areaAddress;
-    private int areaLength;
-    private int holdingTime;
-    private int priority;
-    private String circuitId;
-    private int helloInterval;
-    private Map<MacAddress, IsisNeighbor> neighborList = new ConcurrentHashMap<>();
-    private IsisHelloPduSender isisHelloPduSender = null;
-    private ScheduledExecutorService exServiceHello = null;
-    private IsisInterfaceState interfaceState = IsisInterfaceState.DOWN;
-    private IsisLsdb isisLsdb = null;
-    private List<Ip4Address> allConfiguredInterfaceIps = null;
-    private Channel channel;
-    private boolean helloSenderStarted = false;
-
-    /**
-     * Returns ISIS LSDB instance.
-     *
-     * @return ISIS LSDB instance
-     */
-    public IsisLsdb isisLsdb() {
-        return isisLsdb;
-    }
-
-    /**
-     * Sets all configured interface IPs.
-     *
-     * @param allConfiguredInterfaces all configured interface IPs
-     */
-    public void setAllConfiguredInterfaceIps(List<Ip4Address> allConfiguredInterfaces) {
-        allConfiguredInterfaceIps = allConfiguredInterfaces;
-    }
-
-    /**
-     * Removes neighbor from the interface neighbor map.
-     *
-     * @param isisNeighbor ISIS neighbor instance
-     */
-    public void removeNeighbor(IsisNeighbor isisNeighbor) {
-        log.debug("Neighbor removed - {}", isisNeighbor.neighborMacAddress());
-        isisNeighbor.stopHoldingTimeCheck();
-        isisNeighbor.stopInactivityTimeCheck();
-        neighborList.remove(isisNeighbor.neighborMacAddress());
-    }
-
-    /**
-     * Removes all the neighbors.
-     */
-    public void removeNeighbors() {
-        Set<MacAddress> neighbors = neighbors();
-        for (MacAddress mac : neighbors) {
-            removeNeighbor(lookup(mac));
-            log.debug("Neighbor removed - {}", mac);
-        }
-        neighborList.clear();
-    }
-
-    /**
-     * Returns the ISIS neighbor instance if exists.
-     *
-     * @param isisNeighborMac mac address of the neighbor router
-     * @return ISIS neighbor instance if exists else null
-     */
-    public IsisNeighbor lookup(MacAddress isisNeighborMac) {
-        return neighborList.get(isisNeighborMac);
-    }
-
-    /**
-     * Returns the neighbors list.
-     *
-     * @return neighbors list
-     */
-    public Set<MacAddress> neighbors() {
-        return neighborList.keySet();
-    }
-
-    /**
-     * Returns channel instance.
-     *
-     * @return channel instance
-     */
-    public Channel channel() {
-        return channel;
-    }
-
-    /**
-     * Returns interface index.
-     *
-     * @return interface index
-     */
-    public int interfaceIndex() {
-        return interfaceIndex;
-    }
-
-    /**
-     * Set interface index.
-     *
-     * @param interfaceIndex interface index
-     */
-    public void setInterfaceIndex(int interfaceIndex) {
-        this.interfaceIndex = interfaceIndex;
-    }
-
-    /**
-     * Returns the interface IP address.
-     *
-     * @return interface IP address
-     */
-    public Ip4Address interfaceIpAddress() {
-        return interfaceIpAddress;
-    }
-
-    /**
-     * Sets the interface IP address.
-     *
-     * @param interfaceIpAddress interfaceIpAddress interface IP address
-     */
-    public void setInterfaceIpAddress(Ip4Address interfaceIpAddress) {
-        this.interfaceIpAddress = interfaceIpAddress;
-    }
-
-    /**
-     * Returns the network mask.
-     *
-     * @return network mask
-     */
-    public byte[] networkMask() {
-        return networkMask;
-    }
-
-    /**
-     * Sets the network mask.
-     *
-     * @param networkMask network mask
-     */
-    public void setNetworkMask(byte[] networkMask) {
-        this.networkMask = networkMask;
-    }
-
-    /**
-     * Returns the interface mac address.
-     *
-     * @return interface mac address
-     */
-    public MacAddress getInterfaceMacAddress() {
-        return interfaceMacAddress;
-    }
-
-    /**
-     * Sets the interface mac address.
-     *
-     * @param interfaceMacAddress interface mac address
-     */
-    public void setInterfaceMacAddress(MacAddress interfaceMacAddress) {
-        this.interfaceMacAddress = interfaceMacAddress;
-    }
-
-    /**
-     * Returns intermediate system name.
-     *
-     * @return intermediate system name
-     */
-    public String intermediateSystemName() {
-        return intermediateSystemName;
-    }
-
-    /**
-     * Sets intermediate system name.
-     *
-     * @param intermediateSystemName intermediate system name
-     */
-    public void setIntermediateSystemName(String intermediateSystemName) {
-        this.intermediateSystemName = intermediateSystemName;
-    }
-
-    /**
-     * Returns system ID.
-     *
-     * @return system ID
-     */
-    public String systemId() {
-        return systemId;
-    }
-
-    /**
-     * Sets system ID.
-     *
-     * @param systemId system ID
-     */
-    public void setSystemId(String systemId) {
-        this.systemId = systemId;
-    }
-
-    /**
-     * Returns LAN ID.
-     *
-     * @return LAN ID
-     */
-    public String l1LanId() {
-        return l1LanId;
-    }
-
-    /**
-     * Sets LAN ID.
-     *
-     * @param l1LanId LAN ID
-     */
-    public void setL1LanId(String l1LanId) {
-        this.l1LanId = l1LanId;
-    }
-
-    /**
-     * Returns LAN ID.
-     *
-     * @return LAN ID
-     */
-    public String l2LanId() {
-        return l2LanId;
-    }
-
-    /**
-     * Sets LAN ID.
-     *
-     * @param l2LanId LAN ID
-     */
-    public void setL2LanId(String l2LanId) {
-        this.l2LanId = l2LanId;
-    }
-
-    /**
-     * Returns ID length.
-     *
-     * @return ID length
-     */
-    public int getIdLength() {
-
-        return ((idLength == 0) ? 6 : idLength);
-    }
-
-    /**
-     * Sets ID length.
-     *
-     * @param idLength ID length
-     */
-    public void setIdLength(int idLength) {
-        this.idLength = idLength;
-    }
-
-    /**
-     * Returns max area addresses.
-     *
-     * @return max area addresses
-     */
-    public int getMaxAreaAddresses() {
-
-        return maxAreaAddresses;
-    }
-
-    /**
-     * Sets area max addresses.
-     *
-     * @param maxAreaAddresses max area addresses
-     */
-    public void setMaxAreaAddresses(int maxAreaAddresses) {
-        this.maxAreaAddresses = maxAreaAddresses;
-    }
-
-    /**
-     * Returns reserved packet circuit type.
-     *
-     * @return reserved packet circuit type
-     */
-    public int reservedPacketCircuitType() {
-        return reservedPacketCircuitType;
-    }
-
-    /**
-     * Sets reserved packet circuit type.
-     *
-     * @param reservedPacketCircuitType reserved packet circuit type
-     */
-    public void setReservedPacketCircuitType(int reservedPacketCircuitType) {
-        this.reservedPacketCircuitType = reservedPacketCircuitType;
-    }
-
-    /**
-     * Returns point to point.
-     *
-     * @return point to point
-     */
-    public IsisNetworkType networkType() {
-        return networkType;
-    }
-
-    /**
-     * Sets point to point or broadcast.
-     *
-     * @param networkType point to point or broadcast
-     */
-    public void setNetworkType(IsisNetworkType networkType) {
-        this.networkType = networkType;
-    }
-
-    /**
-     * Returns area address.
-     *
-     * @return area address
-     */
-    public String areaAddress() {
-        return areaAddress;
-    }
-
-    /**
-     * Sets area address.
-     *
-     * @param areaAddress area address
-     */
-    public void setAreaAddress(String areaAddress) {
-        this.areaAddress = areaAddress;
-    }
-
-    /**
-     * Returns area length.
-     *
-     * @return area length
-     */
-    public int getAreaLength() {
-        return areaLength;
-    }
-
-    /**
-     * Sets area length.
-     *
-     * @param areaLength area length
-     */
-    public void setAreaLength(int areaLength) {
-        this.areaLength = areaLength;
-    }
-
-    /**
-     * Returns holding time.
-     *
-     * @return holding time
-     */
-    public int holdingTime() {
-        return holdingTime;
-    }
-
-    /**
-     * Sets holding time.
-     *
-     * @param holdingTime holding time
-     */
-    public void setHoldingTime(int holdingTime) {
-        this.holdingTime = holdingTime;
-    }
-
-    /**
-     * Returns priority.
-     *
-     * @return priority
-     */
-    public int priority() {
-        return priority;
-    }
-
-    /**
-     * Sets priority.
-     *
-     * @param priority priority
-     */
-    public void setPriority(int priority) {
-        this.priority = priority;
-    }
-
-    /**
-     * Returns hello interval.
-     *
-     * @return hello interval
-     */
-    public int helloInterval() {
-        return helloInterval;
-    }
-
-    /**
-     * Sets hello interval.
-     *
-     * @param helloInterval hello interval
-     */
-    public void setHelloInterval(int helloInterval) {
-        this.helloInterval = helloInterval;
-    }
-
-    /**
-     * Returns the interface state.
-     *
-     * @return interface state
-     */
-    public IsisInterfaceState interfaceState() {
-        return interfaceState;
-    }
-
-    /**
-     * Sets the interface state.
-     *
-     * @param interfaceState the interface state
-     */
-    public void setInterfaceState(IsisInterfaceState interfaceState) {
-        this.interfaceState = interfaceState;
-    }
-
-    /**
-     * Returns the circuit ID.
-     *
-     * @return circuit ID
-     */
-    public String circuitId() {
-        return circuitId;
-    }
-
-    /**
-     * Sets the circuit ID.
-     *
-     * @param circuitId circuit ID
-     */
-    public void setCircuitId(String circuitId) {
-        this.circuitId = circuitId;
-    }
-
-    /**
-     * Processes received ISIS message.
-     * When an ISIS message received it is handed over to this method.
-     * Based on the type of the ISIS message received it will be handed over
-     * to corresponding message handler methods.
-     *
-     * @param isisMessage received ISIS message
-     * @param isisLsdb    ISIS LSDB instance
-     * @param channel     channel
-     */
-    public void processIsisMessage(IsisMessage isisMessage, IsisLsdb isisLsdb, Channel channel) {
-        log.debug("IsisInterfaceImpl::processIsisMessage...!!!");
-        this.channel = channel;
-
-        if (isisMessage.sourceMac().equals(interfaceMacAddress)) {
-            log.debug("Received our own message {}...!!!", isisMessage.isisPduType());
-            return;
-        }
-
-        if (isisMessage.isisPduType() == IsisPduType.P2PHELLOPDU && networkType.equals(IsisNetworkType.BROADCAST)) {
-            return;
-        } else if ((isisMessage.isisPduType() == IsisPduType.L1HELLOPDU ||
-                isisMessage.isisPduType() == IsisPduType.L2HELLOPDU)
-                && networkType.equals(IsisNetworkType.P2P)) {
-            return;
-        }
-
-        if (this.isisLsdb == null) {
-            this.isisLsdb = isisLsdb;
-        }
-
-        switch (isisMessage.isisPduType()) {
-            case L1HELLOPDU:
-            case L2HELLOPDU:
-                processL1L2HelloPduMessage(isisMessage, channel);
-                break;
-            case P2PHELLOPDU:
-                processP2pHelloPduMessage(isisMessage, channel);
-                break;
-            case L1LSPDU:
-            case L2LSPDU:
-                processLsPduMessage(isisMessage, channel);
-                break;
-            case L1CSNP:
-            case L2CSNP:
-                processCsnPduMessage(isisMessage, channel);
-                break;
-            case L1PSNP:
-            case L2PSNP:
-                processPsnPduMessage(isisMessage, channel);
-                break;
-            default:
-                log.debug("Unknown packet to process...!!!");
-                break;
-        }
-    }
-
-    /**
-     * Validates the received message.
-     *
-     * @param helloPdu ISIS message instance
-     * @return true if valid ISIS message else false
-     */
-    public boolean validateHelloMessage(HelloPdu helloPdu) {
-        boolean isValid = false;
-
-        if ((helloPdu.circuitType() == IsisRouterType.L1.value() &&
-                reservedPacketCircuitType == IsisRouterType.L2.value()) ||
-                (helloPdu.circuitType() == IsisRouterType.L2.value() &&
-                        reservedPacketCircuitType == IsisRouterType.L1.value())) {
-            return false;
-        }
-
-        //Local InterfaceAddress TLV and compare with the IP Interface address and check if they are in same subnet
-        List<Ip4Address> interfaceIpAddresses = helloPdu.interfaceIpAddresses();
-        Ip4Address neighborIp = (helloPdu.interfaceIpAddresses() != null) ?
-                interfaceIpAddresses.get(0) : Ip4Address.valueOf("0.0.0.0");
-        if (!IsisUtil.sameNetwork(interfaceIpAddress, neighborIp, networkMask)) {
-            return false;
-        }
-
-        //Verify if it's in same area, Areas which the router belongs to
-        if (helloPdu.circuitType() == IsisRouterType.L1.value()) {
-            List<String> areas = helloPdu.areaAddress();
-            for (String area : areas) {
-                if (areaAddress.equals(area)) {
-                    isValid = true;
-                }
-            }
-        } else if (helloPdu.circuitType() == IsisRouterType.L2.value() ||
-                helloPdu.circuitType() == IsisRouterType.L1L2.value()) {
-            isValid = true;
-        }
-
-        return isValid;
-    }
-
-    /**
-     * Checks neighbor presents in the list or not.
-     *
-     * @param neighborMac neighbor MAc address
-     * @return true if neighbor exist else false
-     */
-
-    private boolean isNeighborInList(MacAddress neighborMac) {
-        return neighborList.containsKey(neighborMac);
-    }
-
-    /**
-     * Adds neighbor in the list.
-     *
-     * @param neighbor neighbor MAC address
-     * @return true if neighbor exist else false
-     */
-    private void addNeighbouringRouter(IsisNeighbor neighbor) {
-        neighborList.put(neighbor.neighborMacAddress(), neighbor);
-    }
-
-    /**
-     * Returns neighbor presents in the list.
-     *
-     * @param neighborMac neighbor MAc address
-     * @return neighbor instance
-     */
-    private IsisNeighbor neighbouringRouter(MacAddress neighborMac) {
-        return neighborList.get(neighborMac);
-    }
-
-    /**
-     * Processes the L1 or L2 hello message.
-     *
-     * @param isisMessage hello message instance
-     * @param channel     channel instance
-     */
-    public void processL1L2HelloPduMessage(IsisMessage isisMessage, Channel channel) {
-        log.debug("Enters processL1L2HelloPduMessage ...!!!");
-        log.debug("IsisInterfaceImpl::processHelloMessage...!!!");
-
-        L1L2HelloPdu helloPacket = (L1L2HelloPdu) isisMessage;
-        log.debug("IsisInterfaceImpl::processHelloMessage::Interface Type {} ISISInterfaceState {} ",
-                  networkType, interfaceState);
-
-        //If validate the area, network and max address
-        if (!validateHelloMessage(helloPacket)) {
-            return;
-        }
-
-        //Get the neighbor
-        IsisNeighbor neighbor = neighbouringRouter(isisMessage.sourceMac());
-        //Neighbor is not in list
-        if (!isNeighborInList(isisMessage.sourceMac())) {
-            neighbor = new DefaultIsisNeighbor(helloPacket, this);
-            addNeighbouringRouter(neighbor);
-        }
-
-        neighbor.setHoldingTime(helloPacket.holdingTime());
-        neighbor.stopInactivityTimeCheck();
-        neighbor.startInactivityTimeCheck();
-
-        //Assign the DIS
-        String lanId = helloPacket.lanId();
-
-        if (IsisPduType.L1HELLOPDU == helloPacket.isisPduType()) {
-            buildUpdateAndSendSelfGeneratedLspIfDisChange(l1LanId, lanId, channel,
-                                                          IsisRouterType.get(helloPacket.circuitType()));
-            l1LanId = lanId;
-            neighbor.setL1LanId(lanId);
-            //if a change in lanid
-        } else if (IsisPduType.L2HELLOPDU == helloPacket.isisPduType()) {
-            buildUpdateAndSendSelfGeneratedLspIfDisChange(l2LanId, lanId, channel,
-                                                          IsisRouterType.get(helloPacket.circuitType()));
-            l2LanId = lanId;
-            neighbor.setL2LanId(lanId);
-        }
-
-        //Check in neighbors list our MAC address present
-        List<MacAddress> neighbors = helloPacket.neighborList();
-        if (neighbors != null) {
-            for (MacAddress macAddress : neighbors) {
-                if (interfaceMacAddress.equals(macAddress)) {
-                    neighbor.setNeighborState(IsisInterfaceState.UP);
-                    //Build Self LSP add in LSDB and sent it.
-                    buildStoreAndSendSelfGeneratedLspIfNotExistInDb(channel,
-                                                                    IsisRouterType.get(helloPacket.circuitType()));
-                    break;
-                }
-            }
-        }
-    }
-
-    /**
-     * Builds and store and send self generated LSP.
-     *
-     * @param channel netty channel instance
-     */
-    private void buildStoreAndSendSelfGeneratedLspIfNotExistInDb(Channel channel, IsisRouterType neighborRouterType) {
-        this.channel = channel;
-        //Check our LSP is present in DB. else create a self LSP and store it and sent it
-        String lspKey = isisLsdb.lspKey(systemId);
-        LspWrapper wrapper = null;
-        if (reservedPacketCircuitType == IsisRouterType.L1.value()) {
-            wrapper = isisLsdb.findLsp(IsisPduType.L1LSPDU, lspKey);
-            if (wrapper == null) {
-                LsPdu lsp = new LspGenerator().getLsp(this, lspKey, IsisPduType.L1LSPDU, allConfiguredInterfaceIps);
-                isisLsdb.addLsp(lsp, true, this);
-                sendLsp(lsp, channel);
-            }
-        } else if (reservedPacketCircuitType == IsisRouterType.L2.value()) {
-            wrapper = isisLsdb.findLsp(IsisPduType.L2LSPDU, lspKey);
-            if (wrapper == null) {
-                LsPdu lsp = new LspGenerator().getLsp(this, lspKey, IsisPduType.L2LSPDU, allConfiguredInterfaceIps);
-                isisLsdb.addLsp(lsp, true, this);
-                sendLsp(lsp, channel);
-            }
-        } else if (reservedPacketCircuitType == IsisRouterType.L1L2.value()) {
-            if ((neighborRouterType == IsisRouterType.L1 || neighborRouterType == IsisRouterType.L1L2)) {
-
-                wrapper = isisLsdb.findLsp(IsisPduType.L1LSPDU, lspKey);
-                if (wrapper == null) {
-                    LsPdu lsp = new LspGenerator().getLsp(this, lspKey, IsisPduType.L1LSPDU,
-                                                          allConfiguredInterfaceIps);
-                    isisLsdb.addLsp(lsp, true, this);
-                    sendLsp(lsp, channel);
-                }
-            }
-
-            if ((neighborRouterType == IsisRouterType.L2 || neighborRouterType == IsisRouterType.L1L2)) {
-                wrapper = isisLsdb.findLsp(IsisPduType.L2LSPDU, lspKey);
-                if (wrapper == null) {
-                    LsPdu lsp = new LspGenerator().getLsp(this, lspKey, IsisPduType.L2LSPDU,
-                                                          allConfiguredInterfaceIps);
-                    isisLsdb.addLsp(lsp, true, this);
-                    sendLsp(lsp, channel);
-                }
-            }
-        }
-    }
-
-    /**
-     * Builds and update in DB and send self generated LSP.
-     *
-     * @param previousLanId previous DIS ID
-     * @param latestLanId   latest DIS ID
-     * @param channel       netty channel instance
-     */
-    private void buildUpdateAndSendSelfGeneratedLspIfDisChange(String previousLanId,
-                                                               String latestLanId, Channel channel,
-                                                               IsisRouterType neighborRouterType) {
-        this.channel = channel;
-        //If DIS change then build and sent LSP
-        if (!previousLanId.equals(latestLanId)) {
-            //Create a self LSP and Update it in DB and sent it
-            String lspKey = isisLsdb.lspKey(systemId);
-            if (reservedPacketCircuitType == IsisRouterType.L1.value()) {
-                LsPdu lsp = new LspGenerator().getLsp(this, lspKey, IsisPduType.L1LSPDU, allConfiguredInterfaceIps);
-                isisLsdb.addLsp(lsp, true, this);
-                sendLsp(lsp, channel);
-            } else if (reservedPacketCircuitType == IsisRouterType.L2.value() &&
-                    (neighborRouterType == IsisRouterType.L2 || neighborRouterType == IsisRouterType.L1L2)) {
-                LsPdu lsp = new LspGenerator().getLsp(this, lspKey, IsisPduType.L2LSPDU, allConfiguredInterfaceIps);
-                isisLsdb.addLsp(lsp, true, this);
-                sendLsp(lsp, channel);
-            } else if (reservedPacketCircuitType == IsisRouterType.L1L2.value()) {
-                //L1 LSPDU
-                if (neighborRouterType == IsisRouterType.L1 || neighborRouterType == IsisRouterType.L1L2) {
-                    LsPdu lsp = new LspGenerator().getLsp(this, lspKey, IsisPduType.L1LSPDU, allConfiguredInterfaceIps);
-                    isisLsdb.addLsp(lsp, true, this);
-                    sendLsp(lsp, channel);
-                }
-                //L1 LSPDU
-                if (neighborRouterType == IsisRouterType.L2 || neighborRouterType == IsisRouterType.L1L2) {
-                    LsPdu lsp = new LspGenerator().getLsp(this, lspKey, IsisPduType.L2LSPDU, allConfiguredInterfaceIps);
-                    isisLsdb.addLsp(lsp, true, this);
-                    sendLsp(lsp, channel);
-                }
-            }
-        }
-
-    }
-
-    /**
-     * Sends LS PDU message to channel.
-     *
-     * @param lsp     LS PDU message instance
-     * @param channel channel instance
-     */
-    private void sendLsp(LsPdu lsp, Channel channel) {
-        byte[] lspBytes = lsp.asBytes();
-        lspBytes = IsisUtil.addLengthAndMarkItInReserved(lspBytes, IsisConstants.LENGTHPOSITION,
-                                                         IsisConstants.LENGTHPOSITION + 1,
-                                                         IsisConstants.RESERVEDPOSITION);
-        lspBytes = IsisUtil.addChecksum(lspBytes, IsisConstants.CHECKSUMPOSITION,
-                                        IsisConstants.CHECKSUMPOSITION + 1);
-        //write to the channel
-        if (channel != null && channel.isConnected() && channel.isOpen()) {
-            channel.write(IsisUtil.framePacket(lspBytes, interfaceIndex));
-        }
-    }
-
-    /**
-     * Processes P2P hello message.
-     *
-     * @param isisMessage hello message instance
-     * @param channel     channel instance
-     */
-    public void processP2pHelloPduMessage(IsisMessage isisMessage, Channel channel) {
-        log.debug("Enters processP2pHelloPduMessage ...!!!");
-        P2PHelloPdu helloPacket = (P2PHelloPdu) isisMessage;
-
-        log.debug("IsisInterfaceImpl::processHelloMessage::Interface Type {} OSPFInterfaceState {} ",
-                  networkType, interfaceState);
-
-        //validate the area, network and max address
-        if (!validateHelloMessage(helloPacket)) {
-            return;
-        }
-
-        IsisNeighbor neighbor = null;
-        List<IsisTlv> tlvs = ((P2PHelloPdu) isisMessage).tlvs();
-        AdjacencyStateTlv stateTlv = null;
-        for (IsisTlv tlv : tlvs) {
-            if (tlv instanceof AdjacencyStateTlv) {
-                stateTlv = (AdjacencyStateTlv) tlv;
-                break;
-            }
-        }
-
-        if (stateTlv == null) {
-            neighbor = neighbouringRouter(isisMessage.sourceMac());
-            if (neighbor == null) {
-                neighbor = new DefaultIsisNeighbor(helloPacket, this);
-                addNeighbouringRouter(neighbor);
-            }
-            neighbor.setNeighborState(IsisInterfaceState.DOWN);
-            buildStoreAndSendSelfGeneratedLspIfNotExistInDb(channel, IsisRouterType.get(helloPacket.circuitType()));
-        } else if (stateTlv.adjacencyType() == IsisInterfaceState.DOWN.value()) {
-            neighbor = neighbouringRouter(isisMessage.sourceMac());
-            if (neighbor == null) {
-                neighbor = new DefaultIsisNeighbor(helloPacket, this);
-                addNeighbouringRouter(neighbor);
-            }
-            neighbor.setLocalExtendedCircuitId(stateTlv.localCircuitId());
-        } else if (stateTlv.adjacencyType() == IsisInterfaceState.INITIAL.value()) {
-            //Neighbor already present in the list
-            neighbor = neighbouringRouter(isisMessage.sourceMac());
-            if (neighbor == null) {
-                neighbor = new DefaultIsisNeighbor(helloPacket, this);
-                addNeighbouringRouter(neighbor);
-            }
-            neighbor.setNeighborState(IsisInterfaceState.INITIAL);
-            neighbor.setLocalExtendedCircuitId(stateTlv.localCircuitId());
-            //interfaceState = IsisInterfaceState.UP;
-        } else if (stateTlv.adjacencyType() == IsisInterfaceState.UP.value()) {
-            //Build Self LSP add in LSDB and sent it.
-            neighbor = neighbouringRouter(isisMessage.sourceMac());
-            neighbor.setNeighborState(IsisInterfaceState.UP);
-            neighbor.setLocalExtendedCircuitId(stateTlv.localCircuitId());
-            buildStoreAndSendSelfGeneratedLspIfNotExistInDb(channel, IsisRouterType.get(helloPacket.circuitType()));
-        }
-        if (neighbor == null) {
-            log.debug("neighbor object is null!!!!");
-            return;
-        }
-
-        neighbor.setHoldingTime(helloPacket.holdingTime());
-        neighbor.stopInactivityTimeCheck();
-        neighbor.startInactivityTimeCheck();
-    }
-
-    /**
-     * Processes LS PDU message.
-     *
-     * @param isisMessage LS pdu message instance
-     * @param channel     channel instance
-     */
-    public void processLsPduMessage(IsisMessage isisMessage, Channel channel) {
-        log.debug("Enters processLsPduMessage ...!!!");
-        IsisNeighbor neighbor = neighbouringRouter(isisMessage.sourceMac());
-        if (networkType == IsisNetworkType.BROADCAST && neighbor == null) {
-            return;
-        }
-
-        LsPdu lsPdu = (LsPdu) isisMessage;
-        LspWrapper wrapper = isisLsdb.findLsp(lsPdu.isisPduType(), lsPdu.lspId());
-        if (wrapper == null || isisLsdb.isNewerOrSameLsp(lsPdu, wrapper.lsPdu()).equalsIgnoreCase("latest")) {
-            if (wrapper != null) {               // verify if the LSA - is your own LSA - get system ID and compare LSP
-                String lspKey = isisLsdb.lspKey(systemId);
-                if (lsPdu.lspId().equals(lspKey)) {
-                    lsPdu.setSequenceNumber(lsPdu.sequenceNumber() + 1);
-                    if (lsPdu.pduType() == IsisPduType.L1LSPDU.value()) {
-                        // setting the ls sequence number
-                        isisLsdb.setL1LspSeqNo(lsPdu.sequenceNumber());
-                    } else if (lsPdu.pduType() == IsisPduType.L2LSPDU.value()) {
-                        // setting the ls sequence number
-                        isisLsdb.setL2LspSeqNo(lsPdu.sequenceNumber());
-                    }
-                    isisLsdb.addLsp(lsPdu, true, this);
-                    sendLsp(lsPdu, channel);
-                } else {
-                    isisLsdb.addLsp(lsPdu, false, this);
-                }
-
-
-            } else {
-                //not exist in the database or latest, then add it in database
-                isisLsdb.addLsp(lsPdu, false, this);
-            }
-        }
-
-        //If network type is P2P, acknowledge with a PSNP
-        if (networkType() == IsisNetworkType.P2P) {
-            IsisPduType psnpType = null;
-            if (IsisPduType.get(lsPdu.pduType()) == IsisPduType.L1LSPDU) {
-                psnpType = IsisPduType.L1PSNP;
-            } else if (IsisPduType.get(lsPdu.pduType()) == IsisPduType.L2LSPDU) {
-                psnpType = IsisPduType.L2PSNP;
-            }
-            IsisHeader isisHeader = new LspGenerator().getHeader(psnpType);
-            Psnp psnp = new Psnp(isisHeader);
-            psnp.setSourceId(lspKeyP2P(this.systemId));
-            TlvHeader tlvHeader = new TlvHeader();
-            tlvHeader.setTlvType(TlvType.LSPENTRY.value());
-            tlvHeader.setTlvLength(0);
-            LspEntriesTlv lspEntriesTlv = new LspEntriesTlv(tlvHeader);
-            LspEntry lspEntry = new LspEntry();
-            lspEntry.setLspChecksum(lsPdu.checkSum());
-            lspEntry.setLspId(lsPdu.lspId());
-            lspEntry.setLspSequenceNumber(lsPdu.sequenceNumber());
-            lspEntry.setRemainingTime(lsPdu.remainingLifeTime());
-            lspEntriesTlv.addLspEntry(lspEntry);
-            psnp.addTlv(lspEntriesTlv);
-
-            //write it to channel buffer.
-            byte[] psnpBytes = psnp.asBytes();
-            psnpBytes = IsisUtil.addLengthAndMarkItInReserved(psnpBytes, IsisConstants.LENGTHPOSITION,
-                                                              IsisConstants.LENGTHPOSITION + 1,
-                                                              IsisConstants.RESERVEDPOSITION);
-            flagValue = false;
-            //write to the channel
-            if (channel != null && channel.isConnected() && channel.isOpen()) {
-                channel.write(IsisUtil.framePacket(psnpBytes, interfaceIndex));
-            }
-        }
-    }
-
-    /**
-     * Processes PSN PDU message.
-     * Checks for self originated LSP entries in PSNP message and sends the missing LSP.
-     *
-     * @param isisMessage PSN PDU message instance
-     * @param channel     channel instance
-     */
-    public void processPsnPduMessage(IsisMessage isisMessage, Channel channel) {
-        log.debug("Enters processPsnPduMessage ...!!!");
-        //If adjacency not formed don't process.
-        IsisNeighbor neighbor = neighbouringRouter(isisMessage.sourceMac());
-        if (networkType == IsisNetworkType.BROADCAST && neighbor == null) {
-            return;
-        }
-
-        Psnp psnPacket = (Psnp) isisMessage;
-        List<IsisTlv> isisTlvs = psnPacket.getAllTlv();
-        Iterator iterator = isisTlvs.iterator();
-        while (iterator.hasNext()) {
-            IsisTlv isisTlv = (IsisTlv) iterator.next();
-            if (isisTlv instanceof LspEntriesTlv) {
-                LspEntriesTlv lspEntriesTlv = (LspEntriesTlv) isisTlv;
-                List<LspEntry> lspEntryList = lspEntriesTlv.lspEntry();
-                Iterator lspEntryListIterator = lspEntryList.iterator();
-                while (lspEntryListIterator.hasNext()) {
-                    LspEntry lspEntry = (LspEntry) lspEntryListIterator.next();
-                    String lspKey = lspEntry.lspId();
-                    LspWrapper lspWrapper = isisLsdb.findLsp(psnPacket.isisPduType(), lspKey);
-                    if (lspWrapper != null) {
-                        if (lspWrapper.isSelfOriginated()) {
-                            //Sent the LSP
-                            sendLsp((LsPdu) lspWrapper.lsPdu(), channel);
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Processes CSN PDU message.
-     *
-     * @param isisMessage CSN PDU message instance
-     * @param channel     channel instance
-     */
-    public void processCsnPduMessage(IsisMessage isisMessage, Channel channel) {
-        log.debug("Enters processCsnPduMessage ...!!!");
-        IsisNeighbor neighbor = neighbouringRouter(isisMessage.sourceMac());
-        if (networkType == IsisNetworkType.BROADCAST && neighbor == null) {
-            return;
-        }
-
-        Csnp csnPacket = (Csnp) isisMessage;
-        IsisPduType psnPduType = (IsisPduType.L2CSNP.equals(csnPacket.isisPduType())) ?
-                IsisPduType.L2PSNP : IsisPduType.L1PSNP;
-        IsisPduType lsPduType = (IsisPduType.L2CSNP.equals(csnPacket.isisPduType())) ?
-                IsisPduType.L2LSPDU : IsisPduType.L1LSPDU;
-
-        List<LspEntry> lspEntryRequestList = new ArrayList<>();
-        boolean selfOriginatedFound = false;
-        List<IsisTlv> isisTlvs = csnPacket.getAllTlv();
-        Iterator iterator = isisTlvs.iterator();
-        while (iterator.hasNext()) {
-            IsisTlv isisTlv = (IsisTlv) iterator.next();
-            if (isisTlv instanceof LspEntriesTlv) {
-                LspEntriesTlv lspEntriesTlv = (LspEntriesTlv) isisTlv;
-                List<LspEntry> lspEntryList = lspEntriesTlv.lspEntry();
-                Iterator lspEntryListIterator = lspEntryList.iterator();
-                while (lspEntryListIterator.hasNext()) {
-                    LspEntry lspEntry = (LspEntry) lspEntryListIterator.next();
-                    String lspKey = lspEntry.lspId();
-                    LspWrapper lspWrapper = isisLsdb.findLsp(lsPduType, lspKey);
-                    if (lspWrapper != null) {
-                        LsPdu lsPdu = (LsPdu) lspWrapper.lsPdu();
-                        if (lspWrapper.isSelfOriginated()) {
-                            selfOriginatedFound = true;
-                            if (lspEntry.lspSequenceNumber() < lsPdu.sequenceNumber()) {
-                                sendLsp(lsPdu, channel);
-                            }
-                        } else {
-                            if (lsPdu.sequenceNumber() < lspEntry.lspSequenceNumber()) {
-                                lspEntryRequestList.add(lspEntry);
-                                flagValue = true;
-                            }
-                        }
-                    } else {
-                        lspEntryRequestList.add(lspEntry);
-                        flagValue = true;
-                    }
-                }
-            }
-        }
-        if (flagValue) {
-            sendPsnPduMessage(lspEntryRequestList, psnPduType, channel);
-            lspEntryRequestList.clear();
-        }
-
-        if (!selfOriginatedFound) {
-            String lspKey = isisLsdb.lspKey(systemId);
-            LspWrapper wrapper = isisLsdb.findLsp(lsPduType, lspKey);
-            if (wrapper != null) {
-                sendLsp((LsPdu) wrapper.lsPdu(), channel);
-            }
-        }
-    }
-
-    /**
-     * Sends the partial sequence number PDU.
-     *
-     * @param lspEntryRequestList list of lsp entry request
-     * @param isisPduType         intermediate system PDU type
-     * @param channel             netty channel instance
-     */
-    private void sendPsnPduMessage(List<LspEntry> lspEntryRequestList, IsisPduType isisPduType, Channel channel) {
-        IsisHeader isisHeader = new LspGenerator().getHeader(isisPduType);
-        Psnp psnp = new Psnp(isisHeader);
-        psnp.setSourceId(lspKeyP2P(this.systemId));
-        TlvHeader tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(TlvType.LSPENTRY.value());
-        tlvHeader.setTlvLength(0);
-        LspEntriesTlv lspEntriesTlv = new LspEntriesTlv(tlvHeader);
-        for (LspEntry lspEntry : lspEntryRequestList) {
-            lspEntry.setLspChecksum(0);
-            lspEntry.setLspSequenceNumber(0);
-            lspEntry.setRemainingTime(0);
-            lspEntriesTlv.addLspEntry(lspEntry);
-        }
-        psnp.addTlv(lspEntriesTlv);
-        //write it to channel buffer.
-        byte[] psnpBytes = psnp.asBytes();
-        psnpBytes = IsisUtil.addLengthAndMarkItInReserved(psnpBytes, IsisConstants.LENGTHPOSITION,
-                                                          IsisConstants.LENGTHPOSITION + 1,
-                                                          IsisConstants.RESERVEDPOSITION);
-        flagValue = false;
-        //write to the channel
-        if (channel != null && channel.isConnected() && channel.isOpen()) {
-            channel.write(IsisUtil.framePacket(psnpBytes, interfaceIndex));
-        }
-    }
-
-    /**
-     * Gets the LSP key.
-     *
-     * @param systemId system ID
-     * @return key
-     */
-    public String lspKeyP2P(String systemId) {
-        StringBuilder lspKey = new StringBuilder();
-        lspKey.append(systemId);
-        lspKey.append(".00");
-        return lspKey.toString();
-    }
-
-    /**
-     * Starts the hello timer which sends hello packet every configured seconds.
-     *
-     * @param channel netty channel instance
-     */
-    public void startHelloSender(Channel channel) {
-        log.debug("IsisInterfaceImpl::startHelloSender");
-        if (!helloSenderStarted) {
-            isisHelloPduSender = new IsisHelloPduSender(channel, this);
-            exServiceHello = Executors.newSingleThreadScheduledExecutor();
-            final ScheduledFuture<?> helloHandle =
-                    exServiceHello.scheduleAtFixedRate(isisHelloPduSender, 0,
-                                                       helloInterval, TimeUnit.SECONDS);
-            helloSenderStarted = true;
-        }
-    }
-
-    /**
-     * Stops the hello timer which sends hello packet every configured seconds.
-     */
-    public void stopHelloSender() {
-        log.debug("IsisInterfaceImpl::stopHelloSender");
-        exServiceHello.shutdown();
-        helloSenderStarted = false;
-    }
-}
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisNeighbor.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisNeighbor.java
deleted file mode 100644
index 4b5e938..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisNeighbor.java
+++ /dev/null
@@ -1,399 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.MacAddress;
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisInterfaceState;
-import org.onosproject.isis.controller.IsisNeighbor;
-import org.onosproject.isis.controller.IsisPduType;
-import org.onosproject.isis.controller.IsisRouterType;
-import org.onosproject.isis.io.isispacket.pdu.HelloPdu;
-import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu;
-import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu;
-import org.onosproject.isis.io.util.IsisConstants;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Representation of an ISIS neighbor.
- * The first thing an ISIS router must do is find its neighbors and form adjacency.
- * Each neighbor that the router finds will be represented by this class.
- */
-public class DefaultIsisNeighbor implements IsisNeighbor {
-    private static final Logger log = LoggerFactory.getLogger(DefaultIsisNeighbor.class);
-    private String neighborAreaId;
-    private String neighborSystemId;
-    private Ip4Address interfaceIp;
-    private MacAddress neighborMacAddress;
-    private volatile int holdingTime;
-    private int neighborDownInterval;
-    private IsisRouterType routerType;
-    private String l1LanId;
-    private String l2LanId;
-    private byte localCircuitId;
-    private int localExtendedCircuitId;
-    private IsisInterfaceState neighborState = IsisInterfaceState.INITIAL;
-    private InternalInactivityTimeCheck inActivityTimeCheckTask;
-    private ScheduledExecutorService exServiceInActivity;
-    private InternalHoldingTimeCheck holdingTimeCheckTask;
-    private ScheduledExecutorService exServiceHoldingTimeCheck;
-    private boolean inActivityTimerScheduled = false;
-    private IsisInterface isisInterface;
-
-    /**
-     * Creates an instance of ISIS neighbor.
-     *
-     * @param helloMessage  hello message instance
-     * @param isisInterface ISIS interface instance
-     */
-    public DefaultIsisNeighbor(HelloPdu helloMessage, IsisInterface isisInterface) {
-        this.neighborMacAddress = helloMessage.sourceMac();
-        List<String> areaAddresses = helloMessage.areaAddress();
-        this.neighborAreaId = (areaAddresses != null) ? areaAddresses.get(0) : "";
-        this.neighborSystemId = helloMessage.sourceId();
-        List<Ip4Address> interfaceIpAddresses = helloMessage.interfaceIpAddresses();
-        this.interfaceIp = (helloMessage.interfaceIpAddresses() != null) ?
-                interfaceIpAddresses.get(0) : IsisConstants.DEFAULTIP;
-        this.holdingTime = helloMessage.holdingTime();
-        neighborDownInterval = holdingTime;
-        this.routerType = IsisRouterType.get(helloMessage.circuitType());
-        if (helloMessage instanceof L1L2HelloPdu) {
-            if (IsisPduType.L1HELLOPDU == helloMessage.isisPduType()) {
-                l1LanId = ((L1L2HelloPdu) helloMessage).lanId();
-            } else if (IsisPduType.L2HELLOPDU == helloMessage.isisPduType()) {
-                l2LanId = ((L1L2HelloPdu) helloMessage).lanId();
-            }
-        } else if (helloMessage instanceof P2PHelloPdu) {
-            this.localCircuitId = ((P2PHelloPdu) helloMessage).localCircuitId();
-        }
-        this.isisInterface = isisInterface;
-        startHoldingTimeCheck();
-        log.debug("Neighbor added - {}", neighborMacAddress);
-    }
-
-    /**
-     * Returns local extended circuit ID.
-     *
-     * @return local extended circuit ID
-     */
-    public int localExtendedCircuitId() {
-        return localExtendedCircuitId;
-    }
-
-    /**
-     * Sets local extended circuit ID.
-     *
-     * @param localExtendedCircuitId neighbor extended circuit ID
-     */
-    public void setLocalExtendedCircuitId(int localExtendedCircuitId) {
-        this.localExtendedCircuitId = localExtendedCircuitId;
-    }
-
-    /**
-     * Returns neighbor area ID.
-     *
-     * @return neighbor area ID
-     */
-    public String neighborAreaId() {
-        return neighborAreaId;
-    }
-
-    /**
-     * Sets neighbor area ID.
-     *
-     * @param neighborAreaId neighbor area ID
-     */
-    public void setNeighborAreaId(String neighborAreaId) {
-        this.neighborAreaId = neighborAreaId;
-    }
-
-    /**
-     * Returns neighbor system ID.
-     *
-     * @return neighbor system ID
-     */
-    public String neighborSystemId() {
-        return neighborSystemId;
-    }
-
-    /**
-     * Sets neighbor system ID.
-     *
-     * @param neighborSystemId neighbor system ID
-     */
-    public void setNeighborSystemId(String neighborSystemId) {
-        this.neighborSystemId = neighborSystemId;
-    }
-
-    /**
-     * Returns interface IP.
-     *
-     * @return interface IP
-     */
-    public Ip4Address interfaceIp() {
-        return interfaceIp;
-    }
-
-    /**
-     * Sets interface IP.
-     *
-     * @param interfaceIp IP
-     */
-    public void setInterfaceIp(Ip4Address interfaceIp) {
-        this.interfaceIp = interfaceIp;
-    }
-
-    /**
-     * Returns neighbor mac address.
-     *
-     * @return neighborMacAddress neighbor mac address
-     */
-    public MacAddress neighborMacAddress() {
-        return neighborMacAddress;
-    }
-
-    /**
-     * Sets neighbor mac address.
-     *
-     * @param neighborMacAddress mac address
-     */
-    public void setNeighborMacAddress(MacAddress neighborMacAddress) {
-        this.neighborMacAddress = neighborMacAddress;
-    }
-
-    /**
-     * Returns holding time.
-     *
-     * @return holding time
-     */
-    public int holdingTime() {
-        return holdingTime;
-    }
-
-    /**
-     * Sets holding time.
-     *
-     * @param holdingTime holding time
-     */
-    public void setHoldingTime(int holdingTime) {
-        this.holdingTime = holdingTime;
-    }
-
-    /**
-     * Returns router type.
-     *
-     * @return router type
-     */
-    public IsisRouterType routerType() {
-        return routerType;
-    }
-
-    /**
-     * Sets router type.
-     *
-     * @param routerType router type
-     */
-    public void setRouterType(IsisRouterType routerType) {
-        this.routerType = routerType;
-    }
-
-    /**
-     * Returns L1 lan ID.
-     *
-     * @return L1 lan ID
-     */
-    public String l1LanId() {
-        return l1LanId;
-    }
-
-    /**
-     * Sets L1 lan ID.
-     *
-     * @param l1LanId L1 lan ID
-     */
-    public void setL1LanId(String l1LanId) {
-        this.l1LanId = l1LanId;
-    }
-
-    /**
-     * Returns L2 lan ID.
-     *
-     * @return L2 lan ID
-     */
-    public String l2LanId() {
-        return l2LanId;
-    }
-
-    /**
-     * Sets L2 lan ID.
-     *
-     * @param l2LanId L2 lan ID
-     */
-    public void setL2LanId(String l2LanId) {
-        this.l2LanId = l2LanId;
-    }
-
-    /**
-     * Gets the neighbor interface state.
-     *
-     * @return neighbor interface state
-     */
-    public IsisInterfaceState interfaceState() {
-        return neighborState;
-    }
-
-    /**
-     * Sets the neighbor interface state.
-     *
-     * @param neighborState the neighbor interface state
-     */
-    public void setNeighborState(IsisInterfaceState neighborState) {
-        this.neighborState = neighborState;
-    }
-
-    /**
-     * Returns local circuit ID.
-     *
-     * @return local circuit ID
-     */
-    public byte localCircuitId() {
-        return localCircuitId;
-    }
-
-    /**
-     * Sets local circuit ID.
-     *
-     * @param localCircuitId local circuit ID
-     */
-    public void setLocalCircuitId(byte localCircuitId) {
-        this.localCircuitId = localCircuitId;
-    }
-
-    /**
-     * Returns neighbor state.
-     *
-     * @return neighbor state
-     */
-    public IsisInterfaceState neighborState() {
-        return neighborState;
-    }
-
-    /**
-     * Starts the holding time check timer.
-     */
-    public void startHoldingTimeCheck() {
-        log.debug("IsisNeighbor::startHoldingTimeCheck");
-        holdingTimeCheckTask = new InternalHoldingTimeCheck();
-        exServiceHoldingTimeCheck = Executors.newSingleThreadScheduledExecutor();
-        exServiceHoldingTimeCheck.scheduleAtFixedRate(holdingTimeCheckTask, 1,
-                                                      1, TimeUnit.SECONDS);
-    }
-
-    /**
-     * Stops the holding time check timer.
-     */
-    public void stopHoldingTimeCheck() {
-        log.debug("IsisNeighbor::stopHoldingTimeCheck ");
-        exServiceHoldingTimeCheck.shutdown();
-    }
-
-    /**
-     * Starts the inactivity timer.
-     */
-    public void startInactivityTimeCheck() {
-        if (!inActivityTimerScheduled) {
-            log.debug("IsisNeighbor::startInactivityTimeCheck");
-            inActivityTimeCheckTask = new InternalInactivityTimeCheck();
-            exServiceInActivity = Executors.newSingleThreadScheduledExecutor();
-            exServiceInActivity.scheduleAtFixedRate(inActivityTimeCheckTask, neighborDownInterval,
-                                                    neighborDownInterval, TimeUnit.SECONDS);
-            inActivityTimerScheduled = true;
-        }
-    }
-
-    /**
-     * Stops the inactivity timer.
-     */
-    public void stopInactivityTimeCheck() {
-        if (inActivityTimerScheduled) {
-            log.debug("IsisNeighbor::stopInactivityTimeCheck ");
-            exServiceInActivity.shutdown();
-            inActivityTimerScheduled = false;
-        }
-    }
-
-    /**
-     * Called when neighbor is down.
-     */
-    public void neighborDown() {
-        log.debug("Neighbor Down {} and NeighborSystemId {}", neighborMacAddress,
-                  neighborSystemId);
-        stopInactivityTimeCheck();
-        isisInterface.setL1LanId(IsisConstants.DEFAULTLANID);
-        isisInterface.setL2LanId(IsisConstants.DEFAULTLANID);
-
-        neighborState = IsisInterfaceState.DOWN;
-        stopInactivityTimeCheck();
-        stopHoldingTimeCheck();
-        isisInterface.removeNeighbor(this);
-
-        isisInterface.isisLsdb().removeTopology(this, isisInterface);
-    }
-
-    /**
-     * Represents a Task which will do an inactivity time check.
-     */
-    private class InternalInactivityTimeCheck implements Runnable {
-        /**
-         * Creates an instance.
-         */
-        InternalInactivityTimeCheck() {
-        }
-
-        @Override
-        public void run() {
-            log.debug("Neighbor Not Heard till the past router dead interval .");
-            neighborDown();
-        }
-    }
-
-    /**
-     * Represents a Task which will decrement holding time for this neighbor.
-     */
-    private class InternalHoldingTimeCheck implements Runnable {
-        /**
-         * Creates an instance.
-         */
-        InternalHoldingTimeCheck() {
-        }
-
-        @Override
-        public void run() {
-            holdingTime--;
-            if (holdingTime <= 0) {
-                log.debug("Calling neighbor down. Holding time is 0.");
-                neighborDown();
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisProcess.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisProcess.java
deleted file mode 100644
index ebe43ca..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisProcess.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisProcess;
-
-import java.util.List;
-
-/**
- * Represents of an ISIS process.
- */
-public class DefaultIsisProcess implements IsisProcess {
-    private String processId;
-    private List<IsisInterface> isisInterfaceList;
-
-    /**
-     * Gets process ID.
-     *
-     * @return process ID
-     */
-    public String processId() {
-        return processId;
-    }
-
-    /**
-     * Sets process ID.
-     *
-     * @param processId process ID
-     */
-    public void setProcessId(String processId) {
-        this.processId = processId;
-    }
-
-    /**
-     * Gets list of ISIS interface details.
-     *
-     * @return list of ISIS interface details
-     */
-    public List<IsisInterface> isisInterfaceList() {
-        return isisInterfaceList;
-    }
-
-    /**
-     * Sets list of ISIS interface details.
-     *
-     * @param isisInterfaceList list of ISIS interface details
-     */
-    public void setIsisInterfaceList(List<IsisInterface> isisInterfaceList) {
-        this.isisInterfaceList = isisInterfaceList;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisChannelHandler.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisChannelHandler.java
deleted file mode 100644
index 937935b..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisChannelHandler.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.jboss.netty.channel.ChannelStateEvent;
-import org.jboss.netty.channel.ExceptionEvent;
-import org.jboss.netty.channel.MessageEvent;
-import org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler;
-import org.jboss.netty.handler.timeout.ReadTimeoutException;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisLsdb;
-import org.onosproject.isis.controller.IsisMessage;
-import org.onosproject.isis.controller.IsisProcess;
-import org.onosproject.isis.controller.impl.lsdb.DefaultIsisLsdb;
-import org.onosproject.isis.exceptions.IsisParseException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.nio.channels.ClosedChannelException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.ScheduledExecutorService;
-
-/**
- * Channel handler deals with the ISIS channel connection.
- * Also it dispatches messages to the appropriate handlers for processing.
- */
-public class IsisChannelHandler extends IdleStateAwareChannelHandler {
-
-    private static final Logger log = LoggerFactory.getLogger(IsisChannelHandler.class);
-    private static Map<Integer, Object> isisDb = null;
-    private Channel channel = null;
-    private Controller controller;
-    private List<IsisProcess> processes = null;
-    private List<ScheduledExecutorService> executorList = new ArrayList<>();
-    private byte[] configPacket = null;
-    private Map<Integer, IsisInterface> isisInterfaceMap = new ConcurrentHashMap<>();
-    private IsisLsdb isisLsdb = new DefaultIsisLsdb();
-    private List<Ip4Address> interfaceIps = new ArrayList<>();
-
-    /**
-     * Creates an instance of ISIS channel handler.
-     *
-     * @param controller controller instance
-     * @param processes  list of configured processes
-     */
-    public IsisChannelHandler(Controller controller, List<IsisProcess> processes) {
-        this.controller = controller;
-        this.processes = processes;
-        ((DefaultIsisLsdb) isisLsdb).setController(this.controller);
-        ((DefaultIsisLsdb) isisLsdb).setIsisInterface(isisInterfaceList());
-    }
-
-    private List<IsisInterface> isisInterfaceList() {
-        List<IsisInterface> isisInterfaceList = new ArrayList<>();
-        for (Integer key : isisInterfaceMap.keySet()) {
-            isisInterfaceList.add(isisInterfaceMap.get(key));
-        }
-        return isisInterfaceList;
-    }
-
-    /**
-     * Initializes the interface map with interface details.
-     */
-    public void initializeInterfaceMap() {
-        for (IsisProcess process : processes) {
-            for (IsisInterface isisInterface : process.isisInterfaceList()) {
-                IsisInterface anInterface = isisInterfaceMap.get(isisInterface.interfaceIndex());
-                if (anInterface == null) {
-                    isisInterfaceMap.put(isisInterface.interfaceIndex(), isisInterface);
-                    interfaceIps.add(isisInterface.interfaceIpAddress());
-                }
-            }
-        }
-        //Initializes the interface with all interface ip details - for ls pdu generation
-        initializeInterfaceIpList();
-    }
-
-    /**
-     * Updates the interface map with interface details.
-     *
-     * @param isisProcesses updated process instances
-     */
-    public void updateInterfaceMap(List<IsisProcess> isisProcesses) {
-        for (IsisProcess isisUpdatedProcess : isisProcesses) {
-            for (IsisInterface isisUpdatedInterface : isisUpdatedProcess.isisInterfaceList()) {
-                IsisInterface isisInterface = isisInterfaceMap.get(isisUpdatedInterface.interfaceIndex());
-                if (isisInterface == null) {
-                    isisInterfaceMap.put(isisUpdatedInterface.interfaceIndex(), isisUpdatedInterface);
-                    interfaceIps.add(isisUpdatedInterface.interfaceIpAddress());
-                } else {
-                    if (!isisInterface.intermediateSystemName().equals(isisUpdatedInterface.intermediateSystemName())) {
-                        isisInterface.setIntermediateSystemName(isisUpdatedInterface.intermediateSystemName());
-                    }
-                    if (isisInterface.reservedPacketCircuitType() != isisUpdatedInterface.reservedPacketCircuitType()) {
-                        isisInterface.setReservedPacketCircuitType(isisUpdatedInterface.reservedPacketCircuitType());
-                        isisInterface.removeNeighbors();
-                    }
-                    if (!isisInterface.circuitId().equals(isisUpdatedInterface.circuitId())) {
-                        isisInterface.setCircuitId(isisUpdatedInterface.circuitId());
-                    }
-                    if (isisInterface.networkType() != isisUpdatedInterface.networkType()) {
-                        isisInterface.setNetworkType(isisUpdatedInterface.networkType());
-                        isisInterface.removeNeighbors();
-                    }
-                    if (!isisInterface.areaAddress().equals(isisUpdatedInterface.areaAddress())) {
-                        isisInterface.setAreaAddress(isisUpdatedInterface.areaAddress());
-                    }
-                    if (isisInterface.holdingTime() != isisUpdatedInterface.holdingTime()) {
-                        isisInterface.setHoldingTime(isisUpdatedInterface.holdingTime());
-                    }
-                    if (isisInterface.helloInterval() != isisUpdatedInterface.helloInterval()) {
-                        isisInterface.setHelloInterval(isisUpdatedInterface.helloInterval());
-                        isisInterface.stopHelloSender();
-                        isisInterface.startHelloSender(channel);
-                    }
-
-                    isisInterfaceMap.put(isisInterface.interfaceIndex(), isisInterface);
-                }
-            }
-        }
-    }
-
-    /**
-     * Initializes the interface with all interface ip details.
-     */
-    public void initializeInterfaceIpList() {
-        for (IsisProcess process : processes) {
-            for (IsisInterface isisInterface : process.isisInterfaceList()) {
-                ((DefaultIsisInterface) isisInterface).setAllConfiguredInterfaceIps(interfaceIps);
-            }
-        }
-    }
-
-    /**
-     * Initialize channel, start hello sender and initialize LSDB.
-     */
-    private void initialize() {
-        log.debug("IsisChannelHandler initialize..!!!");
-        if (configPacket != null) {
-            log.debug("IsisChannelHandler initialize -> sentConfig packet of length ::"
-                              + configPacket.length);
-            sentConfigPacket(configPacket);
-        }
-        initializeInterfaceMap();
-        //start the hello timer
-        startHelloSender();
-        //Initialize Database
-        isisLsdb.initializeDb();
-    }
-
-    @Override
-    public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent evt) throws Exception {
-        log.info("ISIS channelConnected from {}", evt.getChannel().getRemoteAddress());
-        this.channel = evt.getChannel();
-        initialize();
-    }
-
-    @Override
-    public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent evt) {
-        log.debug("IsisChannelHandler::channelDisconnected...!!!");
-        if (controller != null) {
-            controller.connectPeer();
-            stopHelloSender();
-        }
-    }
-
-    @Override
-    public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception {
-        if (e.getCause() instanceof ReadTimeoutException) {
-            log.debug("Disconnecting device {} due to read timeout", e.getChannel().getRemoteAddress());
-            return;
-        } else if (e.getCause() instanceof ClosedChannelException) {
-            log.debug("Channel for ISIS {} already closed", e.getChannel().getRemoteAddress());
-        } else if (e.getCause() instanceof IOException) {
-            log.debug("Disconnecting ISIS {} due to IO Error: {}", e.getChannel().getRemoteAddress(),
-                      e.getCause().getMessage());
-        } else if (e.getCause() instanceof IsisParseException) {
-            IsisParseException errMsg = (IsisParseException) e.getCause();
-            byte errorCode = errMsg.errorCode();
-            byte errorSubCode = errMsg.errorSubCode();
-            log.debug("Error while parsing message from ISIS {}, ErrorCode {}",
-                      e.getChannel().getRemoteAddress(), errorCode);
-        } else if (e.getCause() instanceof RejectedExecutionException) {
-            log.debug("Could not process message: queue full");
-        } else {
-            log.debug("Error while processing message from ISIS {}, {}",
-                      e.getChannel().getRemoteAddress(), e.getCause().getMessage());
-        }
-    }
-
-    @Override
-    public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
-        log.debug("IsisChannelHandler::messageReceived...!!!");
-        Object message = e.getMessage();
-        if (message instanceof List) {
-            List<IsisMessage> isisMessageList = (List<IsisMessage>) message;
-            log.debug("IsisChannelHandler::List of IsisMessages Size {}", isisMessageList.size());
-
-            for (IsisMessage isisMessage : isisMessageList) {
-                processIsisMessage(isisMessage, ctx);
-            }
-        }
-        if (message instanceof IsisMessage) {
-            IsisMessage isisMessage = (IsisMessage) message;
-            log.debug("IsisChannelHandler::IsisMessages received...!!");
-            processIsisMessage(isisMessage, ctx);
-        }
-    }
-
-    /**
-     * When an ISIS message received it is handed over to this method.
-     * Based on the type of the ISIS message received it will be handed over
-     * to corresponding message handler methods.
-     *
-     * @param isisMessage received ISIS message
-     * @param ctx         channel handler context instance.
-     */
-    public void processIsisMessage(IsisMessage isisMessage, ChannelHandlerContext ctx) {
-        log.debug("IsisChannelHandler::processIsisMessage...!!!");
-        int interfaceIndex = isisMessage.interfaceIndex();
-        IsisInterface isisInterface = isisInterfaceMap.get(interfaceIndex);
-        isisInterface.processIsisMessage(isisMessage, isisLsdb, channel);
-    }
-
-    /**
-     * Starts the hello timer which sends hello packet every configured seconds.
-     */
-    public void startHelloSender() {
-        log.debug("IsisController::startHelloSender");
-        Set<Integer> interfaceIndexes = isisInterfaceMap.keySet();
-        for (Integer interfaceIndex : interfaceIndexes) {
-            IsisInterface isisInterface = isisInterfaceMap.get(interfaceIndex);
-            isisInterface.startHelloSender(channel);
-        }
-    }
-
-    /**
-     * Stops the hello timer.
-     */
-    public void stopHelloSender() {
-        log.debug("ISISChannelHandler::stopHelloTimer ");
-        log.debug("IsisController::startHelloSender");
-        Set<Integer> interfaceIndexes = isisInterfaceMap.keySet();
-        for (Integer interfaceIndex : interfaceIndexes) {
-            IsisInterface isisInterface = isisInterfaceMap.get(interfaceIndex);
-            isisInterface.stopHelloSender();
-        }
-    }
-
-    /**
-     * Sends the interface configuration packet to server.
-     *
-     * @param configPacket interface configuration
-     */
-    public void sentConfigPacket(byte[] configPacket) {
-        if (channel != null && channel.isConnected() && channel.isOpen()) {
-            channel.write(configPacket);
-            log.debug("IsisChannelHandler sentConfigPacket packet sent..!!!");
-        } else {
-            log.debug("IsisChannelHandler sentConfigPacket channel not connected - re try..!!!");
-            this.configPacket = configPacket;
-        }
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisHelloPduSender.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisHelloPduSender.java
deleted file mode 100644
index c97b5a5..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisHelloPduSender.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.channel.Channel;
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisNetworkType;
-import org.onosproject.isis.controller.IsisRouterType;
-import org.onosproject.isis.io.util.IsisUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Representation of an ISIS hello pdu sender task.
- */
-public class IsisHelloPduSender implements Runnable {
-    private static final Logger log = LoggerFactory.getLogger(IsisHelloPduSender.class);
-    private Channel channel = null;
-    private IsisInterface isisInterface = null;
-
-    /**
-     * Creates an instance of Hello PDU Sender task.
-     *
-     * @param channel       netty channel instance
-     * @param isisInterface ISIS interface instance
-     */
-    public IsisHelloPduSender(Channel channel, IsisInterface isisInterface) {
-        this.channel = channel;
-        this.isisInterface = isisInterface;
-    }
-
-    @Override
-    public void run() {
-        if (channel != null && channel.isConnected() && channel.isOpen()) {
-            try {
-                byte[] helloPdu = null;
-                byte[] interfaceIndex = {(byte) isisInterface.interfaceIndex()};
-
-                if (isisInterface.networkType() == IsisNetworkType.P2P) {
-                    helloPdu = IsisUtil.getP2pHelloPdu(isisInterface, true);
-                    helloPdu = Bytes.concat(helloPdu, interfaceIndex);
-                    channel.write(helloPdu);
-                } else if (isisInterface.networkType() == IsisNetworkType.BROADCAST) {
-                    switch (IsisRouterType.get(isisInterface.reservedPacketCircuitType())) {
-                        case L1:
-                            helloPdu = IsisUtil.getL1HelloPdu(isisInterface, true);
-                            helloPdu = Bytes.concat(helloPdu, interfaceIndex);
-                            channel.write(helloPdu);
-                            break;
-                        case L2:
-                            helloPdu = IsisUtil.getL2HelloPdu(isisInterface, true);
-                            helloPdu = Bytes.concat(helloPdu, interfaceIndex);
-                            channel.write(helloPdu);
-                            break;
-                        case L1L2:
-                            helloPdu = IsisUtil.getL1HelloPdu(isisInterface, true);
-                            helloPdu = Bytes.concat(helloPdu, interfaceIndex);
-                            channel.write(helloPdu);
-
-                            helloPdu = IsisUtil.getL2HelloPdu(isisInterface, true);
-                            helloPdu = Bytes.concat(helloPdu, interfaceIndex);
-                            channel.write(helloPdu);
-                            break;
-                        default:
-                            log.debug("IsisHelloPduSender::Unknown circuit type...!!!");
-                            break;
-                    }
-                }
-            } catch (Exception e) {
-                log.debug("Exception @IsisHelloPduSender:: {}", e.getMessage());
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisMessageDecoder.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisMessageDecoder.java
deleted file mode 100644
index 7a69a5b..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisMessageDecoder.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.jboss.netty.handler.codec.frame.FrameDecoder;
-import org.onlab.packet.MacAddress;
-import org.onosproject.isis.controller.IsisMessage;
-import org.onosproject.isis.io.isispacket.IsisMessageReader;
-import org.onosproject.isis.io.util.IsisConstants;
-import org.onosproject.isis.io.util.IsisUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Decodes an ISIS message from a Channel, for use in a netty pipeline.
- */
-public class IsisMessageDecoder extends FrameDecoder {
-
-    private static final Logger log = LoggerFactory.getLogger(IsisMessageDecoder.class);
-
-    @Override
-    protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer) throws Exception {
-        log.debug("IsisMessageDecoder::Message received <:> length {}", buffer.readableBytes());
-        if (!channel.isConnected()) {
-            log.info("Channel is not connected.");
-            return null;
-        }
-        IsisMessageReader messageReader = new IsisMessageReader();
-        List<IsisMessage> isisMessageList = new LinkedList<>();
-        int dataLength = buffer.readableBytes();
-        while (buffer.readableBytes() >= IsisConstants.MINIMUM_FRAME_LEN) {
-            ChannelBuffer payload = buffer.readBytes(IsisConstants.MINIMUM_FRAME_LEN);
-            ChannelBuffer ethernetHeader = payload.readBytes(IsisUtil.ETHER_HEADER_LEN);
-            //Read the Source MAC address from ethernet header at the 6th position
-            MacAddress sourceMac = getSourceMac(ethernetHeader);
-            //Strip 17 byte ethernet header and get the ISIS data buffer
-            ChannelBuffer isisDataBuffer = payload.readBytes(payload.readableBytes());
-            int readableBytes = isisDataBuffer.readableBytes();
-            IsisMessage message = messageReader.readFromBuffer(isisDataBuffer);
-            //Last 7 bytes is metadata. ie. interface MAC address and interface index.
-            if (message != null) {
-                if (isisDataBuffer.readableBytes() >= IsisConstants.METADATA_LEN) {
-                    //Sets the source MAC
-                    message.setSourceMac(sourceMac);
-                    isisDataBuffer.readerIndex(readableBytes - IsisConstants.METADATA_LEN);
-                    log.debug("IsisMessageDecoder::Reading metadata <:> length {}", isisDataBuffer.readableBytes());
-                    byte[] macBytes = new byte[IsisUtil.SIX_BYTES];
-                    isisDataBuffer.readBytes(macBytes, 0, IsisUtil.SIX_BYTES);
-                    MacAddress macAddress = MacAddress.valueOf(macBytes);
-                    int interfaceIndex = isisDataBuffer.readByte();
-                    message.setInterfaceMac(macAddress);
-                    message.setInterfaceIndex(interfaceIndex);
-                }
-                isisMessageList.add(message);
-            }
-        }
-        return (!isisMessageList.isEmpty()) ? isisMessageList : null;
-    }
-
-    /**
-     * Gets the source MAC address from the ethernet header.
-     *
-     * @param ethHeader ethernet header bytes
-     * @return MAC address of the source router
-     */
-    private MacAddress getSourceMac(ChannelBuffer ethHeader) {
-        //Source MAC is at position 6 to 11 (6 bytes)
-        ethHeader.skipBytes(IsisUtil.SIX_BYTES);
-        MacAddress sourceMac = MacAddress.valueOf(ethHeader.readBytes(IsisUtil.SIX_BYTES).array());
-
-        return sourceMac;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisMessageEncoder.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisMessageEncoder.java
deleted file mode 100644
index 9f6ca66..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisMessageEncoder.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.jboss.netty.handler.codec.oneone.OneToOneEncoder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Encodes an ISIS message for output into a ChannelBuffer, for use in a netty pipeline.
- */
-public class IsisMessageEncoder extends OneToOneEncoder {
-    private static final Logger log = LoggerFactory.getLogger(IsisMessageEncoder.class);
-
-    @Override
-    protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception {
-
-        byte[] byteMsg = (byte[]) msg;
-        log.debug("Encoding isisMessage of length {}", byteMsg.length);
-        ChannelBuffer channelBuffer = ChannelBuffers.buffer(byteMsg.length);
-        channelBuffer.writeBytes(byteMsg);
-
-        return channelBuffer;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisPipelineFactory.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisPipelineFactory.java
deleted file mode 100644
index d93ca5e..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisPipelineFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import org.jboss.netty.channel.ChannelPipeline;
-import org.jboss.netty.channel.ChannelPipelineFactory;
-import org.jboss.netty.channel.Channels;
-
-/**
- * Creates a ChannelPipeline for a client-side ISIS channel.
- */
-public class IsisPipelineFactory implements ChannelPipelineFactory {
-    private IsisChannelHandler isisChannelHandler;
-
-    /**
-     * Creates an instance of ISIS channel pipeline factory.
-     *
-     * @param isisChannelHandler ISIS channel handler instance
-     */
-    public IsisPipelineFactory(IsisChannelHandler isisChannelHandler) {
-        this.isisChannelHandler = isisChannelHandler;
-    }
-
-    @Override
-    public ChannelPipeline getPipeline() throws Exception {
-        ChannelPipeline pipeline = Channels.pipeline();
-        pipeline.addLast("encoder", new IsisMessageDecoder());
-        pipeline.addLast("decoder", new IsisMessageEncoder());
-        pipeline.addLast("handler", isisChannelHandler);
-
-        return pipeline;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/LspEventConsumer.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/LspEventConsumer.java
deleted file mode 100644
index 56f2aef..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/LspEventConsumer.java
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
-* Copyright 2016-present Open Networking Foundation
-*
-* 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.isis.controller.impl;
-
-import org.onlab.packet.Ip4Address;
-import org.onlab.util.Bandwidth;
-import org.onosproject.isis.controller.IsisNetworkType;
-import org.onosproject.isis.controller.LspWrapper;
-import org.onosproject.isis.controller.impl.topology.DefaultIsisLink;
-import org.onosproject.isis.controller.impl.topology.DefaultIsisLinkInformation;
-import org.onosproject.isis.controller.impl.topology.DefaultIsisLinkTed;
-import org.onosproject.isis.controller.impl.topology.DefaultIsisRouter;
-import org.onosproject.isis.controller.impl.topology.TopologyForDeviceAndLinkImpl;
-import org.onosproject.isis.controller.topology.IsisLink;
-import org.onosproject.isis.controller.topology.IsisLinkTed;
-import org.onosproject.isis.controller.topology.IsisRouter;
-import org.onosproject.isis.controller.topology.LinkInformation;
-import org.onosproject.isis.io.isispacket.pdu.LsPdu;
-import org.onosproject.isis.io.isispacket.tlv.IsExtendedReachability;
-import org.onosproject.isis.io.isispacket.tlv.IsisTlv;
-import org.onosproject.isis.io.isispacket.tlv.NeighborForExtendedIs;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.AdministrativeGroup;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.InterfaceIpAddress;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.MaximumBandwidth;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.MaximumReservableBandwidth;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.NeighborIpAddress;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringMetric;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringSubTlv;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.UnreservedBandwidth;
-import org.onosproject.isis.io.util.IsisConstants;
-import org.onosproject.isis.io.util.IsisUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.BlockingQueue;
-
-/**
- * Representation of LSP event consumer.
- */
-public class LspEventConsumer implements Runnable {
-    private static final Logger log = LoggerFactory.getLogger(LspEventConsumer.class);
-    private BlockingQueue queue = null;
-    private Controller controller = null;
-    private TopologyForDeviceAndLinkImpl deviceAndLink = new TopologyForDeviceAndLinkImpl();
-    private Map<String, IsisRouter> isisRouterDetails = new LinkedHashMap<>();
-
-    /**
-     * Creates an instance of this.
-     *
-     * @param queue      blocking queue instance
-     * @param controller controller instance
-     */
-    public LspEventConsumer(BlockingQueue queue, Controller controller) {
-        this.queue = queue;
-        this.controller = controller;
-    }
-
-    @Override
-    public void run() {
-        try {
-            while (true) {
-                if (!queue.isEmpty()) {
-                    LspWrapper wrapper = (LspWrapper) queue.take();
-                    LsPdu lsPdu = (LsPdu) wrapper.lsPdu();
-                    if (wrapper.lspProcessing().equals(IsisConstants.LSPREMOVED)) {
-                        callTopologyToRemoveInfo(lsPdu);
-                    } else if (wrapper.lspProcessing().equals(IsisConstants.LSPADDED)) {
-                        callTopologyToSendInfo(lsPdu, wrapper.isisInterface().networkType(),
-                                               wrapper.isisInterface().systemId() + ".00");
-                    }
-                }
-            }
-        } catch (Exception e) {
-            log.debug("Error::LspsForProvider::{}", e.getMessage());
-        }
-    }
-
-    /**
-     * Sends topology information to core.
-     *
-     * @param lsPdu           ls pdu instance
-     * @param isisNetworkType ISIS network type
-     * @param ownSystemId own system ID
-     */
-    private void callTopologyToSendInfo(LsPdu lsPdu, IsisNetworkType isisNetworkType,
-                                        String ownSystemId) {
-        if ((lsPdu.lspId().equals(ownSystemId + "-00"))) {
-            return;
-        }
-        sendDeviceInfo(createDeviceInfo(lsPdu));
-
-        for (IsisTlv isisTlv : lsPdu.tlvs()) {
-            if (isisTlv instanceof IsExtendedReachability) {
-                IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv;
-                List<NeighborForExtendedIs> neighbours = isExtendedReachability.neighbours();
-                for (NeighborForExtendedIs teTlv : neighbours) {
-                    String neighbor = teTlv.neighborId();
-                    IsisRouter isisRouter = isisRouterDetails.get(neighbor);
-                    if (isisRouter != null) {
-                        IsisRouter sourceRouter = isisRouterDetails.get(IsisUtil.removeTailingZeros(lsPdu.lspId()));
-                        IsisRouter destinationRouter = isisRouter;
-                        if (sourceRouter.isDis()) {
-                            LinkInformation linkInformation = createLinkInfo(sourceRouter.systemId(),
-                                                                             destinationRouter.systemId(),
-                                                                             sourceRouter.interfaceId(),
-                                                                             destinationRouter.interfaceId(), lsPdu);
-                            controller.addLinkDetails(createIsisLink(linkInformation, lsPdu));
-                        } else if (destinationRouter.isDis()) {
-                            LinkInformation linkInformation1 = createLinkInfo(destinationRouter.systemId(),
-                                                                              sourceRouter.systemId(),
-                                                                              destinationRouter.interfaceId(),
-                                                                              sourceRouter.interfaceId(), lsPdu);
-                            controller.addLinkDetails(createIsisLink(linkInformation1, lsPdu));
-                        } else {
-                            LinkInformation linkInformation = createLinkInfo(sourceRouter.systemId(),
-                                                                             destinationRouter.systemId(),
-                                                                             sourceRouter.interfaceId(),
-                                                                             destinationRouter.interfaceId(), lsPdu);
-                            controller.addLinkDetails(createIsisLink(linkInformation, lsPdu));
-                            LinkInformation linkInformation1 = createLinkInfo(destinationRouter.systemId(),
-                                                                              sourceRouter.systemId(),
-                                                                              destinationRouter.interfaceId(),
-                                                                              sourceRouter.interfaceId(), lsPdu);
-                            controller.addLinkDetails(createIsisLink(linkInformation1, lsPdu));
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Removes topology information from core.
-     *
-     * @param lsPdu ls pdu instance
-     */
-    private void callTopologyToRemoveInfo(LsPdu lsPdu) {
-        String routerId = IsisUtil.removeTailingZeros(lsPdu.lspId());
-        IsisRouter isisRouter = isisRouterDetails.get(routerId);
-        removeDeviceInfo(isisRouter);
-        removeLinkInfo(lsPdu);
-    }
-
-    /**
-     * Sends the device information to topology provider.
-     *
-     * @param isisRouter ISIS router instance
-     */
-    private void sendDeviceInfo(IsisRouter isisRouter) {
-        if (isisRouter.systemId() != null) {
-            controller.addDeviceDetails(isisRouter);
-        }
-    }
-
-    /**
-     * Creates Device instance.
-     *
-     * @param lsPdu ISIS LSPDU instance
-     * @return isisRouter isisRouter instance
-     */
-    public IsisRouter createDeviceInfo(LsPdu lsPdu) {
-        IsisRouter isisRouter = createIsisRouter(lsPdu);
-        if (isisRouter.systemId() != null) {
-            isisRouterDetails.put(isisRouter.systemId(), isisRouter);
-        }
-        return isisRouter;
-    }
-
-    /**
-     * Creates ISIS router instance.
-     *
-     * @param lsPdu lsp instance
-     * @return isisRouter instance
-     */
-    private IsisRouter createIsisRouter(LsPdu lsPdu) {
-        IsisRouter isisRouter = new DefaultIsisRouter();
-        if (IsisUtil.checkIsDis(lsPdu.lspId())) {
-            isisRouter.setDis(true);
-        } else {
-            isisRouter.setDis(false);
-        }
-        isisRouter.setSystemId(IsisUtil.removeTailingZeros(lsPdu.lspId()));
-        for (IsisTlv isisTlv : lsPdu.tlvs()) {
-            if (isisTlv instanceof IsExtendedReachability) {
-                IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv;
-                List<NeighborForExtendedIs> neighbours = isExtendedReachability.neighbours();
-                for (NeighborForExtendedIs teTlv : neighbours) {
-                    List<TrafficEngineeringSubTlv> teSubTlvs = teTlv.teSubTlv();
-                    for (TrafficEngineeringSubTlv teSubTlv : teSubTlvs) {
-                        if (teSubTlv instanceof InterfaceIpAddress) {
-                            InterfaceIpAddress localIpAddress = (InterfaceIpAddress) teSubTlv;
-                            isisRouter.setInterfaceId(localIpAddress.localInterfaceIPAddress());
-                        } else if (teSubTlv instanceof NeighborIpAddress) {
-                            NeighborIpAddress neighborIpAddress = (NeighborIpAddress) teSubTlv;
-                            isisRouter.setNeighborRouterId(neighborIpAddress.neighborIPAddress());
-                        }
-
-                    }
-                }
-            }
-        }
-        if (isisRouter.interfaceId() == null) {
-            isisRouter.setInterfaceId(IsisConstants.DEFAULTIP);
-        }
-        if (isisRouter.neighborRouterId() == null) {
-            isisRouter.setNeighborRouterId(IsisConstants.DEFAULTIP);
-        }
-        return isisRouter;
-    }
-
-    /**
-     * Creates link information.
-     *
-     * @param localSystemId  local system ID
-     * @param remoteSystemId remote system ID
-     * @param interfaceIp interface address
-     * @param neighborIp neighbor address
-     * @param lsPdu link state PDU instance
-     * @return link information instance
-     */
-    public LinkInformation createLinkInfo(String localSystemId, String remoteSystemId,
-                                          Ip4Address interfaceIp, Ip4Address neighborIp,
-                                          LsPdu lsPdu) {
-
-        String linkId = "link:" + localSystemId + "-" + remoteSystemId;
-        LinkInformation linkInformation = new DefaultIsisLinkInformation();
-        linkInformation.setInterfaceIp(interfaceIp);
-        linkInformation.setNeighborIp(neighborIp);
-        linkInformation.setLinkId(linkId);
-        linkInformation.setAlreadyCreated(false);
-        linkInformation.setLinkDestinationId(remoteSystemId);
-        linkInformation.setLinkSourceId(localSystemId);
-
-        return linkInformation;
-    }
-
-    /**
-     * Removes the device information from topology provider.
-     *
-     * @param isisRouter ISIS router instance
-     */
-    private void removeDeviceInfo(IsisRouter isisRouter) {
-        if (isisRouter.systemId() != null) {
-            controller.removeDeviceDetails(isisRouter);
-        }
-        isisRouterDetails.remove(isisRouter.systemId());
-    }
-
-
-    /**
-     * Removes the link information from topology provider.
-     *
-     * @param lsPdu ls pdu instance
-     */
-    private void removeLinkInfo(LsPdu lsPdu) {
-        Map<String, LinkInformation> linkInformationList = deviceAndLink.removeLinkInfo(lsPdu.lspId());
-        for (String key : linkInformationList.keySet()) {
-            LinkInformation linkInformation = linkInformationList.get(key);
-            controller.removeLinkDetails(createIsisLink(linkInformation, lsPdu));
-        }
-    }
-
-    /**
-     * Creates ISIS link instance.
-     *
-     * @param linkInformation link information instance
-     * @return isisLink instance
-     */
-    private IsisLink createIsisLink(LinkInformation linkInformation, LsPdu lsPdu) {
-        IsisLink isisLink = new DefaultIsisLink();
-        isisLink.setLocalSystemId(linkInformation.linkSourceId());
-        isisLink.setRemoteSystemId(linkInformation.linkDestinationId());
-        isisLink.setInterfaceIp(linkInformation.interfaceIp());
-        isisLink.setNeighborIp(linkInformation.neighborIp());
-        isisLink.setLinkTed(createIsisLinkTedInfo(lsPdu));
-        return isisLink;
-    }
-
-    /**
-     * Creates the ISIS link TED information.
-     *
-     * @param lsPdu link state PDU
-     * @return isisLinkTed
-     */
-    public IsisLinkTed createIsisLinkTedInfo(LsPdu lsPdu) {
-        IsisLinkTed isisLinkTed = new DefaultIsisLinkTed();
-        for (IsisTlv isisTlv : lsPdu.tlvs()) {
-            if (isisTlv instanceof IsExtendedReachability) {
-                IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv;
-                List<NeighborForExtendedIs> neighbours = isExtendedReachability.neighbours();
-                for (NeighborForExtendedIs teTlv : neighbours) {
-                    List<TrafficEngineeringSubTlv> teSubTlvs = teTlv.teSubTlv();
-                    for (TrafficEngineeringSubTlv teSubTlv : teSubTlvs) {
-                        if (teSubTlv instanceof AdministrativeGroup) {
-                            AdministrativeGroup ag = (AdministrativeGroup) teSubTlv;
-                            isisLinkTed.setAdministrativeGroup(ag.administrativeGroup());
-                        }
-                        if (teSubTlv instanceof InterfaceIpAddress) {
-                            InterfaceIpAddress localIpAddress = (InterfaceIpAddress) teSubTlv;
-                            isisLinkTed.setIpv4InterfaceAddress(localIpAddress.localInterfaceIPAddress());
-                        }
-                        if (teSubTlv instanceof NeighborIpAddress) {
-                            NeighborIpAddress neighborIpAddress = (NeighborIpAddress) teSubTlv;
-                            isisLinkTed.setIpv4NeighborAddress(neighborIpAddress.neighborIPAddress());
-                        }
-                        if (teSubTlv instanceof TrafficEngineeringMetric) {
-                            TrafficEngineeringMetric teM = (TrafficEngineeringMetric) teSubTlv;
-                            isisLinkTed.setTeDefaultMetric(teM.getTrafficEngineeringMetricValue());
-                        }
-                        if (teSubTlv instanceof MaximumBandwidth) {
-                            MaximumBandwidth maxLinkBandwidth = (MaximumBandwidth) teSubTlv;
-                            isisLinkTed.setMaximumLinkBandwidth(
-                                    Bandwidth.bps(maxLinkBandwidth.getMaximumBandwidthValue()));
-                        }
-                        if (teSubTlv instanceof MaximumReservableBandwidth) {
-                            MaximumReservableBandwidth maxReservableBw = (MaximumReservableBandwidth) teSubTlv;
-                            isisLinkTed.setMaximumReservableLinkBandwidth(
-                                    Bandwidth.bps(maxReservableBw.getMaximumBandwidthValue()));
-                        }
-                        if (teSubTlv instanceof UnreservedBandwidth) {
-                            UnreservedBandwidth unReservedBandwidth = (UnreservedBandwidth) teSubTlv;
-                            List<Bandwidth> bandwidthList = new ArrayList<>();
-                            List<Float> unReservedBandwidthList = unReservedBandwidth.unReservedBandwidthValue();
-                            for (Float unReservedBandwidthFloatValue : unReservedBandwidthList) {
-                                Bandwidth bandwidth = Bandwidth.bps(unReservedBandwidthFloatValue);
-                                bandwidthList.add(bandwidth);
-                            }
-                            isisLinkTed.setUnreservedBandwidth(bandwidthList);
-                        }
-                    }
-                }
-            }
-        }
-        return isisLinkTed;
-    }
-}
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdb.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdb.java
deleted file mode 100644
index 5caebd6..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdb.java
+++ /dev/null
@@ -1,437 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl.lsdb;
-
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisLsdb;
-import org.onosproject.isis.controller.IsisLsdbAge;
-import org.onosproject.isis.controller.IsisLspBin;
-import org.onosproject.isis.controller.IsisMessage;
-import org.onosproject.isis.controller.IsisNeighbor;
-import org.onosproject.isis.controller.IsisPduType;
-import org.onosproject.isis.controller.IsisRouterType;
-import org.onosproject.isis.controller.LspWrapper;
-import org.onosproject.isis.controller.impl.Controller;
-import org.onosproject.isis.controller.impl.LspEventConsumer;
-import org.onosproject.isis.io.isispacket.pdu.LsPdu;
-import org.onosproject.isis.io.util.IsisConstants;
-import org.onosproject.isis.io.util.IsisUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-/**
- * Representation of ISIS link state database.
- */
-public class DefaultIsisLsdb implements IsisLsdb {
-    private static final Logger log = LoggerFactory.getLogger(DefaultIsisLsdb.class);
-    private Map<String, LspWrapper> isisL1Db = new ConcurrentHashMap<>();
-    private Map<String, LspWrapper> isisL2Db = new ConcurrentHashMap<>();
-    private IsisLsdbAge lsdbAge = null;
-    private Controller controller = null;
-    private List<IsisInterface> isisInterfaceList = new ArrayList<>();
-
-
-    private int l1LspSeqNo = IsisConstants.STARTLSSEQUENCENUM;
-    private int l2LspSeqNo = IsisConstants.STARTLSSEQUENCENUM;
-    private LspEventConsumer queueConsumer = null;
-    private BlockingQueue<LspWrapper> lspForProviderQueue = new ArrayBlockingQueue<>(1024);
-
-    /**
-     * Creates an instance of ISIS LSDB.
-     */
-    public DefaultIsisLsdb() {
-        lsdbAge = new DefaultIsisLsdbAge();
-    }
-
-    /**
-     * Sets the controller instance.
-     *
-     * @param controller controller instance
-     */
-    public void setController(Controller controller) {
-        this.controller = controller;
-    }
-
-    /**
-     * Sets the list of IsisInterface instance.
-     *
-     * @param isisInterfaceList isisInterface instance
-     */
-    public void setIsisInterface(List<IsisInterface> isisInterfaceList) {
-        this.isisInterfaceList = isisInterfaceList;
-    }
-
-    /**
-     * Initializes the link state database.
-     */
-    public void initializeDb() {
-        lsdbAge.startDbAging();
-        queueConsumer = new LspEventConsumer(lspForProviderQueue, controller);
-        new Thread(queueConsumer).start();
-    }
-
-    /**
-     * Sets the level 1 link state sequence number.
-     *
-     * @param l1LspSeqNo link state sequence number
-     */
-    public void setL1LspSeqNo(int l1LspSeqNo) {
-        this.l1LspSeqNo = l1LspSeqNo;
-    }
-
-    /**
-     * Sets the level 2 link state sequence number.
-     *
-     * @param l2LspSeqNo link state sequence number
-     */
-    public void setL2LspSeqNo(int l2LspSeqNo) {
-        this.l2LspSeqNo = l2LspSeqNo;
-    }
-
-    /**
-     * Returns the LSDB LSP key.
-     *
-     * @param systemId system ID
-     * @return key
-     */
-    public String lspKey(String systemId) {
-        StringBuilder lspKey = new StringBuilder();
-        lspKey.append(systemId);
-        lspKey.append(".00");
-        lspKey.append("-");
-        lspKey.append("00");
-
-        return lspKey.toString();
-    }
-
-    /**
-     * Returns the neighbor L1 database information.
-     *
-     * @return neighbor L1 database information
-     */
-    public Map<String, LspWrapper> getL1Db() {
-        return isisL1Db;
-    }
-
-    /**
-     * Returns the neighbor L2 database information.
-     *
-     * @return neighbor L2 database information
-     */
-    public Map<String, LspWrapper> getL2Db() {
-        return isisL2Db;
-    }
-
-    /**
-     * Returns the LSDB instance.
-     *
-     * @return LSDB instance
-     */
-    public IsisLsdb isisLsdb() {
-        return this;
-    }
-
-    /**
-     * Returns all LSPs (L1 and L2).
-     *
-     * @param excludeMaxAgeLsp exclude the max age LSPs
-     * @return List of LSPs
-     */
-    public List<LspWrapper> allLspHeaders(boolean excludeMaxAgeLsp) {
-        List<LspWrapper> summaryList = new CopyOnWriteArrayList<>();
-        addLspToHeaderList(summaryList, excludeMaxAgeLsp, isisL1Db);
-        addLspToHeaderList(summaryList, excludeMaxAgeLsp, isisL2Db);
-
-        return summaryList;
-    }
-
-    /**
-     * Adds the LSPs to summary list.
-     *
-     * @param summaryList      summary list
-     * @param excludeMaxAgeLsp exclude max age LSP
-     * @param lspMap           map of LSP
-     */
-    private void addLspToHeaderList(List summaryList, boolean excludeMaxAgeLsp, Map lspMap) {
-        Iterator slotVals = lspMap.values().iterator();
-        while (slotVals.hasNext()) {
-            LspWrapper wrapper = (LspWrapper) slotVals.next();
-            if (excludeMaxAgeLsp) {
-                //if current age of lsa is max age or lsa present in Max Age bin
-                if (wrapper.remainingLifetime() != 0) {
-                    addToList(wrapper, summaryList);
-                }
-            } else {
-                addToList(wrapper, summaryList);
-            }
-        }
-    }
-
-    /**
-     * Adds the LSPWrapper to summary list.
-     *
-     * @param wrapper  LSP wrapper instance
-     * @param summList LSP summary list
-     */
-    private void addToList(LspWrapper wrapper, List summList) {
-        //set the current age
-        ((LsPdu) wrapper.lsPdu()).setRemainingLifeTime(wrapper.remainingLifetime());
-        summList.add(wrapper);
-    }
-
-    /**
-     * Finds the LSP from appropriate maps L1 or L2 based on type.
-     *
-     * @param pduType L1 or L2 LSP
-     * @param lspId   LSP ID
-     * @return LSP wrapper object
-     */
-    public LspWrapper findLsp(IsisPduType pduType, String lspId) {
-        LspWrapper lspWrapper = null;
-
-        switch (pduType) {
-            case L1LSPDU:
-                lspWrapper = isisL1Db.get(lspId);
-                break;
-            case L2LSPDU:
-                lspWrapper = isisL2Db.get(lspId);
-                break;
-            default:
-                log.debug("Unknown LSP type..!!!");
-                break;
-        }
-
-        //set the current age
-        if (lspWrapper != null) {
-            //set the current age
-            ((DefaultLspWrapper) lspWrapper).lsPdu().setRemainingLifeTime(lspWrapper.remainingLifetime());
-        }
-
-        return lspWrapper;
-    }
-
-    /**
-     * Installs a new self-originated LSP.
-     *
-     * @param isisMessage ISIS message
-     * @param isSelfOriginated is the message self originated?
-     * @param isisInterface ISIS interface
-     * @return true if successfully added
-     */
-    public boolean addLsp(IsisMessage isisMessage, boolean isSelfOriginated, IsisInterface isisInterface) {
-        LsPdu lspdu = (LsPdu) isisMessage;
-        if (isSelfOriginated) {
-            //Add length and checksum
-            byte[] lspBytes = lspdu.asBytes();
-            lspdu.setPduLength(lspBytes.length);
-            lspBytes = IsisUtil.addChecksum(lspBytes, IsisConstants.CHECKSUMPOSITION,
-                    IsisConstants.CHECKSUMPOSITION + 1);
-            byte[] checkSum = {lspBytes[IsisConstants.CHECKSUMPOSITION], lspBytes[IsisConstants.CHECKSUMPOSITION + 1]};
-            lspdu.setCheckSum(ChannelBuffers.copiedBuffer(checkSum).readUnsignedShort());
-        }
-
-        DefaultLspWrapper lspWrapper = (DefaultLspWrapper) findLsp(lspdu.isisPduType(), lspdu.lspId());
-        if (lspWrapper == null) {
-            lspWrapper = new DefaultLspWrapper();
-        }
-
-        lspWrapper.setLspAgeReceived(IsisConstants.LSPMAXAGE - lspdu.remainingLifeTime());
-        lspWrapper.setLspType(IsisPduType.get(lspdu.pduType()));
-        lspWrapper.setLsPdu(lspdu);
-        lspWrapper.setAgeCounterWhenReceived(lsdbAge.ageCounter());
-        lspWrapper.setAgeCounterRollOverWhenAdded(lsdbAge.ageCounterRollOver());
-        lspWrapper.setSelfOriginated(isSelfOriginated);
-        lspWrapper.setIsisInterface(isisInterface);
-        lspWrapper.setLsdbAge(lsdbAge);
-        addLsp(lspWrapper, lspdu.lspId());
-
-        log.debug("Added LSp In LSDB: {}", lspWrapper);
-        try {
-            if (!lspWrapper.isSelfOriginated()) {
-                lspWrapper.setLspProcessing(IsisConstants.LSPADDED);
-                lspForProviderQueue.put(lspWrapper);
-            }
-        } catch (Exception e) {
-            log.debug("Added LSp In Blocking queue: {}", lspWrapper);
-        }
-        return true;
-    }
-
-    /**
-     * Adds the LSP to L1 or L2 database.
-     *
-     * @param lspWrapper LSA wrapper instance
-     * @param key        key
-     * @return True if added else false
-     */
-    private boolean addLsp(LspWrapper lspWrapper, String key) {
-        //Remove the lsa from bin if exist.
-        removeLspFromBin(lspWrapper);
-
-        switch (lspWrapper.lsPdu().isisPduType()) {
-            case L1LSPDU:
-                isisL1Db.remove(key);
-                isisL1Db.put(key, lspWrapper);
-                break;
-            case L2LSPDU:
-                isisL2Db.remove(key);
-                isisL2Db.put(key, lspWrapper);
-                break;
-            default:
-                log.debug("Unknown LSP type to add..!!!");
-                break;
-        }
-
-        //add it to bin
-        Integer binNumber = lsdbAge.age2Bin(IsisConstants.LSPMAXAGE - lspWrapper.lspAgeReceived());
-        IsisLspBin lspBin = lsdbAge.getLspBin(binNumber);
-        if (lspBin != null) {
-            //remove from existing
-            lspWrapper.setBinNumber(binNumber);
-            lspBin.addIsisLsp(key, lspWrapper);
-            lsdbAge.addLspBin(binNumber, lspBin);
-            log.debug("Added Type {} LSP to LSDB and LSABin[{}], Remaining life time of LSA {}",
-                    lspWrapper.lsPdu().isisPduType(),
-                    binNumber, lspWrapper.remainingLifetime());
-        }
-
-        return false;
-    }
-
-    /**
-     * Removes LSP from Bin.
-     *
-     * @param lsaWrapper LSP wrapper instance
-     */
-    public void removeLspFromBin(LspWrapper lsaWrapper) {
-        if (lsaWrapper != null) {
-            lsdbAge.removeLspFromBin(lsaWrapper);
-        }
-    }
-
-    /**
-     * Returns new ,latest or old according to the type of ISIS message received.
-     *
-     * @param lsp1 LSP instance
-     * @param lsp2 LSP instance
-     * @return string status
-     */
-    public String isNewerOrSameLsp(IsisMessage lsp1, IsisMessage lsp2) {
-        LsPdu receivedLsp = (LsPdu) lsp1;
-        LsPdu lspFromDb = (LsPdu) lsp2;
-        if (receivedLsp.sequenceNumber() > lspFromDb.sequenceNumber() ||
-                receivedLsp.checkSum() != lspFromDb.checkSum()) {
-            return "latest";
-        } else if (receivedLsp.sequenceNumber() < lspFromDb.sequenceNumber()) {
-            return "old";
-        } else if (receivedLsp.sequenceNumber() == lspFromDb.sequenceNumber()) {
-            return "same";
-        }
-
-        return "";
-    }
-
-    /**
-     * Returns the sequence number.
-     *
-     * @param lspType type of LSP
-     * @return sequence number
-     */
-    public int lsSequenceNumber(IsisPduType lspType) {
-        switch (lspType) {
-            case L1LSPDU:
-                return l1LspSeqNo++;
-            case L2LSPDU:
-                return l2LspSeqNo++;
-            default:
-                return IsisConstants.STARTLSSEQUENCENUM;
-        }
-    }
-
-    /**
-     * Deletes the given LSP.
-     *
-     * @param lspMessage LSP instance
-     */
-    public void deleteLsp(IsisMessage lspMessage) {
-        LsPdu lsp = (LsPdu) lspMessage;
-        String lspKey = lsp.lspId();
-        LspWrapper lspWrapper = findLsp(lspMessage.isisPduType(), lspKey);
-        switch (lsp.isisPduType()) {
-            case L1LSPDU:
-                isisL1Db.remove(lspKey);
-                break;
-            case L2LSPDU:
-                isisL2Db.remove(lspKey);
-                break;
-            default:
-                log.debug("Unknown LSP type to remove..!!!");
-                break;
-        }
-
-        try {
-            lspWrapper.setLspProcessing(IsisConstants.LSPREMOVED);
-            lspForProviderQueue.put(lspWrapper);
-        } catch (Exception e) {
-            log.debug("Added LSp In Blocking queue: {}", lspWrapper);
-        }
-    }
-
-    /**
-     * Removes topology information when neighbor down.
-     *
-     * @param neighbor      ISIS neighbor instance
-     * @param isisInterface ISIS interface instance
-     */
-    public void removeTopology(IsisNeighbor neighbor, IsisInterface isisInterface) {
-        String lspKey = neighbor.neighborSystemId() + ".00-00";
-        LspWrapper lspWrapper = null;
-        switch (IsisRouterType.get(isisInterface.reservedPacketCircuitType())) {
-            case L1:
-                lspWrapper = findLsp(IsisPduType.L1LSPDU, lspKey);
-                break;
-            case L2:
-                lspWrapper = findLsp(IsisPduType.L2LSPDU, lspKey);
-                break;
-            case L1L2:
-                lspWrapper = findLsp(IsisPduType.L1LSPDU, lspKey);
-                if (lspWrapper == null) {
-                    lspWrapper = findLsp(IsisPduType.L2LSPDU, lspKey);
-                }
-                break;
-            default:
-                log.debug("Unknown type");
-        }
-        try {
-            if (lspWrapper != null) {
-                lspWrapper.setLspProcessing(IsisConstants.LSPREMOVED);
-                lspForProviderQueue.put(lspWrapper);
-            }
-        } catch (Exception e) {
-            log.debug("Added LSp In Blocking queue: {}", lspWrapper);
-        }
-    }
-}
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbAge.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbAge.java
deleted file mode 100644
index 6ac3758..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbAge.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl.lsdb;
-
-import org.onosproject.isis.controller.IsisLsdbAge;
-import org.onosproject.isis.controller.IsisLspBin;
-import org.onosproject.isis.controller.LspWrapper;
-import org.onosproject.isis.io.isispacket.pdu.LsPdu;
-import org.onosproject.isis.io.util.IsisConstants;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Map;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Representation of ISIS link state database ageing process.
- */
-public class DefaultIsisLsdbAge implements IsisLsdbAge {
-    private static final Logger log = LoggerFactory.getLogger(DefaultIsisLsdbAge.class);
-    protected int ageCounter = 0;
-    private InternalAgeTimer dbAgeTimer;
-    private ScheduledExecutorService exServiceage;
-    private Integer maxBins = IsisConstants.LSPMAXAGE;
-    private Map<Integer, IsisLspBin> ageBins = new ConcurrentHashMap<>(maxBins);
-    private int ageCounterRollOver = 0;
-    private IsisLspQueueConsumer queueConsumer = null;
-    private BlockingQueue<LspWrapper> lsaQueue = new ArrayBlockingQueue<>(1024);
-    private boolean timerStarted = false;
-
-    /**
-     * Creates an instance of LSDB age.
-     */
-    public DefaultIsisLsdbAge() {
-        // create LSBin's in the HashMap.
-        for (int i = 0; i < maxBins; i++) {
-            IsisLspBin lspBin = new DefaultIsisLspBin(i);
-            ageBins.put(i, lspBin);
-        }
-    }
-
-    /**
-     * Returns age counter.
-     *
-     * @return age counter
-     */
-    public int ageCounter() {
-        return ageCounter;
-    }
-
-    /**
-     * Returns age counter roll over.
-     *
-     * @return age counter roll over
-     */
-    public int ageCounterRollOver() {
-
-        return ageCounterRollOver;
-    }
-
-    /**
-     * Adds LSP to LS bin for ageing.
-     *
-     * @param binNumber key to store in bin
-     * @param lspBin    LSP bin instance
-     */
-    public void addLspBin(int binNumber, IsisLspBin lspBin) {
-        if (!ageBins.containsKey(binNumber)) {
-            ageBins.put(binNumber, lspBin);
-        }
-    }
-
-    /**
-     * Returns LSP from Bin.
-     *
-     * @param binKey key
-     * @return bin instance
-     */
-    public IsisLspBin getLspBin(int binKey) {
-
-        return ageBins.get(binKey);
-    }
-
-    /**
-     * Removes LSP from Bin.
-     *
-     * @param lspWrapper wrapper instance
-     */
-    public void removeLspFromBin(LspWrapper lspWrapper) {
-        if (ageBins.containsKey(lspWrapper.binNumber())) {
-            IsisLspBin lsaBin = ageBins.get(lspWrapper.binNumber());
-            lsaBin.removeIsisLsp(((LsPdu) lspWrapper.lsPdu()).lspId(), lspWrapper);
-        }
-    }
-
-    /**
-     * Returns the bin number.
-     *
-     * @param age Can be either age or ageCounter
-     * @return bin number.
-     */
-    public int age2Bin(int age) {
-        if (age <= ageCounter) {
-            return (ageCounter - age);
-        } else {
-            return ((IsisConstants.LSPMAXAGE - 1) + (ageCounter - age));
-        }
-    }
-
-    /**
-     * Starts the aging timer and queue consumer.
-     */
-    public void startDbAging() {
-        if (!timerStarted) {
-            startDbAgeTimer();
-            queueConsumer = new IsisLspQueueConsumer(lsaQueue);
-            new Thread(queueConsumer).start();
-            timerStarted = true;
-        }
-    }
-
-    /**
-     * Starts DB aging task.
-     */
-    private void startDbAgeTimer() {
-        dbAgeTimer = new InternalAgeTimer();
-        //from 1 sec
-        exServiceage = Executors.newSingleThreadScheduledExecutor();
-        exServiceage.scheduleAtFixedRate(dbAgeTimer, 1, 1, TimeUnit.SECONDS);
-    }
-
-    /**
-     * Gets called every second as part of the aging process.
-     */
-    public void ageLsp() {
-        refreshLsa();
-        maxAgeLsa();
-
-        if (ageCounter == IsisConstants.LSPMAXAGE) {
-            ageCounter = 0;
-            ageCounterRollOver++;
-        } else {
-            ageCounter++;
-        }
-    }
-
-    /**
-     * If the LSP have completed the MaxAge - they are moved called stop aging.
-     */
-    public void maxAgeLsa() {
-        if (ageCounter == 0) {
-            return;
-        }
-        //Get from Age Bins
-        IsisLspBin lspBin = ageBins.get(ageCounter - 1);
-        if (lspBin == null) {
-            return;
-        }
-        Map lspBinMap = lspBin.listOfLsp();
-        for (Object key : lspBinMap.keySet()) {
-            LspWrapper lspWrapper = (LspWrapper) lspBinMap.get((String) key);
-            if (lspWrapper.currentAge() == IsisConstants.LSPMAXAGE) {
-                lspWrapper.setLspProcessing(IsisConstants.MAXAGELSP);
-                log.debug("Lsp picked for maxage removal. Age Counter: {}, AgeCounterRollover: {}, " +
-                                  "AgeCounterRollover WhenAddedToDb: {}, LSA Type: {}, LSA Key: {}",
-                          ageCounter, ageCounterRollOver, lspWrapper.currentAge(),
-                          lspWrapper.lsPdu().isisPduType(), key);
-                //add it to lspQueue for processing
-                try {
-                    lsaQueue.put(lspWrapper);
-                    //remove from bin
-                    lspBin.removeIsisLsp((String) key, lspWrapper);
-                } catch (InterruptedException e) {
-                    log.debug("Error::LSDBAge::maxAgeLsp::{}", e.getMessage());
-                }
-            }
-        }
-
-    }
-
-    /*
-     * If the LSP is in age bin of 900s- it's pushed into refresh list.
-     */
-    public void refreshLsa() {
-        int binNumber;
-        if (ageCounter < IsisConstants.LSPREFRESH) {
-            binNumber = ageCounter + IsisConstants.LSPREFRESH;
-        } else {
-            binNumber = ageCounter - IsisConstants.LSPREFRESH;
-        }
-        if (binNumber >= IsisConstants.LSPMAXAGE) {
-            binNumber = binNumber - IsisConstants.LSPMAXAGE;
-        }
-        IsisLspBin lspBin = ageBins.get(binNumber);
-        if (lspBin == null) {
-            return;
-        }
-        Map lspBinMap = lspBin.listOfLsp();
-        for (Object key : lspBinMap.keySet()) {
-            LspWrapper lsp = (LspWrapper) lspBinMap.get((String) key);
-            try {
-                if (lsp.isSelfOriginated()) {
-                    log.debug("Lsp picked for refreshLsp. binNumber: {}, LSA Type: {}, LSA Key: {}",
-                              binNumber, lsp.lspType(), key);
-                    lsp.setLspProcessing(IsisConstants.REFRESHLSP);
-                    lsaQueue.put(lsp);
-                    //remove from bin
-                    lspBin.removeIsisLsp((String) key, lsp);
-                }
-            } catch (InterruptedException e) {
-                log.debug("Error::LSDBAge::refreshLsp::{}", e.getMessage());
-            }
-        }
-    }
-
-    /**
-     * Runnable task which runs every second and calls aging process.
-     */
-    private class InternalAgeTimer implements Runnable {
-
-        /**
-         * Creates an instance of age timer task.
-         */
-        InternalAgeTimer() {
-            log.debug("Starts::IsisLsdbAge::AgeTimer...!!! ");
-        }
-
-        @Override
-        public void run() {
-            ageLsp();
-        }
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLspBin.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLspBin.java
deleted file mode 100644
index 605eb5f..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLspBin.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl.lsdb;
-
-import com.google.common.base.MoreObjects;
-import org.onosproject.isis.controller.IsisLspBin;
-import org.onosproject.isis.controller.LspWrapper;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Representation of LSP bin, where an LSP is stored for Aging.
- * A bin is identified by a bin number and can have one or more LSPs
- * store in a particular bin location
- */
-public class DefaultIsisLspBin implements IsisLspBin {
-    private int binNumber;
-    private Map<String, LspWrapper> listOfLsp = new ConcurrentHashMap<>();
-
-    /**
-     * Creates ISIS LSP bin instance.
-     *
-     * @param binNumber bin number
-     */
-    public DefaultIsisLspBin(int binNumber) {
-        this.binNumber = binNumber;
-    }
-
-    /**
-     * Adds the LSP to wrapper.
-     *
-     * @param lspKey     key to add the LSP
-     * @param lspWrapper LSP wrapper instance
-     */
-    public void addIsisLsp(String lspKey, LspWrapper lspWrapper) {
-        if (!listOfLsp.containsKey(lspKey)) {
-            listOfLsp.put(lspKey, lspWrapper);
-            lspWrapper.setBinNumber(this.binNumber);
-        }
-    }
-
-    /**
-     * Returns the LSP wrapper.
-     *
-     * @param lspKey LSP key
-     * @return LSP wrapper
-     */
-    public LspWrapper isisLsp(String lspKey) {
-        return listOfLsp.get(lspKey);
-    }
-
-    /**
-     * Removes ISIS LSP from database.
-     *
-     * @param lspKey     LSP key
-     * @param lspWrapper LSP wrapper instance
-     */
-    public void removeIsisLsp(String lspKey, LspWrapper lspWrapper) {
-        if (listOfLsp.containsKey(lspKey)) {
-            listOfLsp.remove(lspKey);
-        }
-    }
-
-    /**
-     * Returns all LSP wrappers.
-     *
-     * @return all LSP wrappers
-     */
-    public Map<String, LspWrapper> listOfLsp() {
-        return listOfLsp;
-    }
-
-    /**
-     * Returns the bin number.
-     *
-     * @return the bin number
-     */
-    public int binNumber() {
-        return binNumber;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("binNumber", binNumber)
-                .add("listOfLsp", listOfLsp)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultLspWrapper.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultLspWrapper.java
deleted file mode 100644
index 864b08e..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultLspWrapper.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl.lsdb;
-
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisLsdbAge;
-import org.onosproject.isis.controller.IsisPduType;
-import org.onosproject.isis.controller.LspWrapper;
-import org.onosproject.isis.io.isispacket.pdu.LsPdu;
-import org.onosproject.isis.io.util.IsisConstants;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Representation of LSP wrapper where the LSPs are stored with metadata.
- */
-public class DefaultLspWrapper implements LspWrapper {
-    private static final Logger log = LoggerFactory.getLogger(DefaultLspWrapper.class);
-    private int binNumber = -1;
-    private boolean selfOriginated = false;
-    private IsisPduType lspType;
-    private int lspAgeReceived;
-    private int ageCounterWhenReceived;
-    private LsPdu lsPdu;
-    private IsisLsdbAge lsdbAge;
-    private int ageCounterRollOverWhenAdded;
-    private int remainingLifetime;
-    private IsisInterface isisInterface;
-    private String lspProcessing;
-
-    /**
-     * Returns "refreshLsp" or "maxageLsp" based on LSP to process.
-     *
-     * @return LSP processing string
-     */
-    public String lspProcessing() {
-        return lspProcessing;
-    }
-
-    /**
-     * Sets LSP processing "refreshLsp" or "maxageLsp" based on LSP to process.
-     *
-     * @param lspProcessing "refreshLsp" or "maxageLsp" based on LSP to process
-     */
-    public void setLspProcessing(String lspProcessing) {
-        this.lspProcessing = lspProcessing;
-    }
-
-    /**
-     * Returns LSP age received.
-     *
-     * @return LSP age received
-     */
-    public int lspAgeReceived() {
-        return lspAgeReceived;
-    }
-
-    /**
-     * Sets LSP age received.
-     *
-     * @param lspAgeReceived LSP age received.
-     */
-    public void setLspAgeReceived(int lspAgeReceived) {
-        this.lspAgeReceived = lspAgeReceived;
-    }
-
-    /**
-     * Returns ISIS interface instance.
-     *
-     * @return ISIS interface instance
-     */
-    public IsisInterface isisInterface() {
-        return isisInterface;
-    }
-
-    /**
-     * Sets ISIS interface.
-     *
-     * @param isisInterface ISIS interface instance
-     */
-    public void setIsisInterface(IsisInterface isisInterface) {
-        this.isisInterface = isisInterface;
-    }
-
-    /**
-     * Returns age counter when received.
-     *
-     * @return age counter when received
-     */
-    public int ageCounterWhenReceived() {
-
-        return ageCounterWhenReceived;
-    }
-
-    /**
-     * Sets age counter when received.
-     *
-     * @param ageCounterWhenReceived age counter when received
-     */
-    public void setAgeCounterWhenReceived(int ageCounterWhenReceived) {
-        this.ageCounterWhenReceived = ageCounterWhenReceived;
-    }
-
-    /**
-     * Returns age counter roll over.
-     *
-     * @return age counter roll over
-     */
-    public int ageCounterRollOverWhenAdded() {
-        return ageCounterRollOverWhenAdded;
-    }
-
-    /**
-     * Sets age counter roll over when added.
-     *
-     * @param ageCounterRollOverWhenAdded age counter roll over when added
-     */
-    public void setAgeCounterRollOverWhenAdded(int ageCounterRollOverWhenAdded) {
-        this.ageCounterRollOverWhenAdded = ageCounterRollOverWhenAdded;
-    }
-
-    /**
-     * Returns bin number.
-     *
-     * @return bin number
-     */
-    public int binNumber() {
-        return binNumber;
-    }
-
-    /**
-     * Sets bin number.
-     *
-     * @param binNumber bin number
-     */
-    public void setBinNumber(int binNumber) {
-        this.binNumber = binNumber;
-    }
-
-    /**
-     * Returns true if self originated.
-     *
-     * @return true if self originated.
-     */
-    public boolean isSelfOriginated() {
-        return selfOriginated;
-    }
-
-    /**
-     * Sets true if self originated.
-     *
-     * @param selfOriginated true if self originated else false
-     */
-    public void setSelfOriginated(boolean selfOriginated) {
-        this.selfOriginated = selfOriginated;
-    }
-
-    /**
-     * Returns ISIS PDU type.
-     *
-     * @return ISIS PDU type
-     */
-    public IsisPduType lspType() {
-        return lspType;
-    }
-
-    /**
-     * Sets ISIS PDU type.
-     *
-     * @param lspType ISIS PDU type
-     */
-    public void setLspType(IsisPduType lspType) {
-        this.lspType = lspType;
-    }
-
-    /**
-     * Returns LSPDU which the wrapper contains.
-     *
-     * @return LSPDU which the wrapper contains
-     */
-    public LsPdu lsPdu() {
-        return lsPdu;
-    }
-
-    /**
-     * Sets LSPDU which the wrapper contains.
-     *
-     * @param lsPdu LSPDU which the wrapper contains
-     */
-    public void setLsPdu(LsPdu lsPdu) {
-        this.lsPdu = lsPdu;
-    }
-
-    /**
-     * Returns ISIS LSDB age.
-     *
-     * @return ISIS LSDB age
-     */
-    public IsisLsdbAge lsdbAge() {
-        return lsdbAge;
-    }
-
-    /**
-     * Sets LSDB age.
-     *
-     * @param lsdbAge LSDB age
-     */
-    public void setLsdbAge(IsisLsdbAge lsdbAge) {
-        this.lsdbAge = lsdbAge;
-    }
-
-    /**
-     * Returns the current LSP Age.
-     *
-     * @return LSP age
-     */
-    public int currentAge() {
-
-        int currentAge = 0;
-        //ls age received
-        if (lsdbAge.ageCounter() >= ageCounterWhenReceived) {
-            if (!selfOriginated) {
-                if (ageCounterRollOverWhenAdded == lsdbAge.ageCounterRollOver()) {
-            currentAge = lspAgeReceived + (lsdbAge.ageCounter() - ageCounterWhenReceived);
-                } else {
-                    return IsisConstants.LSPMAXAGE;
-                }
-            } else {
-                currentAge = lspAgeReceived + (lsdbAge.ageCounter() - ageCounterWhenReceived);
-            }
-        } else {
-            currentAge = lspAgeReceived + ((IsisConstants.LSPMAXAGE + lsdbAge.ageCounter())
-                    - ageCounterWhenReceived);
-        }
-
-        if (currentAge >= IsisConstants.LSPMAXAGE) {
-            return IsisConstants.LSPMAXAGE;
-        } else if ((currentAge == lspAgeReceived) && ageCounterRollOverWhenAdded
-                != lsdbAge.ageCounterRollOver()) {
-            return IsisConstants.LSPMAXAGE;
-        }
-
-        return currentAge;
-    }
-
-
-
-    /**
-     * Returns remaining time.
-     *
-     * @return remaining time
-     */
-    public int remainingLifetime() {
-        //Calculate the remaining lifetime
-        remainingLifetime = IsisConstants.LSPMAXAGE - currentAge();
-        return remainingLifetime;
-    }
-
-    /**
-     * Sets remaining life time.
-     *
-     * @param remainingLifetime LSPs remaining life time
-     */
-    public void setRemainingLifetime(int remainingLifetime) {
-        this.remainingLifetime = remainingLifetime;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/IsisLspQueueConsumer.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/IsisLspQueueConsumer.java
deleted file mode 100644
index ddee647..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/IsisLspQueueConsumer.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl.lsdb;
-
-import org.jboss.netty.channel.Channel;
-import org.onosproject.isis.controller.IsisLsdb;
-import org.onosproject.isis.controller.IsisPduType;
-import org.onosproject.isis.controller.LspWrapper;
-import org.onosproject.isis.controller.impl.DefaultIsisInterface;
-import org.onosproject.isis.io.isispacket.pdu.LsPdu;
-import org.onosproject.isis.io.util.IsisConstants;
-import org.onosproject.isis.io.util.IsisUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.concurrent.BlockingQueue;
-
-/**
- * Representation of LSP queue consumer.
- */
-public class IsisLspQueueConsumer implements Runnable {
-    private static final Logger log = LoggerFactory.getLogger(IsisLspQueueConsumer.class);
-    private BlockingQueue queue = null;
-
-    /**
-     * Creates an instance of LSP queue consumer.
-     *
-     * @param queue queue instance
-     */
-    public IsisLspQueueConsumer(BlockingQueue queue) {
-        this.queue = queue;
-    }
-
-    /**
-     * Gets the LSP wrapper instance from queue and process it.
-     */
-    @Override
-    public void run() {
-        log.debug("LSPQueueConsumer:run...!!!");
-        try {
-            while (true) {
-                if (!queue.isEmpty()) {
-                    LspWrapper wrapper = (LspWrapper) queue.take();
-                    String lspProcessing = wrapper.lspProcessing();
-                    switch (lspProcessing) {
-                        case IsisConstants.REFRESHLSP:
-                            log.debug("LSPQueueConsumer: Message - " + IsisConstants.REFRESHLSP +
-                                    " consumed.");
-                            processRefreshLsp(wrapper);
-                            break;
-                        case IsisConstants.MAXAGELSP:
-                            log.debug("LSPQueueConsumer: Message - " + IsisConstants.MAXAGELSP +
-                                    " consumed.");
-                            processMaxAgeLsa(wrapper);
-                            break;
-                        default:
-                            log.debug("Unknown command to process the LSP in queue ...!!!");
-                            break;
-                    }
-                }
-            }
-        } catch (Exception e) {
-            log.debug("Error::LSPQueueConsumer::{}", e.getMessage());
-        }
-    }
-
-    /**
-     * Process refresh LSP.
-     *
-     * @param wrapper LSP wrapper instance
-     */
-    private void processRefreshLsp(LspWrapper wrapper) {
-        if (wrapper.isSelfOriginated()) { //self originated
-            DefaultIsisInterface isisInterface = (DefaultIsisInterface) wrapper.isisInterface();
-            Channel channel = isisInterface.channel();
-            if (channel != null && channel.isConnected()) {
-                LsPdu lsPdu = (LsPdu) wrapper.lsPdu();
-                lsPdu.setSequenceNumber(isisInterface.isisLsdb().lsSequenceNumber(
-                        IsisPduType.get(lsPdu.pduType())));
-                lsPdu.setRemainingLifeTime(IsisConstants.LSPMAXAGE);
-                byte[] lspBytes = lsPdu.asBytes();
-                lspBytes = IsisUtil.addLengthAndMarkItInReserved(lspBytes, IsisConstants.LENGTHPOSITION,
-                        IsisConstants.LENGTHPOSITION + 1,
-                        IsisConstants.RESERVEDPOSITION);
-                lspBytes = IsisUtil.addChecksum(lspBytes, IsisConstants.CHECKSUMPOSITION,
-                        IsisConstants.CHECKSUMPOSITION + 1);
-                //write to the channel
-                channel.write(IsisUtil.framePacket(lspBytes, isisInterface.interfaceIndex()));
-                // Updating the database with resetting remaining life time to default.
-                IsisLsdb isisDb = isisInterface.isisLsdb();
-                isisDb.addLsp(lsPdu, true, isisInterface);
-                log.debug("LSPQueueConsumer: processRefreshLsp - Flooded SelfOriginated LSP {}",
-                        wrapper.lsPdu());
-            }
-        }
-    }
-
-    /**
-     * Process max age LSP.
-     *
-     * @param wrapper LSP wrapper instance
-     */
-    private void processMaxAgeLsa(LspWrapper wrapper) {
-        //set the destination
-        DefaultIsisInterface isisInterface = (DefaultIsisInterface) wrapper.isisInterface();
-        if (isisInterface != null) {
-            //delete from db
-            LsPdu lsPdu = (LsPdu) wrapper.lsPdu();
-            IsisLsdb isisDb = isisInterface.isisLsdb();
-            isisDb.deleteLsp(lsPdu);
-            log.debug("LSPQueueConsumer: processMaxAgeLsp - Removed-Max Age LSP {}",
-                    wrapper.lsPdu());
-        }
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/package-info.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/package-info.java
deleted file mode 100644
index 5fe5451..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the ISIS controller LSDB and related functionality.
- */
-package org.onosproject.isis.controller.impl.lsdb;
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/package-info.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/package-info.java
deleted file mode 100644
index 1dc02f0..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the ISIS controller.
- */
-package org.onosproject.isis.controller.impl;
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLink.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLink.java
deleted file mode 100644
index 9c1e1c4..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLink.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl.topology;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.isis.controller.topology.IsisLink;
-import org.onosproject.isis.controller.topology.IsisLinkTed;
-
-/**
- * Representation of an ISIS Link.
- */
-public class DefaultIsisLink implements IsisLink {
-
-    private String remoteSystemId;
-    private String localSystemId;
-    private Ip4Address interfaceIp;
-    private Ip4Address neighborIp;
-    private IsisLinkTed linkTed;
-
-    @Override
-    public String remoteSystemId() {
-        return this.remoteSystemId;
-    }
-
-    @Override
-    public String localSystemId() {
-        return this.localSystemId;
-    }
-
-    @Override
-    public Ip4Address interfaceIp() {
-        return this.interfaceIp;
-    }
-
-    @Override
-    public Ip4Address neighborIp() {
-        return this.neighborIp;
-    }
-
-    @Override
-    public IsisLinkTed linkTed() {
-        return this.linkTed;
-    }
-
-    @Override
-    public void setRemoteSystemId(String remoteSystemId) {
-        this.remoteSystemId = remoteSystemId;
-    }
-
-    @Override
-    public void setLocalSystemId(String localSystemId) {
-        this.localSystemId = localSystemId;
-    }
-
-    @Override
-    public void setInterfaceIp(Ip4Address interfaceIp) {
-        this.interfaceIp = interfaceIp;
-    }
-
-    @Override
-    public void setNeighborIp(Ip4Address neighborIp) {
-        this.neighborIp = neighborIp;
-    }
-
-    @Override
-    public void setLinkTed(IsisLinkTed linkTed) {
-        this.linkTed = linkTed;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("remoteSystemId", remoteSystemId)
-                .add("localSystemId", localSystemId)
-                .add("interfaceIp", interfaceIp)
-                .add("neighborIp", neighborIp)
-                .add("linkTed", linkTed)
-                .toString();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        DefaultIsisLink that = (DefaultIsisLink) o;
-        return Objects.equal(remoteSystemId, that.remoteSystemId) &&
-                Objects.equal(localSystemId, that.localSystemId) &&
-                Objects.equal(interfaceIp, that.interfaceIp) &&
-                Objects.equal(neighborIp, that.neighborIp) &&
-                Objects.equal(linkTed, that.linkTed);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(remoteSystemId, localSystemId, interfaceIp, neighborIp, linkTed);
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLinkInformation.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLinkInformation.java
deleted file mode 100644
index 815257c..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLinkInformation.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl.topology;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.isis.controller.topology.LinkInformation;
-
-/**
- * Representation of an ISIS link information..
- */
-public class DefaultIsisLinkInformation implements LinkInformation {
-
-    String linkId;
-    String linkSourceId;
-    String linkDestinationId;
-    Ip4Address interfaceIp;
-    Ip4Address neighborIp;
-    boolean alreadyCreated;
-
-    /**
-     * Gets link id.
-     *
-     * @return link id
-     */
-    public String linkId() {
-        return linkId;
-    }
-
-    /**
-     * Sets link id.DefaultIsisDeviceInformation.
-     *
-     * @param linkId link id
-     */
-    public void setLinkId(String linkId) {
-        this.linkId = linkId;
-    }
-
-    /**
-     * Gets is already created or not.
-     *
-     * @return true if already created else false
-     */
-    public boolean isAlreadyCreated() {
-        return alreadyCreated;
-    }
-
-    /**
-     * Sets is already created or not.
-     *
-     * @param alreadyCreated true or false
-     */
-    public void setAlreadyCreated(boolean alreadyCreated) {
-        this.alreadyCreated = alreadyCreated;
-    }
-
-    /**
-     * Gets link destination id.
-     *
-     * @return link destination id
-     */
-    public String linkDestinationId() {
-        return linkDestinationId;
-    }
-
-    /**
-     * Sets link destination id.
-     *
-     * @param linkDestinationId link destination id
-     */
-    public void setLinkDestinationId(String linkDestinationId) {
-        this.linkDestinationId = linkDestinationId;
-    }
-
-    /**
-     * Gets link source id.
-     *
-     * @return link source id
-     */
-    public String linkSourceId() {
-        return linkSourceId;
-    }
-
-    /**
-     * Sets link source id.
-     *
-     * @param linkSourceId link source id
-     */
-    public void setLinkSourceId(String linkSourceId) {
-        this.linkSourceId = linkSourceId;
-    }
-
-    /**
-     * Gets interface IP address.
-     *
-     * @return interface IP address
-     */
-    public Ip4Address interfaceIp() {
-        return interfaceIp;
-    }
-
-    /**
-     * Sets interface IP address.
-     *
-     * @param interfaceIp interface IP address
-     */
-    public void setInterfaceIp(Ip4Address interfaceIp) {
-        this.interfaceIp = interfaceIp;
-    }
-
-    @Override
-    public Ip4Address neighborIp() {
-        return this.neighborIp;
-    }
-
-    @Override
-    public void setNeighborIp(Ip4Address neighborIp) {
-        this.neighborIp = neighborIp;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("linkId", linkId)
-                .add("linkSourceId", linkSourceId)
-                .add("linkDestinationId", linkDestinationId)
-                .add("interfaceIp", interfaceIp)
-                .toString();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        DefaultIsisLinkInformation that = (DefaultIsisLinkInformation) o;
-        return Objects.equal(linkId, that.linkId) &&
-                Objects.equal(linkSourceId, that.linkSourceId) &&
-                Objects.equal(linkDestinationId, that.linkDestinationId) &&
-                Objects.equal(interfaceIp, that.interfaceIp);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(linkId, linkSourceId, linkDestinationId,
-                interfaceIp);
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLinkTed.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLinkTed.java
deleted file mode 100644
index a7fcfa6..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLinkTed.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl.topology;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.onlab.packet.Ip4Address;
-import org.onlab.util.Bandwidth;
-import org.onosproject.isis.controller.topology.IsisLinkTed;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of an ISIS device information.
- */
-public class DefaultIsisLinkTed implements IsisLinkTed {
-    private int administrativeGroup;
-    private Ip4Address ipv4InterfaceAddress;
-    private Ip4Address ipv4NeighborAddress;
-    private Bandwidth maximumLinkBandwidth;
-    private Bandwidth maximumReservableLinkBandwidth;
-    private List<Bandwidth> unreservedBandwidth = new ArrayList<>();
-    private long teDefaultMetric;
-
-    @Override
-    public int administrativeGroup() {
-        return administrativeGroup;
-    }
-
-    @Override
-    public void setAdministrativeGroup(int administrativeGroup) {
-        this.administrativeGroup = administrativeGroup;
-    }
-
-    @Override
-    public Ip4Address ipv4InterfaceAddress() {
-        return ipv4InterfaceAddress;
-    }
-
-    @Override
-    public void setIpv4InterfaceAddress(Ip4Address interfaceAddress) {
-        this.ipv4InterfaceAddress = interfaceAddress;
-    }
-
-    @Override
-    public Ip4Address ipv4NeighborAddress() {
-        return ipv4NeighborAddress;
-    }
-
-    @Override
-    public void setIpv4NeighborAddress(Ip4Address neighborAddress) {
-        this.ipv4NeighborAddress = neighborAddress;
-    }
-
-    @Override
-    public Bandwidth maximumLinkBandwidth() {
-        return maximumLinkBandwidth;
-    }
-
-    @Override
-    public void setMaximumLinkBandwidth(Bandwidth bandwidth) {
-        this.maximumLinkBandwidth = bandwidth;
-    }
-
-    @Override
-    public Bandwidth maximumReservableLinkBandwidth() {
-        return maximumReservableLinkBandwidth;
-    }
-
-    @Override
-    public void setMaximumReservableLinkBandwidth(Bandwidth bandwidth) {
-        this.maximumReservableLinkBandwidth = bandwidth;
-    }
-
-    @Override
-    public List<Bandwidth> unreservedBandwidth() {
-        return this.unreservedBandwidth;
-    }
-
-    @Override
-    public void setUnreservedBandwidth(List<Bandwidth> bandwidth) {
-        this.unreservedBandwidth.addAll(bandwidth);
-    }
-
-    @Override
-    public long teDefaultMetric() {
-        return teDefaultMetric;
-    }
-
-    @Override
-    public void setTeDefaultMetric(long teMetric) {
-        this.teDefaultMetric = teMetric;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("administrativeGroup", administrativeGroup)
-                .add("ipv4InterfaceAddress", ipv4InterfaceAddress)
-                .add("ipv4NeighborAddress", ipv4NeighborAddress)
-                .add("maximumLinkBandwidth", maximumLinkBandwidth)
-                .add("maximumReservableLinkBandwidth", maximumReservableLinkBandwidth)
-                .add("teDefaultMetric", teDefaultMetric)
-                .toString();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        DefaultIsisLinkTed that = (DefaultIsisLinkTed) o;
-        return Objects.equal(administrativeGroup, that.administrativeGroup) &&
-                Objects.equal(ipv4InterfaceAddress, that.ipv4InterfaceAddress) &&
-                Objects.equal(ipv4NeighborAddress, that.ipv4NeighborAddress) &&
-                Objects.equal(maximumLinkBandwidth, that.maximumLinkBandwidth) &&
-                Objects.equal(maximumReservableLinkBandwidth,
-                              that.maximumReservableLinkBandwidth) &&
-                Objects.equal(teDefaultMetric, that.teDefaultMetric);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(administrativeGroup, ipv4InterfaceAddress,
-                                ipv4NeighborAddress, maximumLinkBandwidth, teDefaultMetric);
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisRouter.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisRouter.java
deleted file mode 100644
index ec7b5c2..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisRouter.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl.topology;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.isis.controller.topology.IsisRouter;
-
-/**
- * Representation of an ISIS Router.
- */
-public class DefaultIsisRouter implements IsisRouter {
-
-    private String systemId;
-    private Ip4Address neighborRouterId;
-    private Ip4Address interfaceId;
-    private boolean isDis;
-
-    /**
-     * Gets the system ID.
-     *
-     * @return systemId system ID
-     */
-    public String systemId() {
-        return systemId;
-    }
-
-    /**
-     * Sets IP address of the Router.
-     *
-     * @param systemId system identifier of the router
-     */
-    public void setSystemId(String systemId) {
-        this.systemId = systemId;
-    }
-
-    /**
-     * Gets IP address of the interface.
-     *
-     * @return IP address of the interface
-     */
-    public Ip4Address interfaceId() {
-        return interfaceId;
-    }
-
-    /**
-     * Gets IP address of the interface.
-     *
-     * @param interfaceId IP address of the interface
-     */
-    public void setInterfaceId(Ip4Address interfaceId) {
-        this.interfaceId = interfaceId;
-    }
-
-    /**
-     * Gets neighbor's Router id.
-     *
-     * @return neighbor's Router id
-     */
-    public Ip4Address neighborRouterId() {
-        return neighborRouterId;
-    }
-
-    /**
-     * Sets neighbor's Router id.
-     *
-     * @param advertisingRouterId neighbor's Router id
-     */
-    public void setNeighborRouterId(Ip4Address advertisingRouterId) {
-        this.neighborRouterId = advertisingRouterId;
-    }
-
-    /**
-     * Gets if DR or not.
-     *
-     * @return true if DR else false
-     */
-    public boolean isDis() {
-        return isDis;
-    }
-
-    /**
-     * Sets dis or not.
-     *
-     * @param dis true if DIS else false
-     */
-    public void setDis(boolean dis) {
-        isDis = dis;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("systemId", systemId)
-                .add("neighborRouterId", neighborRouterId)
-                .add("interfaceId", interfaceId)
-                .toString();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        DefaultIsisRouter that = (DefaultIsisRouter) o;
-        return Objects.equal(systemId, that.systemId) &&
-                Objects.equal(neighborRouterId, that.neighborRouterId) &&
-                Objects.equal(interfaceId, that.interfaceId);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(systemId, neighborRouterId, interfaceId);
-    }
-}
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/TopologyForDeviceAndLinkImpl.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/TopologyForDeviceAndLinkImpl.java
deleted file mode 100644
index 3c52308..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/TopologyForDeviceAndLinkImpl.java
+++ /dev/null
@@ -1,491 +0,0 @@
-/*
-* Copyright 2016-present Open Networking Foundation
-*
-* 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.isis.controller.impl.topology;
-
-import org.onlab.util.Bandwidth;
-import org.onosproject.isis.controller.topology.DeviceInformation;
-import org.onosproject.isis.controller.topology.IsisRouter;
-import org.onosproject.isis.controller.topology.LinkInformation;
-import org.onosproject.isis.controller.topology.TopologyForDeviceAndLink;
-import org.onosproject.isis.controller.topology.IsisLinkTed;
-import org.onosproject.isis.io.isispacket.pdu.LsPdu;
-import org.onosproject.isis.io.isispacket.tlv.IsExtendedReachability;
-import org.onosproject.isis.io.isispacket.tlv.IsisTlv;
-import org.onosproject.isis.io.isispacket.tlv.NeighborForExtendedIs;
-
-import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringSubTlv;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.InterfaceIpAddress;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.NeighborIpAddress;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.AdministrativeGroup;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringMetric;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.UnreservedBandwidth;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.MaximumReservableBandwidth;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.MaximumBandwidth;
-import org.onosproject.isis.io.util.IsisConstants;
-import org.onosproject.isis.io.util.IsisUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Represents device and link topology information.
- */
-public class TopologyForDeviceAndLinkImpl implements TopologyForDeviceAndLink {
-
-    private static final Logger log = LoggerFactory.getLogger(TopologyForDeviceAndLinkImpl.class);
-    private Map<String, DeviceInformation> deviceInformationMap = new LinkedHashMap<>();
-    private Map<String, IsisRouter> isisRouterDetails = new LinkedHashMap<>();
-    private Map<String, DeviceInformation> deviceInformationMapForPointToPoint = new LinkedHashMap<>();
-    private Map<String, DeviceInformation> deviceInformationMapToDelete = new LinkedHashMap<>();
-    private Map<String, LinkInformation> addedLinkInformationMap = new LinkedHashMap<>();
-
-    /**
-     * Gets device information.
-     *
-     * @return device information
-     */
-    public Map<String, DeviceInformation> deviceInformationMap() {
-        return deviceInformationMap;
-    }
-
-    /**
-     * Gets ISIS router list information.
-     *
-     * @return router information
-     */
-    public Map<String, IsisRouter> isisDeviceList() {
-        return isisRouterDetails;
-    }
-
-    /**
-     * Sets device information.
-     *
-     * @param key                  key used to add in map
-     * @param deviceInformationMap device information instance
-     */
-    public void setDeviceInformationMap(String key, DeviceInformation deviceInformationMap) {
-        if (deviceInformationMap != null) {
-            this.deviceInformationMap.put(key, deviceInformationMap);
-        }
-
-    }
-
-    /**
-     * Gets deviceInformation as map for Point-To-Point.
-     *
-     * @return deviceInformationMap
-     */
-    public Map<String, DeviceInformation> deviceInformationMapForPointToPoint() {
-        return deviceInformationMapForPointToPoint;
-    }
-
-    /**
-     * Sets deviceInformation as map for Point-To-Point..
-     *
-     * @param key                  key used to add in map
-     * @param deviceInformationMap device information instance
-     */
-    public void setDeviceInformationMapForPointToPoint(String key, DeviceInformation deviceInformationMap) {
-        if (deviceInformationMap != null) {
-            this.deviceInformationMapForPointToPoint.put(key, deviceInformationMap);
-        }
-
-    }
-
-    /**
-     * Gets deviceInformation as map.
-     *
-     * @return deviceInformationMap to delete from core
-     */
-    public Map<String, DeviceInformation> deviceInformationMapToDelete() {
-        return deviceInformationMapToDelete;
-    }
-
-    /**
-     * Sets device information for removal.
-     *
-     * @param key                          ket used to add in map
-     * @param deviceInformationMapToDelete map from device information to remove
-     */
-    public void setDeviceInformationMapToDelete(String key, DeviceInformation deviceInformationMapToDelete) {
-        if (deviceInformationMapToDelete != null) {
-            this.deviceInformationMapToDelete.put(key, deviceInformationMapToDelete);
-        }
-    }
-
-    /**
-     * Removes Device Information.
-     *
-     * @param key ket used to remove from map
-     */
-    public void removeDeviceInformationMapFromDeleteMap(String key) {
-        removeDeviceInformationMap(key);
-        if (this.deviceInformationMapToDelete.containsKey(key)) {
-            this.deviceInformationMapToDelete.remove(key);
-        }
-    }
-
-    /**
-     * Gets Device Information.
-     *
-     * @param key system id as key to store in map
-     * @return Device Information
-     */
-    public DeviceInformation deviceInformation(String key) {
-        DeviceInformation deviceInformation = this.deviceInformationMap.get(key);
-        return deviceInformation;
-    }
-
-    /**
-     * Removes Device Information from map.
-     *
-     * @param key key used to remove from map
-     */
-    public void removeDeviceInformationMap(String key) {
-        if (this.deviceInformationMap.containsKey(key)) {
-            this.deviceInformationMap.remove(key);
-        }
-    }
-
-    @Override
-    public void removeLinks(String linkId) {
-        this.addedLinkInformationMap.remove(linkId);
-    }
-
-    /**
-     * Gets link information as map.
-     *
-     * @return link information as map
-     */
-    public Map<String, LinkInformation> linkInformationMap() {
-        return addedLinkInformationMap;
-    }
-
-    private LinkInformation getLinkInformation(String key) {
-        LinkInformation linkInformation = this.addedLinkInformationMap.get(key);
-        return linkInformation;
-    }
-
-    /**
-     * Sets link information in map.
-     *
-     * @param key                key used to add in map
-     * @param linkInformationMap link information instance
-     */
-    public void setLinkInformationMap(String key, LinkInformation linkInformationMap) {
-        if (!this.addedLinkInformationMap.containsKey(key)) {
-            this.addedLinkInformationMap.put(key, linkInformationMap);
-        }
-    }
-
-    /**
-     * Gets linkInformation as map for PointToPoint.
-     *
-     * @return linkInformationMap
-     */
-    public Map<String, LinkInformation> linkInformationMapForPointToPoint() {
-        return addedLinkInformationMap;
-    }
-
-    /**
-     * Sets linkInformation as map for PointToPoint.
-     *
-     * @param key                key used to add in map
-     * @param linkInformationMap link information instance
-     */
-    public void setLinkInformationMapForPointToPoint(String key, LinkInformation linkInformationMap) {
-        if (!this.addedLinkInformationMap.containsKey(key)) {
-            this.addedLinkInformationMap.put(key, linkInformationMap);
-        }
-    }
-
-    /**
-     * Removes Link Information from linkInformationMap.
-     *
-     * @param key key used to remove in map
-     */
-    public void removeLinkInformationMap(String key) {
-        if (this.addedLinkInformationMap.containsKey(key)) {
-            this.addedLinkInformationMap.remove(key);
-        }
-    }
-
-    /**
-     * Returns the ISIS router instance.
-     *
-     * @param systemId system ID to get router details
-     * @return ISIS router instance
-     */
-    public IsisRouter isisRouter(String systemId) {
-        String routerId = IsisUtil.removeTailingZeros(systemId);
-        IsisRouter isisRouter = isisRouterDetails.get(routerId);
-        if (isisRouter != null) {
-            return isisRouter;
-        } else {
-            log.debug("IsisRouter is not available");
-            IsisRouter isisRouterCheck = new DefaultIsisRouter();
-            isisRouterCheck.setSystemId(routerId);
-            return isisRouterCheck;
-        }
-    }
-
-    /**
-     * Removes the ISIS router instance from map.
-     *
-     * @param systemId system ID to remove router details
-     */
-    public void removeRouter(String systemId) {
-        String routerId = IsisUtil.removeTailingZeros(systemId);
-        isisRouterDetails.remove(systemId);
-    }
-
-    /**
-     * Creates Device instance.
-     *
-     * @param lsPdu ISIS LSPDU instance
-     * @return isisRouter isisRouter instance
-     */
-    public IsisRouter createDeviceInfo(LsPdu lsPdu) {
-        IsisRouter isisRouter = createIsisRouter(lsPdu);
-
-        if (isisRouter.systemId() != null) {
-            if (isisRouter.interfaceId() == null && isisRouter.neighborRouterId() == null) {
-                isisRouter.setInterfaceId(IsisConstants.DEFAULTIP);
-                isisRouter.setNeighborRouterId(IsisConstants.DEFAULTIP);
-                isisRouterDetails.put(isisRouter.systemId(), isisRouter);
-            }
-        }
-        return isisRouter;
-    }
-
-    /**
-     * Removes Device and Link instance.
-     *
-     * @param lsPdu ISIS LSPDU instance
-     * @return isisRouter isisRouter instance
-     */
-    /*
-    public IsisRouter removeDeviceAndLinkInfo(LsPdu lsPdu) {
-        IsisRouter isisRouter = createIsisRouter(lsPdu);
-        return isisRouter;
-    }*/
-
-    /**
-     * Creates link information.
-     *
-     * @param lsPdu       ls pdu instance
-     * @param ownSystemId system ID
-     * @return link information
-     */
-    public Map<String, LinkInformation> createLinkInfo(LsPdu lsPdu, String ownSystemId) {
-        for (IsisTlv isisTlv : lsPdu.tlvs()) {
-            if (isisTlv instanceof IsExtendedReachability) {
-                IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv;
-                List<NeighborForExtendedIs> neighborForExtendedIsList = isExtendedReachability.neighbours();
-                for (NeighborForExtendedIs neighbor : neighborForExtendedIsList) {
-                    String neighbourId = neighbor.neighborId();
-                    String routerId = IsisUtil.removeTailingZeros(lsPdu.lspId());
-                    if (!(neighbourId.equals(ownSystemId))) {
-                        IsisRouter isisRouter = isisRouterDetails.get(neighbourId);
-                        if (isisRouter != null) {
-                            String linkId = "link:" + routerId + "-" + neighbourId;
-                            addedLinkInformationMap.put(linkId, createLinkInformation(lsPdu, linkId,
-                                    routerId, neighbourId));
-                        } else {
-                            createIsisRouterDummy(neighbourId);
-                            String linkId = "link:" + routerId + "-" + neighbourId;
-                            LinkInformation linkInformation = createLinkInformation(lsPdu, linkId,
-                                    routerId, neighbourId);
-                            linkInformation.setAlreadyCreated(true);
-                            addedLinkInformationMap.put(linkId, linkInformation);
-                        }
-                    }
-
-                }
-            }
-        }
-        return addedLinkInformationMap;
-    }
-
-    /**
-     * Removes link information.
-     *
-     * @param systemId system ID to remove link information
-     * @return updated link information
-     */
-    public Map<String, LinkInformation> removeLinkInfo(String systemId) {
-        String routerId = IsisUtil.removeTailingZeros(systemId);
-        Map<String, LinkInformation> removeLinkInformationMap = new LinkedHashMap<>();
-        for (String key : addedLinkInformationMap.keySet()) {
-            if (key.contains(routerId)) {
-                removeLinkInformationMap.put(key, addedLinkInformationMap.get(key));
-            }
-        }
-        return removeLinkInformationMap;
-    }
-
-    /**
-     * Creates link information.
-     *
-     * @param lsPdu       link state pdu
-     * @param linkId      link id
-     * @param localRouter local router system id
-     * @param neighborId  destination router system id
-     * @return linkInformation instance
-     */
-    private LinkInformation createLinkInformation(LsPdu lsPdu, String linkId, String localRouter, String neighborId) {
-        LinkInformation linkInformation = new DefaultIsisLinkInformation();
-        IsisRouter isisRouter = isisRouterDetails.get(neighborId);
-        for (IsisTlv isisTlv : lsPdu.tlvs()) {
-            if (isisTlv instanceof IsExtendedReachability) {
-                IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv;
-                List<NeighborForExtendedIs> neighbours = isExtendedReachability.neighbours();
-                for (NeighborForExtendedIs teTlv : neighbours) {
-                    List<TrafficEngineeringSubTlv> teSubTlvs = teTlv.teSubTlv();
-                    for (TrafficEngineeringSubTlv teSubTlv : teSubTlvs) {
-                        if (teSubTlv instanceof InterfaceIpAddress) {
-                            InterfaceIpAddress localIpAddress = (InterfaceIpAddress) teSubTlv;
-                            linkInformation.setInterfaceIp(localIpAddress.localInterfaceIPAddress());
-                        } else if (teSubTlv instanceof NeighborIpAddress) {
-                            NeighborIpAddress neighborIpAddress = (NeighborIpAddress) teSubTlv;
-                            linkInformation.setNeighborIp(neighborIpAddress.neighborIPAddress());
-                        }
-
-                    }
-                }
-            }
-        }
-        linkInformation.setLinkId(linkId);
-        linkInformation.setAlreadyCreated(false);
-        linkInformation.setLinkDestinationId(neighborId);
-        linkInformation.setLinkSourceId(localRouter);
-        return linkInformation;
-    }
-
-    /**
-     * Creates ISIS router instance.
-     *
-     * @param lsPdu lsp instance
-     * @return isisRouter instance
-     */
-    private IsisRouter createIsisRouter(LsPdu lsPdu) {
-        IsisRouter isisRouter = new DefaultIsisRouter();
-        if (IsisUtil.checkIsDis(lsPdu.lspId())) {
-            isisRouter.setDis(true);
-        } else {
-            isisRouter.setDis(false);
-        }
-        isisRouter.setSystemId(IsisUtil.removeTailingZeros(lsPdu.lspId()));
-        for (IsisTlv isisTlv : lsPdu.tlvs()) {
-            if (isisTlv instanceof IsExtendedReachability) {
-                IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv;
-                List<NeighborForExtendedIs> neighbours = isExtendedReachability.neighbours();
-                for (NeighborForExtendedIs teTlv : neighbours) {
-                    List<TrafficEngineeringSubTlv> teSubTlvs = teTlv.teSubTlv();
-                    for (TrafficEngineeringSubTlv teSubTlv : teSubTlvs) {
-                        if (teSubTlv instanceof InterfaceIpAddress) {
-                            InterfaceIpAddress localIpAddress = (InterfaceIpAddress) teSubTlv;
-                            isisRouter.setInterfaceId(localIpAddress.localInterfaceIPAddress());
-                        } else if (teSubTlv instanceof NeighborIpAddress) {
-                            NeighborIpAddress neighborIpAddress = (NeighborIpAddress) teSubTlv;
-                            isisRouter.setNeighborRouterId(neighborIpAddress.neighborIPAddress());
-                        }
-
-                    }
-                }
-            }
-        }
-        return isisRouter;
-    }
-
-    /**
-     * Creates ISIS router instance.
-     *
-     * @param systemId system ID
-     * @return isisRouter instance
-     */
-    private IsisRouter createIsisRouterDummy(String systemId) {
-        IsisRouter isisRouter = new DefaultIsisRouter();
-        isisRouter.setSystemId(systemId);
-        isisRouter.setDis(false);
-        isisRouter.setInterfaceId(IsisConstants.DEFAULTIP);
-        isisRouter.setNeighborRouterId(IsisConstants.DEFAULTIP);
-
-        return isisRouter;
-    }
-
-    /**
-     * Creates the ISIS link TED information.
-     *
-     * @param lsPdu link state PDU
-     * @return isisLinkTed
-     */
-    public IsisLinkTed createIsisLinkTedInfo(LsPdu lsPdu) {
-        IsisLinkTed isisLinkTed = new DefaultIsisLinkTed();
-        for (IsisTlv isisTlv : lsPdu.tlvs()) {
-            if (isisTlv instanceof IsExtendedReachability) {
-                IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv;
-                List<NeighborForExtendedIs> neighbours = isExtendedReachability.neighbours();
-                for (NeighborForExtendedIs teTlv : neighbours) {
-                    List<TrafficEngineeringSubTlv> teSubTlvs = teTlv.teSubTlv();
-                    for (TrafficEngineeringSubTlv teSubTlv : teSubTlvs) {
-                        if (teSubTlv instanceof AdministrativeGroup) {
-                            AdministrativeGroup ag = (AdministrativeGroup) teSubTlv;
-                            isisLinkTed.setAdministrativeGroup(ag.administrativeGroup());
-                        }
-                        if (teSubTlv instanceof InterfaceIpAddress) {
-                            InterfaceIpAddress localIpAddress = (InterfaceIpAddress) teSubTlv;
-                            isisLinkTed.setIpv4InterfaceAddress(localIpAddress.localInterfaceIPAddress());
-                        }
-                        if (teSubTlv instanceof NeighborIpAddress) {
-                            NeighborIpAddress neighborIpAddress = (NeighborIpAddress) teSubTlv;
-                            isisLinkTed.setIpv4NeighborAddress(neighborIpAddress.neighborIPAddress());
-                        }
-                        if (teSubTlv instanceof TrafficEngineeringMetric) {
-                            TrafficEngineeringMetric teM = (TrafficEngineeringMetric) teSubTlv;
-                            isisLinkTed.setTeDefaultMetric(teM.getTrafficEngineeringMetricValue());
-                        }
-                        if (teSubTlv instanceof MaximumBandwidth) {
-                            MaximumBandwidth maxLinkBandwidth = (MaximumBandwidth) teSubTlv;
-                            isisLinkTed.setMaximumLinkBandwidth(
-                                    Bandwidth.bps(maxLinkBandwidth.getMaximumBandwidthValue()));
-                        }
-                        if (teSubTlv instanceof MaximumReservableBandwidth) {
-                            MaximumReservableBandwidth maxReservableBw = (MaximumReservableBandwidth) teSubTlv;
-                            isisLinkTed.setMaximumReservableLinkBandwidth(
-                                    Bandwidth.bps(maxReservableBw.getMaximumBandwidthValue()));
-                        }
-                        if (teSubTlv instanceof UnreservedBandwidth) {
-                            UnreservedBandwidth unReservedBandwidth = (UnreservedBandwidth) teSubTlv;
-                            List<Bandwidth> bandwidthList = new ArrayList<>();
-                            List<Float> unReservedBandwidthList = unReservedBandwidth.unReservedBandwidthValue();
-                            for (Float unReservedBandwidthFloatValue : unReservedBandwidthList) {
-                                Bandwidth bandwidth = Bandwidth.bps(unReservedBandwidthFloatValue);
-                                bandwidthList.add(bandwidth);
-                            }
-                            isisLinkTed.setUnreservedBandwidth(bandwidthList);
-                        }
-                    }
-                }
-            }
-        }
-        return isisLinkTed;
-    }
-}
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/package-info.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/package-info.java
deleted file mode 100644
index 8175b80..0000000
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the ISIS controller topology.
- */
-package org.onosproject.isis.controller.impl.topology;
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/ControllerTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/ControllerTest.java
deleted file mode 100644
index a5396605..0000000
--- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/ControllerTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for ControllerTest.
- */
-public class ControllerTest {
-
-    private Controller controller;
-    private ObjectMapper mapper;
-    private JsonNode jsonNode;
-    private JsonNode jsonNode1;
-    private String jsonString = "{" +
-            "                \"processes\": [{" +
-            "                                \"processId\": \"4.4.4.4\"," +
-            "                                \"interface\": [{" +
-            "                                                \"interfaceIndex\": \"2\"," +
-            "                                                \"macAddress\": \"08:00:27:b7:ab:bf\"," +
-            "                                                \"interfaceIp\": \"192.168.56.101\"," +
-            "                                                \"networkMask\": \"255.255.255.224\"," +
-            "                                                \"intermediateSystemName\": \"ROUTERONE\"," +
-            "                                                \"systemId\": \"2929.2929.2929\"," +
-            "                                                \"lanId\": \"0000.0000.0000.00\"," +
-            "                                                \"idLength\": \"0\"," +
-            "                                                \"maxAreaAddresses\": \"3\"," +
-            "                                                \"reservedPacketCircuitType\": \"1\"," +
-            "                                                \"circuitId\": \"10\"," +
-            "                                                \"networkType\": \"2\"," +
-            "                                                \"areaAddress\": \"490000\"," +
-            "                                                \"areaLength\": \"3\"," +
-            "                                                \"lspId\": \"1313131313130000\"," +
-            "                                                \"holdingTime\": \"50\"," +
-            "                                                \"helloInterval\": \"10\"," +
-            "                                                \"priority\": \"0\"" +
-            "                                }]" +
-            "                }]" +
-            "}";
-    private String jsonString1 = "{" +
-            "                \"processes\": {" +
-            "                                \"interface\": [{" +
-            "                                                \"interfaceIndex\": \"2\"," +
-            "                                                \"interfaceIp\": \"100.100.100.100\"," +
-            "                                                \"macAddress\": \"08:00:27:b7:ab:bf\"," +
-            "                                                \"networkMask\": \"255.255.255.224\"," +
-            "                                                \"intermediateSystemName\": \"ROUTERONE\"," +
-            "                                                \"systemId\": \"2929.2929.2929\"," +
-            "                                                \"lanId\": \"0000.0000.0000.00\"," +
-            "                                                \"idLength\": \"0\"," +
-            "                                                \"maxAreaAddresses\": \"3\"," +
-            "                                                \"reservedPacketCircuitType\": \"1\"," +
-            "                                                \"circuitId\": \"10\"," +
-            "                                                \"networkType\": \"2\"," +
-            "                                                \"areaAddress\": \"490000\"," +
-            "                                                \"areaLength\": \"3\"," +
-            "                                                \"lspId\": \"1313131313130000\"," +
-            "                                                \"holdingTime\": \"50\"," +
-            "                                                \"helloInterval\": \"10\"," +
-            "                                                \"priority\": \"0\"" +
-            "                                }]" +
-            "                }" +
-            "}";
-
-    @Before
-    public void setUp() throws Exception {
-        controller = new Controller();
-        mapper = new ObjectMapper();
-        jsonNode = mapper.readTree(jsonString);
-        jsonNode1 = mapper.readTree(jsonString1);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        controller = null;
-    }
-
-    /**
-     * Tests isisDeactivate() method.
-     */
-    @Test
-    public void testIsisDeactivate() throws Exception {
-        controller.isisDeactivate();
-        assertThat(controller, is(notNullValue()));
-    }
-
-    /**
-     * Tests getAllConfiguredProcesses() method.
-     */
-    @Test
-    public void testGetAllConfiguredProcesses() throws Exception {
-        controller.getAllConfiguredProcesses();
-        assertThat(controller, is(notNullValue()));
-    }
-
-    /**
-     * Tests updateConfig() method.
-     */
-    @Test
-    public void testUpdateConfig() throws Exception {
-        jsonNode.path("interface");
-        controller.updateConfig(jsonNode);
-        assertThat(controller, is(notNullValue()));
-
-        controller.updateConfig(jsonNode1);
-        assertThat(controller, is(notNullValue()));
-    }
-
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisControllerTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisControllerTest.java
deleted file mode 100644
index 1ae1e58..0000000
--- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisControllerTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.easymock.EasyMock;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.controller.topology.IsisRouterListener;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test case for DefaultIsisController.
- */
-public class DefaultIsisControllerTest {
-    private ObjectMapper mapper;
-    private JsonNode jsonNode;
-    private DefaultIsisController defaultIsisController;
-    private String jsonString = "{" +
-            "                \"processes\": [{" +
-            "                                \"processId\": \"4.4.4.4\"," +
-            "                                \"interface\": [{" +
-            "                                                \"interfaceIndex\": \"2\"," +
-            "                                                \"macAddress\": \"08:00:27:b7:ab:bf\"," +
-            "                                                \"interfaceIp\": \"192.168.56.101\"," +
-            "                                                \"networkMask\": \"255.255.255.224\"," +
-            "                                                \"intermediateSystemName\": \"ROUTERONE\"," +
-            "                                                \"systemId\": \"2929.2929.2929\"," +
-            "                                                \"lanId\": \"0000.0000.0000.00\"," +
-            "                                                \"idLength\": \"0\"," +
-            "                                                \"maxAreaAddresses\": \"3\"," +
-            "                                                \"reservedPacketCircuitType\": \"1\"," +
-            "                                                \"circuitId\": \"10\"," +
-            "                                                \"networkType\": \"2\"," +
-            "                                                \"areaAddress\": \"490000\"," +
-            "                                                \"areaLength\": \"3\"," +
-            "                                                \"lspId\": \"1313131313130000\"," +
-            "                                                \"holdingTime\": \"50\"," +
-            "                                                \"helloInterval\": \"10\"," +
-            "                                                \"priority\": \"0\"" +
-            "                                }]" +
-            "                }]" +
-            "}";
-
-    private IsisRouterListener isisRouterListener;
-
-    @Before
-    public void setUp() throws Exception {
-        defaultIsisController = new DefaultIsisController();
-        mapper = new ObjectMapper();
-        jsonNode = mapper.readTree(jsonString);
-        isisRouterListener = EasyMock.createNiceMock(IsisRouterListener.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        defaultIsisController = null;
-    }
-
-    /**
-     * Tests activate() method.
-     */
-    @Test
-    public void testActivate() throws Exception {
-        defaultIsisController.activate();
-        assertThat(defaultIsisController, is(notNullValue()));
-    }
-
-    /**
-     * Tests deactivate() method.
-     */
-    @Test()
-    public void testDeactivate() throws Exception {
-        defaultIsisController.activate();
-        defaultIsisController.deactivate();
-        assertThat(defaultIsisController, is(notNullValue()));
-    }
-
-    /**
-     * Tests allConfiguredProcesses() method.
-     */
-    @Test
-    public void testAllConfiguredProcesses() throws Exception {
-        defaultIsisController.allConfiguredProcesses();
-        assertThat(defaultIsisController, is(notNullValue()));
-    }
-
-    /**
-     * Tests updateConfig() method.
-     */
-    @Test
-    public void testUpdateConfig() throws Exception {
-        defaultIsisController.updateConfig(jsonNode);
-        assertThat(defaultIsisController, is(notNullValue()));
-    }
-
-    /**
-     * Tests addRouterListener() method.
-     */
-    @Test
-    public void testaddRouterListener() throws Exception {
-        defaultIsisController.addRouterListener(isisRouterListener);
-        assertThat(defaultIsisController, is(notNullValue()));
-    }
-
-    /**
-     * Tests removeRouterListener() method.
-     */
-    @Test
-    public void testremoveRouterListener() throws Exception {
-        defaultIsisController.removeRouterListener(isisRouterListener);
-        assertThat(defaultIsisController, is(notNullValue()));
-    }
-}
diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisInterfaceTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisInterfaceTest.java
deleted file mode 100644
index 1818c48..0000000
--- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisInterfaceTest.java
+++ /dev/null
@@ -1,877 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.jboss.netty.channel.Channel;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.MacAddress;
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisInterfaceState;
-import org.onosproject.isis.controller.IsisLsdb;
-import org.onosproject.isis.controller.IsisMessage;
-import org.onosproject.isis.controller.IsisNeighbor;
-import org.onosproject.isis.controller.IsisNetworkType;
-import org.onosproject.isis.controller.IsisPduType;
-import org.onosproject.isis.controller.IsisRouterType;
-import org.onosproject.isis.controller.impl.lsdb.DefaultIsisLsdb;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.pdu.Csnp;
-import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu;
-import org.onosproject.isis.io.isispacket.pdu.LsPdu;
-import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu;
-import org.onosproject.isis.io.isispacket.pdu.Psnp;
-import org.onosproject.isis.io.isispacket.tlv.AdjacencyStateTlv;
-import org.onosproject.isis.io.isispacket.tlv.AreaAddressTlv;
-import org.onosproject.isis.io.isispacket.tlv.LspEntriesTlv;
-import org.onosproject.isis.io.isispacket.tlv.LspEntry;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-import org.onosproject.isis.io.isispacket.tlv.TlvType;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test case for DefaultIsisInterface.
- */
-public class DefaultIsisInterfaceTest {
-    private final MacAddress macAddress = MacAddress.valueOf("AA:BB:CC:DD:EE:FF");
-    private final MacAddress macAddress1 = MacAddress.valueOf("AA:CC:CC:DD:EE:FF");
-    private final Ip4Address ip4Address = Ip4Address.valueOf("10.10.0.0");
-    private final byte[] mask = {
-            (byte) 255, (byte) 255, (byte) 255, (byte) 224
-    };
-    private final byte[] mask1 = {
-            (byte) 0, (byte) 0, (byte) 0, (byte) 0
-    };
-    private final String intSysName = "ROUTER";
-    private final String sysId = "1111.1111.1111";
-    private final String areaAddr = "49.002";
-    private final byte[] csnpBytes = {
-            0, 67, 18, 52, 18, 52, 0,
-            18, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1,
-            -1, -1, 9, 32, 4, -81, 18, 52, 18, 52, 0, 18, 0, 0, 0,
-            0, 0, 41, -92, -30, 4, -81, 41, 41, 41, 41, 41, 41, 0,
-            0, 0, 0, 0, 1, 91, 126
-    };
-    private IsisInterfaceState resultIfState;
-    private DefaultIsisInterface defaultIsisInterface;
-    private IsisHeader isisHeader;
-    private IsisInterface isisInterface;
-    private Set<MacAddress> resultSet;
-    private int resultInt;
-    private IsisLsdb resultLsdb;
-    private IsisNeighbor resultNeighborList;
-    private Ip4Address resultIPv4Addr;
-    private MacAddress resultMacAddr;
-    private byte[] resultByteArr;
-    private String resultStr;
-    private IsisNetworkType resultNwType;
-    private List<Ip4Address> ip4Addresses = new ArrayList<>();
-    private DefaultIsisNeighbor defaultIsisNeighbor;
-    private IsisNeighbor result;
-    private IsisLsdb result1;
-    private Set<MacAddress> result2;
-    private Channel result3;
-    private IsisMessage isisMessage;
-    private IsisLsdb isisLsdb;
-    private Channel channel;
-    private L1L2HelloPdu helloPdu;
-    private LsPdu lsPdu;
-    private Csnp csnp;
-    private Psnp psnp;
-    private P2PHelloPdu p2PHelloPdu;
-    private boolean result4;
-    private String result5;
-
-    @Before
-    public void setUp() throws Exception {
-        channel = EasyMock.createNiceMock(Channel.class);
-        defaultIsisInterface = new DefaultIsisInterface();
-        defaultIsisInterface.setInterfaceMacAddress(macAddress);
-        isisHeader = new IsisHeader();
-        isisHeader.setIrpDiscriminator((byte) 1);
-        helloPdu = new L1L2HelloPdu(isisHeader);
-        isisInterface = new DefaultIsisInterface();
-        defaultIsisNeighbor = new DefaultIsisNeighbor(helloPdu, isisInterface);
-        defaultIsisNeighbor.setNeighborMacAddress(macAddress);
-        isisLsdb = new DefaultIsisLsdb();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        defaultIsisInterface = null;
-        helloPdu = null;
-        isisInterface = null;
-        resultNeighborList = null;
-    }
-
-    /**
-     * Tests interfaceIndex() getter method.
-     */
-    @Test
-    public void testInterfaceIndex() throws Exception {
-        defaultIsisInterface.setInterfaceIndex(2);
-        resultInt = defaultIsisInterface.interfaceIndex();
-        assertThat(resultInt, is(2));
-    }
-
-    /**
-     * Tests interfaceIndex() setter method.
-     */
-    @Test
-    public void testSetInterfaceIndex() throws Exception {
-        defaultIsisInterface.setInterfaceIndex(2);
-        resultInt = defaultIsisInterface.interfaceIndex();
-        assertThat(resultInt, is(2));
-
-    }
-
-    /**
-     * Tests interfaceIpAddress() getter method.
-     */
-    @Test
-    public void testInterfaceIpAddress() throws Exception {
-        defaultIsisInterface.setInterfaceIpAddress(ip4Address);
-        resultIPv4Addr = defaultIsisInterface.interfaceIpAddress();
-        assertThat(resultIPv4Addr, is(ip4Address));
-    }
-
-    /**
-     * Tests interfaceIpAddress() setter method.
-     */
-    @Test
-    public void testSetInterfaceIpAddress() throws Exception {
-        defaultIsisInterface.setInterfaceIpAddress(ip4Address);
-        resultIPv4Addr = defaultIsisInterface.interfaceIpAddress();
-        assertThat(resultIPv4Addr, is(ip4Address));
-    }
-
-    /**
-     * Tests networkMask() getter method.
-     */
-    @Test
-    public void testNetworkMask() throws Exception {
-        defaultIsisInterface.setNetworkMask(mask);
-        resultByteArr = defaultIsisInterface.networkMask();
-        assertThat(resultByteArr, is(mask));
-    }
-
-    /**
-     * Tests networkMask() setter method.
-     */
-    @Test
-    public void testSetNetworkMask() throws Exception {
-        defaultIsisInterface.setNetworkMask(mask);
-        resultByteArr = defaultIsisInterface.networkMask();
-        assertThat(resultByteArr, is(mask));
-    }
-
-    /**
-     * Tests getInterfaceMacAddress() getter method.
-     */
-    @Test
-    public void testGetInterfaceMacAddress() throws Exception {
-        defaultIsisInterface.setInterfaceMacAddress(macAddress);
-        resultMacAddr = defaultIsisInterface.getInterfaceMacAddress();
-        assertThat(resultMacAddr, is(macAddress));
-    }
-
-    /**
-     * Tests getInterfaceMacAddress() setter method.
-     */
-    @Test
-    public void testSetInterfaceMacAddress() throws Exception {
-        defaultIsisInterface.setInterfaceMacAddress(macAddress);
-        resultMacAddr = defaultIsisInterface.getInterfaceMacAddress();
-        assertThat(resultMacAddr, is(macAddress));
-    }
-
-    /**
-     * Tests intermediateSystemName() getter method.
-     */
-    @Test
-    public void testIntermediateSystemName() throws Exception {
-        defaultIsisInterface.setIntermediateSystemName(intSysName);
-        resultStr = defaultIsisInterface.intermediateSystemName();
-        assertThat(resultStr, is(intSysName));
-    }
-
-    /**
-     * Tests intermediateSystemName() setter method.
-     */
-    @Test
-    public void testSetIntermediateSystemName() throws Exception {
-        defaultIsisInterface.setIntermediateSystemName(intSysName);
-        resultStr = defaultIsisInterface.intermediateSystemName();
-        assertThat(resultStr, is(intSysName));
-    }
-
-    /**
-     * Tests systemId() getter method.
-     */
-    @Test
-    public void testSystemId() throws Exception {
-        defaultIsisInterface.setSystemId(sysId);
-        resultStr = defaultIsisInterface.systemId();
-        assertThat(resultStr, is(sysId));
-    }
-
-    /**
-     * Tests systemId() setter method.
-     */
-    @Test
-    public void testSetSystemId() throws Exception {
-        defaultIsisInterface.setSystemId(sysId);
-        resultStr = defaultIsisInterface.systemId();
-        assertThat(resultStr, is(sysId));
-    }
-
-    /**
-     * Tests l1LanId() getter method.
-     */
-    @Test
-    public void testL1LanId() throws Exception {
-        defaultIsisInterface.setL1LanId(sysId);
-        resultStr = defaultIsisInterface.l1LanId();
-        assertThat(resultStr, is(sysId));
-    }
-
-    /**
-     * Tests l1LanId() setter method.
-     */
-    @Test
-    public void testSetL1LanId() throws Exception {
-        defaultIsisInterface.setL1LanId(sysId);
-        resultStr = defaultIsisInterface.l1LanId();
-        assertThat(resultStr, is(sysId));
-    }
-
-    /**
-     * Tests l2LanId() getter method.
-     */
-    @Test
-    public void testL2LanId() throws Exception {
-        defaultIsisInterface.setL2LanId(sysId);
-        resultStr = defaultIsisInterface.l2LanId();
-        assertThat(resultStr, is(sysId));
-    }
-
-    /**
-     * Tests l2LanId() setter method.
-     */
-    @Test
-    public void testSetL2LanId() throws Exception {
-        defaultIsisInterface.setL2LanId(sysId);
-        resultStr = defaultIsisInterface.l2LanId();
-        assertThat(resultStr, is(sysId));
-    }
-
-    /**
-     * Tests getIdLength() getter method.
-     */
-    @Test
-    public void testGetIdLength() throws Exception {
-        defaultIsisInterface.setIdLength(8);
-        resultInt = defaultIsisInterface.getIdLength();
-        assertThat(resultInt, is(8));
-    }
-
-    /**
-     * Tests getIdLength() setter method.
-     */
-    @Test
-    public void testSetIdLength() throws Exception {
-        defaultIsisInterface.setIdLength(8);
-        resultInt = defaultIsisInterface.getIdLength();
-        assertThat(resultInt, is(8));
-    }
-
-    /**
-     * Tests getMaxAreaAddresses() getter method.
-     */
-    @Test
-    public void testGetMaxAreaAddresses() throws Exception {
-        defaultIsisInterface.setMaxAreaAddresses(3);
-        resultInt = defaultIsisInterface.getMaxAreaAddresses();
-        assertThat(resultInt, is(3));
-    }
-
-    /**
-     * Tests getMaxAreaAddresses() setter method.
-     */
-    @Test
-    public void testSetMaxAreaAddresses() throws Exception {
-        defaultIsisInterface.setMaxAreaAddresses(3);
-        resultInt = defaultIsisInterface.getMaxAreaAddresses();
-        assertThat(resultInt, is(3));
-    }
-
-    /**
-     * Tests setReservedPacketCircuitType() getter method.
-     */
-    @Test
-    public void testReservedPacketCircuitType() throws Exception {
-        defaultIsisInterface.setReservedPacketCircuitType(1);
-        resultInt = defaultIsisInterface.reservedPacketCircuitType();
-        assertThat(resultInt, is(1));
-    }
-
-    /**
-     * Tests setReservedPacketCircuitType() setter method.
-     */
-    @Test
-    public void testSetReservedPacketCircuitType() throws Exception {
-        defaultIsisInterface.setReservedPacketCircuitType(1);
-        resultInt = defaultIsisInterface.reservedPacketCircuitType();
-        assertThat(resultInt, is(1));
-    }
-
-    /**
-     * Tests networkType() getter method.
-     */
-    @Test
-    public void testNetworkType() throws Exception {
-        defaultIsisInterface.setNetworkType(IsisNetworkType.BROADCAST);
-        resultNwType = defaultIsisInterface.networkType();
-        assertThat(resultNwType, is(IsisNetworkType.BROADCAST));
-    }
-
-    /**
-     * Tests networkType() setter method.
-     */
-    @Test
-    public void testSetNetworkType() throws Exception {
-        defaultIsisInterface.setNetworkType(IsisNetworkType.BROADCAST);
-        resultNwType = defaultIsisInterface.networkType();
-        assertThat(resultNwType, is(IsisNetworkType.BROADCAST));
-    }
-
-    /**
-     * Tests areaAddress() getter method.
-     */
-    @Test
-    public void testAreaAddress() throws Exception {
-        defaultIsisInterface.setAreaAddress(areaAddr);
-        resultStr = defaultIsisInterface.areaAddress();
-        assertThat(resultStr, is(areaAddr));
-    }
-
-    /**
-     * Tests areaAddress() setter method.
-     */
-    @Test
-    public void testSetAreaAddress() throws Exception {
-        defaultIsisInterface.setAreaAddress(areaAddr);
-        resultStr = defaultIsisInterface.areaAddress();
-        assertThat(resultStr, is(areaAddr));
-    }
-
-    /**
-     * Tests getAreaLength() getter method.
-     */
-
-    @Test
-    public void testGetAreaLength() throws Exception {
-        defaultIsisInterface.setAreaLength(3);
-        resultInt = defaultIsisInterface.getAreaLength();
-        assertThat(resultInt, is(3));
-    }
-
-    /**
-     * Tests getAreaLength() setter method.
-     */
-    @Test
-    public void testSetAreaLength() throws Exception {
-        defaultIsisInterface.setAreaLength(3);
-        resultInt = defaultIsisInterface.getAreaLength();
-        assertThat(resultInt, is(3));
-    }
-
-    /**
-     * Tests holdingTime() getter method.
-     */
-    @Test
-    public void testHoldingTime() throws Exception {
-        defaultIsisInterface.setHoldingTime(10);
-        resultInt = defaultIsisInterface.holdingTime();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests holdingTime() setter method.
-     */
-    @Test
-    public void testSetHoldingTime() throws Exception {
-        defaultIsisInterface.setHoldingTime(10);
-        resultInt = defaultIsisInterface.holdingTime();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests priority() getter method.
-     */
-    @Test
-    public void testPriority() throws Exception {
-        defaultIsisInterface.setPriority(1);
-        resultInt = defaultIsisInterface.priority();
-        assertThat(resultInt, is(1));
-    }
-
-    /**
-     * Tests priority() setter method.
-     */
-    @Test
-    public void testSetPriority() throws Exception {
-        defaultIsisInterface.setPriority(1);
-        resultInt = defaultIsisInterface.priority();
-        assertThat(resultInt, is(1));
-    }
-
-    /**
-     * Tests helloInterval() getter method.
-     */
-    @Test
-    public void testHelloInterval() throws Exception {
-        defaultIsisInterface.setHelloInterval(10);
-        resultInt = defaultIsisInterface.helloInterval();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests helloInterval() setter method.
-     */
-    @Test
-    public void testSetHelloInterval() throws Exception {
-        defaultIsisInterface.setHelloInterval(10);
-        resultInt = defaultIsisInterface.helloInterval();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests interfaceState() getter method.
-     */
-    @Test
-    public void testInterfaceState() throws Exception {
-        defaultIsisInterface.setInterfaceState(IsisInterfaceState.UP);
-        resultIfState = defaultIsisInterface.interfaceState();
-        assertThat(resultIfState, is(IsisInterfaceState.UP));
-    }
-
-    /**
-     * Tests interfaceState() setter method.
-     */
-    @Test
-    public void testSetInterfaceState() throws Exception {
-        defaultIsisInterface.setInterfaceState(IsisInterfaceState.UP);
-        resultIfState = defaultIsisInterface.interfaceState();
-        assertThat(resultIfState, is(IsisInterfaceState.UP));
-    }
-
-    /**
-     * Tests setCircuitId() getter method.
-     */
-    @Test
-    public void testCircuitId() throws Exception {
-        defaultIsisInterface.setCircuitId(sysId);
-        resultStr = defaultIsisInterface.circuitId();
-        assertThat(resultStr, is(sysId));
-    }
-
-    /**
-     * Tests setCircuitId() setter method.
-     */
-    @Test
-    public void testSetCircuitId() throws Exception {
-        defaultIsisInterface.setCircuitId(sysId);
-        resultStr = defaultIsisInterface.circuitId();
-        assertThat(resultStr, is(sysId));
-    }
-
-    /**
-     * Tests setAllConfiguredInterfaceIps() setter method.
-     */
-    @Test
-    public void testSetAllConfiguredInterfaceIps() throws Exception {
-        ip4Addresses.add(ip4Address);
-        defaultIsisInterface.setAllConfiguredInterfaceIps(ip4Addresses);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests setAllConfiguredInterfaceIps() method.
-     */
-    @Test
-    public void testRemoveNeighbor() throws Exception {
-        defaultIsisInterface.removeNeighbor(defaultIsisNeighbor);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests lookup() method.
-     */
-    @Test
-    public void testLookup() throws Exception {
-        result = defaultIsisInterface.lookup(defaultIsisNeighbor.neighborMacAddress());
-        assertThat(result, is(nullValue()));
-    }
-
-    /**
-     * Tests isisLsdb() method.
-     */
-    @Test
-    public void testIsisLsdb() throws Exception {
-        result1 = defaultIsisInterface.isisLsdb();
-        assertThat(result1, is(nullValue()));
-    }
-
-    /**
-     * Tests neighbors() method.
-     */
-    @Test
-    public void testNeighbors() throws Exception {
-        result2 = defaultIsisInterface.neighbors();
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests channel() method.
-     */
-    @Test
-    public void testChannel() throws Exception {
-        result3 = defaultIsisInterface.channel();
-        assertThat(result3, is(nullValue()));
-    }
-
-    /**
-     * Tests processIsisMessage() method.
-     */
-    @Test
-    public void testProcessIsisMessage() throws Exception {
-        helloPdu = new L1L2HelloPdu(isisHeader);
-        helloPdu.setSourceMac(macAddress1);
-        helloPdu.setIsisPduType(IsisPduType.L2HELLOPDU.value());
-        defaultIsisInterface.setNetworkType(IsisNetworkType.BROADCAST);
-        isisMessage = helloPdu;
-        defaultIsisInterface.processIsisMessage(isisMessage, isisLsdb, channel);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests processIsisMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testProcessIsisMessage1() throws Exception {
-        lsPdu = new LsPdu(isisHeader);
-        lsPdu.setSourceMac(macAddress1);
-        lsPdu.setIsisPduType(IsisPduType.L2LSPDU.value());
-        isisMessage = lsPdu;
-        defaultIsisInterface.processIsisMessage(isisMessage, isisLsdb, channel);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests processIsisMessage() method.
-     */
-    @Test
-    public void testProcessIsisMessage2() throws Exception {
-        csnp = new Csnp(isisHeader);
-        csnp.setSourceMac(macAddress1);
-        csnp.setIsisPduType(IsisPduType.L2CSNP.value());
-        isisMessage = csnp;
-        defaultIsisInterface.processIsisMessage(isisMessage, isisLsdb, channel);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests processIsisMessage() method.
-     */
-    @Test
-    public void testProcessIsisMessage3() throws Exception {
-        psnp = new Psnp(isisHeader);
-        psnp.setSourceMac(macAddress1);
-        psnp.setIsisPduType(IsisPduType.L2PSNP.value());
-        isisMessage = psnp;
-        defaultIsisInterface.processIsisMessage(isisMessage, isisLsdb, channel);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests processIsisMessage() method.
-     */
-    @Test
-    public void testProcessIsisMessage4() throws Exception {
-        p2PHelloPdu = new P2PHelloPdu(isisHeader);
-        p2PHelloPdu.setSourceMac(macAddress1);
-        p2PHelloPdu.setIsisPduType(IsisPduType.P2PHELLOPDU.value());
-        defaultIsisInterface.setNetworkType(IsisNetworkType.P2P);
-        isisMessage = p2PHelloPdu;
-        defaultIsisInterface.processIsisMessage(isisMessage, isisLsdb, channel);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests validateHelloMessage() method.
-     */
-    @Test
-    public void testValidateHelloMessage() throws Exception {
-        helloPdu = new L1L2HelloPdu(isisHeader);
-        result4 = defaultIsisInterface.validateHelloMessage(helloPdu);
-        assertThat(result4, is(false));
-    }
-
-    /**
-     * Tests processL1L2HelloPduMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testProcessL1L2HelloPduMessage() throws Exception {
-        helloPdu = new L1L2HelloPdu(isisHeader);
-        helloPdu.setSourceMac(macAddress1);
-        helloPdu.setCircuitType((byte) IsisRouterType.L2.value());
-        defaultIsisInterface.processL1L2HelloPduMessage(helloPdu, channel);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests processP2pHelloPduMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testProcessP2pHelloPduMessagee() throws Exception {
-        defaultIsisInterface.setSystemId(sysId);
-        p2PHelloPdu = new P2PHelloPdu(isisHeader);
-        p2PHelloPdu.setIsisPduType(IsisPduType.P2PHELLOPDU.value());
-        p2PHelloPdu.setSourceMac(macAddress1);
-        p2PHelloPdu.setCircuitType((byte) IsisRouterType.L2.value());
-        defaultIsisInterface.setNetworkType(IsisNetworkType.P2P);
-        defaultIsisInterface.processIsisMessage(p2PHelloPdu, isisLsdb, channel);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests processP2pHelloPduMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testProcessP2pHelloPduMessagee1() throws Exception {
-        defaultIsisInterface.setSystemId(sysId);
-        p2PHelloPdu = new P2PHelloPdu(isisHeader);
-        p2PHelloPdu.setIsisPduType(IsisPduType.P2PHELLOPDU.value());
-        p2PHelloPdu.setSourceMac(macAddress1);
-        p2PHelloPdu.setCircuitType((byte) IsisRouterType.L2.value());
-        defaultIsisInterface.setNetworkType(IsisNetworkType.P2P);
-        defaultIsisInterface.setReservedPacketCircuitType(IsisRouterType.L2.value());
-        defaultIsisInterface.setAllConfiguredInterfaceIps(ip4Addresses);
-        defaultIsisInterface.setInterfaceIpAddress(ip4Address);
-        defaultIsisInterface.setNetworkMask(mask1);
-        defaultIsisInterface.processIsisMessage(p2PHelloPdu, isisLsdb, channel);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests processP2pHelloPduMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testProcessP2pHelloPduMessagee2() throws Exception {
-        defaultIsisInterface.setSystemId(sysId);
-        p2PHelloPdu = new P2PHelloPdu(isisHeader);
-        TlvHeader tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(TlvType.AREAADDRESS.value());
-        AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader);
-        areaAddressTlv.addAddress(areaAddr);
-        p2PHelloPdu.addTlv(areaAddressTlv);
-        p2PHelloPdu.setIsisPduType(IsisPduType.P2PHELLOPDU.value());
-        p2PHelloPdu.setSourceMac(macAddress1);
-        p2PHelloPdu.setCircuitType((byte) IsisRouterType.L1.value());
-        defaultIsisInterface.setNetworkType(IsisNetworkType.P2P);
-        defaultIsisInterface.setReservedPacketCircuitType(IsisRouterType.L1.value());
-        defaultIsisInterface.setAreaAddress(areaAddr);
-        defaultIsisInterface.setAllConfiguredInterfaceIps(ip4Addresses);
-        defaultIsisInterface.setInterfaceIpAddress(ip4Address);
-        defaultIsisInterface.setNetworkMask(mask1);
-        defaultIsisInterface.processIsisMessage(p2PHelloPdu, isisLsdb, channel);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests processP2pHelloPduMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testProcessP2pHelloPduMessagee3() throws Exception {
-        defaultIsisInterface.setSystemId(sysId);
-        p2PHelloPdu = new P2PHelloPdu(isisHeader);
-        TlvHeader tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(TlvType.ADJACENCYSTATE.value());
-        AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader);
-        adjacencyStateTlv.setNeighborSystemId(sysId);
-        adjacencyStateTlv.setAdjacencyType((byte) IsisInterfaceState.DOWN.value());
-        p2PHelloPdu.addTlv(adjacencyStateTlv);
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(TlvType.AREAADDRESS.value());
-        AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader);
-        areaAddressTlv.addAddress(areaAddr);
-        p2PHelloPdu.addTlv(areaAddressTlv);
-        p2PHelloPdu.setIsisPduType(IsisPduType.P2PHELLOPDU.value());
-        p2PHelloPdu.setSourceMac(macAddress1);
-        p2PHelloPdu.setCircuitType((byte) IsisRouterType.L1.value());
-        defaultIsisInterface.setNetworkType(IsisNetworkType.P2P);
-        defaultIsisInterface.setReservedPacketCircuitType(IsisRouterType.L1.value());
-        defaultIsisInterface.setAreaAddress(areaAddr);
-        defaultIsisInterface.setAllConfiguredInterfaceIps(ip4Addresses);
-        defaultIsisInterface.setInterfaceIpAddress(ip4Address);
-        defaultIsisInterface.setNetworkMask(mask1);
-        defaultIsisInterface.processIsisMessage(p2PHelloPdu, isisLsdb, channel);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests processP2pHelloPduMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testProcessP2pHelloPduMessagee4() throws Exception {
-        defaultIsisInterface.setSystemId(sysId);
-        p2PHelloPdu = new P2PHelloPdu(isisHeader);
-        TlvHeader tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(TlvType.ADJACENCYSTATE.value());
-        AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader);
-        adjacencyStateTlv.setNeighborSystemId(sysId);
-        adjacencyStateTlv.setAdjacencyType((byte) IsisInterfaceState.INITIAL.value());
-        p2PHelloPdu.addTlv(adjacencyStateTlv);
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(TlvType.AREAADDRESS.value());
-        AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader);
-        areaAddressTlv.addAddress(areaAddr);
-        p2PHelloPdu.addTlv(areaAddressTlv);
-        p2PHelloPdu.setIsisPduType(IsisPduType.P2PHELLOPDU.value());
-        p2PHelloPdu.setSourceMac(macAddress1);
-        p2PHelloPdu.setCircuitType((byte) IsisRouterType.L1.value());
-        defaultIsisInterface.setNetworkType(IsisNetworkType.P2P);
-        defaultIsisInterface.setReservedPacketCircuitType(IsisRouterType.L1L2.value());
-        defaultIsisInterface.setAreaAddress(areaAddr);
-        defaultIsisInterface.setAllConfiguredInterfaceIps(ip4Addresses);
-        defaultIsisInterface.setInterfaceIpAddress(ip4Address);
-        defaultIsisInterface.setNetworkMask(mask1);
-        defaultIsisInterface.processIsisMessage(p2PHelloPdu, isisLsdb, channel);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    @Test(expected = Exception.class)
-    public void testProcessP2pHelloPduMessagee5() throws Exception {
-        defaultIsisInterface.setSystemId(sysId);
-        p2PHelloPdu = new P2PHelloPdu(isisHeader);
-        TlvHeader tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(TlvType.ADJACENCYSTATE.value());
-        AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader);
-        adjacencyStateTlv.setNeighborSystemId(sysId);
-        adjacencyStateTlv.setAdjacencyType((byte) IsisInterfaceState.UP.value());
-        p2PHelloPdu.addTlv(adjacencyStateTlv);
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(TlvType.AREAADDRESS.value());
-        AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader);
-        areaAddressTlv.addAddress(areaAddr);
-        p2PHelloPdu.addTlv(areaAddressTlv);
-        p2PHelloPdu.setIsisPduType(IsisPduType.P2PHELLOPDU.value());
-        p2PHelloPdu.setSourceMac(macAddress1);
-        p2PHelloPdu.setCircuitType((byte) IsisRouterType.L2.value());
-        defaultIsisInterface.setNetworkType(IsisNetworkType.P2P);
-        defaultIsisInterface.setReservedPacketCircuitType(IsisRouterType.L1L2.value());
-        defaultIsisInterface.setAreaAddress(areaAddr);
-        defaultIsisInterface.setAllConfiguredInterfaceIps(ip4Addresses);
-        defaultIsisInterface.setInterfaceIpAddress(ip4Address);
-        defaultIsisInterface.setNetworkMask(mask1);
-        defaultIsisInterface.processIsisMessage(p2PHelloPdu, isisLsdb, channel);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests startHelloSender() method.
-     */
-    @Test(expected = Exception.class)
-    public void testStartHelloSender() throws Exception {
-        defaultIsisInterface.startHelloSender(channel);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests lspKeyP2P() method.
-     */
-    @Test
-    public void testLspKeyP2P() throws Exception {
-        result5 = defaultIsisInterface.lspKeyP2P(sysId);
-        assertThat(result5, is(notNullValue()));
-    }
-
-    /**
-     * Tests processLsPduMessage() method.
-     */
-    @Test
-    public void testProcessLsPduMessage() throws Exception {
-        lsPdu = new LsPdu(isisHeader);
-        lsPdu.setSourceMac(macAddress1);
-        lsPdu.setIsisPduType(IsisPduType.L2LSPDU.value());
-        lsPdu.setLspId(sysId);
-        isisMessage = lsPdu;
-        defaultIsisInterface.setNetworkType(IsisNetworkType.P2P);
-        defaultIsisInterface.setSystemId(sysId);
-        defaultIsisInterface.processIsisMessage(isisMessage, isisLsdb, channel);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests processPsnPduMessage() method.
-     */
-    @Test
-    public void testProcessPsnPduMessage() throws Exception {
-        psnp = new Psnp(isisHeader);
-        psnp.setSourceMac(macAddress1);
-        psnp.setIsisPduType(IsisPduType.L2PSNP.value());
-        TlvHeader tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(TlvType.LSPENTRY.value());
-        tlvHeader.setTlvLength(0);
-        LspEntriesTlv lspEntriesTlv = new LspEntriesTlv(tlvHeader);
-        LspEntry lspEntry = new LspEntry();
-        lspEntry.setLspChecksum(0);
-        lspEntry.setLspSequenceNumber(0);
-        lspEntry.setRemainingTime(0);
-        lspEntriesTlv.addLspEntry(lspEntry);
-        psnp.addTlv(lspEntriesTlv);
-        isisMessage = psnp;
-        defaultIsisInterface.processIsisMessage(isisMessage, isisLsdb, channel);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests processCsnPduMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testProcessCsnPduMessage() throws Exception {
-        ChannelBuffer channelBuffer = ChannelBuffers.copiedBuffer(csnpBytes);
-        csnp = new Csnp(isisHeader);
-        csnp.readFrom(channelBuffer);
-        csnp.setSourceMac(macAddress1);
-        csnp.setIsisPduType(IsisPduType.L2CSNP.value());
-        isisMessage = csnp;
-        defaultIsisInterface.processIsisMessage(isisMessage, isisLsdb, channel);
-        assertThat(defaultIsisInterface, is(notNullValue()));
-    }
-}
diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisNeighborTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisNeighborTest.java
deleted file mode 100644
index b79e79d1..0000000
--- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisNeighborTest.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.MacAddress;
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisInterfaceState;
-import org.onosproject.isis.controller.IsisMessage;
-import org.onosproject.isis.controller.IsisRouterType;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.pdu.HelloPdu;
-import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for DefaultIsisNeighbor.
- */
-public class DefaultIsisNeighborTest {
-
-    private final String areaId = "490001";
-    private final String systemId = "2929.2929.2929";
-    private final String lanId = "0000.0000.0000.00";
-    private DefaultIsisNeighbor isisNeighbor;
-    private IsisInterface isisInterface;
-    private IsisMessage isisMessage;
-    private IsisHeader isisHeader;
-    private int result;
-    private String result1;
-    private Ip4Address interfaceIp = Ip4Address.valueOf("10.10.10.10");
-    private Ip4Address result2;
-    private MacAddress macAddress = MacAddress.valueOf("a4:23:05:00:00:00");
-    private MacAddress result3;
-    private IsisRouterType isisRouterType;
-    private IsisInterfaceState isisInterfaceState;
-    private byte result4;
-
-    @Before
-    public void setUp() throws Exception {
-        isisHeader = new IsisHeader();
-        isisMessage = new L1L2HelloPdu(isisHeader);
-        isisInterface = new DefaultIsisInterface();
-        isisNeighbor = new DefaultIsisNeighbor((HelloPdu) isisMessage, isisInterface);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        isisHeader = null;
-        isisMessage = null;
-        isisInterface = null;
-        isisNeighbor = null;
-    }
-
-    /**
-     * Tests localExtendedCircuitId() getter method.
-     */
-    @Test
-    public void testLocalExtendedCircuitId() throws Exception {
-        isisNeighbor.setLocalExtendedCircuitId(1);
-        result = isisNeighbor.localExtendedCircuitId();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests localExtendedCircuitId() setter method.
-     */
-    @Test
-    public void testSetLocalExtendedCircuitId() throws Exception {
-        isisNeighbor.setLocalExtendedCircuitId(1);
-        result = isisNeighbor.localExtendedCircuitId();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests neighborAreaId() getter method.
-     */
-    @Test
-    public void testNeighborAreaId() throws Exception {
-        isisNeighbor.setNeighborAreaId(areaId);
-        result1 = isisNeighbor.neighborAreaId();
-        assertThat(result1, is(areaId));
-    }
-
-    /**
-     * Tests neighborAreaId() setter method.
-     */
-    @Test
-    public void testSetNeighborAreaId() throws Exception {
-        isisNeighbor.setNeighborAreaId(areaId);
-        result1 = isisNeighbor.neighborAreaId();
-        assertThat(result1, is(areaId));
-    }
-
-    /**
-     * Tests neighborSystemId() getter method.
-     */
-    @Test
-    public void testNeighborSystemId() throws Exception {
-        isisNeighbor.setNeighborSystemId(systemId);
-        result1 = isisNeighbor.neighborSystemId();
-        assertThat(result1, is(systemId));
-    }
-
-    /**
-     * Tests neighborSystemId() setter method.
-     */
-    @Test
-    public void testSetNeighborSystemId() throws Exception {
-        isisNeighbor.setNeighborSystemId(systemId);
-        result1 = isisNeighbor.neighborSystemId();
-        assertThat(result1, is(systemId));
-    }
-
-    /**
-     * Tests interfaceIp() getter method.
-     */
-    @Test
-    public void testInterfaceIp() throws Exception {
-        isisNeighbor.setInterfaceIp(interfaceIp);
-        result2 = isisNeighbor.interfaceIp();
-        assertThat(result2, is(interfaceIp));
-    }
-
-    /**
-     * Tests interfaceIp() setter method.
-     */
-    @Test
-    public void testSetInterfaceIp() throws Exception {
-        isisNeighbor.setInterfaceIp(interfaceIp);
-        result2 = isisNeighbor.interfaceIp();
-        assertThat(result2, is(interfaceIp));
-    }
-
-    /**
-     * Tests neighborMacAddress() getter method.
-     */
-    @Test
-    public void testNeighborMacAddress() throws Exception {
-        isisNeighbor.setNeighborMacAddress(macAddress);
-        result3 = isisNeighbor.neighborMacAddress();
-        assertThat(result3, is(macAddress));
-    }
-
-    /**
-     * Tests neighborMacAddress() setter method.
-     */
-    @Test
-    public void testSetNeighborMacAddress() throws Exception {
-        isisNeighbor.setNeighborMacAddress(macAddress);
-        result3 = isisNeighbor.neighborMacAddress();
-        assertThat(result3, is(macAddress));
-    }
-
-    /**
-     * Tests holdingTime() getter method.
-     */
-    @Test
-    public void testHoldingTime() throws Exception {
-        isisNeighbor.setHoldingTime(1);
-        result = isisNeighbor.holdingTime();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests holdingTime() setter method.
-     */
-    @Test
-    public void testSetHoldingTime() throws Exception {
-        isisNeighbor.setHoldingTime(1);
-        result = isisNeighbor.holdingTime();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests routerType() getter method.
-     */
-    @Test
-    public void testRouterType() throws Exception {
-        isisNeighbor.setRouterType(IsisRouterType.L1);
-        isisRouterType = isisNeighbor.routerType();
-        assertThat(isisRouterType, is(IsisRouterType.L1));
-    }
-
-    /**
-     * Tests routerType() setter method.
-     */
-    @Test
-    public void testSetRouterType() throws Exception {
-        isisNeighbor.setRouterType(IsisRouterType.L1);
-        isisRouterType = isisNeighbor.routerType();
-        assertThat(isisRouterType, is(IsisRouterType.L1));
-    }
-
-    /**
-     * Tests l1LanId() getter method.
-     */
-    @Test
-    public void testL1LanId() throws Exception {
-        isisNeighbor.setL1LanId(systemId);
-        result1 = isisNeighbor.l1LanId();
-        assertThat(result1, is(systemId));
-    }
-
-    /**
-     * Tests l1LanId() setter method.
-     */
-    @Test
-    public void testSetL1LanId() throws Exception {
-        isisNeighbor.setL1LanId(lanId);
-        result1 = isisNeighbor.l1LanId();
-        assertThat(result1, is(lanId));
-    }
-
-    /**
-     * Tests l2LanId() getter method.
-     */
-    @Test
-    public void testL2LanId() throws Exception {
-        isisNeighbor.setL2LanId(lanId);
-        result1 = isisNeighbor.l2LanId();
-        assertThat(result1, is(lanId));
-    }
-
-    /**
-     * Tests l2LanId() setter method.
-     */
-    @Test
-    public void testSetL2LanId() throws Exception {
-        isisNeighbor.setL2LanId(lanId);
-        result1 = isisNeighbor.l2LanId();
-        assertThat(result1, is(lanId));
-    }
-
-    /**
-     * Tests neighborState() getter method.
-     */
-    @Test
-    public void testInterfaceState() throws Exception {
-        isisNeighbor.setNeighborState(IsisInterfaceState.DOWN);
-        isisInterfaceState = isisNeighbor.neighborState();
-        assertThat(isisInterfaceState, is(IsisInterfaceState.DOWN));
-    }
-
-    /**
-     * Tests neighborState() setter method.
-     */
-    @Test
-    public void testSetNeighborState() throws Exception {
-        isisNeighbor.setNeighborState(IsisInterfaceState.DOWN);
-        isisInterfaceState = isisNeighbor.neighborState();
-        assertThat(isisInterfaceState, is(IsisInterfaceState.DOWN));
-    }
-
-    /**
-     * Tests localCircuitId() getter method.
-     */
-    @Test
-    public void testLocalCircuitId() throws Exception {
-        isisNeighbor.setLocalCircuitId((byte) 1);
-        result4 = isisNeighbor.localCircuitId();
-        assertThat(result4, is((byte) 1));
-    }
-
-    /**
-     * Tests localCircuitId() setter method.
-     */
-    @Test
-    public void testSetLocalCircuitId() throws Exception {
-        isisNeighbor.setLocalCircuitId((byte) 1);
-        result4 = isisNeighbor.localCircuitId();
-        assertThat(result4, is((byte) 1));
-    }
-
-    /**
-     * Tests neighborState() getter method.
-     */
-    @Test
-    public void testNeighborState() throws Exception {
-        isisNeighbor.setNeighborState(IsisInterfaceState.DOWN);
-        isisInterfaceState = isisNeighbor.neighborState();
-        assertThat(isisInterfaceState, is(IsisInterfaceState.DOWN));
-    }
-
-    /**
-     * Tests startHoldingTimeCheck() method.
-     */
-    @Test
-    public void testStartHoldingTimeCheck() throws Exception {
-        isisNeighbor.startHoldingTimeCheck();
-        assertThat(isisNeighbor, is(notNullValue()));
-    }
-
-    /**
-     * Tests stopHoldingTimeCheck() method.
-     */
-    @Test
-    public void testStopHoldingTimeCheck() throws Exception {
-        isisNeighbor.stopHoldingTimeCheck();
-        assertThat(isisNeighbor, is(notNullValue()));
-    }
-
-    /**
-     * Tests startInactivityTimeCheck() method.
-     */
-    @Test(expected = Exception.class)
-    public void testStartInactivityTimeCheck() throws Exception {
-        isisNeighbor.startInactivityTimeCheck();
-        assertThat(isisNeighbor, is(notNullValue()));
-    }
-
-    /**
-     * Tests startInactivityTimeCheck() method.
-     */
-    @Test(expected = Exception.class)
-    public void testStopInactivityTimeCheck() throws Exception {
-        isisNeighbor.startInactivityTimeCheck();
-        assertThat(isisNeighbor, is(notNullValue()));
-    }
-
-    /**
-     * Tests neighborDown() method.
-     */
-    @Test(expected = Exception.class)
-    public void testNeighborDown() throws Exception {
-        isisNeighbor.neighborDown();
-        assertThat(isisNeighbor, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisProcessTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisProcessTest.java
deleted file mode 100644
index 08507f5..0000000
--- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisProcessTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import org.easymock.EasyMock;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisProcess;
-
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for DefaultIsisProcess.
- */
-public class DefaultIsisProcessTest {
-
-    private final String processId = "1";
-    private IsisProcess isisProcess;
-    private String result;
-    private IsisProcess defaultIsisProcess;
-    private IsisInterface isisInterface;
-    private List<IsisInterface> isisInterfaceList;
-    private List<IsisInterface> result1;
-
-    @Before
-    public void setUp() throws Exception {
-        isisProcess = new DefaultIsisProcess();
-        isisInterface = EasyMock.createNiceMock(DefaultIsisInterface.class);
-        defaultIsisProcess = new DefaultIsisProcess();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        isisProcess = null;
-    }
-
-    /**
-     * Tests processId() setter method.
-     */
-    @Test
-    public void testProcessId() throws Exception {
-        isisProcess.setProcessId(processId);
-        result = isisProcess.processId();
-        assertThat(result, is(processId));
-    }
-
-    /**
-     * Tests processId() getter method.
-     */
-    @Test
-    public void testSetProcessId() throws Exception {
-        isisProcess.setProcessId(processId);
-        result = isisProcess.processId();
-        assertThat(result, is(processId));
-    }
-
-    /**
-     * Tests isisInterfaceList() setter method.
-     */
-    @Test
-    public void testIsisInterfaceList() throws Exception {
-        isisProcess.setIsisInterfaceList(isisInterfaceList);
-        result1 = isisProcess.isisInterfaceList();
-        assertThat(result1, is(nullValue()));
-    }
-
-    /**
-     * Tests isisInterfaceList() getter method.
-     */
-    @Test
-    public void testSetIsisInterfaceList() throws Exception {
-        isisProcess.setIsisInterfaceList(isisInterfaceList);
-        result1 = isisProcess.isisInterfaceList();
-        assertThat(result1, is(nullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisChannelHandlerTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisChannelHandlerTest.java
deleted file mode 100644
index 468036e..0000000
--- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisChannelHandlerTest.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.jboss.netty.channel.ChannelStateEvent;
-import org.jboss.netty.channel.ExceptionEvent;
-import org.jboss.netty.channel.MessageEvent;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisMessage;
-import org.onosproject.isis.controller.IsisNetworkType;
-import org.onosproject.isis.controller.IsisProcess;
-import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for IsisChannelHandler.
- */
-public class IsisChannelHandlerTest {
-
-    private final String processId = "1";
-    private final byte[] config = {0, 0, 0, 0, 0, 0, 0};
-    private IsisChannelHandler isisChannelHandler;
-    private Controller controller;
-    private IsisProcess isisProcess;
-    private List<IsisProcess> isisProcessList = new ArrayList();
-    private ChannelHandlerContext channelHandlerContext;
-    private ChannelStateEvent channelStateEvent;
-    private ExceptionEvent exceptionEvent;
-    private MessageEvent messageEvent;
-    private IsisMessage isisMessage;
-    private List<IsisInterface> isisInterfaceList = new ArrayList<>();
-    private Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10");
-
-    @Before
-    public void setUp() throws Exception {
-        controller = EasyMock.createNiceMock(Controller.class);
-        isisProcess = EasyMock.createNiceMock(IsisProcess.class);
-        channelHandlerContext = EasyMock.createNiceMock(ChannelHandlerContext.class);
-        channelStateEvent = EasyMock.createNiceMock(ChannelStateEvent.class);
-        exceptionEvent = EasyMock.createNiceMock(ExceptionEvent.class);
-        messageEvent = EasyMock.createNiceMock(MessageEvent.class);
-        isisMessage = EasyMock.createNiceMock(L1L2HelloPdu.class);
-        isisMessage.setInterfaceIndex(2);
-        isisChannelHandler = new IsisChannelHandler(controller, isisProcessList);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        isisChannelHandler = null;
-    }
-
-    /**
-     * Tests initializeInterfaceMap() method.
-     */
-    @Test
-    public void testInitializeInterfaceMap() throws Exception {
-        isisChannelHandler.initializeInterfaceMap();
-        assertThat(isisChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests updateInterfaceMap() method.
-     */
-    @Test(expected = Exception.class)
-    public void testUpdateInterfaceMap() throws Exception {
-        IsisInterface isisInterface = new DefaultIsisInterface();
-        IsisInterface isisInterface1 = new DefaultIsisInterface();
-        isisInterface.setInterfaceIpAddress(ip4Address);
-        isisInterface.setInterfaceIndex(1);
-        isisInterfaceList.add(isisInterface);
-        IsisProcess isisProcess = new DefaultIsisProcess();
-        isisProcess.setIsisInterfaceList(isisInterfaceList);
-        isisProcessList.add(isisProcess);
-        isisChannelHandler.updateInterfaceMap(isisProcessList);
-        assertThat(isisChannelHandler, is(notNullValue()));
-        isisProcessList = new ArrayList<>();
-        isisInterface1.setInterfaceIpAddress(ip4Address);
-        isisInterface1.setInterfaceIndex(1);
-        isisInterface1.setInterfaceIpAddress(ip4Address);
-        isisInterface1.setInterfaceIndex(1);
-        isisInterface1.setSystemId("9999.9999.9999");
-        isisInterface1.setIntermediateSystemName("router");
-        isisInterface1.setReservedPacketCircuitType(3);
-        isisInterface1.setCircuitId("10");
-        isisInterface1.setNetworkType(IsisNetworkType.BROADCAST);
-        isisInterface1.setAreaAddress("490001");
-        isisInterface1.setHoldingTime(50);
-        isisInterface1.setHelloInterval(10);
-        isisInterfaceList.add(isisInterface1);
-        isisProcess.setIsisInterfaceList(isisInterfaceList);
-        isisProcessList.add(isisProcess);
-        isisChannelHandler.updateInterfaceMap(isisProcessList);
-        assertThat(isisChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests initializeInterfaceIpList() method.
-     */
-    @Test
-    public void testInitializeInterfaceIpList() throws Exception {
-        isisChannelHandler.initializeInterfaceIpList();
-        assertThat(isisChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests channelConnected() method.
-     */
-    @Test(expected = Exception.class)
-    public void testChannelConnected() throws Exception {
-        isisChannelHandler.channelConnected(channelHandlerContext, channelStateEvent);
-        assertThat(isisChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests channelDisconnected() method.
-     */
-    @Test
-    public void testChannelDisconnected() throws Exception {
-        isisChannelHandler.channelDisconnected(channelHandlerContext, channelStateEvent);
-        assertThat(isisChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests exceptionCaught() method.
-     */
-    @Test(expected = Exception.class)
-    public void testExceptionCaught() throws Exception {
-        isisChannelHandler.exceptionCaught(channelHandlerContext, exceptionEvent);
-        assertThat(isisChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests messageReceived() method.
-     */
-    @Test
-    public void testMessageReceived() throws Exception {
-        isisChannelHandler.messageReceived(channelHandlerContext, messageEvent);
-        assertThat(isisChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests processIsisMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testProcessIsisMessage() throws Exception {
-        isisChannelHandler.processIsisMessage(isisMessage, channelHandlerContext);
-        assertThat(isisChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests startHelloSender() method.
-     */
-    @Test
-    public void testStartHelloSender() throws Exception {
-        isisChannelHandler.startHelloSender();
-        assertThat(isisChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests stopHelloSender() method.
-     */
-    @Test
-    public void testStopHelloSender() throws Exception {
-        isisChannelHandler.stopHelloSender();
-        assertThat(isisChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests sentConfigPacket() method.
-     */
-    @Test
-    public void testSentConfigPacket() throws Exception {
-        isisChannelHandler.sentConfigPacket(config);
-        assertThat(isisChannelHandler, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisHelloPduSenderTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisHelloPduSenderTest.java
deleted file mode 100644
index 1b2da30..0000000
--- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisHelloPduSenderTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.channel.Channel;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.isis.controller.IsisNetworkType;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for IsisHelloPduSender.
- */
-public class IsisHelloPduSenderTest {
-    private final String systemId = "1234.1234.1234";
-    private final String areaId = "490001";
-    private final String circuitId = "0";
-    private final String lanId = "0000.0000.0000.00";
-    private Channel channel;
-    private DefaultIsisInterface isisInterface;
-    private DefaultIsisInterface isisInterface1;
-    private IsisHelloPduSender isisHelloPduSender;
-    private IsisHelloPduSender isisHelloPduSender1;
-    private Ip4Address interfaceAddress = Ip4Address.valueOf("10.10.10.10");
-
-    @Before
-    public void setUp() throws Exception {
-        channel = EasyMock.createNiceMock(Channel.class);
-        isisInterface = new DefaultIsisInterface();
-        isisInterface1 = new DefaultIsisInterface();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        channel = null;
-        isisInterface = null;
-    }
-
-    /**
-     * Tests run() method.
-     */
-    @Test(expected = Exception.class)
-    public void testRun() throws Exception {
-        isisInterface.setNetworkType(IsisNetworkType.P2P);
-        isisInterface.setCircuitId(circuitId);
-        isisInterface.setSystemId(systemId);
-        isisInterface.setAreaAddress("490001");
-        isisInterface.setInterfaceIpAddress(interfaceAddress);
-        isisHelloPduSender = new IsisHelloPduSender(channel, isisInterface);
-        isisHelloPduSender.run();
-        assertThat(isisHelloPduSender, is(notNullValue()));
-
-        isisInterface1.setNetworkType(IsisNetworkType.BROADCAST);
-        isisInterface1.setCircuitId(circuitId);
-        isisInterface1.setSystemId(systemId);
-        isisInterface1.setAreaAddress(areaId);
-        isisInterface1.setInterfaceIpAddress(interfaceAddress);
-        isisInterface1.setReservedPacketCircuitType(1);
-        isisInterface1.setL1LanId(lanId);
-        isisHelloPduSender1 = new IsisHelloPduSender(channel, isisInterface1);
-        isisHelloPduSender1.run();
-        assertThat(isisHelloPduSender1, is(notNullValue()));
-
-        isisInterface1.setNetworkType(IsisNetworkType.BROADCAST);
-        isisInterface1.setCircuitId(circuitId);
-        isisInterface1.setSystemId(systemId);
-        isisInterface1.setAreaAddress(areaId);
-        isisInterface1.setInterfaceIpAddress(interfaceAddress);
-        isisInterface1.setReservedPacketCircuitType(2);
-        isisInterface1.setL2LanId(lanId);
-        isisHelloPduSender1 = new IsisHelloPduSender(channel, isisInterface1);
-        isisHelloPduSender1.run();
-        assertThat(isisHelloPduSender1, is(notNullValue()));
-
-        isisInterface1.setNetworkType(IsisNetworkType.BROADCAST);
-        isisInterface1.setCircuitId(circuitId);
-        isisInterface1.setSystemId(systemId);
-        isisInterface1.setAreaAddress(areaId);
-        isisInterface1.setInterfaceIpAddress(interfaceAddress);
-        isisInterface1.setReservedPacketCircuitType(3);
-        isisInterface1.setL1LanId(lanId);
-        isisInterface1.setL2LanId(lanId);
-        isisHelloPduSender1 = new IsisHelloPduSender(channel, isisInterface1);
-        isisHelloPduSender1.run();
-        assertThat(isisHelloPduSender1, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisMessageDecoderTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisMessageDecoderTest.java
deleted file mode 100644
index a370bfe..0000000
--- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisMessageDecoderTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import com.google.common.primitives.Bytes;
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for IsisMessageDecoder.
- */
-public class IsisMessageDecoderTest {
-
-    private final byte[] hello = {
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            -125, 20, 1, 0, 17, 1, 0, 0,
-            2, 51, 51, 51, 51, 51, 51, 0, 100, 5, -39, -126, 1, 4, 3,
-            73, 0, 0, -127, 1, -52, -124, 4, -64, -88, 56, 102
-    };
-    private final byte[] array2 = {0, 0, 0, 0, 0, 0, 0};
-    private final String id = "127.0.0.1";
-    private byte[] array1;
-    private IsisMessageDecoder isisMessageDecoder;
-    private ChannelHandlerContext ctx;
-    private Channel channel;
-    private SocketAddress socketAddress;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        isisMessageDecoder = new IsisMessageDecoder();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        isisMessageDecoder = null;
-    }
-
-    @Test
-    public void testDecode() throws Exception {
-        channel = EasyMock.createMock(Channel.class);
-        socketAddress = InetSocketAddress.createUnresolved(id, 7000);
-        byte[] array = IsisUtil.getPaddingTlvs(hello.length - 17);
-        array1 = Bytes.concat(hello, array);
-        channelBuffer = ChannelBuffers.copiedBuffer(Bytes.concat(hello, array));
-        assertThat(isisMessageDecoder.decode(ctx, channel, channelBuffer), is(nullValue()));
-    }
-}
diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisMessageEncoderTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisMessageEncoderTest.java
deleted file mode 100644
index b976b11..0000000
--- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisMessageEncoderTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import com.google.common.primitives.Bytes;
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for IsisMessageEncoder.
- */
-public class IsisMessageEncoderTest {
-
-    private final String id = "127.0.0.1";
-    private final byte[] hello = {
-            -125, 20, 1, 0, 17, 1, 0, 0,
-            2, 51, 51, 51, 51, 51, 51, 0, 100, 5, -39, -126, 1, 4, 3,
-            73, 0, 0, -127, 1, -52, -124, 4, -64, -88, 56, 102
-    };
-    private IsisMessageEncoder isisMessageEncoder;
-    private ChannelHandlerContext ctx;
-    private Channel channel;
-    private SocketAddress socketAddress;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        channel = EasyMock.createMock(Channel.class);
-        isisMessageEncoder = new IsisMessageEncoder();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        channel = null;
-        isisMessageEncoder = null;
-    }
-
-    /**
-     * Tests encode() method.
-     */
-    @Test
-    public void testEncode() throws Exception {
-        socketAddress = InetSocketAddress.createUnresolved(id, 7000);
-        byte[] array = IsisUtil.getPaddingTlvs(hello.length);
-        channelBuffer = ChannelBuffers.copiedBuffer(Bytes.concat(hello, array));
-        assertThat(isisMessageEncoder.encode(ctx, channel, channelBuffer.array()),
-                   is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisPipelineFactoryTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisPipelineFactoryTest.java
deleted file mode 100644
index 29b06f9..0000000
--- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisPipelineFactoryTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl;
-
-import org.jboss.netty.channel.ChannelPipeline;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisProcess;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for IsisPipelineFactory.
- */
-public class IsisPipelineFactoryTest {
-
-    private IsisPipelineFactory isisPipelineFactory;
-    private IsisChannelHandler isisChannelHandler;
-    private List<IsisProcess> isisProcessList = new ArrayList<>();
-    private Controller controller;
-    private ChannelPipeline channelPipeline;
-    private DefaultIsisProcess isisProcess;
-    private String processId = "1";
-    private DefaultIsisInterface isisInterface;
-    private List<IsisInterface> isisInterfaces = new ArrayList<>();
-
-    @Before
-    public void setUp() throws Exception {
-        controller = new Controller();
-        isisProcess = new DefaultIsisProcess();
-        isisInterface = new DefaultIsisInterface();
-        isisInterfaces.add(isisInterface);
-        isisProcess.setIsisInterfaceList(isisInterfaces);
-        isisProcess.setProcessId(processId);
-        isisProcessList.add(isisProcess);
-        isisChannelHandler = new IsisChannelHandler(controller, isisProcessList);
-        isisPipelineFactory = new IsisPipelineFactory(isisChannelHandler);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        controller = null;
-        isisChannelHandler = null;
-        isisPipelineFactory = null;
-    }
-
-    /**
-     * Tests getPipeline() method.
-     */
-    @Test
-    public void testGetPipeline() throws Exception {
-        channelPipeline = isisPipelineFactory.getPipeline();
-        assertThat(channelPipeline, is(instanceOf(ChannelPipeline.class)));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbAgeTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbAgeTest.java
deleted file mode 100644
index 51388ac..0000000
--- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbAgeTest.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl.lsdb;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.controller.IsisLspBin;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.pdu.LsPdu;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test case for DefaultIsisLsdbAge.
- */
-public class DefaultIsisLsdbAgeTest {
-    private DefaultIsisLsdbAge defaultIsisLsdbAge;
-    private IsisLspBin isisLspBin;
-    private int resultInt;
-    private IsisLspBin resultLspBin;
-    private DefaultLspWrapper lspWrapper;
-    private LsPdu lsPdu;
-    private IsisHeader isisHeader;
-    private String lspId = "1234.1234.1234";
-
-    @Before
-    public void setUp() throws Exception {
-        defaultIsisLsdbAge = new DefaultIsisLsdbAge();
-        isisLspBin = new DefaultIsisLspBin(1);
-        lspWrapper = new DefaultLspWrapper();
-        lspWrapper.setBinNumber(1);
-        isisHeader = new IsisHeader();
-        lsPdu = new LsPdu(isisHeader);
-        lsPdu.setLspId(lspId);
-        lspWrapper.setLsPdu(lsPdu);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        defaultIsisLsdbAge = null;
-        isisLspBin = null;
-    }
-
-    /**
-     * Tests ageCounter() method.
-     */
-    @Test
-    public void testAgeCounter() throws Exception {
-        resultInt = defaultIsisLsdbAge.ageCounter();
-        assertThat(resultInt, is(0));
-    }
-
-    /**
-     * Tests ageCounterRollOver() method.
-     */
-    @Test
-    public void testAgeCounterRollOver() throws Exception {
-        resultInt = defaultIsisLsdbAge.ageCounterRollOver();
-        assertThat(resultInt, is(0));
-    }
-
-    /**
-     * Tests addLspBin() method.
-     */
-    @Test
-    public void testAddLspBin() throws Exception {
-        defaultIsisLsdbAge.addLspBin(1400, isisLspBin);
-        resultLspBin = defaultIsisLsdbAge.getLspBin(1);
-        assertThat(resultLspBin, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLspBin() method.
-     */
-    @Test
-    public void testGetLspBin() throws Exception {
-        defaultIsisLsdbAge.addLspBin(1, isisLspBin);
-        resultLspBin = defaultIsisLsdbAge.getLspBin(1);
-        assertThat(resultLspBin, is(notNullValue()));
-    }
-
-    /**
-     * Tests removeLspFromBin() method.
-     */
-    @Test
-    public void testRemoveLspFromBin() throws Exception {
-        defaultIsisLsdbAge.addLspBin(1400, isisLspBin);
-        defaultIsisLsdbAge.removeLspFromBin(lspWrapper);
-        assertThat(resultLspBin, is(nullValue()));
-    }
-
-    /**
-     * Tests age2Bin() method.
-     */
-    @Test
-    public void testAge2Bin() throws Exception {
-        defaultIsisLsdbAge.age2Bin(1);
-        assertThat(defaultIsisLsdbAge, is(notNullValue()));
-
-        defaultIsisLsdbAge.age2Bin(-1);
-        assertThat(defaultIsisLsdbAge, is(notNullValue()));
-    }
-
-    /**
-     * Tests startDbAging() method.
-     */
-    @Test
-    public void testStartDbAging() throws Exception {
-        defaultIsisLsdbAge.startDbAging();
-        assertThat(defaultIsisLsdbAge, is(notNullValue()));
-    }
-
-    /**
-     * Tests ageLsp() method.
-     */
-    @Test
-    public void testAgeLsp() throws Exception {
-        defaultIsisLsdbAge.age2Bin(1);
-        defaultIsisLsdbAge.startDbAging();
-        defaultIsisLsdbAge.ageLsp();
-        assertThat(defaultIsisLsdbAge, is(notNullValue()));
-    }
-
-    /**
-     * Tests maxAgeLsa() method.
-     */
-    @Test
-    public void testMaxAgeLsa() throws Exception {
-        defaultIsisLsdbAge.age2Bin(1);
-        defaultIsisLsdbAge.startDbAging();
-        defaultIsisLsdbAge.maxAgeLsa();
-        assertThat(defaultIsisLsdbAge, is(notNullValue()));
-
-        defaultIsisLsdbAge.age2Bin(1400);
-        defaultIsisLsdbAge.startDbAging();
-        defaultIsisLsdbAge.maxAgeLsa();
-        assertThat(defaultIsisLsdbAge, is(notNullValue()));
-    }
-
-    /**
-     * Tests refreshLsa() method.
-     */
-    @Test
-    public void testRefreshLsa() throws Exception {
-        defaultIsisLsdbAge.age2Bin(1);
-        defaultIsisLsdbAge.startDbAging();
-        defaultIsisLsdbAge.refreshLsa();
-        assertThat(defaultIsisLsdbAge, is(notNullValue()));
-
-        defaultIsisLsdbAge.age2Bin(1400);
-        defaultIsisLsdbAge.startDbAging();
-        defaultIsisLsdbAge.refreshLsa();
-        assertThat(defaultIsisLsdbAge, is(notNullValue()));
-    }
-}
-
diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbTest.java
deleted file mode 100644
index de19862..0000000
--- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbTest.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl.lsdb;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.controller.IsisLsdb;
-import org.onosproject.isis.controller.IsisLsdbAge;
-import org.onosproject.isis.controller.IsisPduType;
-import org.onosproject.isis.controller.LspWrapper;
-import org.onosproject.isis.controller.impl.DefaultIsisInterface;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.pdu.AttachedToOtherAreas;
-import org.onosproject.isis.io.isispacket.pdu.LsPdu;
-import org.onosproject.isis.io.util.IsisConstants;
-
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test case for DefaultIsisLsdb.
- */
-public class DefaultIsisLsdbTest {
-    private final int l1LspSeqNo = IsisConstants.STARTLSSEQUENCENUM;
-    private final int l2LspSeqNo = IsisConstants.STARTLSSEQUENCENUM;
-    private final String srcId = "1111.1111.1111";
-    private DefaultIsisLsdb defaultIsisLsdb;
-    private IsisLsdbAge lsdbAge = null;
-    private int resultInt;
-    private Map<String, LspWrapper> resultMap = new ConcurrentHashMap<>();
-    private IsisLsdb resultLsdb;
-    private LspWrapper resultLspWrapper;
-    private List<LspWrapper> lspWrapperList;
-    private LsPdu lsPdu;
-    private IsisHeader isisHeader;
-    private DefaultIsisInterface defaultIsisInterface;
-    private String lspId = "1234.1234.1234.00-00";
-    private String result;
-
-    @Before
-    public void setUp() throws Exception {
-        defaultIsisInterface = new DefaultIsisInterface();
-        isisHeader = new IsisHeader();
-        lsPdu = new LsPdu(isisHeader);
-        lsPdu.setLspId(lspId);
-        lsPdu.setAttachedToOtherAreas(AttachedToOtherAreas.DEFAULTMETRIC);
-        lsPdu.setIsisPduType(IsisPduType.L1LSPDU.value());
-        defaultIsisLsdb = new DefaultIsisLsdb();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        defaultIsisLsdb = null;
-    }
-
-    /**
-     * Tests initializeDb() method.
-     */
-    @Test
-    public void testInitializeDb() throws Exception {
-        defaultIsisLsdb.initializeDb();
-        assertThat(lsdbAge, is(nullValue()));
-    }
-
-    /**
-     * Tests setL1LspSeqNo() method.
-     */
-    @Test
-    public void testSetL1LspSeqNo() throws Exception {
-        defaultIsisLsdb.setL1LspSeqNo(l1LspSeqNo);
-        assertThat(defaultIsisLsdb, is(notNullValue()));
-    }
-
-    /**
-     * Tests setL2LspSeqNo() method.
-     */
-    @Test
-    public void testSetL2LspSeqNo() throws Exception {
-        defaultIsisLsdb.setL2LspSeqNo(l2LspSeqNo);
-        assertThat(defaultIsisLsdb, is(notNullValue()));
-    }
-
-    /**
-     * Tests setL2LspSeqNo() method.
-     */
-    @Test
-    public void testLspKey() throws Exception {
-        defaultIsisLsdb.lspKey(srcId);
-        assertThat(defaultIsisLsdb, is(notNullValue()));
-    }
-
-    /**
-     * Tests setL2LspSeqNo() method.
-     */
-    @Test
-    public void testGetL1Db() throws Exception {
-        resultMap = defaultIsisLsdb.getL1Db();
-        assertThat(resultMap.isEmpty(), is(true));
-    }
-
-    /**
-     * Tests setL2LspSeqNo() method.
-     */
-    @Test
-    public void testGetL2Db() throws Exception {
-        resultMap = defaultIsisLsdb.getL2Db();
-        assertThat(resultMap.isEmpty(), is(true));
-    }
-
-    /**
-     * Tests setL2LspSeqNo() method.
-     */
-    @Test
-    public void testIsisLsdb() throws Exception {
-        resultLsdb = defaultIsisLsdb.isisLsdb();
-        assertThat(resultLsdb, is(notNullValue()));
-    }
-
-    /**
-     * Tests findLsp() method.
-     */
-    @Test
-    public void testFindLsp() throws Exception {
-        resultLspWrapper = defaultIsisLsdb.findLsp(IsisPduType.L1HELLOPDU, srcId);
-        assertThat(resultLspWrapper, is(nullValue()));
-    }
-
-    /**
-     * Tests allLspHeaders() method.
-     */
-    @Test
-    public void testAllLspHeaders() throws Exception {
-        defaultIsisLsdb.addLsp(lsPdu, false, defaultIsisInterface);
-        lspWrapperList = defaultIsisLsdb.allLspHeaders(true);
-        assertThat(lspWrapperList, is(notNullValue()));
-
-        defaultIsisLsdb.addLsp(lsPdu, true, defaultIsisInterface);
-        lspWrapperList = defaultIsisLsdb.allLspHeaders(true);
-        assertThat(lspWrapperList, is(notNullValue()));
-    }
-
-    /**
-     * Tests isNewerOrSameLsp() method.
-     */
-    @Test
-    public void testIsNewerOrSameLsp() throws Exception {
-        result = defaultIsisLsdb.isNewerOrSameLsp(lsPdu, lsPdu);
-        assertThat(result, is("same"));
-    }
-
-    /**
-     * Tests lsSequenceNumber() method.
-     */
-    @Test
-    public void testLsSequenceNumber() throws Exception {
-        resultInt = defaultIsisLsdb.lsSequenceNumber(IsisPduType.L1LSPDU);
-        assertThat(resultInt, is(1));
-
-        resultInt = defaultIsisLsdb.lsSequenceNumber(IsisPduType.L2LSPDU);
-        assertThat(resultInt, is(1));
-
-        resultInt = defaultIsisLsdb.lsSequenceNumber(IsisPduType.L1CSNP);
-        assertThat(resultInt, is(1));
-    }
-
-    /**
-     * Tests deleteLsp() method.
-     */
-    @Test
-    public void testdeleteLsp() throws Exception {
-        defaultIsisLsdb.deleteLsp(lsPdu);
-        assertThat(defaultIsisLsdb, is(notNullValue()));
-
-        lsPdu.setIsisPduType(IsisPduType.L2LSPDU.value());
-        defaultIsisLsdb.deleteLsp(lsPdu);
-        assertThat(defaultIsisLsdb, is(notNullValue()));
-
-        lsPdu.setIsisPduType(IsisPduType.L1CSNP.value());
-        defaultIsisLsdb.deleteLsp(lsPdu);
-        assertThat(defaultIsisLsdb, is(notNullValue()));
-    }
-}
-
diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLspBinTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLspBinTest.java
deleted file mode 100644
index 9ed993c..0000000
--- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLspBinTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl.lsdb;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.controller.LspWrapper;
-
-import java.util.Map;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test case for DefaultIsisLspBin.
- */
-public class DefaultIsisLspBinTest {
-
-    private DefaultIsisLspBin defaultIsisLspBin;
-    private int result;
-    private String key = "1";
-    private LspWrapper lspWrapper;
-    private LspWrapper result1;
-    private Map<String, LspWrapper> listOfLsp;
-
-    @Before
-    public void setUp() throws Exception {
-        defaultIsisLspBin = new DefaultIsisLspBin(1);
-        lspWrapper = new DefaultLspWrapper();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        defaultIsisLspBin = null;
-    }
-
-    /**
-     * Tests addIsisLsp() method.
-     */
-    @Test
-    public void testAddIsisLsp() throws Exception {
-        defaultIsisLspBin.addIsisLsp(key, lspWrapper);
-        assertThat(defaultIsisLspBin, is(notNullValue()));
-    }
-
-    /**
-     * Tests isisLsp() method.
-     */
-    @Test
-    public void testIsisLsp() throws Exception {
-        defaultIsisLspBin.addIsisLsp(key, lspWrapper);
-        result1 = defaultIsisLspBin.isisLsp(key);
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests removeIsisLsp() method.
-     */
-    @Test
-    public void testRemoveIsisLsp() throws Exception {
-        defaultIsisLspBin.addIsisLsp(key, lspWrapper);
-        defaultIsisLspBin.removeIsisLsp(key, lspWrapper);
-        assertThat(defaultIsisLspBin, is(notNullValue()));
-    }
-
-    /**
-     * Tests listOfLsp() method.
-     */
-    @Test
-    public void testListOfLsp() throws Exception {
-        defaultIsisLspBin.addIsisLsp(key, lspWrapper);
-        listOfLsp = defaultIsisLspBin.listOfLsp();
-        assertThat(listOfLsp.size(), is(1));
-    }
-
-    /**
-     * Tests binNumber() method.
-     */
-    @Test
-    public void testBinNumber() throws Exception {
-        result = defaultIsisLspBin.binNumber();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests toString() method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(defaultIsisLspBin.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultLspWrapperTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultLspWrapperTest.java
deleted file mode 100644
index d495522..0000000
--- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultLspWrapperTest.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl.lsdb;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisLsdbAge;
-import org.onosproject.isis.controller.IsisPduType;
-import org.onosproject.isis.controller.impl.DefaultIsisInterface;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.pdu.LsPdu;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test case for DefaultLspWrapper.
- */
-public class DefaultLspWrapperTest {
-
-    private DefaultLspWrapper defaultLspWrapper;
-    private String processing = "processing";
-    private String result;
-    private int result1;
-    private IsisInterface isisInterface;
-    private IsisInterface result2;
-    private IsisPduType isisPduType;
-    private boolean result3;
-    private LsPdu lsPdu;
-    private LsPdu pdu;
-    private DefaultIsisLsdbAge defaultIsisLsdbAge;
-    private IsisLsdbAge lsdbAge;
-
-    @Before
-    public void setUp() throws Exception {
-        defaultLspWrapper = new DefaultLspWrapper();
-        isisInterface = new DefaultIsisInterface();
-        pdu = new LsPdu(new IsisHeader());
-        defaultIsisLsdbAge = new DefaultIsisLsdbAge();
-        defaultIsisLsdbAge.startDbAging();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        defaultLspWrapper = null;
-    }
-
-    /**
-     * Tests lspProcessing() getter method.
-     */
-    @Test
-    public void testLspProcessing() throws Exception {
-        defaultLspWrapper.setLspProcessing(processing);
-        result = defaultLspWrapper.lspProcessing();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests lspProcessing() setter method.
-     */
-    @Test
-    public void testSetLspProcessing() throws Exception {
-        defaultLspWrapper.setLspProcessing(processing);
-        result = defaultLspWrapper.lspProcessing();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests lspAgeReceived() getter method.
-     */
-    @Test
-    public void testLspAgeReceived() throws Exception {
-        defaultLspWrapper.setLspAgeReceived(1);
-        result1 = defaultLspWrapper.lspAgeReceived();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests lspAgeReceived() setter method.
-     */
-    @Test
-    public void testSetLspAgeReceived() throws Exception {
-        defaultLspWrapper.setLspAgeReceived(1);
-        result1 = defaultLspWrapper.lspAgeReceived();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests lspAgeReceived() getter method.
-     */
-    @Test
-    public void testIsisInterface() throws Exception {
-        defaultLspWrapper.setIsisInterface(isisInterface);
-        result2 = defaultLspWrapper.isisInterface();
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests lspAgeReceived() getter method.
-     */
-    @Test
-    public void testSetIsisInterface() throws Exception {
-        defaultLspWrapper.setIsisInterface(isisInterface);
-        result2 = defaultLspWrapper.isisInterface();
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests ageCounterWhenReceived() getter method.
-     */
-    @Test
-    public void testAgeCounterWhenReceived() throws Exception {
-        defaultLspWrapper.setAgeCounterWhenReceived(1);
-        result1 = defaultLspWrapper.ageCounterWhenReceived();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests ageCounterWhenReceived() setter method.
-     */
-    @Test
-    public void testSetAgeCounterWhenReceived() throws Exception {
-        defaultLspWrapper.setAgeCounterWhenReceived(1);
-        result1 = defaultLspWrapper.ageCounterWhenReceived();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests ageCounterRollOverWhenAdded() getter method.
-     */
-    @Test
-    public void testAgeCounterRollOverWhenAdded() throws Exception {
-        defaultLspWrapper.setAgeCounterRollOverWhenAdded(1);
-        result1 = defaultLspWrapper.ageCounterRollOverWhenAdded();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests ageCounterRollOverWhenAdded() setter method.
-     */
-    @Test
-    public void testSetAgeCounterRollOverWhenAdded() throws Exception {
-        defaultLspWrapper.setAgeCounterRollOverWhenAdded(1);
-        result1 = defaultLspWrapper.ageCounterRollOverWhenAdded();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests lspType() getter method.
-     */
-    @Test
-    public void testLspType() throws Exception {
-        defaultLspWrapper.setLspType(IsisPduType.L1LSPDU);
-        isisPduType = defaultLspWrapper.lspType();
-        assertThat(isisPduType, is(IsisPduType.L1LSPDU));
-    }
-
-    /**
-     * Tests lspType() setter method.
-     */
-    @Test
-    public void testSetLspType() throws Exception {
-        defaultLspWrapper.setLspType(IsisPduType.L1LSPDU);
-        isisPduType = defaultLspWrapper.lspType();
-        assertThat(isisPduType, is(IsisPduType.L1LSPDU));
-    }
-
-    /**
-     * Tests isSelfOriginated() getter method.
-     */
-    @Test
-    public void testIsSelfOriginated() throws Exception {
-        defaultLspWrapper.setSelfOriginated(true);
-        result3 = defaultLspWrapper.isSelfOriginated();
-        assertThat(result3, is(true));
-    }
-
-    /**
-     * Tests isSelfOriginated() setter method.
-     */
-    @Test
-    public void testSetSelfOriginated() throws Exception {
-        defaultLspWrapper.setSelfOriginated(true);
-        result3 = defaultLspWrapper.isSelfOriginated();
-        assertThat(result3, is(true));
-    }
-
-    /**
-     * Tests binNumber() getter method.
-     */
-    @Test
-    public void testBinNumber() throws Exception {
-        defaultLspWrapper.setBinNumber(1);
-        result1 = defaultLspWrapper.binNumber();
-        assertThat(result1, is(1));
-    }
-
-    /**
-     * Tests binNumber() setter method.
-     */
-    @Test
-    public void testSetBinNumber() throws Exception {
-        defaultLspWrapper.setBinNumber(1);
-        result1 = defaultLspWrapper.binNumber();
-        assertThat(result1, is(1));
-    }
-
-    /**
-     * Tests lsPdu() getter method.
-     */
-    @Test
-    public void testLsPdu() throws Exception {
-        defaultLspWrapper.setLsPdu(pdu);
-        lsPdu = defaultLspWrapper.lsPdu();
-        assertThat(lsPdu, is(pdu));
-    }
-
-    /**
-     * Tests lsPdu() setter method.
-     */
-    @Test
-    public void testSetLsPdu() throws Exception {
-        defaultLspWrapper.setLsPdu(pdu);
-        lsPdu = defaultLspWrapper.lsPdu();
-        assertThat(lsPdu, is(pdu));
-    }
-
-    /**
-     * Tests lsdbAge() getter method.
-     */
-    @Test
-    public void testlsdbAge() throws Exception {
-        defaultLspWrapper.setLsdbAge(defaultIsisLsdbAge);
-        lsdbAge = defaultLspWrapper.lsdbAge();
-        assertThat(lsdbAge, is(defaultIsisLsdbAge));
-    }
-
-    /**
-     * Tests lsdbAge() setter method.
-     */
-    @Test
-    public void testSetLsdbAge() throws Exception {
-        defaultLspWrapper.setLsdbAge(defaultIsisLsdbAge);
-        lsdbAge = defaultLspWrapper.lsdbAge();
-        assertThat(lsdbAge, is(defaultIsisLsdbAge));
-    }
-
-    /**
-     * Tests remainingLifetime() getter method.
-     */
-    @Test
-    public void testRemainingLifetime() throws Exception {
-        defaultLspWrapper.setLsdbAge(defaultIsisLsdbAge);
-        defaultLspWrapper.setAgeCounterWhenReceived(1);
-        defaultLspWrapper.currentAge();
-        defaultLspWrapper.setRemainingLifetime(1);
-        result1 = defaultLspWrapper.remainingLifetime();
-        assertThat(result1, is(1));
-    }
-
-    /**
-     * Tests remainingLifetime() setter method.
-     */
-    @Test
-    public void testSetRemainingLifetime() throws Exception {
-        defaultLspWrapper.setLsdbAge(defaultIsisLsdbAge);
-        defaultLspWrapper.setAgeCounterWhenReceived(1);
-        defaultLspWrapper.currentAge();
-        defaultLspWrapper.setRemainingLifetime(1);
-        result1 = defaultLspWrapper.remainingLifetime();
-        assertThat(result1, is(1));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/IsisLspQueueConsumerTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/IsisLspQueueConsumerTest.java
deleted file mode 100644
index 98684ad..0000000
--- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/IsisLspQueueConsumerTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.controller.impl.lsdb;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.controller.impl.DefaultIsisInterface;
-
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.BlockingQueue;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test case for IsisLspQueueConsumer.
- */
-public class IsisLspQueueConsumerTest {
-
-    private IsisLspQueueConsumer isisLspQueueConsumer;
-    private BlockingQueue blockingQueue = new ArrayBlockingQueue(1024);
-    private DefaultLspWrapper lspWrapper;
-    private DefaultLspWrapper lspWrapper1;
-    private SocketAddress socketAddress = InetSocketAddress.createUnresolved("127.0.0.1", 7000);
-
-    @Before
-    public void setUp() throws Exception {
-        lspWrapper = new DefaultLspWrapper();
-        lspWrapper.setLspProcessing("refreshLsp");
-        lspWrapper.setSelfOriginated(true);
-        lspWrapper.setIsisInterface(new DefaultIsisInterface());
-        lspWrapper1 = new DefaultLspWrapper();
-        lspWrapper1.setLspProcessing("maxAgeLsp");
-        lspWrapper1.setIsisInterface(new DefaultIsisInterface());
-        blockingQueue.add(lspWrapper);
-        blockingQueue.add(lspWrapper1);
-        isisLspQueueConsumer = new IsisLspQueueConsumer(blockingQueue);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        isisLspQueueConsumer = null;
-    }
-
-    /**
-     * Tests run() method.
-     */
-    @Test
-    public void testRun() throws Exception {
-        isisLspQueueConsumer.run();
-        assertThat(isisLspQueueConsumer, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/BUILD b/protocols/isis/isisio/BUILD
deleted file mode 100644
index 1aabfcf..0000000
--- a/protocols/isis/isisio/BUILD
+++ /dev/null
@@ -1,8 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + NETTY + JAXB + [
-    "@io_netty_netty//jar",
-    "//protocols/isis/api:onos-protocols-isis-api",
-]
-
-osgi_jar_with_tests(
-    deps = COMPILE_DEPS,
-)
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/IsisErrorType.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/IsisErrorType.java
deleted file mode 100644
index d2ae7f7..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/IsisErrorType.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.exceptions;
-
-/**
- * Defines all error codes and error sub codes.
- */
-public final class IsisErrorType {
-
-    //Represents an invalid ISIS message header
-    public static final byte MESSAGE_HEADER_ERROR = 1;
-    //Represents an invalid ISIS message body
-    public static final byte ISIS_MESSAGE_ERROR = 2;
-    //Message Header error sub codes
-    //Represents an invalid ISIS message length
-    public static final byte BAD_MESSAGE_LENGTH = 3;
-    //Represents an invalid ISIS message
-    public static final byte BAD_MESSAGE = 4;
-
-    /**
-     * Creates an instance of ISIS error type.
-     */
-    private IsisErrorType() {
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/IsisParseException.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/IsisParseException.java
deleted file mode 100644
index 8da0522..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/IsisParseException.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.exceptions;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Representation of a custom exception for ISIS.
- */
-public class IsisParseException extends Exception {
-
-    private static final long serialVersionUID = 1L;
-    private byte errorCode;
-    private byte errorSubCode;
-
-    /**
-     * Creates a new ISIS exception.
-     */
-    public IsisParseException() {
-        super();
-    }
-
-    /**
-     * Creates a new ISIS exception based on the given arguments.
-     *
-     * @param message the detail of exception in string
-     * @param cause   underlying cause of the error
-     */
-    public IsisParseException(final String message, final Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Creates a new ISIS exception for the given message.
-     *
-     * @param message the detail of exception in string
-     */
-    public IsisParseException(final String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new ISIS exception from throwable instance.
-     *
-     * @param cause underlying cause of the error
-     */
-    public IsisParseException(final Throwable cause) {
-        super(cause);
-    }
-
-    /**
-     * Creates a new ISIS exception from error code and error sub code.
-     *
-     * @param errorCode    error code of ISIS message
-     * @param errorSubCode error sub code of ISIS message
-     */
-    public IsisParseException(final byte errorCode, final byte errorSubCode) {
-        super();
-        this.errorCode = errorCode;
-        this.errorSubCode = errorSubCode;
-    }
-
-    /**
-     * Returns error code for this exception.
-     *
-     * @return error code for this exception
-     */
-    public byte errorCode() {
-        return this.errorCode;
-    }
-
-    /**
-     * Returns error sub code for this exception.
-     *
-     * @return error sub code for this exception
-     */
-    public byte errorSubCode() {
-        return this.errorSubCode;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("errorCode", errorCode)
-                .add("errorSubCode", errorSubCode)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/package-info.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/package-info.java
deleted file mode 100644
index 645a6da..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the ISIS protocol exceptions.
- */
-package org.onosproject.isis.exceptions;
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/IsisHeader.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/IsisHeader.java
deleted file mode 100644
index a80eac0..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/IsisHeader.java
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.MacAddress;
-import org.onosproject.isis.controller.IsisMessage;
-import org.onosproject.isis.controller.IsisPduType;
-
-/**
- * Representation of ISIS message header.
- */
-public class IsisHeader implements IsisMessage {
-
-    private MacAddress sourceMac;
-    private int interfaceIndex;
-    private MacAddress interfaceMac;
-    private int isisPduType;
-    private byte irpDiscriminator;
-    private byte pduHeaderLength;
-    private byte version2;
-    private byte idLength;
-    private byte version;
-    private byte reserved;
-    private byte maximumAreaAddresses;
-
-    /**
-     * Returns the interface index on which the message received.
-     *
-     * @return interface index on which the message received
-     */
-    public int interfaceIndex() {
-        return interfaceIndex;
-    }
-
-    /**
-     * Sets the interface index on which the message received.
-     *
-     * @param interfaceIndex interface index on which the message received
-     */
-    public void setInterfaceIndex(int interfaceIndex) {
-        this.interfaceIndex = interfaceIndex;
-    }
-
-    /**
-     * Returns the interface mac address on which the message received.
-     *
-     * @return interface mac address on which the message received
-     */
-    public MacAddress interfaceMac() {
-        return interfaceMac;
-    }
-
-    /**
-     * Returns the mac address of the message sender.
-     *
-     * @return mac address of the message sender
-     */
-    public MacAddress sourceMac() {
-        return sourceMac;
-    }
-
-    /**
-     * Sets the mac address of the message sender.
-     *
-     * @param sourceMac mac address of the message sender
-     */
-    public void setSourceMac(MacAddress sourceMac) {
-        this.sourceMac = sourceMac;
-    }
-
-    /**
-     * Sets the interface mac address on which the message received.
-     *
-     * @param interfaceMac mac address on which the message received
-     */
-    public void setInterfaceMac(MacAddress interfaceMac) {
-        this.interfaceMac = interfaceMac;
-    }
-
-    /**
-     * Returns the version of TLV header.
-     *
-     * @return version version of TLV header
-     */
-    public byte version2() {
-        return version2;
-    }
-
-    /**
-     * Sets the version of TLV header.
-     *
-     * @param version2 version of TLV header
-     */
-    public void setVersion2(byte version2) {
-        this.version2 = version2;
-    }
-
-    /**
-     * Returns maximum area address.
-     *
-     * @return maximum area address
-     */
-    public byte maximumAreaAddresses() {
-        return maximumAreaAddresses;
-    }
-
-    /**
-     * Sets maximum area address.
-     *
-     * @param maximumAreaAddresses maximum area address
-     */
-    public void setMaximumAreaAddresses(byte maximumAreaAddresses) {
-        this.maximumAreaAddresses = maximumAreaAddresses;
-    }
-
-    /**
-     * Returns reserved field value on which data received.
-     *
-     * @return reserved
-     */
-    public byte reserved() {
-        return reserved;
-    }
-
-    /**
-     * Sets reserved.
-     *
-     * @param reserved reserved
-     */
-    public void setReserved(byte reserved) {
-        this.reserved = reserved;
-    }
-
-    /**
-     * Returns version.
-     *
-     * @return version
-     */
-    public byte version() {
-        return version;
-    }
-
-    /**
-     * Returns ID length.
-     *
-     * @return ID length
-     */
-    public byte idLength() {
-        return idLength;
-    }
-
-    /**
-     * Sets ID length.
-     *
-     * @param idLength ID length
-     */
-    public void setIdLength(byte idLength) {
-        this.idLength = idLength;
-    }
-
-    /**
-     * Returns the PDU type.
-     *
-     * @return PDU type
-     */
-    public int pduType() {
-
-        return this.isisPduType;
-    }
-
-    /**
-     * Sets PDU type.
-     *
-     * @param isisPduType PDU type
-     */
-    public void setIsisPduType(int isisPduType) {
-        this.isisPduType = isisPduType;
-    }
-
-    /**
-     * Sets protocol ID.
-     *
-     * @param version protocol ID
-     */
-    public void setVersion(byte version) {
-        this.version = version;
-    }
-
-    /**
-     * Returns length indicator.
-     *
-     * @return length indicator
-     */
-    public byte pduHeaderLength() {
-        return pduHeaderLength;
-    }
-
-    /**
-     * Sets length indicator.
-     *
-     * @param pduHeaderLength length indicator
-     */
-    public void setPduHeaderLength(byte pduHeaderLength) {
-        this.pduHeaderLength = pduHeaderLength;
-    }
-
-    /**
-     * Returns IRP discriminator.
-     *
-     * @return IRP discriminator
-     */
-    public byte irpDiscriminator() {
-        return irpDiscriminator;
-    }
-
-    /**
-     * Sets IRP discriminator.
-     *
-     * @param irpDiscriminator IRP discriminator
-     */
-    public void setIrpDiscriminator(byte irpDiscriminator) {
-
-        this.irpDiscriminator = irpDiscriminator;
-    }
-
-    @Override
-    public IsisPduType isisPduType() {
-
-        return IsisPduType.get(this.isisPduType);
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        //implemented in the sub classes
-    }
-
-    @Override
-    public byte[] asBytes() {
-        return null;
-    }
-
-    /**
-     * Populates ISIS header.
-     *
-     * @param isisHeader ISIS header
-     */
-    public void populateHeader(IsisHeader isisHeader) {
-        this.setIrpDiscriminator(isisHeader.irpDiscriminator());
-        this.setPduHeaderLength(isisHeader.pduHeaderLength());
-        this.setVersion(isisHeader.version());
-        this.setIdLength(isisHeader.idLength());
-        this.setIsisPduType(isisHeader.pduType());
-        this.setVersion2(isisHeader.version2());
-        this.setReserved(isisHeader.reserved());
-        this.setMaximumAreaAddresses(isisHeader.maximumAreaAddresses());
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/IsisMessageReader.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/IsisMessageReader.java
deleted file mode 100644
index 883a892..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/IsisMessageReader.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.controller.IsisMessage;
-import org.onosproject.isis.exceptions.IsisErrorType;
-import org.onosproject.isis.exceptions.IsisParseException;
-import org.onosproject.isis.io.isispacket.pdu.Csnp;
-import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu;
-import org.onosproject.isis.io.isispacket.pdu.LsPdu;
-import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu;
-import org.onosproject.isis.io.isispacket.pdu.Psnp;
-import org.onosproject.isis.io.util.IsisConstants;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Represents ISIS message reader.
- */
-public class IsisMessageReader {
-
-    private static final Logger log = LoggerFactory.getLogger(IsisMessageReader.class);
-
-    /**
-     * Reads from ISIS packet from buffer.
-     *
-     * @param channelBuffer buffer
-     * @return ISIS message
-     * @throws IsisParseException exception
-     */
-    public IsisMessage readFromBuffer(ChannelBuffer channelBuffer) throws IsisParseException {
-
-        int dataLength = channelBuffer.readableBytes();
-        log.debug("IsisMessageReader::readFromBuffer Data length {}", dataLength);
-        if (channelBuffer.readableBytes() < IsisConstants.PDU_LENGTH) {
-            log.debug("Packet should have minimum length...");
-            throw new IsisParseException(IsisErrorType.MESSAGE_HEADER_ERROR, IsisErrorType.BAD_MESSAGE_LENGTH);
-        }
-        IsisHeader isisHeader = getIsisHeader(channelBuffer);
-        int totalLength = 0;
-        IsisMessage isisMessage = null;
-        switch (isisHeader.isisPduType()) {
-            case L1HELLOPDU:
-            case L2HELLOPDU:
-                isisMessage = new L1L2HelloPdu(isisHeader);
-                totalLength = channelBuffer.getShort(IsisConstants.PDULENGTHPOSITION);
-                break;
-            case P2PHELLOPDU:
-                isisMessage = new P2PHelloPdu(isisHeader);
-                totalLength = channelBuffer.getShort(IsisConstants.PDULENGTHPOSITION);
-                break;
-            case L1LSPDU:
-            case L2LSPDU:
-                isisMessage = new LsPdu(isisHeader);
-                totalLength = channelBuffer.getShort(8);
-                break;
-            case L1CSNP:
-            case L2CSNP:
-                isisMessage = new Csnp(isisHeader);
-                totalLength = channelBuffer.getShort(8);
-                break;
-            case L1PSNP:
-            case L2PSNP:
-                isisMessage = new Psnp(isisHeader);
-                totalLength = channelBuffer.getShort(8);
-                break;
-            default:
-                log.debug("Message Reader[Decoder] - Unknown PDU type..!!!");
-                break;
-        }
-
-        if (isisMessage != null) {
-            try {
-                int bodyLength = totalLength - IsisConstants.COMMONHEADERLENGTH;
-                isisMessage.readFrom(channelBuffer.readBytes(bodyLength));
-
-            } catch (Exception e) {
-                throw new IsisParseException(IsisErrorType.ISIS_MESSAGE_ERROR,
-                                             IsisErrorType.BAD_MESSAGE);
-            }
-
-        }
-
-        return isisMessage;
-    }
-
-    /**
-     * Gets ISIS header.
-     *
-     * @param channelBuffer ISIS header
-     * @return ISIS header
-     */
-    private IsisHeader getIsisHeader(ChannelBuffer channelBuffer) {
-
-        IsisHeader isisHeader = new IsisHeader();
-        isisHeader.setIrpDiscriminator(channelBuffer.readByte());
-        isisHeader.setPduHeaderLength(channelBuffer.readByte());
-        isisHeader.setVersion(channelBuffer.readByte());
-        isisHeader.setIdLength(channelBuffer.readByte());
-        isisHeader.setIsisPduType(channelBuffer.readByte());
-        isisHeader.setVersion2(channelBuffer.readByte());
-        isisHeader.setReserved(channelBuffer.readByte());
-        isisHeader.setMaximumAreaAddresses(channelBuffer.readByte());
-
-        return isisHeader;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/package-info.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/package-info.java
deleted file mode 100644
index c359bf7..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the ISIS protocol.
- */
-package org.onosproject.isis.io.isispacket;
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/AttachedToOtherAreas.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/AttachedToOtherAreas.java
deleted file mode 100644
index 72e8c0f..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/AttachedToOtherAreas.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.pdu;
-
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Representation of attached to other areas.
- */
-public enum AttachedToOtherAreas {
-    DEFAULTMETRIC(1),
-    DELAYMETRIC(2),
-    EXPENSEMETRIC(4),
-    ERRORMETRIC(8),
-    NONE(0);
-    // Reverse lookup table
-    private static final Map<Integer, AttachedToOtherAreas> LOOKUP = new HashMap<>();
-
-    // Populate the lookup table on loading time
-    static {
-        for (AttachedToOtherAreas attachedToOtherAreas :
-                EnumSet.allOf(AttachedToOtherAreas.class)) {
-            LOOKUP.put(attachedToOtherAreas.value(), attachedToOtherAreas);
-        }
-    }
-
-    private int value;
-
-    /**
-     * Returns the attached to other areas value.
-     *
-     * @param value attached to other areas value
-     */
-    AttachedToOtherAreas(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Returns the value for attached to other areas from pdu type value.
-     *
-     * @param pduTypeValue to get attached areas value
-     * @return attachedToOtherAreas value of the enum
-     */
-    public static AttachedToOtherAreas get(int pduTypeValue) {
-        return LOOKUP.get(pduTypeValue);
-    }
-
-    /**
-     * Returns the value representing PDU type.
-     *
-     * @return value represents PDU type
-     */
-    public int value() {
-        return value;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/Csnp.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/Csnp.java
deleted file mode 100644
index 09ccefa..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/Csnp.java
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.pdu;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.tlv.IsisTlv;
-import org.onosproject.isis.io.isispacket.tlv.TlvFinder;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-import org.onosproject.isis.io.isispacket.tlv.TlvType;
-import org.onosproject.isis.io.isispacket.tlv.TlvsToBytes;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of complete sequence number PDU.
- */
-public class Csnp extends IsisHeader {
-
-    /*
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |             Intra-domain Routing Protocol  Discriminator       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Length Indicator                     |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                           Version/Protocol ID Extension       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                           ID Length                           |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |     R     |     R     |    R      |       PDU Type            |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Version                              |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Reserved                             |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                     Maximum area address                      |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          PDU Length                           |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                         Source ID                             |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                       Start LSP ID                            |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                        End LSP ID                             |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                      Variable Lengths Fields                  |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-        CSNP Message Format
-        REFERENCE : ISO/IEC 10589
-    */
-    private int pduLength;
-    private String sourceId;
-    private String startLspId;
-    private String endLspId;
-    private List<IsisTlv> variableLengths = new ArrayList<>();
-
-    /**
-     * Creates the instance for this class.
-     *
-     * @param isisHeader ISIS header
-     */
-    public Csnp(IsisHeader isisHeader) {
-        populateHeader(isisHeader);
-    }
-
-    /**
-     * Returns the list of all tlvs.
-     *
-     * @return variableLengths list of tlvs
-     */
-    public List<IsisTlv> getAllTlv() {
-        return variableLengths;
-    }
-
-    /**
-     * Returns the source ID of csnp.
-     *
-     * @return sourceId source ID
-     */
-    public String sourceId() {
-        return sourceId;
-    }
-
-    /**
-     * Sets the source ID for csnp.
-     *
-     * @param sourceId source ID
-     */
-    public void setSourceId(String sourceId) {
-        this.sourceId = sourceId;
-    }
-
-    /**
-     * Returns the initial link state packet ID of csnp.
-     *
-     * @return startLspId start link state packet ID
-     */
-    public String startLspId() {
-        return startLspId;
-    }
-
-    /**
-     * Sets the initial link state packet ID for csnp.
-     *
-     * @param startLspId start link state packet ID
-     */
-    public void setStartLspId(String startLspId) {
-        this.startLspId = startLspId;
-    }
-
-    /**
-     * Returns the end link state packet ID of csnp.
-     *
-     * @return endLspId end link state packet ID of csnp.
-     */
-    public String endLspId() {
-        return endLspId;
-    }
-
-    /**
-     * Sets the end link state packet ID for csnp.
-     *
-     * @param endLspId end link state packet ID of csnp.
-     */
-    public void setEndLspId(String endLspId) {
-        this.endLspId = endLspId;
-    }
-
-    /**
-     * Returns the packet data unit length of link state packet.
-     * Entire length of this PDU, in octets
-     *
-     * @return pduLength packet date unit length
-     */
-    public int pduLength() {
-        return pduLength;
-    }
-
-    /**
-     * Sets the packet data unit length for link state packet.
-     * Entire Length of this PDU, in octets
-     *
-     * @param pduLength packet data length
-     */
-    public void setPduLength(int pduLength) {
-        this.pduLength = pduLength;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        this.setPduLength(channelBuffer.readUnsignedShort());
-        //source id + 1 value
-        byte[] tempByteArray = new byte[IsisUtil.ID_PLUS_ONE_BYTE];
-        channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_ONE_BYTE);
-        this.setSourceId(IsisUtil.systemIdPlus(tempByteArray));
-        //start lsp id + 2 value
-        tempByteArray = new byte[IsisUtil.ID_PLUS_TWO_BYTE];
-        channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_TWO_BYTE);
-        this.setStartLspId(IsisUtil.systemIdPlus(tempByteArray));
-        //end lsp id + 2 value
-        tempByteArray = new byte[IsisUtil.ID_PLUS_TWO_BYTE];
-        channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_TWO_BYTE);
-        this.setEndLspId(IsisUtil.systemIdPlus(tempByteArray));
-        //tlv here
-        while (channelBuffer.readableBytes() > 0) {
-            TlvHeader tlvHeader = new TlvHeader();
-            tlvHeader.setTlvType(channelBuffer.readUnsignedByte());
-            tlvHeader.setTlvLength(channelBuffer.readUnsignedByte());
-            TlvType tlvValue = TlvType.get(tlvHeader.tlvType());
-            if (tlvValue != null) {
-                IsisTlv tlv = TlvFinder.findTlv(tlvHeader, channelBuffer.readBytes(tlvHeader.tlvLength()));
-                if (tlv != null) {
-                    this.variableLengths.add(tlv);
-                }
-            } else {
-                channelBuffer.readBytes(tlvHeader.tlvLength());
-            }
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] csnpMessage = null;
-        byte[] isisPduHeader = isisPduHeader();
-        byte[] csnpBody = completeSequenceNumberPduBody();
-        csnpMessage = Bytes.concat(isisPduHeader, csnpBody);
-        return csnpMessage;
-    }
-
-    /**
-     * Builds ISIS PDU header for complete sequence numbers PDU.
-     *
-     * @return isisPduHeader ISIS PDU header
-     */
-    public byte[] isisPduHeader() {
-        List<Byte> headerList = new ArrayList<>();
-        headerList.add(this.irpDiscriminator());
-        headerList.add((byte) IsisUtil.getPduHeaderLength(this.pduType()));
-        headerList.add(this.version());
-        headerList.add(this.idLength());
-        headerList.add((byte) this.pduType());
-        headerList.add(this.version2());
-        headerList.add(this.reserved());
-        headerList.add(this.maximumAreaAddresses());
-        return Bytes.toArray(headerList);
-    }
-
-    /**
-     * Builds complete sequence numbers PDU body.
-     *
-     * @return bodyList complete sequence numbers PDU body
-     */
-    public byte[] completeSequenceNumberPduBody() {
-        List<Byte> bodyList = new ArrayList<>();
-        bodyList.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.pduLength())));
-        bodyList.addAll(IsisUtil.sourceAndLanIdToBytes(this.sourceId()));
-        bodyList.addAll(IsisUtil.sourceAndLanIdToBytes(this.startLspId()));
-        bodyList.addAll(IsisUtil.sourceAndLanIdToBytes(this.endLspId()));
-        for (IsisTlv isisTlv : variableLengths) {
-            bodyList.addAll(TlvsToBytes.tlvToBytes(isisTlv));
-        }
-        return Bytes.toArray(bodyList);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("pduLength", pduLength)
-                .add("sourceId", sourceId)
-                .add("startLspId", startLspId)
-                .add("endLspId", endLspId)
-                .toString();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        Csnp that = (Csnp) o;
-        return Objects.equal(pduLength, that.pduLength) &&
-                Objects.equal(sourceId, that.sourceId) &&
-                Objects.equal(startLspId, that.startLspId) &&
-                Objects.equal(endLspId, that.endLspId);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(pduLength, sourceId, startLspId, endLspId);
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/HelloPdu.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/HelloPdu.java
deleted file mode 100644
index 05e6448..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/HelloPdu.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.pdu;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.MacAddress;
-import org.onosproject.isis.controller.IsisInterfaceState;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.tlv.AdjacencyStateTlv;
-import org.onosproject.isis.io.isispacket.tlv.AreaAddressTlv;
-import org.onosproject.isis.io.isispacket.tlv.IpInterfaceAddressTlv;
-import org.onosproject.isis.io.isispacket.tlv.IsisNeighborTlv;
-import org.onosproject.isis.io.isispacket.tlv.IsisTlv;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of ISIS hello PDU.
- */
-public abstract class HelloPdu extends IsisHeader {
-
-    protected List<IsisTlv> variableLengths = new ArrayList<>();
-    private byte circuitType;
-    private String sourceId;
-    private int holdingTime;
-    private int pduLength;
-
-    public void addTlv(IsisTlv isisTlv) {
-        variableLengths.add(isisTlv);
-    }
-
-    /**
-     * Returns the variable lengths.
-     *
-     * @return variable lengths
-     */
-    public List<IsisTlv> tlvs() {
-        return variableLengths;
-    }
-
-    /**
-     * Returns the list of area addresses.
-     *
-     * @return areaAddresses area addresses
-     */
-    public List<String> areaAddress() {
-        List<String> areaAddresses = null;
-        for (IsisTlv tlv : tlvs()) {
-            if (tlv instanceof AreaAddressTlv) {
-                areaAddresses = ((AreaAddressTlv) tlv).areaAddress();
-            }
-        }
-        return areaAddresses;
-    }
-
-    /**
-     * Returns the list of interface IP addresses.
-     *
-     * @return interfaceIpAddresses list of interface IP addresses
-     */
-    public List<Ip4Address> interfaceIpAddresses() {
-        List<Ip4Address> interfaceIpAddresses = null;
-        for (IsisTlv tlv : tlvs()) {
-            if (tlv instanceof IpInterfaceAddressTlv) {
-                interfaceIpAddresses = ((IpInterfaceAddressTlv) tlv).interfaceAddress();
-            }
-        }
-        return interfaceIpAddresses;
-    }
-
-    /**
-     * Returns the list of neighbor list.
-     *
-     * @return macAddresses list of neighbor MAC address
-     */
-    public List<MacAddress> neighborList() {
-        List<MacAddress> macAddresses = null;
-        for (IsisTlv tlv : tlvs()) {
-            if (tlv instanceof IsisNeighborTlv) {
-                macAddresses = ((IsisNeighborTlv) tlv).neighbor();
-            }
-        }
-        return macAddresses;
-    }
-
-    /**
-     * Returns the adjacency state.
-     *
-     * @return interfaceState adjacency state
-     */
-    public IsisInterfaceState adjacencyState() {
-        IsisInterfaceState interfaceState = null;
-        for (IsisTlv tlv : tlvs()) {
-            if (tlv instanceof AdjacencyStateTlv) {
-                interfaceState = IsisInterfaceState.get(((AdjacencyStateTlv) tlv).adjacencyType());
-                break;
-            }
-        }
-        return interfaceState;
-    }
-
-    /**
-     * Returns the source ID.
-     *
-     * @return sourceId source ID
-     */
-    public String sourceId() {
-        return sourceId;
-    }
-
-    /**
-     * Sets source ID.
-     *
-     * @param sourceId source ID
-     */
-    public void setSourceId(String sourceId) {
-        this.sourceId = sourceId;
-    }
-
-    /**
-     * Returns the PDU length.
-     *
-     * @return pduLength PDU length
-     */
-    public int pduLength() {
-        return pduLength;
-    }
-
-    /**
-     * Sets the PDU length.
-     *
-     * @param pduLength PDU length
-     */
-    public void setPduLength(int pduLength) {
-        this.pduLength = pduLength;
-    }
-
-    /**
-     * Returns the holding time.
-     *
-     * @return holdingTime holding time
-     */
-    public int holdingTime() {
-        return holdingTime;
-    }
-
-    /**
-     * Sets the holding time.
-     *
-     * @param holdingTime holding time
-     */
-    public void setHoldingTime(int holdingTime) {
-        this.holdingTime = holdingTime;
-    }
-
-    /**
-     * Returns the circuit type.
-     *
-     * @return circuitType circuit type
-     */
-    public byte circuitType() {
-        return circuitType;
-    }
-
-    /**
-     * Sets the circuit type.
-     *
-     * @param circuitType circuit type
-     */
-    public void setCircuitType(byte circuitType) {
-        this.circuitType = circuitType;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("circuitType", circuitType)
-                .add("sourceId", sourceId)
-                .add("holdingTime", holdingTime)
-                .add("pduLength", pduLength)
-                .toString();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        HelloPdu that = (HelloPdu) o;
-        return Objects.equal(circuitType, that.circuitType) &&
-                Objects.equal(sourceId, that.sourceId) &&
-                Objects.equal(holdingTime, that.holdingTime) &&
-                Objects.equal(pduLength, that.pduLength);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(circuitType, sourceId, holdingTime, pduLength);
-    }
-}
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/L1L2HelloPdu.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/L1L2HelloPdu.java
deleted file mode 100644
index 53a82a8..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/L1L2HelloPdu.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.pdu;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.tlv.IsisTlv;
-import org.onosproject.isis.io.isispacket.tlv.TlvFinder;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-import org.onosproject.isis.io.isispacket.tlv.TlvType;
-import org.onosproject.isis.io.isispacket.tlv.TlvsToBytes;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of L1L2 hello PDU.
- */
-public class L1L2HelloPdu extends HelloPdu {
-
-    /*
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |             Intra-domain Routing Protocol  Discriminator       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Length Indicator                     |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                           Version/Protocol ID Extension       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                           ID Length                           |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |     R     |     R     |    R      |       PDU Type            |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                             Version                           |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                             Reserved                          |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                     Maximum area address                      |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Circuit Type                         |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Source ID                            |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Holding Time                         |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          PDU Length                           |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          PDU Length                           |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |    R     |                   Priority                         |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                             LAN ID                            |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                      Variable Lengths Fields                  |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-        Hello Message Format
-        REFERENCE : ISO/IEC 10589
-    */
-
-    private byte priority;
-    private String lanId;
-
-    /**
-     * Parametrized constructor.
-     *
-     * @param isisHeader ISIs header
-     */
-    public L1L2HelloPdu(IsisHeader isisHeader) {
-        populateHeader(isisHeader);
-    }
-
-    /**
-     * Returns the LAN ID.
-     *
-     * @return LAN ID
-     */
-
-    public String lanId() {
-        return lanId;
-    }
-
-    /**
-     * Sets the LAN ID.
-     *
-     * @param lanId LAN ID
-     */
-    public void setLanId(String lanId) {
-        this.lanId = lanId;
-    }
-
-    /**
-     * Returns the priority.
-     *
-     * @return priority
-     */
-    public byte priority() {
-        return priority;
-    }
-
-    /**
-     * Sets priority.
-     *
-     * @param priority priority
-     */
-    public void setPriority(byte priority) {
-        this.priority = priority;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        this.setCircuitType(channelBuffer.readByte());
-        //sorce id
-        byte[] tempByteArray = new byte[IsisUtil.ID_SIX_BYTES];
-        channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_SIX_BYTES);
-        this.setSourceId(IsisUtil.systemId(tempByteArray));
-        this.setHoldingTime(channelBuffer.readUnsignedShort());
-        this.setPduLength(channelBuffer.readUnsignedShort());
-        this.setPriority(channelBuffer.readByte());
-        //landid  id + 1 value
-        tempByteArray = new byte[IsisUtil.ID_PLUS_ONE_BYTE];
-        channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_ONE_BYTE);
-        this.setLanId(IsisUtil.systemIdPlus(tempByteArray));
-        //tlv here
-        while (channelBuffer.readableBytes() > 0) {
-            TlvHeader tlvHeader = new TlvHeader();
-            tlvHeader.setTlvType(channelBuffer.readUnsignedByte());
-            tlvHeader.setTlvLength(channelBuffer.readUnsignedByte());
-            TlvType tlvType = TlvType.get(tlvHeader.tlvType());
-            if (tlvType != null) {
-                IsisTlv tlv = TlvFinder.findTlv(tlvHeader, channelBuffer.readBytes(tlvHeader.tlvLength()));
-                if (tlv != null) {
-                    this.variableLengths.add(tlv);
-                }
-            } else {
-                channelBuffer.readBytes(tlvHeader.tlvLength());
-            }
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] helloMessage = null;
-        byte[] helloHeader = l1l2IsisPduHeader();
-        byte[] helloBody = l1l2HelloPduBody();
-        helloMessage = Bytes.concat(helloHeader, helloBody);
-        return helloMessage;
-    }
-
-    /**
-     * Parse the ISIS L1L2 PDU header.
-     *
-     * @return ISIS L1L2 PDU header
-     */
-    public byte[] l1l2IsisPduHeader() {
-        List<Byte> headerLst = new ArrayList<>();
-        headerLst.add(this.irpDiscriminator());
-        headerLst.add((byte) IsisUtil.getPduHeaderLength(this.pduType()));
-        headerLst.add(this.version());
-        headerLst.add(this.idLength());
-        headerLst.add((byte) this.pduType());
-        headerLst.add(this.version2());
-        headerLst.add(this.reserved());
-        headerLst.add(this.maximumAreaAddresses());
-        return Bytes.toArray(headerLst);
-    }
-
-    /**
-     * Parse the ISIS L1L2 PDU body.
-     *
-     * @return ISIS L1L2 PDU body
-     */
-    public byte[] l1l2HelloPduBody() {
-        List<Byte> bodyLst = new ArrayList<>();
-
-        bodyLst.add(this.circuitType());
-        bodyLst.addAll(IsisUtil.sourceAndLanIdToBytes(this.sourceId()));
-        bodyLst.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.holdingTime())));
-        bodyLst.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.pduLength())));
-        bodyLst.add(this.priority);
-        bodyLst.addAll(IsisUtil.sourceAndLanIdToBytes(this.lanId()));
-        for (IsisTlv isisTlv : variableLengths) {
-            bodyLst.addAll(TlvsToBytes.tlvToBytes(isisTlv));
-        }
-        return Bytes.toArray(bodyLst);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("priority", priority)
-                .add("lanId", lanId)
-                .toString();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        L1L2HelloPdu that = (L1L2HelloPdu) o;
-        return Objects.equal(priority, that.priority) &&
-                Objects.equal(lanId, that.lanId);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(priority, lanId);
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/LsPdu.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/LsPdu.java
deleted file mode 100644
index b1c8474..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/LsPdu.java
+++ /dev/null
@@ -1,496 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.pdu;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.tlv.IsisTlv;
-import org.onosproject.isis.io.isispacket.tlv.TlvFinder;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-import org.onosproject.isis.io.isispacket.tlv.TlvType;
-import org.onosproject.isis.io.isispacket.tlv.TlvsToBytes;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of an ISIS Link State packet.
- * Each Link State packet carries a collection of TLVs
- * Several TLVs may be included in a single packet.
- */
-public class LsPdu extends IsisHeader {
-
-    /*
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |             Intra-domain Routing Protocol  Discriminator      |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Length Indicator                     |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                           Version/Protocol ID Extension       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                           ID Length                           |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |     R     |     R     |    R      |       PDU Type            |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Version                              |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Reserved                             |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                     Maximum area address                      |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          PDU Length                           |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                       Remaining Lifetime                      |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          LSP ID                               |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          PDU Length                           |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                        Sequence Number                        |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                        Checksum                               |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |   P     |   ATT   |     LSPDBOL         |       IS Type       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                      Variable Lengths Fields                  |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-        LS PDU Format
-        REFERENCE : ISO/IEC 10589
-    */
-    private int pduLength;
-    private int remainingLifeTime;
-    private String lspId;
-    private int sequenceNumber;
-    private int checkSum;
-    private boolean partitionRepair;
-    private AttachedToOtherAreas attachedToOtherAreas;
-    private boolean lspDbol;
-    private byte typeBlock;
-    private byte intermediateSystemType;
-    private List<IsisTlv> variableLengths = new ArrayList<>();
-
-    /**
-     * Creates an instance of Link State packet.
-     *
-     * @param isisHeader isis header details
-     */
-    public LsPdu(IsisHeader isisHeader) {
-        populateHeader(isisHeader);
-    }
-
-    /**
-     * Returns the ISIS tlvs.
-     *
-     * @return tlvs
-     */
-    public List<IsisTlv> tlvs() {
-        return this.variableLengths;
-    }
-
-    /**
-     * Adds the isis tlv to the list for the link state PDU.
-     *
-     * @param isisTlv isis tlv
-     */
-    public void addTlv(IsisTlv isisTlv) {
-        variableLengths.add(isisTlv);
-    }
-
-    /**
-     * Returns the remaining time of the link state pdu.
-     * Number of seconds before LSP considered expired
-     *
-     * @return remainingTime remaining time
-     */
-    public int remainingLifeTime() {
-        return remainingLifeTime;
-    }
-
-    /**
-     * Sets the remaining time for the link state pdu.
-     *
-     * @param remainingLifeTime remaining time
-     */
-    public void setRemainingLifeTime(int remainingLifeTime) {
-        this.remainingLifeTime = remainingLifeTime;
-    }
-
-    /**
-     * Returns the link state database overload.
-     *
-     * @return lspdbol link state database overload
-     */
-    public boolean lspDbol() {
-        return lspDbol;
-    }
-
-    /**
-     * Sets the link state database overload for this pdu.
-     *
-     * @param lspDbol link state database overload
-     */
-    public void setLspDbol(boolean lspDbol) {
-        this.lspDbol = lspDbol;
-    }
-
-    /**
-     * Returns the type block.
-     *
-     * @return type block
-     */
-    public byte typeBlock() {
-        return typeBlock;
-    }
-
-    /**
-     * Sets the type block.
-     *
-     * @param typeBlock type block
-     */
-    public void setTypeBlock(byte typeBlock) {
-        this.typeBlock = typeBlock;
-    }
-
-    /**
-     * Returns the sequence number of LSP.
-     *
-     * @return sequenceNumber sequence number
-     */
-    public int sequenceNumber() {
-        return sequenceNumber;
-    }
-
-    /**
-     * Sets the sequence nubmer for LSP.
-     *
-     * @param sequenceNumber sequence number
-     */
-    public void setSequenceNumber(int sequenceNumber) {
-        this.sequenceNumber = sequenceNumber;
-    }
-
-    /**
-     * Returns the checksum of LSP from Source ID to end.
-     *
-     * @return checkSum check sum
-     */
-    public int checkSum() {
-        return checkSum;
-    }
-
-    /**
-     * Sets the checksum for LSP from Source ID to end.
-     *
-     * @param checkSum check sum
-     */
-    public void setCheckSum(int checkSum) {
-        this.checkSum = checkSum;
-    }
-
-    /**
-     * Returns the partition repair value of the intermediate system.
-     *
-     * @return partitionRepair partition repair
-     */
-    public boolean partitionRepair() {
-        return partitionRepair;
-    }
-
-    /**
-     * Sets partition repair value for the intermediate system.
-     *
-     * @param partitionRepair partition repair
-     */
-    public void setPartitionRepair(boolean partitionRepair) {
-        this.partitionRepair = partitionRepair;
-    }
-
-    /**
-     * Returns the value of intermediate system attached field.
-     * return values based on type Default Metric, Delay Metric, Expense Metric, Error Metric
-     *
-     * @return attachedToOtherAreas attached to other areas
-     */
-    public AttachedToOtherAreas attachedToOtherAreas() {
-        return attachedToOtherAreas;
-    }
-
-    /**
-     * Sets the value for intermediate system attached field.
-     * it will pass values based on type Default Metric, Delay Metric, Expense Metric, Error Metric
-     *
-     * @param attachedToOtherAreas attached to other areas
-     */
-    public void setAttachedToOtherAreas(AttachedToOtherAreas attachedToOtherAreas) {
-        this.attachedToOtherAreas = attachedToOtherAreas;
-    }
-
-    /**
-     * Returns the intermediate system type.
-     * type will be level 1 or level 2
-     *
-     * @return intermediateSystemType intermediate system type
-     */
-    public byte intermediateSystemType() {
-        return intermediateSystemType;
-    }
-
-    /**
-     * Sets the value for intermediate system.
-     * type will be level 1 or level 2
-     *
-     * @param intermediateSystemType intermediate system type
-     */
-    public void setIntermediateSystemType(byte intermediateSystemType) {
-        this.intermediateSystemType = intermediateSystemType;
-    }
-
-    /**
-     * Returns the link state ID of link state packet.
-     * System ID of the source of link state PDU
-     *
-     * @return lspId link state packet ID
-     */
-    public String lspId() {
-        return lspId;
-    }
-
-    /**
-     * Sets the link state ID for link state packet.
-     * System ID of the source of link state PDU
-     *
-     * @param lspId link state packet ID
-     */
-    public void setLspId(String lspId) {
-        this.lspId = lspId;
-    }
-
-    /**
-     * Returns the packet data unit length of link state packet.
-     * Entire length of this PDU, in octets
-     *
-     * @return pduLength packet data unit length
-     */
-    public int pduLength() {
-        return pduLength;
-    }
-
-    /**
-     * Sets the packet data unit length for link state packet.
-     * Entire Length of this PDU, in octets
-     *
-     * @param pduLength packet data length
-     */
-    public void setPduLength(int pduLength) {
-        this.pduLength = pduLength;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-
-        this.setPduLength(channelBuffer.readUnsignedShort());
-        this.setRemainingLifeTime(channelBuffer.readUnsignedShort());
-        //lsp id + 2 value
-        byte[] tempByteArray = new byte[IsisUtil.ID_PLUS_TWO_BYTE];
-        channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_TWO_BYTE);
-        this.setLspId(IsisUtil.systemIdPlus(tempByteArray));
-        //sequence number 4
-        this.setSequenceNumber(channelBuffer.readInt());
-        this.setCheckSum(channelBuffer.readUnsignedShort());
-        int typeTemp = channelBuffer.readUnsignedByte();
-        byte isTypeByte = (byte) typeTemp;
-        String tempValue = String.format("%8s", Integer.toBinaryString(isTypeByte & 0xFF)).replace(' ', '0');
-        int pBit = Integer.parseInt(new Character(tempValue.charAt(0)).toString());
-        if (pBit == 1) {
-            this.setPartitionRepair(true);
-        } else {
-            this.setPartitionRepair(false);
-        }
-        int attValue = Integer.parseInt(tempValue.substring(1, 5), 2);
-        switch (AttachedToOtherAreas.get(attValue)) {
-            case DEFAULTMETRIC:
-                this.setAttachedToOtherAreas(AttachedToOtherAreas.DEFAULTMETRIC);
-                break;
-            case DELAYMETRIC:
-                this.setAttachedToOtherAreas(AttachedToOtherAreas.DELAYMETRIC);
-                break;
-            case EXPENSEMETRIC:
-                this.setAttachedToOtherAreas(AttachedToOtherAreas.EXPENSEMETRIC);
-                break;
-            case ERRORMETRIC:
-                this.setAttachedToOtherAreas(AttachedToOtherAreas.ERRORMETRIC);
-                break;
-            case NONE:
-                this.setAttachedToOtherAreas(AttachedToOtherAreas.NONE);
-                break;
-            default:
-                break;
-        }
-        int lspdbol = Integer.parseInt(new Character(tempValue.charAt(5)).toString());
-        if (lspdbol == 1) {
-            this.setLspDbol(true);
-        } else {
-            this.setLspDbol(false);
-        }
-        int isType = Integer.parseInt(tempValue.substring(6, 8), 2);
-        byte isTypeByteValue = (byte) isType;
-        this.setIntermediateSystemType(isTypeByteValue);
-        //tlv here
-        while (channelBuffer.readableBytes() > 0) {
-            TlvHeader tlvHeader = new TlvHeader();
-            tlvHeader.setTlvType(channelBuffer.readUnsignedByte());
-            tlvHeader.setTlvLength(channelBuffer.readUnsignedByte());
-            TlvType tlvValue = TlvType.get(tlvHeader.tlvType());
-            if (tlvValue != null) {
-                IsisTlv tlv = TlvFinder.findTlv(tlvHeader, channelBuffer.readBytes(tlvHeader.tlvLength()));
-                if (tlv != null) {
-                    this.variableLengths.add(tlv);
-                }
-            } else {
-                channelBuffer.readBytes(tlvHeader.tlvLength());
-            }
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] lspMessage = null;
-        byte[] helloHeader = l1l2IsisPduHeader();
-        byte[] lspBody = l1l2LsPduBody();
-        lspMessage = Bytes.concat(helloHeader, lspBody);
-        return lspMessage;
-    }
-
-    /**
-     * Builds ISIS PDU header from ISIS message.
-     *
-     * @return headerList ISIS PDU header
-     */
-    public byte[] l1l2IsisPduHeader() {
-        List<Byte> headerList = new ArrayList<>();
-        headerList.add(this.irpDiscriminator());
-        headerList.add((byte) IsisUtil.getPduHeaderLength(this.pduType()));
-        headerList.add(this.version());
-        headerList.add(this.idLength());
-        headerList.add((byte) this.pduType());
-        headerList.add(this.version2());
-        headerList.add(this.reserved());
-        headerList.add(this.maximumAreaAddresses());
-        return Bytes.toArray(headerList);
-    }
-
-    /**
-     * Builds link state PDU body from ISIS message.
-     *
-     * @return bodyList link state PDU body
-     */
-    public byte[] l1l2LsPduBody() {
-        List<Byte> bodyList = new ArrayList<>();
-        bodyList.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.pduLength())));
-        bodyList.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.remainingLifeTime())));
-        bodyList.addAll(IsisUtil.sourceAndLanIdToBytes(this.lspId()));
-        bodyList.addAll(Bytes.asList(IsisUtil.convertToFourBytes(this.sequenceNumber())));
-        bodyList.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.checkSum())));
-        String temString = "";
-        if (this.partitionRepair()) {
-            temString = "1" + temString;
-        } else {
-            temString = "0" + temString;
-        }
-        switch (this.attachedToOtherAreas()) {
-            case ERRORMETRIC:
-                temString = temString + "1000";
-                break;
-            case EXPENSEMETRIC:
-                temString = temString + "0100";
-                break;
-            case DELAYMETRIC:
-                temString = temString + "0010";
-                break;
-            case DEFAULTMETRIC:
-                temString = temString + "0001";
-                break;
-            case NONE:
-                temString = temString + "0000";
-                break;
-            default:
-                break;
-        }
-        if (this.lspDbol()) {
-            temString = temString + "1";
-        } else {
-            temString = temString + "0";
-        }
-        String isType = Integer.toBinaryString(this.intermediateSystemType());
-        if (isType.length() % 2 != 0) {
-            isType = "0" + isType;
-        }
-        temString = temString + isType;
-        bodyList.add((byte) Integer.parseInt(temString, 2));
-        for (IsisTlv isisTlv : variableLengths) {
-            bodyList.addAll(TlvsToBytes.tlvToBytes(isisTlv));
-        }
-        return Bytes.toArray(bodyList);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("pduLength", pduLength)
-                .add("remainingLifeTime", remainingLifeTime)
-                .add("lspId", lspId)
-                .add("sequenceNumber", sequenceNumber)
-                .add("checkSum", checkSum)
-                .add("partitionRepair", partitionRepair)
-                .add("lspDbol", lspDbol)
-                .add("typeBlock", typeBlock)
-                .add("intermediateSystemType", intermediateSystemType)
-                .toString();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        LsPdu that = (LsPdu) o;
-        return Objects.equal(pduLength, that.pduLength) &&
-                Objects.equal(remainingLifeTime, that.remainingLifeTime) &&
-                Objects.equal(lspId, that.lspId) &&
-                Objects.equal(sequenceNumber, that.sequenceNumber) &&
-                Objects.equal(checkSum, that.checkSum) &&
-                Objects.equal(partitionRepair, that.partitionRepair) &&
-                Objects.equal(lspDbol, that.lspDbol) &&
-                Objects.equal(typeBlock, that.typeBlock) &&
-                Objects.equal(intermediateSystemType, that.intermediateSystemType);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(pduLength, remainingLifeTime, lspId, sequenceNumber,
-                                checkSum, partitionRepair, lspDbol, typeBlock, intermediateSystemType);
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/P2PHelloPdu.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/P2PHelloPdu.java
deleted file mode 100644
index 15644d6..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/P2PHelloPdu.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.pdu;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.tlv.IsisTlv;
-import org.onosproject.isis.io.isispacket.tlv.TlvFinder;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-import org.onosproject.isis.io.isispacket.tlv.TlvType;
-import org.onosproject.isis.io.isispacket.tlv.TlvsToBytes;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of P2P hello.
- */
-public class P2PHelloPdu extends HelloPdu {
-    /*
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |             Intra-domain Routing Protocol  Discriminator       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Length Indicator                     |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                           Version/Protocol ID Extension       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                           ID Length                           |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |     R     |     R     |    R      |       PDU Type            |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                             Version                           |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                             Reserved                          |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                     Maximum area address                      |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Circuit Type                         |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Source ID                            |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Holding Time                         |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          PDU Length                           |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                        Local Circuit Id                       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                      Variable Lengths Fields                  |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-        P2P Hello Message Format
-        REFERENCE : ISO/IEC 10589
-    */
-    private byte localCircuitId;
-
-    /**
-     * Sets the ISIS header.
-     *
-     * @param isisHeader isisHeader
-     */
-    public P2PHelloPdu(IsisHeader isisHeader) {
-        populateHeader(isisHeader);
-    }
-
-    /**
-     * Returns the local circuit ID.
-     *
-     * @return Local circuit ID
-     */
-    public byte localCircuitId() {
-        return localCircuitId;
-    }
-
-    /**
-     * Sets the local circuit ID.
-     *
-     * @param localCircuitId Local circuit ID
-     */
-    public void setLocalCircuitId(byte localCircuitId) {
-        this.localCircuitId = localCircuitId;
-    }
-
-    /**
-     * Sets the variable lengths.
-     *
-     * @param variableLengths variable lengths.
-     */
-    public void setVariableLengths(List<IsisTlv> variableLengths) {
-        this.variableLengths = variableLengths;
-    }
-
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        this.setCircuitType(channelBuffer.readByte());
-        //source id
-        byte[] tempByteArray = new byte[IsisUtil.ID_SIX_BYTES];
-        channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_SIX_BYTES);
-        this.setSourceId(IsisUtil.systemId(tempByteArray));
-        this.setHoldingTime(channelBuffer.readUnsignedShort());
-        this.setPduLength(channelBuffer.readUnsignedShort());
-        this.setLocalCircuitId((byte) channelBuffer.readUnsignedByte());
-        while (channelBuffer.readableBytes() > 0) {
-            TlvHeader tlvHeader = new TlvHeader();
-            tlvHeader.setTlvType(channelBuffer.readUnsignedByte());
-            tlvHeader.setTlvLength(channelBuffer.readUnsignedByte());
-            TlvType tlvType = TlvType.get(tlvHeader.tlvType());
-            if (tlvType != null) {
-                IsisTlv tlv = TlvFinder.findTlv(tlvHeader, channelBuffer.readBytes(tlvHeader.tlvLength()));
-                if (tlv != null) {
-                    this.variableLengths.add(tlv);
-                }
-            } else {
-                channelBuffer.readBytes(tlvHeader.tlvLength());
-            }
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] helloMessage = null;
-        byte[] helloHeader = p2PHeader();
-        byte[] helloBody = p2P2HelloPduBody();
-        helloMessage = Bytes.concat(helloHeader, helloBody);
-        return helloMessage;
-    }
-
-    /**
-     * Builds the point to point header.
-     *
-     * @return headerList point to point header
-     */
-    public byte[] p2PHeader() {
-        List<Byte> headerList = new ArrayList<>();
-        headerList.add(this.irpDiscriminator());
-        headerList.add((byte) IsisUtil.getPduHeaderLength(this.pduType()));
-        headerList.add(this.version());
-        headerList.add(this.idLength());
-        headerList.add((byte) this.pduType());
-        headerList.add(this.version2());
-        headerList.add(this.reserved());
-        headerList.add(this.maximumAreaAddresses());
-        return Bytes.toArray(headerList);
-    }
-
-    /**
-     * Builds the point to point hello PDU body.
-     *
-     * @return bodyList point to point hello PDU body
-     */
-    public byte[] p2P2HelloPduBody() {
-        List<Byte> bodyList = new ArrayList<>();
-        bodyList.add(this.circuitType());
-        bodyList.addAll(IsisUtil.sourceAndLanIdToBytes(this.sourceId()));
-        bodyList.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.holdingTime())));
-        bodyList.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.pduLength())));
-        bodyList.add((byte) this.localCircuitId());
-        for (IsisTlv isisTlv : variableLengths) {
-            bodyList.addAll(TlvsToBytes.tlvToBytes(isisTlv));
-        }
-        return Bytes.toArray(bodyList);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("localCircuitId", localCircuitId)
-                .toString();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        P2PHelloPdu that = (P2PHelloPdu) o;
-        return Objects.equal(localCircuitId, that.localCircuitId);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(localCircuitId);
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/Psnp.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/Psnp.java
deleted file mode 100644
index 2d29a7c..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/Psnp.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.pdu;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.tlv.IsisTlv;
-import org.onosproject.isis.io.isispacket.tlv.TlvFinder;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-import org.onosproject.isis.io.isispacket.tlv.TlvType;
-import org.onosproject.isis.io.isispacket.tlv.TlvsToBytes;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of partial sequence number PDU.
- */
-public class Psnp extends IsisHeader {
-    /*
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |             Intradomain Routing Protocol  Discriminator       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Length Indicator                     |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                           Version/Protocol ID Extension       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                           ID Length                           |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |     R     |     R     |    R      |       PDU Type            |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Version                              |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Reserved                             |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                     Maximum area address                      |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          PDU Length                           |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                         Source ID                             |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                       Start LSP ID                            |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                        End LSP ID                             |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                      Variable Lengths Fields                  |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-        Hello Message Format
-        REFERENCE : ISO/IEC 10589
-    */
-    private int pduLength;
-    private String sourceId;
-    private List<IsisTlv> variableLengths = new ArrayList<>();
-
-    /**
-     * Creates the instance for this class.
-     *
-     * @param isisHeader ISIS header
-     */
-    public Psnp(IsisHeader isisHeader) {
-        populateHeader(isisHeader);
-    }
-
-    /**
-     * Adds the TLV to list.
-     *
-     * @param isisTlv ISIS TLV instance
-     */
-    public void addTlv(IsisTlv isisTlv) {
-        variableLengths.add(isisTlv);
-    }
-
-    /**
-     * Returns the list of all tlvs.
-     *
-     * @return variableLengths list of tlvs
-     */
-    public List<IsisTlv> getAllTlv() {
-        return variableLengths;
-    }
-
-    /**
-     * Returns the source ID of csnp.
-     *
-     * @return sourceId source ID
-     */
-    public String sourceId() {
-        return sourceId;
-    }
-
-    /**
-     * Sets the source ID for csnp.
-     *
-     * @param sourceId source ID
-     */
-    public void setSourceId(String sourceId) {
-        this.sourceId = sourceId;
-    }
-
-    /**
-     * Returns the packet data unit length of link state packet.
-     * Entire length of this PDU, in octets
-     *
-     * @return pduLength packte date unit length
-     */
-    public int pduLength() {
-        return pduLength;
-    }
-
-    /**
-     * Sets the packet data unit length for link state packet.
-     * Entire Length of this PDU, in octets
-     *
-     * @param pduLength packte data length
-     */
-    public void setPduLength(int pduLength) {
-        this.pduLength = pduLength;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        this.setPduLength(channelBuffer.readUnsignedShort());
-        //source id + 2 value
-        byte[] tempByteArray = new byte[IsisUtil.ID_PLUS_ONE_BYTE];
-        channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_ONE_BYTE);
-        this.setSourceId(IsisUtil.systemIdPlus(tempByteArray));
-        //tlv here
-        while (channelBuffer.readableBytes() > 0) {
-            TlvHeader tlvHeader = new TlvHeader();
-            tlvHeader.setTlvType(channelBuffer.readUnsignedByte());
-            tlvHeader.setTlvLength(channelBuffer.readUnsignedByte());
-            TlvType tlvValue = TlvType.get(tlvHeader.tlvType());
-            if (tlvValue != null) {
-                IsisTlv tlv = TlvFinder.findTlv(tlvHeader, channelBuffer.readBytes(tlvHeader.tlvLength()));
-                if (tlv != null) {
-                    this.variableLengths.add(tlv);
-                }
-            } else {
-                channelBuffer.readBytes(tlvHeader.tlvLength());
-            }
-        }
-    }
-
-
-    @Override
-    public byte[] asBytes() {
-        byte[] psnpMessage = null;
-        byte[] isisPduHeader = isisPduHeader();
-        byte[] psnpBody = partialSequenceNumberPduBody();
-        psnpMessage = Bytes.concat(isisPduHeader, psnpBody);
-        return psnpMessage;
-    }
-
-    /**
-     * Builds the ISIS PDU header.
-     *
-     * @return headerList ISIS PDU header
-     */
-    public byte[] isisPduHeader() {
-        List<Byte> headerList = new ArrayList<>();
-        headerList.add(this.irpDiscriminator());
-        headerList.add((byte) IsisUtil.getPduHeaderLength(this.pduType()));
-        headerList.add(this.version());
-        headerList.add(this.idLength());
-        headerList.add((byte) this.pduType());
-        headerList.add(this.version2());
-        headerList.add(this.reserved());
-        headerList.add(this.maximumAreaAddresses());
-        return Bytes.toArray(headerList);
-    }
-
-    /**
-     * Builds the partial sequence number PDU body.
-     *
-     * @return bodyList partial sequence number PDU body
-     */
-    public byte[] partialSequenceNumberPduBody() {
-        List<Byte> bodyList = new ArrayList<>();
-        bodyList.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.pduLength())));
-        bodyList.addAll(IsisUtil.sourceAndLanIdToBytes(this.sourceId()));
-        for (IsisTlv isisTlv : variableLengths) {
-            bodyList.addAll(TlvsToBytes.tlvToBytes(isisTlv));
-        }
-        return Bytes.toArray(bodyList);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("pduLength", pduLength)
-                .add("sourceId", sourceId)
-                .toString();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        Psnp that = (Psnp) o;
-        return Objects.equal(pduLength, that.pduLength);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(sourceId, pduLength);
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/package-info.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/package-info.java
deleted file mode 100644
index 471e49c..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the isis protocol.
- */
-package org.onosproject.isis.io.isispacket.pdu;
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/AdjacencyStateTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/AdjacencyStateTlv.java
deleted file mode 100644
index 08a98fb..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/AdjacencyStateTlv.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
-* Copyright 2016-present Open Networking Foundation
-*
-* 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of adjacency state TLV of P2P neighbor.
- */
-public class AdjacencyStateTlv extends TlvHeader implements IsisTlv {
-
-    private byte adjacencyType;
-    private int localCircuitId;
-    private String neighborSystemId;
-    private int neighborLocalCircuitId;
-
-    /**
-     * Creates an instance of adjacency state TLV..
-     *
-     * @param tlvHeader TLV header
-     */
-    public AdjacencyStateTlv(TlvHeader tlvHeader) {
-        this.setTlvType(tlvHeader.tlvType());
-        this.setTlvLength(tlvHeader.tlvLength());
-    }
-
-    /**
-     * Returns local circuit ID for adjacency state TLV.
-     *
-     * @return local circuit ID
-     */
-    public int localCircuitId() {
-        return localCircuitId;
-    }
-
-    /**
-     * Sets local circuit ID for adjacency state TLV.
-     *
-     * @param localCircuitId local circuit Id
-     */
-    public void setLocalCircuitId(int localCircuitId) {
-        this.localCircuitId = localCircuitId;
-    }
-
-    /**
-     * Returns neighbor system ID for adjacency state TLV.
-     *
-     * @return neighbor system ID
-     */
-    public String neighborSystemId() {
-        return neighborSystemId;
-    }
-
-    /**
-     * Sets neighbor system ID for adjacency state TLV.
-     *
-     * @param neighborSystemId neighbor system ID
-     */
-    public void setNeighborSystemId(String neighborSystemId) {
-        this.neighborSystemId = neighborSystemId;
-    }
-
-    /**
-     * Returns neighbor local circuit ID for adjacency state TLV.
-     *
-     * @return neighbor local circuit ID
-     */
-    public int neighborLocalCircuitId() {
-        return neighborLocalCircuitId;
-    }
-
-    /**
-     * Sets neighbor local circuit ID for adjacency state TLV.
-     *
-     * @param neighborLocalCircuitId neighbor local circuit ID
-     */
-    public void setNeighborLocalCircuitId(int neighborLocalCircuitId) {
-        this.neighborLocalCircuitId = neighborLocalCircuitId;
-    }
-
-    /**
-     * Returns adjacency type of adjacency state TLV.
-     *
-     * @return adjacency type
-     */
-    public byte adjacencyType() {
-        return adjacencyType;
-    }
-
-    /**
-     * Sets adjacency type for adjacency state TLV.
-     *
-     * @param adjacencyType adjacency type
-     */
-    public void setAdjacencyType(byte adjacencyType) {
-        this.adjacencyType = adjacencyType;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        this.setAdjacencyType(channelBuffer.readByte());
-        this.setLocalCircuitId(channelBuffer.readInt());
-        if (channelBuffer.readableBytes() > 0) {
-            byte[] tempByteArray = new byte[IsisUtil.ID_SIX_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_SIX_BYTES);
-            this.setNeighborSystemId(IsisUtil.systemId(tempByteArray));
-            this.setNeighborLocalCircuitId(channelBuffer.readInt());
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] bytes = null;
-        byte[] tlvHeader = tlvHeaderAsByteArray();
-        byte[] tlvBody = tlvBodyAsBytes();
-        tlvHeader[1] = (byte) tlvBody.length;
-        bytes = Bytes.concat(tlvHeader, tlvBody);
-        return bytes;
-    }
-
-    /**
-     * Returns adjacency type TLV body as byte array.
-     *
-     * @return byteArray TLV body of area address TLV
-     */
-    private byte[] tlvBodyAsBytes() {
-        List<Byte> bytes = new ArrayList<>();
-        bytes.add(this.adjacencyType);
-        bytes.addAll(Bytes.asList(IsisUtil.convertToFourBytes(this.localCircuitId)));
-        if (this.neighborSystemId != null) {
-        bytes.addAll(IsisUtil.sourceAndLanIdToBytes(this.neighborSystemId));
-        bytes.addAll(Bytes.asList(IsisUtil.convertToFourBytes(this.neighborLocalCircuitId)));
-        }
-        return Bytes.toArray(bytes);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("adjacencyType", adjacencyType)
-                .add("localCircuitId", localCircuitId)
-                .add("neighborSystemId", neighborSystemId)
-                .add("neighborLocalCircuitId", neighborLocalCircuitId)
-                .toString();
-    }
-}
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/AreaAddressTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/AreaAddressTlv.java
deleted file mode 100644
index 88ad3b9..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/AreaAddressTlv.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of area address TLV.
- */
-public class AreaAddressTlv extends TlvHeader implements IsisTlv {
-
-    private List<String> areaAddress = new ArrayList<>();
-
-    /**
-     * Creates an instance of area address TLV.
-     *
-     * @param tlvHeader TLV header
-     */
-    public AreaAddressTlv(TlvHeader tlvHeader) {
-        this.setTlvType(tlvHeader.tlvType());
-        this.setTlvLength(tlvHeader.tlvLength());
-    }
-
-    /**
-     * Adds the area address to the area address TLV.
-     *
-     * @param areaAddress area address
-     */
-    public void addAddress(String areaAddress) {
-        this.areaAddress.add(areaAddress);
-    }
-
-    /**
-     * Returns the area address of area address TLV.
-     *
-     * @return areaAddress area address
-     */
-    public List<String> areaAddress() {
-        return this.areaAddress;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        while (channelBuffer.readableBytes() > 0) {
-            int addressLength = channelBuffer.readByte();
-            byte[] addressbytes = new byte[addressLength];
-            channelBuffer.readBytes(addressbytes, 0, addressLength);
-            String areaAddress = IsisUtil.areaAddress(addressbytes);
-            this.areaAddress.add(areaAddress);
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] bytes = null;
-        byte[] tlvHeader = tlvHeaderAsByteArray();
-        byte[] tlvBody = tlvBodyAsBytes();
-        tlvHeader[1] = (byte) tlvBody.length;
-        bytes = Bytes.concat(tlvHeader, tlvBody);
-        return bytes;
-    }
-
-    /**
-     * Returns TLV body of area address TLV.
-     *
-     * @return byteArray TLV body of area address TLV
-     */
-    private byte[] tlvBodyAsBytes() {
-        List<Byte> bytes = new ArrayList<>();
-        for (String areaAddress : this.areaAddress) {
-            bytes.add((byte) (areaAddress.length() / 2));
-            bytes.addAll(IsisUtil.areaAddressToBytes(areaAddress));
-        }
-        return Bytes.toArray(bytes);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("areaAddress", areaAddress)
-                .toString();
-    }
-}
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/HostNameTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/HostNameTlv.java
deleted file mode 100644
index b942da2..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/HostNameTlv.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-
-/**
- * Representation of host name TLV.
- */
-public class HostNameTlv extends TlvHeader {
-    private String hostName;
-
-    /**
-     * Creates an instance of host name TLV.
-     *
-     * @param tlvHeader TLV header
-     */
-    public HostNameTlv(TlvHeader tlvHeader) {
-        this.setTlvType(tlvHeader.tlvType());
-        this.setTlvLength(tlvHeader.tlvLength());
-
-    }
-
-    /**
-     * Returns host name of host name TLV.
-     *
-     * @return host name
-     */
-    public String hostName() {
-        return hostName;
-    }
-
-    /**
-     * Sets host name for host name TLV.
-     *
-     * @param hostName host name.
-     */
-    public void setHostName(String hostName) {
-        this.hostName = hostName;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        byte[] addressbytes = new byte[this.tlvLength()];
-        channelBuffer.readBytes(addressbytes, 0, this.tlvLength());
-        this.hostName = new String(addressbytes);
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] bytes = null;
-        byte[] tlvHeader = tlvHeaderAsByteArray();
-        byte[] tlvBody = tlvBodyAsBytes();
-        tlvHeader[1] = (byte) tlvBody.length;
-        bytes = Bytes.concat(tlvHeader, tlvBody);
-        return bytes;
-    }
-
-    /**
-     * Returns TLV body of host name TLV.
-     *
-     * @return byteArray TLV body of host name TLV
-     */
-    private byte[] tlvBodyAsBytes() {
-        byte[] bytes = this.hostName.getBytes();
-        return bytes;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("hostName", hostName)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IdrpInformationTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IdrpInformationTlv.java
deleted file mode 100644
index 70e38ec..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IdrpInformationTlv.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import org.jboss.netty.buffer.ChannelBuffer;
-
-/**
- * Representation of IDRP information TLV.
- */
-public class IdrpInformationTlv extends TlvHeader implements IsisTlv {
-
-    private byte irdpInformationType;
-    private int externalInformation;
-
-    /**
-     * Creates an instance of IDRP information TLV.
-     *
-     * @param tlvHeader TLV header
-     */
-    public IdrpInformationTlv(TlvHeader tlvHeader) {
-        this.setTlvType(tlvHeader.tlvType());
-        this.setTlvLength(tlvHeader.tlvLength());
-    }
-
-    /**
-     * Returns the external information of IDRP information TLV.
-     *
-     * @return external information
-     */
-    public int externalInformation() {
-        return externalInformation;
-    }
-
-    /**
-     * Sets the external information for IDRP information TLV.
-     *
-     * @param externalInformation external information
-     */
-    public void setExternalInformation(int externalInformation) {
-        this.externalInformation = externalInformation;
-    }
-
-    /**
-     * Returns the IDRP information of IDRP information TLV.
-     *
-     * @return IDRP information type
-     */
-    public byte irdpInformationType() {
-        return irdpInformationType;
-    }
-
-    /**
-     * Sets the IDRP information for IDRP information TLV.
-     *
-     * @param irdpInformationType IDRP information type
-     */
-    public void setIrdpInformationType(byte irdpInformationType) {
-        this.irdpInformationType = irdpInformationType;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        //TODO
-    }
-
-
-    @Override
-    public byte[] asBytes() {
-        //TODO
-        return null;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("externalInformation", externalInformation)
-                .add("irdpInformationType", irdpInformationType)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpExtendedReachabilityTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpExtendedReachabilityTlv.java
deleted file mode 100644
index 58eb578..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpExtendedReachabilityTlv.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvFinder;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvToBytes;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvType;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringSubTlv;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of IP extended reachability TLV.
- */
-public class IpExtendedReachabilityTlv extends TlvHeader implements IsisTlv {
-
-    private boolean down;
-    private boolean subTlvPresence;
-    private int prefixLength;
-    private int metric;
-    private byte subTlvLength;
-    private String prefix;
-    private List<TrafficEngineeringSubTlv> trafEnginSubTlv = new ArrayList<>();
-
-    /**
-     * Creates an instance of IP external reachability TLV.
-     *
-     * @param tlvHeader TLV header
-     */
-    public IpExtendedReachabilityTlv(TlvHeader tlvHeader) {
-        this.setTlvType(tlvHeader.tlvType());
-        this.setTlvLength(tlvHeader.tlvLength());
-    }
-
-    /**
-     * Returns list of traffic engineering sub tlvs.
-     *
-     * @return trafEnginSubTlv
-     */
-    public List<TrafficEngineeringSubTlv> teTlvs() {
-        return this.trafEnginSubTlv;
-    }
-
-    /**
-     * Returns the prefix of IP external reachability TLV.
-     *
-     * @return prefix
-     */
-    public String prefix() {
-        return prefix;
-    }
-
-    /**
-     * Sets the prefix of IP external reachability TLV.
-     *
-     * @param prefix prefix
-     */
-    public void setPrefix(String prefix) {
-        this.prefix = prefix;
-    }
-
-    /**
-     * Returns if down true else false of IP external reachability TLV.
-     *
-     * @return if down true else false
-     */
-    public boolean isDown() {
-        return down;
-    }
-
-    /**
-     * Sets if down true else false of IP external reachability TLV.
-     *
-     * @param upOrDown if down true else false
-     */
-    public void setDown(boolean upOrDown) {
-        this.down = upOrDown;
-    }
-
-    /**
-     * Returns true if sub TLV present else false of IP external reachability TLV.
-     *
-     * @return true if present else false
-     */
-    public boolean isSubTlvPresence() {
-        return subTlvPresence;
-    }
-
-    /**
-     * Sets true if sub TLV present else false of IP external reachability TLV.
-     *
-     * @param subTlvPresence true if present else false
-     */
-    public void setSubTlvPresence(boolean subTlvPresence) {
-        this.subTlvPresence = subTlvPresence;
-    }
-
-    /**
-     * Sets the prefix length of IP external reachability TLV.
-     *
-     * @return prefix length
-     */
-    public int prefixLength() {
-        return prefixLength;
-    }
-
-    /**
-     * Returns the prefix length of IP external reachability TLV.
-     *
-     * @param prefixLength the prefix length of IP external reachability TLV
-     */
-    public void setPrefixLength(int prefixLength) {
-        this.prefixLength = prefixLength;
-    }
-
-    /**
-     * Adds the traffic engineering sub TLV to IP external reachability TLV.
-     *
-     * @param trafEnginSubTlv traffic engineering sub TLV
-     */
-    public void addSubTlv(TrafficEngineeringSubTlv trafEnginSubTlv) {
-        this.trafEnginSubTlv.add(trafEnginSubTlv);
-    }
-
-    /**
-     * Returns the sub TLV length of IP external reachability TLV.
-     *
-     * @return sub TLV length
-     */
-    public byte subTlvLength() {
-        return subTlvLength;
-    }
-
-    /**
-     * Sets the sub TLV length for IP external reachability TLV.
-     *
-     * @param subTlvLength sub TLV length
-     */
-    public void setSubTlvLength(byte subTlvLength) {
-        this.subTlvLength = subTlvLength;
-    }
-
-    /**
-     * Returns metric of IP external reachability TLV.
-     *
-     * @return metric
-     */
-    public int metric() {
-        return metric;
-    }
-
-    /**
-     * Sets default metric for IP external reachability TLV.
-     *
-     * @param metric default metric
-     */
-    public void setMetric(int metric) {
-        this.metric = metric;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        this.setMetric(channelBuffer.readInt());
-        int controlInfo = channelBuffer.readByte();
-        byte[] tempByteArray = null;
-
-        String string = IsisUtil.toEightBitBinary(Integer.toBinaryString(controlInfo));
-        if (string.charAt(0) == '0') {
-            this.setDown(false);
-        }
-        if (string.charAt(1) == '1') {
-            this.setSubTlvPresence(true);
-        }
-        this.setPrefixLength(Integer.parseInt(string.substring(2, string.length()), 2));
-        if (this.prefixLength >= 0 && this.prefixLength <= 8) {
-            channelBuffer.readByte();
-        } else if (this.prefixLength >= 8 && this.prefixLength <= 16) {
-            tempByteArray = new byte[IsisUtil.TWO_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, IsisUtil.TWO_BYTES);
-            this.setPrefix(IsisUtil.prefixConversion(tempByteArray));
-        } else if (this.prefixLength >= 17 && this.prefixLength <= 24) {
-            tempByteArray = new byte[IsisUtil.THREE_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, IsisUtil.THREE_BYTES);
-            this.setPrefix(IsisUtil.prefixConversion(tempByteArray));
-        } else if (this.prefixLength >= 24 && this.prefixLength <= 32) {
-            tempByteArray = new byte[IsisUtil.FOUR_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, IsisUtil.FOUR_BYTES);
-            this.setPrefix(IsisUtil.prefixConversion(tempByteArray));
-        }
-        if (this.isSubTlvPresence()) {
-            this.setSubTlvLength(channelBuffer.readByte());
-            while (channelBuffer.readableBytes() > 0) {
-                TlvHeader tlvHeader = new TlvHeader();
-                tlvHeader.setTlvType(channelBuffer.readByte());
-                tlvHeader.setTlvLength(channelBuffer.readByte());
-                SubTlvType tlvValue = SubTlvType.get(tlvHeader.tlvType());
-                if (tlvValue != null) {
-                    TrafficEngineeringSubTlv subTlv =
-                            SubTlvFinder.findSubTlv(tlvHeader, channelBuffer.readBytes(tlvHeader.tlvLength()));
-                    if (subTlv != null) {
-                        this.addSubTlv(subTlv);
-                    }
-                } else {
-                    channelBuffer.readBytes(tlvHeader.tlvLength());
-                }
-            }
-        }
-    }
-
-
-    @Override
-    public byte[] asBytes() {
-        byte[] bytes = null;
-        byte[] tlvHeader = tlvHeaderAsByteArray();
-        byte[] tlvBody = tlvBodyAsBytes();
-        tlvHeader[1] = (byte) tlvBody.length;
-        bytes = Bytes.concat(tlvHeader, tlvBody);
-
-        return bytes;
-    }
-
-    /**
-     * Returns TLV body of IP external reachability TLV.
-     *
-     * @return byteArray TLV body of IP external reachability TLV.
-     */
-    private byte[] tlvBodyAsBytes() {
-        List<Byte> bodyLst = new ArrayList<>();
-        bodyLst.addAll(Bytes.asList(IsisUtil.convertToFourBytes(this.metric())));
-        String controlInfo = "";
-        if (this.isDown()) {
-            controlInfo = controlInfo + "1";
-        } else {
-            controlInfo = controlInfo + "0";
-        }
-        if (this.isSubTlvPresence()) {
-            controlInfo = controlInfo + "1";
-        } else {
-            controlInfo = controlInfo + "0";
-        }
-        String prefixLength = IsisUtil.toEightBitBinary(Integer.toBinaryString(this.prefixLength()));
-        controlInfo = controlInfo + prefixLength.substring(2, prefixLength.length());
-        bodyLst.add(Byte.parseByte(controlInfo, 2));
-        if (this.isSubTlvPresence()) {
-            bodyLst.add(this.subTlvLength());
-            for (TrafficEngineeringSubTlv trafficEngineeringSubTlv : this.trafEnginSubTlv) {
-                bodyLst.addAll(SubTlvToBytes.tlvToBytes(trafficEngineeringSubTlv));
-            }
-        }
-        bodyLst.addAll(Bytes.asList(IsisUtil.prefixToBytes(this.prefix())));
-
-        return Bytes.toArray(bodyLst);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("down", down)
-                .add("subTlvPresence", subTlvPresence)
-                .add("prefixLength", prefixLength)
-                .add("metric", metric)
-                .add("subTlvLength", subTlvLength)
-                .add("prefix", prefix)
-                .add("trafEnginSubTlv", trafEnginSubTlv)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpInterfaceAddressTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpInterfaceAddressTlv.java
deleted file mode 100644
index 3b1e63f..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpInterfaceAddressTlv.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of IP interface address TLV.
- */
-public class IpInterfaceAddressTlv extends TlvHeader implements IsisTlv {
-
-    private List<Ip4Address> interfaceAddress = new ArrayList<>();
-
-    /**
-     * Creates an instance of IP interface address TLV.
-     *
-     * @param tlvHeader TLV header
-     */
-    public IpInterfaceAddressTlv(TlvHeader tlvHeader) {
-
-        this.setTlvType(tlvHeader.tlvType());
-        this.setTlvLength(tlvHeader.tlvLength());
-
-    }
-
-    /**
-     * Adds the interface address to IP interface address TLV.
-     *
-     * @param interfaceAddress interface address
-     */
-    public void addInterfaceAddres(Ip4Address interfaceAddress) {
-        this.interfaceAddress.add(interfaceAddress);
-    }
-
-    /**
-     * Returns the interface address of IP interface address TLV.
-     *
-     * @return interface address
-     */
-    public List<Ip4Address> interfaceAddress() {
-        return interfaceAddress;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        while (channelBuffer.readableBytes() >= 4) {
-            byte[] addressbytes = new byte[IsisUtil.FOUR_BYTES];
-            channelBuffer.readBytes(addressbytes, 0, IsisUtil.FOUR_BYTES);
-            this.interfaceAddress.add(Ip4Address.valueOf(addressbytes));
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] bytes = null;
-        byte[] tlvHeader = tlvHeaderAsByteArray();
-        byte[] tlvBody = tlvBodyAsBytes();
-        tlvHeader[1] = (byte) tlvBody.length;
-        bytes = Bytes.concat(tlvHeader, tlvBody);
-        return bytes;
-    }
-
-    /**
-     * Returns TLV body of IP interface address TLV.
-     *
-     * @return byteArray TLV body of IP interface address TLV
-     */
-    private byte[] tlvBodyAsBytes() {
-        List<Byte> bytes = new ArrayList<>();
-        for (Ip4Address ip4Address : this.interfaceAddress) {
-            bytes.addAll(Bytes.asList(ip4Address.toOctets()));
-        }
-        return Bytes.toArray(bytes);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("interfaceAddress", interfaceAddress)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpInternalReachabilityTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpInternalReachabilityTlv.java
deleted file mode 100644
index 75d4738..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpInternalReachabilityTlv.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of IP internal reachability TLV.
- */
-public class IpInternalReachabilityTlv extends TlvHeader implements IsisTlv {
-    private List<MetricOfInternalReachability> metricOfInternalReachability = new ArrayList<>();
-
-    /**
-     * Creates an instance of IP internal reachability TLV.
-     *
-     * @param tlvHeader TLV header
-     */
-    public IpInternalReachabilityTlv(TlvHeader tlvHeader) {
-        this.setTlvType(tlvHeader.tlvType());
-        this.setTlvLength(tlvHeader.tlvLength());
-    }
-
-    /**
-     * Adds the metric of internal reachability to internal reachability TLV.
-     *
-     * @param metricValue metric of internal reachability
-     */
-    public void addInternalReachabilityMetric(MetricOfInternalReachability metricValue) {
-        this.metricOfInternalReachability.add(metricValue);
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        while (channelBuffer.readableBytes() > 0) {
-            MetricOfInternalReachability metricOfInternalReachability = new MetricOfInternalReachability();
-            metricOfInternalReachability.readFrom(channelBuffer);
-            this.metricOfInternalReachability.add(metricOfInternalReachability);
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] bytes = null;
-        byte[] tlvHeader = tlvHeaderAsByteArray();
-        byte[] tlvBody = tlvBodyAsBytes();
-        tlvHeader[1] = (byte) tlvBody.length;
-        bytes = Bytes.concat(tlvHeader, tlvBody);
-        return bytes;
-    }
-
-    /**
-     * Returns TLV body of internal reachability TLV.
-     *
-     * @return byteArray TLV body of area address TLV
-     */
-    private byte[] tlvBodyAsBytes() {
-        List<Byte> bytes = new ArrayList<>();
-        for (MetricOfInternalReachability metricOfInternalReachability :
-                this.metricOfInternalReachability) {
-            bytes.addAll(Bytes.asList(metricOfInternalReachability.asBytes()));
-        }
-        return Bytes.toArray(bytes);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("metricOfInternalReachability", metricOfInternalReachability)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsExtendedReachability.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsExtendedReachability.java
deleted file mode 100644
index 3398045..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsExtendedReachability.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
-* Copyright 2016-present Open Networking Foundation
-*
-* 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of IS extended reachability TLV.
- */
-public class IsExtendedReachability extends TlvHeader implements IsisTlv {
-
-    private List<NeighborForExtendedIs> neighbors = new ArrayList<>();
-
-    /**
-     * Creates an instance of IP external reachability TLV.
-     *
-     * @param tlvHeader TLV header
-     */
-    public IsExtendedReachability(TlvHeader tlvHeader) {
-        this.setTlvType(tlvHeader.tlvType());
-        this.setTlvLength(tlvHeader.tlvLength());
-    }
-
-    /**
-     * Returns neighbor list.
-     *
-     * @return neighbor list
-     */
-    public List<NeighborForExtendedIs> neighbours() {
-        return neighbors;
-    }
-
-    /**
-     * Adds the neighbor for extended IS instance to IS extended reachability TLV.
-     *
-     * @param neighbor neighbor for extended IS instance
-     */
-    public void addNeighbor(NeighborForExtendedIs neighbor) {
-        this.neighbors.add(neighbor);
-    }
-
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        while (channelBuffer.readableBytes() >= (IsisUtil.EIGHT_BYTES + IsisUtil.THREE_BYTES)) {
-            NeighborForExtendedIs extendedIs = new NeighborForExtendedIs();
-            extendedIs.readFrom(channelBuffer);
-            this.addNeighbor(extendedIs);
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] bytes = null;
-        byte[] tlvHeader = tlvHeaderAsByteArray();
-        byte[] tlvBody = tlvBodyAsBytes();
-        tlvHeader[1] = (byte) tlvBody.length;
-        bytes = Bytes.concat(tlvHeader, tlvBody);
-        return bytes;
-    }
-
-    /**
-     * Returns TLV body of IS extended reachability TLV.
-     *
-     * @return byteArray TLV body of IS extended reachability TLV.
-     */
-    private byte[] tlvBodyAsBytes() {
-        List<Byte> byteList = new ArrayList<>();
-        for (NeighborForExtendedIs neighbor : this.neighbors) {
-            byteList.addAll(Bytes.asList(neighbor.neighborBodyAsbytes()));
-        }
-        return Bytes.toArray(byteList);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("neighbors", neighbors)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsReachabilityTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsReachabilityTlv.java
deleted file mode 100644
index ffc75e1..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsReachabilityTlv.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of IS reachability TLV.
- */
-public class IsReachabilityTlv extends TlvHeader {
-
-    private int reserved;
-    private List<MetricsOfReachability> metricsOfReachabilities = new ArrayList<>();
-
-    /**
-     * Creates an instance of IS reachability TLV.
-     *
-     * @param tlvHeader TLV header
-     */
-    public IsReachabilityTlv(TlvHeader tlvHeader) {
-        this.setTlvType(tlvHeader.tlvType());
-        this.setTlvLength(tlvHeader.tlvLength());
-    }
-
-    /**
-     * Returns the reserved value of IS reachability TLV.
-     *
-     * @return reserved
-     */
-    public int reserved() {
-        return reserved;
-    }
-
-    /**
-     * Sets the reserved value for IS reachability TLV.
-     *
-     * @param reserved reserved
-     */
-    public void setReserved(int reserved) {
-        this.reserved = reserved;
-    }
-
-    /**
-     * Adds the metric of reachability to IS reachability TLV..
-     *
-     * @param metricsOfReachability metric of reachability
-     */
-    public void addMeticsOfReachability(MetricsOfReachability metricsOfReachability) {
-        this.metricsOfReachabilities.add(metricsOfReachability);
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        this.setReserved(channelBuffer.readByte());
-        while (channelBuffer.readableBytes() > 0) {
-            MetricsOfReachability metricsOfReachability = new MetricsOfReachability();
-            metricsOfReachability.readFrom(channelBuffer);
-            this.metricsOfReachabilities.add(metricsOfReachability);
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] bytes = null;
-        byte[] tlvHeader = tlvHeaderAsByteArray();
-        byte[] tlvBody = tlvBodyAsBytes();
-        tlvHeader[1] = (byte) tlvBody.length;
-        bytes = Bytes.concat(tlvHeader, tlvBody);
-        return bytes;
-    }
-
-    /**
-     * Returns TLV body of IS reachability TLV.
-     *
-     * @return byteArray TLV body of area address TLV
-     */
-    private byte[] tlvBodyAsBytes() {
-        List<Byte> bytes = new ArrayList<>();
-        bytes.add((byte) this.reserved());
-        for (MetricsOfReachability metricsOfReachability : this.metricsOfReachabilities) {
-            bytes.addAll(Bytes.asList(metricsOfReachability.asBytes()));
-        }
-        return Bytes.toArray(bytes);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("metricsOfReachabilities", metricsOfReachabilities)
-                .toString();
-    }
-}
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsisNeighborTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsisNeighborTlv.java
deleted file mode 100644
index d58d536..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsisNeighborTlv.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.MacAddress;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of  ISIS neighbor TLV.
- */
-public class IsisNeighborTlv extends TlvHeader implements IsisTlv {
-
-    private List<MacAddress> neighbor = new ArrayList<>();
-
-    /**
-     * Creates an instance of ISIS neighbor TLV.
-     *
-     * @param tlvHeader TLV header
-     */
-    public IsisNeighborTlv(TlvHeader tlvHeader) {
-        this.setTlvType(tlvHeader.tlvType());
-        this.setTlvLength(tlvHeader.tlvLength());
-    }
-
-    /**
-     * Adds the MAC address of the neighbor to ISIS neighbor TLV.
-     *
-     * @param macAddress MAC address
-     */
-    public void addNeighbor(MacAddress macAddress) {
-        neighbor.add(macAddress);
-    }
-
-    /**
-     * Returns the MAC address of the ISIS neighbor TLV.
-     *
-     * @return neighbor
-     */
-    public List<MacAddress> neighbor() {
-        return this.neighbor;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        while (channelBuffer.readableBytes() >= 6) {
-            byte[] addressbytes = new byte[IsisUtil.SIX_BYTES];
-            channelBuffer.readBytes(addressbytes, 0, IsisUtil.SIX_BYTES);
-            this.neighbor.add(MacAddress.valueOf(addressbytes));
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] bytes = null;
-        byte[] tlvHeader = tlvHeaderAsByteArray();
-        byte[] tlvBody = tlvBodyAsBytes();
-        tlvHeader[1] = (byte) tlvBody.length;
-        bytes = Bytes.concat(tlvHeader, tlvBody);
-        return bytes;
-    }
-
-    /**
-     * Returns TLV body of ISIS neighbor TLV.
-     *
-     * @return byteArray TLV body of area address TLV
-     */
-    private byte[] tlvBodyAsBytes() {
-        List<Byte> bytes = new ArrayList<>();
-        for (MacAddress macAddress : this.neighbor) {
-            bytes.addAll(Bytes.asList(macAddress.toBytes()));
-        }
-        return Bytes.toArray(bytes);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("neighbor", neighbor)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsisTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsisTlv.java
deleted file mode 100644
index 336d053..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsisTlv.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-/**
- * Representation of  ISIS TLV.
- */
-public interface IsisTlv {
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/LspEntriesTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/LspEntriesTlv.java
deleted file mode 100644
index e1cccb4..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/LspEntriesTlv.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of LSP entries TLV.
- */
-public class LspEntriesTlv extends TlvHeader implements IsisTlv {
-    private List<LspEntry> lspEntryList = new ArrayList<>();
-
-    /**
-     * Creates an instance of LSP entries TLV.
-     *
-     * @param tlvHeader TLV header
-     */
-    public LspEntriesTlv(TlvHeader tlvHeader) {
-        this.setTlvType(tlvHeader.tlvType());
-        this.setTlvLength(tlvHeader.tlvLength());
-    }
-
-    /**
-     * Returns the LSP entry of LSP entries TLV.
-     *
-     * @return LSP entries
-     */
-    public List<LspEntry> lspEntry() {
-        return lspEntryList;
-    }
-
-    /**
-     * Adds the the LSP entry to LSP entries TLV.
-     *
-     * @param lspEntry LSP entry
-     */
-    public void addLspEntry(LspEntry lspEntry) {
-        this.lspEntryList.add(lspEntry);
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        while (channelBuffer.readableBytes() >= (IsisUtil.EIGHT_BYTES * 2)) {
-            LspEntry lspEntry = new LspEntry();
-            lspEntry.readFrom(channelBuffer.readBytes(IsisUtil.EIGHT_BYTES * 2));
-            lspEntryList.add(lspEntry);
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] bytes = null;
-        byte[] tlvHeader = tlvHeaderAsByteArray();
-        byte[] tlvBody = tlvBodyAsBytes();
-        tlvHeader[1] = (byte) tlvBody.length;
-        bytes = Bytes.concat(tlvHeader, tlvBody);
-        return bytes;
-    }
-
-    /**
-     * Returns TLV body of LSP entries TLV.
-     *
-     * @return byteArray TLV body of LSP entries TLV
-     */
-    private byte[] tlvBodyAsBytes() {
-        List<Byte> bytes = new ArrayList<>();
-        for (LspEntry lspEntry : lspEntryList) {
-            bytes.addAll(Bytes.asList(lspEntry.lspEntryAsBytes()));
-        }
-        return Bytes.toArray(bytes);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("lspEntryList", lspEntryList)
-                .toString();
-    }
-}
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/LspEntry.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/LspEntry.java
deleted file mode 100644
index 655c91b..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/LspEntry.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of LSP entry.
- */
-public class LspEntry {
-
-    private int lspSequenceNumber;
-    private int lspChecksum;
-    private int remainingTime;
-    private String lspId;
-
-
-    /**
-     * Returns LSP sequence number of LSP entry.
-     *
-     * @return LSP sequence number
-     */
-    public int lspSequenceNumber() {
-        return lspSequenceNumber;
-    }
-
-    /**
-     * Sets LSP sequenceNumber for LSP entry.
-     *
-     * @param lspSequenceNumber lspSequenceNumber
-     */
-    public void setLspSequenceNumber(int lspSequenceNumber) {
-        this.lspSequenceNumber = lspSequenceNumber;
-    }
-
-    /**
-     * Returns LSP checksum of LSP entry.
-     *
-     * @return LSP checksum
-     */
-    public int lspChecksum() {
-        return lspChecksum;
-    }
-
-    /**
-     * Sets LSP checksum for LSP entry.
-     *
-     * @param lspChecksum LSP checksum
-     */
-    public void setLspChecksum(int lspChecksum) {
-        this.lspChecksum = lspChecksum;
-    }
-
-    /**
-     * Returns remaining time of LSP entry.
-     *
-     * @return remaining time
-     */
-    public int remainingTime() {
-        return remainingTime;
-    }
-
-    /**
-     * Sets remaining time for LSP entry.
-     *
-     * @param remainingTime remaining time
-     */
-    public void setRemainingTime(int remainingTime) {
-        this.remainingTime = remainingTime;
-    }
-
-    /**
-     * Returns LSP ID of LSP entry.
-     *
-     * @return LSP ID
-     */
-    public String lspId() {
-        return lspId;
-    }
-
-    /**
-     * Sets LSP ID for LSp entry.
-     *
-     * @param lspId LSP ID
-     */
-    public void setLspId(String lspId) {
-        this.lspId = lspId;
-    }
-
-    /**
-     * Sets the LSP entry values for  LSP entry from byte buffer.
-     *
-     * @param channelBuffer channel Buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        this.setRemainingTime(channelBuffer.readUnsignedShort());
-        byte[] tempByteArray = new byte[IsisUtil.ID_PLUS_TWO_BYTE];
-        channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_TWO_BYTE);
-        this.setLspId(IsisUtil.systemIdPlus(tempByteArray));
-        this.setLspSequenceNumber(channelBuffer.readInt());
-        this.setLspChecksum(channelBuffer.readUnsignedShort());
-    }
-
-    /**
-     * Returns LSP entry values as bytes of LSP entry.
-     *
-     * @return byteArray LSP entry values as bytes of LSP entry
-     */
-    public byte[] lspEntryAsBytes() {
-        List<Byte> bytes = new ArrayList<>();
-        bytes.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.remainingTime())));
-        bytes.addAll(IsisUtil.sourceAndLanIdToBytes(this.lspId()));
-        bytes.addAll(Bytes.asList(IsisUtil.convertToFourBytes(this.lspSequenceNumber())));
-        bytes.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.lspChecksum())));
-        return Bytes.toArray(bytes);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("lspSequenceNumber", lspSequenceNumber)
-                .add("lspChecksum", lspChecksum)
-                .add("remainingTime", remainingTime)
-                .add("lspId", lspId)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/MetricOfInternalReachability.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/MetricOfInternalReachability.java
deleted file mode 100644
index eb8f6d2..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/MetricOfInternalReachability.java
+++ /dev/null
@@ -1,452 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of metric of internal reachability.
- */
-public class MetricOfInternalReachability {
-    private Ip4Address ipAddress;
-    private Ip4Address subnetAddress;
-    private byte defaultMetric;
-    private byte delayMetric;
-    private byte expenseMetric;
-    private byte errorMetric;
-    private boolean delayMetricSupported;
-    private boolean expenseMetricSupported;
-    private boolean errorMetricSupported;
-    private boolean defaultIsInternal;
-    private boolean defaultDistributionDown;
-    private boolean delayIsInternal;
-    private boolean expenseIsInternal;
-    private boolean errorIsInternal;
-
-    /**
-     * Returns the IP address of metric of internal reachability.
-     *
-     * @return ipAddress IP address of metric of internal reachability
-     */
-    public Ip4Address getIpAddress() {
-        return ipAddress;
-    }
-
-    /**
-     * Sets the IP address for metric of internal reachability.
-     *
-     * @param ipAddress ip address
-     */
-    public void setIpAddress(Ip4Address ipAddress) {
-        this.ipAddress = ipAddress;
-    }
-
-    /**
-     * Returns the subnet address of metric of internal reachability.
-     *
-     * @return subnetAddress subnet address of metric of internal reachability
-     */
-    public Ip4Address getSubnetAddress() {
-        return subnetAddress;
-    }
-
-    /**
-     * Sets the subnet address for metric of internal reachability.
-     *
-     * @param subnetAddress subnet address
-     */
-    public void setSubnetAddress(Ip4Address subnetAddress) {
-        this.subnetAddress = subnetAddress;
-    }
-
-    /**
-     * Returns error metric is internal or not.
-     *
-     * @return true if internal else false
-     */
-    public boolean isErrorIsInternal() {
-        return errorIsInternal;
-    }
-
-    /**
-     * Sets error metric is internal or not.
-     *
-     * @param errorIsInternal true if internal else false
-     */
-    public void setErrorIsInternal(boolean errorIsInternal) {
-        this.errorIsInternal = errorIsInternal;
-    }
-
-    /**
-     * Returns expense metric is internal or not.
-     *
-     * @return true if internal else false
-     */
-    public boolean isExpenseIsInternal() {
-        return expenseIsInternal;
-    }
-
-    /**
-     * Sets expense metric is internal or not.
-     *
-     * @param expenseIsInternal true if internal else false
-     */
-    public void setExpenseIsInternal(boolean expenseIsInternal) {
-        this.expenseIsInternal = expenseIsInternal;
-    }
-
-    /**
-     * Returns delays metric is internal or not.
-     *
-     * @return true if internal else false
-     */
-    public boolean isDelayIsInternal() {
-        return delayIsInternal;
-    }
-
-    /**
-     * Sets delay metric is internal or not.
-     *
-     * @param delayIsInternal true if internal else false
-     */
-    public void setDelayIsInternal(boolean delayIsInternal) {
-        this.delayIsInternal = delayIsInternal;
-    }
-
-    /**
-     * Returns is default distribution is up or down.
-     *
-     * @return true if down else false
-     */
-    public boolean isDefaultDistributionDown() {
-        return defaultDistributionDown;
-    }
-
-    /**
-     * Sets default distribution is up or down.
-     *
-     * @param defaultDistributionDown true if down else false
-     */
-    public void setDefaultDistributionDown(boolean defaultDistributionDown) {
-        this.defaultDistributionDown = defaultDistributionDown;
-    }
-
-    /**
-     * Returns is default metric is internal or not.
-     *
-     * @return true if internal else false
-     */
-    public boolean isDefaultIsInternal() {
-        return defaultIsInternal;
-    }
-
-    /**
-     * Sets default metric is internal or not.
-     *
-     * @param defaultIsInternal true is internal else false
-     */
-    public void setDefaultIsInternal(boolean defaultIsInternal) {
-        this.defaultIsInternal = defaultIsInternal;
-    }
-
-    /**
-     * Returns error metric is supported or not.
-     *
-     * @return true if supported else false
-     */
-    public boolean isErrorMetricSupported() {
-        return errorMetricSupported;
-    }
-
-    /**
-     * Sets error metric is supported or not.
-     *
-     * @param errorMetricSupported true if supported else false
-     */
-    public void setErrorMetricSupported(boolean errorMetricSupported) {
-        this.errorMetricSupported = errorMetricSupported;
-    }
-
-    /**
-     * Returns expense metric is supported or not.
-     *
-     * @return true if supported else false
-     */
-    public boolean isExpenseMetricSupported() {
-        return expenseMetricSupported;
-    }
-
-    /**
-     * Sets expense metric is supported or not.
-     *
-     * @param expenseMetricSupported true if supported else false
-     */
-    public void setExpenseMetricSupported(boolean expenseMetricSupported) {
-        this.expenseMetricSupported = expenseMetricSupported;
-    }
-
-    /**
-     * Returns delay metric is supported or not.
-     *
-     * @return true if supported else false
-     */
-    public boolean isDelayMetricSupported() {
-        return delayMetricSupported;
-    }
-
-    /**
-     * Sets delay metric is supported or not.
-     *
-     * @param delayMetricSupported true if supported else false
-     */
-    public void setDelayMetricSupported(boolean delayMetricSupported) {
-        this.delayMetricSupported = delayMetricSupported;
-    }
-
-    /**
-     * Returns error metric of metric of internal reachability.
-     *
-     * @return errorMetric error metric
-     */
-    public byte errorMetric() {
-        return errorMetric;
-    }
-
-    /**
-     * Sets error metric for metric of internal reachability.
-     *
-     * @param errorMetric error metric
-     */
-    public void setErrorMetric(byte errorMetric) {
-        this.errorMetric = errorMetric;
-    }
-
-    /**
-     * Returns expense metric of metric of internal reachability.
-     *
-     * @return expense metric
-     */
-    public byte expenseMetric() {
-        return expenseMetric;
-    }
-
-    /**
-     * Sets expense metric for metric of internal reachability.
-     *
-     * @param expenseMetric expense metric
-     */
-    public void setExpenseMetric(byte expenseMetric) {
-        this.expenseMetric = expenseMetric;
-    }
-
-    /**
-     * Returns delay metric of metric of internal reachability.
-     *
-     * @return delay metric
-     */
-    public byte delayMetric() {
-        return delayMetric;
-    }
-
-    /**
-     * Sets delay metric for metric of internal reachability.
-     *
-     * @param delayMetric delay metric
-     */
-    public void setDelayMetric(byte delayMetric) {
-        this.delayMetric = delayMetric;
-    }
-
-    /**
-     * Returns default metric of metric of internal reachability.
-     *
-     * @return default metric
-     */
-    public byte defaultMetric() {
-        return defaultMetric;
-    }
-
-    /**
-     * Sets default metric for metric of internal reachability.
-     *
-     * @param defaultMetric default metric
-     */
-    public void setDefaultMetric(byte defaultMetric) {
-        this.defaultMetric = defaultMetric;
-    }
-
-    /**
-     * Sets the metric of internal reachability
-     * values for metric of internal reachability from byte buffer.
-     *
-     * @param channelBuffer channel Buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        byte metric = channelBuffer.readByte();
-        this.setDefaultMetric(metric);
-        String metricInBinary = Integer.toBinaryString(Byte.toUnsignedInt(metric));
-        metricInBinary = IsisUtil.toEightBitBinary(metricInBinary);
-        if (metricInBinary.charAt(1) == 0) {
-            this.setDefaultIsInternal(true);
-        } else {
-            this.setDefaultIsInternal(false);
-        }
-        if (metricInBinary.charAt(0) == 0) {
-            this.setDefaultDistributionDown(true);
-        } else {
-            this.setDefaultDistributionDown(false);
-        }
-        byte delayMetric = channelBuffer.readByte();
-        metricInBinary = Integer.toBinaryString(Byte.toUnsignedInt(delayMetric));
-        metricInBinary = IsisUtil.toEightBitBinary(metricInBinary);
-        this.setDelayMetric(Byte.parseByte(metricInBinary.substring(5, metricInBinary.length()), 2));
-        if (metricInBinary.charAt(1) == 0) {
-            this.setDelayIsInternal(true);
-        } else {
-            this.setDelayIsInternal(false);
-        }
-        if (metricInBinary.charAt(0) == 0) {
-            this.setDelayMetricSupported(true);
-        } else {
-            this.setDelayMetricSupported(false);
-        }
-        byte expenseMetric = channelBuffer.readByte();
-        metricInBinary = Integer.toBinaryString(Byte.toUnsignedInt(expenseMetric));
-        metricInBinary = IsisUtil.toEightBitBinary(metricInBinary);
-        this.setExpenseMetric(Byte.parseByte(metricInBinary.substring(5, metricInBinary.length()), 2));
-        if (metricInBinary.charAt(1) == 0) {
-            this.setExpenseIsInternal(true);
-        } else {
-            this.setExpenseIsInternal(false);
-        }
-        if (metricInBinary.charAt(0) == 0) {
-            this.setExpenseMetricSupported(true);
-        } else {
-            this.setExpenseMetricSupported(false);
-        }
-        byte errorMetric = channelBuffer.readByte();
-        metricInBinary = Integer.toBinaryString(Byte.toUnsignedInt(errorMetric));
-        metricInBinary = IsisUtil.toEightBitBinary(metricInBinary);
-        this.setErrorMetric(Byte.parseByte(metricInBinary.substring(5, metricInBinary.length()), 2));
-        if (metricInBinary.charAt(1) == 0) {
-            this.setErrorIsInternal(true);
-        } else {
-            this.setErrorIsInternal(false);
-        }
-        if (metricInBinary.charAt(0) == 0) {
-            this.setErrorMetricSupported(true);
-        } else {
-            this.setErrorMetricSupported(false);
-        }
-
-        byte[] tempByteArray = new byte[IsisUtil.FOUR_BYTES];
-        channelBuffer.readBytes(tempByteArray, 0, IsisUtil.FOUR_BYTES);
-        this.setIpAddress(Ip4Address.valueOf(tempByteArray));
-
-        tempByteArray = new byte[IsisUtil.FOUR_BYTES];
-        channelBuffer.readBytes(tempByteArray, 0, IsisUtil.FOUR_BYTES);
-        this.setSubnetAddress(Ip4Address.valueOf(tempByteArray));
-    }
-
-    /**
-     * Returns metric of internal reachability values as bytes of metric of internal reachability.
-     *
-     * @return byteArray metric of internal reachability values as bytes of metric of internal reachability
-     */
-    public byte[] asBytes() {
-        List<Byte> bytes = new ArrayList<>();
-        bytes.add(this.defaultMetric());
-        int temp = this.delayMetric();
-        String hsbBits = "";
-        if (this.isDelayMetricSupported()) {
-            hsbBits = "0" + hsbBits;
-        } else {
-            hsbBits = "1" + hsbBits;
-        }
-        if (this.isDelayIsInternal()) {
-            hsbBits = hsbBits + "0";
-        } else {
-            hsbBits = hsbBits + "1";
-        }
-        hsbBits = hsbBits + "00";
-        String binary = hsbBits + IsisUtil.toFourBitBinary(Integer.toBinaryString(temp));
-        bytes.add((byte) Integer.parseInt(binary, 2));
-
-        temp = this.expenseMetric();
-        hsbBits = "";
-        if (this.isExpenseMetricSupported()) {
-            hsbBits = "0" + hsbBits;
-        } else {
-            hsbBits = "1" + hsbBits;
-        }
-        if (this.isExpenseIsInternal()) {
-            hsbBits = hsbBits + "0";
-        } else {
-            hsbBits = hsbBits + "1";
-        }
-        hsbBits = hsbBits + "00";
-        binary = hsbBits + IsisUtil.toFourBitBinary(Integer.toBinaryString(temp));
-        bytes.add((byte) Integer.parseInt(binary, 2));
-
-        temp = this.errorMetric();
-        hsbBits = "";
-        if (this.isErrorMetricSupported()) {
-            hsbBits = "0" + hsbBits;
-        } else {
-            hsbBits = "1" + hsbBits;
-        }
-        if (this.isExpenseIsInternal()) {
-            hsbBits = hsbBits + "0";
-        } else {
-            hsbBits = hsbBits + "1";
-        }
-        hsbBits = hsbBits + "00";
-        binary = hsbBits + IsisUtil.toFourBitBinary(Integer.toBinaryString(temp));
-        bytes.add((byte) Integer.parseInt(binary, 2));
-
-        bytes.addAll(Bytes.asList(this.getIpAddress().toOctets()));
-        bytes.addAll(Bytes.asList(this.getSubnetAddress().toOctets()));
-        return Bytes.toArray(bytes);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("ipAddress", ipAddress)
-                .add("subnetAddress", subnetAddress)
-                .add("defaultMetric", defaultMetric)
-                .add("delayMetric", delayMetric)
-                .add("expenseMetric", expenseMetric)
-                .add("errorMetric", errorMetric)
-                .add("delayMetricSupported", delayMetricSupported)
-                .add("expenseMetricSupported", expenseMetricSupported)
-                .add("errorMetricSupported", errorMetricSupported)
-                .add("defaultIsInternal", defaultIsInternal)
-                .add("defaultDistributionDown", defaultDistributionDown)
-                .add("delayIsInternal", delayIsInternal)
-                .add("expenseIsInternal", expenseIsInternal)
-                .add("errorIsInternal", errorIsInternal)
-                .toString();
-    }
-}
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/MetricsOfReachability.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/MetricsOfReachability.java
deleted file mode 100644
index bafc94b..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/MetricsOfReachability.java
+++ /dev/null
@@ -1,358 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of metric of reachability.
- */
-public class MetricsOfReachability {
-    private final String value1 = "10000000";
-    private final String value2 = "00000000";
-    private String neighborId;
-    private byte defaultMetric;
-    private byte delayMetric;
-    private byte expenseMetric;
-    private byte errorMetric;
-    private boolean delayMetricSupported;
-    private boolean expenseMetricSupported;
-    private boolean errorMetricSupported;
-    private boolean defaultIsInternal;
-    private boolean delayIsInternal;
-    private boolean expenseIsInternal;
-    private boolean errorIsInternal;
-
-    /**
-     * Returns delay metric is internal or not.
-     *
-     * @return true if internal else false
-     */
-    public boolean isDelayIsInternal() {
-        return delayIsInternal;
-    }
-
-    /**
-     * Sets delay metric is internal or not.
-     *
-     * @param delayIsInternal true if internal else false
-     */
-    public void setDelayIsInternal(boolean delayIsInternal) {
-        this.delayIsInternal = delayIsInternal;
-    }
-
-    /**
-     * Returns expense metric is internal or not.
-     *
-     * @return true if internal else false
-     */
-    public boolean isExpenseIsInternal() {
-        return expenseIsInternal;
-    }
-
-    /**
-     * Sets expense metric is internal or not.
-     *
-     * @param expenseIsInternal true if internal else false
-     */
-    public void setExpenseIsInternal(boolean expenseIsInternal) {
-        this.expenseIsInternal = expenseIsInternal;
-    }
-
-    /**
-     * Returns error metric is internal or not.
-     *
-     * @return true if internal else false
-     */
-    public boolean isErrorIsInternal() {
-        return errorIsInternal;
-    }
-
-    /**
-     * Sets error metric is internal or not.
-     *
-     * @param errorIsInternal true if internal else false
-     */
-    public void setErrorIsInternal(boolean errorIsInternal) {
-        this.errorIsInternal = errorIsInternal;
-    }
-
-    /**
-     * Returns default metric is internal or not.
-     *
-     * @return true if internal else false
-     */
-    public boolean isDefaultIsInternal() {
-        return defaultIsInternal;
-    }
-
-    /**
-     * Sets default metric is internal or not.
-     *
-     * @param defaultIsInternal true if internal else false
-     */
-    public void setDefaultIsInternal(boolean defaultIsInternal) {
-        this.defaultIsInternal = defaultIsInternal;
-    }
-
-    /**
-     * Returns delay metric is supported or not.
-     *
-     * @return true if supported else false
-     */
-    public boolean isDelayMetricSupported() {
-        return delayMetricSupported;
-    }
-
-    /**
-     * Sets delay metric is supported or not.
-     *
-     * @param delayMetricSupported true if supported else false
-     */
-    public void setDelayMetricSupported(boolean delayMetricSupported) {
-        this.delayMetricSupported = delayMetricSupported;
-    }
-
-    /**
-     * Returns expense metric is supported or not.
-     *
-     * @return true if supported else false
-     */
-    public boolean isExpenseMetricSupported() {
-        return expenseMetricSupported;
-    }
-
-    /**
-     * Sets expense metric is supported or not.
-     *
-     * @param expenseMetricSupported true if supported else false
-     */
-    public void setExpenseMetricSupported(boolean expenseMetricSupported) {
-        this.expenseMetricSupported = expenseMetricSupported;
-    }
-
-    /**
-     * Returns error metric is supported or not.
-     *
-     * @return true if supported else false
-     */
-    public boolean isErrorMetricSupported() {
-        return errorMetricSupported;
-    }
-
-    /**
-     * Sets error metric is supported or not.
-     *
-     * @param errorMetricSupported true if supported else false
-     */
-    public void setErrorMetricSupported(boolean errorMetricSupported) {
-        this.errorMetricSupported = errorMetricSupported;
-    }
-
-    /**
-     * Returns neighbor ID of metric of reachability.
-     *
-     * @return neighbor ID
-     */
-    public String neighborId() {
-        return neighborId;
-    }
-
-    /**
-     * Sets neighbor ID for metric of reachability.
-     *
-     * @param neighborId neighbor ID
-     */
-    public void setNeighborId(String neighborId) {
-        this.neighborId = neighborId;
-    }
-
-
-    /**
-     * Returns default metric of metric of reachability.
-     *
-     * @return default metric
-     */
-    public byte defaultMetric() {
-        return defaultMetric;
-    }
-
-    /**
-     * Sets default metric for  of reachability.
-     *
-     * @param defaultMetric default metric
-     */
-    public void setDefaultMetric(byte defaultMetric) {
-        this.defaultMetric = defaultMetric;
-    }
-
-    /**
-     * Returns delay metric of metric of reachability.
-     *
-     * @return delay metric
-     */
-    public byte delayMetric() {
-        return delayMetric;
-    }
-
-    /**
-     * Sets delay metric for metric of reachability.
-     *
-     * @param delayMetric delay metric
-     */
-    public void setDelayMetric(byte delayMetric) {
-        this.delayMetric = delayMetric;
-    }
-
-    /**
-     * Returns Expense metric of metric of reachability.
-     *
-     * @return Expense metric
-     */
-    public byte expenseMetric() {
-        return expenseMetric;
-    }
-
-    /**
-     * Sets Expense metric for metric of reachability.
-     *
-     * @param expenseMetric Expense metric
-     */
-    public void setExpenseMetric(byte expenseMetric) {
-        this.expenseMetric = expenseMetric;
-    }
-
-    /**
-     * Returns Error metric of metric of reachability.
-     *
-     * @return Error metric
-     */
-    public byte errorMetric() {
-        return errorMetric;
-    }
-
-    /**
-     * Sets Error metric for metric of reachability.
-     *
-     * @param errorMetric Error metric
-     */
-    public void setErrorMetric(byte errorMetric) {
-        this.errorMetric = errorMetric;
-    }
-
-    /**
-     * Sets the metric of reachability values for metric of reachability from byte buffer.
-     *
-     * @param channelBuffer channel Buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        byte metric = channelBuffer.readByte();
-        String metricInBinary = Integer.toBinaryString(Byte.toUnsignedInt(metric));
-        metricInBinary = IsisUtil.toEightBitBinary(metricInBinary);
-        this.setDefaultMetric(metric);
-        this.setDelayMetric(metric);
-        this.setExpenseMetric(metric);
-        this.setErrorMetric(metric);
-        this.setDelayMetric(metric);
-        if (metricInBinary.charAt(0) == 0) {
-            this.setDefaultIsInternal(true);
-        } else {
-            this.setDefaultIsInternal(false);
-        }
-        if (metricInBinary.charAt(0) == 0) {
-            this.setDelayMetricSupported(true);
-            this.setExpenseMetricSupported(true);
-            this.setErrorMetricSupported(true);
-        } else {
-            this.setDelayMetricSupported(false);
-            this.setExpenseMetricSupported(false);
-            this.setErrorMetricSupported(false);
-        }
-        byte temp = channelBuffer.readByte();
-        String internalBit = Integer.toBinaryString(Byte.toUnsignedInt(temp));
-        internalBit = IsisUtil.toEightBitBinary(internalBit);
-        if (internalBit.charAt(1) == 0) {
-            this.setDelayIsInternal(true);
-        }
-        temp = channelBuffer.readByte();
-        internalBit = Integer.toBinaryString(Byte.toUnsignedInt(temp));
-        internalBit = IsisUtil.toEightBitBinary(internalBit);
-        if (internalBit.charAt(1) == 0) {
-            this.setExpenseIsInternal(true);
-        }
-        temp = channelBuffer.readByte();
-        internalBit = Integer.toBinaryString(Byte.toUnsignedInt(temp));
-        internalBit = IsisUtil.toEightBitBinary(internalBit);
-        if (internalBit.charAt(1) == 0) {
-            this.setErrorIsInternal(true);
-        }
-        byte[] tempByteArray = new byte[IsisUtil.ID_PLUS_ONE_BYTE];
-        channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_ONE_BYTE);
-        this.setNeighborId(IsisUtil.systemIdPlus(tempByteArray));
-    }
-
-    /**
-     * Returns metric of reachability values as bytes of metric of reachability.
-     *
-     * @return byteArray metric of reachability values as bytes of metric of reachability
-     */
-    public byte[] asBytes() {
-        List<Byte> bytes = new ArrayList<>();
-        bytes.add((byte) this.defaultMetric());
-        if (this.isDelayIsInternal()) {
-            bytes.add((byte) Integer.parseInt(value1));
-        } else {
-            bytes.add((byte) Integer.parseInt(value2));
-        }
-        if (this.isExpenseIsInternal()) {
-            bytes.add((byte) Integer.parseInt(value1));
-        } else {
-            bytes.add((byte) Integer.parseInt(value2));
-        }
-        if (this.isErrorIsInternal()) {
-            bytes.add((byte) Integer.parseInt(value1));
-        } else {
-            bytes.add((byte) Integer.parseInt(value2));
-        }
-        bytes.addAll(IsisUtil.sourceAndLanIdToBytes(this.neighborId()));
-        return Bytes.toArray(bytes);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("neighborId", neighborId)
-                .add("defaultMetric", defaultMetric)
-                .add("delayMetric", delayMetric)
-                .add("expenseMetric", expenseMetric)
-                .add("errorMetric", errorMetric)
-                .add("delayMetricSupported", delayMetricSupported)
-                .add("expenseMetricSupported", expenseMetricSupported)
-                .add("errorMetricSupported", errorMetricSupported)
-                .add("defaultIsInternal", defaultIsInternal)
-                .add("delayIsInternal", delayIsInternal)
-                .add("expenseIsInternal", expenseIsInternal)
-                .add("errorIsInternal", errorIsInternal)
-                .toString();
-    }
-}
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIs.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIs.java
deleted file mode 100644
index b248dec..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIs.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvFinder;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvToBytes;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvType;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringSubTlv;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of IS extended reachability neighbors.
- */
-public class NeighborForExtendedIs {
-
-    private String neighborId;
-    private int metric;
-    private List<TrafficEngineeringSubTlv> teSubTlv = new ArrayList<>();
-
-    /**
-     * Returns neighbor ID.
-     *
-     * @return neighbor ID
-     */
-    public String neighborId() {
-        return neighborId;
-    }
-
-    /**
-     * Returns list of sub tlvs.
-     *
-     * @return teSubTlv list of sub tlvs
-     */
-    public List<TrafficEngineeringSubTlv> teSubTlv() {
-        return teSubTlv;
-    }
-
-    /**
-     * Sets neighbor ID.
-     *
-     * @param neighborId neighbor ID
-     */
-    public void setNeighborId(String neighborId) {
-        this.neighborId = neighborId;
-    }
-
-    /**
-     * Returns metric.
-     *
-     * @return metric
-     */
-    public int metric() {
-        return metric;
-    }
-
-    /**
-     * Sets metric.
-     *
-     * @param metric metric
-     */
-    public void setMetric(int metric) {
-        this.metric = metric;
-    }
-
-    /**
-     * Adds the TE for extended IS instance to IS extended reachability TLV.
-     *
-     * @param trafficEngineeringSubTlv TE for extended IS instance
-     */
-    public void addSubTlv(TrafficEngineeringSubTlv trafficEngineeringSubTlv) {
-        this.teSubTlv.add(trafficEngineeringSubTlv);
-    }
-
-    /**
-     * Reads from the channel buffer and populate this instance.
-     *
-     * @param channelBuffer channel buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        byte[] tempByteArray = new byte[IsisUtil.ID_PLUS_ONE_BYTE];
-        channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_ONE_BYTE);
-        this.setNeighborId(IsisUtil.systemIdPlus(tempByteArray));
-        this.setMetric(channelBuffer.readUnsignedMedium());
-        int nTlvPresent = channelBuffer.readByte();
-        if (nTlvPresent > 0) {
-            /* ntlvPresent=0 infers that all Sub TLVs,
-               for a particular neighbor,
-               have been parsed and the loop has to be terminated
-             */
-            while (channelBuffer.readableBytes() > IsisUtil.TWO_BYTES && nTlvPresent > 0) {
-                TlvHeader tlvHeader = new TlvHeader();
-                tlvHeader.setTlvType(channelBuffer.readByte());
-                tlvHeader.setTlvLength(channelBuffer.readByte());
-                SubTlvType tlvValue = SubTlvType.get(tlvHeader.tlvType());
-                int tlvLength = tlvHeader.tlvLength();
-                if (tlvValue != null) {
-                    if (channelBuffer.readableBytes() >= tlvLength) {
-                        TrafficEngineeringSubTlv subTlv =
-                                SubTlvFinder.findSubTlv(tlvHeader, channelBuffer.readBytes(tlvHeader.tlvLength()));
-                        if (subTlv != null) {
-                            this.addSubTlv(subTlv);
-                        }
-                        /*As one Sub TLV is parsed, its length is
-                        subtracted from total length to be read
-                         */
-                        nTlvPresent = nTlvPresent - (tlvLength + IsisUtil.TWO_BYTES);
-                    }
-                } else {
-                    if (channelBuffer.readableBytes() >= tlvLength) {
-                        channelBuffer.readBytes(tlvLength);
-                        /*As one Sub TLV is parsed, its length is
-                        subtracted from total length to be read
-                         */
-                        nTlvPresent = nTlvPresent - (tlvLength + IsisUtil.TWO_BYTES);
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Returns neighbor details of IS extended reachability TLV.
-     *
-     * @return neighbor details of IS extended reachability TLV.
-     */
-    public byte[] neighborBodyAsbytes() {
-        List<Byte> byteList = new ArrayList<>();
-        byteList.addAll(IsisUtil.sourceAndLanIdToBytes(this.neighborId()));
-        byteList.addAll(Bytes.asList(IsisUtil.convertToThreeBytes(this.metric())));
-        if (!this.teSubTlv.isEmpty()) {
-            for (TrafficEngineeringSubTlv trafficEngineeringSubTlv : this.teSubTlv) {
-                byteList.addAll(SubTlvToBytes.tlvToBytes(trafficEngineeringSubTlv));
-            }
-        }
-        return Bytes.toArray(byteList);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("neighborId", neighborId)
-                .add("metric", metric)
-                .add("teSubTlv", teSubTlv)
-                .toString();
-    }
-}
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/PaddingTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/PaddingTlv.java
deleted file mode 100644
index ef51e54..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/PaddingTlv.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of padding TLV.
- */
-public class PaddingTlv extends TlvHeader implements IsisTlv {
-    private List<Byte> paddings = new ArrayList<>();
-
-    /**
-     * Creates an instance of padding TLV.
-     *
-     * @param tlvHeader TLV header
-     */
-    public PaddingTlv(TlvHeader tlvHeader) {
-        this.setTlvType(tlvHeader.tlvType());
-        this.setTlvLength(tlvHeader.tlvLength());
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        while (channelBuffer.readableBytes() > 0) {
-            this.paddings.add(channelBuffer.readByte());
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] bytes = null;
-
-        byte[] tlvHeader = tlvHeaderAsByteArray();
-        byte[] tlvBody = tlvBodyAsBytes();
-        tlvHeader[1] = (byte) tlvBody.length;
-        bytes = Bytes.concat(tlvHeader, tlvBody);
-
-        return bytes;
-    }
-
-    /**
-     * Returns TLV body of padding TLV.
-     *
-     * @return byteArray TLV body of padding TLV
-     */
-    private byte[] tlvBodyAsBytes() {
-        byte[] areaArea = new byte[this.tlvLength()];
-        return areaArea;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("paddings", paddings)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/ProtocolSupportedTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/ProtocolSupportedTlv.java
deleted file mode 100644
index ded4ae1..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/ProtocolSupportedTlv.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of  protocol supported TLV.
- */
-public class ProtocolSupportedTlv extends TlvHeader implements IsisTlv {
-
-    private List<Byte> protocolSupported = new ArrayList<>();
-
-    /**
-     * Creates an instance of protocol supported TLV.
-     *
-     * @param tlvHeader TLV header
-     */
-    public ProtocolSupportedTlv(TlvHeader tlvHeader) {
-
-        this.setTlvType(tlvHeader.tlvType());
-        this.setTlvLength(tlvHeader.tlvLength());
-
-    }
-
-    /**
-     * Adds the protocol supported to protocol supported TLV.
-     *
-     * @param protocolValue protocol supported
-     */
-    public void addProtocolSupported(byte protocolValue) {
-        protocolSupported.add(protocolValue);
-    }
-
-    /**
-     * Returns protocols supported of protocol supported TLV.
-     *
-     * @return protocol supported
-     */
-    public List<Byte> protocolSupported() {
-        return this.protocolSupported;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) {
-        while (channelBuffer.readableBytes() > 0) {
-            this.protocolSupported.add(channelBuffer.readByte());
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] bytes = null;
-
-        byte[] tlvHeader = tlvHeaderAsByteArray();
-        byte[] tlvBody = tlvBodyAsBytes();
-        tlvHeader[1] = (byte) tlvBody.length;
-        bytes = Bytes.concat(tlvHeader, tlvBody);
-        return bytes;
-    }
-
-    /**
-     * Gets TLV body of protocol supported TLV.
-     *
-     * @return byteArray TLV body of protocol supported TLV
-     */
-    private byte[] tlvBodyAsBytes() {
-        List<Byte> bytes = new ArrayList<>();
-        for (byte byt : this.protocolSupported) {
-            bytes.add(byt);
-        }
-        byte[] byteArray = new byte[bytes.size()];
-        int i = 0;
-        for (byte byt : bytes) {
-            byteArray[i++] = byt;
-        }
-        return byteArray;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("protocolSupported", protocolSupported)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvFinder.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvFinder.java
deleted file mode 100644
index 059f91e..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvFinder.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-/**
- * Representation of TLV Finder.
- */
-public class TlvFinder extends TlvHeader {
-
-    /**
-     * Sets the value for TLV header.
-     *
-     * @param tlvHeader     tlvHeader
-     * @param channelBuffer byteBuf
-     * @return isisTlv
-     */
-    public static IsisTlv findTlv(TlvHeader tlvHeader, ChannelBuffer channelBuffer) {
-
-        IsisTlv isisTlv = null;
-        switch (TlvType.get(tlvHeader.tlvType())) {
-            case AREAADDRESS:
-                AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader);
-                areaAddressTlv.readFrom(channelBuffer);
-                isisTlv = areaAddressTlv;
-                break;
-            case AUTHENTICATION:
-                //TODO
-                break;
-            case EXTENDEDISREACHABILITY:
-                IsExtendedReachability isExtendedReachability =
-                        new IsExtendedReachability(tlvHeader);
-                isExtendedReachability.readFrom(channelBuffer);
-                isisTlv = isExtendedReachability;
-                break;
-            case HOSTNAME:
-                HostNameTlv hostNameTlv = new HostNameTlv(tlvHeader);
-                hostNameTlv.readFrom(channelBuffer);
-                isisTlv = hostNameTlv;
-                break;
-            case IDRPINFORMATION:
-                IdrpInformationTlv idrpInformationTlv = new IdrpInformationTlv(tlvHeader);
-                idrpInformationTlv.readFrom(channelBuffer);
-                isisTlv = idrpInformationTlv;
-                break;
-            case IPEXTENDEDREACHABILITY:
-                IpExtendedReachabilityTlv iperTlv = new IpExtendedReachabilityTlv(tlvHeader);
-                iperTlv.readFrom(channelBuffer);
-                isisTlv = iperTlv;
-                break;
-            case IPINTERFACEADDRESS:
-                IpInterfaceAddressTlv ipTlv = new IpInterfaceAddressTlv(tlvHeader);
-                ipTlv.readFrom(channelBuffer);
-                isisTlv = ipTlv;
-                break;
-            case IPINTERNALREACHABILITY:
-                IpInternalReachabilityTlv iprTlv = new IpInternalReachabilityTlv(tlvHeader);
-                iprTlv.readFrom(channelBuffer);
-                isisTlv = iprTlv;
-                break;
-            case ISALIAS:
-                break;
-            case PROTOCOLSUPPORTED:
-                ProtocolSupportedTlv psTlv = new ProtocolSupportedTlv(tlvHeader);
-                psTlv.readFrom(channelBuffer);
-                isisTlv = psTlv;
-                break;
-            case ISREACHABILITY:
-                IsReachabilityTlv isrTlv = new IsReachabilityTlv(tlvHeader);
-                isrTlv.readFrom(channelBuffer);
-                isisTlv = isrTlv;
-                break;
-            case ISNEIGHBORS:
-                IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader);
-                isisNeighborTlv.readFrom(channelBuffer);
-                isisTlv = isisNeighborTlv;
-                break;
-            case LSPENTRY:
-                LspEntriesTlv lspEntriesTlv = new LspEntriesTlv(tlvHeader);
-                lspEntriesTlv.readFrom(channelBuffer);
-                isisTlv = lspEntriesTlv;
-                break;
-            case PADDING:
-                PaddingTlv paddingTlv = new PaddingTlv(tlvHeader);
-                paddingTlv.readFrom(channelBuffer);
-                isisTlv = paddingTlv;
-                break;
-            case ADJACENCYSTATE:
-                AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader);
-                adjacencyStateTlv.readFrom(channelBuffer);
-                isisTlv = adjacencyStateTlv;
-                break;
-            default:
-                break;
-        }
-        return isisTlv;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvHeader.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvHeader.java
deleted file mode 100644
index 68bda54..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvHeader.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of TLV header.
- */
-public class TlvHeader implements IsisTlv {
-    private int tlvType;
-    private int tlvLength;
-
-    /**
-     * Returns TLV length of TLV.
-     *
-     * @return TLV length
-     */
-    public int tlvLength() {
-        return tlvLength;
-    }
-
-    /**
-     * Sets TLV length for TLV.
-     *
-     * @param tlvLength TLV length
-     */
-    public void setTlvLength(int tlvLength) {
-        this.tlvLength = tlvLength;
-    }
-
-    /**
-     * Returns TLV type of TLV.
-     *
-     * @return TLV type
-     */
-    public int tlvType() {
-        return tlvType;
-    }
-
-    /**
-     * Sets TLV type for TLV.
-     *
-     * @param tlvType TLV type
-     */
-    public void setTlvType(int tlvType) {
-        this.tlvType = tlvType;
-    }
-
-    /**
-     * Sets TLV values from channel buffer.
-     *
-     * @param channelBuffer channel Buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        //implemented in sub classes
-    }
-
-
-    /**
-     * Returns TLV as byte array.
-     *
-     * @return byteArray TLV body of area address TLV
-     */
-    public byte[] asBytes() {
-        return null;
-    }
-
-    /**
-     * Returns TLV header of TLV as bytes.
-     *
-     * @return TLV header as bytes
-     */
-    public byte[] tlvHeaderAsByteArray() {
-        List<Byte> headerLst = new ArrayList<>();
-        headerLst.add((byte) this.tlvType);
-        headerLst.add((byte) this.tlvLength);
-        return Bytes.toArray(headerLst);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("tlvType", tlvType)
-                .add("tlvLength", tlvLength)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvType.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvType.java
deleted file mode 100644
index bf609c8..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvType.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Representation of various values for TLV types.
- */
-public enum TlvType {
-    AREAADDRESS(1),
-    ISREACHABILITY(2),
-    ISNEIGHBORS(6),
-    PADDING(8),
-    LSPENTRY(9),
-    AUTHENTICATION(10),
-    HOSTNAME(137),
-    EXTENDEDISREACHABILITY(22),
-    ISALIAS(24),
-    IPINTERNALREACHABILITY(128),
-    PROTOCOLSUPPORTED(129),
-    IPEXTERNALREACHABILITY(130),
-    IPEXTENDEDREACHABILITY(135),
-    IDRPINFORMATION(131),
-    IPINTERFACEADDRESS(132),
-    ADJACENCYSTATE(240);
-
-    // Reverse lookup table
-    private static final Map<Integer, TlvType> LOOKUP = new HashMap<>();
-
-    // Populate the lookup table on loading time
-    static {
-        for (TlvType isisTlvType : EnumSet.allOf(TlvType.class)) {
-            LOOKUP.put(isisTlvType.value(), isisTlvType);
-        }
-    }
-
-    private int value;
-
-    /**
-     * Sets the TLV type value.
-     *
-     * @param value value.
-     */
-    TlvType(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Gets the enum instance from type value - reverse lookup purpose.
-     *
-     * @param tlvTypeValue TLV type value
-     * @return ISIS TLV type instance
-     */
-    public static TlvType get(int tlvTypeValue) {
-        return LOOKUP.get(tlvTypeValue);
-    }
-
-    /**
-     * Gets value.
-     *
-     * @return value
-     */
-    public int value() {
-        return value;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvsToBytes.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvsToBytes.java
deleted file mode 100644
index 659ef57..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvsToBytes.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import com.google.common.primitives.Bytes;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of conversion of TLV's to bytes.
- */
-public final class TlvsToBytes {
-
-    private static final Logger log = LoggerFactory.getLogger(TlvsToBytes.class);
-
-    /**
-     * Creates an instance.
-     */
-    private TlvsToBytes() {
-    }
-
-    /**
-     * Sets the ISIS TLV and returns in the form of bytes.
-     *
-     * @param isisTlv isisTlv.
-     * @return tlvBytes
-     */
-    public static List<Byte> tlvToBytes(IsisTlv isisTlv) {
-        List<Byte> tlvBytes = new ArrayList<>();
-        if (isisTlv instanceof AreaAddressTlv) {
-            AreaAddressTlv areaAddressTlv = (AreaAddressTlv) isisTlv;
-            tlvBytes.addAll(Bytes.asList(areaAddressTlv.asBytes()));
-        } else if (isisTlv instanceof IpInterfaceAddressTlv) {
-            IpInterfaceAddressTlv ipInterfaceAddressTlv = (IpInterfaceAddressTlv) isisTlv;
-            tlvBytes.addAll(Bytes.asList(ipInterfaceAddressTlv.asBytes()));
-        } else if (isisTlv instanceof ProtocolSupportedTlv) {
-            ProtocolSupportedTlv protocolSupportedTlv = (ProtocolSupportedTlv) isisTlv;
-            tlvBytes.addAll(Bytes.asList(protocolSupportedTlv.asBytes()));
-        } else if (isisTlv instanceof PaddingTlv) {
-            PaddingTlv paddingTlv = (PaddingTlv) isisTlv;
-            tlvBytes.addAll(Bytes.asList(paddingTlv.asBytes()));
-        } else if (isisTlv instanceof IsisNeighborTlv) {
-            IsisNeighborTlv isisNeighborTlv = (IsisNeighborTlv) isisTlv;
-            tlvBytes.addAll(Bytes.asList(isisNeighborTlv.asBytes()));
-        } else if (isisTlv instanceof AdjacencyStateTlv) {
-            AdjacencyStateTlv isisAdjacencyState
-                    = (AdjacencyStateTlv) isisTlv;
-            tlvBytes.addAll(Bytes.asList(isisAdjacencyState.asBytes()));
-        } else if (isisTlv instanceof HostNameTlv) {
-            HostNameTlv hostNameTlv
-                    = (HostNameTlv) isisTlv;
-            tlvBytes.addAll(Bytes.asList(hostNameTlv.asBytes()));
-        } else if (isisTlv instanceof IpExtendedReachabilityTlv) {
-            IpExtendedReachabilityTlv ipExtendedReachabilityTlv
-                    = (IpExtendedReachabilityTlv) isisTlv;
-            tlvBytes.addAll(Bytes.asList(ipExtendedReachabilityTlv.asBytes()));
-        } else if (isisTlv instanceof IpInternalReachabilityTlv) {
-            IpInternalReachabilityTlv ipInternalReachabilityTlv
-                    = (IpInternalReachabilityTlv) isisTlv;
-            tlvBytes.addAll(Bytes.asList(ipInternalReachabilityTlv.asBytes()));
-        } else if (isisTlv instanceof IsReachabilityTlv) {
-            IsReachabilityTlv isReachabilityTlv
-                    = (IsReachabilityTlv) isisTlv;
-            tlvBytes.addAll(Bytes.asList(isReachabilityTlv.asBytes()));
-        } else if (isisTlv instanceof LspEntriesTlv) {
-            LspEntriesTlv lspEntriesTlv
-                    = (LspEntriesTlv) isisTlv;
-            tlvBytes.addAll(Bytes.asList(lspEntriesTlv.asBytes()));
-        } else if (isisTlv instanceof IsExtendedReachability) {
-            IsExtendedReachability isExtendedReachability
-                    = (IsExtendedReachability) isisTlv;
-            tlvBytes.addAll(Bytes.asList(isExtendedReachability.asBytes()));
-        } else {
-            log.debug("TlvsToBytes::UNKNOWN TLV TYPE ::TlvsToBytes ");
-        }
-        return tlvBytes;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/package-info.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/package-info.java
deleted file mode 100644
index 9b03aa5..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the ISIS protocol.
- */
-package org.onosproject.isis.io.isispacket.tlv;
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroup.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroup.java
deleted file mode 100644
index eaba07b..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroup.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-import org.onosproject.isis.io.util.IsisUtil;
-
-
-/**
- * Representation of an administrative group.
- */
-public class AdministrativeGroup extends TlvHeader implements TrafficEngineeringSubTlv {
-
-    private int administrativeGroup;
-
-    /**
-     * Creates an administrative group instance.
-     *
-     * @param header Tlv Header instance
-     */
-    public AdministrativeGroup(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Returns administrative group value.
-     *
-     * @return administrative group value
-     */
-    public int administrativeGroup() {
-        return administrativeGroup;
-    }
-
-    /**
-     * Sets administrative group value.
-     *
-     * @param administrativeGroup value
-     */
-    public void setAdministrativeGroup(int administrativeGroup) {
-        this.administrativeGroup = administrativeGroup;
-    }
-
-    /**
-     * Returns administrative group value.
-     *
-     * @return administrativeGroup value
-     */
-    public int getAdministrativeGroupValue() {
-        return this.administrativeGroup;
-    }
-
-    /**
-     * Reads bytes from channel buffer.
-     *
-     * @param channelBuffer Channel buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        byte[] tempByteArray = new byte[tlvLength()];
-        channelBuffer.readBytes(tempByteArray, 0, tlvLength());
-        this.setAdministrativeGroup(IsisUtil.byteToInteger(tempByteArray));
-    }
-
-    /**
-     * Returns administrative group as byte array.
-     *
-     * @return administrative group instance as byte array
-     */
-    public byte[] asBytes() {
-        byte[] linkSubType = null;
-
-        byte[] linkSubTlvHeader = tlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = tlvBodyAsBytes();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-
-        return linkSubType;
-    }
-
-    /**
-     * Returns administrative group body as byte array.
-     *
-     * @return byte array of sub tlv administrative group
-     */
-    public byte[] tlvBodyAsBytes() {
-
-        byte[] linkSubTypeBody;
-        linkSubTypeBody = IsisUtil.convertToFourBytes(this.administrativeGroup);
-
-        return linkSubTypeBody;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("administrativeGroup", administrativeGroup)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddress.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddress.java
deleted file mode 100644
index e9bba29..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddress.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
-* Copyright 2016-present Open Networking Foundation
-*
-* 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.isis.io.isispacket.tlv.subtlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-import org.onosproject.isis.io.util.IsisUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of interface ip address TE value.
- */
-public class InterfaceIpAddress extends TlvHeader implements TrafficEngineeringSubTlv {
-    private static final Logger log =
-            LoggerFactory.getLogger(NeighborIpAddress.class);
-    private Ip4Address localInterfaceIPAddress;
-
-    /**
-     * Creates an instance of local interface ip address.
-     *
-     * @param header tlv header instance
-     */
-    public InterfaceIpAddress(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Adds local interface ip address.
-     *
-     * @param localAddress ip address
-     */
-    public void setIpAddress(Ip4Address localAddress) {
-        this.localInterfaceIPAddress = localAddress;
-    }
-
-    /**
-     * Gets local interface ip address.
-     *
-     * @return localAddress ip address
-     */
-    public Ip4Address localInterfaceIPAddress() {
-        return localInterfaceIPAddress;
-    }
-
-    /**
-     * Reads bytes from channel buffer.
-     *
-     * @param channelBuffer channel buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        while (channelBuffer.readableBytes() >= IsisUtil.FOUR_BYTES) {
-            byte[] tempByteArray = new byte[IsisUtil.FOUR_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, IsisUtil.FOUR_BYTES);
-            this.setIpAddress(Ip4Address.valueOf(tempByteArray));
-
-        }
-    }
-
-    /**
-     * Gets local interface ip address as byte array.
-     *
-     * @return local interface ip address as byte array
-     */
-    public byte[] asBytes() {
-        byte[] linkSubType = null;
-
-        byte[] linkSubTlvHeader = tlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = tlvBodyAsBytes();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-
-        return linkSubType;
-    }
-
-    /**
-     * Gets byte array of local interface ip address.
-     *
-     * @return byte array of local interface ip address
-     */
-    public byte[] tlvBodyAsBytes() {
-
-        List<Byte> linkSubTypeBody = new ArrayList<>();
-
-        linkSubTypeBody.addAll(Bytes.asList(this.localInterfaceIPAddress.toOctets()));
-
-
-        return Bytes.toArray(linkSubTypeBody);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("localInterfaceIPAddress", localInterfaceIPAddress)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidth.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidth.java
deleted file mode 100644
index e645577..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidth.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-import org.onosproject.isis.io.util.IsisUtil;
-
-
-/**
- * Representation of maximum bandwidth TE value.
- */
-public class MaximumBandwidth extends TlvHeader implements TrafficEngineeringSubTlv {
-    private float maximumBandwidth;
-
-    /**
-     * Creates an instance of maximum bandwidth.
-     *
-     * @param header TLV header instance
-     */
-    public MaximumBandwidth(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Sets value of maximum bandwidth.
-     *
-     * @param maximumBandwidth value of maximum bandwidth
-     */
-    public void setMaximumBandwidth(float maximumBandwidth) {
-        this.maximumBandwidth = maximumBandwidth;
-    }
-
-    /**
-     * Returns value of maximum bandwidth.
-     *
-     * @return maximumBandwidth value of maximum bandwidth
-     */
-    public float getMaximumBandwidthValue() {
-        return this.maximumBandwidth;
-    }
-
-    /**
-     * Reads bytes from channel buffer.
-     *
-     * @param channelBuffer channel buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        byte[] tempByteArray = new byte[tlvLength()];
-        channelBuffer.readBytes(tempByteArray, 0, tlvLength());
-        int maxBandwidth = (IsisUtil.byteToInteger(tempByteArray));
-        this.setMaximumBandwidth(Float.intBitsToFloat(maxBandwidth));
-    }
-
-    /**
-     * Returns byte array of maximum bandwidth sub tlv.
-     *
-     * @return byte array of maximum bandwidth sub tlv
-     */
-    public byte[] asBytes() {
-        byte[] linkSubType = null;
-        byte[] linkSubTlvHeader = tlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = tlvBodyAsBytes();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-
-        return linkSubType;
-    }
-
-    /**
-     * Returns maximum bandwidth sub tlv byte array.
-     *
-     * @return byte array of maximum bandwidth sub tlv
-     */
-    public byte[] tlvBodyAsBytes() {
-        byte[] linkSubTypeBody;
-        linkSubTypeBody = IsisUtil.convertToFourBytes(Float.floatToIntBits(this.maximumBandwidth));
-        return linkSubTypeBody;
-    }
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("maximumBandwidth", maximumBandwidth)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidth.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidth.java
deleted file mode 100644
index 80bf9a9..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidth.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-import org.onosproject.isis.io.util.IsisUtil;
-
-
-/**
- * Representation of maximum reservable bandwidth TE value.
- */
-public class MaximumReservableBandwidth extends TlvHeader implements TrafficEngineeringSubTlv {
-    private float maximumReservableBandwidth;
-
-    /**
-     * Creates an instance of maximum reservable bandwidth.
-     *
-     * @param header TLV header
-     */
-    public MaximumReservableBandwidth(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Sets value of maximum reversible bandwidth.
-     *
-     * @param maximumBandwidth maximum reversible bandwidth
-     */
-    public void setMaximumBandwidth(float maximumBandwidth) {
-        this.maximumReservableBandwidth = maximumBandwidth;
-    }
-
-    /**
-     * Returns value of maximum reversible bandwidth.
-     *
-     * @return maximumBandwidth maximum reversible bandwidth
-     */
-    public float getMaximumBandwidthValue() {
-        return this.maximumReservableBandwidth;
-    }
-
-    /**
-     * Reads bytes from channel buffer.
-     *
-     * @param channelBuffer channel buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        byte[] tempByteArray = new byte[tlvLength()];
-        channelBuffer.readBytes(tempByteArray, 0, tlvLength());
-        int maxBandwidth = (IsisUtil.byteToInteger(tempByteArray));
-        this.setMaximumBandwidth(Float.intBitsToFloat(maxBandwidth));
-    }
-
-    /**
-     * Returns byte array of maximum reservable bandwidth.
-     *
-     * @return byte array of maximum reservable bandwidth
-     */
-    public byte[] asBytes() {
-        byte[] linkSubType = null;
-
-        byte[] linkSubTlvHeader = tlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = tlvBodyAsBytes();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-        return linkSubType;
-
-    }
-
-    /**
-     * Returns maximum reservable bandwidth sub tlv body as byte array.
-     *
-     * @return byte of maximum reservable bandwidth sub tlv body
-     */
-    public byte[] tlvBodyAsBytes() {
-        byte[] linkSubTypeBody;
-        linkSubTypeBody = IsisUtil.convertToFourBytes(Float.floatToIntBits(this.maximumReservableBandwidth));
-
-        return linkSubTypeBody;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("maximumReservableBandwidth", maximumReservableBandwidth)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/NeighborIpAddress.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/NeighborIpAddress.java
deleted file mode 100644
index 0de53f1..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/NeighborIpAddress.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
-* Copyright 2016-present Open Networking Foundation
-*
-* 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.isis.io.isispacket.tlv.subtlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-import org.onosproject.isis.io.util.IsisUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of neighbor ip address TE value.
- */
-public class NeighborIpAddress extends TlvHeader implements TrafficEngineeringSubTlv {
-    private static final Logger log =
-            LoggerFactory.getLogger(NeighborIpAddress.class);
-    private Ip4Address neighborIPAddress;
-
-    /**
-     * Creates an instance of neighbor ip address.
-     *
-     * @param header tlv header instance
-     */
-    public NeighborIpAddress(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Sets the neighbor ip address.
-     *
-     * @param neighborIPAddress ip address
-     */
-    public void setIpAddress(Ip4Address neighborIPAddress) {
-        this.neighborIPAddress = neighborIPAddress;
-    }
-
-    /**
-     * Gets the neighbor ip address.
-     *
-     * @return neighbor ip address
-     */
-    public Ip4Address neighborIPAddress() {
-        return neighborIPAddress;
-    }
-
-    /**
-     * Reads bytes from channel buffer.
-     *
-     * @param channelBuffer channel buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        while (channelBuffer.readableBytes() >= IsisUtil.FOUR_BYTES) {
-            byte[] tempByteArray = new byte[IsisUtil.FOUR_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, IsisUtil.FOUR_BYTES);
-            this.setIpAddress(Ip4Address.valueOf(tempByteArray));
-
-        }
-    }
-
-    /**
-     * Gets the neighbor ip address as byte array.
-     *
-     * @return neighbor ip address as byte array
-     */
-    public byte[] asBytes() {
-        byte[] linkSubType = null;
-
-        byte[] linkSubTlvHeader = tlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = tlvBodyAsBytes();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-
-        return linkSubType;
-    }
-
-    /**
-     * Gets byte array of neighborIPAddress.
-     *
-     * @return byte array of neighborIPAddress
-     */
-    public byte[] tlvBodyAsBytes() {
-
-        List<Byte> linkSubTypeBody = new ArrayList<>();
-
-        linkSubTypeBody.addAll(Bytes.asList(this.neighborIPAddress.toOctets()));
-
-
-        return Bytes.toArray(linkSubTypeBody);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        NeighborIpAddress that = (NeighborIpAddress) o;
-        return Objects.equal(neighborIPAddress, that.neighborIPAddress);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(neighborIPAddress);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("localInterfaceIPAddress", neighborIPAddress)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinder.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinder.java
deleted file mode 100644
index 782d5bd..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinder.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-
-/**
- * Representation of sub tlv finder.
- */
-public final class SubTlvFinder {
-    /**
-     * Creates an instance.
-     */
-    private SubTlvFinder() {
-
-    }
-
-    /**
-     * Sets the value for TLV header and to find sub TLV and populate.
-     *
-     * @param tlvHeader     tlvHeader
-     * @param channelBuffer byteBuf
-     * @return subTlv  traffic engineering sub tlv
-     */
-    public static TrafficEngineeringSubTlv findSubTlv(TlvHeader tlvHeader, ChannelBuffer channelBuffer) {
-
-        TrafficEngineeringSubTlv subTlv = null;
-
-        switch (SubTlvType.get(tlvHeader.tlvType())) {
-            case ADMINISTRATIVEGROUP:
-                AdministrativeGroup administrativeGroup = new AdministrativeGroup(tlvHeader);
-                administrativeGroup.readFrom(channelBuffer);
-                subTlv = administrativeGroup;
-                break;
-            case MAXIMUMBANDWIDTH:
-                MaximumBandwidth maximumBandwidth = new MaximumBandwidth(tlvHeader);
-                maximumBandwidth.readFrom(channelBuffer);
-                subTlv = maximumBandwidth;
-                break;
-            case MAXIMUMRESERVABLEBANDWIDTH:
-                MaximumReservableBandwidth maxResBandwidth = new MaximumReservableBandwidth(tlvHeader);
-                maxResBandwidth.readFrom(channelBuffer);
-                subTlv = maxResBandwidth;
-                break;
-            case TRAFFICENGINEERINGMETRIC:
-                TrafficEngineeringMetric teMetric = new TrafficEngineeringMetric(tlvHeader);
-                teMetric.readFrom(channelBuffer);
-                subTlv = teMetric;
-                break;
-            case UNRESERVEDBANDWIDTH:
-                UnreservedBandwidth unreservedBandwidth = new UnreservedBandwidth(tlvHeader);
-                unreservedBandwidth.readFrom(channelBuffer);
-                subTlv = unreservedBandwidth;
-                break;
-            case INTERFACEADDRESS:
-                InterfaceIpAddress ipInterfaceAddressTlv = new InterfaceIpAddress(tlvHeader);
-                ipInterfaceAddressTlv.readFrom(channelBuffer);
-                subTlv = ipInterfaceAddressTlv;
-                break;
-            case NEIGHBORADDRESS:
-                NeighborIpAddress ipNeighborAddressTlv = new NeighborIpAddress(tlvHeader);
-                ipNeighborAddressTlv.readFrom(channelBuffer);
-                subTlv = ipNeighborAddressTlv;
-                break;
-            default:
-                //TODO
-                break;
-        }
-        return subTlv;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytes.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytes.java
deleted file mode 100644
index a7bb08f..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytes.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-import com.google.common.primitives.Bytes;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of conversion of TLV's to bytes.
- */
-public final class SubTlvToBytes {
-
-    private static final Logger log = LoggerFactory.getLogger(SubTlvToBytes.class);
-
-    /**
-     * Creates an instance.
-     */
-    private SubTlvToBytes() {
-        //private constructor
-    }
-
-    /**
-     * Sets the ISIS sub TLV and returns in the form of bytes.
-     *
-     * @param subTlv isisTlv.
-     * @return subTlvBytes
-     */
-    public static List<Byte> tlvToBytes(TrafficEngineeringSubTlv subTlv) {
-
-        List<Byte> subTlvBytes = new ArrayList<>();
-        if (subTlv instanceof AdministrativeGroup) {
-            AdministrativeGroup administrativeGroup = (AdministrativeGroup) subTlv;
-            subTlvBytes.addAll(Bytes.asList(administrativeGroup.asBytes()));
-        } else if (subTlv instanceof MaximumBandwidth) {
-            MaximumBandwidth maximumBandwidth = (MaximumBandwidth) subTlv;
-            subTlvBytes.addAll(Bytes.asList(maximumBandwidth.asBytes()));
-        } else if (subTlv instanceof MaximumReservableBandwidth) {
-            MaximumReservableBandwidth maximumReservableBandwidth = (MaximumReservableBandwidth) subTlv;
-            subTlvBytes.addAll(Bytes.asList(maximumReservableBandwidth.asBytes()));
-        } else if (subTlv instanceof TrafficEngineeringMetric) {
-            TrafficEngineeringMetric trafficEngineeringMetric = (TrafficEngineeringMetric) subTlv;
-            subTlvBytes.addAll(Bytes.asList(trafficEngineeringMetric.asBytes()));
-        } else if (subTlv instanceof UnreservedBandwidth) {
-            UnreservedBandwidth unreservedBandwidth = (UnreservedBandwidth) subTlv;
-            subTlvBytes.addAll(Bytes.asList(unreservedBandwidth.asBytes()));
-        } else if (subTlv instanceof NeighborIpAddress) {
-            NeighborIpAddress interfaceIpAddress = (NeighborIpAddress) subTlv;
-            subTlvBytes.addAll(Bytes.asList(interfaceIpAddress.asBytes()));
-        } else {
-            log.debug("TlvsToBytes::UNKNOWN TLV TYPE ::TlvsToBytes ");
-        }
-
-        return subTlvBytes;
-    }
-}
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvType.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvType.java
deleted file mode 100644
index 98d43b3..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvType.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Representation of sub tlv type.
- */
-public enum SubTlvType {
-    /**
-     * Represents traffic engineering administrative group TLV.
-     */
-    ADMINISTRATIVEGROUP(3),
-    /**
-     * Represents traffic engineering maximum bandwidth TLV.
-     */
-    MAXIMUMBANDWIDTH(9),
-    /**
-     * Represents traffic engineering maximum reservable bandwidth TLV.
-     */
-    MAXIMUMRESERVABLEBANDWIDTH(10),
-    /**
-     * Represents traffic engineering metric TLV.
-     */
-    TRAFFICENGINEERINGMETRIC(18),
-    /**
-     * Represents traffic engineering interface address TLV.
-     */
-    INTERFACEADDRESS(6),
-    /**
-     * Represents traffic engineering neighbor address TLV.
-     */
-    NEIGHBORADDRESS(8),
-    /**
-     * Represents traffic engineering unreserved bandwidth TLV.
-     */
-    UNRESERVEDBANDWIDTH(11);
-
-    // Reverse lookup table
-    private static final Map<Integer, SubTlvType> LOOKUP = new HashMap<>();
-
-    // Populate the lookup table on loading time
-    static {
-        for (SubTlvType subTlvType : EnumSet.allOf(SubTlvType.class)) {
-            LOOKUP.put(subTlvType.value(), subTlvType);
-        }
-    }
-
-    private int value;
-
-    /**
-     * Sets the  sub TLV type value.
-     *
-     * @param value value.
-     */
-    SubTlvType(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Returns the enum instance from type value - reverse lookup purpose.
-     *
-     * @param subTlvTypeValue TLV type value
-     * @return ISIS  sub TLV type instance
-     */
-    public static SubTlvType get(int subTlvTypeValue) {
-        return LOOKUP.get(subTlvTypeValue);
-    }
-
-    /**
-     * Returns value.
-     *
-     * @return value
-     */
-    public int value() {
-        return value;
-    }
-}
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetric.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetric.java
deleted file mode 100644
index fa91d79..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetric.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-import org.onosproject.isis.io.util.IsisUtil;
-
-/**
- * Representation of traffic engineering metric TE value.
- */
-public class TrafficEngineeringMetric extends TlvHeader implements TrafficEngineeringSubTlv {
-    private long trafficEngineeringMetric;
-
-    /**
-     * Creates an instance of traffic engineering metric .
-     *
-     * @param header tlv header instance
-     */
-    public TrafficEngineeringMetric(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Sets TE metric value.
-     *
-     * @param trafficEngineeringMetric value of trafficEngineeringMetric
-     */
-    public void setTrafficEngineeringMetric(long trafficEngineeringMetric) {
-        this.trafficEngineeringMetric = trafficEngineeringMetric;
-    }
-
-    /**
-     * Returns TE metric value.
-     *
-     * @return value of traffic engineering metric
-     */
-    public long getTrafficEngineeringMetricValue() {
-        return this.trafficEngineeringMetric;
-    }
-
-    /**
-     * Reads bytes from channel buffer .
-     *
-     * @param channelBuffer channel buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        byte[] tempByteArray = new byte[tlvLength()];
-        channelBuffer.readBytes(tempByteArray, 0, tlvLength());
-        this.setTrafficEngineeringMetric(IsisUtil.byteToLong(tempByteArray));
-    }
-
-    /**
-     * Returns instance as byte array.
-     *
-     * @return instance as byte array
-     */
-    public byte[] asBytes() {
-        byte[] linkSubType = null;
-
-        byte[] linkSubTlvHeader = tlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = tlvBodyAsBytes();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-
-        return linkSubType;
-    }
-
-    /**
-     * Returns trafficEngineeringMetric as byte array .
-     *
-     * @return byte array of trafficEngineeringMetric
-     */
-    public byte[] tlvBodyAsBytes() {
-
-        byte[] linkSubTypeBody;
-        linkSubTypeBody = IsisUtil.convertToFourBytes(this.trafficEngineeringMetric);
-
-        return linkSubTypeBody;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("trafficEngineeringMetric", trafficEngineeringMetric)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringSubTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringSubTlv.java
deleted file mode 100644
index 0eb7071..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringSubTlv.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-/**
- * Representation of traffic engineering sub tlv.
- */
-public interface TrafficEngineeringSubTlv {
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidth.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidth.java
deleted file mode 100644
index 3e654a2..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidth.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of an unreserved band width TE value.
- */
-public class UnreservedBandwidth extends TlvHeader implements TrafficEngineeringSubTlv {
-    private List<Float> unReservedBandwidth = new ArrayList<>();
-
-    /**
-     * Creates an instance of unreserved band width.
-     *
-     * @param header tlv header instance
-     */
-    public UnreservedBandwidth(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Adds value of un reserved bandwidth .
-     *
-     * @param unreservedBandwidth value of un reserved bandwidth
-     */
-    public void addUnReservedBandwidth(float unreservedBandwidth) {
-        this.unReservedBandwidth.add(unreservedBandwidth);
-    }
-
-    /**
-     * Returns list of un reserved bandwidth .
-     *
-     * @return List of un reserved bandwidth
-     */
-    public List<Float> unReservedBandwidthValue() {
-        return this.unReservedBandwidth;
-    }
-
-    /**
-     * Reads bytes from channel buffer .
-     *
-     * @param channelBuffer channel buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        while (channelBuffer.readableBytes() >= IsisUtil.FOUR_BYTES) {
-            int maxReversibleBandwidth = channelBuffer.readInt();
-            this.addUnReservedBandwidth(Float.intBitsToFloat(maxReversibleBandwidth));
-        }
-    }
-
-    /**
-     * Returns instance as byte array.
-     *
-     * @return instance as byte array
-     */
-    public byte[] asBytes() {
-        byte[] linkSubType = null;
-
-        byte[] linkSubTlvHeader = tlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = tlvBodyAsBytes();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-
-        return linkSubType;
-    }
-
-    /**
-     * Returns unreserved bandwidth as byte array.
-     *
-     * @return unreserved bandwidth as byte array
-     */
-    public byte[] tlvBodyAsBytes() {
-        List<Byte> linkSubTypeBody = new ArrayList<>();
-        if (this.unReservedBandwidth.size() < 8) {
-            int size = IsisUtil.EIGHT_BYTES - this.unReservedBandwidth.size();
-            for (int i = 0; i < size; i++) {
-                linkSubTypeBody.addAll(Bytes.asList(IsisUtil.convertToFourBytes(IsisUtil.INITIAL_BANDWIDTH)));
-            }
-        }
-        for (Float unreservedBandwidth : this.unReservedBandwidth) {
-            int unresBandwidth = Float.floatToIntBits(unreservedBandwidth);
-            linkSubTypeBody.addAll(Bytes.asList(IsisUtil.convertToFourBytes(unresBandwidth)));
-        }
-
-        return Bytes.toArray(linkSubTypeBody);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("unReservedBandwidth", unReservedBandwidth)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/package-info.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/package-info.java
deleted file mode 100644
index bfb1ed6..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the ISIS protocol.
- */
-package org.onosproject.isis.io.isispacket.tlv.subtlv;
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/package-info.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/package-info.java
deleted file mode 100644
index 89ed736..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the ISIS protocol IO.
- */
-package org.onosproject.isis.io;
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/ChecksumCalculator.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/ChecksumCalculator.java
deleted file mode 100644
index 0671eed..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/ChecksumCalculator.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.util;
-
-
-import java.util.Arrays;
-
-/**
- * Calculates checksum for ISIS LSP packets.
- */
-public class ChecksumCalculator {
-
-    /**
-     * Verifies the checksum is valid in given LSP packet bytes.
-     *
-     * @param lspPacket       lsp as byte array
-     * @param lspChecksumPos1 position of checksum bit in packet
-     * @param lspChecksumPos2 position of checksum bit in packet
-     * @return true if valid else false
-     */
-    public boolean validateLspCheckSum(byte[] lspPacket, int lspChecksumPos1, int lspChecksumPos2) {
-
-        byte[] checksum = calculateLspChecksum(lspPacket, lspChecksumPos1, lspChecksumPos2);
-        if (lspPacket[lspChecksumPos1] == checksum[0] && lspPacket[lspChecksumPos2] == checksum[1]) {
-            return true;
-        }
-        return false;
-    }
-
-
-    /**
-     * Calculates the LSP checksum.
-     *
-     * @param lspBytes        as byte array
-     * @param lspChecksumPos1 position of checksum bit in packet
-     * @param lspChecksumPos2 position of checksum bit in packet
-     * @return checksum bytes
-     */
-    public byte[] calculateLspChecksum(byte[] lspBytes, int lspChecksumPos1, int lspChecksumPos2) {
-
-        byte[] tempLsaByte = Arrays.copyOf(lspBytes, lspBytes.length);
-
-        int[] checksumOut = {0, 0};
-        tempLsaByte[lspChecksumPos1] = 0;
-        tempLsaByte[lspChecksumPos2] = 0;
-        byte[] byteCheckSum = {0, 0};
-        for (int i = 12; i < tempLsaByte.length; i++) {
-            checksumOut[0] = checksumOut[0] + ((int) tempLsaByte[i] & 0xFF);
-            checksumOut[1] = checksumOut[1] + checksumOut[0];
-        }
-        checksumOut[0] = checksumOut[0] % 255;
-        checksumOut[1] = checksumOut[1] % 255;
-        int byte1 = (int) ((tempLsaByte.length - lspChecksumPos1 - 1) * checksumOut[0] - checksumOut[1]) % 255;
-        if (byte1 <= 0) {
-            byte1 += 255;
-        }
-        int byte2 = 510 - checksumOut[0] - byte1;
-        if (byte2 > 255) {
-            byte2 -= 255;
-        }
-
-        byteCheckSum[0] = (byte) byte1;
-        byteCheckSum[1] = (byte) byte2;
-
-        return byteCheckSum;
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisConstants.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisConstants.java
deleted file mode 100644
index 9e48ee8..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisConstants.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.util;
-
-import org.onlab.packet.Ip4Address;
-
-/**
- * Representation of ISIS Constants.
- */
-public final class IsisConstants {
-    public static final char PDU_LENGTH = 1497;
-    public static final char CONFIG_LENGTH = 1498;
-    public static final int MINIMUM_FRAME_LEN = 1521;
-    public static final int METADATA_LEN = 7;
-    public static final String SHOST = "127.0.0.1";
-    public static final Ip4Address DEFAULTIP = Ip4Address.valueOf("0.0.0.0");
-    public static final int SPORT = 3000;
-    public static final byte L2 = 1;
-    public static final int IRPDISCRIMINATOR = 131;
-    public static final int ISISVERSION = 1;
-    public static final int RESERVED = 0;
-    public static final int PRIORITY = 0;
-    public static final int MAXAREAADDRESS = 0;
-    public static final int SYSTEMIDLENGTH = 0;
-    public static final int PROTOCOLSUPPORTED = 204;
-    public static final int LOCALCIRCUITIDFORP2P = 130;
-    public static final int P2PHELLOHEADERLENGTH = 20;
-    public static final int HELLOHEADERLENGTH = 27;
-    public static final int CSNPDUHEADERLENGTH = 33;
-    public static final int PSNPDUHEADERLENGTH = 17;
-    public static final int PDULENGTHPOSITION = 17;
-    public static final int COMMONHEADERLENGTH = 8;
-    public static final int LSPMAXAGE = 1200;
-    public static final int LSPREFRESH = 900;
-    public static final int MAXSEQUENCENUMBER = Integer.MAX_VALUE;
-    public static final int STARTLSSEQUENCENUM = 1;
-    public static final int LENGTHPOSITION = 8;
-    public static final int RESERVEDPOSITION = 6;
-    public static final int CHECKSUMPOSITION = 24;
-    public static final String REFRESHLSP = "refreshLsp";
-    public static final String MAXAGELSP = "maxAgeLsp";
-    public static final String DEFAULTLANID = "0000.0000.0000.00";
-    public static final String PROCESSESID = "processId";
-    public static final String INTERFACE = "interface";
-    public static final String INTERFACEINDEX = "interfaceIndex";
-    public static final String INTERMEDIATESYSTEMNAME = "intermediateSystemName";
-    public static final String SYSTEMID = "systemId";
-    public static final String RESERVEDPACKETCIRCUITTYPE = "reservedPacketCircuitType";
-    public static final String CIRCUITID = "circuitId";
-    public static final String NETWORKTYPE = "networkType";
-    public static final String AREAADDRESS = "areaAddress";
-    public static final String HOLDINGTIME = "holdingTime";
-    public static final String HELLOINTERVAL = "helloInterval";
-    public static final int PORT = 7000;
-    public static final String LSPADDED = "LSP_ADDED";
-    public static final String LSPREMOVED = "LSP_REMOVED";
-
-    /**
-     * Non parameterized constructor.
-     */
-    private IsisConstants() {
-    }
-}
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisUtil.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisUtil.java
deleted file mode 100644
index 511f000..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisUtil.java
+++ /dev/null
@@ -1,762 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.util;
-
-import com.google.common.primitives.Bytes;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.MacAddress;
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisInterfaceState;
-import org.onosproject.isis.controller.IsisNeighbor;
-import org.onosproject.isis.controller.IsisPduType;
-import org.onosproject.isis.controller.IsisRouterType;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu;
-import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu;
-import org.onosproject.isis.io.isispacket.tlv.AdjacencyStateTlv;
-import org.onosproject.isis.io.isispacket.tlv.AreaAddressTlv;
-import org.onosproject.isis.io.isispacket.tlv.IpInterfaceAddressTlv;
-import org.onosproject.isis.io.isispacket.tlv.IsisNeighborTlv;
-import org.onosproject.isis.io.isispacket.tlv.PaddingTlv;
-import org.onosproject.isis.io.isispacket.tlv.ProtocolSupportedTlv;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-import org.onosproject.isis.io.isispacket.tlv.TlvType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.xml.bind.DatatypeConverter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-import java.util.StringTokenizer;
-
-/**
- * Representation of ISIS utils.
- */
-public final class IsisUtil {
-    public static final int ETHER_HEADER_LEN = 17;
-    public static final int ID_SIX_BYTES = 6;
-    public static final int ID_PLUS_ONE_BYTE = 7;
-    public static final int ID_PLUS_TWO_BYTE = 8;
-    public static final int THREE_BYTES = 3;
-    public static final int TWO_BYTES = 2;
-    public static final int SIX_BYTES = 6;
-    public static final int EIGHT_BYTES = 8;
-    public static final int FOUR_BYTES = 4;
-    public static final int PADDING_FIXED_LENGTH = 255;
-    public static final int TLVHEADERLENGTH = 2;
-    public static final int INITIAL_BANDWIDTH = 12500000;
-    private static final Logger log = LoggerFactory.getLogger(IsisUtil.class);
-
-    /**
-     * Creates an instance.
-     */
-    private IsisUtil() {
-
-    }
-
-    /**
-     * Checks given IPs are in same network or not.
-     *
-     * @param ip1  IP address
-     * @param ip2  IP address
-     * @param mask network mask
-     * @return true if both are in same network else false
-     */
-    public static boolean sameNetwork(Ip4Address ip1, Ip4Address ip2, byte[] mask) {
-        try {
-            byte[] a1 = ip1.toOctets();
-            byte[] a2 = ip2.toOctets();
-            for (int i = 0; i < a1.length; i++) {
-                if ((a1[i] & mask[i]) != (a2[i] & mask[i])) {
-                    return false;
-                }
-            }
-        } catch (Exception e) {
-            log.debug("Exception::IsisUtil::sameNetwork:: {}", e.getMessage());
-        }
-        return true;
-    }
-
-    /**
-     * Parse byte array to string system ID.
-     *
-     * @param bytes system ID
-     * @return systemId system ID
-     */
-    public static String systemId(byte[] bytes) {
-        String systemId = "";
-        for (Byte byt : bytes) {
-            String hexa = Integer.toHexString(Byte.toUnsignedInt(byt));
-            if (hexa.length() % 2 != 0) {
-                hexa = "0" + hexa;
-            }
-            systemId = systemId + hexa;
-            if (systemId.length() == 4 || systemId.length() == 9) {
-                systemId = systemId + ".";
-            }
-        }
-        return systemId;
-    }
-
-    /**
-     * Parse byte array to LAN ID.
-     *
-     * @param bytes LAN ID
-     * @return systemIdPlus system ID
-     */
-    public static String systemIdPlus(byte[] bytes) {
-        int count = 1;
-        String systemId = "";
-        for (Byte byt : bytes) {
-            String hexa = Integer.toHexString(Byte.toUnsignedInt(byt));
-            if (hexa.length() % 2 != 0) {
-                hexa = "0" + hexa;
-            }
-            if (count == 7 && bytes.length == 8) {
-                systemId = systemId + hexa + "-";
-            } else {
-                systemId = systemId + hexa;
-            }
-            if (systemId.length() == 4 || systemId.length() == 9
-                    || systemId.length() == 14) {
-                systemId = systemId + ".";
-            }
-            count++;
-        }
-        return systemId;
-    }
-
-    /**
-     * Parse byte array to area address.
-     *
-     * @param bytes area address
-     * @return areaAddress area address
-     */
-    public static String areaAddress(byte[] bytes) {
-        String areaAddres = "";
-        for (Byte byt : bytes) {
-            String hexa = Integer.toHexString(Byte.toUnsignedInt(byt));
-            if (hexa.length() % 2 != 0) {
-                hexa = "0" + hexa;
-            }
-            areaAddres = areaAddres + hexa;
-        }
-        return areaAddres;
-    }
-
-    /**
-     * Parse area address to bytes.
-     *
-     * @param address area address
-     * @return areaAddress area address
-     */
-    public static List<Byte> areaAddressToBytes(String address) {
-        List<Byte> idList = new ArrayList<>();
-        for (int i = 0; i < address.length(); i = i + 2) {
-            Character c1 = address.charAt(i);
-            Character c2 = address.charAt(i + 1);
-            String str = c1.toString() + c2.toString();
-            idList.add((byte) Integer.parseInt(str, 16));
-        }
-        return idList;
-    }
-
-    /**
-     * Returns PDU headaer length.
-     *
-     * @param pduType PDU type
-     * @return headerLength header length
-     */
-    public static int getPduHeaderLength(int pduType) {
-        int headerLength = 0;
-        switch (IsisPduType.get(pduType)) {
-            case L1HELLOPDU:
-            case L2HELLOPDU:
-            case L1LSPDU:
-            case L2LSPDU:
-                headerLength = IsisConstants.HELLOHEADERLENGTH;
-                break;
-            case P2PHELLOPDU:
-                headerLength = IsisConstants.P2PHELLOHEADERLENGTH;
-                break;
-            case L1PSNP:
-            case L2PSNP:
-                headerLength = IsisConstants.PSNPDUHEADERLENGTH;
-                break;
-            case L1CSNP:
-            case L2CSNP:
-                headerLength = IsisConstants.CSNPDUHEADERLENGTH;
-                break;
-            default:
-                break;
-        }
-        return headerLength;
-    }
-
-    /**
-     * Adds the PDU length in packet.
-     *
-     * @param isisPacket      ISIS packet
-     * @param lengthBytePos1  length byte position
-     * @param lengthBytePos2  length byte position
-     * @param reservedBytePos reserved byte position
-     * @return byte array with PDU length
-     */
-    public static byte[] addLengthAndMarkItInReserved(byte[] isisPacket, int lengthBytePos1,
-                                                      int lengthBytePos2, int reservedBytePos) {
-        //Set the length of the packet
-        //Get the total length of the packet
-        int length = isisPacket.length;
-        //Convert the lenth to two bytes as the length field is 2 bytes
-        byte[] lenthInTwoBytes = IsisUtil.convertToTwoBytes(length);
-        //isis header 3rd and 4th position represents length
-        isisPacket[lengthBytePos1] = lenthInTwoBytes[0]; //assign 1st byte in lengthBytePos1
-        isisPacket[lengthBytePos2] = lenthInTwoBytes[1]; //assign 2st byte in lengthBytePos2
-        isisPacket[reservedBytePos] = (byte) lengthBytePos1;
-        return isisPacket;
-    }
-
-    /**
-     * Adds the checksum in packet.
-     *
-     * @param isisPacket       ISIS packet
-     * @param checksumBytePos1 checksum byte position
-     * @param checksumBytePos2 checksum byte position
-     * @return byte array with PDU length
-     */
-    public static byte[] addChecksum(byte[] isisPacket, int checksumBytePos1, int checksumBytePos2) {
-        //Set the checksum for the packet
-        //Convert the length to two bytes as the length field is 2 bytes
-        byte[] checksumInTwoBytes = new ChecksumCalculator().calculateLspChecksum(
-                isisPacket, checksumBytePos1, checksumBytePos2);
-        //isis header 3rd and 4th position represents length
-        isisPacket[checksumBytePos1] = checksumInTwoBytes[0];
-        isisPacket[checksumBytePos2] = checksumInTwoBytes[1];
-        return isisPacket;
-    }
-
-    /**
-     * Adds frame a packet of 1498 of size.
-     *
-     * @param isisPacket     ISIS packet
-     * @param interfaceIndex interface index
-     * @return byte array with 1498 is the length
-     */
-    public static byte[] framePacket(byte[] isisPacket, int interfaceIndex) {
-        //Set the length of the packet
-        //Get the total length of the packet
-        int length = isisPacket.length;
-        //PDU_LENGTH + 1 byte for interface index
-        if (length < IsisConstants.PDU_LENGTH + 1) {
-            byte[] bytes = new byte[IsisConstants.PDU_LENGTH + 1];
-            System.arraycopy(isisPacket, 0, bytes, 0, length);
-            bytes[IsisConstants.PDU_LENGTH] = (byte) interfaceIndex;
-            return bytes;
-        }
-        return isisPacket;
-    }
-
-    /**
-     * Parse source and LAN ID.
-     *
-     * @param id source and LAN ID
-     * @return source and LAN ID
-     */
-    public static List<Byte> sourceAndLanIdToBytes(String id) {
-        List<Byte> idList = new ArrayList<>();
-        StringTokenizer tokenizer = new StringTokenizer(id, "." + "-");
-        while (tokenizer.hasMoreElements()) {
-            int i = 0;
-            String str = tokenizer.nextToken();
-            idList.add((byte) Integer.parseInt(str.substring(0, i + 2), 16));
-            if (str.length() > 2) {
-                idList.add((byte) Integer.parseInt(str.substring(i + 2, str.length()), 16));
-            }
-        }
-        return idList;
-    }
-
-    /**
-     * Parse padding for PDU based on current length.
-     *
-     * @param currentLength current length
-     * @return byteArray padding array
-     */
-    public static byte[] getPaddingTlvs(int currentLength) {
-        List<Byte> bytes = new ArrayList<>();
-        while (IsisConstants.PDU_LENGTH > currentLength) {
-            int length = IsisConstants.PDU_LENGTH - currentLength;
-            TlvHeader tlvHeader = new TlvHeader();
-            tlvHeader.setTlvType(TlvType.PADDING.value());
-            if (length >= PADDING_FIXED_LENGTH) {
-                tlvHeader.setTlvLength(PADDING_FIXED_LENGTH);
-            } else {
-                tlvHeader.setTlvLength(IsisConstants.PDU_LENGTH - (currentLength + TLVHEADERLENGTH));
-            }
-            PaddingTlv tlv = new PaddingTlv(tlvHeader);
-            bytes.addAll(Bytes.asList(tlv.asBytes()));
-            currentLength = currentLength + tlv.tlvLength() + TLVHEADERLENGTH;
-        }
-        byte[] byteArray = new byte[bytes.size()];
-        int i = 0;
-        for (byte byt : bytes) {
-            byteArray[i++] = byt;
-        }
-        return byteArray;
-    }
-
-    /**
-     * Converts an integer to two bytes.
-     *
-     * @param numberToConvert number to convert
-     * @return numInBytes given number as bytes
-     */
-    public static byte[] convertToTwoBytes(int numberToConvert) {
-
-        byte[] numInBytes = new byte[2];
-        String s1 = Integer.toHexString(numberToConvert);
-        if (s1.length() % 2 != 0) {
-            s1 = "0" + s1;
-        }
-        byte[] hexas = DatatypeConverter.parseHexBinary(s1);
-        if (hexas.length == 1) {
-            numInBytes[0] = 0;
-            numInBytes[1] = hexas[0];
-        } else {
-            numInBytes[0] = hexas[0];
-            numInBytes[1] = hexas[1];
-        }
-        return numInBytes;
-    }
-
-    /**
-     * Converts a number to four bytes.
-     *
-     * @param numberToConvert number to convert
-     * @return numInBytes given number as bytes
-     */
-    public static byte[] convertToFourBytes(int numberToConvert) {
-        byte[] numInBytes = new byte[4];
-        String s1 = Integer.toHexString(numberToConvert);
-        if (s1.length() % 2 != 0) {
-            s1 = "0" + s1;
-        }
-        byte[] hexas = DatatypeConverter.parseHexBinary(s1);
-        if (hexas.length == 1) {
-            numInBytes[0] = 0;
-            numInBytes[1] = 0;
-            numInBytes[2] = 0;
-            numInBytes[3] = hexas[0];
-        } else if (hexas.length == 2) {
-            numInBytes[0] = 0;
-            numInBytes[1] = 0;
-            numInBytes[2] = hexas[0];
-            numInBytes[3] = hexas[1];
-        } else if (hexas.length == 3) {
-            numInBytes[0] = 0;
-            numInBytes[1] = hexas[0];
-            numInBytes[2] = hexas[1];
-            numInBytes[3] = hexas[2];
-        } else {
-            numInBytes[0] = hexas[0];
-            numInBytes[1] = hexas[1];
-            numInBytes[2] = hexas[2];
-            numInBytes[3] = hexas[3];
-        }
-        return numInBytes;
-    }
-
-    /**
-     * Returns the P2P hello PDU.
-     *
-     * @param isisInterface  ISIS interface instance
-     * @param paddingEnabled padding enabled or not
-     * @return hello PDU
-     */
-    public static byte[] getP2pHelloPdu(IsisInterface isisInterface, boolean paddingEnabled) {
-        IsisHeader isisHeader = new IsisHeader();
-        isisHeader.setIrpDiscriminator((byte) IsisConstants.IRPDISCRIMINATOR);
-        isisHeader.setPduHeaderLength((byte) IsisConstants.P2PHELLOHEADERLENGTH);
-        isisHeader.setVersion((byte) IsisConstants.ISISVERSION);
-        isisHeader.setIdLength((byte) IsisConstants.SYSTEMIDLENGTH);
-        isisHeader.setIsisPduType(IsisPduType.P2PHELLOPDU.value());
-        isisHeader.setVersion2((byte) IsisConstants.ISISVERSION);
-        isisHeader.setReserved((byte) IsisConstants.PDULENGTHPOSITION);
-        isisHeader.setMaximumAreaAddresses((byte) IsisConstants.MAXAREAADDRESS);
-        P2PHelloPdu p2pHelloPdu = new P2PHelloPdu(isisHeader);
-        p2pHelloPdu.setCircuitType((byte) isisInterface.reservedPacketCircuitType());
-        p2pHelloPdu.setSourceId(isisInterface.systemId());
-        p2pHelloPdu.setHoldingTime(isisInterface.holdingTime());
-        p2pHelloPdu.setPduLength(IsisConstants.PDU_LENGTH);
-        p2pHelloPdu.setLocalCircuitId((byte) IsisConstants.LOCALCIRCUITIDFORP2P);
-
-        TlvHeader tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(TlvType.AREAADDRESS.value());
-        tlvHeader.setTlvLength(0);
-        AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader);
-        areaAddressTlv.addAddress(isisInterface.areaAddress());
-        p2pHelloPdu.addTlv(areaAddressTlv);
-
-        tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value());
-        tlvHeader.setTlvLength(0);
-        ProtocolSupportedTlv protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader);
-        protocolSupportedTlv.addProtocolSupported((byte) IsisConstants.PROTOCOLSUPPORTED);
-        p2pHelloPdu.addTlv(protocolSupportedTlv);
-
-        tlvHeader.setTlvType(TlvType.ADJACENCYSTATE.value());
-        tlvHeader.setTlvLength(0);
-        AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader);
-        adjacencyStateTlv.setAdjacencyType((byte) IsisInterfaceState.DOWN.value());
-        adjacencyStateTlv.setLocalCircuitId(Integer.parseInt(isisInterface.circuitId()));
-        Set<MacAddress> neighbors = isisInterface.neighbors();
-        if (!neighbors.isEmpty()) {
-            IsisNeighbor neighbor = isisInterface.lookup(neighbors.iterator().next());
-            adjacencyStateTlv.setAdjacencyType((byte) neighbor.interfaceState().value());
-            adjacencyStateTlv.setNeighborSystemId(neighbor.neighborSystemId());
-            adjacencyStateTlv.setNeighborLocalCircuitId(neighbor.localExtendedCircuitId());
-        }
-        p2pHelloPdu.addTlv(adjacencyStateTlv);
-
-        tlvHeader.setTlvType(TlvType.IPINTERFACEADDRESS.value());
-        tlvHeader.setTlvLength(0);
-        IpInterfaceAddressTlv ipInterfaceAddressTlv = new IpInterfaceAddressTlv(tlvHeader);
-        ipInterfaceAddressTlv.addInterfaceAddres(isisInterface.interfaceIpAddress());
-        p2pHelloPdu.addTlv(ipInterfaceAddressTlv);
-
-        byte[] beforePadding = p2pHelloPdu.asBytes();
-        byte[] helloMessage;
-        if (paddingEnabled) {
-            byte[] paddingTlvs = getPaddingTlvs(beforePadding.length);
-            helloMessage = Bytes.concat(beforePadding, paddingTlvs);
-        } else {
-            helloMessage = beforePadding;
-        }
-        return helloMessage;
-    }
-
-    /**
-     * Returns the L1 hello PDU.
-     *
-     * @param isisInterface  ISIS interface instance
-     * @param paddingEnabled padding enabled or not
-     * @return helloMessage hello PDU
-     */
-    public static byte[] getL1HelloPdu(IsisInterface isisInterface, boolean paddingEnabled) {
-        return getL1OrL2HelloPdu(isisInterface, IsisPduType.L1HELLOPDU, paddingEnabled);
-    }
-
-    /**
-     * Returns the L2 hello PDU.
-     *
-     * @param isisInterface  ISIS interface instance
-     * @param paddingEnabled padding enabled or not
-     * @return helloMessage hello PDU
-     */
-    public static byte[] getL2HelloPdu(IsisInterface isisInterface, boolean paddingEnabled) {
-        return getL1OrL2HelloPdu(isisInterface, IsisPduType.L2HELLOPDU, paddingEnabled);
-    }
-
-    /**
-     * Returns the hello PDU.
-     *
-     * @param isisInterface  ISIS interface instance
-     * @param paddingEnabled padding enabled or not
-     * @return helloMessage hello PDU
-     */
-    private static byte[] getL1OrL2HelloPdu(IsisInterface isisInterface, IsisPduType isisPduType,
-                                            boolean paddingEnabled) {
-        String lanId = "";
-        IsisHeader isisHeader = new IsisHeader();
-        isisHeader.setIrpDiscriminator((byte) IsisConstants.IRPDISCRIMINATOR);
-        isisHeader.setPduHeaderLength((byte) IsisConstants.HELLOHEADERLENGTH);
-        isisHeader.setVersion((byte) IsisConstants.ISISVERSION);
-        isisHeader.setIdLength((byte) IsisConstants.SYSTEMIDLENGTH);
-        if (isisPduType == IsisPduType.L1HELLOPDU) {
-            isisHeader.setIsisPduType(IsisPduType.L1HELLOPDU.value());
-            lanId = isisInterface.l1LanId();
-        } else if (isisPduType == IsisPduType.L2HELLOPDU) {
-            isisHeader.setIsisPduType(IsisPduType.L2HELLOPDU.value());
-            lanId = isisInterface.l2LanId();
-        }
-        isisHeader.setVersion2((byte) IsisConstants.ISISVERSION);
-        isisHeader.setReserved((byte) IsisConstants.PDULENGTHPOSITION);
-        isisHeader.setMaximumAreaAddresses((byte) IsisConstants.MAXAREAADDRESS);
-        L1L2HelloPdu l1L2HelloPdu = new L1L2HelloPdu(isisHeader);
-        l1L2HelloPdu.setCircuitType((byte) isisInterface.reservedPacketCircuitType());
-        l1L2HelloPdu.setSourceId(isisInterface.systemId());
-        l1L2HelloPdu.setHoldingTime(isisInterface.holdingTime());
-        l1L2HelloPdu.setPduLength(IsisConstants.PDU_LENGTH);
-        l1L2HelloPdu.setPriority((byte) isisInterface.priority());
-        l1L2HelloPdu.setLanId(lanId);
-        TlvHeader tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(TlvType.AREAADDRESS.value());
-        tlvHeader.setTlvLength(0);
-        AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader);
-        areaAddressTlv.addAddress(isisInterface.areaAddress());
-        l1L2HelloPdu.addTlv(areaAddressTlv);
-        Set<MacAddress> neighbors = isisInterface.neighbors();
-        if (!neighbors.isEmpty()) {
-            List<MacAddress> neighborMacs = new ArrayList<>();
-            for (MacAddress neighbor : neighbors) {
-                IsisNeighbor isisNeighbor = isisInterface.lookup(neighbor);
-                if (isisPduType == IsisPduType.L1HELLOPDU) {
-                    if (isisNeighbor.routerType() == IsisRouterType.L1 ||
-                            isisNeighbor.routerType() == IsisRouterType.L1L2) {
-                        neighborMacs.add(neighbor);
-                    }
-                } else if (isisPduType == IsisPduType.L2HELLOPDU) {
-                    if (isisNeighbor.routerType() == IsisRouterType.L2 ||
-                            isisNeighbor.routerType() == IsisRouterType.L1L2) {
-                        neighborMacs.add(neighbor);
-                    }
-                }
-            }
-
-            tlvHeader.setTlvType(TlvType.ISNEIGHBORS.value());
-            tlvHeader.setTlvLength(0);
-
-            IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader);
-            for (MacAddress neighbor : neighborMacs) {
-                isisNeighborTlv.addNeighbor(neighbor);
-            }
-            l1L2HelloPdu.addTlv(isisNeighborTlv);
-        }
-
-        tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value());
-        tlvHeader.setTlvLength(0);
-        ProtocolSupportedTlv protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader);
-        protocolSupportedTlv.addProtocolSupported((byte) IsisConstants.PROTOCOLSUPPORTED);
-        l1L2HelloPdu.addTlv(protocolSupportedTlv);
-
-        tlvHeader.setTlvType(TlvType.IPINTERFACEADDRESS.value());
-        tlvHeader.setTlvLength(0);
-        IpInterfaceAddressTlv ipInterfaceAddressTlv = new IpInterfaceAddressTlv(tlvHeader);
-        ipInterfaceAddressTlv.addInterfaceAddres(isisInterface.interfaceIpAddress());
-        l1L2HelloPdu.addTlv(ipInterfaceAddressTlv);
-
-        byte[] beforePadding = l1L2HelloPdu.asBytes();
-        byte[] helloMessage;
-        if (paddingEnabled) {
-            byte[] paddingTlvs = getPaddingTlvs(beforePadding.length);
-            helloMessage = Bytes.concat(beforePadding, paddingTlvs);
-        } else {
-            helloMessage = beforePadding;
-        }
-        return helloMessage;
-    }
-
-    /**
-     * Converts a byte to integer variable.
-     *
-     * @param bytesToConvert bytes to convert
-     * @return integer representation of bytes
-     */
-    public static int byteToInteger(byte[] bytesToConvert) {
-        final StringBuilder builder = new StringBuilder();
-        for (byte eachByte : bytesToConvert) {
-            builder.append(String.format("%02x", eachByte));
-        }
-        int number = Integer.parseInt(builder.toString(), 16);
-        return number;
-    }
-
-    /**
-     * Converts a byte to long variable.
-     *
-     * @param bytesToConvert bytes to convert
-     * @return long representation of bytes
-     */
-    public static long byteToLong(byte[] bytesToConvert) {
-        final StringBuilder builder = new StringBuilder();
-        for (byte eachByte : bytesToConvert) {
-            builder.append(String.format("%02x", eachByte));
-        }
-        long number = Long.parseLong(builder.toString(), 16);
-        return number;
-    }
-
-    /**
-     * Converts a number to four bytes.
-     *
-     * @param numberToConvert number to convert
-     * @return numInBytes given number as bytes
-     */
-    public static byte[] convertToFourBytes(long numberToConvert) {
-        byte[] numInBytes = new byte[4];
-        String s1 = Long.toHexString(numberToConvert);
-        if (s1.length() % 2 != 0) {
-            s1 = "0" + s1;
-        }
-        if (s1.length() == 16) {
-            s1 = s1.substring(8, s1.length());
-        }
-        byte[] hexas = DatatypeConverter.parseHexBinary(s1);
-        if (hexas.length == 1) {
-            numInBytes[0] = 0;
-            numInBytes[1] = 0;
-            numInBytes[2] = 0;
-            numInBytes[3] = hexas[0];
-        } else if (hexas.length == 2) {
-            numInBytes[0] = 0;
-            numInBytes[1] = 0;
-            numInBytes[2] = hexas[0];
-            numInBytes[3] = hexas[1];
-        } else if (hexas.length == 3) {
-            numInBytes[0] = 0;
-            numInBytes[1] = hexas[0];
-            numInBytes[2] = hexas[1];
-            numInBytes[3] = hexas[2];
-        } else {
-            numInBytes[0] = hexas[0];
-            numInBytes[1] = hexas[1];
-            numInBytes[2] = hexas[2];
-            numInBytes[3] = hexas[3];
-        }
-        return numInBytes;
-    }
-
-    /**
-     * Converts a number to eight bit binary.
-     *
-     * @param binaryString string to binary
-     * @return numInBytes given number as bytes
-     */
-    public static String toEightBitBinary(String binaryString) {
-        String eightBit = binaryString;
-        if (eightBit.length() % 8 != 0) {
-            int numOfZero = 8 - eightBit.length();
-            while (numOfZero > 0) {
-                eightBit = "0" + eightBit;
-                numOfZero--;
-            }
-        }
-        return eightBit;
-    }
-
-    /**
-     * Converts a number to four bit binary.
-     *
-     * @param binaryString string to binary
-     * @return numInBytes given number as bytes
-     */
-    public static String toFourBitBinary(String binaryString) {
-        String fourBit = binaryString;
-        if (fourBit.length() % 4 != 0) {
-            int numOfZero = 4 - fourBit.length();
-            while (numOfZero > 0) {
-                fourBit = "0" + fourBit;
-                numOfZero--;
-            }
-        }
-        return fourBit;
-    }
-
-    /**
-     * Converts a number to three bytes.
-     *
-     * @param numberToConvert number to convert
-     * @return given number as bytes
-     */
-    public static byte[] convertToThreeBytes(int numberToConvert) {
-        byte[] numInBytes = new byte[3];
-        String s1 = Integer.toHexString(numberToConvert);
-        if (s1.length() % 2 != 0) {
-            s1 = "0" + s1;
-        }
-        byte[] hexas = DatatypeConverter.parseHexBinary(s1);
-        if (hexas.length == 1) {
-            numInBytes[0] = 0;
-            numInBytes[1] = 0;
-            numInBytes[2] = hexas[0];
-        } else if (hexas.length == 2) {
-            numInBytes[0] = 0;
-            numInBytes[1] = hexas[0];
-            numInBytes[2] = hexas[1];
-        } else {
-            numInBytes[0] = hexas[0];
-            numInBytes[1] = hexas[1];
-            numInBytes[2] = hexas[2];
-        }
-        return numInBytes;
-    }
-
-    /**
-     * Converts the bytes of prefix to string type value.
-     *
-     * @param bytes array of prefix
-     * @return string value of prefix
-     */
-    public static String prefixConversion(byte[] bytes) {
-        String prefix = "";
-        for (int i = 0; i < bytes.length; i++) {
-            if (i < (bytes.length - 1)) {
-                prefix = prefix + bytes[i] + ".";
-            } else {
-                prefix = prefix + bytes[i];
-            }
-        }
-        return prefix;
-    }
-
-    /**
-     * Converts the prefix to bytes.
-     *
-     * @param prefix prefix
-     * @return prefix to bytes
-     */
-    public static byte[] prefixToBytes(String prefix) {
-        List<Byte> byteList = new ArrayList<>();
-        StringTokenizer tokenizer = new StringTokenizer(prefix, ".");
-        while (tokenizer.hasMoreTokens()) {
-            byteList.add((byte) Integer.parseInt(tokenizer.nextToken()));
-        }
-        return Bytes.toArray(byteList);
-    }
-
-    /**
-     * Return the DIS value from the systemId.
-     *
-     * @param systemId system Id.
-     * @return return true if DIS else false
-     */
-    public static boolean checkIsDis(String systemId) {
-        StringTokenizer stringTokenizer = new StringTokenizer(systemId, "." + "-");
-        int count = 0;
-        while (stringTokenizer.hasMoreTokens()) {
-            String str = stringTokenizer.nextToken();
-            if (count == 3) {
-                int x = Integer.parseInt(str);
-                if (x > 0) {
-                    return true;
-                }
-            }
-            count++;
-        }
-        return false;
-    }
-
-    /**
-     * Return the systemId.
-     *
-     * @param systemId system Id.
-     * @return return system ID
-     */
-    public static String removeTailingZeros(String systemId) {
-        StringTokenizer stringTokenizer = new StringTokenizer(systemId, "-");
-        return stringTokenizer.nextToken();
-    }
-}
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/LspGenerator.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/LspGenerator.java
deleted file mode 100644
index 194bf08..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/LspGenerator.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.util;
-
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.MacAddress;
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisNeighbor;
-import org.onosproject.isis.controller.IsisNetworkType;
-import org.onosproject.isis.controller.IsisPduType;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.pdu.AttachedToOtherAreas;
-import org.onosproject.isis.io.isispacket.pdu.LsPdu;
-import org.onosproject.isis.io.isispacket.tlv.AreaAddressTlv;
-import org.onosproject.isis.io.isispacket.tlv.HostNameTlv;
-import org.onosproject.isis.io.isispacket.tlv.IpExtendedReachabilityTlv;
-import org.onosproject.isis.io.isispacket.tlv.IpInterfaceAddressTlv;
-import org.onosproject.isis.io.isispacket.tlv.IpInternalReachabilityTlv;
-import org.onosproject.isis.io.isispacket.tlv.IsReachabilityTlv;
-import org.onosproject.isis.io.isispacket.tlv.MetricOfInternalReachability;
-import org.onosproject.isis.io.isispacket.tlv.MetricsOfReachability;
-import org.onosproject.isis.io.isispacket.tlv.ProtocolSupportedTlv;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-import org.onosproject.isis.io.isispacket.tlv.TlvType;
-
-import java.util.List;
-
-/**
- * Representation of link state PDU generator.
- */
-public class LspGenerator {
-
-    public LsPdu getLsp(IsisInterface isisInterface, String lspId, IsisPduType isisPduType,
-                        List<Ip4Address> allConfiguredInterfaceIps) {
-        IsisHeader header = getHeader(isisPduType);
-        LsPdu lsp = new LsPdu(header);
-
-        lsp.setPduLength(0);
-        lsp.setRemainingLifeTime(IsisConstants.LSPMAXAGE);
-        lsp.setLspId(lspId);
-        lsp.setSequenceNumber(isisInterface.isisLsdb().lsSequenceNumber(isisPduType));
-        lsp.setCheckSum(0);
-        if (isisPduType == IsisPduType.L1LSPDU) {
-            lsp.setTypeBlock((byte) 1);
-            lsp.setIntermediateSystemType((byte) 1);
-        } else if (isisPduType == IsisPduType.L2LSPDU) {
-            lsp.setTypeBlock((byte) 3);
-            lsp.setIntermediateSystemType((byte) 3);
-        }
-        lsp.setAttachedToOtherAreas(AttachedToOtherAreas.NONE);
-        lsp.setPartitionRepair(false);
-        lsp.setLspDbol(false);
-
-        TlvHeader tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(TlvType.AREAADDRESS.value());
-        tlvHeader.setTlvLength(0);
-        AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader);
-        areaAddressTlv.addAddress(isisInterface.areaAddress());
-        lsp.addTlv(areaAddressTlv);
-
-        tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value());
-        tlvHeader.setTlvLength(0);
-        ProtocolSupportedTlv protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader);
-        protocolSupportedTlv.addProtocolSupported((byte) IsisConstants.PROTOCOLSUPPORTED);
-        lsp.addTlv(protocolSupportedTlv);
-
-        tlvHeader.setTlvType(TlvType.IPINTERFACEADDRESS.value());
-        tlvHeader.setTlvLength(0);
-        IpInterfaceAddressTlv ipInterfaceAddressTlv = new IpInterfaceAddressTlv(tlvHeader);
-        for (Ip4Address ipaddress : allConfiguredInterfaceIps) {
-            ipInterfaceAddressTlv.addInterfaceAddres(ipaddress);
-        }
-        lsp.addTlv(ipInterfaceAddressTlv);
-
-        tlvHeader.setTlvType(TlvType.HOSTNAME.value());
-        tlvHeader.setTlvLength(0);
-        HostNameTlv hostNameTlv = new HostNameTlv(tlvHeader);
-        hostNameTlv.setHostName(isisInterface.intermediateSystemName());
-        lsp.addTlv(hostNameTlv);
-
-        tlvHeader.setTlvType(TlvType.ISREACHABILITY.value());
-        tlvHeader.setTlvLength(0);
-        IsReachabilityTlv isReachabilityTlv = new IsReachabilityTlv(tlvHeader);
-        isReachabilityTlv.setReserved(0);
-        MetricsOfReachability metricsOfReachability = new MetricsOfReachability();
-        metricsOfReachability.setDefaultMetric((byte) 10);
-        metricsOfReachability.setDefaultIsInternal(true);
-        metricsOfReachability.setDelayMetric((byte) 10);
-        metricsOfReachability.setDelayIsInternal(true);
-        metricsOfReachability.setDelayMetricSupported(true);
-        metricsOfReachability.setExpenseMetric((byte) 10);
-        metricsOfReachability.setExpenseIsInternal(true);
-        metricsOfReachability.setExpenseMetricSupported(true);
-        metricsOfReachability.setErrorMetric((byte) 10);
-        metricsOfReachability.setErrorIsInternal(true);
-        metricsOfReachability.setErrorMetricSupported(true);
-        if (isisInterface.networkType() == IsisNetworkType.BROADCAST) {
-            if (isisPduType == IsisPduType.L1LSPDU) {
-                metricsOfReachability.setNeighborId(isisInterface.l1LanId());
-            } else if (isisPduType == IsisPduType.L2LSPDU) {
-                metricsOfReachability.setNeighborId(isisInterface.l2LanId());
-            }
-        } else if (isisInterface.networkType() == IsisNetworkType.P2P) {
-            MacAddress neighborMac = isisInterface.neighbors().iterator().next();
-            IsisNeighbor neighbor = isisInterface.lookup(neighborMac);
-            metricsOfReachability.setNeighborId(neighbor.neighborSystemId() + ".00");
-        }
-
-        isReachabilityTlv.addMeticsOfReachability(metricsOfReachability);
-        lsp.addTlv(isReachabilityTlv);
-
-        tlvHeader.setTlvType(TlvType.IPINTERNALREACHABILITY.value());
-        tlvHeader.setTlvLength(0);
-        IpInternalReachabilityTlv ipInterReacTlv = new IpInternalReachabilityTlv(tlvHeader);
-        MetricOfInternalReachability metricOfIntRea = new MetricOfInternalReachability();
-        metricOfIntRea.setDefaultMetric((byte) 10);
-        metricOfIntRea.setDefaultIsInternal(true);
-        metricOfIntRea.setDefaultDistributionDown(true);
-        metricOfIntRea.setDelayMetric((byte) 0);
-        metricOfIntRea.setDelayMetricSupported(false);
-        metricOfIntRea.setDelayIsInternal(true);
-        metricOfIntRea.setExpenseMetric((byte) 0);
-        metricOfIntRea.setExpenseMetricSupported(false);
-        metricOfIntRea.setExpenseIsInternal(true);
-        metricOfIntRea.setErrorMetric((byte) 0);
-        metricOfIntRea.setErrorMetricSupported(false);
-        metricOfIntRea.setExpenseIsInternal(true);
-        Ip4Address ip4Address = isisInterface.interfaceIpAddress();
-        byte[] ipAddress = ip4Address.toOctets();
-       // ipAddress[ipAddress.length - 1] = 0;
-        byte[] networkmass = isisInterface.networkMask();
-        // metric calculation part
-        byte[] result = new byte[ipAddress.length];
-        result[0] = (byte) (ipAddress[0] & networkmass[0]);
-        result[1] = (byte) (ipAddress[1] & networkmass[1]);
-        result[2] = (byte) (ipAddress[2] & networkmass[2]);
-        result[3] = (byte) (ipAddress[3] & networkmass[3]);
-        metricOfIntRea.setIpAddress(Ip4Address.valueOf(result));
-        metricOfIntRea.setSubnetAddress(Ip4Address.valueOf(isisInterface.networkMask()));
-        ipInterReacTlv.addInternalReachabilityMetric(metricOfIntRea);
-        lsp.addTlv(ipInterReacTlv);
-
-        tlvHeader.setTlvType(TlvType.IPEXTENDEDREACHABILITY.value());
-        tlvHeader.setTlvLength(0);
-        IpExtendedReachabilityTlv extendedTlv = new IpExtendedReachabilityTlv(tlvHeader);
-        extendedTlv.setDown(false);
-        extendedTlv.setMetric(10);
-        extendedTlv.setPrefix("192.168.7");
-        extendedTlv.setPrefixLength(24);
-        extendedTlv.setSubTlvLength((byte) 0);
-        extendedTlv.setSubTlvPresence(false);
-        lsp.addTlv(extendedTlv);
-
-        return lsp;
-    }
-
-    public IsisHeader getHeader(IsisPduType pduType) {
-        IsisHeader isisHeader = new IsisHeader();
-        isisHeader.setIrpDiscriminator((byte) IsisConstants.IRPDISCRIMINATOR);
-        isisHeader.setPduHeaderLength((byte) IsisUtil.getPduHeaderLength(pduType.value()));
-        isisHeader.setVersion((byte) IsisConstants.ISISVERSION);
-        isisHeader.setIdLength((byte) IsisConstants.SYSTEMIDLENGTH);
-        isisHeader.setIsisPduType(pduType.value());
-        isisHeader.setVersion2((byte) IsisConstants.ISISVERSION);
-        isisHeader.setReserved((byte) IsisConstants.RESERVED);
-        isisHeader.setMaximumAreaAddresses((byte) IsisConstants.MAXAREAADDRESS);
-        return isisHeader;
-    }
-}
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/package-info.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/package-info.java
deleted file mode 100644
index 8a896fb..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the ISIS protocol util.
- */
-package org.onosproject.isis.io.util;
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/package-info.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/package-info.java
deleted file mode 100644
index 2de3c81..0000000
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the ISIS protocol.
- */
-package org.onosproject.isis;
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/IsisHeaderTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/IsisHeaderTest.java
deleted file mode 100644
index d9fbb4a..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/IsisHeaderTest.java
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.MacAddress;
-import org.onosproject.isis.controller.IsisPduType;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for IsisHeader.
- */
-public class IsisHeaderTest {
-
-    private IsisHeader isisHeader;
-    private MacAddress macAddress = MacAddress.valueOf("a4:23:05:00:00:00");
-    private int result;
-    private MacAddress result1;
-    private byte result2;
-    private IsisPduType result3;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        isisHeader = new IsisHeader();
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        isisHeader = null;
-    }
-
-    /**
-     * Tests interfaceIndex() getter method.
-     */
-    @Test
-    public void testInterfaceIndex() throws Exception {
-        isisHeader.setInterfaceIndex(1);
-        result = isisHeader.interfaceIndex();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests interfaceIndex() setter method.
-     */
-    @Test
-    public void testSetInterfaceIndex() throws Exception {
-        isisHeader.setInterfaceIndex(1);
-        result = isisHeader.interfaceIndex();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests interfaceMac() getter method.
-     */
-    @Test
-    public void testInterfaceMac() throws Exception {
-        isisHeader.setInterfaceMac(macAddress);
-        result1 = isisHeader.interfaceMac();
-        assertThat(result1, is(macAddress));
-    }
-
-    /**
-     * Tests sourceMac() getter method.
-     */
-    @Test
-    public void testSourceMac() throws Exception {
-        isisHeader.setSourceMac(macAddress);
-        result1 = isisHeader.sourceMac();
-        assertThat(result1, is(macAddress));
-    }
-
-    /**
-     * Tests sourceMac() setter method.
-     */
-    @Test
-    public void testSetSourceMac() throws Exception {
-        isisHeader.setSourceMac(macAddress);
-        result1 = isisHeader.sourceMac();
-        assertThat(result1, is(macAddress));
-    }
-
-    /**
-     * Tests interfaceMac() setter method.
-     */
-    @Test
-    public void testSetInterfaceMac() throws Exception {
-        isisHeader.setSourceMac(macAddress);
-        result1 = isisHeader.sourceMac();
-        assertThat(result1, is(macAddress));
-    }
-
-    /**
-     * Tests version2() getter method.
-     */
-    @Test
-    public void testVersion2() throws Exception {
-        isisHeader.setVersion2((byte) 1);
-        result2 = isisHeader.version2();
-        assertThat(result2, is((byte) 1));
-    }
-
-    /**
-     * Tests version2() setter method.
-     */
-    @Test
-    public void testSetVersion2() throws Exception {
-        isisHeader.setVersion2((byte) 1);
-        result2 = isisHeader.version2();
-        assertThat(result2, is((byte) 1));
-    }
-
-    /**
-     * Tests maximumAreaAddresses() getter method.
-     */
-    @Test
-    public void testMaximumAreaAddresses() throws Exception {
-        isisHeader.setMaximumAreaAddresses((byte) 1);
-        result2 = isisHeader.maximumAreaAddresses();
-        assertThat(result2, is((byte) 1));
-    }
-
-    /**
-     * Tests maximumAreaAddresses() setter method.
-     */
-    @Test
-    public void testSetMaximumAreaAddresses() throws Exception {
-        isisHeader.setMaximumAreaAddresses((byte) 1);
-        result2 = isisHeader.maximumAreaAddresses();
-        assertThat(result2, is((byte) 1));
-    }
-
-    /**
-     * Tests reserved() getter method.
-     */
-    @Test
-    public void testReserved() throws Exception {
-        isisHeader.setReserved((byte) 1);
-        result2 = isisHeader.reserved();
-        assertThat(result2, is((byte) 1));
-    }
-
-    /**
-     * Tests reserved() setter method.
-     */
-    @Test
-    public void testSetReserved() throws Exception {
-        isisHeader.setReserved((byte) 1);
-        result2 = isisHeader.reserved();
-        assertThat(result2, is((byte) 1));
-    }
-
-    /**
-     * Tests version() getter method.
-     */
-    @Test
-    public void testVersion() throws Exception {
-        isisHeader.setVersion((byte) 1);
-        result2 = isisHeader.version();
-        assertThat(result2, is((byte) 1));
-    }
-
-    /**
-     * Tests version() setter method.
-     */
-    @Test
-    public void testSetVersion() throws Exception {
-        isisHeader.setVersion((byte) 1);
-        result2 = isisHeader.version();
-        assertThat(result2, is((byte) 1));
-    }
-
-    /**
-     * Tests idLength() getter method.
-     */
-    @Test
-    public void testIdLength() throws Exception {
-        isisHeader.setIdLength((byte) 1);
-        result2 = isisHeader.idLength();
-        assertThat(result2, is((byte) 1));
-    }
-
-    /**
-     * Tests idLength() setter method.
-     */
-    @Test
-    public void testSetIdLength() throws Exception {
-        isisHeader.setIdLength((byte) 1);
-        result2 = isisHeader.idLength();
-        assertThat(result2, is((byte) 1));
-    }
-
-    /**
-     * Tests pduType() getter method.
-     */
-    @Test
-    public void testPduType() throws Exception {
-        isisHeader.setIsisPduType(1);
-        result = isisHeader.pduType();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests pduType() setter method.
-     */
-    @Test
-    public void testSetIsisPduType() throws Exception {
-        isisHeader.setIsisPduType(1);
-        result = isisHeader.pduType();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests pduHeaderLength() getter method.
-     */
-    @Test
-    public void testPduHeaderLength() throws Exception {
-        isisHeader.setPduHeaderLength((byte) 1);
-        result2 = isisHeader.pduHeaderLength();
-        assertThat(result2, is((byte) 1));
-    }
-
-    /**
-     * Tests pduHeaderLength() setter method.
-     */
-    @Test
-    public void testSetPduHeaderLength() throws Exception {
-        isisHeader.setPduHeaderLength((byte) 1);
-        result2 = isisHeader.pduHeaderLength();
-        assertThat(result2, is((byte) 1));
-    }
-
-    /**
-     * Tests irpDiscriminator() getter method.
-     */
-    @Test
-    public void testIrpDiscriminator() throws Exception {
-        isisHeader.setIrpDiscriminator((byte) 1);
-        result2 = isisHeader.irpDiscriminator();
-        assertThat(result2, is((byte) 1));
-    }
-
-    /**
-     * Tests irpDiscriminator() setter method.
-     */
-    @Test
-    public void testSetIrpDiscriminator() throws Exception {
-        isisHeader.setIrpDiscriminator((byte) 1);
-        result2 = isisHeader.irpDiscriminator();
-        assertThat(result2, is((byte) 1));
-    }
-
-    /**
-     * Tests irpDiscriminator() setter method.
-     */
-    @Test
-    public void testIsisPduType() throws Exception {
-        isisHeader.setIsisPduType(IsisPduType.L1HELLOPDU.value());
-        result3 = isisHeader.isisPduType();
-        assertThat(result3, is(IsisPduType.L1HELLOPDU));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        isisHeader.readFrom(channelBuffer);
-        assertThat(isisHeader, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        isisHeader.asBytes();
-        assertThat(isisHeader, is(notNullValue()));
-    }
-
-    /**
-     * Tests populateHeader() method.
-     */
-    @Test
-    public void testPopulateHeader() throws Exception {
-        isisHeader.populateHeader(new IsisHeader());
-        assertThat(isisHeader, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/IsisMessageReaderTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/IsisMessageReaderTest.java
deleted file mode 100644
index 300fa1b..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/IsisMessageReaderTest.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket;
-
-import com.google.common.primitives.Bytes;
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.controller.IsisMessage;
-import org.onosproject.isis.io.isispacket.pdu.Csnp;
-import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu;
-import org.onosproject.isis.io.isispacket.pdu.LsPdu;
-import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu;
-import org.onosproject.isis.io.isispacket.pdu.Psnp;
-import org.onosproject.isis.io.util.IsisUtil;
-
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for IsisMessageReader.
- */
-public class IsisMessageReaderTest {
-
-    private final byte[] helloP2P = {
-            -125, 20, 1, 0, 17, 1, 0, 0,
-            2, 51, 51, 51, 51, 51, 51, 0, 100, 5, -39, -126, 1, 4, 3,
-            73, 0, 0, -127, 1, -52, -124, 4, -64, -88, 56, 102, 8, -1,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 8, -81, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    };
-    private final byte[] helloL1L2 = {
-            -125, 27, 1, 0, 15, 1, 0, 0, 1, 34, 34, 34, 34, 34, 34, 0,
-            30, 5, -39, 64, 34, 34, 34, 34, 34, 34, 1, -127, 1, -52, 1,
-            4, 3, 73, 0, 10, -124, 4, 10, 0, 10, 2, -45, 3, 0, 0, 0,
-            8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
-            -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    };
-    private final byte[] l1Lsp = {
-            -125, 27, 1, 0, 18, 1, 0, 0, 0, 86, 4, -81, 34, 34, 34,
-            34, 34, 34, 0, 0, 0, 0, 0, 9, 99, 11, 1, 1, 4, 3, 73,
-            0, 10, -127, 1, -52, -119, 2, 82, 50, -124, 4, -64, -88, 10, 1, -128,
-            24, 10, -128, -128, -128, 10, 0, 10, 0, -1, -1, -1, -4, 10, -128, -128,
-            -128, -64, -88, 10, 0, -1, -1, -1, 0, 2, 12, 0, 10, -128, -128, -128,
-            51, 51, 51, 51, 51, 51, 2
-    };
-    private final byte[] csnp = {
-            -125, 33, 1, 6, 25, 1, 0, 3, 0, 67, 18, 52, 18, 52, 0,
-            18, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1,
-            -1, -1, 9, 32, 4, -81, 18, 52, 18, 52, 0, 18, 0, 0, 0,
-            0, 0, 41, -92, -30, 4, -81, 41, 41, 41, 41, 41, 41, 0,
-            0, 0, 0, 0, 1, 91, 126
-    };
-    private final byte[] psnp = {
-            -125, 17, 1, 0, 27, 1, 0, 0, 0, 35, 41, 41,
-            41, 41, 41, 41, 0, 9, 16, 4, -81, 18, 52, 18,
-            52, 0, 18, 0, 0, 0, 0, 0, 42, -94, -29
-
-    };
-    private IsisMessageReader reader;
-    private ChannelBuffer channelBuffer;
-    private IsisMessage message;
-
-    @Before
-    public void setUp() throws Exception {
-        reader = new IsisMessageReader();
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        reader = null;
-        channelBuffer = null;
-        message = null;
-    }
-
-    /**
-     * Tests readFromBuffer() method.
-     */
-    @Test
-    public void testReadFromBuffer() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(helloP2P);
-        message = reader.readFromBuffer(channelBuffer);
-        assertThat(message, is(instanceOf(P2PHelloPdu.class)));
-
-        channelBuffer = ChannelBuffers.copiedBuffer(helloL1L2);
-        message = reader.readFromBuffer(channelBuffer);
-        assertThat(message, is(instanceOf(L1L2HelloPdu.class)));
-
-        byte[] tlv1 = Bytes.concat(l1Lsp, (IsisUtil.getPaddingTlvs(l1Lsp.length)));
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv1);
-        message = reader.readFromBuffer(channelBuffer);
-        assertThat(message, is(instanceOf(LsPdu.class)));
-
-        tlv1 = Bytes.concat(csnp, (IsisUtil.getPaddingTlvs(csnp.length)));
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv1);
-        message = reader.readFromBuffer(channelBuffer);
-        assertThat(message, is(instanceOf(Csnp.class)));
-
-        tlv1 = Bytes.concat(psnp, (IsisUtil.getPaddingTlvs(psnp.length)));
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv1);
-        message = reader.readFromBuffer(channelBuffer);
-        assertThat(message, is(instanceOf(Psnp.class)));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/CsnpTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/CsnpTest.java
deleted file mode 100644
index e96f13d..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/CsnpTest.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.pdu;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.controller.IsisPduType;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.tlv.AdjacencyStateTlv;
-import org.onosproject.isis.io.isispacket.tlv.IsisTlv;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for Csnp.
- */
-public class CsnpTest {
-
-    private final String srcId = "1111.1111.1111";
-    private final byte[] csnpBytes = {
-            0, 67, 18, 52, 18, 52, 0, 0, 67, 18, 52, 18, 52, 0,
-            18, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1,
-            -1, -1, 9, 32, 4, -81, 18, 52, 18, 52, 0, 18, 0, 0, 0,
-            0, 0, 41, -92, -30, 4, -81, 41, 41, 41, 41, 41, 41, 0,
-            0, 0, 0, 0, 1, 91, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0
-    };
-    private Csnp csnp;
-    private IsisHeader isisHeader;
-    private IsisTlv isisTlv;
-    private TlvHeader tlvHeader;
-    private List<IsisTlv> resultList;
-    private String resultStr;
-    private int resultInt;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        isisHeader = new IsisHeader();
-        isisHeader.setIsisPduType(IsisPduType.L1CSNP.value());
-        csnp = new Csnp(isisHeader);
-        tlvHeader = new TlvHeader();
-        isisTlv = new AdjacencyStateTlv(tlvHeader);
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        isisHeader = null;
-        csnp = null;
-        tlvHeader = null;
-        isisTlv = null;
-    }
-
-    /**
-     * Tests getAllTlv()  method.
-     */
-    @Test
-    public void testGetAllTlv() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(csnpBytes);
-        csnp.readFrom(channelBuffer);
-        resultList = csnp.getAllTlv();
-        assertThat(resultList.size(), is(0));
-    }
-
-    /**
-     * Tests sourceId() getter method.
-     */
-    @Test
-    public void testSourceId() throws Exception {
-        csnp.setSourceId(srcId);
-        resultStr = csnp.sourceId();
-        assertThat(resultStr, is(srcId));
-    }
-
-    /**
-     * Tests sourceId() setter method.
-     */
-    @Test
-    public void testSetSourceId() throws Exception {
-        csnp.setSourceId(srcId);
-        resultStr = csnp.sourceId();
-        assertThat(resultStr, is(srcId));
-    }
-
-
-    /**
-     * Tests startLspId() getter method.
-     */
-    @Test
-    public void testStartLspId() throws Exception {
-        csnp.setStartLspId(srcId);
-        resultStr = csnp.startLspId();
-        assertThat(resultStr, is(srcId));
-    }
-
-    /**
-     * Tests startLspId() setter method.
-     */
-    @Test
-    public void testSetStartLspId() throws Exception {
-        csnp.setStartLspId(srcId);
-        resultStr = csnp.startLspId();
-        assertThat(resultStr, is(srcId));
-    }
-
-    /**
-     * Tests endLspId()  getter method.
-     */
-    @Test
-    public void testEndLspId() throws Exception {
-        csnp.setEndLspId(srcId);
-        resultStr = csnp.endLspId();
-        assertThat(resultStr, is(srcId));
-    }
-
-    /**
-     * Tests endLspId() setter method.
-     */
-    @Test
-    public void testSetEndLspId() throws Exception {
-        csnp.setEndLspId(srcId);
-        resultStr = csnp.endLspId();
-        assertThat(resultStr, is(srcId));
-    }
-
-    /**
-     * Tests pduLength() getter method.
-     */
-    @Test
-    public void testPduLength() throws Exception {
-        csnp.setPduLength(10);
-        resultInt = csnp.pduLength();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests pduLength() setter method.
-     */
-    @Test
-    public void testSetPduLength() throws Exception {
-        csnp.setPduLength(10);
-        resultInt = csnp.pduLength();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(csnpBytes);
-        csnp.readFrom(channelBuffer);
-        assertThat(csnp, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(csnpBytes);
-        csnp.readFrom(channelBuffer);
-        result = csnp.asBytes();
-        assertThat(csnp, is(notNullValue()));
-    }
-
-    /**
-     * Tests isisPduHeader() method.
-     */
-    @Test
-    public void testIsisPduHeader() throws Exception {
-        result = csnp.isisPduHeader();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests completeSequenceNumberPduBody() method.
-     */
-    @Test
-    public void testCompleteSequenceNumberPduBody() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(csnpBytes);
-        csnp.readFrom(channelBuffer);
-        result = csnp.completeSequenceNumberPduBody();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString() method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat((csnp.toString()), is(notNullValue()));
-    }
-
-    /**
-     * Tests equals() method.
-     */
-    @Test
-    public void testEquals() throws Exception {
-        assertThat(csnp.equals(new Csnp(new IsisHeader())), is(true));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashCode() throws Exception {
-        int hashCode = csnp.hashCode();
-        assertThat(hashCode, is(notNullValue()));
-    }
-}
-
-
-
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/HelloPduTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/HelloPduTest.java
deleted file mode 100644
index 2952a92..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/HelloPduTest.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.pdu;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.MacAddress;
-import org.onosproject.isis.controller.IsisInterfaceState;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.tlv.AdjacencyStateTlv;
-import org.onosproject.isis.io.isispacket.tlv.IsisTlv;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for HelloPdu.
- */
-public class HelloPduTest {
-
-    private final byte[] macAddr = new byte[]{
-            (byte) 0xa4, (byte) 0x22, (byte) 0xc2, 0x00, 0x00, 0x00
-    };
-    private final String srcId = "1111.1111.1111";
-    private final byte[] helloL1L2 = {
-            1, 34, 34, 34, 34, 34, 34, 0,
-            30, 5, -39, 64, 34, 34, 34, 34, 34, 34, 1, -127, 1, -52, 1,
-            4, 3, 73, 0, 10, -124, 4, 10, 0, 10, 2, -45, 3, 0, 0, 0,
-            8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
-            -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    };
-
-    private HelloPdu helloPdu;
-    private IsisHeader isisHeader;
-    private IsisTlv isisTlv;
-    private TlvHeader tlvHeader;
-    private MacAddress macAddress;
-    private List<IsisTlv> resultList;
-    private List<String> resultListStr;
-    private List<Ip4Address> resultListIPv4;
-    private List<MacAddress> resultListMac;
-    private IsisInterfaceState resultAdjState;
-    private String resultStr;
-    private int resultInt;
-    private byte resultByte;
-    private ChannelBuffer channelBuffer;
-    private HelloPdu pdu;
-
-    @Before
-    public void setUp() throws Exception {
-        isisHeader = new IsisHeader();
-        helloPdu = new L1L2HelloPdu(isisHeader);
-        tlvHeader = new TlvHeader();
-        isisTlv = new AdjacencyStateTlv(tlvHeader);
-        macAddress = new MacAddress(macAddr);
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-        pdu = helloPdu;
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        isisHeader = null;
-        helloPdu = null;
-        isisTlv = null;
-        tlvHeader = null;
-        macAddress = null;
-    }
-
-    /**
-     * Tests addTlv() getter method.
-     */
-    @Test
-    public void testAddTlv() throws Exception {
-        helloPdu.addTlv(isisTlv);
-        resultList = helloPdu.tlvs();
-        assertThat(resultList.size(), is(1));
-    }
-
-    /**
-     * Tests tlvs()  method.
-     */
-    @Test
-    public void testTlvs() throws Exception {
-        helloPdu.addTlv(isisTlv);
-        resultList = helloPdu.tlvs();
-        assertThat(resultList.size(), is(1));
-    }
-
-    /**
-     * Tests areaAddress()  method.
-     */
-    @Test
-    public void testAreaAddress() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(helloL1L2);
-        helloPdu.readFrom(channelBuffer);
-        resultListStr = helloPdu.areaAddress();
-        assertThat(resultListStr.size(), is(1));
-    }
-
-    /**
-     * Tests interfaceIpAddresse() method.
-     */
-    @Test
-    public void testInterfaceIpAddresses() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(helloL1L2);
-        helloPdu.readFrom(channelBuffer);
-        resultListIPv4 = helloPdu.interfaceIpAddresses();
-        assertThat(resultListIPv4.size(), is(1));
-    }
-
-    /**
-     * Tests neighborList() method.
-     */
-    @Test
-    public void testNeighborList() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(helloL1L2);
-        helloPdu.readFrom(channelBuffer);
-        resultListMac = helloPdu.neighborList();
-        assertThat(resultListMac, is(nullValue()));
-    }
-
-    /**
-     * Tests adjacencyState() method.
-     */
-    @Test
-    public void testAdjacencyState() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(helloL1L2);
-        helloPdu.readFrom(channelBuffer);
-        resultAdjState = helloPdu.adjacencyState();
-        assertThat(resultAdjState, is(nullValue()));
-    }
-
-    /**
-     * Tests sourceId() getter method.
-     */
-    @Test
-    public void testSourceId() throws Exception {
-        helloPdu.setSourceId(srcId);
-        resultStr = helloPdu.sourceId();
-        assertThat(resultStr, is(srcId));
-    }
-
-    /**
-     * Tests sourceId() setter method.
-     */
-    @Test
-    public void testSetSourceId() throws Exception {
-        helloPdu.setSourceId(srcId);
-        resultStr = helloPdu.sourceId();
-        assertThat(resultStr, is(srcId));
-    }
-
-    /**
-     * Tests pduLength() getter method.
-     */
-    @Test
-    public void testPduLength() throws Exception {
-        helloPdu.setPduLength(10);
-        resultInt = helloPdu.pduLength();
-        assertThat(resultInt, is(10));
-
-    }
-
-    /**
-     * Tests pduLength() setter method.
-     */
-    @Test
-    public void testSetPduLength() throws Exception {
-        helloPdu.setPduLength(10);
-        resultInt = helloPdu.pduLength();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests holdingTime() getter method.
-     */
-    @Test
-    public void testHoldingTime() throws Exception {
-        helloPdu.setHoldingTime(10);
-        resultInt = helloPdu.holdingTime();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests holdingTime() setter method.
-     */
-    @Test
-    public void testSetHoldingTime() throws Exception {
-        helloPdu.setHoldingTime(10);
-        resultInt = helloPdu.holdingTime();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests circuitType() getter method.
-     */
-    @Test
-    public void testCircuitType() throws Exception {
-        helloPdu.setCircuitType((byte) 1);
-        resultByte = helloPdu.circuitType();
-        assertThat(resultByte, is((byte) 1));
-    }
-
-    /**
-     * Tests circuitType() setter method.
-     */
-    @Test
-    public void testSetCircuitType() throws Exception {
-        helloPdu.setCircuitType((byte) 1);
-        resultByte = helloPdu.circuitType();
-        assertThat(resultByte, is((byte) 1));
-    }
-
-    /**
-     * Tests toString() getter method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        pdu = helloPdu;
-        assertThat(pdu.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests equals() method.
-     */
-    @Test
-    public void testEquals() throws Exception {
-        pdu = helloPdu;
-        assertThat(pdu.equals(new L1L2HelloPdu(new IsisHeader())), is(true));
-    }
-
-    /**
-     * Tests hashCode()  method.
-     */
-    @Test
-    public void testHashCode() throws Exception {
-        pdu = helloPdu;
-        resultInt = pdu.hashCode();
-        assertThat(resultInt, is(notNullValue()));
-    }
-}
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/L1L2HelloPduTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/L1L2HelloPduTest.java
deleted file mode 100644
index db87ba1..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/L1L2HelloPduTest.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.pdu;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for L1L2HelloPdu.
- */
-public class L1L2HelloPduTest {
-    private final String lanId = "1111.1111.1111";
-    private final byte[] helloL1L2 = {
-            1, 34, 34, 34, 34, 34, 34, 0,
-            30, 5, -39, 64, 34, 34, 34, 34, 34, 34, 1, -127, 1, -52, 1,
-            4, 3, 73, 0, 10, -124, 4, 10, 0, 10, 2, -45, 3, 0, 0, 0,
-            8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
-            -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    };
-    private L1L2HelloPdu l1L2HelloPdu;
-    private IsisHeader isisHeader;
-    private String resultStr;
-    private byte resultByte;
-    private int resultInt;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        isisHeader = new IsisHeader();
-        isisHeader.setIsisPduType(15);
-        l1L2HelloPdu = new L1L2HelloPdu(isisHeader);
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        isisHeader = null;
-        l1L2HelloPdu = null;
-    }
-
-    /**
-     * Tests setLanId() getter method.
-     */
-    @Test
-    public void testLanId() throws Exception {
-        l1L2HelloPdu.setLanId(lanId);
-        resultStr = l1L2HelloPdu.lanId();
-        assertThat(resultStr, is(lanId));
-    }
-
-    /**
-     * Tests setLanId() setter method.
-     */
-    @Test
-    public void testSetLanId() throws Exception {
-        l1L2HelloPdu.setLanId(lanId);
-        resultStr = l1L2HelloPdu.lanId();
-        assertThat(resultStr, is(lanId));
-    }
-
-    /**
-     * Tests priority() getter method.
-     */
-    @Test
-    public void testPriority() throws Exception {
-        l1L2HelloPdu.setPriority((byte) 1);
-        resultByte = l1L2HelloPdu.priority();
-        assertThat(resultByte, is((byte) 1));
-    }
-
-    /**
-     * Tests priority() setter method.
-     */
-    @Test
-    public void testSetPriority() throws Exception {
-        l1L2HelloPdu.setPriority((byte) 1);
-        resultByte = l1L2HelloPdu.priority();
-        assertThat(resultByte, is((byte) 1));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(helloL1L2);
-        l1L2HelloPdu.readFrom(channelBuffer);
-        assertThat(l1L2HelloPdu, is(notNullValue()));
-    }
-
-    /**
-     * Tests asByte() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(helloL1L2);
-        l1L2HelloPdu.readFrom(channelBuffer);
-        result = l1L2HelloPdu.asBytes();
-        assertThat(l1L2HelloPdu, is(notNullValue()));
-    }
-
-    /**
-     * Tests l1l2IsisPduHeader() method.
-     */
-    @Test
-    public void testL1l2IsisPduHeader() throws Exception {
-        result = l1L2HelloPdu.l1l2IsisPduHeader();
-        assertThat(l1L2HelloPdu, is(notNullValue()));
-    }
-
-    /**
-     * Tests l1l2HelloPduBody() method.
-     */
-    @Test
-    public void testL1l2HelloPduBody() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(helloL1L2);
-        l1L2HelloPdu.readFrom(channelBuffer);
-        result = l1L2HelloPdu.l1l2HelloPduBody();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString()  method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(l1L2HelloPdu.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests equals() method.
-     */
-    @Test
-    public void testEquals() throws Exception {
-        assertThat(l1L2HelloPdu.equals(new L1L2HelloPdu(new IsisHeader())), is(true));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashCode() throws Exception {
-        resultInt = l1L2HelloPdu.hashCode();
-        assertThat(resultInt, is(notNullValue()));
-    }
-}
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/LsPduTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/LsPduTest.java
deleted file mode 100644
index 5a19f2c..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/LsPduTest.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.pdu;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.controller.IsisPduType;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.tlv.HostNameTlv;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for LsPdu.
- */
-public class LsPduTest {
-    private final String lspId = "1111.1111.1111";
-    private final byte[] l1Lsp = {
-            0, 86, 4, -81, 34, 34, 34, 34, 34, 34, 0, 0, 0, 0, 0, 9, 99, 11, 1, 1, 4, 3, 73,
-            0, 10, -127, 1, -52, -119, 2, 82, 50, -124, 4, -64, -88, 10, 1, -128, 24, 10,
-            -128, -128, -128, 10, 0, 10, 0, -1, -1, -1, -4, 10, -128, -128, -128, -64, -88,
-            10, 0, -1, -1, -1, 0, 2, 12, 0, 10, -128, -128, -128, 51, 51, 51, 51, 51, 51, 2
-    };
-    private LsPdu lsPdu;
-    private IsisHeader isisHeader;
-    private TlvHeader tlvHeader;
-    private int resultInt;
-    private boolean resultBool;
-    private byte resultByte;
-    private AttachedToOtherAreas resultObj;
-    private String resultStr;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        isisHeader = new IsisHeader();
-        tlvHeader = new TlvHeader();
-        isisHeader.setIsisPduType(IsisPduType.L1LSPDU.value());
-        lsPdu = new LsPdu(isisHeader);
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        isisHeader = null;
-        lsPdu = null;
-        tlvHeader = null;
-        channelBuffer = null;
-    }
-
-    /**
-     * Tests addTlv()  method.
-     */
-    @Test
-    public void testAddTlv() throws Exception {
-        lsPdu.addTlv(new HostNameTlv(tlvHeader));
-        assertThat(lsPdu, is(notNullValue()));
-    }
-
-    /**
-     * Tests remainingLifeTime() getter method.
-     */
-    @Test
-    public void testRemainingLifeTime() throws Exception {
-        lsPdu.setRemainingLifeTime(10);
-        resultInt = lsPdu.remainingLifeTime();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests remainingLifeTime() setter method.
-     */
-    @Test
-    public void testSetRemainingLifeTime() throws Exception {
-        lsPdu.setRemainingLifeTime(10);
-        resultInt = lsPdu.remainingLifeTime();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests lspDbol() getter method.
-     */
-    @Test
-    public void testLspDbol() throws Exception {
-        lsPdu.setLspDbol(true);
-        resultBool = lsPdu.lspDbol();
-        assertThat(resultBool, is(true));
-    }
-
-    /**
-     * Tests lspDbol() setter method.
-     */
-    @Test
-    public void testSetLspDbol() throws Exception {
-        lsPdu.setLspDbol(true);
-        resultBool = lsPdu.lspDbol();
-        assertThat(resultBool, is(true));
-    }
-
-    /**
-     * Tests typeBlock() getter method.
-     */
-    @Test
-    public void testTypeBlock() throws Exception {
-        lsPdu.setTypeBlock((byte) 1);
-        resultByte = lsPdu.typeBlock();
-        assertThat(resultByte, is((byte) 1));
-    }
-
-    /**
-     * Tests typeBlock() setter method.
-     */
-    @Test
-    public void testSetTypeBlock() throws Exception {
-        lsPdu.setTypeBlock((byte) 1);
-        resultByte = lsPdu.typeBlock();
-        assertThat(resultByte, is((byte) 1));
-    }
-
-    /**
-     * Tests sequenceNumber() getter method.
-     */
-    @Test
-    public void testSequenceNumber() throws Exception {
-        lsPdu.setSequenceNumber(1);
-        resultInt = lsPdu.sequenceNumber();
-        assertThat(resultInt, is(1));
-    }
-
-    /**
-     * Tests sequenceNumber() setter method.
-     */
-    @Test
-    public void testSetSequenceNumber() throws Exception {
-        lsPdu.setSequenceNumber(1);
-        resultInt = lsPdu.sequenceNumber();
-        assertThat(resultInt, is(1));
-    }
-
-    /**
-     * Tests checkSum() getter method.
-     */
-    @Test
-    public void testCheckSum() throws Exception {
-        lsPdu.setCheckSum(1);
-        resultInt = lsPdu.checkSum();
-        assertThat(resultInt, is(1));
-    }
-
-    /**
-     * Tests checkSum() setter method.
-     */
-    @Test
-    public void testSetCheckSum() throws Exception {
-        lsPdu.setCheckSum(1);
-        resultInt = lsPdu.checkSum();
-        assertThat(resultInt, is(1));
-    }
-
-    /**
-     * Tests partitionRepair() getter method.
-     */
-    @Test
-    public void testPartitionRepair() throws Exception {
-        lsPdu.setPartitionRepair(true);
-        resultBool = lsPdu.partitionRepair();
-        assertThat(resultBool, is(true));
-    }
-
-    /**
-     * Tests partitionRepair() setter method.
-     */
-    @Test
-    public void testSetPartitionRepair() throws Exception {
-        lsPdu.setPartitionRepair(true);
-        resultBool = lsPdu.partitionRepair();
-        assertThat(resultBool, is(true));
-    }
-
-    /**
-     * Tests attachedToOtherAreas() getter method.
-     */
-    @Test
-    public void testAttachedToOtherAreas() throws Exception {
-        lsPdu.setAttachedToOtherAreas(AttachedToOtherAreas.DEFAULTMETRIC);
-        resultObj = lsPdu.attachedToOtherAreas();
-        assertThat(resultObj, is(AttachedToOtherAreas.DEFAULTMETRIC));
-    }
-
-    /**
-     * Tests attachedToOtherAreas() setter method.
-     */
-    @Test
-    public void testSetAttachedToOtherAreas() throws Exception {
-        lsPdu.setAttachedToOtherAreas(AttachedToOtherAreas.DEFAULTMETRIC);
-        resultObj = lsPdu.attachedToOtherAreas();
-        assertThat(resultObj, is(AttachedToOtherAreas.DEFAULTMETRIC));
-    }
-
-    /**
-     * Tests intermediateSystemType() getter method.
-     */
-    @Test
-    public void testIntermediateSystemType() throws Exception {
-        lsPdu.setIntermediateSystemType((byte) 1);
-        resultByte = lsPdu.intermediateSystemType();
-        assertThat(resultByte, is((byte) 1));
-    }
-
-    /**
-     * Tests intermediateSystemType() setter method.
-     */
-    @Test
-    public void testSetIntermediateSystemType() throws Exception {
-        lsPdu.setIntermediateSystemType((byte) 1);
-        resultByte = lsPdu.intermediateSystemType();
-        assertThat(resultByte, is((byte) 1));
-    }
-
-    /**
-     * Tests lspId() getter method.
-     */
-    @Test
-    public void testLspId() throws Exception {
-        lsPdu.setLspId(lspId);
-        resultStr = lsPdu.lspId();
-        assertThat(resultStr, is(lspId));
-    }
-
-    /**
-     * Tests lspId() setter method.
-     */
-    @Test
-    public void testSetLspId() throws Exception {
-        lsPdu.setLspId(lspId);
-        resultStr = lsPdu.lspId();
-        assertThat(resultStr, is(lspId));
-    }
-
-    /**
-     * Tests pduLength() getter method.
-     */
-    @Test
-    public void testPduLength() throws Exception {
-        lsPdu.setPduLength(10);
-        resultInt = lsPdu.pduLength();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests pduLength() setter method.
-     */
-    @Test
-    public void testSetPduLength() throws Exception {
-        lsPdu.setPduLength(10);
-        resultInt = lsPdu.pduLength();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(l1Lsp);
-        lsPdu.readFrom(channelBuffer);
-        assertThat(lsPdu, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes()  method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(l1Lsp);
-        lsPdu.readFrom(channelBuffer);
-        result = lsPdu.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests l1l2IsisPduHeader()  method.
-     */
-    @Test
-    public void testL1l2IsisPduHeader() throws Exception {
-        result = lsPdu.l1l2IsisPduHeader();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests l1l2LsPduBody()  method.
-     */
-    @Test
-    public void testL1l2LsPduBody() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(l1Lsp);
-        lsPdu.readFrom(channelBuffer);
-        result = lsPdu.l1l2LsPduBody();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString()  method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(lsPdu.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests equals()  method.
-     */
-    @Test
-    public void testEquals() throws Exception {
-        assertThat(lsPdu.equals(new LsPdu(new IsisHeader())), is(true));
-    }
-
-    /**
-     * Tests hashCode()  method.
-     */
-    @Test
-    public void testHashCode() throws Exception {
-        resultInt = lsPdu.hashCode();
-        assertThat(resultInt, is(notNullValue()));
-    }
-}
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/P2PHelloPduTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/P2PHelloPduTest.java
deleted file mode 100644
index 17dfd54..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/P2PHelloPduTest.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.pdu;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.controller.IsisPduType;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for P2PHelloPdu.
- */
-public class P2PHelloPduTest {
-    private final byte[] p2p = {
-            2, 51, 51, 51, 51, 51, 51, 0, 100, 5, -39, -126, 1, 4, 3,
-            73, 0, 0, -127, 1, -52, -124, 4, -64, -88, 56, 102, 8, -1,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 8, -81, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    };
-    private P2PHelloPdu p2PHelloPdu;
-    private IsisHeader isisHeader;
-    private byte resultByte;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-    private int resultInt;
-
-    @Before
-    public void setUp() throws Exception {
-        isisHeader = new IsisHeader();
-        isisHeader.setIsisPduType(IsisPduType.P2PHELLOPDU.value());
-        p2PHelloPdu = new P2PHelloPdu(isisHeader);
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-
-
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        isisHeader = null;
-        p2PHelloPdu = null;
-        channelBuffer = null;
-    }
-
-    /**
-     * Tests localCircuitId() getter method.
-     */
-    @Test
-    public void testLocalCircuitId() throws Exception {
-        p2PHelloPdu.setLocalCircuitId((byte) 1);
-        resultByte = p2PHelloPdu.localCircuitId();
-        assertThat(resultByte, is((byte) 1));
-    }
-
-    /**
-     * Tests localCircuitId() setter method.
-     */
-    @Test
-    public void testSetLocalCircuitId() throws Exception {
-        p2PHelloPdu.setLocalCircuitId((byte) 1);
-        resultByte = p2PHelloPdu.localCircuitId();
-        assertThat(resultByte, is((byte) 1));
-    }
-
-    /**
-     * Tests setVariableLengths() method.
-     */
-    @Test
-    public void testSetVariableLengths() throws Exception {
-
-
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(p2p);
-        p2PHelloPdu.readFrom(channelBuffer);
-        assertThat(p2PHelloPdu, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(p2p);
-        p2PHelloPdu.readFrom(channelBuffer);
-        result = p2PHelloPdu.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests p2PHeader() method.
-     */
-    @Test
-    public void testP2PHeader() throws Exception {
-        result = p2PHelloPdu.p2PHeader();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests p2P2HelloPduBody() method.
-     */
-    @Test
-    public void testP2P2HelloPduBody() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(p2p);
-        p2PHelloPdu.readFrom(channelBuffer);
-        result = p2PHelloPdu.p2P2HelloPduBody();
-        assertThat(result, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests toString() method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(p2PHelloPdu.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests equals() method.
-     */
-    @Test
-    public void testEquals() throws Exception {
-        assertThat(p2PHelloPdu.equals(new P2PHelloPdu(new IsisHeader())), is(true));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashCode() throws Exception {
-        resultInt = p2PHelloPdu.hashCode();
-        assertThat(resultInt, is(notNullValue()));
-    }
-}
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/PsnpTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/PsnpTest.java
deleted file mode 100644
index 7d71fd8..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/PsnpTest.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.pdu;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.controller.IsisPduType;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-import org.onosproject.isis.io.isispacket.tlv.AdjacencyStateTlv;
-import org.onosproject.isis.io.isispacket.tlv.IsisTlv;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for Psnp.
- */
-public class PsnpTest {
-    private final String srcId = "1111.1111.1111";
-    private final byte[] psnpPkt = {
-            0, 35, 41, 41, 41, 41, 41, 41, 0, 9, 16, 4, -81, 18, 52, 18,
-            52, 0, 18, 0, 0, 0, 0, 0, 42, -94, -29
-    };
-    private Psnp psnp;
-    private IsisHeader isisHeader;
-    private ChannelBuffer channelBuffer;
-    private IsisTlv isisTlv;
-    private TlvHeader tlvHeader;
-    private List<IsisTlv> resultList;
-    private String resultStr;
-    private int resultInt;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        isisHeader = new IsisHeader();
-        isisHeader.setIsisPduType(IsisPduType.L1PSNP.value());
-        psnp = new Psnp(isisHeader);
-        tlvHeader = new TlvHeader();
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-        isisTlv = new AdjacencyStateTlv(tlvHeader);
-
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        isisHeader = null;
-        psnp = null;
-        channelBuffer = null;
-        tlvHeader = null;
-        isisTlv = null;
-        tlvHeader = null;
-    }
-
-    /**
-     * Tests addTlv() method.
-     */
-    @Test
-    public void testAddTlv() throws Exception {
-        psnp.addTlv(isisTlv);
-        resultList = psnp.getAllTlv();
-        assertThat(resultList.size(), is(1));
-
-    }
-
-    /**
-     * Tests getAllTlv() method.
-     */
-    @Test
-    public void testGetAllTlv() throws Exception {
-        psnp.addTlv(isisTlv);
-        resultList = psnp.getAllTlv();
-        assertThat(resultList.size(), is(1));
-
-    }
-
-    /**
-     * Tests sourceId() getter method.
-     */
-    @Test
-    public void testSourceId() throws Exception {
-        psnp.setSourceId(srcId);
-        resultStr = psnp.sourceId();
-        assertThat(resultStr, is(srcId));
-    }
-
-    /**
-     * Tests sourceId() setter method.
-     */
-    @Test
-    public void testSetSourceId() throws Exception {
-        psnp.setSourceId(srcId);
-        resultStr = psnp.sourceId();
-        assertThat(resultStr, is(srcId));
-    }
-
-    /**
-     * Tests pduLength() getter method.
-     */
-    @Test
-    public void testPduLength() throws Exception {
-        psnp.setPduLength(10);
-        resultInt = psnp.pduLength();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests pduLength() setter method.
-     */
-    @Test
-    public void testSetPduLength() throws Exception {
-        psnp.setPduLength(10);
-        resultInt = psnp.pduLength();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(psnpPkt);
-        psnp.readFrom(channelBuffer);
-        assertThat(psnp, is(notNullValue()));
-    }
-
-    /**
-     * Tests lasBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(psnpPkt);
-        psnp.readFrom(channelBuffer);
-        result = psnp.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests isisPduHeader() method.
-     */
-    @Test
-    public void testIsisPduHeader() throws Exception {
-        result = psnp.isisPduHeader();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests partialSequenceNumberPduBody() method.
-     */
-    @Test
-    public void testPartialSequenceNumberPduBody() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(psnpPkt);
-        psnp.readFrom(channelBuffer);
-        result = psnp.partialSequenceNumberPduBody();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString() method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat((psnp.toString()), is(notNullValue()));
-    }
-
-    /**
-     * Tests equals() method.
-     */
-    @Test
-    public void testEquals() throws Exception {
-        assertThat(psnp.equals(new Psnp(new IsisHeader())), is(true));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashCode() throws Exception {
-        int hashCode = psnp.hashCode();
-        assertThat(hashCode, is(notNullValue()));
-    }
-}
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AdjacencyStateTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AdjacencyStateTlvTest.java
deleted file mode 100644
index 5152975..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AdjacencyStateTlvTest.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for AdjacencyStateTlv.
- */
-public class AdjacencyStateTlvTest {
-
-    private final String neighborSystemId = "2929.2929.2929";
-    private final byte[] tlv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-    private AdjacencyStateTlv adjacencyStateTlv;
-    private TlvHeader tlvHeader;
-    private int result;
-    private byte result2;
-    private String result1;
-    private ChannelBuffer channelBuffer;
-    private byte[] result3;
-
-    @Before
-    public void setUp() throws Exception {
-        tlvHeader = new TlvHeader();
-        adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader);
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tlvHeader = null;
-        adjacencyStateTlv = null;
-        channelBuffer = null;
-    }
-
-    /**
-     * Tests localCircuitId() getter method.
-     */
-    @Test
-    public void testLocalCircuitId() throws Exception {
-        adjacencyStateTlv.setLocalCircuitId(1);
-        result = adjacencyStateTlv.localCircuitId();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests localCircuitId() setter method.
-     */
-    @Test
-    public void testSetLocalCircuitId() throws Exception {
-        adjacencyStateTlv.setLocalCircuitId(1);
-        result = adjacencyStateTlv.localCircuitId();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests neighborSystemId() getter method.
-     */
-    @Test
-    public void testNeighborSystemId() throws Exception {
-        adjacencyStateTlv.setNeighborSystemId(neighborSystemId);
-        result1 = adjacencyStateTlv.neighborSystemId();
-        assertThat(result1, is(neighborSystemId));
-    }
-
-    /**
-     * Tests neighborSystemId() setter method.
-     */
-    @Test
-    public void testSetNeighborSystemId() throws Exception {
-        adjacencyStateTlv.setNeighborSystemId(neighborSystemId);
-        result1 = adjacencyStateTlv.neighborSystemId();
-        assertThat(result1, is(neighborSystemId));
-    }
-
-    /**
-     * Tests neighborLocalCircuitId() getter method.
-     */
-    @Test
-    public void testNeighborLocalCircuitId() throws Exception {
-        adjacencyStateTlv.setNeighborLocalCircuitId(1);
-        result = adjacencyStateTlv.neighborLocalCircuitId();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests neighborLocalCircuitId() setter method.
-     */
-    @Test
-    public void testSetNeighborLocalCircuitId() throws Exception {
-        adjacencyStateTlv.setNeighborLocalCircuitId(1);
-        result = adjacencyStateTlv.neighborLocalCircuitId();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests adjacencyType() getter method.
-     */
-    @Test
-    public void testAdjacencyType() throws Exception {
-        adjacencyStateTlv.setAdjacencyType((byte) 1);
-        result2 = adjacencyStateTlv.adjacencyType();
-        assertThat(result2, is((byte) 1));
-    }
-
-    /**
-     * Tests adjacencyType() setter method.
-     */
-    @Test
-    public void testSetAdjacencyType() throws Exception {
-        adjacencyStateTlv.setAdjacencyType((byte) 1);
-        result2 = adjacencyStateTlv.adjacencyType();
-        assertThat(result2, is((byte) 1));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        adjacencyStateTlv.readFrom(channelBuffer);
-        assertThat(adjacencyStateTlv.adjacencyType(), is((byte) 0));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        adjacencyStateTlv.readFrom(channelBuffer);
-        result3 = adjacencyStateTlv.asBytes();
-        assertThat(result3, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString() method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(adjacencyStateTlv.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AreaAddressTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AreaAddressTlvTest.java
deleted file mode 100644
index c33f5e4..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AreaAddressTlvTest.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.List;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for AreaAddressTlv.
- */
-public class AreaAddressTlvTest {
-
-    private final String areaAddress = "490001";
-    private final byte[] tlv = {1, 49};
-    private AreaAddressTlv areaAddressTlv;
-    private TlvHeader tlvHeader;
-    private List<String> result;
-    private ChannelBuffer channelBuffer;
-    private byte[] result1;
-
-    @Before
-    public void setUp() throws Exception {
-        tlvHeader = new TlvHeader();
-        areaAddressTlv = new AreaAddressTlv(tlvHeader);
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tlvHeader = null;
-        areaAddressTlv = null;
-    }
-
-    /**
-     * Tests addAddress() method.
-     */
-    @Test
-    public void testAddAddress() throws Exception {
-        areaAddressTlv.addAddress(areaAddress);
-        result = areaAddressTlv.areaAddress();
-        assertThat(result.size(), is(1));
-    }
-
-    /**
-     * Tests areaAddress() setter method.
-     */
-    @Test
-    public void testSetAreaAddress() throws Exception {
-        areaAddressTlv.addAddress(areaAddress);
-        result = areaAddressTlv.areaAddress();
-        assertThat(result.size(), is(1));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        areaAddressTlv.readFrom(channelBuffer);
-        assertThat(areaAddressTlv.areaAddress().size(), is(1));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        areaAddressTlv.readFrom(channelBuffer);
-        result1 = areaAddressTlv.asBytes();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString() method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(areaAddressTlv.toString(), is(notNullValue()));
-    }
-}
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/HostNameTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/HostNameTlvTest.java
deleted file mode 100644
index 7a9d8cd..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/HostNameTlvTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for HostNameTlv.
- */
-public class HostNameTlvTest {
-    private final String hostName = "TEST";
-    private final byte[] tlv = hostName.getBytes();
-    private HostNameTlv hostNameTlv;
-    private TlvHeader tlvHeader;
-    private String result;
-    private ChannelBuffer channelBuffer;
-    private byte[] result1;
-
-    @Before
-    public void setUp() throws Exception {
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvLength(tlv.length);
-        hostNameTlv = new HostNameTlv(tlvHeader);
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tlvHeader = null;
-        hostNameTlv = null;
-    }
-
-    /**
-     * Tests hostName() getter method.
-     */
-    @Test
-    public void testHostName() throws Exception {
-        hostNameTlv.setHostName(hostName);
-        result = hostNameTlv.hostName();
-        assertThat(result, is(hostName));
-    }
-
-    /**
-     * Tests hostName() setter method.
-     */
-    @Test
-    public void testSetHostName() throws Exception {
-        hostNameTlv.setHostName(hostName);
-        result = hostNameTlv.hostName();
-        assertThat(result, is(hostName));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        hostNameTlv.readFrom(channelBuffer);
-        assertThat(hostNameTlv.hostName(), is(hostName));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        hostNameTlv.readFrom(channelBuffer);
-        result1 = hostNameTlv.asBytes();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString() method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(hostNameTlv.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpExtendedReachabilityTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpExtendedReachabilityTlvTest.java
deleted file mode 100644
index da1664b..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpExtendedReachabilityTlvTest.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.AdministrativeGroup;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringSubTlv;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for IP ExtendedReachabilityTlv.
- */
-public class IpExtendedReachabilityTlvTest {
-    private final String prefix = "00";
-    private final byte[] tlv = {0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0};
-    private final byte[] tlv1 = {0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0};
-    private final byte[] tlv2 = {0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0};
-    private final byte[] tlv3 = {0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0};
-    private TlvHeader tlvHeader;
-    private IpExtendedReachabilityTlv ipExtendedReachabilityTlv;
-    private String result;
-    private boolean result1;
-    private int result2;
-    private TrafficEngineeringSubTlv trafficEngineeringSubTlv;
-    private byte result4;
-    private ChannelBuffer channelBuffer;
-    private byte[] result3;
-
-    @Before
-    public void setUp() throws Exception {
-        tlvHeader = new TlvHeader();
-        ipExtendedReachabilityTlv = new IpExtendedReachabilityTlv(tlvHeader);
-        trafficEngineeringSubTlv = new AdministrativeGroup(tlvHeader);
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tlvHeader = null;
-        ipExtendedReachabilityTlv = null;
-
-    }
-
-    /**
-     * Tests prefix() getter method.
-     */
-    @Test
-    public void testPrefix() throws Exception {
-        ipExtendedReachabilityTlv.setPrefix(prefix);
-        result = ipExtendedReachabilityTlv.prefix();
-        assertThat(result, is("00"));
-    }
-
-    /**
-     * Tests prefix() setter method.
-     */
-    @Test
-    public void testSetPrefix() throws Exception {
-        ipExtendedReachabilityTlv.setPrefix(prefix);
-        result = ipExtendedReachabilityTlv.prefix();
-        assertThat(result, is("00"));
-    }
-
-    /**
-     * Tests isDown() getter method.
-     */
-
-    @Test
-    public void testIsDown() throws Exception {
-        ipExtendedReachabilityTlv.setDown(true);
-        result1 = ipExtendedReachabilityTlv.isDown();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isDown() setter method.
-     */
-    @Test
-    public void testSetDown() throws Exception {
-        ipExtendedReachabilityTlv.setDown(true);
-        result1 = ipExtendedReachabilityTlv.isDown();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isSubTlvPresence() getter method.
-     */
-    @Test
-    public void testIsSubTlvPresence() throws Exception {
-        ipExtendedReachabilityTlv.setSubTlvPresence(true);
-        result1 = ipExtendedReachabilityTlv.isSubTlvPresence();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isSubTlvPresence() setter method.
-     */
-    @Test
-    public void testSetSubTlvPresence() throws Exception {
-        ipExtendedReachabilityTlv.setSubTlvPresence(true);
-        result1 = ipExtendedReachabilityTlv.isSubTlvPresence();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests prefixLength() getter method.
-     */
-    @Test
-    public void testPrefixLength() throws Exception {
-        ipExtendedReachabilityTlv.setPrefixLength(10);
-        result2 = ipExtendedReachabilityTlv.prefixLength();
-        assertThat(result2, is(10));
-
-    }
-
-    /**
-     * Tests prefixLength() setter method.
-     */
-    @Test
-    public void testSetPrefixLength() throws Exception {
-        ipExtendedReachabilityTlv.setPrefixLength(10);
-        result2 = ipExtendedReachabilityTlv.prefixLength();
-        assertThat(result2, is(10));
-    }
-
-    /**
-     * Tests addNeighbor() method.
-     */
-    @Test
-    public void testAddSubTlv() throws Exception {
-        ipExtendedReachabilityTlv.addSubTlv(trafficEngineeringSubTlv);
-        assertThat(ipExtendedReachabilityTlv, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests subTlvLength() getter method.
-     */
-    @Test
-    public void testSubTlvLength() throws Exception {
-        ipExtendedReachabilityTlv.setSubTlvLength((byte) 10);
-        result4 = ipExtendedReachabilityTlv.subTlvLength();
-        assertThat(result4, is((byte) 10));
-    }
-
-    /**
-     * Tests subTlvLength() setter method.
-     */
-    @Test
-    public void testSetSubTlvLength() throws Exception {
-        ipExtendedReachabilityTlv.setSubTlvLength((byte) 10);
-        result4 = ipExtendedReachabilityTlv.subTlvLength();
-        assertThat(result4, is((byte) 10));
-    }
-
-    /**
-     * Tests metric() getter method.
-     */
-    @Test
-    public void testMetric() throws Exception {
-        ipExtendedReachabilityTlv.setMetric(10);
-        result2 = ipExtendedReachabilityTlv.metric();
-        assertThat(result2, is(10));
-    }
-
-    /**
-     * Tests metric() setter method.
-     */
-    @Test
-    public void testSetMetric() throws Exception {
-        ipExtendedReachabilityTlv.setMetric(10);
-        result2 = ipExtendedReachabilityTlv.metric();
-        assertThat(result2, is(10));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        ipExtendedReachabilityTlv.readFrom(channelBuffer);
-        assertThat(ipExtendedReachabilityTlv.metric(), is(0));
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv1);
-        ipExtendedReachabilityTlv.readFrom(channelBuffer);
-        assertThat(ipExtendedReachabilityTlv.metric(), is(0));
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv2);
-        ipExtendedReachabilityTlv.readFrom(channelBuffer);
-        assertThat(ipExtendedReachabilityTlv.metric(), is(0));
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv3);
-        ipExtendedReachabilityTlv.readFrom(channelBuffer);
-        assertThat(ipExtendedReachabilityTlv.metric(), is(0));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        ipExtendedReachabilityTlv.readFrom(channelBuffer);
-        ipExtendedReachabilityTlv.setPrefix(prefix);
-        result3 = ipExtendedReachabilityTlv.asBytes();
-        assertThat(result3, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString() method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(ipExtendedReachabilityTlv.toString(), is(notNullValue()));
-    }
-
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInterfaceAddressTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInterfaceAddressTlvTest.java
deleted file mode 100644
index 1dd0fe8..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInterfaceAddressTlvTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for IP InterfaceAddressTlv.
- */
-public class IpInterfaceAddressTlvTest {
-    private final Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10");
-    private final byte[] tlv = {0, 0, 0, 0};
-    private TlvHeader tlvHeader;
-    private IpInterfaceAddressTlv ipInterfaceAddressTlv;
-    private List<Ip4Address> resultList;
-    private byte[] result;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        tlvHeader = new TlvHeader();
-        ipInterfaceAddressTlv = new IpInterfaceAddressTlv(tlvHeader);
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tlvHeader = null;
-        ipInterfaceAddressTlv = null;
-    }
-
-    /**
-     * Tests addInterfaceAddress() method.
-     */
-    @Test
-    public void testAddInterfaceAddres() throws Exception {
-        ipInterfaceAddressTlv.addInterfaceAddres(ip4Address);
-        resultList = ipInterfaceAddressTlv.interfaceAddress();
-        assertThat(resultList.size(), is(1));
-
-    }
-
-    /**
-     * Tests interfaceAddress() getter method.
-     */
-    @Test
-    public void testInterfaceAddress() throws Exception {
-        ipInterfaceAddressTlv.addInterfaceAddres(ip4Address);
-        resultList = ipInterfaceAddressTlv.interfaceAddress();
-        assertThat(resultList.size(), is(1));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        ipInterfaceAddressTlv.readFrom(channelBuffer);
-        assertThat(ipInterfaceAddressTlv.interfaceAddress().size(), is(1));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        ipInterfaceAddressTlv.readFrom(channelBuffer);
-        result = ipInterfaceAddressTlv.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString() method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(ipInterfaceAddressTlv.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInternalReachabilityTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInternalReachabilityTlvTest.java
deleted file mode 100644
index 30130c6..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInternalReachabilityTlvTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for IP InternalReachabilityTlv.
- */
-public class IpInternalReachabilityTlvTest {
-    private final byte[] tlv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-    private TlvHeader tlvHeader;
-    private IpInternalReachabilityTlv ipInternalReachabilityTlv;
-    private MetricOfInternalReachability metricOfInternalReachability;
-    private byte[] result;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        tlvHeader = new TlvHeader();
-        ipInternalReachabilityTlv = new IpInternalReachabilityTlv(tlvHeader);
-        metricOfInternalReachability = new MetricOfInternalReachability();
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tlvHeader = null;
-        ipInternalReachabilityTlv = null;
-    }
-
-    /**
-     * Tests addInternalReachabilityMetric() method.
-     */
-    @Test
-    public void testAddInternalReachabilityMetric() throws Exception {
-        ipInternalReachabilityTlv.addInternalReachabilityMetric(metricOfInternalReachability);
-        assertThat(ipInternalReachabilityTlv, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        ipInternalReachabilityTlv.readFrom(channelBuffer);
-        assertThat(ipInternalReachabilityTlv, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        ipInternalReachabilityTlv.readFrom(channelBuffer);
-        result = ipInternalReachabilityTlv.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString() method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(ipInternalReachabilityTlv.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsReachabilityTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsReachabilityTlvTest.java
deleted file mode 100644
index d271926..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsReachabilityTlvTest.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for IS ReachabilityTlv.
- */
-public class IsReachabilityTlvTest {
-    private final byte[] tlv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-    private TlvHeader tlvHeader;
-    private IsReachabilityTlv isReachabilityTlv;
-    private MetricsOfReachability metricsOfReachability;
-    private int resultInt;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        tlvHeader = new TlvHeader();
-        isReachabilityTlv = new IsReachabilityTlv(tlvHeader);
-        metricsOfReachability = new MetricsOfReachability();
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tlvHeader = null;
-        isReachabilityTlv = null;
-    }
-
-    /**
-     * Tests reserved() getter method.
-     */
-    @Test
-    public void testReserved() throws Exception {
-        isReachabilityTlv.setReserved(10);
-        resultInt = isReachabilityTlv.reserved();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests reserved() setter method.
-     */
-    @Test
-    public void testSetReserved() throws Exception {
-        isReachabilityTlv.setReserved(10);
-        resultInt = isReachabilityTlv.reserved();
-        assertThat(resultInt, is(10));
-    }
-
-    /**
-     * Tests addMeticsOfReachability() getter method.
-     */
-    @Test
-    public void testAddMeticsOfReachability() throws Exception {
-        isReachabilityTlv.addMeticsOfReachability(metricsOfReachability);
-        assertThat(isReachabilityTlv, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        isReachabilityTlv.readFrom(channelBuffer);
-        assertThat(isReachabilityTlv, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        isReachabilityTlv.readFrom(channelBuffer);
-        result = isReachabilityTlv.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString() method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(isReachabilityTlv.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsisNeighborTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsisNeighborTlvTest.java
deleted file mode 100644
index a430c1c..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsisNeighborTlvTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.MacAddress;
-
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for ISIS NeighborTLV.
- */
-public class IsisNeighborTlvTest {
-    private final MacAddress macAddress = MacAddress.valueOf("a4:23:05:00:00:00");
-    private final byte[] tlv = {0, 0, 0, 0, 0, 0};
-    private TlvHeader tlvHeader;
-    private IsisNeighborTlv isisNeighborTlv;
-    private List<MacAddress> resultList;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        tlvHeader = new TlvHeader();
-        isisNeighborTlv = new IsisNeighborTlv(tlvHeader);
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tlvHeader = null;
-        isisNeighborTlv = null;
-    }
-
-    /**
-     * Tests addNeighbor() getter method.
-     */
-    @Test
-    public void testAddNeighbor() throws Exception {
-        isisNeighborTlv.addNeighbor(macAddress);
-        resultList = isisNeighborTlv.neighbor();
-        assertThat(resultList.size(), is(1));
-
-    }
-
-    /**
-     * Tests neighbor() setter method.
-     */
-    @Test
-    public void testNeighbor() throws Exception {
-        isisNeighborTlv.addNeighbor(macAddress);
-        resultList = isisNeighborTlv.neighbor();
-        assertThat(resultList.size(), is(1));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        isisNeighborTlv.readFrom(channelBuffer);
-        assertThat(isisNeighborTlv.neighbor().size(), is(1));
-    }
-
-    /**
-     * Tests asBytes() getter method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        isisNeighborTlv.readFrom(channelBuffer);
-        result = isisNeighborTlv.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString() method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(isisNeighborTlv.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntriesTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntriesTlvTest.java
deleted file mode 100644
index 2daece4..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntriesTlvTest.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for LspEntriesTlv.
- */
-public class LspEntriesTlvTest {
-
-    private final byte[] entry = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-    private LspEntriesTlv lspEntriesTlv;
-    private TlvHeader tlvHeader;
-    private List<LspEntry> lspEntries = new ArrayList();
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        tlvHeader = new TlvHeader();
-        lspEntriesTlv = new LspEntriesTlv(tlvHeader);
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tlvHeader = null;
-        lspEntriesTlv = null;
-        lspEntries.clear();
-    }
-
-    /**
-     * Tests lspEntry() getter method.
-     */
-    @Test
-    public void testLspEntry() throws Exception {
-        lspEntriesTlv.addLspEntry(new LspEntry());
-        assertThat(lspEntriesTlv.lspEntry().size(), is(1));
-    }
-
-    /**
-     * Tests lspEntry() add method.
-     */
-    @Test
-    public void testAddLspEntry() throws Exception {
-        lspEntriesTlv.addLspEntry(new LspEntry());
-        assertThat(lspEntriesTlv.lspEntry().size(), is(1));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(entry);
-        lspEntriesTlv.readFrom(channelBuffer);
-        lspEntries = lspEntriesTlv.lspEntry();
-        assertThat(lspEntriesTlv.lspEntry().size(), is(1));
-    }
-
-    /**
-     * Tests asBytes()  method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(entry);
-        lspEntriesTlv.readFrom(channelBuffer);
-        lspEntriesTlv.asBytes();
-    }
-
-    /**
-     * Tests toString()  method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(lspEntriesTlv.toString(), is(notNullValue()));
-    }
-
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntryTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntryTest.java
deleted file mode 100644
index ba24d82..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntryTest.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for LspEntry.
- */
-public class LspEntryTest {
-
-    private final String lspId = "10.10.10.10";
-    private final byte[] entry = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-    private LspEntry lspEntry;
-    private int result;
-    private String result2;
-    private ChannelBuffer channelBuffer;
-    private byte[] result3;
-
-    @Before
-    public void setUp() throws Exception {
-        lspEntry = new LspEntry();
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        lspEntry = null;
-        channelBuffer = null;
-    }
-
-    /**
-     * Tests lspSequenceNumber() getter method.
-     */
-    @Test
-    public void testLspSequenceNumber() throws Exception {
-        lspEntry.setLspSequenceNumber(0);
-        result = lspEntry.lspSequenceNumber();
-        assertThat(result, is(0));
-    }
-
-    /**
-     * Tests lspSequenceNumber() setter method.
-     */
-    @Test
-    public void testSetLspSequenceNumber() throws Exception {
-        lspEntry.setLspSequenceNumber(0);
-        result = lspEntry.lspSequenceNumber();
-        assertThat(result, is(0));
-    }
-
-    /**
-     * Tests lspChecksum() getter method.
-     */
-    @Test
-    public void testLspChecksum() throws Exception {
-        lspEntry.setLspChecksum(0);
-        result = lspEntry.lspChecksum();
-        assertThat(result, is(0));
-    }
-
-    /**
-     * Tests lspChecksum() setter method.
-     */
-    @Test
-    public void testSetLspChecksum() throws Exception {
-        lspEntry.setLspChecksum(0);
-        result = lspEntry.lspChecksum();
-        assertThat(result, is(0));
-    }
-
-    /**
-     * Tests remainingTime() getter method.
-     */
-    @Test
-    public void testRemainingTime() throws Exception {
-        lspEntry.setRemainingTime(0);
-        result = lspEntry.remainingTime();
-        assertThat(result, is(0));
-    }
-
-    /**
-     * Tests remainingTime() setter method.
-     */
-    @Test
-    public void testSetRemainingTime() throws Exception {
-        lspEntry.setRemainingTime(0);
-        result = lspEntry.remainingTime();
-        assertThat(result, is(0));
-    }
-
-    /**
-     * Tests lspId() getter method.
-     */
-    @Test
-    public void testLspId() throws Exception {
-        lspEntry.setLspId(lspId);
-        result2 = lspEntry.lspId();
-        assertThat(result2, is("10.10.10.10"));
-    }
-
-    /**
-     * Tests lspId() getter method.
-     */
-    @Test
-    public void testSetLspId() throws Exception {
-        lspEntry.setLspId(lspId);
-        result2 = lspEntry.lspId();
-        assertThat(result2, is("10.10.10.10"));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(entry);
-        lspEntry.readFrom(channelBuffer);
-        assertThat(lspEntry, is(notNullValue()));
-    }
-
-    /**
-     * Tests lspEntryAsBytes() method.
-     */
-    @Test
-    public void testLspEntryAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(entry);
-        lspEntry.readFrom(channelBuffer);
-        result3 = lspEntry.lspEntryAsBytes();
-        assertThat(lspEntry, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString() method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(lspEntry.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricOfInternalReachabilityTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricOfInternalReachabilityTest.java
deleted file mode 100644
index 3ece0e0..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricOfInternalReachabilityTest.java
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for MetricOfInternalReachability.
- */
-public class MetricOfInternalReachabilityTest {
-
-    private final Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10");
-    private final byte[] internalReachability = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-    private MetricOfInternalReachability reachability;
-    private Ip4Address result;
-    private boolean result1;
-    private byte result2;
-    private ChannelBuffer channelBuffer;
-    private byte[] result3;
-
-    @Before
-    public void setUp() throws Exception {
-        reachability = new MetricOfInternalReachability();
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        reachability = null;
-        result = null;
-        result1 = false;
-    }
-
-    /**
-     * Tests getIpAddress() getter method.
-     */
-    @Test
-    public void testGetIpAddress() throws Exception {
-        reachability.setIpAddress(ip4Address);
-        result = reachability.getIpAddress();
-        assertThat(result, is(ip4Address));
-    }
-
-    /**
-     * Tests setIpAddress() setter method.
-     */
-    @Test
-    public void testSetIpAddress() throws Exception {
-        reachability.setIpAddress(ip4Address);
-        result = reachability.getIpAddress();
-        assertThat(result, is(ip4Address));
-    }
-
-    /**
-     * Tests getSubnetAddress() getter method.
-     */
-    @Test
-    public void testGetSubnetAddres() throws Exception {
-        reachability.setSubnetAddress(ip4Address);
-        result = reachability.getSubnetAddress();
-        assertThat(result, is(ip4Address));
-    }
-
-    /**
-     * Tests setSubnetAddress() setter method.
-     */
-    @Test
-    public void testSetSubnetAddres() throws Exception {
-        reachability.setSubnetAddress(ip4Address);
-        result = reachability.getSubnetAddress();
-        assertThat(result, is(ip4Address));
-    }
-
-    /**
-     * Tests isErrorIsInternal() getter method.
-     */
-    @Test
-    public void testIsErrorIsInternal() throws Exception {
-        reachability.setErrorIsInternal(true);
-        result1 = reachability.isErrorIsInternal();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isErrorIsInternal() setter method.
-     */
-    @Test
-    public void testSetErrorIsInternal() throws Exception {
-        reachability.setErrorIsInternal(true);
-        result1 = reachability.isErrorIsInternal();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isExpenseIsInternal() getter method.
-     */
-    @Test
-    public void testIsExpenseIsInternal() throws Exception {
-        reachability.setExpenseIsInternal(true);
-        result1 = reachability.isExpenseIsInternal();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isExpenseIsInternal() setter method.
-     */
-    @Test
-    public void testSetExpenseIsInternal() throws Exception {
-        reachability.setExpenseIsInternal(true);
-        result1 = reachability.isExpenseIsInternal();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isDelayIsInternal() getter method.
-     */
-    @Test
-    public void testIsDelayIsInternal() throws Exception {
-        reachability.setDelayIsInternal(true);
-        result1 = reachability.isDelayIsInternal();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isDelayIsInternal() setter method.
-     */
-    @Test
-    public void testSetDelayIsInternal() throws Exception {
-        reachability.setDelayIsInternal(true);
-        result1 = reachability.isDelayIsInternal();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isDefaultDistributionDown() getter method.
-     */
-    @Test
-    public void testIsDefaultDistributionDown() throws Exception {
-        reachability.setDefaultDistributionDown(true);
-        result1 = reachability.isDefaultDistributionDown();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isDefaultDistributionDown() setter method.
-     */
-    @Test
-    public void testSetDefaultDistributionDown() throws Exception {
-        reachability.setDefaultDistributionDown(true);
-        result1 = reachability.isDefaultDistributionDown();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isDefaultIsInternal() getter method.
-     */
-    @Test
-    public void testIsDefaultIsInternal() throws Exception {
-        reachability.setDefaultIsInternal(true);
-        result1 = reachability.isDefaultIsInternal();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isDefaultIsInternal() setter method.
-     */
-    @Test
-    public void testSetDefaultIsInternal() throws Exception {
-        reachability.setDefaultIsInternal(true);
-        result1 = reachability.isDefaultIsInternal();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isErrorMetricSupported() getter method.
-     */
-    @Test
-    public void testIsErrorMetricSupported() throws Exception {
-        reachability.setErrorMetricSupported(true);
-        result1 = reachability.isErrorMetricSupported();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isErrorMetricSupported() setter method.
-     */
-    @Test
-    public void testSetErrorMetricSupported() throws Exception {
-        reachability.setErrorMetricSupported(true);
-        result1 = reachability.isErrorMetricSupported();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isExpenseMetricSupported() setter method.
-     */
-    @Test
-    public void testIsExpenseMetricSupported() throws Exception {
-        reachability.setExpenseMetricSupported(true);
-        result1 = reachability.isExpenseMetricSupported();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isExpenseMetricSupported() setter method.
-     */
-    @Test
-    public void testSetExpenseMetricSupported() throws Exception {
-        reachability.setExpenseMetricSupported(true);
-        result1 = reachability.isExpenseMetricSupported();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isDelayMetricSupported() getter method.
-     */
-    @Test
-    public void testIsDelayMetricSupported() throws Exception {
-        reachability.setDelayMetricSupported(true);
-        result1 = reachability.isDelayMetricSupported();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isDelayMetricSupported() setter method.
-     */
-    @Test
-    public void testSetDelayMetricSupported() throws Exception {
-        reachability.setDelayMetricSupported(true);
-        result1 = reachability.isDelayMetricSupported();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests errorMetric() getter method.
-     */
-    @Test
-    public void testErrorMetric() throws Exception {
-        reachability.setErrorMetric((byte) 0);
-        result2 = reachability.errorMetric();
-        assertThat(result2, is((byte) 0));
-    }
-
-    /**
-     * Tests errorMetric() setter method.
-     */
-    @Test
-    public void testSetErrorMetric() throws Exception {
-        reachability.setErrorMetric((byte) 0);
-        result2 = reachability.errorMetric();
-        assertThat(result2, is((byte) 0));
-    }
-
-    /**
-     * Tests delayMetric() getter method.
-     */
-    @Test
-    public void testDelayMetric() throws Exception {
-        reachability.setDelayMetric((byte) 0);
-        result2 = reachability.delayMetric();
-        assertThat(result2, is((byte) 0));
-    }
-
-    /**
-     * Tests delayMetric() setter method.
-     */
-    @Test
-    public void testSetDelayMetric() throws Exception {
-        reachability.setDelayMetric((byte) 0);
-        result2 = reachability.delayMetric();
-        assertThat(result2, is((byte) 0));
-    }
-
-    /**
-     * Tests defaultMetric() getter method.
-     */
-    @Test
-    public void testDefaultMetric() throws Exception {
-        reachability.setDefaultMetric((byte) 0);
-        result2 = reachability.defaultMetric();
-        assertThat(result2, is((byte) 0));
-    }
-
-    /**
-     * Tests defaultMetric() setter method.
-     */
-    @Test
-    public void testSetDefaultMetric() throws Exception {
-        reachability.setDefaultMetric((byte) 0);
-        result2 = reachability.defaultMetric();
-        assertThat(result2, is((byte) 0));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(internalReachability);
-        reachability.readFrom(channelBuffer);
-        assertThat(reachability, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(internalReachability);
-        reachability.readFrom(channelBuffer);
-        result3 = reachability.asBytes();
-        assertThat(result3, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString() method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(reachability.toString(), is(notNullValue()));
-    }
-}
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricsOfReachabilityTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricsOfReachabilityTest.java
deleted file mode 100644
index 080c3c5..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricsOfReachabilityTest.java
+++ /dev/null
@@ -1,326 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for MetricsOfReachability.
- */
-public class MetricsOfReachabilityTest {
-    private final Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10");
-    private final byte[] metricReachability = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-    private MetricsOfReachability reachability;
-    private String neighborId = "2929.2929.2929";
-    private Ip4Address result;
-    private boolean result1;
-    private byte result2;
-    private ChannelBuffer channelBuffer;
-    private byte[] result3;
-    private String result4;
-
-    @Before
-    public void setUp() throws Exception {
-        reachability = new MetricsOfReachability();
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-        result1 = false;
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        reachability = null;
-        result1 = false;
-        result3 = null;
-        channelBuffer = null;
-    }
-
-    /**
-     * Tests isDelayIsInternal() getter method.
-     */
-    @Test
-    public void testIsDelayIsInternal() throws Exception {
-        reachability.setDelayIsInternal(true);
-        result1 = reachability.isDelayIsInternal();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isDelayIsInternal() setter method.
-     */
-    @Test
-    public void testSetDelayIsInternal() throws Exception {
-        reachability.setDelayIsInternal(true);
-        result1 = reachability.isDelayIsInternal();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isExpenseIsInternal() getter method.
-     */
-    @Test
-    public void testIsExpenseIsInternal() throws Exception {
-        reachability.setExpenseIsInternal(true);
-        result1 = reachability.isExpenseIsInternal();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isExpenseIsInternal() setter method.
-     */
-    @Test
-    public void testSetExpenseIsInternal() throws Exception {
-        reachability.setExpenseIsInternal(true);
-        result1 = reachability.isExpenseIsInternal();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isErrorIsInternal() getter method.
-     */
-    @Test
-    public void testIsErrorIsInternal() throws Exception {
-        reachability.setErrorIsInternal(true);
-        result1 = reachability.isErrorIsInternal();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isErrorIsInternal() setter method.
-     */
-    @Test
-    public void testSetErrorIsInternal() throws Exception {
-        reachability.setErrorIsInternal(true);
-        result1 = reachability.isErrorIsInternal();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isDefaultIsInternal() getter method.
-     */
-    @Test
-    public void testIsDefaultIsInternal() throws Exception {
-        reachability.setDefaultIsInternal(true);
-        result1 = reachability.isDefaultIsInternal();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isDefaultIsInternal() setter method.
-     */
-    @Test
-    public void testSetDefaultIsInternal() throws Exception {
-        reachability.setDefaultIsInternal(true);
-        result1 = reachability.isDefaultIsInternal();
-        assertThat(result1, is(true));
-    }
-
-    @Test
-    public void testIsDelayMetricSupported() throws Exception {
-        reachability.setDelayMetricSupported(true);
-        result1 = reachability.isDelayMetricSupported();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isDelayMetricSupported() setter method.
-     */
-    @Test
-    public void testSetDelayMetricSupported() throws Exception {
-        reachability.setDelayMetricSupported(true);
-        result1 = reachability.isDelayMetricSupported();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isExpenseMetricSupported() getter method.
-     */
-    @Test
-    public void testIsExpenseMetricSupported() throws Exception {
-        reachability.setExpenseMetricSupported(true);
-        result1 = reachability.isExpenseMetricSupported();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isExpenseMetricSupported() setter method.
-     */
-    @Test
-    public void testSetExpenseMetricSupported() throws Exception {
-        reachability.setExpenseMetricSupported(true);
-        result1 = reachability.isExpenseMetricSupported();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isErrorMetricSupported() getter method.
-     */
-    @Test
-    public void testIsErrorMetricSupported() throws Exception {
-        reachability.setErrorMetricSupported(true);
-        result1 = reachability.isErrorMetricSupported();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests isErrorMetricSupported() setter method.
-     */
-    @Test
-    public void testSetErrorMetricSupported() throws Exception {
-        reachability.setErrorMetricSupported(true);
-        result1 = reachability.isErrorMetricSupported();
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests neighborId() getter method.
-     */
-    @Test
-    public void testNeighborId() throws Exception {
-        reachability.setNeighborId(neighborId);
-        result4 = reachability.neighborId();
-        assertThat(result4, is(neighborId));
-    }
-
-    /**
-     * Tests neighborId() setter method.
-     */
-    @Test
-    public void testSetNeighborId() throws Exception {
-        reachability.setNeighborId(neighborId);
-        result4 = reachability.neighborId();
-        assertThat(result4, is(neighborId));
-    }
-
-    /**
-     * Tests defaultMetric() getter method.
-     */
-    @Test
-    public void testDefaultMetric() throws Exception {
-        reachability.setDefaultMetric((byte) 0);
-        result2 = reachability.defaultMetric();
-        assertThat(result2, is((byte) 0));
-    }
-
-    /**
-     * Tests defaultMetric() setter method.
-     */
-    @Test
-    public void testSetDefaultMetric() throws Exception {
-        reachability.setDefaultMetric((byte) 0);
-        result2 = reachability.defaultMetric();
-        assertThat(result2, is((byte) 0));
-    }
-
-    /**
-     * Tests delayMetric() getter method.
-     */
-    @Test
-    public void testDelayMetric() throws Exception {
-        reachability.setDelayMetric((byte) 0);
-        result2 = reachability.delayMetric();
-        assertThat(result2, is((byte) 0));
-    }
-
-    /**
-     * Tests delayMetric() setter method.
-     */
-    @Test
-    public void testSetDelayMetric() throws Exception {
-        reachability.setDelayMetric((byte) 0);
-        result2 = reachability.delayMetric();
-        assertThat(result2, is((byte) 0));
-    }
-
-    /**
-     * Tests expenseMetric() getter method.
-     */
-    @Test
-    public void testExpenseMetric() throws Exception {
-        reachability.setExpenseMetric((byte) 0);
-        result2 = reachability.expenseMetric();
-        assertThat(result2, is((byte) 0));
-    }
-
-    /**
-     * Tests expenseMetric() setter method.
-     */
-    @Test
-    public void testSetExpenseMetric() throws Exception {
-        reachability.setExpenseMetric((byte) 0);
-        result2 = reachability.expenseMetric();
-        assertThat(result2, is((byte) 0));
-    }
-
-    /**
-     * Tests errorMetric() getter method.
-     */
-    @Test
-    public void testErrorMetric() throws Exception {
-        reachability.setErrorMetric((byte) 0);
-        result2 = reachability.errorMetric();
-        assertThat(result2, is((byte) 0));
-    }
-
-    /**
-     * Tests errorMetric() setter method.
-     */
-    @Test
-    public void testSetErrorMetric() throws Exception {
-        reachability.setErrorMetric((byte) 0);
-        result2 = reachability.errorMetric();
-        assertThat(result2, is((byte) 0));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(metricReachability);
-        reachability.readFrom(channelBuffer);
-        assertThat(reachability, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(metricReachability);
-        reachability.readFrom(channelBuffer);
-        result3 = reachability.asBytes();
-        assertThat(result3, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString() method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(reachability.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIsTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIsTest.java
deleted file mode 100644
index 72c93c0..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIsTest.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for NeighborForExtendedIs.
- *
- * Here we have passed a byte array containing data for 2 neighbors along with
- * their Sub TLVs. The test case checks whether the code is able to parse the Sub TLVs
- * for each neighbor or not. Along with this it also checks for neighbor id and metric
- * assigned to each neighbor.
- */
-public class NeighborForExtendedIsTest {
-    private final byte[] tlv = {
-            (byte) 0x10, (byte) 0x00, (byte) 0x10, (byte) 0x00, (byte) 0x10, (byte) 0x02, (byte) 0x00, (byte) 0x00,
-            (byte) 0x00, (byte) 0x0a, (byte) 0x3f, (byte) 0x06, (byte) 0x04, (byte) 0x14, (byte) 0x14, (byte) 0x14,
-            (byte) 0xbe, (byte) 0x08, (byte) 0x04, (byte) 0x14, (byte) 0x14, (byte) 0x14, (byte) 0xd1, (byte) 0x09,
-            (byte) 0x04, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x0a, (byte) 0x04, (byte) 0x49,
-            (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x0b, (byte) 0x20, (byte) 0x49, (byte) 0x98, (byte) 0x96,
-            (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96,
-            (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96,
-            (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96,
-            (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x12, (byte) 0x03, (byte) 0x00,
-            (byte) 0x00, (byte) 0x00, (byte) 0x10, (byte) 0x00, (byte) 0x10, (byte) 0x00, (byte) 0x10, (byte) 0x01,
-            (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x0a, (byte) 0x3f, (byte) 0x06, (byte) 0x04, (byte) 0x1e,
-            (byte) 0x1e, (byte) 0x1e, (byte) 0xce, (byte) 0x08, (byte) 0x04, (byte) 0x1e, (byte) 0x1e, (byte) 0x1e,
-            (byte) 0xa9, (byte) 0x09, (byte) 0x04, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x0a,
-            (byte) 0x04, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x0b, (byte) 0x20, (byte) 0x49,
-            (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49,
-            (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49,
-            (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49,
-            (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x12,
-            (byte) 0x03, (byte) 0x00, (byte) 0x00, (byte) 0x00
-    };
-
-    //tlv2 bytes are for testing the else part of readFrom() method
-    private final byte[] tlv2 = {
-            (byte) 0x10, (byte) 0x00, (byte) 0x10, (byte) 0x00, (byte) 0x10, (byte) 0x02, (byte) 0x00, (byte) 0x00,
-            (byte) 0x00, (byte) 0x0a, (byte) 0x06, (byte) 0x2D, (byte) 0x04, (byte) 0x14, (byte) 0x14, (byte) 0x14,
-            (byte) 0xbe, (byte) 0x2D, (byte) 0xd1, (byte) 0x14, (byte) 0x14, (byte) 0x14, (byte) 0xd1, (byte) 0x09
-    };
-    private final String neighborId1 = "1000.1000.1002.00";
-    private final String neighborId2 = "1000.1000.1001.00";
-    private final int metric = 10;
-    private final int subTlvLength = 6;
-    private NeighborForExtendedIs neighborForExtendedIs;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        neighborForExtendedIs = new NeighborForExtendedIs();
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        neighborForExtendedIs = null;
-        channelBuffer = null;
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        neighborForExtendedIs.readFrom(channelBuffer);
-        assertThat(neighborForExtendedIs.teSubTlv().size(), is(subTlvLength));
-        assertThat(neighborForExtendedIs.neighborId(), is(neighborId1));
-        assertThat(neighborForExtendedIs.metric(), is(metric));
-
-        neighborForExtendedIs = new NeighborForExtendedIs();
-        neighborForExtendedIs.readFrom(channelBuffer);
-        assertThat(neighborForExtendedIs.teSubTlv().size(), is(subTlvLength));
-        assertThat(neighborForExtendedIs.neighborId(), is(neighborId2));
-        assertThat(neighborForExtendedIs.metric(), is(metric));
-    }
-
-    /**
-     * Tests else condition of readFrom() method.
-     */
-    @Test
-    public void testElsePartOfReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv2);
-        neighborForExtendedIs = new NeighborForExtendedIs();
-        neighborForExtendedIs.readFrom(channelBuffer);
-        assertThat(neighborForExtendedIs.neighborId(), is(neighborId1));
-        assertThat(neighborForExtendedIs.metric(), is(metric));
-    }
-}
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/PaddingTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/PaddingTlvTest.java
deleted file mode 100644
index 04e87c8..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/PaddingTlvTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for PaddingTlv.
- */
-public class PaddingTlvTest {
-
-    private final byte[] tlv = {0, 0, 0, 0, 0, 0, 0};
-    private PaddingTlv paddingTlv;
-    private TlvHeader tlvHeader;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        tlvHeader = new TlvHeader();
-        paddingTlv = new PaddingTlv(tlvHeader);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        paddingTlv = null;
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        paddingTlv.readFrom(channelBuffer);
-        assertThat(paddingTlv, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        paddingTlv.readFrom(channelBuffer);
-        result = paddingTlv.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString() getter method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(paddingTlv.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/ProtocolSupportedTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/ProtocolSupportedTlvTest.java
deleted file mode 100644
index 962cf0c..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/ProtocolSupportedTlvTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.List;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for ProtocolSupportedTlv.
- */
-public class ProtocolSupportedTlvTest {
-    private final byte[] tlv = {0};
-    private ProtocolSupportedTlv protocolSupportedTlv;
-    private TlvHeader tlvHeader;
-    private List<Byte> supported;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        tlvHeader = new TlvHeader();
-        protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tlvHeader = null;
-        protocolSupportedTlv = null;
-        channelBuffer = null;
-    }
-
-    /**
-     * Tests addProtocolSupported() method.
-     */
-    @Test
-    public void testAddProtocolSupported() throws Exception {
-        protocolSupportedTlv.addProtocolSupported((byte) 1);
-        supported = protocolSupportedTlv.protocolSupported();
-        assertThat(supported.size(), is(1));
-    }
-
-    /**
-     * Tests addProtocolSupported() getter method.
-     */
-    @Test
-    public void testProtocolSupported() throws Exception {
-        protocolSupportedTlv.addProtocolSupported((byte) 1);
-        supported = protocolSupportedTlv.protocolSupported();
-        assertThat(supported.size(), is(1));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        protocolSupportedTlv.readFrom(channelBuffer);
-        supported = protocolSupportedTlv.protocolSupported();
-        assertThat(supported.size(), is(1));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        protocolSupportedTlv.readFrom(channelBuffer);
-        result = protocolSupportedTlv.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests toString() method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(protocolSupportedTlv.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvFinderTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvFinderTest.java
deleted file mode 100644
index bd9a443..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvFinderTest.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.instanceOf;
-
-/**
- * Unit test class for TlvFinder.
- */
-public class TlvFinderTest {
-
-    private final byte[] tlv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-    private final byte[] tlv1 = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-    private TlvFinder tlvFinder;
-    private TlvHeader tlvHeader;
-    private ChannelBuffer channelBuffer;
-    private IsisTlv isisTlv;
-
-    @Before
-    public void setUp() throws Exception {
-        tlvFinder = new TlvFinder();
-        tlvHeader = new TlvHeader();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tlvFinder = null;
-        isisTlv = null;
-    }
-
-    /**
-     * Tests IsisTlv() getter method.
-     */
-    @Test
-    public void testIsisTlv() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-
-        tlvHeader.setTlvType(TlvType.AREAADDRESS.value());
-        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
-        assertThat(isisTlv, instanceOf(AreaAddressTlv.class));
-
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        tlvHeader.setTlvType(TlvType.HOSTNAME.value());
-        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
-        assertThat(isisTlv, instanceOf(HostNameTlv.class));
-
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        tlvHeader.setTlvType(TlvType.IDRPINFORMATION.value());
-        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
-        assertThat(isisTlv, instanceOf(IdrpInformationTlv.class));
-
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        tlvHeader.setTlvType(TlvType.IPEXTENDEDREACHABILITY.value());
-        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
-        assertThat(isisTlv, instanceOf(IpExtendedReachabilityTlv.class));
-
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        tlvHeader.setTlvType(TlvType.IPINTERFACEADDRESS.value());
-        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
-        assertThat(isisTlv, instanceOf(IpInterfaceAddressTlv.class));
-
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        tlvHeader.setTlvType(TlvType.IPINTERNALREACHABILITY.value());
-        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
-        assertThat(isisTlv, instanceOf(IpInternalReachabilityTlv.class));
-
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value());
-        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
-        assertThat(isisTlv, instanceOf(ProtocolSupportedTlv.class));
-
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        tlvHeader.setTlvType(TlvType.ISREACHABILITY.value());
-        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
-        assertThat(isisTlv, instanceOf(IsReachabilityTlv.class));
-
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        tlvHeader.setTlvType(TlvType.ISNEIGHBORS.value());
-        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
-        assertThat(isisTlv, instanceOf(IsisNeighborTlv.class));
-
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        tlvHeader.setTlvType(TlvType.LSPENTRY.value());
-        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
-        assertThat(isisTlv, instanceOf(LspEntriesTlv.class));
-
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
-        tlvHeader.setTlvType(TlvType.PADDING.value());
-        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
-        assertThat(isisTlv, instanceOf(PaddingTlv.class));
-
-        channelBuffer = ChannelBuffers.copiedBuffer(tlv1);
-        tlvHeader.setTlvType(TlvType.ADJACENCYSTATE.value());
-        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
-        assertThat(isisTlv, instanceOf(AdjacencyStateTlv.class));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvHeaderTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvHeaderTest.java
deleted file mode 100644
index 0e7fba2..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvHeaderTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for TlvHeader.
- */
-public class TlvHeaderTest {
-
-    private TlvHeader tlvHeader;
-    private int result;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        tlvHeader = new TlvHeader();
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tlvHeader = null;
-        channelBuffer = null;
-    }
-
-    /**
-     * Tests tlvLength() getter method.
-     */
-    @Test
-    public void testTlvLength() throws Exception {
-        tlvHeader.setTlvLength(1);
-        result = tlvHeader.tlvLength();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests tlvLength() setter method.
-     */
-    @Test
-    public void testSetTlvLength() throws Exception {
-        tlvHeader.setTlvLength(1);
-        result = tlvHeader.tlvLength();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests tlvType() getter method.
-     */
-    @Test
-    public void testTlvType() throws Exception {
-        tlvHeader.setTlvType(1);
-        result = tlvHeader.tlvType();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests tlvType() setter method.
-     */
-    @Test
-    public void testSetTlvType() throws Exception {
-        tlvHeader.setTlvType(1);
-        result = tlvHeader.tlvType();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        tlvHeader.readFrom(channelBuffer);
-        assertThat(tlvHeader, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() getter method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        assertThat(tlvHeader.asBytes(), is(nullValue()));
-    }
-
-    /**
-     * Tests tlvHeaderAsByteArray() method.
-     */
-    @Test
-    public void testTlvHeaderAsByteArray() throws Exception {
-        tlvHeader.setTlvLength(1);
-        tlvHeader.setTlvType(1);
-        assertThat(tlvHeader.tlvHeaderAsByteArray(), is(notNullValue()));
-        assertThat(tlvHeader.tlvType(), is(1));
-        assertThat(tlvHeader.tlvLength(), is(1));
-    }
-
-    /**
-     * Tests toString() getter method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(tlvHeader.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvsToBytesTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvsToBytesTest.java
deleted file mode 100644
index 7905eb5..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvsToBytesTest.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv;
-
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.MacAddress;
-import org.onosproject.isis.controller.IsisInterfaceState;
-import org.onosproject.isis.io.util.IsisConstants;
-
-import java.util.List;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for TlvsToBytes.
- */
-public class TlvsToBytesTest {
-    private final String areaAddress = "49";
-    private final Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10");
-    private final String systemName = "ROUTER";
-    private final String neighborId = "2929.2929.2929";
-    private List<Byte> tlv;
-    private MacAddress macAddress = MacAddress.valueOf("a4:23:05:00:00:00");
-    private String prefix = "192.168.7";
-
-    /**
-     * Tests TlvToBytes() method.
-     */
-    @Test
-    public void testTlvToBytes() throws Exception {
-        TlvHeader tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(TlvType.AREAADDRESS.value());
-        tlvHeader.setTlvLength(0);
-        AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader);
-        areaAddressTlv.addAddress(areaAddress);
-        tlv = TlvsToBytes.tlvToBytes(areaAddressTlv);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value());
-        tlvHeader.setTlvLength(0);
-        ProtocolSupportedTlv protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader);
-        protocolSupportedTlv.addProtocolSupported((byte) IsisConstants.PROTOCOLSUPPORTED);
-        tlv = TlvsToBytes.tlvToBytes(protocolSupportedTlv);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader.setTlvType(TlvType.IPINTERFACEADDRESS.value());
-        tlvHeader.setTlvLength(0);
-        IpInterfaceAddressTlv ipInterfaceAddressTlv = new IpInterfaceAddressTlv(tlvHeader);
-        ipInterfaceAddressTlv.addInterfaceAddres(ip4Address);
-        tlv = TlvsToBytes.tlvToBytes(ipInterfaceAddressTlv);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader.setTlvType(TlvType.HOSTNAME.value());
-        tlvHeader.setTlvLength(0);
-        HostNameTlv hostNameTlv = new HostNameTlv(tlvHeader);
-        hostNameTlv.setHostName(systemName);
-        tlv = TlvsToBytes.tlvToBytes(hostNameTlv);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader.setTlvType(TlvType.ISREACHABILITY.value());
-        tlvHeader.setTlvLength(0);
-        IsReachabilityTlv isReachabilityTlv = new IsReachabilityTlv(tlvHeader);
-        isReachabilityTlv.setReserved(0);
-        MetricsOfReachability metricsOfReachability = new MetricsOfReachability();
-        metricsOfReachability.setDefaultMetric((byte) 10);
-        metricsOfReachability.setDefaultIsInternal(true);
-        metricsOfReachability.setDelayMetric((byte) 10);
-        metricsOfReachability.setDelayIsInternal(true);
-        metricsOfReachability.setDelayMetricSupported(true);
-        metricsOfReachability.setExpenseMetric((byte) 10);
-        metricsOfReachability.setExpenseIsInternal(true);
-        metricsOfReachability.setExpenseMetricSupported(true);
-        metricsOfReachability.setErrorMetric((byte) 10);
-        metricsOfReachability.setErrorIsInternal(true);
-        metricsOfReachability.setErrorMetricSupported(true);
-        metricsOfReachability.setNeighborId(neighborId);
-        isReachabilityTlv.addMeticsOfReachability(metricsOfReachability);
-        tlv = TlvsToBytes.tlvToBytes(isReachabilityTlv);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader.setTlvType(TlvType.IPINTERNALREACHABILITY.value());
-        tlvHeader.setTlvLength(0);
-        IpInternalReachabilityTlv ipInterReacTlv = new IpInternalReachabilityTlv(tlvHeader);
-        MetricOfInternalReachability metricOfIntRea = new MetricOfInternalReachability();
-        metricOfIntRea.setDefaultMetric((byte) 10);
-        metricOfIntRea.setDefaultIsInternal(true);
-        metricOfIntRea.setDefaultDistributionDown(true);
-        metricOfIntRea.setDelayMetric((byte) 0);
-        metricOfIntRea.setDelayMetricSupported(false);
-        metricOfIntRea.setDelayIsInternal(true);
-        metricOfIntRea.setExpenseMetric((byte) 0);
-        metricOfIntRea.setExpenseMetricSupported(false);
-        metricOfIntRea.setExpenseIsInternal(true);
-        metricOfIntRea.setErrorMetric((byte) 0);
-        metricOfIntRea.setErrorMetricSupported(false);
-        metricOfIntRea.setExpenseIsInternal(true);
-        metricOfIntRea.setIpAddress(ip4Address);
-        metricOfIntRea.setSubnetAddress(ip4Address);
-        ipInterReacTlv.addInternalReachabilityMetric(metricOfIntRea);
-        tlv = TlvsToBytes.tlvToBytes(ipInterReacTlv);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader.setTlvType(TlvType.PADDING.value());
-        tlvHeader.setTlvLength(255);
-        PaddingTlv paddingTlv = new PaddingTlv(tlvHeader);
-        tlv = TlvsToBytes.tlvToBytes(paddingTlv);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader.setTlvType(TlvType.IPEXTENDEDREACHABILITY.value());
-        tlvHeader.setTlvLength(0);
-        IpExtendedReachabilityTlv extendedTlv = new IpExtendedReachabilityTlv(tlvHeader);
-        extendedTlv.setDown(false);
-        extendedTlv.setMetric(10);
-        extendedTlv.setPrefix(prefix);
-        extendedTlv.setPrefixLength(24);
-        extendedTlv.setSubTlvLength((byte) 0);
-        extendedTlv.setSubTlvPresence(false);
-        tlv = TlvsToBytes.tlvToBytes(extendedTlv);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader.setTlvType(TlvType.ADJACENCYSTATE.value());
-        tlvHeader.setTlvLength(0);
-        AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader);
-        adjacencyStateTlv.setAdjacencyType((byte) IsisInterfaceState.DOWN.value());
-        tlv = TlvsToBytes.tlvToBytes(adjacencyStateTlv);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader.setTlvType(TlvType.ISNEIGHBORS.value());
-        tlvHeader.setTlvLength(0);
-        IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader);
-        isisNeighborTlv.addNeighbor(macAddress);
-        tlv = TlvsToBytes.tlvToBytes(isisNeighborTlv);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader.setTlvType(TlvType.EXTENDEDISREACHABILITY.value());
-        tlvHeader.setTlvLength(0);
-        IsExtendedReachability reachability = new IsExtendedReachability(tlvHeader);
-        NeighborForExtendedIs forExtendedIs = new NeighborForExtendedIs();
-        forExtendedIs.setMetric(10);
-        forExtendedIs.setNeighborId(neighborId);
-        reachability.addNeighbor(forExtendedIs);
-        tlv = TlvsToBytes.tlvToBytes(reachability);
-        assertThat(tlv, is(notNullValue()));
-    }
-}
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroupTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroupTest.java
deleted file mode 100644
index f982419..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroupTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for AdministrativeGroup.
- */
-public class AdministrativeGroupTest {
-
-    private final byte[] packet = {0, 0, 0, 1};
-    private AdministrativeGroup administrativeGroup;
-    private ChannelBuffer channelBuffer;
-    private TlvHeader tlvHeader;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        administrativeGroup = new AdministrativeGroup(new TlvHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        administrativeGroup = null;
-        channelBuffer = null;
-        tlvHeader = null;
-    }
-
-    /**
-     * Tests administrativeGroup() getter method.
-     */
-    @Test
-    public void testGetAdministrativeGroup() throws Exception {
-        administrativeGroup.setAdministrativeGroup(1);
-        assertThat(administrativeGroup.administrativeGroup(), is(1));
-    }
-
-    /**
-     * Tests administrativeGroup() setter method.
-     */
-    @Test
-    public void testSetAdministrativeGroup() throws Exception {
-        administrativeGroup.setAdministrativeGroup(1);
-        assertThat(administrativeGroup.administrativeGroup(), is(1));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(9);
-        tlvHeader.setTlvLength(4);
-        administrativeGroup = new AdministrativeGroup(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        administrativeGroup.readFrom(channelBuffer);
-        assertThat(administrativeGroup.administrativeGroup(), is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result = administrativeGroup.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
-        result = administrativeGroup.tlvBodyAsBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(administrativeGroup.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddressTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddressTest.java
deleted file mode 100644
index caafa95..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddressTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for InterfaceIpAddress.
- */
-public class InterfaceIpAddressTest {
-    private final byte[] packet = {1, 1, 1, 1};
-    private final byte[] packet1 = {};
-    private NeighborIpAddress interfaceIpAddress;
-    private TlvHeader tlvHeader;
-    private Ip4Address ip4Address = Ip4Address.valueOf("1.1.1.1");
-    private byte[] result;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        interfaceIpAddress = new NeighborIpAddress(new TlvHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        interfaceIpAddress = null;
-        tlvHeader = null;
-        result = null;
-        channelBuffer = null;
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(interfaceIpAddress.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() {
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(3);
-        tlvHeader.setTlvLength(4);
-        interfaceIpAddress = new NeighborIpAddress(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        interfaceIpAddress.readFrom(channelBuffer);
-        assertThat(interfaceIpAddress, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom1() throws Exception {
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(3);
-        tlvHeader.setTlvLength(4);
-        interfaceIpAddress = new NeighborIpAddress(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
-        interfaceIpAddress.readFrom(channelBuffer);
-        assertThat(interfaceIpAddress, is(notNullValue()));
-    }
-
-
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidthTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidthTest.java
deleted file mode 100644
index 4f2dbda..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidthTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for MaximumBandwidth.
- */
-public class MaximumBandwidthTest {
-
-    private final byte[] packet = {0, 0, 0, 0};
-    private MaximumBandwidth maximumBandwidth;
-    private TlvHeader header;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        maximumBandwidth = new MaximumBandwidth(new TlvHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        maximumBandwidth = null;
-        header = null;
-        channelBuffer = null;
-        result = null;
-    }
-
-    /**
-     * Tests maximumBandwidth() setter method.
-     */
-    @Test
-    public void testSetMaximumBandwidth() throws Exception {
-        maximumBandwidth.setMaximumBandwidth(123456.00f);
-        assertThat(maximumBandwidth, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        header = new TlvHeader();
-        header.setTlvType(6);
-        header.setTlvLength(4);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        maximumBandwidth = new MaximumBandwidth(header);
-        maximumBandwidth.readFrom(channelBuffer);
-        assertThat(maximumBandwidth, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result = maximumBandwidth.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(maximumBandwidth.toString(), is(notNullValue()));
-    }
-}
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidthTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidthTest.java
deleted file mode 100644
index 524a772..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidthTest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for MaximumReservableBandwidth.
- */
-public class MaximumReservableBandwidthTest {
-
-    private final byte[] packet = {0, 0, 0, 0};
-    private MaximumReservableBandwidth maximumReservableBandwidth;
-    private TlvHeader header;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        maximumReservableBandwidth = new MaximumReservableBandwidth(new TlvHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        maximumReservableBandwidth = null;
-        header = null;
-        channelBuffer = null;
-        result = null;
-    }
-
-    /**
-     * Tests maximumBandwidth() setter method.
-     */
-    @Test
-    public void testSetMaximumBandwidth() throws Exception {
-        maximumReservableBandwidth.setMaximumBandwidth(123456.78f);
-        assertThat(maximumReservableBandwidth, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        header = new TlvHeader();
-        header.setTlvType(6);
-        header.setTlvLength(4);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        maximumReservableBandwidth = new MaximumReservableBandwidth(header);
-        maximumReservableBandwidth.readFrom(channelBuffer);
-        assertThat(maximumReservableBandwidth, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result = maximumReservableBandwidth.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
-        result = maximumReservableBandwidth.tlvBodyAsBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(maximumReservableBandwidth.toString(), is(notNullValue()));
-    }
-}
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinderTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinderTest.java
deleted file mode 100644
index 4b672d1..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinderTest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for SubTlvFinder.
- */
-public class SubTlvFinderTest {
-    private final byte[] packet1 = {0, 0, 0, 1};
-    private TlvHeader tlvHeader;
-    private ChannelBuffer channelBuffer;
-    private TrafficEngineeringSubTlv tlv;
-
-    @Before
-    public void setUp() throws Exception {
-        tlvHeader = new TlvHeader();
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tlvHeader = null;
-        channelBuffer = null;
-    }
-
-    @Test
-    public void testFindSubTlv() throws Exception {
-
-        tlvHeader.setTlvLength(4);
-        tlvHeader.setTlvType(SubTlvType.ADMINISTRATIVEGROUP.value());
-        AdministrativeGroup administrativeGroup = new AdministrativeGroup(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
-        tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvLength(4);
-        tlvHeader.setTlvType(SubTlvType.TRAFFICENGINEERINGMETRIC.value());
-        TrafficEngineeringMetric trafficEngineeringMetric = new TrafficEngineeringMetric(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
-        tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvLength(4);
-        tlvHeader.setTlvType(SubTlvType.MAXIMUMBANDWIDTH.value());
-        MaximumBandwidth maximumBandwidth = new MaximumBandwidth(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
-        tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvLength(4);
-        tlvHeader.setTlvType(SubTlvType.MAXIMUMRESERVABLEBANDWIDTH.value());
-        MaximumReservableBandwidth maximumReservableBandwidth = new MaximumReservableBandwidth(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
-        tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvLength(4);
-        tlvHeader.setTlvType(SubTlvType.UNRESERVEDBANDWIDTH.value());
-        UnreservedBandwidth unreservedBandwidth = new UnreservedBandwidth(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
-        tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvLength(4);
-        tlvHeader.setTlvType(SubTlvType.INTERFACEADDRESS.value());
-        InterfaceIpAddress ipInterfaceAddressTlv = new InterfaceIpAddress(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
-        tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer);
-        assertThat(tlv, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytesTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytesTest.java
deleted file mode 100644
index ae975bf..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytesTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-
-import java.util.List;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for SubTlvToBytes.
- */
-public class SubTlvToBytesTest {
-    private TlvHeader tlvHeader;
-    private ChannelBuffer channelBuffer;
-    private List<Byte> tlv;
-
-    @Before
-    public void setUp() throws Exception {
-        tlvHeader = new TlvHeader();
-        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tlvHeader = null;
-        channelBuffer = null;
-    }
-
-    @Test
-    public void testTlvToBytes() throws Exception {
-        tlvHeader.setTlvLength(4);
-        tlvHeader.setTlvType(9);
-        AdministrativeGroup administrativeGroup = new AdministrativeGroup(tlvHeader);
-        tlv = SubTlvToBytes.tlvToBytes(administrativeGroup);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvLength(4);
-        tlvHeader.setTlvType(5);
-        TrafficEngineeringMetric trafficEngineeringMetric = new TrafficEngineeringMetric(tlvHeader);
-        tlv = SubTlvToBytes.tlvToBytes(trafficEngineeringMetric);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvLength(4);
-        tlvHeader.setTlvType(6);
-        MaximumBandwidth maximumBandwidth = new MaximumBandwidth(tlvHeader);
-        tlv = SubTlvToBytes.tlvToBytes(maximumBandwidth);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvLength(4);
-        tlvHeader.setTlvType(7);
-        MaximumReservableBandwidth maximumReservableBandwidth = new MaximumReservableBandwidth(tlvHeader);
-        tlv = SubTlvToBytes.tlvToBytes(maximumReservableBandwidth);
-        assertThat(tlv, is(notNullValue()));
-
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvLength(4);
-        tlvHeader.setTlvType(8);
-        UnreservedBandwidth unreservedBandwidth = new UnreservedBandwidth(tlvHeader);
-        tlv = SubTlvToBytes.tlvToBytes(unreservedBandwidth);
-        assertThat(tlv, is(notNullValue()));
-    }
-}
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetricTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetricTest.java
deleted file mode 100644
index 358e5d4..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetricTest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-
-/**
- * Unit test class for TrafficEngineeringMetric.
- */
-public class TrafficEngineeringMetricTest {
-
-    private final byte[] packet = {0, 0, 1, 1};
-    private TrafficEngineeringMetric trafficEngineeringMetric;
-    private TlvHeader header;
-    private byte[] result;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        trafficEngineeringMetric = new TrafficEngineeringMetric(new TlvHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        trafficEngineeringMetric = null;
-        header = null;
-        result = null;
-        channelBuffer = null;
-    }
-
-    /**
-     * Tests trafficEngineeringMetric() setter method.
-     */
-    @Test
-    public void testSetTrafficEngineeringMetric() throws Exception {
-        trafficEngineeringMetric.setTrafficEngineeringMetric(123456789L);
-        assertThat(trafficEngineeringMetric, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        header = new TlvHeader();
-        header.setTlvLength(4);
-        header.setTlvType(5);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        trafficEngineeringMetric = new TrafficEngineeringMetric(header);
-        trafficEngineeringMetric.readFrom(channelBuffer);
-        assertThat(trafficEngineeringMetric, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result = trafficEngineeringMetric.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
-        result = trafficEngineeringMetric.tlvBodyAsBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(trafficEngineeringMetric.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidthTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidthTest.java
deleted file mode 100644
index 268e09f..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidthTest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.isispacket.tlv.subtlv;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for UnreservedBandwidth.
- */
-public class UnreservedBandwidthTest {
-
-    private final byte[] packet = {0, 0, 0, 1};
-    private UnreservedBandwidth unreservedBandwidth;
-    private TlvHeader header;
-    private byte[] result;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        unreservedBandwidth = new UnreservedBandwidth(new TlvHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        unreservedBandwidth = null;
-        header = null;
-        result = null;
-        channelBuffer = null;
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(unreservedBandwidth.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests addUnReservedBandwidth() method.
-     */
-    @Test
-    public void testAddUnReservedBandwidth() throws Exception {
-        unreservedBandwidth.addUnReservedBandwidth(123456.78f);
-        assertThat(unreservedBandwidth, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        header = new TlvHeader();
-        header.setTlvLength(4);
-        header.setTlvType(8);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        unreservedBandwidth = new UnreservedBandwidth(header);
-        unreservedBandwidth.readFrom(channelBuffer);
-        unreservedBandwidth.readFrom(channelBuffer);
-        assertThat(unreservedBandwidth, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result = unreservedBandwidth.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
-        result = unreservedBandwidth.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/ChecksumCalculatorTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/ChecksumCalculatorTest.java
deleted file mode 100644
index cdc4eaf..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/ChecksumCalculatorTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.util;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for ChecksumCalculator.
- */
-public class ChecksumCalculatorTest {
-
-    private final byte[] l1Lsp = {
-            -125, 27, 1, 0, 18, 1, 0, 0, 0, 86, 4, -81, 34, 34, 34,
-            34, 34, 34, 0, 0, 0, 0, 0, 9, 99, 11, 1, 1, 4, 3, 73,
-            0, 10, -127, 1, -52, -119, 2, 82, 50, -124, 4, -64, -88, 10, 1, -128,
-            24, 10, -128, -128, -128, 10, 0, 10, 0, -1, -1, -1, -4, 10, -128, -128,
-            -128, -64, -88, 10, 0, -1, -1, -1, 0, 2, 12, 0, 10, -128, -128, -128,
-            51, 51, 51, 51, 51, 51, 2
-    };
-    private ChecksumCalculator calculator;
-    private byte[] result;
-    private boolean result1;
-
-    @Before
-    public void setUp() throws Exception {
-        calculator = new ChecksumCalculator();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        calculator = null;
-    }
-
-    /**
-     * Tests validateLspCheckSum() method.
-     */
-    @Test
-    public void testValidateLspCheckSum() throws Exception {
-        result1 = calculator.validateLspCheckSum(l1Lsp, IsisConstants.CHECKSUMPOSITION,
-                                                 IsisConstants.CHECKSUMPOSITION + 1);
-
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests calculateLspChecksum() method.
-     */
-    @Test
-    public void testCalculateLspChecksum() throws Exception {
-        result = calculator.calculateLspChecksum(l1Lsp, IsisConstants.CHECKSUMPOSITION,
-                                                 IsisConstants.CHECKSUMPOSITION + 1);
-        assertThat(result[0],
-                   is(l1Lsp[IsisConstants.CHECKSUMPOSITION]));
-        assertThat(result[1],
-                   is(l1Lsp[IsisConstants.CHECKSUMPOSITION + 1]));
-    }
-}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/IsisUtilTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/IsisUtilTest.java
deleted file mode 100644
index de96972..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/IsisUtilTest.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.util;
-
-import com.google.common.primitives.Bytes;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.isis.controller.IsisPduType;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for IsisUtil.
- */
-public class IsisUtilTest {
-
-    private final String systemId = "2929.2929.2929";
-    private final String lanId = "2929.2929.2929.01";
-    private final String areaAddress = "490001";
-    private final byte[] l1Lsp = {
-            -125, 27, 1, 0, 18, 1, 0, 0, 0, 86, 4, -81, 34, 34, 34,
-            34, 34, 34, 0, 0, 0, 0, 0, 9, 99, 11, 1, 1, 4, 3, 73,
-            0, 10, -127, 1, -52, -119, 2, 82, 50, -124, 4, -64, -88, 10, 1, -128,
-            24, 10, -128, -128, -128, 10, 0, 10, 0, -1, -1, -1, -4, 10, -128, -128,
-            -128, -64, -88, 10, 0, -1, -1, -1, 0, 2, 12, 0, 10, -128, -128, -128,
-            51, 51, 51, 51, 51, 51, 2
-    };
-    private final byte[] intger = {0, 0, 0, 1};
-    private Ip4Address ip4Address1 = Ip4Address.valueOf("10.10.10.10");
-    private Ip4Address ip4Address2 = Ip4Address.valueOf("10.10.10.11");
-    private Ip4Address mask = Ip4Address.valueOf("255.255.255.0");
-    private boolean result;
-    private String result1;
-    private byte[] result2;
-    private int result3;
-    private long result4;
-    private byte[] prefixBytes = {0, 0, 0, 1};
-    private String prefix = "192.16.17";
-
-    @Before
-    public void setUp() throws Exception {
-
-    }
-
-    @After
-    public void tearDown() throws Exception {
-
-    }
-
-    /**
-     * Tests sameNetwork() method.
-     */
-    @Test
-    public void testSameNetwork() throws Exception {
-        result = IsisUtil.sameNetwork(ip4Address1, ip4Address2, mask.toOctets());
-        assertThat(result, is(true));
-    }
-
-    /**
-     * Tests systemId() method.
-     */
-    @Test
-    public void testSystemId() throws Exception {
-        result1 = IsisUtil.systemId(Bytes.toArray(
-                IsisUtil.sourceAndLanIdToBytes(systemId)));
-        assertThat(result1, is(systemId));
-    }
-
-    /**
-     * Tests systemIdPlus() method.
-     */
-    @Test
-    public void testSystemIdPlus() throws Exception {
-        result1 = IsisUtil.systemIdPlus(Bytes.toArray(
-                IsisUtil.sourceAndLanIdToBytes(lanId)));
-        assertThat(result1, is(lanId));
-    }
-
-    /**
-     * Tests areaAddress() method.
-     */
-    @Test
-    public void testAreaAddres() throws Exception {
-        result1 = IsisUtil.areaAddress(Bytes.toArray(
-                IsisUtil.areaAddressToBytes(areaAddress)));
-        assertThat(result1, is(areaAddress));
-    }
-
-    /**
-     * Tests areaAddressToBytes() method.
-     */
-    @Test
-    public void testAreaAddressToBytes() throws Exception {
-        result2 = Bytes.toArray(IsisUtil.areaAddressToBytes(areaAddress));
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests getPduHeaderLength() method.
-     */
-    @Test
-    public void testGetPduHeaderLength() throws Exception {
-        result3 = IsisUtil.getPduHeaderLength(IsisPduType.L1CSNP.value());
-        assertThat(result3, is(33));
-        result3 = IsisUtil.getPduHeaderLength(IsisPduType.L1PSNP.value());
-        assertThat(result3, is(17));
-        result3 = IsisUtil.getPduHeaderLength(IsisPduType.L1HELLOPDU.value());
-        assertThat(result3, is(27));
-        result3 = IsisUtil.getPduHeaderLength(IsisPduType.P2PHELLOPDU.value());
-        assertThat(result3, is(20));
-    }
-
-    /**
-     * Tests addLengthAndMarkItInReserved() method.
-     */
-    @Test
-    public void testAddLengthAndMarkItInReserved() throws Exception {
-        result2 = IsisUtil.addLengthAndMarkItInReserved(l1Lsp,
-                                                        IsisConstants.LENGTHPOSITION, IsisConstants.LENGTHPOSITION + 1,
-                                                        IsisConstants.RESERVEDPOSITION);
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests addChecksum() method.
-     */
-    @Test
-    public void testAddChecksum() throws Exception {
-        result2 = IsisUtil.addChecksum(l1Lsp,
-                                       IsisConstants.CHECKSUMPOSITION, IsisConstants.CHECKSUMPOSITION + 1);
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests framePacket() method.
-     */
-    @Test
-    public void testFramePacket() throws Exception {
-        result2 = IsisUtil.framePacket(l1Lsp, 2);
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests sourceAndLanIdToBytes() method.
-     */
-    @Test
-    public void testSourceAndLanIdToBytes() throws Exception {
-        result2 = Bytes.toArray(IsisUtil.sourceAndLanIdToBytes(lanId));
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests getPaddingTlvs() method.
-     */
-    @Test
-    public void testGetPaddingTlvs() throws Exception {
-        result2 = IsisUtil.getPaddingTlvs(250);
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests convertToTwoBytes() method.
-     */
-    @Test
-    public void testConvertToTwoBytes() throws Exception {
-        result2 = IsisUtil.convertToTwoBytes(250);
-        assertThat(result2.length, is(2));
-    }
-
-    /**
-     * Tests convertToFourBytes() method.
-     */
-    @Test
-    public void testConvertToFourBytes() throws Exception {
-        result2 = IsisUtil.convertToFourBytes(250);
-        assertThat(result2.length, is(4));
-    }
-
-    /**
-     * Tests byteToInteger() method.
-     */
-    @Test
-    public void testByteToInteger() throws Exception {
-        result3 = IsisUtil.byteToInteger(intger);
-        assertThat(result3, is(1));
-    }
-
-    /**
-     * Tests byteToInteger() method.
-     */
-    @Test
-    public void testByteToLong() throws Exception {
-        result4 = IsisUtil.byteToLong(intger);
-        assertThat(result4, is(1L));
-    }
-
-    /**
-     * Tests convertToFourBytes() method.
-     */
-    @Test
-    public void testConvertToFourBytes1() throws Exception {
-        result2 = IsisUtil.convertToFourBytes(250L);
-        assertThat(result2.length, is(4));
-    }
-
-    /**
-     * Tests toFourBitBinary() method.
-     */
-    @Test
-    public void testToEightBitBinary() throws Exception {
-        result1 = IsisUtil.toEightBitBinary("01");
-        assertThat(result1.length(), is(8));
-    }
-
-    /**
-     * Tests toFourBitBinary() method.
-     */
-    @Test
-    public void testToFourBitBinary() throws Exception {
-        result1 = IsisUtil.toFourBitBinary("01");
-        assertThat(result1.length(), is(4));
-    }
-
-    /**
-     * Tests convertToThreeBytes() method.
-     */
-    @Test
-    public void testConvertToThreeBytes() throws Exception {
-        result2 = IsisUtil.convertToThreeBytes(30);
-        assertThat(result2.length, is(3));
-    }
-
-    /**
-     * Tests prefixConversion() method.
-     */
-    @Test
-    public void testPrefixConversion() throws Exception {
-        result1 = IsisUtil.prefixConversion(prefixBytes);
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests prefixToBytes() method.
-     */
-    @Test
-    public void testPrefixToBytes() throws Exception {
-        result2 = IsisUtil.prefixToBytes(prefix);
-        assertThat(result2, is(notNullValue()));
-    }
-}
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/LspGeneratorTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/LspGeneratorTest.java
deleted file mode 100644
index d2d7dae..0000000
--- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/LspGeneratorTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.io.util;
-
-import org.easymock.EasyMock;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisLsdb;
-import org.onosproject.isis.controller.IsisPduType;
-import org.onosproject.isis.io.isispacket.IsisHeader;
-
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for LspGenerator.
- */
-public class LspGeneratorTest {
-    private LspGenerator generator;
-    private IsisHeader isisHeader;
-    private IsisInterface isisInterface;
-    private IsisLsdb isisLsdb;
-
-    @Before
-    public void setUp() throws Exception {
-        generator = new LspGenerator();
-        isisLsdb = EasyMock.createMock(IsisLsdb.class);
-        isisInterface = EasyMock.createMock(IsisInterface.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        generator = null;
-    }
-
-    /**
-     * Tests getHeader() method.
-     */
-    @Test
-    public void testGetHeader() throws Exception {
-        isisHeader = generator.getHeader(IsisPduType.L1CSNP);
-        assertThat(isisHeader, is(instanceOf(IsisHeader.class)));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/BUILD b/protocols/ospf/api/BUILD
deleted file mode 100644
index 9e01912..0000000
--- a/protocols/ospf/api/BUILD
+++ /dev/null
@@ -1,7 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + NETTY + JACKSON + [
-    "@io_netty_netty//jar",
-]
-
-osgi_jar_with_tests(
-    deps = COMPILE_DEPS,
-)
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/DeviceInformation.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/DeviceInformation.java
deleted file mode 100644
index b63926f..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/DeviceInformation.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import org.onlab.packet.Ip4Address;
-
-import java.util.List;
-
-/**
- * Representation of an OSPF device information.
- */
-public interface DeviceInformation {
-
-    /**
-     * Gets router id.
-     *
-     * @return router id
-     */
-    Ip4Address routerId();
-
-    /**
-     * Sets router id.
-     *
-     * @param routId router id
-     */
-    void setRouterId(Ip4Address routId);
-
-    /**
-     * Gets device id.
-     *
-     * @return device id
-     */
-    Ip4Address deviceId();
-
-    /**
-     * Sets device id.
-     *
-     * @param deviceId device id
-     */
-    void setDeviceId(Ip4Address deviceId);
-
-    /**
-     * Gets list of interface ids.
-     *
-     * @return list of interface ids
-     */
-    List<Ip4Address> interfaceId();
-
-    /**
-     * Adds interface id to list.
-     *
-     * @param interfaceId interface id
-     */
-    void addInterfaceId(Ip4Address interfaceId);
-
-    /**
-     * Gets area id.
-     *
-     * @return area id
-     */
-    Ip4Address areaId();
-
-    /**
-     * Sets area id.
-     *
-     * @param areaId area id
-     */
-    void setAreaId(Ip4Address areaId);
-
-    /**
-     * Gets device information is already created or not.
-     *
-     * @return true if device information is already created else false
-     */
-    boolean isAlreadyCreated();
-
-    /**
-     * Sets device information is already created or not.
-     *
-     * @param alreadyCreated true if device information is already created else false
-     */
-    void setAlreadyCreated(boolean alreadyCreated);
-
-    /**
-     * Gets device is dr or not.
-     *
-     * @return true if device is dr else false
-     */
-    boolean isDr();
-
-    /**
-     * Sets device is dr or not.
-     *
-     * @param dr true if device is dr else false
-     */
-    void setDr(boolean dr);
-
-    /**
-     * Gets neighbor id.
-     *
-     * @return neighbor id
-     */
-    Ip4Address neighborId();
-
-    /**
-     * Sets neighbor id.
-     *
-     * @param neighborId neighbor id
-     */
-    void setNeighborId(Ip4Address neighborId);
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LinkInformation.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LinkInformation.java
deleted file mode 100644
index 4bd9c67..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LinkInformation.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import org.onlab.packet.Ip4Address;
-
-/**
- * Representation of an OSPF link information.
- */
-public interface LinkInformation {
-
-    /**
-     * Gets link id.
-     *
-     * @return link id
-     */
-    String linkId();
-
-    /**
-     * Sets link id.
-     *
-     * @param linkId link id
-     */
-    void setLinkId(String linkId);
-
-    /**
-     * Gets link information is already created or not.
-     *
-     * @return true if link information is already created else false
-     */
-    boolean isAlreadyCreated();
-
-    /**
-     * Sets link information is already created or not.
-     *
-     * @param alreadyCreated true if link information is already created else false
-     */
-    void setAlreadyCreated(boolean alreadyCreated);
-
-    /**
-     * Gets is link source id is same as router id or not.
-     *
-     * @return true if link source id is not same as router id else false
-     */
-    boolean isLinkSrcIdNotRouterId();
-
-    /**
-     * Sets is link source id is same as router id or not.
-     *
-     * @param linkSrcIdNotRouterId true if link source id is not same as router id else false
-     */
-    void setLinkSrcIdNotRouterId(boolean linkSrcIdNotRouterId);
-
-    /**
-     * Gets link destination id.
-     *
-     * @return link destination id
-     */
-    Ip4Address linkDestinationId();
-
-    /**
-     * Sets link destination id.
-     *
-     * @param linkDestinationId link destination id
-     */
-    void setLinkDestinationId(Ip4Address linkDestinationId);
-
-    /**
-     * Gets link source id.
-     *
-     * @return link source id
-     */
-    Ip4Address linkSourceId();
-
-    /**
-     * Sets link source id.
-     *
-     * @param linkSourceId link source id
-     */
-    void setLinkSourceId(Ip4Address linkSourceId);
-
-    /**
-     * Gets interface ip address.
-     *
-     * @return interface ip address
-     */
-    Ip4Address interfaceIp();
-
-    /**
-     * Sets interface ip address.
-     *
-     * @param interfaceIp interface ip address
-     */
-    void setInterfaceIp(Ip4Address interfaceIp);
-
-    /**
-     * Gets link source ip address.
-     *
-     * @return link source ip address
-     */
-    Ip4Address linkSourceIpAddress();
-
-    /**
-     * Sets link source ip address.
-     *
-     * @param linkSourceIpAddress link source ip address
-     */
-    void setLinkSourceIpAddress(Ip4Address linkSourceIpAddress);
-
-    /**
-     * Gets link destination ip address.
-     *
-     * @return link destination ip address
-     */
-    Ip4Address linkDestinationIpAddress();
-
-    /**
-     * Sets link destination ip address.
-     *
-     * @param linkDestinationIpAddress link destination ip address
-     */
-    void setLinkDestinationIpAddress(Ip4Address linkDestinationIpAddress);
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsaBin.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsaBin.java
deleted file mode 100644
index 5f9fdc7..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsaBin.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import java.util.Map;
-
-/**
- * Representation of a bin where an LSA is stored for aging.
- * A bin is identified by a bin number and can have one or more LSAs
- * stored in a particular bin location.
- */
-public interface LsaBin {
-
-    /**
-     * Adds the given LSA to this bin with the given key.
-     *
-     * @param lsaKey     key of the stored LSA
-     * @param lsaWrapper wrapper instance to store
-     */
-    public void addOspfLsa(String lsaKey, LsaWrapper lsaWrapper);
-
-    /**
-     * Retrieves the LSA from the bin for verification of max age and ls refresh.
-     *
-     * @param lsaKey key to search the LSA
-     * @return LSA Wrapper instance
-     */
-    public LsaWrapper ospfLsa(String lsaKey);
-
-    /**
-     * Removes the given LSA from the bin. when ever it reaches max age or ls refresh time.
-     *
-     * @param lsaKey     key to search LSA
-     * @param lsaWrapper wrapper instance of the particular LSA
-     */
-    public void removeOspfLsa(String lsaKey, LsaWrapper lsaWrapper);
-
-    /**
-     * Gets the list of LSAs in this bin as key value pair.
-     * with key being the LSA key formed from the LSA header.
-     *
-     * @return list of LSAs in this bin as key value pair
-     */
-    public Map<String, LsaWrapper> listOfLsa();
-
-    /**
-     * Gets the bin number assigned during the initialization process of the bins .
-     *
-     * @return the bin number
-     */
-    public int binNumber();
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsaWrapper.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsaWrapper.java
deleted file mode 100644
index caf99f3..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsaWrapper.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-/**
- * Representation of a wrapper object to store LSA and associated metadata.
- * Metadata consists about the origination of LSA, age of LSA when received etc.
- */
-public interface LsaWrapper {
-    /**
-     * Gets the type of LSA, it can be a router,network,summary,external.
-     *
-     * @return lsa type
-     */
-    public OspfLsaType lsaType();
-
-    /**
-     * Sets the LSA type during the initialization of wrapper.
-     *
-     * @param lsaType lsa type
-     */
-    public void setLsaType(OspfLsaType lsaType);
-
-    /**
-     * Determines the origination of LSA , this is called during ls refresh interval.
-     *
-     * @return true if self originated else false
-     */
-    public boolean isSelfOriginated();
-
-    /**
-     * Sets is self originated or not.
-     *
-     * @param isSelfOriginated true if self originated else false
-     */
-    public void setIsSelfOriginated(boolean isSelfOriginated);
-
-
-    /**
-     * Age of LSA when received during the adjacency formation.
-     *
-     * @return Age of LSA when received
-     */
-    public int lsaAgeReceived();
-
-    /**
-     * Sets the Age of LSA when received during the adjacency formation.
-     *
-     * @param lsaAgeReceived Age of LSA when received
-     */
-    public void setLsaAgeReceived(int lsaAgeReceived);
-
-    /**
-     * Gets the LSA present in the wrapper instance.
-     *
-     * @return LSA instance
-     */
-    public OspfLsa ospfLsa();
-
-    /**
-     * Sets the LSA instance to the wrapper.
-     *
-     * @param ospfLsa LSA instance
-     */
-    public void setOspfLsa(OspfLsa ospfLsa);
-
-    /**
-     * Gets the current LSA Age, using this we calculate current age.
-     * It is done against the age counter which is incremented every second.
-     *
-     * @return lsa age
-     */
-    public int currentAge();
-
-    /**
-     * Gets the age counter when received.
-     *
-     * @return the age counter when received
-     */
-    public int ageCounterWhenReceived();
-
-    /**
-     * Sets the age counter when received.
-     *
-     * @param ageCounterWhenReceived the age counter when received
-     */
-    public void setAgeCounterWhenReceived(int ageCounterWhenReceived);
-
-    /**
-     * Gets the LSA process command, like max age, ls refresh, based on the command set.
-     * The queue consumer will pick the LSA and start performing the actions, like flooding
-     * out of the domain or generating a new LSA and flooding.
-     *
-     * @return lsa process command
-     */
-    public String lsaProcessing();
-
-    /**
-     * Sets the LSA process command, like max age , ls refresh , based on the command set.
-     * The queue consumer will pick the LSA and start performing the actions, like flooding
-     * out of the domain or generating a new LSA and flooding.
-     *
-     * @param lsaProcessing lsa process command
-     */
-    public void setLsaProcessing(String lsaProcessing);
-
-    /**
-     * Gets bin number into which the LSA wrapper is put for aging process.
-     *
-     * @return bin number
-     */
-    public int binNumber();
-
-    /**
-     * Sets bin number into which the LSA wrapper is put for aging process.
-     *
-     * @param binNumber bin number
-     */
-    public void setBinNumber(int binNumber);
-
-    /**
-     * Gets the interface on which the LSA was received.
-     *
-     * @return the interface instance
-     */
-    public OspfInterface ospfInterface();
-
-    /**
-     * Sets the interface on which the LSA was received, this is used later to flood the information.
-     *
-     * @param ospfInterface interface instance
-     */
-    public void setOspfInterface(OspfInterface ospfInterface);
-
-    /**
-     * Sets the LSDB age.
-     * Using LSDB age we are calculating age of a particular LSA.
-     *
-     * @param lsdbAge lsdbAge instance
-     */
-    public void setLsdbAge(LsdbAge lsdbAge);
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsdbAge.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsdbAge.java
deleted file mode 100644
index 120bcd5..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsdbAge.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-/**
- * Representation of LSDB aging process.
- * The age of each LSA in the database must be incremented by 1 each second.
- * We put all the LSAs of a given age into a single bin. The age of an LSA is the
- * difference between its age bin and the bin representing LS age 0.
- */
-public interface LsdbAge {
-
-    /**
-     * Adds LSA to bin for aging.
-     *
-     * @param binKey key to store the LSA in bin
-     * @param lsaBin LSA bin instance
-     */
-    public void addLsaBin(Integer binKey, LsaBin lsaBin);
-
-    /**
-     * Gets LSA from bin, this method is used while processing ls refresh and max age on LSA.
-     *
-     * @param binKey key to retrieve the LSA from bin
-     * @return lsaBin bin instance
-     */
-    public LsaBin getLsaBin(Integer binKey);
-
-    /**
-     * Adds the lsa to maxAge bin if LSAs age is max age.
-     *
-     * @param key     key to store the LSA in bin.
-     * @param wrapper wrapper instance which contains LSA
-     */
-    public void addLsaToMaxAgeBin(String key, LsaWrapper wrapper);
-
-    /**
-     * Gets the bin number out of LSAs age, in which the LSA can be placed.
-     * so that age can be calculated.
-     *
-     * @param x Can be either age or ageCounter
-     * @return bin number.
-     */
-    public int age2Bin(int x);
-
-    /**
-     * Gets the max age bin, a special bin is created which holds only max age LSAs.
-     *
-     * @return lsa bin instance
-     */
-    public LsaBin getMaxAgeBin();
-
-    /**
-     * Gets the age counter.
-     *
-     * @return age counter
-     */
-    public int getAgeCounter();
-
-
-    /**
-     * Refresh the LSAs which are in the refresh bin.
-     */
-    public void refreshLsa();
-
-    /**
-     * If the LSAs have completed the MaxAge stop aging and flood it.
-     */
-    public void maxAgeLsa();
-
-    /**
-     * Invoked every 1 second as part of the aging process, and increments age counter.
-     * It also verifies if any LSA has reached ls refresh time or max age.
-     */
-    public void ageLsaAndFlood();
-
-    /**
-     * Starts the aging timer thread which gets invokes every second.
-     */
-    public void startDbAging();
-
-    /**
-     * Removes LSA from Bin, when ever it reaches a max age or ls refresh time.
-     *
-     * @param lsaWrapper wrapper instance
-     */
-    public void removeLsaFromBin(LsaWrapper lsaWrapper);
-
-    /**
-     * Gets the age counter roll over.
-     *
-     * @return the age counter roll over
-     */
-    public int getAgeCounterRollOver();
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfAgent.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfAgent.java
deleted file mode 100644
index e2b878df..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfAgent.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-/**
- * Representation of an OSPF agent.
- * It is responsible for keeping track of the current set of routers
- * connected to the system.
- */
-public interface OspfAgent {
-
-    /**
-     * Adds a router that has just connected to the system.
-     *
-     * @param ospfRouter the router id to add
-     * @return true if added, false otherwise
-     */
-    boolean addConnectedRouter(OspfRouter ospfRouter);
-
-    /**
-     * Removes the router which got disconnected from the system.
-     *
-     * @param ospfRouter the router id to remove
-     */
-    void removeConnectedRouter(OspfRouter ospfRouter);
-
-    /**
-     * Notifies that got a packet of link from network and need to add the link.
-     *
-     * @param ospfRouter router instance
-     * @param ospfLinkTed link TED instance
-     */
-    void addLink(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed);
-
-    /**
-     * Notifies that got a packet of link from network and need do delete the link.
-     *
-     * @param ospfRouter router instance
-     * @param ospfLinkTed link TED instance
-     */
-    void deleteLink(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed);
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfArea.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfArea.java
deleted file mode 100644
index a66160d..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfArea.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import org.onlab.packet.Ip4Address;
-
-import java.util.List;
-
-/**
- * Representation of an OSPF area. OSPF areas are collections of network segments.
- * The configuration of OSPF area consists of assigning an area id to each network segment.
- * Each area has its own link state database.
- */
-public interface OspfArea {
-
-    /**
-     * Gets the router id associated with the area.
-     *
-     * @return router id
-     */
-    Ip4Address routerId();
-
-    /**
-     * Sets the router id for this area.
-     *
-     * @param routerId router's ip address
-     */
-    void setRouterId(Ip4Address routerId);
-
-    /**
-     * Gets the area id.
-     *
-     * @return area id
-     */
-    Ip4Address areaId();
-
-    /**
-     * Sets the area id.
-     *
-     * @param areaId area id as an IPv4 address
-     */
-    void setAreaId(Ip4Address areaId);
-
-    /**
-     * Gets the LSDB instance for this area.
-     *
-     * @return LSDB instance for this area
-     */
-    OspfLsdb database();
-
-    /**
-     * Checks whether an instance of the given LSA exists in the database.
-     *
-     * @param lookupLsa LSA instance to lookup
-     * @return LSA wrapper instance which contains the LSA
-     */
-    LsaWrapper lsaLookup(OspfLsa lookupLsa);
-
-    /**
-     * Initializes link state database, this acts as a place holder for storing the received LSA.
-     */
-    void initializeDb();
-
-    /**
-     * Sets the options value.
-     *
-     * @param options integer value
-     */
-    void setOptions(int options);
-
-    /**
-     * Gets external routing capability.
-     * This indicates Whether AS-external-LSAs will be flooded into/throughout the area.
-     *
-     * @return true if external routing capable, else false
-     */
-    boolean isExternalRoutingCapability();
-
-    /**
-     * Sets external routing capability.
-     * This indicates Whether AS-external-LSAs will be flooded into/throughout the area.
-     *
-     * @param externalRoutingCapability true if external routing capable, else false
-     */
-    void setExternalRoutingCapability(boolean externalRoutingCapability);
-
-    /**
-     * Gets if the router is opaque enabled or not.
-     * This indicates whether the router accepts opaque LSA.
-     *
-     * @return true if opaque enabled else false
-     */
-    boolean isOpaqueEnabled();
-
-    /**
-     * Gets the list of interfaces attached to this area.
-     *
-     * @return list of interfaces
-     */
-    List<OspfInterface> ospfInterfaceList();
-
-    /**
-     * Sets the list of interfaces attached to this area.
-     *
-     * @param interfacesLst list of interface instances
-     */
-    void setOspfInterfaceList(List<OspfInterface> interfacesLst);
-
-    /**
-     * Gets the options value, which indicates the supported optional capabilities.
-     *
-     * @return options value
-     */
-    int options();
-
-    /**
-     * Gets the opaque enabled options value, which indicates support of opaque capabilities.
-     *
-     * @return opaque enabled options value
-     */
-    int opaqueEnabledOptions();
-
-    /**
-     * Sets opaque enabled to true or false, which indicates whether the router accepts opaque LSA.
-     *
-     * @param isOpaqueEnable true if opaque enabled else false
-     */
-    void setIsOpaqueEnabled(boolean isOpaqueEnable);
-
-    /**
-     * Refreshes areas, by sending a router LSA and network LSA (in case of DR).
-     * with a new sequence number.
-     *
-     * @param ospfInterface interface instance
-     */
-    void refreshArea(OspfInterface ospfInterface);
-
-    /**
-     * Verifies no neighbor is in exchange process.
-     *
-     * @return boolean indicating that there is no Neighbor in Database Exchange
-     */
-    boolean noNeighborInLsaExchangeProcess();
-
-    /**
-     * Checks whether an instance of the given LSA exists in the database belonging to this area.
-     * If so return true else false.
-     *
-     * @param lsa1 LSA instance to compare
-     * @param lsa2 LSA instance to compare
-     * @return "same" if both instances are same, "latest" if lsa1 is latest, or "old" if lsa1 is old
-     */
-    String isNewerOrSameLsa(OspfLsa lsa1, OspfLsa lsa2);
-
-    /**
-     * Whenever we receive an LSA with max age - we put it in the max age bin.
-     * This is later used to flush LSAs out of the routing domain.
-     *
-     * @param key     key to add it to LSDB
-     * @param wrapper LSA wrapper instance
-     */
-    void addLsaToMaxAgeBin(String key, LsaWrapper wrapper);
-
-    /**
-     * Whenever an LSA is being flushed out or reaches max age, it must be stopped from aging.
-     * This achieved by removing it from bin.
-     *
-     * @param lsaWrapper the LSA wrapper instance to delete
-     */
-    void removeLsaFromBin(LsaWrapper lsaWrapper);
-
-    /**
-     * Adds the received LSA to LSDB, this method creates an LSA wrapper for the LSA.
-     * Also adds it to the LSDB of the area. This method is specifically called for
-     * the self originated LSAs.
-     *
-     * @param ospfLsa          LSA instance
-     * @param isSelfOriginated true if the LSA is self originated else false
-     * @param ospfInterface    interface instance
-     */
-    void addLsa(OspfLsa ospfLsa, boolean isSelfOriginated, OspfInterface ospfInterface);
-
-    /**
-     * Adds the received LSA to LSDB,this method creates an LSA wrapper for the LSA.
-     * Adds it to the LSDB of the area.
-     *
-     * @param ospfLsa       LSA instance
-     * @param ospfInterface interface instance
-     */
-    void addLsa(OspfLsa ospfLsa, OspfInterface ospfInterface);
-
-    /**
-     * Sets router sequence number for router LSA.
-     *
-     * @param newSequenceNumber sequence number
-     */
-    void setDbRouterSequenceNumber(long newSequenceNumber);
-
-    /**
-     * Gets LSA header of all types of LSAs present in the link state database.
-     *
-     * @param excludeMaxAgeLsa need to include(true) or exclude(false) max age LSA
-     * @param isOpaqueCapable  need to include(true) or exclude(false) type 10 Opaque LSA
-     * @return list of LSA header in the LSDB
-     */
-    List getLsaHeaders(boolean excludeMaxAgeLsa, boolean isOpaqueCapable);
-
-    /**
-     * Gets the LSA wrapper from link state database based on the parameters passed.
-     *
-     * @param lsType            type of LSA to form the key
-     * @param linkStateID       link state id to form the key
-     * @param advertisingRouter advertising router to form the key
-     * @return LSA wrapper instance which contains the LSA
-     */
-    LsaWrapper getLsa(int lsType, String linkStateID, String advertisingRouter);
-
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfAreaAddressRange.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfAreaAddressRange.java
deleted file mode 100644
index 2897d5a..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfAreaAddressRange.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import org.onlab.packet.Ip4Address;
-
-/**
- * Represents the collection of IP addresses contained in the address range.
- */
-public interface OspfAreaAddressRange {
-
-    /**
-     * Gets the IP address.
-     *
-     * @return IP address
-     */
-    public Ip4Address ipAddress();
-
-    /**
-     * Sets the IP address.
-     *
-     * @param ipAddress IPv4 address
-     */
-    public void setIpAddress(Ip4Address ipAddress);
-
-    /**
-     * Gets the network mask.
-     *
-     * @return network mask
-     */
-    public String mask();
-
-    /**
-     * Sets the network mask.
-     *
-     * @param mask network mask
-     */
-    public void setMask(String mask);
-
-    /**
-     * Gets the advertise value, which indicates routing information is condensed at area boundaries.
-     *
-     * @return advertise true if advertise flag is set else false
-     */
-    public boolean isAdvertise();
-
-    /**
-     * Sets the advertise value, which indicates routing information is condensed at area boundaries.
-     *
-     * @param advertise true if advertise flag to set else false
-     */
-    public void setAdvertise(boolean advertise);
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfController.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfController.java
deleted file mode 100644
index 3435f95..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfController.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import com.fasterxml.jackson.databind.JsonNode;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * Abstraction of an OSPF controller.
- * Serves as a one stop shop for obtaining OSPF devices and (un)register listeners on OSPF events.
- */
-public interface OspfController {
-
-    /**
-     * Registers a listener for router meta events.
-     *
-     * @param listener the listener to notify
-     */
-    void addRouterListener(OspfRouterListener listener);
-
-    /**
-     * Unregisters a router listener.
-     *
-     * @param listener the listener to unregister
-     */
-    void removeRouterListener(OspfRouterListener listener);
-
-    /**
-     * Registers a listener for OSPF message events.
-     *
-     * @param listener the listener to notify
-     */
-    void addLinkListener(OspfLinkListener listener);
-
-    /**
-     * Unregisters a link listener.
-     *
-     * @param listener the listener to unregister
-     */
-    void removeLinkListener(OspfLinkListener listener);
-
-    /**
-     * Updates configuration of processes.
-     *
-     * @param processesNode process info to update
-     */
-    void updateConfig(JsonNode processesNode);
-
-    /**
-     * Deletes configuration parameters.
-     *
-     * @param processes list of process instance
-     * @param attribute attribute to delete
-     */
-    void deleteConfig(List<OspfProcess> processes, String attribute);
-
-    /**
-     * Gets the list of listeners registered for router events.
-     *
-     * @return list of listeners
-     */
-    Set<OspfRouterListener> listener();
-
-    /**
-     * Gets the list of listeners registered for link events.
-     *
-     * @return list of listeners
-     */
-    public Set<OspfLinkListener> linkListener();
-
-    /**
-     * Gets the configured process.
-     *
-     * @return list of process instances
-     */
-    public List<OspfProcess> getAllConfiguredProcesses();
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfDeviceTed.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfDeviceTed.java
deleted file mode 100644
index 58c8876..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfDeviceTed.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.Ip6Address;
-
-import java.util.List;
-
-/**
- * Represents Device Traffic Engineering parameters.
- */
-public interface OspfDeviceTed {
-
-    /**
-     * Obtain list of IPv4 router ids.
-     *
-     * @return IPv4 router ids
-     */
-    public List<Ip4Address> ipv4RouterIds();
-
-    /**
-     * Sets list of IPv4 router ids.
-     *
-     * @param routerIds list of IPv4 router ids
-     */
-    public void setIpv4RouterIds(List<Ip4Address> routerIds);
-
-    /**
-     * Obtain list of IPv6 router id.
-     *
-     * @return IPv4 router ids
-     */
-    public List<Ip6Address> ipv6RouterIds();
-
-    /**
-     * Sets list of IPv4 router ids.
-     *
-     * @param routerIds list of IPv4 router ids
-     */
-    public void setIpv6RouterIds(List<Ip6Address> routerIds);
-
-    /**
-     * Obtain the list of topology ids.
-     *
-     * @return list of topology ids
-     */
-    public List<Short> topologyIds();
-
-    /**
-     * Sets the list of topology ids.
-     *
-     * @param topologyIds the list of topology ids
-     */
-    public void setTopologyIds(List<Short> topologyIds);
-
-    /**
-     * Obtains position of device in the network.
-     *
-     * @return position of device in the network
-     */
-    public Boolean asbr();
-
-    /**
-     * Sets position of device in the network.
-     *
-     * @param asbr position of device in the network
-     */
-    public void setAsbr(Boolean asbr);
-
-    /**
-     * Obtains position of device in the network.
-     *
-     * @return position of device in the network
-     */
-    public Boolean abr();
-
-    /**
-     * Sets position of device in the network.
-     *
-     * @param abr position of device in the network
-     */
-    public void setAbr(Boolean abr);
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfInterface.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfInterface.java
deleted file mode 100644
index 1c05ad5..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfInterface.java
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.onlab.packet.Ip4Address;
-
-import java.util.Map;
-
-/**
- * Represents an OSPF Interface.
- */
-public interface OspfInterface {
-
-    /**
-     * Returns interface index.
-     *
-     * @return interface index
-     */
-    public int interfaceIndex();
-
-    /**
-     * Sets interface index.
-     *
-     * @param interfaceIndex interface index
-     */
-    public void setInterfaceIndex(int interfaceIndex);
-
-    /**
-     * Returns OSPF area instance.
-     *
-     * @return OSPF area instance
-     */
-    public OspfArea ospfArea();
-
-    /**
-     * Sets OSPF area instance.
-     *
-     * @param ospfArea OSPF area instance
-     */
-    public void setOspfArea(OspfArea ospfArea);
-
-    /**
-     * Gets network mask of the interface.
-     *
-     * @return network mask
-     */
-    Ip4Address ipNetworkMask();
-
-    /**
-     * Sets the value of BDR.
-     * The BDR is calculated during adjacency formation.
-     *
-     * @param bdr backup designated router's IP address
-     */
-    void setBdr(Ip4Address bdr);
-
-    /**
-     * Sets the value of DR.
-     * The DR is calculated during adjacency formation.
-     *
-     * @param dr designated router's IP address
-     */
-    void setDr(Ip4Address dr);
-
-    /**
-     * Sets the hello interval time.
-     * It is the interval at which a hello packet is sent out via this interface.
-     *
-     * @param helloIntervalTime an integer interval time
-     */
-    void setHelloIntervalTime(int helloIntervalTime);
-
-    /**
-     * Sets router dead interval time.
-     * This is the interval after which this interface will trigger a process to kill neighbor.
-     *
-     * @param routerDeadIntervalTime an integer interval time
-     */
-    void setRouterDeadIntervalTime(int routerDeadIntervalTime);
-
-    /**
-     * Sets interface type.
-     * This indicates whether the interface is on point to point mode or broadcast mode.
-     *
-     * @param interfaceType an integer represents interface type
-     */
-    void setInterfaceType(int interfaceType);
-
-    /**
-     * Sets IP Address of this interface.
-     *
-     * @param ipAddress IP address
-     */
-    void setIpAddress(Ip4Address ipAddress);
-
-    /**
-     * Sets IP network mask.
-     *
-     * @param ipNetworkMask network mask
-     */
-    void setIpNetworkMask(Ip4Address ipNetworkMask);
-
-    /**
-     * Sets retransmit interval which indicates the number of seconds between LSA retransmissions.
-     *
-     * @param reTransmitInterval an integer represents interval
-     */
-    void setReTransmitInterval(int reTransmitInterval);
-
-    /**
-     * Sets MTU.
-     *
-     * @param mtu an integer represents max transfer unit
-     */
-    void setMtu(int mtu);
-
-    /**
-     * Sets router priority.
-     *
-     * @param routerPriority value
-     */
-    void setRouterPriority(int routerPriority);
-
-    /**
-     * Gets the IP address.
-     *
-     * @return an string represents IP address
-     */
-    Ip4Address ipAddress();
-
-    /**
-     * Gets the interface type.
-     *
-     * @return an integer represents interface type
-     */
-    int interfaceType();
-
-    /**
-     * Gets the MTU.
-     *
-     * @return an integer representing max transfer unit
-     */
-    int mtu();
-
-    /**
-     * Gets the list of neighbors associated with the interface.
-     *
-     * @return listOfNeighbors as key value pair
-     */
-    Map<String, OspfNbr> listOfNeighbors();
-
-    /**
-     * Gets the IP address of the BDR.
-     *
-     * @return bdr BDR's IP address
-     */
-    Ip4Address bdr();
-
-    /**
-     * Gets the ip address of the DR..
-     *
-     * @return dr DR's IP address
-     */
-    Ip4Address dr();
-
-    /**
-     * Gets hello interval time in seconds, this defines how often we send the hello packet.
-     *
-     * @return hello interval time in seconds
-     */
-    int helloIntervalTime();
-
-    /**
-     * Gets retransmit interval.
-     *
-     * @return reTransmitInterval an integer represents interval
-     */
-    int reTransmitInterval();
-
-    /**
-     * Gets router dead interval time.
-     * This defines how long we should wait for hello packets before we declare the neighbor is dead.
-     *
-     * @return routerDeadIntervalTime an integer interval time
-     */
-    int routerDeadIntervalTime();
-
-    /**
-     * Gets router priority.
-     *
-     * @return routerPriority value
-     */
-    int routerPriority();
-
-    /**
-     * Adds the given neighboring router to the neighbor map.
-     *
-     * @param ospfNbr neighbor instance
-     */
-    void addNeighbouringRouter(OspfNbr ospfNbr);
-
-    /**
-     * Gets the neighbor instance from listOfNeighbors map for the given neighbor ID.
-     *
-     * @param neighborId neighbors id
-     * @return ospfNbr neighbor instance
-     */
-    OspfNbr neighbouringRouter(String neighborId);
-
-    /**
-     * Checks the given neighbor is in the neighbor list.
-     *
-     * @param neighborId neighbors id
-     * @return true if neighbor in list else false
-     */
-    boolean isNeighborInList(String neighborId);
-
-    /**
-     * Removes LSA headers from the map in which LSA headers are stored.
-     *
-     * @param lsaKey key used to store lsa in map
-     */
-    void removeLsaFromNeighborMap(String lsaKey);
-
-    /**
-     * When an OSPF message received it is handed over to this method.
-     * Based on the type of the OSPF message received it will be handed over
-     * to corresponding message handler methods.
-     *
-     * @param ospfMessage received OSPF message
-     * @param ctx         channel handler context instance.
-     */
-    void processOspfMessage(OspfMessage ospfMessage, ChannelHandlerContext ctx);
-
-    /**
-     * Represents an interface is up and connected.
-     */
-    void interfaceUp();
-
-    /**
-     * Starts the timer which waits for configured seconds and sends Delayed Ack Packet.
-     */
-    void startDelayedAckTimer();
-
-    /**
-     * Stops the delayed acknowledge timer.
-     */
-    void stopDelayedAckTimer();
-
-    /**
-     * Starts the hello timer which sends hello packet every configured seconds.
-     */
-    void startHelloTimer();
-
-    /**
-     * Stops the hello timer.
-     */
-    void stopHelloTimer();
-
-    /**
-     * Gets called when an interface is down.
-     * All interface variables are reset, and interface timers disabled.
-     * Also all neighbor connections associated with the interface are destroyed.
-     */
-    void interfaceDown();
-
-    /**
-     * Removes all the neighbors.
-     */
-    void removeNeighbors();
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLink.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLink.java
deleted file mode 100644
index b5b5176..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLink.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import org.onlab.packet.IpAddress;
-
-import java.util.List;
-
-/**
- * Abstraction of an OSPF Link.
- */
-public interface OspfLink {
-
-    /**
-     * Gets IP address of the Router.
-     *
-     * @return IP address of router
-     */
-    IpAddress remoteRouterId();
-
-    /**
-     * Gets the area id for this device.
-     *
-     * @return the area id
-     */
-    int areaIdOfInterface();
-
-    /**
-     * Gets IP address of the interface.
-     *
-     * @return IP address of the interface
-     */
-    IpAddress interfaceIp();
-
-    /**
-     * Gets list of the link TED.
-     *
-     * @return list of the link TED
-     */
-    List<OspfLinkTed> linkTedLists();
-
-    /**
-     * Sets IP address of the router.
-     *
-     * @param routerIp router's IP address
-     */
-    void setRouterIp(IpAddress routerIp);
-
-    /**
-     * Sets the area id for this device.
-     *
-     * @param areaIdOfInterface area id
-     */
-    void setAreaIdOfInterface(int areaIdOfInterface);
-
-    /**
-     * Sets IP address of the interface.
-     *
-     * @param interfaceIp IP address of the interface.
-     */
-    void setInterfaceIp(IpAddress interfaceIp);
-
-    /**
-     * Sets list of the link TED.
-     *
-     * @param linkTedLists list of the link TED
-     */
-    void setLinkTedLists(List<OspfLinkTed> linkTedLists);
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLinkListener.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLinkListener.java
deleted file mode 100644
index 7bbaf7d..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLinkListener.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-/**
- * Abstraction of an OSPF link listener.
- */
-public interface OspfLinkListener {
-
-    /**
-     * Notifies that we got a link from network.
-     *
-     * @param ospfRouter router instance
-     * @param ospfLinkTed link TED information of router
-     */
-    void addLink(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed);
-
-    /**
-     * Notifies that a link got removed from network.
-     *
-     * @param ospfRouter  router instance
-     * @param ospfLinkTed link TED information of router
-     */
-    void deleteLink(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed);
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLinkTed.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLinkTed.java
deleted file mode 100644
index f0e5614..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLinkTed.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.Ip6Address;
-import org.onlab.util.Bandwidth;
-
-import java.util.List;
-
-/**
- * Represents OSPF Link Traffic Engineering parameters.
- */
-public interface OspfLinkTed {
-
-    /**
-     * Provides maximum bandwidth can be used on the link.
-     *
-     * @return maximum bandwidth
-     */
-    public Bandwidth maximumLink();
-
-    /**
-     * Sets maximum band width.
-     *
-     * @param bandwidth maximum bandwidth
-     */
-    public void setMaximumLink(Bandwidth bandwidth);
-
-    /**
-     * Amount of bandwidth reservable on the link.
-     *
-     * @return unreserved bandwidth
-     */
-    public List<Bandwidth> maxUnResBandwidth();
-
-    /**
-     * Sets max bandwidth that is not reserved on the link.
-     *
-     * @param bandwidth max bandwidth that is not reserved on the link
-     */
-    public void setMaxUnResBandwidth(Bandwidth bandwidth);
-
-    /**
-     * Provides max bandwidth that can be reserved on the link.
-     *
-     * @return max bandwidth reserved
-     */
-    public Bandwidth maxReserved();
-
-    /**
-     * Sets max bandwidth that can be reserved on the link.
-     *
-     * @param bandwidth max bandwidth that can be reserved on the link
-     */
-    public void setMaxReserved(Bandwidth bandwidth);
-
-    /**
-     * Provides Traffic Engineering metric for the link.
-     *
-     * @return Traffic Engineering metric
-     */
-    public Integer teMetric();
-
-    /**
-     * Sets Traffic Engineering metric for the link.
-     *
-     * @param teMetric Traffic Engineering metric for the link
-     */
-    public void setTeMetric(Integer teMetric);
-
-    /**
-     * Provides IPv4 router-Id of local node.
-     *
-     * @return IPv4 router-Id of local node
-     */
-    public List<Ip4Address> ipv4LocRouterId();
-
-    /**
-     * Sets IPv4 router-Id of local node.
-     *
-     * @param routerIds IPv4 router-Id of local node
-     */
-    public void setIpv4LocRouterId(List<Ip4Address> routerIds);
-
-    /**
-     * Provides IPv6 router-Id of local node.
-     *
-     * @return IPv6 router-Id of local node
-     */
-    public List<Ip6Address> ipv6LocRouterId();
-
-    /**
-     * Sets IPv6 router-Id of local node.
-     *
-     * @param routerIds IPv6 router-Id of local node
-     */
-    public void setIpv6LocRouterId(List<Ip6Address> routerIds);
-
-    /**
-     * Provides IPv4 router-Id of remote node.
-     *
-     * @return IPv4 router-Id of remote node
-     */
-    public List<Ip4Address> ipv4RemRouterId();
-
-    /**
-     * Sets IPv4 router-Id of remote node.
-     *
-     * @param routerIds IPv4 router-Id of remote node
-     */
-    public void setIpv4RemRouterId(List<Ip4Address> routerIds);
-
-    /**
-     * Provides IPv6 router-Id of remote node.
-     *
-     * @return IPv6 router-Id of remote node
-     */
-    public List<Ip6Address> ipv6RemRouterId();
-
-    /**
-     * Sets IPv6 router-Id of remote node.
-     *
-     * @param routerIds IPv6 router-Id of remote node
-     */
-    public void setIpv6RemRouterId(List<Ip6Address> routerIds);
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsa.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsa.java
deleted file mode 100644
index c9d37fc..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsa.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-/**
- * Represents an OSPF LSA.
- */
-public interface OspfLsa {
-
-    /**
-     * Gets the type of OSPF LSA.
-     *
-     * @return OSPF LSA type instance
-     */
-    OspfLsaType getOspfLsaType();
-
-    /**
-     * Gets the age of LSA.
-     *
-     * @return age of LSA
-     */
-    int age();
-
-    /**
-     * Gets the LSA header instance.
-     *
-     * @return this instance
-     */
-    public OspfLsa lsaHeader();
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsaType.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsaType.java
deleted file mode 100644
index db05055..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsaType.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-/**
- * Represents OSPF LSA types.
- */
-public enum OspfLsaType {
-
-    ROUTER(1),
-    NETWORK(2),
-    SUMMARY(3),
-    ASBR_SUMMARY(4),
-    EXTERNAL_LSA(5),
-    LINK_LOCAL_OPAQUE_LSA(9),
-    AREA_LOCAL_OPAQUE_LSA(10),
-    AS_OPAQUE_LSA(11),
-    UNDEFINED(20);
-
-    private int value;
-
-    /**
-     * Creates an instance of OSPF LSA type.
-     *
-     * @param value represents LSA type
-     */
-    OspfLsaType(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Gets the value representing LSA type.
-     *
-     * @return value represents LSA type
-     */
-    public int value() {
-        return value;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsdb.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsdb.java
deleted file mode 100644
index 3d3c170..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsdb.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import java.util.List;
-
-/**
- * Represents an OSPF link state database.
- */
-public interface OspfLsdb {
-
-    /**
-     * Initializes the link state database.
-     */
-    public void initializeDb();
-
-    /**
-     * Gets all LSA headers.
-     *
-     * @param excludeMaxAgeLsa exclude the max age LSAs
-     * @param isOpaqueCapable  is opaque capable or not
-     * @return List of LSA headers
-     */
-    public List getAllLsaHeaders(boolean excludeMaxAgeLsa, boolean isOpaqueCapable);
-
-    /**
-     * Finds the LSA from appropriate LSA maps.
-     *
-     * @param lsType type of LSA
-     * @param lsaKey key
-     * @return LSA wrapper object
-     */
-    public LsaWrapper findLsa(int lsType, String lsaKey);
-
-    /**
-     * Adds the LSA to maxAge bin.
-     *
-     * @param key        key
-     * @param lsaWrapper LSA wrapper instance
-     */
-    public void addLsaToMaxAgeBin(String key, Object lsaWrapper);
-
-    /**
-     * Removes LSA from bin.
-     *
-     * @param lsaWrapper LSA wrapper instance
-     */
-    public void removeLsaFromBin(Object lsaWrapper);
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfMessage.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfMessage.java
deleted file mode 100644
index 460457f..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfMessage.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.exceptions.OspfParseException;
-
-/**
- * Representation of an OSPF message.
- */
-public interface OspfMessage {
-
-    /**
-     * Returns the interface index on which the message received.
-     *
-     * @return interface index on which the message received
-     */
-    int interfaceIndex();
-
-    /**
-     * Sets the interface index on which the message received.
-     *
-     * @param interfaceIndex interface index on which the message received
-     */
-    void setInterfaceIndex(int interfaceIndex);
-
-    /**
-     * Returns the type of OSPF message.
-     *
-     * @return OSPF message type
-     */
-    public OspfPacketType ospfMessageType();
-
-    /**
-     * Reads from ChannelBuffer and initializes the type of LSA.
-     *
-     * @param channelBuffer channel buffer instance
-     * @throws OspfParseException might throws exception while parsing buffer
-     */
-    void readFrom(ChannelBuffer channelBuffer) throws OspfParseException;
-
-    /**
-     * Returns OSPFMessage as byte array.
-     *
-     * @return OSPF message as bytes
-     */
-    byte[] asBytes();
-
-    /**
-     * Sets the source IP address.
-     *
-     * @param sourceIp IP address
-     */
-    public void setSourceIp(Ip4Address sourceIp);
-
-    /**
-     * Gets the destination IP address.
-     *
-     * @return destination IP address
-     */
-    public Ip4Address destinationIp();
-
-    /**
-     * Sets destination IP.
-     *
-     * @param destinationIp destination IP address
-     */
-    public void setDestinationIp(Ip4Address destinationIp);
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfNbr.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfNbr.java
deleted file mode 100644
index 9a62fad..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfNbr.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import org.jboss.netty.channel.Channel;
-import org.onlab.packet.Ip4Address;
-
-import java.util.Map;
-
-/**
- * Represents an OSPF neighbor.
- */
-public interface OspfNbr {
-
-    /**
-     * Gets neighbor's id.
-     *
-     * @return neighbor's id
-     */
-    public Ip4Address neighborId();
-
-    /**
-     * Gets router priority.
-     *
-     * @return router priority
-     */
-    public int routerPriority();
-
-    /**
-     * Gets the IP address of this neighbor.
-     *
-     * @return the IP address of this neighbor
-     */
-    public Ip4Address neighborIpAddr();
-
-    /**
-     * Gets the neighbor's DR address.
-     *
-     * @return neighbor's DR address
-     */
-    public Ip4Address neighborDr();
-
-    /**
-     * Gets the neighbor's BDR address.
-     *
-     * @return neighbor's BDR address
-     */
-    Ip4Address neighborBdr();
-
-    /**
-     * Determines whether an adjacency should be established/maintained with the neighbor.
-     *
-     * @param ch netty channel instance
-     */
-    void adjOk(Channel ch);
-
-    /**
-     * Gets the pending re transmit list as a map.
-     *
-     * @return pending re transmit list as a map
-     */
-    Map<String, OspfLsa> getPendingReTxList();
-
-    /**
-     * Sets the neighbor's id.
-     *
-     * @param neighborId neighbor's id
-     */
-    void setNeighborId(Ip4Address neighborId);
-
-    /**
-     * Sets the neighbor's BDR address.
-     *
-     * @param neighborBdr neighbor's BDR address
-     */
-    void setNeighborBdr(Ip4Address neighborBdr);
-
-    /**
-     * Sets the neighbor's DR address.
-     *
-     * @param neighborDr neighbor's DR address
-     */
-    void setNeighborDr(Ip4Address neighborDr);
-
-    /**
-     * Sets router priority.
-     *
-     * @param routerPriority router priority
-     */
-    void setRouterPriority(int routerPriority);
-
-    /**
-     * Sets the neighbor is opaque enabled or not.
-     *
-     * @param isOpaqueCapable true if the neighbor is opaque enabled else false
-     */
-    void setIsOpaqueCapable(boolean isOpaqueCapable);
-
-    /**
-     * Sets neighbor is master or not.
-     *
-     * @param isMaster neighbor is master or not
-     */
-    void setIsMaster(int isMaster);
-
-    /**
-     * Gets the DD sequence number.
-     *
-     * @return DD sequence number
-     */
-    long ddSeqNum();
-
-    /**
-     * Sets the DD sequence number.
-     *
-     * @param ddSeqNum DD sequence number
-     */
-    void setDdSeqNum(long ddSeqNum);
-
-    /**
-     * Gets neighbor is master or not.
-     *
-     * @return true if neighbor is master else false
-     */
-    int isMaster();
-
-    /**
-     * Gets the options value.
-     *
-     * @return options value
-     */
-    int options();
-
-    /**
-     * Sets the options value.
-     *
-     * @param options options value
-     */
-    void setOptions(int options);
-
-    /**
-     * An invalid request for LSA has been received.
-     * This indicates an error in the Database Exchange process. Actions to be performed
-     * are the same as in seqNumMismatch. In addition, stop the possibly activated
-     * retransmission timer.
-     *
-     * @param ch netty channel instance
-     */
-    void badLSReq(Channel ch);
-
-    /**
-     * Gets the LS request list.
-     *
-     * @return LS request list
-     */
-    Map getLsReqList();
-
-    /**
-     * Gets the reTxList instance.
-     *
-     * @return reTxList instance
-     */
-    Map getReTxList();
-
-    /**
-     * Gets if the neighbor is opaque enabled or not.
-     *
-     * @return true if the neighbor is opaque enabled else false.
-     */
-    public boolean isOpaqueCapable();
-
-    /**
-     * Gets the neighbor's state.
-     *
-     * @return neighbor's state
-     */
-    OspfNeighborState getState();
-
-    /**
-     * Starts the inactivity timer.
-     */
-    void startInactivityTimeCheck();
-
-    /**
-     * Stops the inactivity timer.
-     */
-    void stopInactivityTimeCheck();
-
-    /**
-     * Sets router dead interval.
-     *
-     * @param routerDeadInterval router dead interval
-     */
-    void setRouterDeadInterval(int routerDeadInterval);
-
-    /**
-     * Stops the flooding timer.
-     */
-    void stopFloodingTimer();
-
-    /**
-     * Stops the Dd Retransmission executor task.
-     */
-    void stopRxMtDdTimer();
-
-    /**
-     * Stops Ls request retransmission executor task.
-     */
-    void stopRxMtLsrTimer();
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfNeighborState.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfNeighborState.java
deleted file mode 100644
index 8019f49..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfNeighborState.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-/**
- * Enum representing OSPF neighbor state.
- */
-public enum OspfNeighborState {
-
-    DOWN(1),
-    ATTEMPT(2),
-    INIT(3),
-    TWOWAY(4),
-    EXSTART(5),
-    EXCHANGE(6),
-    LOADING(7),
-    FULL(8);
-
-    private int value;
-
-    /**
-     * Creates an OSPF neighbor state.
-     *
-     * @param value represents neighbors state
-     */
-    OspfNeighborState(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Gets value of neighbor state.
-     *
-     * @return value represents neighbors state
-     */
-    public int getValue() {
-        return value;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfPacketType.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfPacketType.java
deleted file mode 100644
index 810b700..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfPacketType.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-/**
- * Representation of different OSPF packet types.
- */
-public enum OspfPacketType {
-
-    /**
-     * OSPF hello packet.
-     */
-    HELLO(1),
-    /**
-     * OSPF device description packet.
-     */
-    DD(2),
-    /**
-     * OSPF link state request packet.
-     */
-    LSREQUEST(3),
-    /**
-     * OSPF link state update packet.
-     */
-    LSUPDATE(4),
-    /**
-     * OSPF link state acknowledge packet.
-     */
-    LSAACK(5);
-
-    private int value;
-
-    /**
-     * Creates instance of OSPF packet types.
-     *
-     * @param value OSPF packet types
-     */
-    OspfPacketType(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Gets the value.
-     *
-     * @return value
-     */
-    public int value() {
-        return value;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfProcess.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfProcess.java
deleted file mode 100644
index 767184c..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfProcess.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import java.util.List;
-
-/**
- * Represents an OSPF Process.
- */
-public interface OspfProcess {
-
-    /**
-     * Gets the list of areas belonging to this process.
-     *
-     * @return list of areas belonging to this process
-     */
-    public List<OspfArea> areas();
-
-    /**
-     * Sets the list of areas belonging to this process.
-     *
-     * @param areas list of areas belonging to this process
-     */
-    public void setAreas(List<OspfArea> areas);
-
-    /**
-     * Gets the process id.
-     *
-     * @return process id
-     */
-    public String processId();
-
-    /**
-     * Sets the process id.
-     *
-     * @param processId the process id
-     */
-    public void setProcessId(String processId);
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouter.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouter.java
deleted file mode 100644
index 38b3013..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouter.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import org.onlab.packet.Ip4Address;
-
-/**
- * Abstraction of an OSPF Router.
- */
-public interface OspfRouter {
-
-    /**
-     * Gets IP address of the router.
-     *
-     * @return IP address of the router
-     */
-    Ip4Address routerIp();
-
-    /**
-     * Gets the area id for this device.
-     *
-     * @return the area id for this device
-     */
-    Ip4Address areaIdOfInterface();
-
-    /**
-     * Gets IP address of the interface.
-     *
-     * @return IP address of the interface
-     */
-    Ip4Address interfaceId();
-
-    /**
-     * Gets list of device TED.
-     *
-     * @return list of device TED.
-     */
-    OspfDeviceTed deviceTed();
-
-    /**
-     * Sets IP address of the Router.
-     *
-     * @param routerIp IP address of the router
-     */
-    void setRouterIp(Ip4Address routerIp);
-
-    /**
-     * Sets area id in which this device belongs to.
-     *
-     * @param areaIdOfInterface area id in which this device belongs to
-     */
-    void setAreaIdOfInterface(Ip4Address areaIdOfInterface);
-
-    /**
-     * Sets IP address of the interface.
-     *
-     * @param interfaceId IP address of the interface
-     */
-    void setInterfaceId(Ip4Address interfaceId);
-
-    /**
-     * Sets the device TED information.
-     *
-     * @param deviceTed device TED instance
-     */
-    void setDeviceTed(OspfDeviceTed deviceTed);
-
-    /**
-     * Gets if router is opaque enabled.
-     *
-     * @return true if router is opaque enabled else false.
-     */
-    boolean isOpaque();
-
-    /**
-     * Sets true if device is opaque enable if not sets false.
-     *
-     * @param opaque true if device is opaque enable if not sets false
-     */
-    void setOpaque(boolean opaque);
-
-    /**
-     * Gets IP address of the advertising router.
-     *
-     * @return IP address of the advertising router
-     */
-    Ip4Address neighborRouterId();
-
-    /**
-     * Sets IP address of the advertising router.
-     *
-     * @param advertisingRouterId IP address of the advertising router
-     */
-    void setNeighborRouterId(Ip4Address advertisingRouterId);
-
-
-    /**
-     * Gets if the router id DR or not.
-     *
-     * @return true if the router is DR else false
-     */
-    boolean isDr();
-
-    /**
-     * Sets if the router id DR or not.
-     *
-     * @param dr true if the router is DR else false
-     */
-    void setDr(boolean dr);
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouterId.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouterId.java
deleted file mode 100644
index 22c91f4..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouterId.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import org.onlab.packet.IpAddress;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Objects;
-
-import static com.google.common.base.Preconditions.checkArgument;
-
-/**
- * Represents an OSPF router id.
- */
-public class OspfRouterId {
-
-    private static final String SCHEME = "l3";
-    private static final long UNKNOWN = 0;
-    private final IpAddress ipAddress;
-
-    /**
-     * Creates an instance of OSPF router id.
-     *
-     * @param ipAddress IP address of the router
-     */
-    public OspfRouterId(IpAddress ipAddress) {
-        this.ipAddress = ipAddress;
-    }
-
-    /**
-     * Creates an instance from ip address.
-     *
-     * @param ipAddress IP address
-     * @return OSPF router id instance
-     */
-    public static OspfRouterId ospfRouterId(IpAddress ipAddress) {
-        return new OspfRouterId(ipAddress);
-    }
-
-    /**
-     * Creates OSPF router id instance from the URI.
-     *
-     * @param uri device URI
-     * @return OSPF router id instance
-     */
-    public static OspfRouterId ospfRouterId(URI uri) {
-        checkArgument(uri.getScheme().equals(SCHEME), "Unsupported URI scheme");
-        return new OspfRouterId(IpAddress.valueOf(uri.getSchemeSpecificPart()));
-    }
-
-    /**
-     * Returns device URI from the given router id.
-     *
-     * @param ospfRouterId router id instance
-     * @return device URI
-     */
-    public static URI uri(OspfRouterId ospfRouterId) {
-        return uri(ospfRouterId.ipAddress());
-    }
-
-    /**
-     * Returns device URI from the given IP address.
-     *
-     * @param ipAddress device IP address
-     * @return device URI
-     */
-    public static URI uri(IpAddress ipAddress) {
-        try {
-            return new URI(SCHEME, ipAddress.toString(), null);
-        } catch (URISyntaxException e) {
-            return null;
-        }
-    }
-
-    /**
-     * Returns the IP address.
-     *
-     * @return IP address
-     */
-    public IpAddress ipAddress() {
-        return ipAddress;
-    }
-
-    @Override
-    public String toString() {
-        return ipAddress.toString();
-    }
-
-    @Override
-    public boolean equals(Object other) {
-        if (!(other instanceof OspfRouterId)) {
-            return false;
-        }
-
-        OspfRouterId otherOspfRouterId = (OspfRouterId) other;
-        return Objects.equals(ipAddress, otherOspfRouterId.ipAddress);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(ipAddress);
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouterListener.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouterListener.java
deleted file mode 100644
index 62f2e63..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouterListener.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-/**
- * Abstraction of an OSPF Router Listener.
- * Allows for providers interested in switch events to be notified.
- */
-public interface OspfRouterListener {
-
-    /**
-     * Notifies that a router is added.
-     *
-     * @param ospfRouter OSPF router instance
-     */
-    void routerAdded(OspfRouter ospfRouter);
-
-    /**
-     * Notifies that a router is removed.
-     *
-     * @param ospfRouter OSPF router instance
-     */
-    void routerRemoved(OspfRouter ospfRouter);
-
-    /**
-     * Notifies that the router has changed in some way.
-     *
-     * @param ospfRouter OSPF router instance
-     */
-    void routerChanged(OspfRouter ospfRouter);
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/TopologyForDeviceAndLink.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/TopologyForDeviceAndLink.java
deleted file mode 100644
index 9d6dd64..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/TopologyForDeviceAndLink.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import org.onlab.packet.Ip4Address;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * Represents IP topology for OSPF device and link details.
- */
-public interface TopologyForDeviceAndLink {
-
-    /**
-     * Gets the device information.
-     *
-     * @return device information
-     */
-    Map<String, DeviceInformation> deviceInformationMap();
-
-    /**
-     * Sets the device information.
-     *
-     * @param key                  key used to store in map
-     * @param deviceInformationMap device information instance
-     */
-    void setDeviceInformationMap(String key, DeviceInformation deviceInformationMap);
-
-    /**
-     * Gets the link information.
-     *
-     * @return link information
-     */
-    Map<String, LinkInformation> linkInformationMap();
-
-    /**
-     * Sets link information.
-     *
-     * @param key key used to store in map
-     * @param linkInformationMap link information instance
-     */
-    void setLinkInformationMap(String key, LinkInformation linkInformationMap);
-
-    /**
-     * Removes link information.
-     *
-     * @param key key used to remove from map
-     */
-    void removeLinkInformationMap(String key);
-
-    /**
-     * Adds device information.
-     *
-     * @param ospfLsa       LSA instance
-     * @param ospfInterface interface instance
-     * @param ospfArea      area instance
-     */
-    void addLocalDevice(OspfLsa ospfLsa, OspfInterface ospfInterface, OspfArea ospfArea);
-
-    /**
-     * Removes device information.
-     *
-     * @param key key used to remove from map
-     */
-    void removeDeviceInformationMap(String key);
-
-    /**
-     * Removes links from link information map.
-     *
-     * @param routerId router's IP address
-     */
-    void removeLinks(Ip4Address routerId);
-
-    /**
-     * Gets OSPF link TED details.
-     *
-     * @param key key used to retrieve from map
-     * @return links TED information
-     */
-    OspfLinkTed getOspfLinkTedHashMap(String key);
-
-    /**
-     * Gets all the router information to be deleted.
-     *
-     * @param ospfLsa  LSA instance
-     * @param ospfArea area instance
-     * @return list of router information which needs to delete from device list
-     */
-    List<String> getDeleteRouterInformation(OspfLsa ospfLsa, OspfArea ospfArea);
-
-    /**
-     * Updates the device and link information.
-     *
-     * @param ospfLsa  LSA instance
-     * @param ospfArea area instance
-     */
-    void updateLinkInformation(OspfLsa ospfLsa, OspfArea ospfArea);
-
-    /**
-     * Gets device information as map.
-     *
-     * @return deviceInformationMap to delete from core
-     */
-    Map<String, DeviceInformation> deviceInformationMapToDelete();
-
-    /**
-     * Sets device information as map.
-     *
-     * @param key key to store in device info map
-     * @param deviceInformationMapToDelete device information instance
-     */
-    void setDeviceInformationMapToDelete(String key, DeviceInformation deviceInformationMapToDelete);
-
-    /**
-     * Removes device information from deviceInformationMapToDelete.
-     *
-     * @param key key to remove device information
-     */
-    void removeDeviceInformationMapFromDeleteMap(String key);
-
-    /**
-     * Gets device information as map for Point-To-Point.
-     *
-     * @return deviceInformationMap
-     */
-    Map<String, DeviceInformation> deviceInformationMapForPointToPoint();
-
-    /**
-     * Sets device information as map for Point-To-Point.
-     *
-     * @param key key to store in device info
-     * @param deviceInformationMap device information instance
-     */
-    void setDeviceInformationMapForPointToPoint(String key, DeviceInformation deviceInformationMap);
-
-    /**
-     * Gets link information as map for Point-To-Point.
-     *
-     * @return linkInformationMap
-     */
-    Map<String, LinkInformation> linkInformationMapForPointToPoint();
-
-    /**
-     * Sets link information as map for Point-To-Point.
-     *
-     * @param key key to store link info
-     * @param linkInformationMap link information instance
-     */
-    void setLinkInformationMapForPointToPoint(String key, LinkInformation linkInformationMap);
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/package-info.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/package-info.java
deleted file mode 100644
index 9233eee..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the ospf api interfaces.
- */
-package org.onosproject.ospf.controller;
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/exceptions/OspfParseException.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/exceptions/OspfParseException.java
deleted file mode 100644
index c228381..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/exceptions/OspfParseException.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.exceptions;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Representation of a custom exception for OSPF.
- */
-public class OspfParseException extends Exception {
-
-    private static final long serialVersionUID = 1L;
-    private byte errorCode;
-    private byte errorSubCode;
-
-    /**
-     * Creates a new OSPF exception.
-     */
-    public OspfParseException() {
-        super();
-    }
-
-    /**
-     * Creates a new OSPF exception based on the given arguments.
-     *
-     * @param message the detail of exception in string
-     * @param cause   underlying cause of the error
-     */
-    public OspfParseException(final String message, final Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Creates a new OSPF exception for the given message.
-     *
-     * @param message the detail of exception in string
-     */
-    public OspfParseException(final String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new OSPF exception from throwable instance.
-     *
-     * @param cause underlying cause of the error
-     */
-    public OspfParseException(final Throwable cause) {
-        super(cause);
-    }
-
-    /**
-     * Creates a new OSPF exception from error code and error sub code.
-     *
-     * @param errorCode    error code of OSPF message
-     * @param errorSubCode error sub code of OSPF message
-     */
-    public OspfParseException(final byte errorCode, final byte errorSubCode) {
-        super();
-        this.errorCode = errorCode;
-        this.errorSubCode = errorSubCode;
-    }
-
-    /**
-     * Returns error code for this exception.
-     *
-     * @return error code for this exception
-     */
-    public byte errorCode() {
-        return this.errorCode;
-    }
-
-    /**
-     * Returns error sub code for this exception.
-     *
-     * @return error sub code for this exception
-     */
-    public byte errorSubCode() {
-        return this.errorSubCode;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("errorCode", errorCode)
-                .add("errorSubCode", errorSubCode)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/exceptions/package-info.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/exceptions/package-info.java
deleted file mode 100644
index db2cc81..0000000
--- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/exceptions/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the OSPF exception types.
- */
-package org.onosproject.ospf.exceptions;
\ No newline at end of file
diff --git a/protocols/ospf/api/src/test/java/org/onosproject/ospf/controller/OspfRouterIdTest.java b/protocols/ospf/api/src/test/java/org/onosproject/ospf/controller/OspfRouterIdTest.java
deleted file mode 100644
index 6944a6f..0000000
--- a/protocols/ospf/api/src/test/java/org/onosproject/ospf/controller/OspfRouterIdTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.IpAddress;
-
-import java.net.URI;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for OspfRouterId.
- */
-public class OspfRouterIdTest {
-
-    private OspfRouterId ospfRouterId;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfRouterId = new OspfRouterId(IpAddress.valueOf("2.2.2.2"));
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfRouterId = null;
-    }
-
-    /**
-     * Tests constructor.
-     */
-    @Test
-    public void testOspfRouterId() throws Exception {
-        assertThat(OspfRouterId.ospfRouterId(IpAddress.valueOf("2.2.2.2")), instanceOf(OspfRouterId.class));
-
-    }
-
-    /**
-     * Tests ipAddress() getter method.
-     */
-    @Test
-    public void testIpAddress() throws Exception {
-        assertThat(ospfRouterId.ipAddress(), instanceOf(IpAddress.class));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(ospfRouterId.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests equals() method.
-     */
-    @Test
-    public void testEquals() throws Exception {
-        assertThat(ospfRouterId.equals(new OspfRouterId(IpAddress.valueOf("3.3.3.3"))), is(false));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashCode() throws Exception {
-        assertThat(ospfRouterId.hashCode(), is(notNullValue()));
-    }
-
-    /**
-     * Tests constructor.
-     */
-    @Test
-    public void testOspfRouterId1() throws Exception {
-        assertThat(OspfRouterId.ospfRouterId(OspfRouterId.uri(ospfRouterId)), instanceOf(OspfRouterId.class));
-    }
-
-    /**
-     * Tests uri() method.
-     */
-    @Test
-    public void testUri() throws Exception {
-        assertThat(OspfRouterId.uri(IpAddress.valueOf("2.2.2.2")), instanceOf(URI.class));
-    }
-
-    /**
-     * Tests uri() method..
-     */
-    @Test
-    public void testUri1() throws Exception {
-        assertThat(OspfRouterId.uri(ospfRouterId), instanceOf(URI.class));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/BUILD b/protocols/ospf/ctl/BUILD
deleted file mode 100644
index de94b39..0000000
--- a/protocols/ospf/ctl/BUILD
+++ /dev/null
@@ -1,10 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + NETTY + JACKSON + [
-    "@io_netty_netty//jar",
-    "//protocols/ospf/api:onos-protocols-ospf-api",
-    "//protocols/ospf/protocol:onos-protocols-ospf-protocol",
-]
-
-osgi_jar_with_tests(
-    exclude_tests = ["org.onosproject.ospf.controller.impl.OspfPipelineFactoryTest"],
-    deps = COMPILE_DEPS,
-)
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/Configuration.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/Configuration.java
deleted file mode 100644
index 65ea80c..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/Configuration.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.area;
-
-import com.google.common.base.MoreObjects;
-import org.onosproject.ospf.controller.OspfProcess;
-
-import java.util.List;
-
-/**
- * Representation of an OSPF configuration data.
- */
-public class Configuration {
-    private List<OspfProcess> processes;
-    private String method;
-
-    /**
-     * Gets the configured processes.
-     *
-     * @return list of configured processes.
-     */
-    public List<OspfProcess> getProcesses() {
-        return processes;
-    }
-
-    /**
-     * Sets the configured processes.
-     *
-     * @param processes configured processes
-     */
-    public void setProcesses(List<OspfProcess> processes) {
-        this.processes = processes;
-    }
-
-    /**
-     * Gets whether to update, add or delete configuration.
-     *
-     * @return update, add or delete configuration
-     */
-    public String getMethod() {
-        return method;
-    }
-
-    /**
-     * Sets whether to update, add or delete configuration.
-     *
-     * @param method configuration method.
-     */
-    public void setMethod(String method) {
-        this.method = method;
-    }
-
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("method", method)
-                .add("processes", processes)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfAreaAddressRangeImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfAreaAddressRangeImpl.java
deleted file mode 100644
index 3848b24..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfAreaAddressRangeImpl.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.area;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfAreaAddressRange;
-
-/**
- * Representation of an area address ranges.
- * Address ranges are used in order to aggregate routing information at area boundaries.
- * Each address range is specified by an [address,mask] pair and a status indication of
- * either advertise or do not advertise
- */
-public class OspfAreaAddressRangeImpl implements OspfAreaAddressRange {
-
-    private Ip4Address ipAddress;
-    private String mask;
-    private boolean advertise;
-
-    /**
-     * Gets the IP address.
-     *
-     * @return IP address
-     */
-    public Ip4Address ipAddress() {
-        return ipAddress;
-    }
-
-    /**
-     * Sets the IP address.
-     *
-     * @param ipAddress IP address
-     */
-    public void setIpAddress(Ip4Address ipAddress) {
-        this.ipAddress = ipAddress;
-    }
-
-    /**
-     * Gets the network mask.
-     *
-     * @return network  mask
-     */
-    public String mask() {
-        return mask;
-    }
-
-    /**
-     * Sets the network mask.
-     *
-     * @param mask network mask value
-     */
-    public void setMask(String mask) {
-        this.mask = mask;
-    }
-
-    /**
-     * Gets the advertise value.
-     *
-     * @return advertise value
-     */
-    public boolean isAdvertise() {
-        return advertise;
-    }
-
-    /**
-     * Sets the advertise value.
-     *
-     * @param advertise advertise value
-     */
-    public void setAdvertise(boolean advertise) {
-        this.advertise = advertise;
-    }
-
-    @Override
-    public boolean equals(Object other) {
-        if (!(other instanceof OspfAreaAddressRangeImpl)) {
-            return false;
-        }
-        OspfAreaAddressRangeImpl otherAreaAddressRange = (OspfAreaAddressRangeImpl) other;
-        return Objects.equal(ipAddress, otherAreaAddressRange.ipAddress) &&
-                Objects.equal(mask, otherAreaAddressRange.mask) &&
-                Objects.equal(advertise, otherAreaAddressRange.advertise);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(ipAddress, mask, advertise);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("ipAddress", ipAddress)
-                .add("mask", mask)
-                .add("advertise", advertise)
-                .toString();
-    }
-}
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfAreaImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfAreaImpl.java
deleted file mode 100644
index 7a74637..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfAreaImpl.java
+++ /dev/null
@@ -1,729 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.area;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.LsaWrapper;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfLsa;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.controller.OspfLsdb;
-import org.onosproject.ospf.controller.OspfNbr;
-import org.onosproject.ospf.controller.OspfNeighborState;
-import org.onosproject.ospf.controller.impl.OspfNbrImpl;
-import org.onosproject.ospf.controller.lsdb.OspfLsdbImpl;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.subtypes.OspfLsaLink;
-import org.onosproject.ospf.protocol.lsa.types.NetworkLsa;
-import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
-import org.onosproject.ospf.protocol.util.ChecksumCalculator;
-import org.onosproject.ospf.protocol.util.OspfInterfaceState;
-import org.onosproject.ospf.protocol.util.OspfParameters;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Representation an OSPF area and related information.
- */
-public class OspfAreaImpl implements OspfArea {
-    private static final Logger log = LoggerFactory.getLogger(OspfAreaImpl.class);
-    /**
-     * Whether AS-external-LSAs will be flooded into/throughout the area.
-     */
-    private boolean externalRoutingCapability;
-
-    /**
-     * Represents a list of all router's interfaces associated with this area.
-     */
-    private List<OspfInterface> ospfInterfaceList;
-    /**
-     * The LS Database for this area. It includes router-LSAs, network-LSAs and.
-     * summary-LSAs. AS-external-LSAs are hold in the OSPF class itself.
-     */
-    private OspfLsdbImpl database;
-    /**
-     * A 32-bit number identifying the area.
-     */
-    private Ip4Address areaId;
-    /**
-     * Router ID.
-     */
-    private Ip4Address routerId;
-    /**
-     * Represents Options like external, opaque capabilities.
-     */
-    private int options;
-    /**
-     * Represents Opaque Enable or not.
-     */
-    private boolean isOpaqueEnable;
-
-    /**
-     * Creates an instance of area implementation.
-     */
-    public OspfAreaImpl() {
-        database = new OspfLsdbImpl(this);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        OspfAreaImpl that = (OspfAreaImpl) o;
-        return Objects.equal(areaId, that.areaId) &&
-                Objects.equal(routerId, that.routerId) &&
-                Objects.equal(externalRoutingCapability, that.externalRoutingCapability) &&
-                Objects.equal(ospfInterfaceList.size(), that.ospfInterfaceList.size()) &&
-                Objects.equal(database, that.database);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(areaId, routerId, externalRoutingCapability,
-                                ospfInterfaceList, database);
-    }
-
-    /**
-     * Gets the router id.
-     *
-     * @return router id
-     */
-    public Ip4Address routerId() {
-        return routerId;
-    }
-
-    /**
-     * Sets the router id.
-     *
-     * @param routerId router id
-     */
-    @JsonProperty("routerId")
-    public void setRouterId(Ip4Address routerId) {
-        this.routerId = routerId;
-    }
-
-    /**
-     * Sets opaque enabled to true or false.
-     *
-     * @param isOpaqueEnable true if opaque enabled else false
-     */
-    @JsonProperty("isOpaqueEnable")
-    public void setIsOpaqueEnabled(boolean isOpaqueEnable) {
-        this.isOpaqueEnable = isOpaqueEnable;
-    }
-
-    /**
-     * Gets is opaque enabled or not.
-     *
-     * @return true if opaque enabled else false
-     */
-    public boolean isOpaqueEnabled() {
-        return this.isOpaqueEnable;
-    }
-
-    /**
-     * Initializes link state database.
-     */
-    public void initializeDb() {
-
-        database.initializeDb();
-    }
-
-    /**
-     * Refreshes the OSPF area information .
-     * Gets called as soon as the interface is down or neighbor full Router LSA is updated.
-     *
-     * @param ospfInterface OSPF interface instance
-     */
-    @Override
-    public void refreshArea(OspfInterface ospfInterface) {
-        OspfInterfaceImpl ospfInterfaceImpl = (OspfInterfaceImpl) ospfInterface;
-        log.debug("Inside refreshArea...!!!");
-        //If interface state is DR build network LSA.
-        if (ospfInterfaceImpl.state() == OspfInterfaceState.DR) {
-            if (ospfInterface.listOfNeighbors().size() > 0) {
-                //Get the NetworkLsa
-                NetworkLsa networkLsa = null;
-                try {
-                    networkLsa = buildNetworkLsa(ospfInterface.ipAddress(), ospfInterface.ipNetworkMask());
-                } catch (Exception e) {
-                    log.debug("Error while building NetworkLsa {}", e.getMessage());
-                }
-                //Add the NetworkLsa to lsdb
-                database.addLsa(networkLsa, true, ospfInterface);
-                addToOtherNeighborLsaTxList(networkLsa);
-            } else {
-                log.debug("No Neighbors hence not creating  NetworkLSA...!!!");
-            }
-        }
-        //Get the router LSA
-        RouterLsa routerLsa = null;
-        try {
-            routerLsa = buildRouterLsa(ospfInterface);
-        } catch (Exception e) {
-            log.debug("Error while building RouterLsa {}", e.getMessage());
-        }
-        //Add the RouterLSA to lsdb
-        database.addLsa(routerLsa, true, ospfInterface);
-        addToOtherNeighborLsaTxList(routerLsa);
-    }
-
-    /**
-     * Builds a network LSA.
-     *
-     * @param interfaceIp interface IP address
-     * @param mask        interface network mask
-     * @return NetworkLsa instance
-     * @throws OspfParseException might throws exception
-     */
-    public NetworkLsa buildNetworkLsa(Ip4Address interfaceIp, Ip4Address mask) throws OspfParseException {
-        // generate the Router-LSA for this Area.
-        NetworkLsa networkLsa = new NetworkLsa();
-        networkLsa.setAdvertisingRouter(routerId);
-        networkLsa.setLinkStateId(interfaceIp.toString());
-        networkLsa.setLsType(OspfLsaType.NETWORK.value());
-        networkLsa.setAge(1);
-        networkLsa.setOptions(2);
-        networkLsa.setNetworkMask(mask);
-        //Adding our own router.
-        networkLsa.addAttachedRouter(routerId());
-        Iterator iter = ospfInterfaceList.iterator();
-        OspfInterfaceImpl ospfInterface = null;
-        while (iter.hasNext()) {
-            ospfInterface = (OspfInterfaceImpl) iter.next();
-            if (ospfInterface.ipAddress().equals(interfaceIp)) {
-                break;
-            }
-        }
-        if (ospfInterface != null) {
-            List<OspfNbr> neighborsInFullState = getNeighborsInFullState(ospfInterface);
-            if (neighborsInFullState != null) {
-                for (OspfNbr ospfnbr : neighborsInFullState) {
-                    networkLsa.addAttachedRouter(ospfnbr.neighborId());
-                    log.debug("Adding attached neighbor:: {}", ospfnbr.neighborId());
-                }
-            }
-        }
-        networkLsa.setLsSequenceNo(database.getLsSequenceNumber(OspfLsaType.NETWORK));
-        //Find the byte length and add it in lsa object
-        ChecksumCalculator checksum = new ChecksumCalculator();
-        byte[] lsaBytes = networkLsa.asBytes();
-        networkLsa.setLsPacketLen(lsaBytes.length);
-        //Convert lsa object to byte again to reflect the packet length which we added.
-        lsaBytes = networkLsa.asBytes();
-        //find the checksum
-        byte[] twoByteChecksum = checksum.calculateLsaChecksum(lsaBytes,
-                                                               OspfUtil.LSAPACKET_CHECKSUM_POS1,
-                                                               OspfUtil.LSAPACKET_CHECKSUM_POS2);
-        int checkSumVal = OspfUtil.byteToInteger(twoByteChecksum);
-        networkLsa.setLsCheckSum(checkSumVal);
-        return networkLsa;
-    }
-
-    /**
-     * Builds Router LSA.
-     *
-     * @param ospfInterface Interface instance
-     * @return routerLsa Router LSA instance
-     * @throws OspfParseException might throws exception
-     */
-    public RouterLsa buildRouterLsa(OspfInterface ospfInterface) throws OspfParseException {
-        // generate the Router-LSA for this Area.
-        RouterLsa routerLsa = new RouterLsa();
-        routerLsa.setAdvertisingRouter(routerId);
-        routerLsa.setLinkStateId(routerId.toString());
-        routerLsa.setLsType(OspfLsaType.ROUTER.value());
-        routerLsa.setAge(1);
-        routerLsa.setOptions(options);
-        routerLsa.setAreaBorderRouter(false);
-        routerLsa.setAsBoundaryRouter(false);
-        routerLsa.setVirtualEndPoint(false);
-        buildLinkForRouterLsa(routerLsa, ospfInterface);
-        routerLsa.setLsSequenceNo(database.getLsSequenceNumber(OspfLsaType.ROUTER));
-        //Find the byte length and add it in lsa object
-        ChecksumCalculator checksum = new ChecksumCalculator();
-        byte[] lsaBytes = routerLsa.asBytes();
-        routerLsa.setLsPacketLen(lsaBytes.length);
-        //Convert lsa object to byte again to reflect the packet length which we added.
-        lsaBytes = routerLsa.asBytes();
-        //find the checksum
-        byte[] twoByteChecksum = checksum.calculateLsaChecksum(lsaBytes,
-                                                               OspfUtil.LSAPACKET_CHECKSUM_POS1,
-                                                               OspfUtil.LSAPACKET_CHECKSUM_POS2);
-        int checkSumVal = OspfUtil.byteToInteger(twoByteChecksum);
-        routerLsa.setLsCheckSum(checkSumVal);
-        return routerLsa;
-    }
-
-    /**
-     * Builds LSA link for router LSA.
-     *
-     * @param routerLsa     router LSA instance
-     * @param ospfInterface interface instance
-     */
-    private void buildLinkForRouterLsa(RouterLsa routerLsa, OspfInterface ospfInterface) {
-        OspfInterfaceImpl nextInterface;
-        Iterator interfaces = ospfInterfaceList.iterator();
-        while (interfaces.hasNext()) {
-            nextInterface = (OspfInterfaceImpl) interfaces.next();
-            if (nextInterface.state() == OspfInterfaceState.DOWN) {
-                continue;
-            } else if (nextInterface.state() == OspfInterfaceState.LOOPBACK) {
-                OspfLsaLink link = new OspfLsaLink();
-                link.setLinkData("-1");
-                link.setLinkId(nextInterface.ipAddress().toString());
-                link.setLinkType(3);
-                link.setMetric(0);
-                link.setTos(0);
-                routerLsa.addRouterLink(link);
-                routerLsa.incrementLinkNo();
-            } else if (nextInterface.state() == OspfInterfaceState.POINT2POINT) {
-                // adding all neighbour routers
-                List<OspfNbr> neighborsInFullState = getNeighborsInFullState(nextInterface);
-                if (neighborsInFullState != null) {
-                    log.debug("Adding OspfLsaLink ::neighborsInFullState {}, InterfaceIP: {}",
-                              neighborsInFullState.size(), nextInterface.ipAddress());
-                    for (OspfNbr ospfnbr : neighborsInFullState) {
-                        OspfLsaLink link = new OspfLsaLink();
-                        link.setLinkData(nextInterface.ipAddress().toString());
-                        link.setLinkId(ospfnbr.neighborId().toString());
-                        link.setLinkType(1);
-                        link.setMetric(0);
-                        link.setTos(0);
-                        routerLsa.addRouterLink(link);
-                        routerLsa.incrementLinkNo();
-                        log.debug("Added OspfLsaLink :: {}, neighborIP: {}, routerLinks: {}",
-                                  ospfnbr.neighborId(), ospfnbr.neighborIpAddr(), routerLsa.noLink());
-                    }
-                }
-                // adding the self address
-                OspfLsaLink link = new OspfLsaLink();
-                link.setLinkData(nextInterface.ipNetworkMask().toString());
-                link.setLinkId(nextInterface.ipAddress().toString());
-                link.setLinkType(3);
-                link.setMetric(0);
-                link.setTos(0);
-                routerLsa.addRouterLink(link);
-                routerLsa.incrementLinkNo();
-            } else {
-                buildLinkForRouterLsaBroadcast(routerLsa, nextInterface);
-            }
-        }
-    }
-
-    /**
-     * Builds LSA link for router LSA.
-     *
-     * @param routerLsa     router LSA instance
-     * @param ospfInterface interface instance
-     */
-    private void buildLinkForRouterLsaBroadcast(RouterLsa routerLsa, OspfInterface ospfInterface) {
-        OspfInterfaceImpl ospfInterfaceImpl = (OspfInterfaceImpl) ospfInterface;
-        if (ospfInterfaceImpl.state() == OspfInterfaceState.WAITING) {
-            OspfLsaLink link = new OspfLsaLink();
-            link.setLinkData(ospfInterface.ipNetworkMask().toString());
-            //Link id should be set to ip network number
-            link.setLinkId(ospfInterface.ipAddress().toString());
-            link.setLinkType(3);
-            link.setMetric(0);
-            link.setTos(0);
-            routerLsa.addRouterLink(link);
-            routerLsa.incrementLinkNo();
-        } else if (ospfInterfaceImpl.state() == OspfInterfaceState.DR) {
-            OspfLsaLink link = new OspfLsaLink();
-            link.setLinkData(ospfInterface.ipAddress().toString());
-            link.setLinkId(ospfInterface.ipAddress().toString());
-            link.setLinkType(2);
-            link.setMetric(0);
-            link.setTos(0);
-            routerLsa.addRouterLink(link);
-            routerLsa.incrementLinkNo();
-        } else if (ospfInterfaceImpl.state() == OspfInterfaceState.BDR ||
-                ospfInterfaceImpl.state() == OspfInterfaceState.DROTHER) {
-            OspfLsaLink link = new OspfLsaLink();
-            link.setLinkData(ospfInterface.ipAddress().toString());
-            link.setLinkId(ospfInterface.dr().toString());
-            link.setLinkType(2);
-            link.setMetric(0);
-            link.setTos(0);
-            routerLsa.addRouterLink(link);
-            routerLsa.incrementLinkNo();
-        }
-    }
-
-    /**
-     * Gets the area id.
-     *
-     * @return area id
-     */
-    public Ip4Address areaId() {
-        return areaId;
-    }
-
-    /**
-     * Sets the area id.
-     *
-     * @param areaId area id
-     */
-    @JsonProperty("areaId")
-    public void setAreaId(Ip4Address areaId) {
-        this.areaId = areaId;
-    }
-
-    /**
-     * Gets external routing capability.
-     *
-     * @return true if external routing capable, else false
-     */
-    public boolean isExternalRoutingCapability() {
-        return externalRoutingCapability;
-    }
-
-    /**
-     * Sets external routing capability.
-     *
-     * @param externalRoutingCapability true if external routing capable, else false
-     */
-    @JsonProperty("externalRoutingCapability")
-    public void setExternalRoutingCapability(boolean externalRoutingCapability) {
-        this.externalRoutingCapability = externalRoutingCapability;
-    }
-
-    /**
-     * Gets the list of interfaces in this area.
-     *
-     * @return list of interfaces
-     */
-    public List<OspfInterface> ospfInterfaceList() {
-        return ospfInterfaceList;
-    }
-
-    /**
-     * Sets the list of interfaces attached to the area.
-     *
-     * @param ospfInterfaceList list of OspfInterface instances
-     */
-    @JsonProperty("interface")
-    public void setOspfInterfaceList(List<OspfInterface> ospfInterfaceList) {
-        this.ospfInterfaceList = ospfInterfaceList;
-    }
-
-    /**
-     * Checks all neighbors belonging to this area whether they are in state EXCHANGE or LOADING.
-     * Return false if there is at least one, else return true. This Method is used by
-     * "processReceivedLsa()" in the neighbor class.
-     *
-     * @return boolean indicating that there is no Neighbor in Database Exchange
-     */
-    public boolean noNeighborInLsaExchangeProcess() {
-        OspfInterfaceImpl nextInterface;
-        OspfNeighborState nextNeighborState;
-        Iterator interfaces = ospfInterfaceList.iterator();
-        while (interfaces.hasNext()) {
-            nextInterface = (OspfInterfaceImpl) interfaces.next();
-            Iterator neighbors = nextInterface.listOfNeighbors().values().iterator();
-            while (neighbors.hasNext()) {
-                nextNeighborState = ((OspfNbrImpl) neighbors.next()).getState();
-                if (nextNeighborState == OspfNeighborState.EXCHANGE ||
-                        nextNeighborState == OspfNeighborState.LOADING) {
-                    return false;
-                }
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Gets header of all types of LSAs.
-     *
-     * @param excludeMaxAgeLsa need to include(true) or exclude(false) maxage lsa's
-     * @param isOpaquecapable  need to include(true) or exclude(false) Type 10 Opaque lsa's
-     * @return list of lsa header in the lsdb
-     */
-    public List getLsaHeaders(boolean excludeMaxAgeLsa, boolean isOpaquecapable) {
-        return database.getAllLsaHeaders(excludeMaxAgeLsa, isOpaquecapable);
-    }
-
-    /**
-     * Gets the LSA from LSDB based on the input.
-     *
-     * @param lsType            type of lsa to form the key
-     * @param linkStateID       link state id to form the key
-     * @param advertisingRouter advertising router to form the key
-     * @return lsa wrapper instance which contains the Lsa
-     */
-    public LsaWrapper getLsa(int lsType, String linkStateID, String advertisingRouter) {
-        String lsaKey = lsType + "-" + linkStateID + "-" + advertisingRouter;
-        if (lsType == OspfParameters.LINK_LOCAL_OPAQUE_LSA || lsType == OspfParameters.AREA_LOCAL_OPAQUE_LSA ||
-                lsType == OspfParameters.AS_OPAQUE_LSA) {
-            try {
-                byte[] linkStateAsBytes = InetAddress.getByName(linkStateID).getAddress();
-
-                int opaqueType = linkStateAsBytes[0];
-                int opaqueId = OspfUtil.byteToInteger(Arrays.copyOfRange(linkStateAsBytes, 1,
-                                                                     linkStateAsBytes.length));
-                lsaKey = lsType + "-" + opaqueType + opaqueId + "-" + advertisingRouter;
-            } catch (UnknownHostException uhe) {
-                log.warn("Can't resolve host in Lsa wrapper", uhe);
-                return null;
-            }
-        }
-        return database.findLsa(lsType, lsaKey);
-    }
-
-
-    /**
-     * Checks whether an instance of the given LSA exists in the database belonging to this area.
-     * If so return true else false.
-     *
-     * @param lookupLsa ospf LSA instance to lookup
-     * @return LSA wrapper instance which contains the Lsa
-     */
-    public LsaWrapper lsaLookup(OspfLsa lookupLsa) {
-        return database.lsaLookup((LsaHeader) lookupLsa);
-    }
-
-    /**
-     * Checks whether an instance of the given LSA exists in the database belonging to this area.
-     * If so return true else false.
-     *
-     * @param lsa1 OSPF LSA instance to compare
-     * @param lsa2 OSPF LSA instance to compare
-     * @return "same" if both instances are same, "latest" if lsa1 is latest, or "old" if lsa1 is old
-     */
-    public String isNewerOrSameLsa(OspfLsa lsa1, OspfLsa lsa2) {
-        return database.isNewerOrSameLsa((LsaHeader) lsa1, (LsaHeader) lsa2);
-    }
-
-    /**
-     * Methods gets called from ChannelHandler to add the received LSA to LSDB.
-     *
-     * @param ospfLsa       OSPF LSA instance
-     * @param ospfInterface OSPF interface instance
-     */
-    public void addLsa(OspfLsa ospfLsa, OspfInterface ospfInterface) {
-        //second param is false as lsa from network
-        database.addLsa((LsaHeader) ospfLsa, false, ospfInterface);
-    }
-
-    /**
-     * Methods gets called from ChannelHandler to add the received LSA to LSDB.
-     *
-     * @param ospfLsa          OSPF LSA instance
-     * @param isSelfOriginated true if the LSA is self originated. Else false
-     * @param ospfInterface    OSPF interface instance
-     */
-    public void addLsa(OspfLsa ospfLsa, boolean isSelfOriginated, OspfInterface ospfInterface) {
-        database.addLsa((LsaHeader) ospfLsa, isSelfOriginated, ospfInterface);
-    }
-
-    /**
-     * Adds the LSA to maxAge bin.
-     *
-     * @param key     key to add it to LSDB
-     * @param wrapper LSA wrapper instance
-     */
-    public void addLsaToMaxAgeBin(String key, LsaWrapper wrapper) {
-        database.addLsaToMaxAgeBin(key, wrapper);
-    }
-
-    /**
-     * Sets router sequence number for router LSA.
-     *
-     * @param newSequenceNumber sequence number
-     */
-    public void setDbRouterSequenceNumber(long newSequenceNumber) {
-        database.setRouterLsaSeqNo(newSequenceNumber);
-    }
-
-    /**
-     * Methods gets called from ChannelHandler to delete the LSA.
-     *
-     * @param ospfLsa the LSA instance to delete
-     */
-    public void deleteLsa(LsaHeader ospfLsa) {
-        database.deleteLsa(ospfLsa);
-    }
-
-    /**
-     * Removes LSA from bin.
-     *
-     * @param lsaWrapper the LSA wrapper instance to delete
-     */
-    public void removeLsaFromBin(LsaWrapper lsaWrapper) {
-        database.removeLsaFromBin(lsaWrapper);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("areaID", areaId)
-                .add("ospfInterfaceList", ospfInterfaceList)
-                .add("externalRoutingCapability", externalRoutingCapability)
-                .toString();
-    }
-
-    /**
-     * Checks all Neighbors belonging to this Area whether they are in state lesser than the EXCHANGE.
-     * Creates list of such neighbors
-     * Returns list of neighbors who satisfy the conditions
-     *
-     * @param ospfInterface OSPF interface instance
-     * @return List of interfaces having state lesser than exchange
-     */
-    public List<OspfNbr> getNeighborsInFullState(OspfInterface ospfInterface) {
-
-        List<OspfNbr> listEligibleNeighbors = null;
-        OspfNbrImpl ospfNeighbor = null;
-        OspfNeighborState nextNeighborState;
-        Iterator nbrInterface = ospfInterface.listOfNeighbors().values().iterator();
-        while (nbrInterface.hasNext()) {
-            ospfNeighbor = (OspfNbrImpl) nbrInterface.next();
-            nextNeighborState = ospfNeighbor.getState();
-            if (nextNeighborState.getValue() == OspfNeighborState.FULL.getValue()) {
-                if (listEligibleNeighbors == null) {
-                    listEligibleNeighbors = new ArrayList<OspfNbr>();
-                    listEligibleNeighbors.add(ospfNeighbor);
-                } else {
-                    listEligibleNeighbors.add(ospfNeighbor);
-                }
-            }
-        }
-        return listEligibleNeighbors;
-    }
-
-    /**
-     * Gets the LSDB LSA key from LSA header.
-     *
-     * @param lsaHeader LSA header instance
-     * @return key LSA key
-     */
-    public String getLsaKey(LsaHeader lsaHeader) {
-        return database.getLsaKey(lsaHeader);
-    }
-
-    /**
-     * Adds the received LSA in other neighbors tx list.
-     *
-     * @param recLsa LSA Header instance
-     */
-    public void addToOtherNeighborLsaTxList(LsaHeader recLsa) {
-        //Add the received LSA in other neighbors retransmission list.
-        log.debug("OspfAreaImpl: addToOtherNeighborLsaTxList");
-        List<OspfInterface> ospfInterfaces = ospfInterfaceList();
-        for (OspfInterface ospfInterfaceFromArea : ospfInterfaces) {
-            Map neighbors = ospfInterfaceFromArea.listOfNeighbors();
-            for (Object neighborIP : neighbors.keySet()) {
-                OspfNbrImpl nbr = (OspfNbrImpl) neighbors.get(neighborIP);
-                if (nbr.getState().getValue() < OspfNeighborState.EXCHANGE.getValue()) {
-                    continue;
-                }
-                String key = database.getLsaKey(recLsa);
-                if (nbr.getState() == OspfNeighborState.EXCHANGE || nbr.getState() == OspfNeighborState.LOADING) {
-                    if (nbr.getLsReqList().containsKey(key)) {
-                        LsaWrapper lsWrapper = lsaLookup(recLsa);
-                        if (lsWrapper != null) {
-                            LsaHeader ownLsa = (LsaHeader) lsWrapper.ospfLsa();
-                            String status = isNewerOrSameLsa(recLsa, ownLsa);
-                            if (status.equals("old")) {
-                                continue;
-                            } else if (status.equals("same")) {
-                                log.debug("OspfAreaImpl: addToOtherNeighborLsaTxList: " +
-                                                  "Removing lsa from reTxtList {}", key);
-                                nbr.getLsReqList().remove(key);
-                                continue;
-                            } else {
-                                log.debug("OspfAreaImpl: addToOtherNeighborLsaTxList: " +
-                                                  "Removing lsa from reTxtList {}", key);
-                                nbr.getLsReqList().remove(key);
-                            }
-                        }
-                    }
-                }
-                if (recLsa.advertisingRouter().toString().equals((String) neighborIP)) {
-                    continue;
-                }
-                if ((recLsa.lsType() == OspfParameters.LINK_LOCAL_OPAQUE_LSA ||
-                        recLsa.lsType() == OspfParameters.AREA_LOCAL_OPAQUE_LSA)) {
-                    if (nbr.isOpaqueCapable()) {
-                        log.debug("OspfAreaImpl: addToOtherNeighborLsaTxList: Adding lsa to reTxtList {}",
-                                  recLsa);
-                        nbr.getReTxList().put(key, recLsa);
-                    }
-                } else {
-                    log.debug("OspfAreaImpl: addToOtherNeighborLsaTxList: Adding lsa to reTxtList {}",
-                              recLsa);
-                    nbr.getReTxList().put(key, recLsa);
-                }
-            }
-        }
-    }
-
-    /**
-     * Gets the options value.
-     *
-     * @return options value
-     */
-    public int options() {
-        return options;
-    }
-
-    /**
-     * Sets the options value.
-     *
-     * @param options options value
-     */
-    public void setOptions(int options) {
-        this.options = options;
-    }
-
-    /**
-     * Gets the opaque enabled options value.
-     *
-     * @return opaque enabled options value
-     */
-    public int opaqueEnabledOptions() {
-        return Integer.parseInt(OspfParameters.OPAQUE_ENABLED_OPTION_VALUE, 2);
-    }
-
-    /**
-     * Gets the lsdb instance for this area.
-     *
-     * @return lsdb instance
-     */
-    public OspfLsdb database() {
-        return database;
-    }
-}
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfInterfaceImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfInterfaceImpl.java
deleted file mode 100644
index be503c2..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfInterfaceImpl.java
+++ /dev/null
@@ -1,1801 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.area;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelFuture;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.LsaWrapper;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfLinkTed;
-import org.onosproject.ospf.controller.OspfLsa;
-import org.onosproject.ospf.controller.OspfMessage;
-import org.onosproject.ospf.controller.OspfNbr;
-import org.onosproject.ospf.controller.OspfNeighborState;
-import org.onosproject.ospf.controller.OspfPacketType;
-import org.onosproject.ospf.controller.OspfRouter;
-import org.onosproject.ospf.controller.TopologyForDeviceAndLink;
-import org.onosproject.ospf.controller.impl.Controller;
-import org.onosproject.ospf.controller.impl.OspfNbrImpl;
-import org.onosproject.ospf.controller.impl.TopologyForDeviceAndLinkImpl;
-import org.onosproject.ospf.controller.lsdb.LsaWrapperImpl;
-import org.onosproject.ospf.controller.lsdb.OspfLsdbImpl;
-import org.onosproject.ospf.controller.util.OspfEligibleRouter;
-import org.onosproject.ospf.controller.util.OspfInterfaceType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.ospfpacket.OspfMessageWriter;
-import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
-import org.onosproject.ospf.protocol.ospfpacket.subtype.LsRequestPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate;
-import org.onosproject.ospf.protocol.util.ChecksumCalculator;
-import org.onosproject.ospf.protocol.util.OspfInterfaceState;
-import org.onosproject.ospf.protocol.util.OspfParameters;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Representation of an OSPF interface.
- */
-public class OspfInterfaceImpl implements OspfInterface {
-    private static final Logger log = LoggerFactory.getLogger(OspfInterfaceImpl.class);
-    private int interfaceIndex;
-    private Ip4Address ipAddress;
-    private Ip4Address ipNetworkMask;
-    private Channel channel = null;
-    private int helloIntervalTime;
-    private int routerDeadIntervalTime;
-    private int routerPriority;
-    private int interfaceType;
-    private int mtu;
-    private int reTransmitInterval;
-    private Ip4Address dr;
-    private Ip4Address bdr;
-    private OspfInterfaceState state;
-    private List<LsaHeader> linkStateHeaders = new ArrayList<>();
-    private Map<String, OspfNbr> listOfNeighbors = new ConcurrentHashMap<>();
-    private Map<String, LsaHeader> listOfNeighborMap = new ConcurrentHashMap<>();
-    private long delay = 0;
-    private InternalHelloTimer helloTimerTask;
-    private InternalWaitTimer waitTimerTask;
-    private InternalDelayedAckTimer delayedAckTimerTask;
-    private ScheduledExecutorService exServiceHello;
-    private ScheduledExecutorService exServiceWait;
-    private ScheduledExecutorService exServiceDelayedAck;
-    private boolean isDelayedAckTimerScheduled = false;
-    private int delayedAckTimerInterval = 2500;
-    private int interfaceTypeOldValue = 0;
-    private TopologyForDeviceAndLink topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl();
-    private OspfArea ospfArea;
-    private Controller controller;
-
-
-    /**
-     * Gets the interface state.
-     *
-     * @return interfaceState state of the interface
-     */
-    public OspfInterfaceState state() {
-        return state;
-    }
-
-    /**
-     * Sets the interface state.
-     *
-     * @param ospfInterfaceState interface state enum instance
-     */
-    public void setState(OspfInterfaceState ospfInterfaceState) {
-        this.state = ospfInterfaceState;
-    }
-
-    /**
-     * Sets the netty channel.
-     *
-     * @param channel channel
-     */
-    public void setChannel(Channel channel) {
-        this.channel = channel;
-    }
-
-    /**
-     * Returns OSPF area instance.
-     *
-     * @return OSPF area instance
-     */
-    @Override
-    public OspfArea ospfArea() {
-        return ospfArea;
-    }
-
-    /**
-     * Sets OSPF controller instance.
-     *
-     * @param controller OSPF controller instance
-     */
-    public void setController(Controller controller) {
-        this.controller = controller;
-    }
-
-    /**
-     * Sets OSPF area instance.
-     *
-     * @param ospfArea OSPF area instance
-     */
-    @Override
-    public void setOspfArea(OspfArea ospfArea) {
-        this.ospfArea = ospfArea;
-    }
-
-    /**
-     * Gets interface state.
-     *
-     * @return interface state
-     */
-    public String interfaceState() {
-        return state.interfaceState();
-    }
-
-    /**
-     * Gets link state headers.
-     *
-     * @return get the list of lsa headers
-     */
-    public List<LsaHeader> linkStateHeaders() {
-        Set<String> key = listOfNeighborMap.keySet();
-        for (String keys : key) {
-            LsaHeader lsaHeader = listOfNeighborMap.get(keys);
-            linkStateHeaders.add(lsaHeader);
-        }
-        return linkStateHeaders;
-    }
-
-    /**
-     * Gets IP network mask.
-     *
-     * @return network mask
-     */
-    @Override
-    public Ip4Address ipNetworkMask() {
-        return ipNetworkMask;
-    }
-
-    /**
-     * Sets IP network mask.
-     *
-     * @param ipNetworkMask network mask
-     */
-    @Override
-    public void setIpNetworkMask(Ip4Address ipNetworkMask) {
-        this.ipNetworkMask = ipNetworkMask;
-    }
-
-    /**
-     * Adds neighboring router to list.
-     *
-     * @param ospfNbr ospfNbr instance
-     */
-    @Override
-    public void addNeighbouringRouter(OspfNbr ospfNbr) {
-        listOfNeighbors.put(ospfNbr.neighborId().toString(), ospfNbr);
-    }
-
-    /**
-     * Gets the neighbour details from listOfNeighbors map.
-     *
-     * @param neighborId neighbors id
-     * @return ospfNbr neighbor instance
-     */
-    @Override
-    public OspfNbr neighbouringRouter(String neighborId) {
-        return listOfNeighbors.get(neighborId);
-    }
-
-    /**
-     * Removes all the neighbors.
-     */
-    @Override
-    public void removeNeighbors() {
-        Set<String> neighbors = listOfNeighbors.keySet();
-        for (String neighborId : neighbors) {
-            removeNeighbor(listOfNeighbors.get(neighborId));
-            log.debug("Neighbor removed - {}", neighborId);
-        }
-        listOfNeighbors.clear();
-    }
-
-    /**
-     * Removes neighbor from the interface neighbor map.
-     *
-     * @param ospfNeighbor OSPF neighbor instance
-     */
-    public void removeNeighbor(OspfNbr ospfNeighbor) {
-        log.debug("Neighbor removed - {}", ospfNeighbor.neighborId());
-        ospfNeighbor.stopInactivityTimeCheck();
-        ospfNeighbor.stopFloodingTimer();
-        ospfNeighbor.stopRxMtDdTimer();
-        ospfNeighbor.stopRxMtLsrTimer();
-
-        listOfNeighbors.remove(ospfNeighbor.neighborId().toString());
-    }
-
-
-    /**
-     * Adds LSA header to map.
-     *
-     * @param lsaHeader LSA header instance
-     */
-    public void addLsaHeaderForDelayAck(LsaHeader lsaHeader) {
-        String key = lsaHeader.lsType() + "-" + lsaHeader.linkStateId() + "-" +
-                lsaHeader.advertisingRouter();
-        if (lsaHeader.lsType() == OspfParameters.LINK_LOCAL_OPAQUE_LSA ||
-                lsaHeader.lsType() == OspfParameters.AREA_LOCAL_OPAQUE_LSA ||
-                lsaHeader.lsType() == OspfParameters.AS_OPAQUE_LSA) {
-            OpaqueLsaHeader header = (OpaqueLsaHeader) lsaHeader;
-            key = lsaHeader.lsType() + "-" + header.opaqueType() + header.opaqueId()
-                    + "-" + lsaHeader.advertisingRouter();
-        }
-
-        log.debug("Adding LSA key {} for delayed Ack", key);
-        listOfNeighborMap.put(key, lsaHeader);
-    }
-
-    /**
-     * Removes LSA header from map.
-     *
-     * @param lsaKey key used to store LSA in map
-     */
-    @Override
-    public void removeLsaFromNeighborMap(String lsaKey) {
-        listOfNeighborMap.remove(lsaKey);
-    }
-
-    /**
-     * Checks neighbor is in the list or not.
-     *
-     * @param neighborId neighbors id
-     * @return true if neighbor in list else false
-     */
-    @Override
-    public boolean isNeighborInList(String neighborId) {
-        return listOfNeighbors.containsKey(neighborId);
-    }
-
-    /**
-     * Gets the list of neighbors.
-     *
-     * @return listOfNeighbors as key value pair
-     */
-    @Override
-    public Map<String, OspfNbr> listOfNeighbors() {
-        return listOfNeighbors;
-    }
-
-    /**
-     * Sets the list of neighbors.
-     *
-     * @param listOfNeighbors as key value pair
-     */
-    public void setListOfNeighbors(HashMap<String, OspfNbr> listOfNeighbors) {
-        this.listOfNeighbors = listOfNeighbors;
-    }
-
-    /**
-     * Returns interface index.
-     *
-     * @return interface index
-     */
-    @Override
-    public int interfaceIndex() {
-        return interfaceIndex;
-    }
-
-    /**
-     * Set interface index.
-     *
-     * @param interfaceIndex interface index
-     */
-    @Override
-    public void setInterfaceIndex(int interfaceIndex) {
-        this.interfaceIndex = interfaceIndex;
-    }
-
-    /**
-     * Gets the IP address.
-     *
-     * @return IP address
-     */
-    @Override
-    public Ip4Address ipAddress() {
-        return ipAddress;
-    }
-
-    /**
-     * Sets the interface IP address.
-     *
-     * @param ipAddress interface IP address
-     */
-    @Override
-    public void setIpAddress(Ip4Address ipAddress) {
-        this.ipAddress = ipAddress;
-    }
-
-    /**
-     * Gets router priority.
-     *
-     * @return routerPriority value
-     */
-    @Override
-    public int routerPriority() {
-        return routerPriority;
-    }
-
-    /**
-     * Sets router priority.
-     *
-     * @param routerPriority value
-     */
-    @Override
-    public void setRouterPriority(int routerPriority) {
-        this.routerPriority = routerPriority;
-    }
-
-    /**
-     * Gets hello interval time.
-     *
-     * @return hello interval time
-     */
-    @Override
-    public int helloIntervalTime() {
-        return helloIntervalTime;
-    }
-
-    /**
-     * Sets hello interval time.
-     *
-     * @param helloIntervalTime an integer interval time
-     */
-    @Override
-    public void setHelloIntervalTime(int helloIntervalTime) {
-        this.helloIntervalTime = helloIntervalTime;
-    }
-
-    /**
-     * Gets router dead interval time.
-     *
-     * @return router dead interval time
-     */
-    @Override
-    public int routerDeadIntervalTime() {
-        return routerDeadIntervalTime;
-    }
-
-    /**
-     * Sets router dead interval time.
-     *
-     * @param routerDeadIntervalTime router dead interval time
-     */
-    @Override
-    public void setRouterDeadIntervalTime(int routerDeadIntervalTime) {
-        this.routerDeadIntervalTime = routerDeadIntervalTime;
-    }
-
-    /**
-     * Gets interface type.
-     *
-     * @return interfaceType an integer represents interface type
-     */
-    @Override
-    public int interfaceType() {
-        return interfaceType;
-    }
-
-    /**
-     * Sets interface type.
-     *
-     * @param interfaceType interface type
-     */
-    @Override
-    public void setInterfaceType(int interfaceType) {
-        this.interfaceType = interfaceType;
-    }
-
-    /**
-     * Gets max transfer unit.
-     *
-     * @return mtu an integer represents max transfer unit
-     */
-    @Override
-    public int mtu() {
-        return mtu;
-    }
-
-    /**
-     * Sets max transfer unit.
-     *
-     * @param mtu max transfer unit
-     */
-    @Override
-    public void setMtu(int mtu) {
-        this.mtu = mtu;
-    }
-
-    /**
-     * Gets retransmit interval.
-     *
-     * @return retransmit interval
-     */
-    @Override
-    public int reTransmitInterval() {
-        return reTransmitInterval;
-    }
-
-    /**
-     * Sets retransmit interval.
-     *
-     * @param reTransmitInterval retransmit interval
-     */
-    @Override
-    public void setReTransmitInterval(int reTransmitInterval) {
-        this.reTransmitInterval = reTransmitInterval;
-    }
-
-    /**
-     * Gets designated routers IP address.
-     *
-     * @return dr designated routers IP address
-     */
-    @Override
-    public Ip4Address dr() {
-        return dr;
-    }
-
-    /**
-     * Sets designated routers IP address.
-     *
-     * @param dr designated routers IP address
-     */
-    @Override
-    public void setDr(Ip4Address dr) {
-        this.dr = dr;
-    }
-
-    /**
-     * Gets backup designated routers IP address.
-     *
-     * @return bdr backup designated routers IP address
-     */
-    @Override
-    public Ip4Address bdr() {
-        return bdr;
-    }
-
-    /**
-     * Sets backup designated routers IP address.
-     *
-     * @param bdr backup designated routers IP address
-     */
-    @Override
-    public void setBdr(Ip4Address bdr) {
-        this.bdr = bdr;
-    }
-
-    /**
-     * Represents an interface is up and connected.
-     */
-    @Override
-    public void interfaceUp() {
-        log.debug("OSPFInterfaceChannelHandler::interfaceUp...!!!");
-        if (interfaceType() == OspfInterfaceType.POINT_TO_POINT.value()) {
-            setState(OspfInterfaceState.POINT2POINT);
-            interfaceTypeOldValue = interfaceType();
-            log.debug("OSPFInterfaceChannelHandler::InterfaceType {} state {} ",
-                      interfaceType(), state());
-        } else if (interfaceType() == OspfInterfaceType.BROADCAST.value()) {
-            //if router priority is 0, move the state to DROther
-            interfaceTypeOldValue = interfaceType();
-            if (routerPriority() == 0) {
-                setState(OspfInterfaceState.DROTHER);
-            } else {
-                log.debug("OSPFInterfaceChannelHandler::InterfaceType {} state {} RouterPriority {}",
-                          interfaceType(),
-                          state(), routerPriority());
-                setState(OspfInterfaceState.WAITING);
-                //start wait timer - like inactivity timer with router deadInterval
-                startWaitTimer();
-            }
-        }
-        // Start hello timer with interval from config - convert seconds to milliseconds
-        startHelloTimer();
-        ospfArea.refreshArea(this);
-    }
-
-
-    /**
-     * Gets called when a BDR was detected before the wait timer expired.
-     *
-     * @param ch channel instance
-     */
-    public void backupSeen(Channel ch) {
-        log.debug("OSPFInterfaceChannelHandler::backupSeen ");
-        if (state() == OspfInterfaceState.WAITING) {
-            electRouter(ch);
-        }
-    }
-
-    /**
-     * Gets called when no hello message received for particular period.
-     *
-     * @param ch channel instance
-     */
-    public void waitTimer(Channel ch) {
-        log.debug("OSPFInterfaceChannelHandler::waitTimer ");
-        //According to RFC-2328 section 9.4
-        if (state() == OspfInterfaceState.WAITING) {
-            electRouter(ch);
-        }
-    }
-
-    /**
-     * Initiates DR election process.
-     *
-     * @param ch netty channel instance
-     */
-    public void callDrElection(Channel ch) {
-        log.debug("OSPFInterfaceChannelHandler::callDrElection ");
-        //call when timer expired
-        //no hello message received for particular interval
-        //section 9.4
-        electRouter(ch);
-        interfaceTypeOldValue = interfaceType();
-    }
-
-    /**
-     * Neighbor change event is triggered when the router priority gets changed.
-     */
-    public void neighborChange() {
-        log.debug("OSPFInterfaceChannelHandler::neighborChange ");
-        if (state() == OspfInterfaceState.DR || state() == OspfInterfaceState.BDR ||
-                state() == OspfInterfaceState.DROTHER) {
-            electRouter(channel);
-        }
-    }
-
-    /**
-     * Gets called when an interface is down.
-     * All interface variables are reset, and interface timers disabled.
-     * Also all neighbor connections associated with the interface are destroyed.
-     */
-    @Override
-    public void interfaceDown() {
-        log.debug("OSPFInterfaceChannelHandler::interfaceDown ");
-        stopHelloTimer();
-        listOfNeighbors().clear();
-        setState(OspfInterfaceState.DOWN);
-    }
-
-    /**
-     * When an OSPF message received it is handed over to this method.
-     * Based on the type of the OSPF message received it will be handed over
-     * to corresponding message handler methods.
-     *
-     * @param ospfMessage received OSPF message
-     * @param ctx         channel handler context instance.
-     */
-    @Override
-    public void processOspfMessage(OspfMessage ospfMessage, ChannelHandlerContext ctx) {
-        log.debug("OspfChannelHandler::processOspfMessage...!!!");
-
-        if (!validateMessage(ospfMessage)) {
-            return;
-        }
-
-        try {
-            switch (ospfMessage.ospfMessageType().value()) {
-                case OspfParameters.HELLO:
-                    processHelloMessage(ospfMessage, ctx);
-                    break;
-                case OspfParameters.DD:
-                    processDdMessage(ospfMessage, ctx);
-                    break;
-                case OspfParameters.LSREQUEST:
-                    processLsRequestMessage(ospfMessage, ctx);
-                    break;
-                case OspfParameters.LSUPDATE:
-                    processLsUpdateMessage(ospfMessage, ctx);
-                    break;
-                case OspfParameters.LSACK:
-                    processLsAckMessage(ospfMessage, ctx);
-                    break;
-                default:
-                    log.debug("Unknown packet to process...!!!");
-                    break;
-            }
-        } catch (OspfParseException ope) {
-            log.debug("Error parsing packet", ope);
-        }
-    }
-
-    /**
-     * Validates the OSPF message received.
-     *
-     * @param ospfMessage OSPF message.
-     * @return true if it is a valid else false.
-     */
-    private boolean validateMessage(OspfMessage ospfMessage) {
-        boolean isValid = true;
-        OspfPacketHeader header = (OspfPacketHeader) ospfMessage;
-
-        //added the check to eliminate self origin packets also two interfaces on same router.
-        if (!header.sourceIp().equals(ipAddress()) && !header.routerId().equals(
-                ospfArea.routerId())) {
-            //Verify the checksum
-            ChecksumCalculator checksum = new ChecksumCalculator();
-            if (!checksum.isValidOspfCheckSum(ospfMessage, OspfUtil.OSPFPACKET_CHECKSUM_POS1,
-                                              OspfUtil.OSPFPACKET_CHECKSUM_POS2)) {
-                log.debug("Checksum mismatch. Received packet type {} ", ospfMessage.ospfMessageType());
-                return false;
-            }
-            if (((OspfPacketHeader) ospfMessage).ospfVersion() != OspfUtil.OSPF_VERSION_2) {
-                log.debug("Received osfpMessage Version should match with Interface Version ");
-                return false;
-            }
-            if (!((OspfPacketHeader) ospfMessage).areaId().equals(ospfArea.areaId())) {
-                log.debug("Received ospf packets are from different area than our Area ID. " +
-                                  "Received Area ID {}, Our AreaId {} ",
-                          ((OspfPacketHeader) ospfMessage).areaId(), ospfArea.areaId());
-                return false;
-            }
-
-            //According to RFC-2328 (8.2)
-            /*
-             * ABR should receive packets from backbone 0.0.0.0 as we are not acting as ABR
-             * we are rejecting the packet.
-             */
-            if (((OspfPacketHeader) ospfMessage).areaId().equals(Ip4Address.valueOf("0.0.0.0"))) {
-                log.debug("ABR should receive packets from backbone 0.0.0.0 as we are not acting as " +
-                                  "ABR we are rejecting the ospf packet");
-                return false;
-            }
-            if (interfaceType() == OspfInterfaceType.BROADCAST.value() &&
-                    !OspfUtil.sameNetwork(((OspfPacketHeader) ospfMessage).sourceIp(),
-                                          ipAddress(), ipNetworkMask())) {
-                log.debug("Received packets from different subnets. Discarding...!!!");
-                return false;
-            }
-        } else {
-            isValid = false;
-        }
-
-        return isValid;
-    }
-
-    /**
-     * Processes Hello message.
-     *
-     * @param ospfMessage OSPF message instance.
-     * @param ctx         context instance.
-     */
-    void processHelloMessage(OspfMessage ospfMessage, ChannelHandlerContext ctx) {
-        Channel channel = ctx.getChannel();
-        log.debug("OspfChannelHandler::processHelloMessage...!!!");
-        HelloPacket helloPacket = (HelloPacket) ospfMessage;
-
-        // processing of hello packet as per RFC 2328 section 10.5
-        log.debug("OspfChannelHandler::processHelloMessage::Interface Type {} OSPFInterfaceState {} ",
-                  interfaceType(), state());
-
-        if (interfaceType() != OspfInterfaceType.POINT_TO_POINT.value()) {
-            if (!helloPacket.networkMask().equals(ipNetworkMask())) {
-                log.debug("OspfChannelHandler::processHelloMessage::Hello Packet Received does not " +
-                                  "match the same network mask as the configure Interface");
-                return;
-            }
-        }
-        if (helloPacket.helloInterval() != helloIntervalTime()) {
-            log.debug("OspfChannelHandler::processHelloMessage::Hello Packet Received have the same " +
-                              "hello interval as configured Interface");
-            return;
-        }
-        if (helloPacket.routerDeadInterval() != routerDeadIntervalTime()) {
-            log.debug("OspfChannelHandler::processHelloMessage::Hello Packet Received have the same " +
-                              "Router Dead interval as configured Interface");
-            return;
-        }
-
-        if (interfaceType == OspfInterfaceType.POINT_TO_POINT.value() &&
-                !helloPacket.dr().equals(OspfUtil.DEFAULTIP)) {
-            log.debug("OspfChannelHandler::processHelloMessage:: Neighbor in broadcast network");
-            return;
-        }
-
-        if (interfaceType == OspfInterfaceType.POINT_TO_POINT.value()) {
-            // to verify if the neighbor which sent the hello is present in the OSPF Interface neighboring list .
-            OspfNbr nbr;
-            if (!isNeighborInList(helloPacket.routerId().toString())) {
-                nbr = new OspfNbrImpl(ospfArea, this, helloPacket.sourceIp(),
-                                      helloPacket.routerId(), helloPacket.options(), topologyForDeviceAndLink);
-                addNeighbouringRouter(nbr);
-            } else {
-                nbr = neighbouringRouter(helloPacket.routerId().toString());
-                nbr.setRouterPriority(helloPacket.routerPriority());
-            }
-            if (!helloPacket.containsNeighbour(ospfArea.routerId())) {
-                ((OspfNbrImpl) nbr).oneWayReceived(helloPacket, channel);
-            } else {
-                ((OspfNbrImpl) nbr).twoWayReceived(helloPacket, ctx.getChannel());
-            }
-        } else if (interfaceType == OspfInterfaceType.BROADCAST.value()) {
-
-            if (state() == OspfInterfaceState.WAITING) {
-                if ((!helloPacket.dr().equals(Ip4Address.valueOf("0.0.0.0"))) &&
-                        (!helloPacket.bdr().equals(Ip4Address.valueOf("0.0.0.0")))) {
-                    stopWaitTimer();
-                    setDr(helloPacket.dr());
-                    setBdr(helloPacket.bdr());
-                    if (helloPacket.dr().equals(ipAddress())) {
-                        setState(OspfInterfaceState.DR);
-                        //refresh router Lsa
-                        ospfArea.refreshArea(this);
-                    } else if (helloPacket.bdr().equals(ipAddress())) {
-                        setState(OspfInterfaceState.BDR);
-                        //refresh router Lsa
-                        ospfArea.refreshArea(this);
-                    } else {
-                        setState(OspfInterfaceState.DROTHER);
-                        ospfArea.refreshArea(this);
-                    }
-
-                } else if (!helloPacket.dr().equals(Ip4Address.valueOf("0.0.0.0")) ||
-                        !helloPacket.bdr().equals(Ip4Address.valueOf("0.0.0.0"))) {
-                    setDr(helloPacket.dr());
-                    setBdr(helloPacket.bdr());
-                }
-                Ip4Address sourceIp = helloPacket.sourceIp();
-                OspfNbr nbr;
-                if (!isNeighborInList(helloPacket.routerId().toString())) {
-                    nbr = new OspfNbrImpl(ospfArea, this, sourceIp, helloPacket.routerId(),
-                                          helloPacket.options(), topologyForDeviceAndLink);
-                    nbr.setNeighborId(helloPacket.routerId());
-                    nbr.setNeighborBdr(helloPacket.bdr());
-                    nbr.setNeighborDr(helloPacket.dr());
-                    nbr.setRouterPriority(helloPacket.routerPriority());
-                    addNeighbouringRouter(nbr);
-                } else {
-                    nbr = neighbouringRouter(helloPacket.routerId().toString());
-                    nbr.setRouterPriority(helloPacket.routerPriority());
-                }
-                if (!helloPacket.containsNeighbour(ospfArea.routerId())) {
-                    ((OspfNbrImpl) nbr).oneWayReceived(helloPacket, channel);
-                } else {
-                    ((OspfNbrImpl) nbr).twoWayReceived(helloPacket, ctx.getChannel());
-                }
-
-                if (helloPacket.dr().equals(sourceIp)) {
-                    if (helloPacket.bdr().equals(Ip4Address.valueOf("0.0.0.0"))) {
-                        // call backup seen
-                        stopWaitTimer();
-                        backupSeen(ctx.getChannel());
-                    }
-                }
-
-                if (helloPacket.bdr().equals(sourceIp)) {
-                    // call backup seen
-                    stopWaitTimer();
-                    backupSeen(ctx.getChannel());
-                }
-            } else {
-
-                if ((!helloPacket.dr().equals(Ip4Address.valueOf("0.0.0.0")) ||
-                        !helloPacket.bdr().equals(Ip4Address.valueOf("0.0.0.0")))
-                        && routerPriority() == 0) {
-                    setDr(helloPacket.dr());
-                    setBdr(helloPacket.bdr());
-                }
-                //To verify if the neighbor which sent the hello is present in the OSPF Interface neighboring list .
-                Ip4Address sourceIp = helloPacket.sourceIp();
-                OspfNbr nbr;
-                if (!isNeighborInList(helloPacket.routerId().toString())) {
-                    nbr = new OspfNbrImpl(ospfArea, this, sourceIp, helloPacket.routerId(),
-                                          helloPacket.options(), topologyForDeviceAndLink);
-                    nbr.setNeighborId(helloPacket.routerId());
-                    nbr.setNeighborBdr(helloPacket.bdr());
-                    nbr.setNeighborDr(helloPacket.dr());
-                    nbr.setRouterPriority(helloPacket.routerPriority());
-                    addNeighbouringRouter(nbr);
-                    ((OspfNbrImpl) nbr).oneWayReceived(helloPacket, channel);
-                } else {
-                    log.debug("OspfChannelHandler::NeighborInList::helloPacket.bdr(): {}, " +
-                                      "helloPacket.dr(): {}", helloPacket.bdr(), helloPacket.dr());
-                    nbr = neighbouringRouter(helloPacket.routerId().toString());
-                    nbr.setRouterPriority(helloPacket.routerPriority());
-                    if (!helloPacket.containsNeighbour(ospfArea.routerId())) {
-                        ((OspfNbrImpl) nbr).oneWayReceived(helloPacket, channel);
-                    } else {
-                        ((OspfNbrImpl) nbr).twoWayReceived(helloPacket, ctx.getChannel());
-                    }
-                    if (nbr.routerPriority() != helloPacket.routerPriority()) {
-                        nbr.setNeighborBdr(helloPacket.bdr());
-                        nbr.setNeighborDr(helloPacket.dr());
-                        neighborChange();
-                    }
-
-
-                    if (nbr.neighborIpAddr().equals(helloPacket.dr()) &&
-                            !(nbr.neighborIpAddr().equals(nbr.neighborDr()))) {
-                        nbr.setNeighborBdr(helloPacket.bdr());
-                        nbr.setNeighborDr(helloPacket.dr());
-                        neighborChange();
-                    }
-
-                    if (!(nbr.neighborIpAddr().equals(helloPacket.dr())) &&
-                            (nbr.neighborIpAddr().equals(nbr.neighborDr()))) {
-                        nbr.setNeighborBdr(helloPacket.bdr());
-                        nbr.setNeighborDr(helloPacket.dr());
-                        neighborChange();
-                    }
-
-                    if (nbr.neighborIpAddr().equals(helloPacket.bdr()) &&
-                            !(nbr.neighborIpAddr().equals(nbr.neighborBdr()))) {
-                        nbr.setNeighborBdr(helloPacket.bdr());
-                        nbr.setNeighborDr(helloPacket.dr());
-                        neighborChange();
-                    }
-
-                    if (!(nbr.neighborIpAddr().equals(helloPacket.bdr())) &&
-                            (nbr.neighborIpAddr().equals(nbr.neighborBdr()))) {
-                        nbr.setNeighborBdr(helloPacket.bdr());
-                        nbr.setNeighborDr(helloPacket.dr());
-                        neighborChange();
-                    }
-
-                    nbr.setNeighborBdr(helloPacket.bdr());
-                    nbr.setNeighborDr(helloPacket.dr());
-                }
-            }
-        }
-    }
-
-    /**
-     * process the DD message which received.
-     *
-     * @param ospfMessage OSPF message instance.
-     * @param ctx         channel handler context instance
-     */
-    void processDdMessage(OspfMessage ospfMessage, ChannelHandlerContext ctx) {
-        log.debug("OspfChannelHandler::processDdMessage...!!!");
-        Channel channel = ctx.getChannel();
-        DdPacket ddPacket = (DdPacket) ospfMessage;
-        log.debug("Got DD packet from {}", ddPacket.sourceIp());
-        //check it is present in listOfNeighbors
-        Ip4Address neighbourId = ddPacket.routerId();
-        OspfNbr nbr = neighbouringRouter(neighbourId.toString());
-
-        if (nbr != null) {
-            log.debug("OspfChannelHandler::processDdMessage:: OSPFNeighborState {}", nbr.getState());
-            // set options for the NBR
-            nbr.setIsOpaqueCapable(ddPacket.isOpaqueCapable());
-            if (ddPacket.imtu() > mtu()) {
-                log.debug("the MTU size is greater than the interface MTU");
-                return;
-            }
-            if (nbr.getState() == OspfNeighborState.DOWN) {
-                return;
-            }
-            if (nbr.getState() == OspfNeighborState.ATTEMPT) {
-                return;
-            }
-            if (nbr.getState() == OspfNeighborState.TWOWAY) {
-                nbr.adjOk(channel);
-                return;
-            }
-            //if init is the state call twoWayReceived
-            if (nbr.getState() == OspfNeighborState.INIT) {
-                ((OspfNbrImpl) nbr).twoWayReceived(ddPacket, ctx.getChannel());
-            } else if (nbr.getState() == OspfNeighborState.EXSTART) {
-                //get I,M,MS Bits
-                int initialize = ddPacket.isInitialize();
-                int more = ddPacket.isMore();
-                int masterOrSlave = ddPacket.isMaster();
-                int options = ddPacket.options();
-                nbr.setOptions(options);
-
-                if (initialize == OspfUtil.INITIALIZE_SET && more == OspfUtil.MORE_SET &&
-                        masterOrSlave == OspfUtil.IS_MASTER) {
-                    if (ddPacket.getLsaHeaderList().isEmpty()) {
-                        if (OspfUtil.ipAddressToLong(ddPacket.routerId().toString()) >
-                                OspfUtil.ipAddressToLong(ospfArea.routerId().toString())) {
-                            nbr.setIsMaster(OspfUtil.IS_MASTER);
-                            ((OspfNbrImpl) nbr).setLastDdPacket(ddPacket);
-                            nbr.setDdSeqNum(ddPacket.sequenceNo());
-                            nbr.setOptions(ddPacket.options());
-                            ((OspfNbrImpl) nbr).negotiationDone(ddPacket, true, ddPacket.getLsaHeaderList(),
-                                                                ctx.getChannel());
-                        }
-                    }
-                }
-                if (initialize == OspfUtil.INITIALIZE_NOTSET && masterOrSlave == OspfUtil.NOT_MASTER) {
-                    if (nbr.ddSeqNum() == ddPacket.sequenceNo()) {
-                        if (OspfUtil.ipAddressToLong(ddPacket.routerId().toString()) <
-                                OspfUtil.ipAddressToLong(ospfArea.routerId().toString())) {
-                            ((OspfNbrImpl) nbr).setLastDdPacket(ddPacket);
-                            nbr.setOptions(ddPacket.options());
-                            nbr.setDdSeqNum(nbr.ddSeqNum() + 1);
-                            ((OspfNbrImpl) nbr).negotiationDone(ddPacket, false, ddPacket.getLsaHeaderList(),
-                                                                ctx.getChannel());
-                        }
-                    }
-                }
-
-            } else if (nbr.getState() == OspfNeighborState.EXCHANGE) {
-                //get I,M,MS Bits
-                log.debug("Neighbor state:: EXCHANGE");
-                boolean isDuplicateDDPacket = compareDdPackets(ddPacket, ((OspfNbrImpl) nbr).lastDdPacket());
-                int initialize = ddPacket.isInitialize();
-                int more = ddPacket.isMore();
-                int masterOrSlave = ddPacket.isMaster();
-                int options = ddPacket.options();
-
-                if (!isDuplicateDDPacket) {
-                    //if dd packet is not duplicate  then continue
-                    if (nbr.isMaster() != masterOrSlave) {
-                        DdPacket newResPacket =
-                                (DdPacket) ((OspfNbrImpl) nbr).seqNumMismatch("Master/Slave Inconsistency");
-                        newResPacket.setDestinationIp(ddPacket.sourceIp());
-                        log.debug("Sending back DDPacket to {}", ddPacket.sourceIp());
-                        byte[] messageToWrite = getMessage(newResPacket);
-                        ctx.getChannel().write(messageToWrite);
-                    } else if (initialize == 1) {
-                        DdPacket newResPacket =
-                                (DdPacket) ((OspfNbrImpl) nbr).seqNumMismatch("Initialize bit inconsistency");
-                        newResPacket.setDestinationIp(ddPacket.sourceIp());
-                        log.debug("Sending back DDPacket to {}", ddPacket.sourceIp());
-                        byte[] messageToWrite = getMessage(newResPacket);
-                        ctx.getChannel().write(messageToWrite);
-                    } else {
-
-                        if (masterOrSlave == OspfUtil.NOT_MASTER) {
-                            if (ddPacket.sequenceNo() == nbr.ddSeqNum()) {
-                                //Process the DD Packet
-                                ((OspfNbrImpl) nbr).processDdPacket(false, ddPacket, ctx.getChannel());
-                                log.debug("Received DD Packet");
-                            } else {
-                                DdPacket newResPacket =
-                                        (DdPacket) ((OspfNbrImpl) nbr).seqNumMismatch("Sequence Number Mismatch");
-                                newResPacket.setDestinationIp(ddPacket.sourceIp());
-                                log.debug("Sending back DDPacket to {}", ddPacket.sourceIp());
-                                byte[] messageToWrite = getMessage(newResPacket);
-                                ctx.getChannel().write(messageToWrite);
-                            }
-                        } else {
-                            //we are the slave
-                            if (ddPacket.sequenceNo() == (nbr.ddSeqNum() + 1)) {
-                                ((OspfNbrImpl) nbr).setLastDdPacket(ddPacket);
-                                ((OspfNbrImpl) nbr).processDdPacket(true, ddPacket, ctx.getChannel());
-                                log.debug("Process DD Packet");
-                            } else {
-                                DdPacket newResPacket =
-                                        (DdPacket) ((OspfNbrImpl) nbr).seqNumMismatch("options inconsistency");
-                                newResPacket.setDestinationIp(ddPacket.sourceIp());
-                                log.debug("Sending back DDPacket to {}", ddPacket.sourceIp());
-                                byte[] messageToWrite = getMessage(newResPacket);
-                                ctx.getChannel().write(messageToWrite);
-                            }
-                        }
-                    }
-                } else {
-                    if (masterOrSlave == OspfUtil.NOT_MASTER) {
-                        return;
-                    } else {
-                        DdPacket newResPacket = ((OspfNbrImpl) nbr).lastSentDdPacket();
-                        log.debug("Sending back DDPacket to {}", ddPacket.sourceIp());
-                        byte[] messageToWrite = getMessage(newResPacket);
-                        ctx.getChannel().write(messageToWrite);
-                    }
-                }
-            } else if (nbr.getState() == OspfNeighborState.LOADING || nbr.getState() == OspfNeighborState.FULL) {
-                //In case if we are slave then we have to send the last received DD Packet
-                int options = ddPacket.options();
-                if (nbr.options() != options) {
-                    OspfMessage newResPacket = ((OspfNbrImpl) nbr).seqNumMismatch("Initialize bit inconsistency");
-                    newResPacket.setDestinationIp(ddPacket.sourceIp());
-                    byte[] messageToWrite = getMessage(newResPacket);
-                    ctx.getChannel().write(messageToWrite);
-                } else if (ddPacket.isInitialize() == OspfUtil.INITIALIZE_SET) {
-                    OspfMessage newResPacket = ((OspfNbrImpl) nbr).seqNumMismatch("Initialize bit inconsistency");
-                    newResPacket.setDestinationIp(ddPacket.sourceIp());
-                    byte[] messageToWrite = getMessage(newResPacket);
-                    ctx.getChannel().write(messageToWrite);
-                }
-                boolean isDuplicate = compareDdPackets(ddPacket, ((OspfNbrImpl) nbr).lastDdPacket());
-                //we are master
-                if (nbr.isMaster() != OspfUtil.IS_MASTER) {
-                    // check if the packet is duplicate, duplicates should be discarded by the master
-                    if (isDuplicate) {
-                        log.debug("received a duplicate DD packet");
-                    }
-                } else {
-                    //The slave must respond to duplicates by repeating the last Database Description packet
-                    //that it had sent.
-                    if (isDuplicate) {
-                        ddPacket.setDestinationIp(ddPacket.sourceIp());
-                        byte[] messageToWrite = getMessage(((OspfNbrImpl) nbr).lastSentDdPacket());
-                        ctx.getChannel().write(messageToWrite);
-                        log.debug("Sending back the duplicate packet ");
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Process the Ls Request message.
-     *
-     * @param ospfMessage OSPF message instance.
-     * @param ctx         channel handler context instance.
-     */
-    void processLsRequestMessage(OspfMessage ospfMessage, ChannelHandlerContext ctx) {
-        log.debug("OspfChannelHandler::processLsRequestMessage...!!!");
-        Channel channel = ctx.getChannel();
-        LsRequest lsrPacket = (LsRequest) ospfMessage;
-        OspfNbr nbr = neighbouringRouter(lsrPacket.routerId().toString());
-
-        if (nbr.getState() == OspfNeighborState.EXCHANGE || nbr.getState() == OspfNeighborState.LOADING ||
-                nbr.getState() == OspfNeighborState.FULL) {
-
-            LsRequest reqMsg = (LsRequest) ospfMessage;
-            if (reqMsg.getLinkStateRequests().isEmpty()) {
-                log.debug("Received Link State Request Vector is Empty ");
-                return;
-            } else {
-                //Send the LsUpdate back
-                ListIterator<LsRequestPacket> listItr = reqMsg.getLinkStateRequests().listIterator();
-                while (listItr.hasNext()) {
-                    LsUpdate lsupdate = new LsUpdate();
-                    lsupdate.setOspfVer(OspfUtil.OSPF_VERSION);
-                    lsupdate.setOspftype(OspfPacketType.LSUPDATE.value());
-                    lsupdate.setRouterId(ospfArea.routerId());
-                    lsupdate.setAreaId(ospfArea.areaId());
-                    lsupdate.setAuthType(OspfUtil.NOT_ASSIGNED);
-                    lsupdate.setAuthentication(OspfUtil.NOT_ASSIGNED);
-                    lsupdate.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length
-                    lsupdate.setChecksum(OspfUtil.NOT_ASSIGNED);
-
-                    //limit to mtu
-                    int currentLength = OspfUtil.OSPF_HEADER_LENGTH + OspfUtil.FOUR_BYTES;
-                    int maxSize = mtu() -
-                            OspfUtil.LSA_HEADER_LENGTH; // subtract a normal IP header.
-                    int noLsa = 0;
-                    while (listItr.hasNext()) {
-                        LsRequestPacket lsRequest = listItr.next();
-                        // to verify length of the LSA
-                        LsaWrapper wrapper = ospfArea.getLsa(lsRequest.lsType(), lsRequest.linkStateId(),
-                                                             lsRequest.ownRouterId());
-                        if (wrapper != null) {
-                            OspfLsa ospflsa = wrapper.ospfLsa();
-                            if ((currentLength + ((LsaWrapperImpl) wrapper).lsaHeader().lsPacketLen()) >= maxSize) {
-                                listItr.previous();
-                                break;
-                            }
-                            if (ospflsa != null) {
-                                lsupdate.addLsa(ospflsa);
-                                noLsa++;
-
-                                currentLength = currentLength + ((LsaWrapperImpl) wrapper).lsaHeader().lsPacketLen();
-                            } else {
-                                nbr.badLSReq(channel);
-                            }
-                        }
-                    }
-                    lsupdate.setNumberOfLsa(noLsa);
-                    //set the destination
-                    if (state() == OspfInterfaceState.DR ||
-                            state() == OspfInterfaceState.BDR ||
-                            state() == OspfInterfaceState.POINT2POINT) {
-                        lsupdate.setDestinationIp(OspfUtil.ALL_SPF_ROUTERS);
-                    } else if (state() == OspfInterfaceState.DROTHER) {
-                        lsupdate.setDestinationIp(OspfUtil.ALL_DROUTERS);
-                    }
-                    byte[] messageToWrite = getMessage(lsupdate);
-                    ctx.getChannel().write(messageToWrite);
-                }
-            }
-        }
-    }
-
-    /**
-     * Process the ls update message.
-     *
-     * @param ospfMessage OSPF message instance.
-     * @param ctx         channel handler context instance.
-     * @throws OspfParseException on parsing error
-     */
-    void processLsUpdateMessage(OspfMessage ospfMessage, ChannelHandlerContext ctx) throws OspfParseException {
-        log.debug("OspfChannelHandler::processLsUpdateMessage");
-        LsUpdate lsUpdate = (LsUpdate) ospfMessage;
-        String neighbourId = lsUpdate.routerId().toString();
-        //LSUpdate packet has been associated with a particular neighbor.
-        //Neighbor should not be in lesser state than Exchange.
-        if (isNeighborInList(neighbourId)) {
-            OspfNbrImpl nbr = (OspfNbrImpl) neighbouringRouter(neighbourId);
-            if (nbr.getState() == OspfNeighborState.EXCHANGE ||
-                    nbr.getState() == OspfNeighborState.LOADING) {
-                nbr.processLsUpdate(lsUpdate, ctx.getChannel());
-            } else if (nbr.getState() == OspfNeighborState.FULL) {
-                if (lsUpdate.noLsa() != 0) {
-                    List<OspfLsa> list = lsUpdate.getLsaList();
-                    Iterator itr = list.iterator();
-                    while (itr.hasNext()) {
-                        LsaHeader lsa = (LsaHeader) itr.next();
-                        nbr.processReceivedLsa(lsa, true, ctx.getChannel(), lsUpdate.sourceIp());
-                    }
-                } else {
-                    return;
-                }
-            }
-        }
-    }
-
-    /**
-     * Process the ls acknowledge message.
-     *
-     * @param ospfMessage OSPF message instance.
-     * @param ctx         channel handler context instance.
-     */
-    void processLsAckMessage(OspfMessage ospfMessage, ChannelHandlerContext ctx) {
-        log.debug("OspfChannelHandler::processLsAckMessage");
-        LsAcknowledge lsAckPacket = (LsAcknowledge) ospfMessage;
-        //check it is present in listOfNeighbors
-        OspfNbrImpl nbr = (OspfNbrImpl) neighbouringRouter(lsAckPacket.routerId().toString());
-        if (nbr != null) {
-            if (nbr.getState().getValue() < OspfNeighborState.EXCHANGE.getValue()) {
-                // discard the packet.
-                return;
-            } else {
-                // process ls acknowledgements
-                Iterator itr = lsAckPacket.getLinkStateHeaders().iterator();
-                while (itr.hasNext()) {
-                    LsaHeader lsRequest = (LsaHeader) itr.next();
-
-                    OspfLsa ospfLsa =
-                            nbr.getPendingReTxList().get(((OspfAreaImpl) ospfArea).getLsaKey(lsRequest));
-                    if (ospfLsa != null) {
-                        String isSame = ((OspfLsdbImpl) ospfArea.database()).isNewerOrSameLsa(
-                                lsRequest, (LsaHeader) ospfLsa);
-                        if (isSame.equals("same")) {
-                            nbr.getPendingReTxList().remove(((OspfAreaImpl) ospfArea).getLsaKey(lsRequest));
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Compares two Dd Packets to check whether its duplicate or not.
-     *
-     * @param receivedDPacket received DD packet from network.
-     * @param lastDdPacket    Last DdPacket which we sent.
-     * @return true if it is a duplicate packet else false.
-     */
-    public boolean compareDdPackets(DdPacket receivedDPacket, DdPacket lastDdPacket) {
-        if (receivedDPacket.isInitialize() == lastDdPacket.isInitialize()) {
-            if (receivedDPacket.isMaster() == lastDdPacket.isMaster()) {
-                if (receivedDPacket.isMore() == lastDdPacket.isMore()) {
-                    if (receivedDPacket.options() == lastDdPacket.options()) {
-                        if (receivedDPacket.sequenceNo() == lastDdPacket.sequenceNo()) {
-                            return true;
-                        }
-                    }
-                }
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Starts the hello timer which sends hello packet every configured seconds.
-     */
-    @Override
-    public void startHelloTimer() {
-        log.debug("OSPFInterfaceChannelHandler::startHelloTimer");
-        exServiceHello = Executors.newSingleThreadScheduledExecutor();
-        helloTimerTask = new InternalHelloTimer();
-        final ScheduledFuture<?> helloHandle =
-                exServiceHello.scheduleAtFixedRate(helloTimerTask, delay, helloIntervalTime, TimeUnit.SECONDS);
-    }
-
-    /**
-     * Stops the hello timer.
-     */
-    @Override
-    public void stopHelloTimer() {
-        log.debug("OSPFInterfaceChannelHandler::stopHelloTimer ");
-        exServiceHello.shutdown();
-    }
-
-    /**
-     * Starts the wait timer.
-     */
-    public void startWaitTimer() {
-        log.debug("OSPFNbr::startWaitTimer");
-        exServiceWait = Executors.newSingleThreadScheduledExecutor();
-        waitTimerTask = new InternalWaitTimer();
-        final ScheduledFuture<?> waitTimerHandle =
-                exServiceWait.schedule(waitTimerTask, routerDeadIntervalTime(), TimeUnit.SECONDS);
-    }
-
-    /**
-     * Stops the wait timer.
-     */
-    public void stopWaitTimer() {
-        log.debug("OSPFNbr::stopWaitTimer ");
-        exServiceWait.shutdown();
-    }
-
-    /**
-     * Starts the timer which waits for configured seconds and sends Delayed Ack Packet.
-     */
-    @Override
-    public void startDelayedAckTimer() {
-        if (!isDelayedAckTimerScheduled) {
-            log.debug("Started DelayedAckTimer...!!!");
-            exServiceDelayedAck = Executors.newSingleThreadScheduledExecutor();
-            delayedAckTimerTask = new InternalDelayedAckTimer();
-            final ScheduledFuture<?> delayAckHandle =
-                    exServiceDelayedAck.scheduleAtFixedRate(delayedAckTimerTask, delayedAckTimerInterval,
-                                                            delayedAckTimerInterval, TimeUnit.MILLISECONDS);
-            isDelayedAckTimerScheduled = true;
-        }
-    }
-
-    /**
-     * Stops the delayed acknowledge timer.
-     */
-    @Override
-    public void stopDelayedAckTimer() {
-        if (isDelayedAckTimerScheduled) {
-            log.debug("Stopped DelayedAckTimer...!!!");
-            isDelayedAckTimerScheduled = false;
-            exServiceDelayedAck.shutdown();
-        }
-    }
-
-    /**
-     * Performs DR election.
-     *
-     * @param ch Netty Channel instance.
-     */
-    public void electRouter(Channel ch) {
-
-        Ip4Address currentDr = dr();
-        Ip4Address currentBdr = bdr();
-        OspfInterfaceState oldState = state();
-        OspfInterfaceState newState;
-
-        log.debug("OSPFInterfaceChannelHandler::electRouter -> currentDr: {}, currentBdr: {}",
-                  currentDr, currentBdr);
-        List<OspfEligibleRouter> eligibleRouters = calculateListOfEligibleRouters(new OspfEligibleRouter());
-
-        log.debug("OSPFInterfaceChannelHandler::electRouter -> eligibleRouters: {}", eligibleRouters);
-        OspfEligibleRouter electedBdr = electBdr(eligibleRouters);
-        OspfEligibleRouter electedDr = electDr(eligibleRouters, electedBdr);
-
-        setBdr(electedBdr.getIpAddress());
-        setDr(electedDr.getIpAddress());
-
-        if (electedBdr.getIpAddress().equals(ipAddress()) &&
-                !electedBdr.getIpAddress().equals(currentBdr)) {
-            setState(OspfInterfaceState.BDR);
-        }
-
-        if (electedDr.getIpAddress().equals(ipAddress()) &&
-                !electedDr.getIpAddress().equals(currentDr)) {
-            setState(OspfInterfaceState.DR);
-        }
-
-        if (state() != oldState &&
-                !(state() == OspfInterfaceState.DROTHER &&
-                        oldState.value() < OspfInterfaceState.DROTHER.value())) {
-            log.debug("Recalculating as the State is changed ");
-            log.debug("OSPFInterfaceChannelHandler::electRouter -> currentDr: {}, currentBdr: {}",
-                      currentDr, currentBdr);
-            eligibleRouters = calculateListOfEligibleRouters(new OspfEligibleRouter());
-
-            log.debug("OSPFInterfaceChannelHandler::electRouter -> eligibleRouters: {}", eligibleRouters);
-            electedBdr = electBdr(eligibleRouters);
-            electedDr = electDr(eligibleRouters, electedBdr);
-
-            setBdr(electedBdr.getIpAddress());
-            setDr(electedDr.getIpAddress());
-        }
-
-        if (electedBdr.getIpAddress().equals(ipAddress()) &&
-                !electedBdr.getIpAddress().equals(currentBdr)) {
-            setState(OspfInterfaceState.BDR);
-            ospfArea.refreshArea(this);
-        }
-
-        if (electedDr.getIpAddress().equals(ipAddress()) &&
-                !electedDr.getIpAddress().equals(currentDr)) {
-            setState(OspfInterfaceState.DR);
-            //Refresh Router Lsa & Network Lsa
-            ospfArea.refreshArea(this);
-        }
-
-        if (currentDr != electedDr.getIpAddress() || currentBdr != electedBdr.getIpAddress()) {
-            Set<String> negibhorIdList;
-            negibhorIdList = listOfNeighbors().keySet();
-            for (String routerid : negibhorIdList) {
-                OspfNbrImpl nbr = (OspfNbrImpl) neighbouringRouter(routerid);
-                if (nbr.getState().getValue() >= OspfNeighborState.TWOWAY.getValue()) {
-                    nbr.adjOk(ch);
-                }
-            }
-        }
-
-        log.debug("OSPFInterfaceChannelHandler::electRouter -> ElectedDR: {}, ElectedBDR: {}",
-                  electedDr.getIpAddress(), electedBdr.getIpAddress());
-    }
-
-
-    /**
-     * BDR Election process. Find the list of eligible router to participate in the process.
-     *
-     * @param electedDr router elected as DR.
-     * @return list of eligible routers
-     */
-    public List<OspfEligibleRouter> calculateListOfEligibleRouters(OspfEligibleRouter electedDr) {
-        log.debug("OSPFNbr::calculateListOfEligibleRouters ");
-        Set<String> neighborIdList;
-        List<OspfEligibleRouter> eligibleRouters = new ArrayList<>();
-
-        neighborIdList = listOfNeighbors().keySet();
-        for (String routerId : neighborIdList) {
-            OspfNbrImpl nbr = (OspfNbrImpl) neighbouringRouter(routerId);
-            if (nbr.getState().getValue() >= OspfNeighborState.TWOWAY.getValue() &&
-                    nbr.routerPriority() > 0) {
-                OspfEligibleRouter router = new OspfEligibleRouter();
-                router.setIpAddress(nbr.neighborIpAddr());
-                router.setRouterId(nbr.neighborId());
-                router.setRouterPriority(nbr.routerPriority());
-                if (nbr.neighborDr().equals(nbr.neighborIpAddr()) ||
-                        electedDr.getIpAddress().equals(nbr.neighborIpAddr())) {
-                    router.setIsDr(true);
-                } else if (nbr.neighborBdr().equals(nbr.neighborIpAddr())) {
-                    router.setIsBdr(true);
-                }
-                eligibleRouters.add(router);
-            }
-        }
-        // interface does not have states like two and all
-        if (routerPriority() > 0) {
-            OspfEligibleRouter router = new OspfEligibleRouter();
-            router.setIpAddress(ipAddress());
-            router.setRouterId(ospfArea.routerId());
-            router.setRouterPriority(routerPriority());
-            if (dr().equals(ipAddress()) ||
-                    electedDr.getIpAddress().equals(ipAddress())) {
-                router.setIsDr(true);
-            } else if (bdr().equals(ipAddress()) &&
-                    !dr().equals(ipAddress())) {
-                router.setIsBdr(true);
-            }
-
-            eligibleRouters.add(router);
-        }
-
-        return eligibleRouters;
-    }
-
-    /**
-     * Based on router priority assigns BDR.
-     *
-     * @param eligibleRouters list of routers to participate in bdr election.
-     * @return OSPF Eligible router instance.
-     */
-    public OspfEligibleRouter electBdr(List<OspfEligibleRouter> eligibleRouters) {
-        log.debug("OSPFInterfaceChannelHandler::electBdr -> eligibleRouters: {}", eligibleRouters);
-        List<OspfEligibleRouter> declaredAsBdr = new ArrayList<>();
-        List<OspfEligibleRouter> notDrAndBdr = new ArrayList<>();
-        for (OspfEligibleRouter router : eligibleRouters) {
-            if (router.isBdr()) {
-                declaredAsBdr.add(router);
-            }
-            if (!router.isBdr() && !router.isDr()) {
-                notDrAndBdr.add(router);
-            }
-        }
-
-        OspfEligibleRouter electedBdr = new OspfEligibleRouter();
-        if (!declaredAsBdr.isEmpty()) {
-            if (declaredAsBdr.size() == 1) {
-                electedBdr = declaredAsBdr.get(0);
-            } else if (declaredAsBdr.size() > 1) {
-                electedBdr = selectRouterBasedOnPriority(declaredAsBdr);
-            }
-        } else {
-            if (notDrAndBdr.size() == 1) {
-                electedBdr = notDrAndBdr.get(0);
-            } else if (notDrAndBdr.size() > 1) {
-                electedBdr = selectRouterBasedOnPriority(notDrAndBdr);
-            }
-        }
-
-        electedBdr.setIsBdr(true);
-        electedBdr.setIsDr(false);
-
-        return electedBdr;
-    }
-
-    /**
-     * DR Election process.
-     *
-     * @param eligibleRouters list of eligible routers.
-     * @param electedBdr      Elected Bdr, OSPF eligible router instance.
-     * @return OSPF eligible router instance.
-     */
-    public OspfEligibleRouter electDr(List<OspfEligibleRouter> eligibleRouters,
-                                      OspfEligibleRouter electedBdr) {
-
-        List<OspfEligibleRouter> declaredAsDr = new ArrayList<>();
-        for (OspfEligibleRouter router : eligibleRouters) {
-            if (router.isDr()) {
-                declaredAsDr.add(router);
-            }
-        }
-
-        OspfEligibleRouter electedDr = new OspfEligibleRouter();
-        if (!declaredAsDr.isEmpty()) {
-            if (declaredAsDr.size() == 1) {
-                electedDr = declaredAsDr.get(0);
-            } else if (eligibleRouters.size() > 1) {
-                electedDr = selectRouterBasedOnPriority(declaredAsDr);
-            }
-        } else {
-            electedDr = electedBdr;
-            electedDr.setIsDr(true);
-            electedDr.setIsBdr(false);
-        }
-
-        return electedDr;
-    }
-
-    /**
-     * DR election process.
-     *
-     * @param routersList list of eligible routers.
-     * @return OSPF eligible router instance.
-     */
-    public OspfEligibleRouter selectRouterBasedOnPriority(List<OspfEligibleRouter> routersList) {
-
-        OspfEligibleRouter initialRouter = routersList.get(0);
-
-        for (int i = 1; i < routersList.size(); i++) {
-            OspfEligibleRouter router = routersList.get(i);
-            if (router.getRouterPriority() > initialRouter.getRouterPriority()) {
-                initialRouter = router;
-            } else if (router.getRouterPriority() == initialRouter.getRouterPriority()) {
-                try {
-                    if (OspfUtil.ipAddressToLong(router.getIpAddress().toString()) >
-                            OspfUtil.ipAddressToLong(initialRouter.getIpAddress().toString())) {
-                        initialRouter = router;
-                    }
-                } catch (Exception e) {
-                    log.debug("OSPFInterfaceChannelHandler::selectRouterBasedOnPriority ->" +
-                                      " eligibleRouters: {}", initialRouter);
-                }
-            }
-        }
-
-        return initialRouter;
-    }
-
-    /**
-     * Adds device information.
-     *
-     * @param ospfRouter OSPF router instance
-     */
-    public void addDeviceInformation(OspfRouter ospfRouter) {
-        controller.addDeviceDetails(ospfRouter);
-    }
-
-    /**
-     * removes device information.
-     *
-     * @param ospfRouter OSPF neighbor instance
-     */
-    public void removeDeviceInformation(OspfRouter ospfRouter) {
-        controller.removeDeviceDetails(ospfRouter);
-    }
-
-    /**
-     * Adds link information.
-     *
-     * @param ospfRouter  OSPF router instance
-     * @param ospfLinkTed list link ted instances
-     */
-    public void addLinkInformation(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) {
-        controller.addLinkDetails(ospfRouter, ospfLinkTed);
-    }
-
-    /**
-     * Removes link information.
-     *
-     * @param ospfRouter  OSPF router instance
-     * @param ospfLinkTed OSPF link TED instance
-     */
-    public void removeLinkInformation(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) {
-        controller.removeLinkDetails(ospfRouter, ospfLinkTed);
-    }
-
-    /**
-     * Gets message as bytes.
-     *
-     * @param ospfMessage OSPF message
-     * @return OSPF message
-     */
-    private byte[] getMessage(OspfMessage ospfMessage) {
-        OspfMessageWriter messageWriter = new OspfMessageWriter();
-        if (state().equals(OspfInterfaceState.POINT2POINT)) {
-            ospfMessage.setDestinationIp(OspfUtil.ALL_SPF_ROUTERS);
-        }
-        return (messageWriter.getMessage(ospfMessage, interfaceIndex, state.value()));
-    }
-
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        OspfInterfaceImpl that = (OspfInterfaceImpl) o;
-        return Objects.equal(helloIntervalTime, that.helloIntervalTime) &&
-                Objects.equal(routerDeadIntervalTime, that.routerDeadIntervalTime) &&
-                Objects.equal(routerPriority, that.routerPriority) &&
-                Objects.equal(interfaceType, that.interfaceType) &&
-                Objects.equal(mtu, that.mtu) &&
-                Objects.equal(reTransmitInterval, that.reTransmitInterval) &&
-                Objects.equal(ipAddress, that.ipAddress) &&
-                Objects.equal(ipNetworkMask, that.ipNetworkMask) &&
-                Objects.equal(listOfNeighbors, that.listOfNeighbors) &&
-                Objects.equal(dr, that.dr) &&
-                Objects.equal(bdr, that.bdr);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(ipAddress, ipNetworkMask, helloIntervalTime,
-                                routerDeadIntervalTime, routerPriority, listOfNeighbors,
-                                interfaceType, mtu, reTransmitInterval, dr, bdr);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("ipAddress", ipAddress)
-                .add("routerPriority", routerPriority)
-                .add("helloIntervalTime", helloIntervalTime)
-                .add("routerDeadIntervalTime", routerDeadIntervalTime)
-                .add("interfaceType", interfaceType)
-                .add("mtu", mtu)
-                .add("reTransmitInterval", reTransmitInterval)
-                .add("dr", dr)
-                .add("bdr", bdr)
-                .toString();
-    }
-
-    /**
-     * Represents a Hello task which sent a hello message every configured time interval.
-     */
-    private class InternalHelloTimer implements Runnable {
-
-        /**
-         * Creates an instance of Hello Timer.
-         */
-        InternalHelloTimer() {
-        }
-
-        @Override
-        public void run() {
-            if (channel != null && channel.isOpen() && channel.isConnected()) {
-                if (interfaceType() == OspfInterfaceType.BROADCAST.value()) {
-                    if (interfaceTypeOldValue != interfaceType()) {
-                        try {
-                            callDrElection(channel);
-                        } catch (Exception e) {
-                            log.debug("Error while calling interfaceUp {}", e.getMessage());
-                        }
-                    }
-                } else {
-                    if (interfaceTypeOldValue != interfaceType()) {
-                        interfaceTypeOldValue = interfaceType();
-                    }
-                }
-                HelloPacket hellopacket = new HelloPacket();
-                //Headers
-                hellopacket.setOspfVer(OspfUtil.OSPF_VERSION);
-                hellopacket.setOspftype(OspfPacketType.HELLO.value());
-                hellopacket.setOspfPacLength(0); //will be modified while encoding
-                hellopacket.setRouterId(ospfArea.routerId());
-                hellopacket.setAreaId(ospfArea.areaId());
-                hellopacket.setChecksum(0); //will be modified while encoding
-                hellopacket.setAuthType(OspfUtil.NOT_ASSIGNED);
-                hellopacket.setAuthentication(OspfUtil.NOT_ASSIGNED);
-                //Body
-                hellopacket.setNetworkMask(ipNetworkMask());
-                hellopacket.setOptions(ospfArea.options());
-                hellopacket.setHelloInterval(helloIntervalTime());
-                hellopacket.setRouterPriority(routerPriority());
-                hellopacket.setRouterDeadInterval(routerDeadIntervalTime());
-                hellopacket.setDr(dr());
-                hellopacket.setBdr(bdr());
-
-                Map<String, OspfNbr> listOfNeighbors = listOfNeighbors();
-                Set<String> keys = listOfNeighbors.keySet();
-                Iterator itr = keys.iterator();
-                while (itr.hasNext()) {
-                    String nbrKey = (String) itr.next();
-                    OspfNbrImpl nbr = (OspfNbrImpl) listOfNeighbors.get(nbrKey);
-                    if (nbr.getState() != OspfNeighborState.DOWN) {
-                        hellopacket.addNeighbor(Ip4Address.valueOf(nbrKey));
-                    }
-                }
-                // build a hello Packet
-                if (channel == null || !channel.isOpen() || !channel.isConnected()) {
-                    log.debug("Hello Packet not sent !!.. Channel Issue...");
-                    return;
-                }
-
-                hellopacket.setDestinationIp(OspfUtil.ALL_SPF_ROUTERS);
-                byte[] messageToWrite = getMessage(hellopacket);
-                ChannelFuture future = channel.write(messageToWrite);
-                if (future.isSuccess()) {
-                    log.debug("Hello Packet successfully sent !!");
-                } else {
-                    future.awaitUninterruptibly();
-                }
-
-            }
-        }
-    }
-
-    /**
-     * Represents a Wait Timer task which waits the interface state to become WAITING.
-     * It initiates DR election process.
-     */
-    private class InternalWaitTimer implements Runnable {
-        Channel ch;
-
-        /**
-         * Creates an instance of Wait Timer.
-         */
-        InternalWaitTimer() {
-            this.ch = channel;
-        }
-
-        @Override
-        public void run() {
-            log.debug("Wait timer expires...");
-            if (ch != null && ch.isConnected()) {
-                try {
-                    waitTimer(ch);
-                } catch (Exception e) {
-                    log.debug("Exception at wait timer ...!!!");
-                }
-            }
-        }
-    }
-
-    /**
-     * Represents a task which sent a LS Acknowledge from the link state headers list.
-     */
-    private class InternalDelayedAckTimer implements Runnable {
-        Channel ch;
-
-        /**
-         * Creates an instance of Delayed acknowledge timer.
-         */
-        InternalDelayedAckTimer() {
-            this.ch = channel;
-        }
-
-        @Override
-        public void run() {
-            if (!linkStateHeaders().isEmpty()) {
-                isDelayedAckTimerScheduled = true;
-                if (ch != null && ch.isConnected()) {
-
-                    List<LsaHeader> listOfLsaHeadersAcknowledged = new ArrayList<>();
-                    List<LsaHeader> listOfLsaHeaders = linkStateHeaders();
-                    log.debug("Delayed Ack, Number of Lsa's to Ack {}", listOfLsaHeaders.size());
-                    Iterator itr = listOfLsaHeaders.iterator();
-                    while (itr.hasNext()) {
-                        LsAcknowledge ackContent = new LsAcknowledge();
-                        //Setting OSPF Header
-                        ackContent.setOspfVer(OspfUtil.OSPF_VERSION);
-                        ackContent.setOspftype(OspfPacketType.LSAACK.value());
-                        ackContent.setRouterId(ospfArea.routerId());
-                        ackContent.setAreaId(ospfArea.areaId());
-                        ackContent.setAuthType(OspfUtil.NOT_ASSIGNED);
-                        ackContent.setAuthentication(OspfUtil.NOT_ASSIGNED);
-                        ackContent.setOspfPacLength(OspfUtil.NOT_ASSIGNED);
-                        ackContent.setChecksum(OspfUtil.NOT_ASSIGNED);
-                        //limit to mtu
-                        int currentLength = OspfUtil.OSPF_HEADER_LENGTH;
-                        int maxSize = mtu() -
-                                OspfUtil.LSA_HEADER_LENGTH; // subtract a normal IP header.
-                        while (itr.hasNext()) {
-                            if ((currentLength + OspfUtil.LSA_HEADER_LENGTH) >= maxSize) {
-                                break;
-                            }
-                            LsaHeader lsaHeader = (LsaHeader) itr.next();
-                            ackContent.addLinkStateHeader(lsaHeader);
-                            currentLength = currentLength + OspfUtil.LSA_HEADER_LENGTH;
-                            listOfLsaHeadersAcknowledged.add(lsaHeader);
-                            log.debug("Delayed Ack, Added Lsa's to Ack {}", lsaHeader);
-                        }
-
-                        log.debug("Delayed Ack, Number of Lsa's in LsAck packet {}",
-                                  ackContent.getLinkStateHeaders().size());
-
-                        //set the destination
-                        if (state() == OspfInterfaceState.DR || state() == OspfInterfaceState.BDR
-                                || state() == OspfInterfaceState.POINT2POINT) {
-                            ackContent.setDestinationIp(OspfUtil.ALL_SPF_ROUTERS);
-                        } else if (state() == OspfInterfaceState.DROTHER) {
-                            ackContent.setDestinationIp(OspfUtil.ALL_DROUTERS);
-                        }
-                        byte[] messageToWrite = getMessage(ackContent);
-                        ch.write(messageToWrite);
-
-                        for (LsaHeader lsa : listOfLsaHeadersAcknowledged) {
-                            linkStateHeaders().remove(lsa);
-                            removeLsaFromNeighborMap(((OspfAreaImpl) ospfArea).getLsaKey(lsa));
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfProcessImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfProcessImpl.java
deleted file mode 100644
index 26666ad..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfProcessImpl.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.area;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.common.base.MoreObjects;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.OspfProcess;
-
-import java.util.List;
-
-/**
- * Representation of the configuration data for OSPF Process, which will be configured using rest URI.
- */
-public class OspfProcessImpl implements OspfProcess {
-
-    private String processId;
-    private List<OspfArea> areas;
-
-    /**
-     * Gets the list of areas belonging to this process.
-     *
-     * @return list of areas belonging to this process
-     */
-    public List<OspfArea> areas() {
-        return areas;
-    }
-
-    /**
-     * Sets the list of areas belonging to this process.
-     *
-     * @param areas list of areas belonging to this process
-     */
-    @JsonProperty("areas")
-    public void setAreas(List<OspfArea> areas) {
-        this.areas = areas;
-    }
-
-    /**
-     * Gets the process id.
-     *
-     * @return process id
-     */
-    public String processId() {
-        return processId;
-    }
-
-    /**
-     * Sets the process id.
-     *
-     * @param processId the process id
-     */
-    @JsonProperty("processId")
-    public void setProcessId(String processId) {
-        this.processId = processId;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("areas", areas)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/package-info.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/package-info.java
deleted file mode 100644
index c8e3c92..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the OSPF controller.
- */
-package org.onosproject.ospf.controller.area;
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/Controller.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/Controller.java
deleted file mode 100644
index 8e8e5f3..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/Controller.java
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.jboss.netty.bootstrap.ClientBootstrap;
-import org.jboss.netty.channel.AdaptiveReceiveBufferSizePredictor;
-import org.jboss.netty.channel.ChannelFuture;
-import org.jboss.netty.channel.ChannelFutureListener;
-import org.jboss.netty.channel.ChannelPipelineFactory;
-import org.jboss.netty.channel.FixedReceiveBufferSizePredictorFactory;
-import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.TpPort;
-import org.onosproject.net.driver.DriverService;
-import org.onosproject.ospf.controller.OspfAgent;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfLinkTed;
-import org.onosproject.ospf.controller.OspfProcess;
-import org.onosproject.ospf.controller.OspfRouter;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.NetworkInterface;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-import static org.onlab.util.Tools.groupedThreads;
-
-/**
- * Representation of an OSPF controller.
- */
-public class Controller {
-    protected static final int BUFFER_SIZE = 4 * 1024 * 1024;
-    private static final Logger log = LoggerFactory.getLogger(Controller.class);
-    private static final int RETRY_INTERVAL = 4;
-    private final int peerWorkerThreads = 16;
-    protected long systemStartTime;
-    byte[] configPacket = null;
-    private List<OspfProcess> processes = null;
-    private OspfInterfaceChannelHandler ospfChannelHandler;
-    private NioClientSocketChannelFactory peerExecFactory;
-    private ClientBootstrap peerBootstrap = null;
-    private TpPort ospfPort = TpPort.tpPort(OspfUtil.SPORT);
-    private ScheduledExecutorService connectExecutor = null;
-    private int connectRetryCounter = 0;
-    private int connectRetryTime;
-    private DriverService driverService;
-    private OspfAgent agent;
-
-    /**
-     * Deactivates OSPF controller.
-     */
-    public void ospfDeactivate() {
-        peerExecFactory.shutdown();
-    }
-
-    /**
-     * Updates the processes configuration.
-     *
-     * @param ospfProcesses list of OSPF process instances
-     */
-    public void updateConfig(List<OspfProcess> ospfProcesses) {
-        log.debug("Controller::UpdateConfig called");
-        configPacket = new byte[OspfUtil.CONFIG_LENGTH];
-        byte numberOfInterface = 0; // number of interfaces to configure
-        configPacket[0] = (byte) 0xFF; // its a conf packet - identifier
-        for (OspfProcess ospfProcess : ospfProcesses) {
-            log.debug("OspfProcessDetails : " + ospfProcess);
-            for (OspfArea ospfArea : ospfProcess.areas()) {
-                for (OspfInterface ospfInterface : ospfArea.ospfInterfaceList()) {
-                    log.debug("OspfInterfaceDetails : " + ospfInterface);
-                    numberOfInterface++;
-                    configPacket[2 * numberOfInterface] = (byte) ospfInterface.interfaceIndex();
-                    configPacket[(2 * numberOfInterface) + 1] = (byte) 4;
-                }
-            }
-        }
-        configPacket[1] = numberOfInterface;
-        //First time configuration
-        if (processes == null) {
-            if (ospfProcesses.size() > 0) {
-                processes = ospfProcesses;
-                connectPeer();
-            }
-        } else {
-            ospfChannelHandler.updateInterfaceMap(ospfProcesses);
-            //Send the config packet
-            ospfChannelHandler.sentConfigPacket(configPacket);
-        }
-    }
-
-    /**
-     * Initializes the netty client channel connection.
-     */
-    private void initConnection() {
-        if (peerBootstrap != null) {
-            return;
-        }
-        peerBootstrap = createPeerBootStrap();
-
-        peerBootstrap.setOption("reuseAddress", true);
-        peerBootstrap.setOption("tcpNoDelay", true);
-        peerBootstrap.setOption("keepAlive", true);
-        peerBootstrap.setOption("receiveBufferSize", Controller.BUFFER_SIZE);
-        peerBootstrap.setOption("receiveBufferSizePredictorFactory",
-                                new FixedReceiveBufferSizePredictorFactory(
-                                        Controller.BUFFER_SIZE));
-        peerBootstrap.setOption("receiveBufferSizePredictor",
-                                new AdaptiveReceiveBufferSizePredictor(64, 4096, 65536));
-        peerBootstrap.setOption("child.keepAlive", true);
-        peerBootstrap.setOption("child.tcpNoDelay", true);
-        peerBootstrap.setOption("child.sendBufferSize", Controller.BUFFER_SIZE);
-        peerBootstrap.setOption("child.receiveBufferSize", Controller.BUFFER_SIZE);
-        peerBootstrap.setOption("child.receiveBufferSizePredictorFactory",
-                                new FixedReceiveBufferSizePredictorFactory(
-                                        Controller.BUFFER_SIZE));
-        peerBootstrap.setOption("child.reuseAddress", true);
-
-        ospfChannelHandler = new OspfInterfaceChannelHandler(this, processes);
-        ChannelPipelineFactory pfact = new OspfPipelineFactory(ospfChannelHandler);
-        peerBootstrap.setPipelineFactory(pfact);
-    }
-
-    /**
-     * Creates peer boot strap.
-     *
-     * @return client bootstrap instance
-     */
-    private ClientBootstrap createPeerBootStrap() {
-
-        if (peerWorkerThreads == 0) {
-            peerExecFactory = new NioClientSocketChannelFactory(
-                    Executors.newCachedThreadPool(groupedThreads("onos/ospf", "boss-%d")),
-                    Executors.newCachedThreadPool(groupedThreads("onos/ospf", "worker-%d")));
-            return new ClientBootstrap(peerExecFactory);
-        } else {
-            peerExecFactory = new NioClientSocketChannelFactory(
-                    Executors.newCachedThreadPool(groupedThreads("onos/ospf", "boss-%d")),
-                    Executors.newCachedThreadPool(groupedThreads("onos/ospf", "worker-%d")),
-                    peerWorkerThreads);
-            return new ClientBootstrap(peerExecFactory);
-        }
-    }
-
-    /**
-     * Gets all configured processes.
-     *
-     * @return all configured processes
-     */
-    public List<OspfProcess> getAllConfiguredProcesses() {
-        return processes;
-    }
-
-    /**
-     * Adds device details.
-     *
-     * @param ospfRouter OSPF router instance
-     */
-    public void addDeviceDetails(OspfRouter ospfRouter) {
-        agent.addConnectedRouter(ospfRouter);
-    }
-
-    /**
-     * Removes device details.
-     *
-     * @param ospfRouter OSPF router instance
-     */
-    public void removeDeviceDetails(OspfRouter ospfRouter) {
-        agent.removeConnectedRouter(ospfRouter);
-    }
-
-    /**
-     * Adds link details.
-     *
-     * @param ospfRouter  OSPF router instance
-     * @param ospfLinkTed OSPF link ted instance
-     */
-    public void addLinkDetails(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) {
-        agent.addLink(ospfRouter, ospfLinkTed);
-    }
-
-    /**
-     * Removes link details.
-     *
-     * @param ospfRouter  OSPF router instance
-     * @param ospfLinkTed OSPF link ted instance
-     */
-    public void removeLinkDetails(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) {
-        agent.deleteLink(ospfRouter, ospfLinkTed);
-    }
-
-    /**
-     * Initializes internal data structures.
-     */
-    public void init() {
-        this.systemStartTime = System.currentTimeMillis();
-    }
-
-    /**
-     * Starts the controller.
-     *
-     * @param ag            OSPF agent instance
-     * @param driverService driver service instance
-     */
-    public void start(OspfAgent ag, DriverService driverService) {
-        log.info("Starting OSPF controller...!!!");
-        this.agent = ag;
-        this.driverService = driverService;
-        this.init();
-    }
-
-    /**
-     * Stops the Controller.
-     */
-    public void stop() {
-        log.info("Stopping OSPF controller...!!!");
-        ospfDeactivate();
-        processes.clear();
-    }
-
-    /**
-     * Returns interface IP by index.
-     *
-     * @param interfaceIndex interface index
-     * @return interface IP by index
-     */
-    private Ip4Address getInterfaceIp(int interfaceIndex) {
-        Ip4Address ipAddress = null;
-        try {
-            NetworkInterface networkInterface = NetworkInterface.getByIndex(interfaceIndex);
-            Enumeration ipAddresses = networkInterface.getInetAddresses();
-            while (ipAddresses.hasMoreElements()) {
-                InetAddress address = (InetAddress) ipAddresses.nextElement();
-                if (!address.isLinkLocalAddress()) {
-                    ipAddress = Ip4Address.valueOf(address.getAddress());
-                    break;
-                }
-            }
-        } catch (Exception e) {
-            log.debug("Error while getting Interface IP by index");
-            return OspfUtil.DEFAULTIP;
-        }
-
-        return ipAddress;
-    }
-
-    /**
-     * Returns interface mask by index.
-     *
-     * @param interfaceIndex interface index
-     * @return interface IP by index
-     */
-    private String getInterfaceMask(int interfaceIndex) {
-        String subnetMask = null;
-        try {
-            Ip4Address ipAddress = getInterfaceIp(interfaceIndex);
-            NetworkInterface networkInterface = NetworkInterface.getByInetAddress(
-                    InetAddress.getByName(ipAddress.toString()));
-            Enumeration ipAddresses = networkInterface.getInetAddresses();
-            int index = 0;
-            while (ipAddresses.hasMoreElements()) {
-                InetAddress address = (InetAddress) ipAddresses.nextElement();
-                if (!address.isLinkLocalAddress()) {
-                    break;
-                }
-                index++;
-            }
-            int prfLen = networkInterface.getInterfaceAddresses().get(index).getNetworkPrefixLength();
-            int shft = 0xffffffff << (32 - prfLen);
-            int oct1 = ((byte) ((shft & 0xff000000) >> 24)) & 0xff;
-            int oct2 = ((byte) ((shft & 0x00ff0000) >> 16)) & 0xff;
-            int oct3 = ((byte) ((shft & 0x0000ff00) >> 8)) & 0xff;
-            int oct4 = ((byte) (shft & 0x000000ff)) & 0xff;
-            subnetMask = oct1 + "." + oct2 + "." + oct3 + "." + oct4;
-        } catch (Exception e) {
-            log.debug("Error while getting Interface network mask by index");
-            return subnetMask;
-        }
-
-        return subnetMask;
-    }
-
-    /**
-     * Disconnects the executor.
-     */
-    public void disconnectExecutor() {
-        if (connectExecutor != null) {
-            connectExecutor.shutdown();
-            connectExecutor = null;
-        }
-    }
-
-    /**
-     * Connects to peer.
-     */
-    public void connectPeer() {
-        scheduleConnectionRetry(this.connectRetryTime);
-    }
-
-    /**
-     * Retry connection with exponential back-off mechanism.
-     *
-     * @param retryDelay retry delay
-     */
-    private void scheduleConnectionRetry(long retryDelay) {
-        if (this.connectExecutor == null) {
-            this.connectExecutor = Executors.newSingleThreadScheduledExecutor();
-        }
-        this.connectExecutor.schedule(new ConnectionRetry(), retryDelay, TimeUnit.MINUTES);
-    }
-
-    /**
-     * Implements OSPF connection and manages connection to peer with back-off mechanism in case of failure.
-     */
-    class ConnectionRetry implements Runnable {
-        @Override
-        public void run() {
-            log.debug("Connect to peer {}", OspfUtil.SHOST);
-            initConnection();
-            ospfChannelHandler.sentConfigPacket(configPacket);
-            InetSocketAddress connectToSocket = new InetSocketAddress(OspfUtil.SHOST, ospfPort.toInt());
-            try {
-                peerBootstrap.connect(connectToSocket).addListener(new ChannelFutureListener() {
-                    @Override
-                    public void operationComplete(ChannelFuture future) {
-                        if (!future.isSuccess()) {
-                            connectRetryCounter++;
-                            log.error("Connection failed, ConnectRetryCounter {} remote host {}", connectRetryCounter,
-                                      OspfUtil.SHOST);
-                            /*
-                             * Reconnect to peer on failure is exponential till 4 mins, later on retry after every 4
-                             * mins.
-                             */
-                            if (connectRetryTime < RETRY_INTERVAL) {
-                                connectRetryTime = (connectRetryTime != 0) ? connectRetryTime * 2 : 1;
-                            }
-                            scheduleConnectionRetry(connectRetryTime);
-                        } else {
-                            //Send the config packet
-                            ospfChannelHandler.sentConfigPacket(configPacket);
-                            connectRetryCounter++;
-                            log.info("Connected to remote host {}, Connect Counter {}", OspfUtil.SHOST,
-                                     connectRetryCounter);
-                            disconnectExecutor();
-
-                            return;
-                        }
-                    }
-                });
-            } catch (Exception e) {
-                log.info("Connect peer exception : " + e.toString());
-                disconnectExecutor();
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/DeviceInformationImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/DeviceInformationImpl.java
deleted file mode 100644
index b827c28..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/DeviceInformationImpl.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.DeviceInformation;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of an OSPF device information.
- */
-public class DeviceInformationImpl implements DeviceInformation {
-
-    Ip4Address deviceId;
-    Ip4Address routerId;
-    List<Ip4Address> interfaceId = new ArrayList<>();
-    Ip4Address areaId;
-    boolean alreadyCreated;
-    boolean isDr;
-
-    Ip4Address neighborId;
-
-    /**
-     * Gets router id.
-     *
-     * @return router id
-     */
-    public Ip4Address routerId() {
-        return routerId;
-    }
-
-    /**
-     * Sets router id.
-     *
-     * @param routerId router id
-     */
-    public void setRouterId(Ip4Address routerId) {
-        this.routerId = routerId;
-    }
-
-    /**
-     * Gets device id.
-     *
-     * @return device id
-     */
-    public Ip4Address deviceId() {
-        return deviceId;
-    }
-
-    /**
-     * Sets device id.
-     *
-     * @param deviceId device id
-     */
-    public void setDeviceId(Ip4Address deviceId) {
-        this.deviceId = deviceId;
-    }
-
-    /**
-     * Gets interface id list.
-     *
-     * @return interface id list
-     */
-    public List<Ip4Address> interfaceId() {
-        return this.interfaceId;
-    }
-
-    /**
-     * Adds interface id to list.
-     *
-     * @param interfaceId interface id
-     */
-    public void addInterfaceId(Ip4Address interfaceId) {
-        this.interfaceId.add(interfaceId);
-    }
-
-    /**
-     * Gets area id.
-     *
-     * @return area id
-     */
-    public Ip4Address areaId() {
-        return areaId;
-    }
-
-    /**
-     * Sets area id.
-     *
-     * @param areaId area id
-     */
-    public void setAreaId(Ip4Address areaId) {
-        this.areaId = areaId;
-    }
-
-    /**
-     * Gets is already created or not.
-     *
-     * @return true if already created else false
-     */
-    public boolean isAlreadyCreated() {
-        return alreadyCreated;
-    }
-
-    /**
-     * Sets is already created or not.
-     *
-     * @param alreadyCreated true or false
-     */
-    public void setAlreadyCreated(boolean alreadyCreated) {
-        this.alreadyCreated = alreadyCreated;
-    }
-
-    /**
-     * Gets is DR or not.
-     *
-     * @return true if DR else false
-     */
-    public boolean isDr() {
-        return isDr;
-    }
-
-    /**
-     * Stes DR or not.
-     *
-     * @param dr true or false
-     */
-    public void setDr(boolean dr) {
-        this.isDr = dr;
-    }
-
-    /**
-     * Gets neighbor id.
-     *
-     * @return neighbor id
-     */
-    public Ip4Address neighborId() {
-        return neighborId;
-    }
-
-    /**
-     * Sets neighbor id.
-     *
-     * @param neighborId neighbor id
-     */
-    public void setNeighborId(Ip4Address neighborId) {
-        this.neighborId = neighborId;
-    }
-}
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/LinkInformationImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/LinkInformationImpl.java
deleted file mode 100644
index aa29d61..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/LinkInformationImpl.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.LinkInformation;
-
-/**
- * Representation of an OSPF link information..
- */
-public class LinkInformationImpl implements LinkInformation {
-
-    String linkId;
-    Ip4Address linkSourceId;
-    Ip4Address linkDestinationId;
-    Ip4Address interfaceIp;
-    boolean linkSrcIdNotRouterId;
-    boolean alreadyCreated;
-    Ip4Address linkSourceIpAddress;
-    Ip4Address linkDestinationIpAddress;
-
-    /**
-     * Gets link id.
-     *
-     * @return link id
-     */
-    public String linkId() {
-        return linkId;
-    }
-
-    /**
-     * Sets link id.
-     *
-     * @param linkId link id
-     */
-    public void setLinkId(String linkId) {
-        this.linkId = linkId;
-    }
-
-    /**
-     * Gets is already created or not.
-     *
-     * @return true if already created else false
-     */
-    public boolean isAlreadyCreated() {
-        return alreadyCreated;
-    }
-
-    /**
-     * Sets is already created or not.
-     *
-     * @param alreadyCreated true or false
-     */
-    public void setAlreadyCreated(boolean alreadyCreated) {
-        this.alreadyCreated = alreadyCreated;
-    }
-
-    /**
-     * Gets is link source id is not router id.
-     *
-     * @return true if link source id is router id else false
-     */
-    public boolean isLinkSrcIdNotRouterId() {
-        return linkSrcIdNotRouterId;
-    }
-
-    /**
-     * Sets is link source id is not router id.
-     *
-     * @param linkSrcIdNotRouterId true or false
-     */
-    public void setLinkSrcIdNotRouterId(boolean linkSrcIdNotRouterId) {
-        this.linkSrcIdNotRouterId = linkSrcIdNotRouterId;
-    }
-
-    /**
-     * Gets link destination id.
-     *
-     * @return link destination id
-     */
-    public Ip4Address linkDestinationId() {
-        return linkDestinationId;
-    }
-
-    /**
-     * Sets link destination id.
-     *
-     * @param linkDestinationId link destination id
-     */
-    public void setLinkDestinationId(Ip4Address linkDestinationId) {
-        this.linkDestinationId = linkDestinationId;
-    }
-
-    /**
-     * Gets link source id.
-     *
-     * @return link source id
-     */
-    public Ip4Address linkSourceId() {
-        return linkSourceId;
-    }
-
-    /**
-     * Sets link source id.
-     *
-     * @param linkSourceId link source id
-     */
-    public void setLinkSourceId(Ip4Address linkSourceId) {
-        this.linkSourceId = linkSourceId;
-    }
-
-    /**
-     * Gets interface IP address.
-     *
-     * @return interface IP address
-     */
-    public Ip4Address interfaceIp() {
-        return interfaceIp;
-    }
-
-    /**
-     * Sets interface IP address.
-     *
-     * @param interfaceIp interface IP address
-     */
-    public void setInterfaceIp(Ip4Address interfaceIp) {
-        this.interfaceIp = interfaceIp;
-    }
-
-    /**
-     * Gets link source IP address.
-     *
-     * @return link source IP address
-     */
-    public Ip4Address linkSourceIpAddress() {
-        return linkSourceIpAddress;
-    }
-
-    /**
-     * Sets link source IP address.
-     *
-     * @param linkSourceIpAddress link source IP address
-     */
-    public void setLinkSourceIpAddress(Ip4Address linkSourceIpAddress) {
-        this.linkSourceIpAddress = linkSourceIpAddress;
-    }
-
-    /**
-     * Gets link destination IP address.
-     *
-     * @return link destination IP address
-     */
-    public Ip4Address linkDestinationIpAddress() {
-        return linkDestinationIpAddress;
-    }
-
-    /**
-     * Sets link destination IP address.
-     *
-     * @param linkDestinationIpAddress link destination IP address
-     */
-    public void setLinkDestinationIpAddress(Ip4Address linkDestinationIpAddress) {
-        this.linkDestinationIpAddress = linkDestinationIpAddress;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfConfigUtil.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfConfigUtil.java
deleted file mode 100644
index 2173496..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfConfigUtil.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfProcess;
-import org.onosproject.ospf.controller.area.OspfAreaImpl;
-import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
-import org.onosproject.ospf.controller.area.OspfProcessImpl;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.InetAddress;
-import java.net.NetworkInterface;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-
-/**
- * Representation of OSPF network configuration parsing util.
- */
-public final class OspfConfigUtil {
-    public static final String PROCESSID = "processId";
-    public static final String AREAS = "areas";
-    public static final String INTERFACEINDEX = "interfaceIndex";
-    public static final String AREAID = "areaId";
-    public static final String ROUTERID = "routerId";
-    public static final String INTERFACE = "interface";
-    public static final String HELLOINTERVAL = "helloIntervalTime";
-    public static final String ROUTERDEADINTERVAL = "routerDeadIntervalTime";
-    public static final String INTERFACETYPE = "interfaceType";
-    public static final String EXTERNALROUTINGCAPABILITY = "externalRoutingCapability";
-    private static final Logger log = LoggerFactory.getLogger(OspfConfigUtil.class);
-    private static final String ISOPAQUE = "isOpaqueEnable";
-
-    /**
-     * Creates an instance of this.
-     */
-    private OspfConfigUtil() {
-
-    }
-
-    /**
-     * Returns list of OSPF process from the json nodes.
-     *
-     * @param jsonNodes represents one or more OSPF process configuration
-     * @return list of OSPF processes.
-     */
-    public static List<OspfProcess> processes(JsonNode jsonNodes) {
-        List<OspfProcess> ospfProcesses = new ArrayList<>();
-        if (jsonNodes == null) {
-            return ospfProcesses;
-        }
-        //From each Process nodes, get area and related interface details.
-        jsonNodes.forEach(jsonNode -> {
-            List<OspfArea> areas = new ArrayList<>();
-            //Get configured areas for the process.
-            for (JsonNode areaNode : jsonNode.path(AREAS)) {
-                List<OspfInterface> interfaceList = new ArrayList<>();
-                for (JsonNode interfaceNode : areaNode.path(INTERFACE)) {
-                    OspfInterface ospfInterface = interfaceDetails(interfaceNode);
-                    if (ospfInterface != null) {
-                        interfaceList.add(ospfInterface);
-                    }
-                }
-                //Get the area details
-                OspfArea area = areaDetails(areaNode);
-                if (area != null) {
-                    area.setOspfInterfaceList(interfaceList);
-                    areas.add(area);
-                }
-            }
-            OspfProcess process = new OspfProcessImpl();
-            process.setProcessId(jsonNode.path(PROCESSID).asText());
-            process.setAreas(areas);
-            ospfProcesses.add(process);
-        });
-
-        return ospfProcesses;
-    }
-
-    /**
-     * Returns interface IP by index.
-     *
-     * @param interfaceIndex interface index
-     * @return interface IP by index
-     */
-    private static Ip4Address getInterfaceIp(int interfaceIndex) {
-        Ip4Address ipAddress = null;
-        try {
-            NetworkInterface networkInterface = NetworkInterface.getByIndex(interfaceIndex);
-            Enumeration ipAddresses = networkInterface.getInetAddresses();
-            while (ipAddresses.hasMoreElements()) {
-                InetAddress address = (InetAddress) ipAddresses.nextElement();
-                if (!address.isLinkLocalAddress()) {
-                    ipAddress = Ip4Address.valueOf(address.getAddress());
-                    break;
-                }
-            }
-        } catch (Exception e) {
-            log.debug("Error while getting Interface IP by index");
-            return OspfUtil.DEFAULTIP;
-        }
-        return ipAddress;
-    }
-
-    /**
-     * Returns interface MAC by index.
-     *
-     * @param interfaceIndex interface index
-     * @return interface IP by index
-     */
-    private static String getInterfaceMask(int interfaceIndex) {
-        String subnetMask = null;
-        try {
-            Ip4Address ipAddress = getInterfaceIp(interfaceIndex);
-            NetworkInterface networkInterface = NetworkInterface.getByInetAddress(
-                    InetAddress.getByName(ipAddress.toString()));
-            Enumeration ipAddresses = networkInterface.getInetAddresses();
-            int index = 0;
-            while (ipAddresses.hasMoreElements()) {
-                InetAddress address = (InetAddress) ipAddresses.nextElement();
-                if (!address.isLinkLocalAddress()) {
-                    break;
-                }
-                index++;
-            }
-            int prfLen = networkInterface.getInterfaceAddresses().get(index).getNetworkPrefixLength();
-            int shft = 0xffffffff << (32 - prfLen);
-            int oct1 = ((byte) ((shft & 0xff000000) >> 24)) & 0xff;
-            int oct2 = ((byte) ((shft & 0x00ff0000) >> 16)) & 0xff;
-            int oct3 = ((byte) ((shft & 0x0000ff00) >> 8)) & 0xff;
-            int oct4 = ((byte) (shft & 0x000000ff)) & 0xff;
-            subnetMask = oct1 + "." + oct2 + "." + oct3 + "." + oct4;
-        } catch (Exception e) {
-            log.debug("Error while getting Interface network mask by index");
-            return subnetMask;
-        }
-        return subnetMask;
-    }
-
-    /**
-     * Checks if valid digit or not.
-     *
-     * @param strInput input value
-     * @return true if valid else false
-     */
-    private static boolean isValidDigit(String strInput) {
-        boolean isValid = true;
-        if (isPrimitive(strInput)) {
-            int input = Integer.parseInt(strInput);
-            if (input < 1 || input > 255) {
-                log.debug("Wrong config input value: {}", strInput);
-                isValid = false;
-            } else {
-                isValid = true;
-            }
-
-        } else {
-            isValid = false;
-        }
-
-        return isValid;
-    }
-
-    /**
-     * Checks if primitive or not.
-     *
-     * @param value input value
-     * @return true if number else false
-     */
-    private static boolean isPrimitive(String value) {
-        boolean status = true;
-        value = value.trim();
-        if (value.length() < 1) {
-            return false;
-        }
-        for (int i = 0; i < value.length(); i++) {
-            char c = value.charAt(i);
-            if (!Character.isDigit(c)) {
-                status = false;
-                break;
-            }
-        }
-
-        return status;
-    }
-
-    /**
-     * Checks if boolean or not.
-     *
-     * @param value input value
-     * @return true if boolean else false
-     */
-    private static boolean isBoolean(String value) {
-        boolean status = false;
-        value = value.trim();
-        if (value.equals("true") || value.equals("false")) {
-            return true;
-        }
-
-        return status;
-    }
-
-    /**
-     * Checks if given id is valid or not.
-     *
-     * @param value input value
-     * @return true if valid else false
-     */
-    private static boolean isValidIpAddress(String value) {
-        boolean status = true;
-        try {
-            Ip4Address ipAddress = Ip4Address.valueOf(value);
-        } catch (Exception e) {
-            log.debug("Invalid IP address string: {}", value);
-            return false;
-        }
-
-        return status;
-    }
-
-    /**
-     * Returns OSPF area instance from configuration.
-     *
-     * @param areaNode area configuration
-     * @return OSPF area instance
-     */
-    private static OspfArea areaDetails(JsonNode areaNode) {
-        OspfArea area = new OspfAreaImpl();
-        String areaId = areaNode.path(AREAID).asText();
-        if (isValidIpAddress(areaId)) {
-            area.setAreaId(Ip4Address.valueOf(areaId));
-        } else {
-            log.debug("Wrong areaId: {}", areaId);
-            return null;
-        }
-        String routerId = areaNode.path(ROUTERID).asText();
-        if (isValidIpAddress(routerId)) {
-            area.setRouterId(Ip4Address.valueOf(routerId));
-        } else {
-            log.debug("Wrong routerId: {}", routerId);
-            return null;
-        }
-        String routingCapability = areaNode.path(EXTERNALROUTINGCAPABILITY).asText();
-        if (isBoolean(routingCapability)) {
-            area.setExternalRoutingCapability(Boolean.valueOf(routingCapability));
-        } else {
-            log.debug("Wrong routingCapability: {}", routingCapability);
-            return null;
-        }
-        String isOpaqueEnabled = areaNode.path(ISOPAQUE).asText();
-        if (isBoolean(isOpaqueEnabled)) {
-            area.setIsOpaqueEnabled(Boolean.valueOf(isOpaqueEnabled));
-        } else {
-            log.debug("Wrong isOpaqueEnabled: {}", isOpaqueEnabled);
-            return null;
-        }
-        area.setOptions(OspfUtil.HELLO_PACKET_OPTIONS);
-
-        return area;
-    }
-
-    /**
-     * Returns OSPF interface instance from configuration.
-     *
-     * @param interfaceNode interface configuration
-     * @return OSPF interface instance
-     */
-    private static OspfInterface interfaceDetails(JsonNode interfaceNode) {
-        OspfInterface ospfInterface = new OspfInterfaceImpl();
-        String index = interfaceNode.path(INTERFACEINDEX).asText();
-        if (isValidDigit(index)) {
-            ospfInterface.setInterfaceIndex(Integer.parseInt(index));
-        } else {
-            log.debug("Wrong interface index: {}", index);
-            return null;
-        }
-        Ip4Address interfaceIp = getInterfaceIp(ospfInterface.interfaceIndex());
-        if (interfaceIp.equals(OspfUtil.DEFAULTIP)) {
-            return null;
-        }
-        ospfInterface.setIpAddress(interfaceIp);
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf(getInterfaceMask(
-                ospfInterface.interfaceIndex())));
-        ospfInterface.setBdr(OspfUtil.DEFAULTIP);
-        ospfInterface.setDr(OspfUtil.DEFAULTIP);
-        String helloInterval = interfaceNode.path(HELLOINTERVAL).asText();
-        if (isValidDigit(helloInterval)) {
-            ospfInterface.setHelloIntervalTime(Integer.parseInt(helloInterval));
-        } else {
-            log.debug("Wrong hello interval: {}", helloInterval);
-            return null;
-        }
-        String routerDeadInterval = interfaceNode.path(ROUTERDEADINTERVAL).asText();
-        if (isValidDigit(routerDeadInterval)) {
-            ospfInterface.setRouterDeadIntervalTime(Integer.parseInt(routerDeadInterval));
-        } else {
-            log.debug("Wrong routerDeadInterval: {}", routerDeadInterval);
-            return null;
-        }
-        String interfaceType = interfaceNode.path(INTERFACETYPE).asText();
-        if (isValidDigit(interfaceType)) {
-            ospfInterface.setInterfaceType(Integer.parseInt(interfaceType));
-        } else {
-            log.debug("Wrong interfaceType: {}", interfaceType);
-            return null;
-        }
-        ospfInterface.setReTransmitInterval(OspfUtil.RETRANSMITINTERVAL);
-        ospfInterface.setMtu(OspfUtil.MTU);
-        ospfInterface.setRouterPriority(OspfUtil.ROUTER_PRIORITY);
-
-        return ospfInterface;
-    }
-}
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfControllerImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfControllerImpl.java
deleted file mode 100644
index dc63617..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfControllerImpl.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.google.common.collect.Sets;
-import org.onosproject.net.driver.DriverService;
-import org.onosproject.ospf.controller.OspfAgent;
-import org.onosproject.ospf.controller.OspfController;
-import org.onosproject.ospf.controller.OspfLinkListener;
-import org.onosproject.ospf.controller.OspfLinkTed;
-import org.onosproject.ospf.controller.OspfProcess;
-import org.onosproject.ospf.controller.OspfRouter;
-import org.onosproject.ospf.controller.OspfRouterListener;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Representation of an OSPF controller implementation.
- * Serves as a one stop shop for obtaining OSPF devices and (un)register listeners on OSPF events
- */
-@Component(immediate = true, service = OspfController.class)
-public class OspfControllerImpl implements OspfController {
-
-    private static final Logger log = LoggerFactory.getLogger(OspfControllerImpl.class);
-    private final Controller ctrl = new Controller();
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DriverService driverService;
-    protected Set<OspfRouterListener> ospfRouterListener = new HashSet<>();
-    protected Set<OspfLinkListener> ospfLinkListener = Sets.newHashSet();
-    protected OspfAgent agent = new InternalDeviceConfig();
-
-    @Activate
-    public void activate() {
-        log.info("OSPFControllerImpl activate...!!!");
-        ctrl.start(agent, driverService);
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        ctrl.stop();
-        log.info("Stopped");
-    }
-
-
-    @Override
-    public void addRouterListener(OspfRouterListener listener) {
-        if (!ospfRouterListener.contains(listener)) {
-            this.ospfRouterListener.add(listener);
-        }
-    }
-
-    @Override
-    public void removeRouterListener(OspfRouterListener listener) {
-        this.ospfRouterListener.remove(listener);
-    }
-
-    @Override
-    public void addLinkListener(OspfLinkListener listener) {
-        ospfLinkListener.add(listener);
-
-    }
-
-    @Override
-    public void removeLinkListener(OspfLinkListener listener) {
-        ospfLinkListener.remove(listener);
-
-    }
-
-    @Override
-    public Set<OspfRouterListener> listener() {
-        return ospfRouterListener;
-    }
-
-    @Override
-    public Set<OspfLinkListener> linkListener() {
-        return ospfLinkListener;
-    }
-
-
-    @Override
-    public List<OspfProcess> getAllConfiguredProcesses() {
-        List<OspfProcess> processes = ctrl.getAllConfiguredProcesses();
-        return processes;
-    }
-
-    @Override
-    public void updateConfig(JsonNode processesNode) {
-        try {
-            List<OspfProcess> ospfProcesses = OspfConfigUtil.processes(processesNode);
-            //if there is interface details then update configuration
-            if (!ospfProcesses.isEmpty() &&
-                    ospfProcesses.get(0).areas() != null && !ospfProcesses.get(0).areas().isEmpty() &&
-                    ospfProcesses.get(0).areas().get(0) != null &&
-                    !ospfProcesses.get(0).areas().get(0).ospfInterfaceList().isEmpty()) {
-                ctrl.updateConfig(ospfProcesses);
-            }
-        } catch (Exception e) {
-            log.debug("Error::updateConfig::{}", e.getMessage());
-        }
-    }
-
-    @Override
-    public void deleteConfig(List<OspfProcess> processes, String attribute) {
-    }
-
-    /**
-     * Notifier for internal OSPF device and link changes.
-     */
-    private class InternalDeviceConfig implements OspfAgent {
-
-        @Override
-        public boolean addConnectedRouter(OspfRouter ospfRouter) {
-            for (OspfRouterListener l : listener()) {
-                l.routerAdded(ospfRouter);
-            }
-            return true;
-        }
-
-        @Override
-        public void removeConnectedRouter(OspfRouter ospfRouter) {
-            for (OspfRouterListener l : listener()) {
-                l.routerRemoved(ospfRouter);
-            }
-        }
-
-        @Override
-        public void addLink(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) {
-            for (OspfLinkListener l : linkListener()) {
-                l.addLink(ospfRouter, ospfLinkTed);
-            }
-
-        }
-
-        @Override
-        public void deleteLink(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) {
-            for (OspfLinkListener l : linkListener()) {
-                l.deleteLink(ospfRouter, ospfLinkTed);
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfDeviceTedImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfDeviceTedImpl.java
deleted file mode 100644
index 298074d..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfDeviceTedImpl.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.Ip6Address;
-import org.onosproject.ospf.controller.OspfDeviceTed;
-
-import java.util.List;
-
-/**
- * Representation of an OSPF device Traffic Engineering details.
- */
-public class OspfDeviceTedImpl implements OspfDeviceTed {
-
-    List<Ip4Address> ipv4RouterIds;
-    List<Ip6Address> ipv6RouterIds;
-    List<Short> topologyIds;
-    Boolean asbr;
-    Boolean abr;
-
-    /**
-     * Gets list of IPv4 router id.
-     *
-     * @return list of IPv4 router id
-     */
-    public List<Ip4Address> ipv4RouterIds() {
-        return ipv4RouterIds;
-    }
-
-    @Override
-    public void setIpv4RouterIds(List<Ip4Address> ipv4RouterIds) {
-        this.ipv4RouterIds = ipv4RouterIds;
-    }
-
-    /**
-     * Gets if router is area border router or not.
-     *
-     * @return true if it is area border router else false
-     */
-    public Boolean abr() {
-        return abr;
-    }
-
-    @Override
-    public void setAbr(Boolean abr) {
-        this.abr = abr;
-    }
-
-    /**
-     * Gets if router is autonomous system border router or not.
-     *
-     * @return true or false
-     */
-    public Boolean asbr() {
-        return asbr;
-    }
-
-    @Override
-    public void setAsbr(Boolean asbr) {
-        this.asbr = asbr;
-    }
-
-    /**
-     * Gets list of topology id's.
-     *
-     * @return list of topology id's
-     */
-    public List<Short> topologyIds() {
-        return topologyIds;
-    }
-
-    @Override
-    public void setTopologyIds(List<Short> topologyIds) {
-        this.topologyIds = topologyIds;
-    }
-
-    /**
-     * Gets list of ipv6 router id's.
-     *
-     * @return list of ipv6 router id's
-     */
-    public List<Ip6Address> ipv6RouterIds() {
-        return ipv6RouterIds;
-    }
-
-    @Override
-    public void setIpv6RouterIds(List<Ip6Address> ipv6RouterIds) {
-        this.ipv6RouterIds = ipv6RouterIds;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfInterfaceChannelHandler.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfInterfaceChannelHandler.java
deleted file mode 100644
index 5ac63b1..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfInterfaceChannelHandler.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.jboss.netty.channel.ChannelStateEvent;
-import org.jboss.netty.channel.ExceptionEvent;
-import org.jboss.netty.channel.MessageEvent;
-import org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler;
-import org.jboss.netty.handler.timeout.ReadTimeoutException;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfMessage;
-import org.onosproject.ospf.controller.OspfNbr;
-import org.onosproject.ospf.controller.OspfProcess;
-import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
-import org.onosproject.ospf.controller.util.OspfInterfaceType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.util.OspfInterfaceState;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.nio.channels.ClosedChannelException;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.RejectedExecutionException;
-
-/**
- * Channel handler deals with the OSPF channel connection.
- * Also it dispatches messages to the appropriate handlers for processing.
- */
-public class OspfInterfaceChannelHandler extends IdleStateAwareChannelHandler {
-
-    private static final Logger log = LoggerFactory.getLogger(OspfInterfaceChannelHandler.class);
-    private static Map<Integer, Object> isisDb = null;
-    private Channel channel = null;
-    private Controller controller;
-    private List<OspfProcess> processes = null;
-    private byte[] configPacket = null;
-    private Map<Integer, OspfInterface> ospfInterfaceMap = new ConcurrentHashMap<>();
-
-    /**
-     * Creates an instance of OSPF channel handler.
-     *
-     * @param controller controller instance
-     * @param processes  list of configured processes
-     */
-    public OspfInterfaceChannelHandler(Controller controller, List<OspfProcess> processes) {
-        this.controller = controller;
-        this.processes = processes;
-    }
-
-    /**
-     * Initializes the interface map with interface details.
-     */
-    public void initializeInterfaceMap()  {
-        for (OspfProcess process : processes) {
-            for (OspfArea area : process.areas()) {
-                for (OspfInterface ospfInterface : area.ospfInterfaceList()) {
-                    OspfInterface anInterface = ospfInterfaceMap.get(ospfInterface.interfaceIndex());
-                    if (anInterface == null) {
-                        ospfInterface.setOspfArea(area);
-                        ((OspfInterfaceImpl) ospfInterface).setController(controller);
-                        ((OspfInterfaceImpl) ospfInterface).setState(OspfInterfaceState.DOWN);
-                        ospfInterface.setDr(Ip4Address.valueOf("0.0.0.0"));
-                        ospfInterface.setBdr(Ip4Address.valueOf("0.0.0.0"));
-                        ospfInterfaceMap.put(ospfInterface.interfaceIndex(), ospfInterface);
-                    }
-                    ((OspfInterfaceImpl) ospfInterface).setChannel(channel);
-                    ospfInterface.interfaceUp();
-                    ospfInterface.startDelayedAckTimer();
-                }
-                //Initialize the LSDB and aging process
-                area.initializeDb();
-            }
-        }
-    }
-
-    /**
-     * Updates the interface map with interface details.
-     *
-     * @param ospfProcesses updated process instances
-     */
-    public void updateInterfaceMap(List<OspfProcess> ospfProcesses) {
-        for (OspfProcess ospfUpdatedProcess : ospfProcesses) {
-            for (OspfArea updatedArea : ospfUpdatedProcess.areas()) {
-                for (OspfInterface ospfUpdatedInterface : updatedArea.ospfInterfaceList()) {
-                    OspfInterface ospfInterface = ospfInterfaceMap.get(ospfUpdatedInterface.interfaceIndex());
-                    if (ospfInterface == null) {
-                        ospfUpdatedInterface.setOspfArea(updatedArea);
-                        ((OspfInterfaceImpl) ospfUpdatedInterface).setController(controller);
-                        ((OspfInterfaceImpl) ospfUpdatedInterface).setState(OspfInterfaceState.DOWN);
-                        ospfUpdatedInterface.setDr(Ip4Address.valueOf("0.0.0.0"));
-                        ospfUpdatedInterface.setBdr(Ip4Address.valueOf("0.0.0.0"));
-                        ospfInterfaceMap.put(ospfUpdatedInterface.interfaceIndex(), ospfUpdatedInterface);
-                        ((OspfInterfaceImpl) ospfUpdatedInterface).setChannel(channel);
-                        ospfUpdatedInterface.interfaceUp();
-                        ospfUpdatedInterface.startDelayedAckTimer();
-                    } else {
-                        ospfInterface.setOspfArea(updatedArea);
-
-                        if (ospfInterface.routerDeadIntervalTime() != ospfUpdatedInterface.routerDeadIntervalTime()) {
-                            ospfInterface.setRouterDeadIntervalTime(ospfUpdatedInterface.routerDeadIntervalTime());
-                            Map<String, OspfNbr> neighbors = ospfInterface.listOfNeighbors();
-                            for (String key : neighbors.keySet()) {
-                                OspfNbr ospfNbr = ospfInterface.neighbouringRouter(key);
-                                ospfNbr.setRouterDeadInterval(ospfInterface.routerDeadIntervalTime());
-                                ospfNbr.stopInactivityTimeCheck();
-                                ospfNbr.startInactivityTimeCheck();
-                            }
-                        }
-                        if (ospfInterface.interfaceType() != ospfUpdatedInterface.interfaceType()) {
-                            ospfInterface.setInterfaceType(ospfUpdatedInterface.interfaceType());
-                            if (ospfInterface.interfaceType() == OspfInterfaceType.POINT_TO_POINT.value()) {
-                                ospfInterface.setDr(Ip4Address.valueOf("0.0.0.0"));
-                                ospfInterface.setBdr(Ip4Address.valueOf("0.0.0.0"));
-                            }
-                            ospfInterface.removeNeighbors();
-                        }
-                        if (ospfInterface.helloIntervalTime() != ospfUpdatedInterface.helloIntervalTime()) {
-                            ospfInterface.setHelloIntervalTime(ospfUpdatedInterface.helloIntervalTime());
-                            ospfInterface.stopHelloTimer();
-                            ospfInterface.startHelloTimer();
-                        }
-                        ospfInterfaceMap.put(ospfInterface.interfaceIndex(), ospfInterface);
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Initialize channel, start hello sender and initialize LSDB.
-     */
-    private void initialize() {
-        log.debug("OspfChannelHandler initialize..!!!");
-        if (configPacket != null) {
-            log.debug("OspfChannelHandler initialize -> sentConfig packet of length ::"
-                              + configPacket.length);
-            sentConfigPacket(configPacket);
-        }
-        initializeInterfaceMap();
-    }
-
-    @Override
-    public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent evt) {
-        log.info("OSPF channelConnected from {}", evt.getChannel().getRemoteAddress());
-        this.channel = evt.getChannel();
-        initialize();
-    }
-
-    @Override
-    public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent evt) {
-        log.debug("OspfChannelHandler::channelDisconnected...!!!");
-
-        for (Integer interfaceIndex : ospfInterfaceMap.keySet()) {
-            OspfInterface anInterface = ospfInterfaceMap.get(interfaceIndex);
-            if (anInterface != null) {
-                anInterface.interfaceDown();
-                anInterface.stopDelayedAckTimer();
-            }
-        }
-
-        if (controller != null) {
-            controller.connectPeer();
-        }
-    }
-
-    @Override
-    public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) {
-        log.debug("[exceptionCaught]: " + e.toString());
-        if (e.getCause() instanceof ReadTimeoutException) {
-            log.debug("Disconnecting device {} due to read timeout", e.getChannel().getRemoteAddress());
-            return;
-        } else if (e.getCause() instanceof ClosedChannelException) {
-            log.debug("Channel for OSPF {} already closed", e.getChannel().getRemoteAddress());
-        } else if (e.getCause() instanceof IOException) {
-            log.debug("Disconnecting OSPF {} due to IO Error: {}", e.getChannel().getRemoteAddress(),
-                      e.getCause().getMessage());
-        } else if (e.getCause() instanceof OspfParseException) {
-            OspfParseException errMsg = (OspfParseException) e.getCause();
-            byte errorCode = errMsg.errorCode();
-            byte errorSubCode = errMsg.errorSubCode();
-            log.debug("Error while parsing message from OSPF {}, ErrorCode {}",
-                      e.getChannel().getRemoteAddress(), errorCode);
-        } else if (e.getCause() instanceof RejectedExecutionException) {
-            log.debug("Could not process message: queue full");
-        } else {
-            log.debug("Error while processing message from OSPF {}, {}",
-                      e.getChannel().getRemoteAddress(), e.getCause().getMessage());
-        }
-    }
-
-    @Override
-    public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
-        log.debug("OspfChannelHandler::messageReceived...!!!");
-        Object message = e.getMessage();
-        if (message instanceof List) {
-            List<OspfMessage> ospfMessageList = (List<OspfMessage>) message;
-            log.debug("OspfChannelHandler::List of IsisMessages Size {}", ospfMessageList.size());
-
-            for (OspfMessage ospfMessage : ospfMessageList) {
-                processOspfMessage(ospfMessage, ctx);
-            }
-        }
-        if (message instanceof OspfMessage) {
-            OspfMessage ospfMessage = (OspfMessage) message;
-            log.debug("OspfChannelHandler::OspfMessages received...!!");
-            processOspfMessage(ospfMessage, ctx);
-        }
-    }
-
-    /**
-     * When an OSPF message received it is handed over to this method.
-     * Based on the type of the OSPF message received it will be handed over
-     * to corresponding message handler methods.
-     *
-     * @param ospfMessage received OSPF message
-     * @param ctx         channel handler context instance.
-     */
-    private void processOspfMessage(OspfMessage
-                                           ospfMessage, ChannelHandlerContext ctx) {
-        log.debug("OspfChannelHandler::processOspfMessage...!!!");
-        int interfaceIndex = ospfMessage.interfaceIndex();
-        OspfInterface ospfInterface = ospfInterfaceMap.get(interfaceIndex);
-        if (ospfInterface != null) {
-            ospfInterface.processOspfMessage(ospfMessage, ctx);
-        }
-    }
-
-    /**
-     * Sends the interface configuration packet to server.
-     *
-     * @param configPacket interface configuration
-     */
-    public void sentConfigPacket(byte[] configPacket) {
-        if (channel != null) {
-            channel.write(configPacket);
-            log.debug("OspfChannelHandler sentConfigPacket packet sent..!!!");
-        } else {
-            log.debug("OspfChannelHandler sentConfigPacket channel not connected - re try..!!!");
-            this.configPacket = configPacket;
-        }
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfLinkTedImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfLinkTedImpl.java
deleted file mode 100644
index cb55499..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfLinkTedImpl.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.Ip6Address;
-import org.onlab.util.Bandwidth;
-import org.onosproject.ospf.controller.OspfLinkTed;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Implements OSPF Link Traffic engineering details.
- */
-public class OspfLinkTedImpl implements OspfLinkTed {
-
-
-    Bandwidth maximumLink;
-    List<Bandwidth> maxUnResBandwidth = new ArrayList<>();
-    Bandwidth maxReserved;
-    Integer teMetric;
-    List<Ip4Address> ipv4LocRouterId = new ArrayList<>();
-    List<Ip6Address> ipv6LocRouterId = new ArrayList<>();
-    List<Ip4Address> ipv4RemRouterId = new ArrayList<>();
-    List<Ip6Address> ipv6RemRouterId = new ArrayList<>();
-
-
-    /**
-     * Gets maximum link.
-     *
-     * @return maximum link
-     */
-    public Bandwidth maximumLink() {
-        return maximumLink;
-    }
-
-    /**
-     * Sets maximum link.
-     *
-     * @param maximumLink maximum link
-     */
-    public void setMaximumLink(Bandwidth maximumLink) {
-        this.maximumLink = maximumLink;
-    }
-
-    /**
-     * Gets list of IPv6 remote router id.
-     *
-     * @return list of IPv6 remote router id
-     */
-    public List<Ip6Address> ipv6RemRouterId() {
-        return ipv6RemRouterId;
-    }
-
-
-    /**
-     * Sets list of IPv6 remote router id.
-     *
-     * @param ipv6RemRouterId IPv6 remote router id
-     */
-    public void setIpv6RemRouterId(List<Ip6Address> ipv6RemRouterId) {
-        this.ipv6RemRouterId = ipv6RemRouterId;
-    }
-
-    /**
-     * Gets list of IPv4 remote router id.
-     *
-     * @return list of IPv4 remote router id
-     */
-    public List<Ip4Address> ipv4RemRouterId() {
-        return ipv4RemRouterId;
-    }
-
-    /**
-     * Sets IPv4 remote router id.
-     *
-     * @param ipv4RemRouterId IPv4 remote router id
-     */
-    public void setIpv4RemRouterId(List<Ip4Address> ipv4RemRouterId) {
-        this.ipv4RemRouterId = ipv4RemRouterId;
-    }
-
-    /**
-     * Gets list of IPv6 local router id.
-     *
-     * @return list of IPv6 local router id
-     */
-    public List<Ip6Address> ipv6LocRouterId() {
-        return ipv6LocRouterId;
-    }
-
-    /**
-     * Sets list of IPv6 local router id.
-     *
-     * @param ipv6LocRouterId IPv6 local router id
-     */
-    public void setIpv6LocRouterId(List<Ip6Address> ipv6LocRouterId) {
-        this.ipv6LocRouterId = ipv6LocRouterId;
-    }
-
-    /**
-     * Gets list of IPv4 local router id.
-     *
-     * @return list of IPv4 local router id
-     */
-    public List<Ip4Address> ipv4LocRouterId() {
-        return ipv4LocRouterId;
-    }
-
-    /**
-     * Sets list of IPv4 local router id.
-     *
-     * @param ipv4LocRouterId IPv4 local router id
-     */
-    public void setIpv4LocRouterId(List<Ip4Address> ipv4LocRouterId) {
-        this.ipv4LocRouterId = ipv4LocRouterId;
-    }
-
-    /**
-     * Gets traffic engineering metric.
-     *
-     * @return traffic engineering metric
-     */
-    public Integer teMetric() {
-        return teMetric;
-    }
-
-    /**
-     * Sets traffic engineering metric.
-     *
-     * @param teMetric Traffic engineering metric
-     */
-    public void setTeMetric(Integer teMetric) {
-        this.teMetric = teMetric;
-    }
-
-    /**
-     * Gets maximum bandwidth reserved.
-     *
-     * @return maximum bandwidth reserved
-     */
-    public Bandwidth maxReserved() {
-        return maxReserved;
-    }
-
-    /**
-     * Sets maximum bandwidth reserved.
-     *
-     * @param maxReserved maximum bandwidth reserved
-     */
-    public void setMaxReserved(Bandwidth maxReserved) {
-        this.maxReserved = maxReserved;
-    }
-
-    /**
-     * Gets list of maximum unreserved bandwidth.
-     *
-     * @return list of maximum unreserved bandwidth
-     */
-    public List<Bandwidth> maxUnResBandwidth() {
-        return maxUnResBandwidth;
-    }
-
-    /**
-     * Sets ist of maximum unreserved bandwidth.
-     *
-     * @param bandwidth maximum unreserved bandwidth
-     */
-    public void setMaxUnResBandwidth(Bandwidth bandwidth) {
-        this.maxUnResBandwidth.add(bandwidth);
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfMessageDecoder.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfMessageDecoder.java
deleted file mode 100644
index 0446e09..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfMessageDecoder.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.jboss.netty.handler.codec.frame.FrameDecoder;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfMessage;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.ospfpacket.OspfMessageReader;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Decodes an OSPF message from a Channel, for use in a netty pipeline.
- */
-public class OspfMessageDecoder extends FrameDecoder {
-
-    private static final Logger log = LoggerFactory.getLogger(OspfMessageDecoder.class);
-
-    @Override
-    protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer)
-              throws OspfParseException {
-        log.debug("OspfMessageDecoder::Message received <:> length {}", buffer.readableBytes());
-        if (!channel.isConnected()) {
-            log.info("Channel is not connected.");
-            return null;
-        }
-        OspfMessageReader messageReader = new OspfMessageReader();
-        List<OspfMessage> ospfMessageList = new LinkedList<>();
-        while (buffer.readableBytes() >= OspfUtil.MINIMUM_FRAME_LEN) {
-            ChannelBuffer ospfDataBuffer = buffer.readBytes(OspfUtil.MINIMUM_FRAME_LEN);
-            int readableBytes = ospfDataBuffer.readableBytes();
-            OspfMessage message = messageReader.readFromBuffer(ospfDataBuffer);
-            if (message != null) {
-                if (ospfDataBuffer.readableBytes() >= OspfUtil.METADATA_LEN) {
-                    ospfDataBuffer.readerIndex(readableBytes - OspfUtil.METADATA_LEN);
-                    log.debug("IsisMessageDecoder::Reading metadata <:> length {}", ospfDataBuffer.readableBytes());
-
-
-                    int interfaceIndex = ospfDataBuffer.readByte();
-                    byte[] sourceIpBytes = new byte[OspfUtil.FOUR_BYTES];
-                    ospfDataBuffer.readBytes(sourceIpBytes, 0, OspfUtil.FOUR_BYTES);
-                    Ip4Address sourceIP = Ip4Address.valueOf(sourceIpBytes);
-
-                    message.setSourceIp(sourceIP);
-                    message.setInterfaceIndex(interfaceIndex);
-                }
-                ospfMessageList.add(message);
-            }
-        }
-        return (!ospfMessageList.isEmpty()) ? ospfMessageList : null;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfMessageEncoder.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfMessageEncoder.java
deleted file mode 100644
index c457725..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfMessageEncoder.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.jboss.netty.handler.codec.oneone.OneToOneEncoder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Encodes an OSPF message for output into a ChannelBuffer, for use in a netty pipeline.
- */
-public class OspfMessageEncoder extends OneToOneEncoder {
-
-    private static final Logger log = LoggerFactory.getLogger(OspfMessageEncoder.class);
-
-    @Override
-    protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) {
-
-        byte[] byteMsg = (byte[]) msg;
-        log.debug("Encoding ospfMessage of length {}", byteMsg.length);
-        ChannelBuffer channelBuffer = ChannelBuffers.buffer(byteMsg.length);
-        channelBuffer.writeBytes(byteMsg);
-
-        return channelBuffer;
-    }
-}
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfNbrImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfNbrImpl.java
deleted file mode 100644
index 0f7a91c..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfNbrImpl.java
+++ /dev/null
@@ -1,1953 +0,0 @@
-/*
-* Copyright 2016-present Open Networking Foundation
-*
-* 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.ospf.controller.impl;
-
-import org.jboss.netty.channel.Channel;
-import org.onlab.packet.Ip4Address;
-import org.onlab.util.Bandwidth;
-import org.onosproject.ospf.controller.DeviceInformation;
-import org.onosproject.ospf.controller.LinkInformation;
-import org.onosproject.ospf.controller.LsaWrapper;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.OspfDeviceTed;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfLinkTed;
-import org.onosproject.ospf.controller.OspfLsa;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.controller.OspfLsdb;
-import org.onosproject.ospf.controller.OspfMessage;
-import org.onosproject.ospf.controller.OspfNbr;
-import org.onosproject.ospf.controller.OspfNeighborState;
-import org.onosproject.ospf.controller.OspfPacketType;
-import org.onosproject.ospf.controller.OspfRouter;
-import org.onosproject.ospf.controller.TopologyForDeviceAndLink;
-import org.onosproject.ospf.controller.area.OspfAreaImpl;
-import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
-import org.onosproject.ospf.controller.lsdb.LsaWrapperImpl;
-import org.onosproject.ospf.controller.util.OspfInterfaceType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10;
-import org.onosproject.ospf.protocol.lsa.types.TopLevelTlv;
-import org.onosproject.ospf.protocol.ospfpacket.OspfMessageWriter;
-import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
-import org.onosproject.ospf.protocol.ospfpacket.subtype.LsRequestPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate;
-import org.onosproject.ospf.protocol.util.ChecksumCalculator;
-import org.onosproject.ospf.protocol.util.OspfInterfaceState;
-import org.onosproject.ospf.protocol.util.OspfParameters;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Represents an OSPF neighbor.
- * The first thing an OSPF router must do is find its neighbors and form adjacency.
- * Each neighbor that the router finds will be represented by this class.
- */
-public class OspfNbrImpl implements OspfNbr {
-    private static final Logger log = LoggerFactory.getLogger(OspfNbrImpl.class);
-    private OspfNeighborState state;
-    private InternalRxmtDdPacket rxmtDdPacketTask;
-    private InternalInactivityTimeCheck inActivityTimeCheckTask;
-    private InternalFloodingTask floodingTask;
-    private InternalRxmtLsrPacket rxmtLsrPacketTask;
-    private ScheduledExecutorService exServiceRxmtLsr;
-    private ScheduledExecutorService exServiceFlooding;
-    private ScheduledExecutorService exServiceRxmtDDPacket;
-    private ScheduledExecutorService exServiceInActivity;
-
-    private boolean floodingTimerScheduled = false;
-    private boolean rxmtLsrTimerScheduled = false;
-    private boolean rxmtDdPacketTimerScheduled = false;
-    private boolean inActivityTimerScheduled = false;
-
-    /**
-     * When the two neighbors are exchanging databases, they form a master/slave relationship.
-     * The master sends the first Database Description Packet
-     */
-    private int isMaster;
-
-    /**
-     * The DD Sequence Number of the DD packet that is currently being sent to the neighbor.
-     */
-    private long ddSeqNum;
-
-    /**
-     * Another data structure for keeping information of the last received DD packet.
-     */
-    private DdPacket lastDdPacket;
-
-    /**
-     * Another data structure for keeping information of the last Sent DD packet.
-     */
-    private DdPacket lastSentDdPacket;
-
-    /**
-     * Another data structure for keeping information of the last Sent LSrequest packet.
-     */
-    private LsRequest lastSentLsrPacket;
-
-    /**
-     * The router ID of the Neighbor Router.
-     */
-    private Ip4Address neighborId;
-
-    /**
-     * The IP address of the neighboring router's interface to the attached network.
-     */
-    private Ip4Address neighborIpAddr;
-
-    /**
-     * The neighbor's IDEA of the designated router.
-     */
-    private Ip4Address neighborDr;
-
-    /**
-     * The neighbor's IDEA of the backup designated router.
-     */
-    private Ip4Address neighborBdr;
-
-    private int routerPriority;
-    private int routerDeadInterval;
-
-    /**
-     * The list of LSAs that have to be flooded.
-     */
-    private Map<String, OspfLsa> reTxList = new LinkedHashMap<>();
-
-    /**
-     * The list of LSAs that have been flooded but not yet acknowledged on this adjacency.
-     */
-    private Map<String, OspfLsa> pendingReTxList = new LinkedHashMap<>();
-
-    /**
-     * List of LSAs which are failed to received ACK.
-     */
-    private Map failedTxList = new HashMap<>();
-
-    /**
-     * The complete list of LSAs that make up the area link-state database, at the moment the.
-     * neighbor goes into Database Exchange state (EXCHANGE).
-     */
-    private List<LsaHeader> ddSummaryList = new CopyOnWriteArrayList<>();
-
-    /**
-     * LSA Request List from Neighbor.
-     */
-    private Hashtable lsReqList = new Hashtable();
-
-    /**
-     * The optional OSPF capabilities supported by the neighbor.
-     */
-    private int options;
-    private boolean isOpaqueCapable;
-
-    /**
-     * A link to the OSPF-Interface this Neighbor belongs to.
-     */
-    private OspfInterface ospfInterface;
-
-    /**
-     * A link to the OSPF-Area this Neighbor Data Structure belongs to.
-     */
-    private OspfArea ospfArea;
-    private List<TopLevelTlv> topLevelTlvs = new ArrayList<>();
-    private List<DeviceInformation> deviceInformationList = new ArrayList<>();
-
-    private TopologyForDeviceAndLink topologyForDeviceAndLink;
-
-    /**
-     * Creates an instance of Neighbor.
-     *
-     * @param paramOspfArea                  OSPF Area instance
-     * @param paramOspfInterface             OSPF interface instance
-     * @param ipAddr                         IP address
-     * @param routerId                       router id
-     * @param options                        options
-     * @param topologyForDeviceAndLinkCommon topology for device and link instance
-     */
-    public OspfNbrImpl(OspfArea paramOspfArea, OspfInterface paramOspfInterface,
-                       Ip4Address ipAddr, Ip4Address routerId, int options,
-                       TopologyForDeviceAndLink topologyForDeviceAndLinkCommon) {
-        this.ospfArea = paramOspfArea;
-        this.ospfInterface = paramOspfInterface;
-        state = OspfNeighborState.DOWN;
-        isMaster = OspfUtil.NOT_MASTER;
-        ddSeqNum = OspfUtil.createRandomNumber();
-        neighborIpAddr = ipAddr;
-        neighborId = routerId;
-        this.options = options;
-        lastDdPacket = new DdPacket();
-        routerDeadInterval = paramOspfInterface.routerDeadIntervalTime();
-        this.topologyForDeviceAndLink = topologyForDeviceAndLinkCommon;
-    }
-
-    /**
-     * Gets the IP address of this neighbor.
-     *
-     * @return the IP address of this neighbor
-     */
-    @Override
-    public Ip4Address neighborIpAddr() {
-        return neighborIpAddr;
-    }
-
-    /**
-     * Gets the neighbor is opaque enabled or not.
-     *
-     * @return true if the neighbor is opaque enabled else false.
-     */
-    @Override
-    public boolean isOpaqueCapable() {
-        return isOpaqueCapable;
-    }
-
-    /**
-     * Sets the neighbor is opaque enabled or not.
-     *
-     * @param isOpaqueCapable true if the neighbor is opaque enabledelse false
-     */
-    @Override
-    public void setIsOpaqueCapable(boolean isOpaqueCapable) {
-        this.isOpaqueCapable = isOpaqueCapable;
-    }
-
-    /**
-     * Sets router dead interval.
-     *
-     * @param routerDeadInterval router dead interval
-     */
-    @Override
-    public void setRouterDeadInterval(int routerDeadInterval) {
-        this.routerDeadInterval = routerDeadInterval;
-    }
-
-    /**
-     * Have seen a Neighbor, but the Neighbor doesn't know about me.
-     *
-     * @param ospfHello Hello Packet instance
-     * @param channel   netty channel instance
-     */
-    public void oneWayReceived(OspfMessage ospfHello, Channel channel) {
-        log.debug("OSPFNbr::oneWayReceived...!!!");
-        stopInactivityTimeCheck();
-        startInactivityTimeCheck();
-
-        if (state == OspfNeighborState.ATTEMPT) {
-            state = OspfNeighborState.INIT;
-        } else if (state == OspfNeighborState.DOWN) {
-            state = OspfNeighborState.INIT;
-        }
-
-        if (state.getValue() >= OspfNeighborState.TWOWAY.getValue()) {
-            state = OspfNeighborState.INIT;
-            failedTxList.clear();
-            ddSummaryList.clear();
-            lsReqList.clear();
-        }
-    }
-
-    /**
-     * Called when a DD OSPFMessage is received while state was INIT.
-     *
-     * @param ospfMessage ospf message instance
-     * @param channel     netty channel instance
-     */
-    public void twoWayReceived(OspfMessage ospfMessage, Channel channel) {
-        log.debug("OSPFNbr::twoWayReceived...!!!");
-        stopInactivityTimeCheck();
-        startInactivityTimeCheck();
-        startFloodingTimer(channel);
-
-        OspfPacketHeader packet = (OspfPacketHeader) ospfMessage;
-        if (state.getValue() <= OspfNeighborState.TWOWAY.getValue()) {
-            if (formAdjacencyOrNot()) {
-                state = OspfNeighborState.EXSTART;
-
-                ddSeqNum++;
-                DdPacket ddPacket = new DdPacket();
-                // seting OSPF Header
-                ddPacket.setOspfVer(OspfUtil.OSPF_VERSION);
-                ddPacket.setOspftype(OspfPacketType.DD.value());
-                ddPacket.setRouterId(ospfArea.routerId());
-                ddPacket.setAreaId(ospfArea.areaId());
-                ddPacket.setAuthType(OspfUtil.NOT_ASSIGNED);
-                ddPacket.setAuthentication(OspfUtil.NOT_ASSIGNED);
-                ddPacket.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length
-                ddPacket.setChecksum(OspfUtil.NOT_ASSIGNED);
-                boolean isOpaqueEnabled = ospfArea.isOpaqueEnabled();
-                if (isOpaqueEnabled) {
-                    ddPacket.setOptions(ospfArea.opaqueEnabledOptions());
-                } else {
-                    ddPacket.setOptions(ospfArea.options());
-                }
-                ddPacket.setIsInitialize(OspfUtil.INITIALIZE_SET);
-                ddPacket.setIsMore(OspfUtil.MORE_SET);
-                ddPacket.setIsMaster(OspfUtil.IS_MASTER);
-                ddPacket.setImtu(ospfInterface.mtu());
-                ddPacket.setSequenceNo(ddSeqNum);
-
-                setLastSentDdPacket(ddPacket);
-                rxmtDdPacketTask = new InternalRxmtDdPacket(channel);
-                startRxMtDdTimer(channel);
-                //setting destination ip
-                ddPacket.setDestinationIp(packet.sourceIp());
-                byte[] messageToWrite = getMessage(ddPacket);
-                channel.write(messageToWrite);
-            } else {
-                state = OspfNeighborState.TWOWAY;
-            }
-        }
-    }
-
-    /**
-     * Checks whether to form adjacency or not.
-     *
-     * @return true indicates form adjacency, else false
-     */
-    private boolean formAdjacencyOrNot() {
-        boolean formAdjacency = false;
-
-        if (ospfInterface.interfaceType() == OspfInterfaceType.POINT_TO_POINT.value()) {
-            formAdjacency = true;
-        } else if (ospfInterface.interfaceType() == OspfInterfaceType.BROADCAST.value()) {
-            if (ospfInterface.ipAddress().equals(this.neighborDr) ||
-                    ospfInterface.ipAddress().equals(this.neighborBdr)) {
-                formAdjacency = true;
-            } else if (neighborBdr.equals(neighborIpAddr) ||
-                    neighborDr.equals(neighborIpAddr)) {
-                formAdjacency = true;
-            }
-        }
-
-        log.debug("FormAdjacencyOrNot - neighborDR: {}, neighborBDR: {}, neighborIPAddr: {}, formAdjacencyOrNot {}",
-                  neighborDr, neighborBdr, neighborIpAddr, formAdjacency);
-
-        return formAdjacency;
-    }
-
-    /**
-     * At this point Master/Slave relationship is definitely established.
-     * DD sequence numbers have been exchanged.
-     * This is the begin of sending/receiving of DD OSPFMessages.
-     *
-     * @param ospfMessage      OSPF message instance
-     * @param neighborIsMaster neighbor is master or slave
-     * @param payload          contains the LSAs to add in Dd Packet
-     * @param ch               netty channel instance
-     */
-    public void negotiationDone(OspfMessage ospfMessage,
-                                boolean neighborIsMaster, List payload, Channel ch) {
-        stopRxMtDdTimer();
-        OspfPacketHeader packet = (OspfPacketHeader) ospfMessage;
-        DdPacket ddPacketForCheck = (DdPacket) packet;
-        if (ddPacketForCheck.isOpaqueCapable()) {
-            OspfLsdb database = ospfArea.database();
-            List opaqueLsas = database.getAllLsaHeaders(true, true);
-            Iterator iterator = opaqueLsas.iterator();
-            while (iterator.hasNext()) {
-                OspfLsa ospfLsa = (OspfLsa) iterator.next();
-                if (ospfLsa.getOspfLsaType() == OspfLsaType.AREA_LOCAL_OPAQUE_LSA) {
-                    OpaqueLsa10 opaqueLsa10 = (OpaqueLsa10) ospfLsa;
-                    topLevelTlvs = opaqueLsa10.topLevelValues();
-                }
-            }
-        }
-        if (state == OspfNeighborState.EXSTART) {
-            state = OspfNeighborState.EXCHANGE;
-            boolean excludeMaxAgeLsa = true;
-            //list of contents of area wise LSA
-            ddSummaryList = ospfArea.getLsaHeaders(excludeMaxAgeLsa, isOpaqueCapable);
-
-            if (neighborIsMaster) {
-                processLsas(payload);
-                // ...construct new DD Packet...
-                DdPacket ddPacket = new DdPacket();
-                // setting OSPF Header
-                ddPacket.setOspfVer(OspfUtil.OSPF_VERSION);
-                ddPacket.setOspftype(OspfPacketType.DD.value());
-                ddPacket.setRouterId(ospfArea.routerId());
-                ddPacket.setAreaId(ospfArea.areaId());
-                ddPacket.setAuthType(OspfUtil.NOT_ASSIGNED);
-                ddPacket.setAuthentication(OspfUtil.NOT_ASSIGNED);
-                ddPacket.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length
-                ddPacket.setChecksum(OspfUtil.NOT_ASSIGNED);
-                boolean isOpaqueEnabled = ospfArea.isOpaqueEnabled();
-                if (isOpaqueEnabled && isOpaqueCapable) {
-                    ddPacket.setOptions(ospfArea.opaqueEnabledOptions());
-                } else {
-                    ddPacket.setOptions(ospfArea.options());
-                }
-                ddPacket.setIsInitialize(OspfUtil.INITIALIZE_NOTSET);
-                ddPacket.setIsMore(OspfUtil.MORE_NOTSET);
-                ddPacket.setIsMaster(OspfUtil.NOT_MASTER);
-                ddPacket.setImtu(ospfInterface.mtu());
-                ddPacket.setSequenceNo(ddSeqNum);
-                //setting the destination
-                ddPacket.setDestinationIp(packet.sourceIp());
-                setLastSentDdPacket(ddPacket);
-                getIsMoreBit();
-
-                byte[] messageToWrite = getMessage(lastSentDdPacket);
-                ch.write(messageToWrite);
-            } else {
-                // process LSA Vector's List, Add it to LSRequestList.
-                processLsas(payload);
-                DdPacket ddPacket = new DdPacket();
-                // setting OSPF Header
-                ddPacket.setOspfVer(OspfUtil.OSPF_VERSION);
-                ddPacket.setOspftype(OspfPacketType.DD.value());
-                ddPacket.setRouterId(ospfArea.routerId());
-                ddPacket.setAreaId(ospfArea.areaId());
-                ddPacket.setAuthType(OspfUtil.NOT_ASSIGNED);
-                ddPacket.setAuthentication(OspfUtil.NOT_ASSIGNED);
-                ddPacket.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length
-                ddPacket.setChecksum(OspfUtil.NOT_ASSIGNED);
-                boolean isOpaqueEnabled = ospfArea.isOpaqueEnabled();
-                if (isOpaqueEnabled && isOpaqueCapable) {
-                    ddPacket.setOptions(ospfArea.opaqueEnabledOptions());
-                } else {
-                    ddPacket.setOptions(ospfArea.options());
-                }
-                ddPacket.setIsInitialize(OspfUtil.INITIALIZE_NOTSET);
-                ddPacket.setIsMore(OspfUtil.MORE_NOTSET);
-                ddPacket.setIsMaster(OspfUtil.IS_MASTER);
-                ddPacket.setImtu(ospfInterface.mtu());
-                ddPacket.setSequenceNo(ddSeqNum);
-                setLastSentDdPacket(ddPacket);
-                getIsMoreBit();
-                ddPacket.setDestinationIp(packet.sourceIp());
-                byte[] messageToWrite = getMessage(lastSentDdPacket);
-                ch.write(messageToWrite);
-                startRxMtDdTimer(ch);
-            }
-        }
-    }
-
-    /**
-     * Process the LSA Headers received in the last received Database Description OSPFMessage.
-     *
-     * @param ddPayload LSA headers to process
-     */
-    public void processLsas(List ddPayload) {
-        log.debug("OSPFNbr::processLsas...!!!");
-        OspfLsa nextLsa;
-        Iterator lsas = ddPayload.iterator();
-        while (lsas.hasNext()) {
-            nextLsa = (OspfLsa) lsas.next();
-            // check LSA Type.
-            if (((nextLsa.getOspfLsaType().value() > OspfLsaType.EXTERNAL_LSA.value()) &&
-                    (nextLsa.getOspfLsaType().value() < OspfLsaType.LINK_LOCAL_OPAQUE_LSA.value())) ||
-                    (nextLsa.getOspfLsaType().value() > OspfLsaType.AS_OPAQUE_LSA.value())) {
-                // unknown lsType found!
-                seqNumMismatch("LS Type found was unknown.");
-                return;
-            }
-
-            if ((nextLsa.getOspfLsaType() == OspfLsaType.EXTERNAL_LSA) &&
-                    !ospfArea.isExternalRoutingCapability()) {
-                // LSA is external and the Area has no external lsa capability
-                seqNumMismatch("External LSA found although area is stub.");
-                return;
-            }
-
-            LsaWrapper lsaHasInstance = ospfArea.lsaLookup(nextLsa);
-            if (lsaHasInstance == null) {
-                lsReqList.put(((OspfAreaImpl) ospfArea).getLsaKey((LsaHeader) nextLsa), nextLsa);
-            } else {
-                String isNew = ((OspfAreaImpl) ospfArea).isNewerOrSameLsa(nextLsa,
-                                                                          lsaHasInstance.ospfLsa());
-                if (isNew.equals("latest")) {
-                    lsReqList.put(((OspfAreaImpl) ospfArea).getLsaKey((LsaHeader) nextLsa), nextLsa);
-                }
-            }
-        }
-    }
-
-    /**
-     * Handles sequence number mis match event.
-     *
-     * @param reason a string represents the mismatch reason
-     * @return OSPF message instance
-     */
-    public OspfMessage seqNumMismatch(String reason) {
-        log.debug("OSPFNbr::seqNumMismatch...{} ", reason);
-        stopRxMtDdTimer();
-
-        if (state.getValue() >= OspfNeighborState.EXCHANGE.getValue()) {
-           /* if (state == OspfNeighborState.FULL) {
-                ospfArea.refreshArea(ospfInterface);
-            }*/
-
-            state = OspfNeighborState.EXSTART;
-            lsReqList.clear();
-            ddSummaryList.clear();
-            //increment the dd sequence number
-            ddSeqNum++;
-
-            DdPacket ddPacket = new DdPacket();
-            // seting OSPF Header
-            ddPacket.setOspfVer(OspfUtil.OSPF_VERSION);
-            ddPacket.setOspftype(OspfPacketType.DD.value());
-            ddPacket.setRouterId(ospfArea.routerId());
-            ddPacket.setAreaId(ospfArea.areaId());
-            ddPacket.setAuthType(OspfUtil.NOT_ASSIGNED);
-            ddPacket.setAuthentication(OspfUtil.NOT_ASSIGNED);
-            ddPacket.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length
-            ddPacket.setChecksum(OspfUtil.NOT_ASSIGNED);
-            boolean isOpaqueEnabled = ospfArea.isOpaqueEnabled();
-            if (isOpaqueEnabled) {
-                ddPacket.setOptions(ospfArea.opaqueEnabledOptions());
-            } else {
-                ddPacket.setOptions(ospfArea.options());
-            }
-            ddPacket.setIsInitialize(OspfUtil.INITIALIZE_SET);
-            ddPacket.setIsMore(OspfUtil.MORE_SET);
-            ddPacket.setIsMaster(OspfUtil.IS_MASTER);
-            ddPacket.setImtu(ospfInterface.mtu());
-            ddPacket.setSequenceNo(ddSeqNum);
-
-            setLastSentDdPacket(ddPacket);
-            //setting destination ip
-            ddPacket.setDestinationIp(neighborIpAddr());
-            setLastSentDdPacket(ddPacket);
-
-            return ddPacket;
-        }
-
-        return null;
-    }
-
-    /**
-     * Called if a LS Request has been received for an LSA which is not contained in the database.
-     * This indicates an error in the Database Exchange process.
-     * Actions to be performed are the same as in seqNumMismatch.
-     * In addition, stop the possibly activated re transmission timer.
-     *
-     * @param ch netty channel instance
-     */
-    @Override
-    public void badLSReq(Channel ch) {
-        log.debug("OSPFNbr::badLSReq...!!!");
-
-        if (state.getValue() >= OspfNeighborState.EXCHANGE.getValue()) {
-            if (state == OspfNeighborState.FULL) {
-                ospfArea.refreshArea(ospfInterface);
-            }
-
-            stopRxMtDdTimer();
-            state = OspfNeighborState.EXSTART;
-
-            lsReqList.clear();
-            ddSummaryList.clear();
-            reTxList.clear();
-            //increment the dd sequence number
-            isMaster = OspfUtil.IS_MASTER;
-            ddSeqNum++;
-            DdPacket ddPacket = new DdPacket();
-            // seting OSPF Header
-            ddPacket.setOspfVer(OspfUtil.OSPF_VERSION);
-            ddPacket.setOspftype(OspfPacketType.DD.value());
-            ddPacket.setRouterId(ospfArea.routerId());
-            ddPacket.setAreaId(ospfArea.areaId());
-            ddPacket.setAuthType(OspfUtil.NOT_ASSIGNED);
-            ddPacket.setAuthentication(OspfUtil.NOT_ASSIGNED);
-            ddPacket.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length
-            ddPacket.setChecksum(OspfUtil.NOT_ASSIGNED);
-
-            // setting DD Body
-            boolean isOpaqueEnabled = ospfArea.isOpaqueEnabled();
-            if (isOpaqueEnabled && this.isOpaqueCapable) {
-                ddPacket.setOptions(ospfArea.opaqueEnabledOptions());
-            } else {
-                ddPacket.setOptions(ospfArea.options());
-            }
-            ddPacket.setIsInitialize(OspfUtil.INITIALIZE_SET);
-            ddPacket.setIsMore(OspfUtil.MORE_SET);
-            ddPacket.setIsMaster(OspfUtil.IS_MASTER);
-            ddPacket.setImtu(ospfInterface.mtu());
-            ddPacket.setSequenceNo(ddSeqNum);
-
-            rxmtDdPacketTask = new InternalRxmtDdPacket(ch);
-            startRxMtDdTimer(ch);
-
-            //setting destination ip
-            ddPacket.setDestinationIp(neighborIpAddr());
-            setLastSentDdPacket(ddPacket);
-            byte[] messageToWrite = getMessage(ddPacket);
-            ch.write(messageToWrite);
-        }
-    }
-
-    /**
-     * Called if state is EXCHANGE. This method is executed every time a DD Packets arrives.
-     * When the last Packet arrives, it transfers the state into LOADING or FULL
-     *
-     * @param neighborIsMaster true if neighbor is master else false
-     * @param dataDescPkt      DdPacket instance
-     * @param ch               netty channel instance
-     */
-    public void processDdPacket(boolean neighborIsMaster, DdPacket dataDescPkt,
-                                Channel ch) {
-        log.debug("OSPFNbr::neighborIsMaster.{}", neighborIsMaster);
-
-        if (!neighborIsMaster) {
-            stopRxMtDdTimer();
-            ddSeqNum++;
-            processLsas(dataDescPkt.getLsaHeaderList());
-            if ((ddSummaryList.isEmpty()) &&
-                    (dataDescPkt.isMore() == OspfUtil.MORE_NOTSET)) {
-                log.debug(
-                        "OSPFNbr::ddSummaryList is empty and dataDescPkt.isMore is zero..!!!");
-                // generate the neighbor event ExchangeDone.
-                exchangeDone(dataDescPkt, ch);
-            } else {
-                log.debug("OSPFNbr::ddSummaryList is present...!!!");
-                // send a new Database Description Packet to the slave.
-                DdPacket ddPacket = new DdPacket();
-                // seting OSPF Header
-                ddPacket.setOspfVer(OspfUtil.OSPF_VERSION);
-                ddPacket.setOspftype(OspfPacketType.DD.value());
-                ddPacket.setRouterId(ospfArea.routerId());
-                ddPacket.setAreaId(ospfArea.areaId());
-                ddPacket.setAuthType(OspfUtil.NOT_ASSIGNED);
-                ddPacket.setAuthentication(OspfUtil.NOT_ASSIGNED);
-                ddPacket.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length
-                ddPacket.setChecksum(OspfUtil.NOT_ASSIGNED);
-                // setting DD Body
-                boolean isOpaqueEnabled = ospfArea.isOpaqueEnabled();
-                if (isOpaqueEnabled && isOpaqueCapable) {
-                    ddPacket.setOptions(ospfArea.opaqueEnabledOptions());
-                } else {
-                    ddPacket.setOptions(ospfArea.options());
-                }
-                ddPacket.setIsInitialize(OspfUtil.INITIALIZE_NOTSET);
-                ddPacket.setIsMore(OspfUtil.MORE_NOTSET);
-                ddPacket.setIsMaster(OspfUtil.IS_MASTER);
-                ddPacket.setImtu(ospfInterface.mtu());
-                ddPacket.setSequenceNo(ddSeqNum);
-
-                setLastSentDdPacket(ddPacket);
-                getIsMoreBit();
-                //Set the destination IP Address
-                ddPacket.setDestinationIp(dataDescPkt.sourceIp());
-                byte[] messageToWrite = getMessage(lastSentDdPacket());
-                ch.write(messageToWrite);
-
-                startRxMtDdTimer(ch);
-            }
-        } else {
-            log.debug("OSPFNbr::neighborIsMaster is master...!!!");
-            ddSeqNum = dataDescPkt.sequenceNo();
-            processLsas(dataDescPkt.getLsaHeaderList());
-
-            DdPacket ddPacket = new DdPacket();
-            // seting OSPF Header
-            ddPacket.setOspfVer(OspfUtil.OSPF_VERSION);
-            ddPacket.setOspftype(OspfPacketType.DD.value());
-            ddPacket.setRouterId(ospfArea.routerId());
-            ddPacket.setAreaId(ospfArea.areaId());
-            ddPacket.setAuthType(OspfUtil.NOT_ASSIGNED);
-            ddPacket.setAuthentication(OspfUtil.NOT_ASSIGNED);
-            ddPacket.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length
-            ddPacket.setChecksum(OspfUtil.NOT_ASSIGNED);
-            // setting DD Body
-            boolean isOpaqueEnabled = ospfArea.isOpaqueEnabled();
-            if (isOpaqueEnabled && this.isOpaqueCapable) {
-                ddPacket.setOptions(ospfArea.opaqueEnabledOptions());
-            } else {
-                ddPacket.setOptions(ospfArea.options());
-            }
-            ddPacket.setIsInitialize(OspfUtil.INITIALIZE_NOTSET);
-            ddPacket.setIsMore(OspfUtil.MORE_NOTSET);
-            ddPacket.setIsMaster(OspfUtil.NOT_MASTER);
-            ddPacket.setImtu(ospfInterface.mtu());
-            ddPacket.setSequenceNo(ddSeqNum);
-            setLastSentDdPacket(ddPacket);
-            getIsMoreBit();
-
-            if ((ddPacket.isMore() == OspfUtil.MORE_NOTSET) &&
-                    (dataDescPkt.isMore() == OspfUtil.MORE_NOTSET)) {
-                // generate the neighbor event ExchangeDone.
-                exchangeDone(dataDescPkt, ch);
-            }
-
-            ddPacket.setDestinationIp(dataDescPkt.sourceIp());
-            byte[] messageToWrite = getMessage(ddPacket);
-            ch.write(messageToWrite);
-        }
-    }
-
-    /**
-     * Sets the more bit in stored, last sent DdPacket.
-     */
-    private void getIsMoreBit() {
-        DdPacket ddPacket = lastSentDdPacket();
-        int count = ddSummaryList.size();
-
-        if (!ddSummaryList.isEmpty()) {
-            Iterator itr = ddSummaryList.iterator();
-            int currentLength = OspfUtil.DD_HEADER_LENGTH;
-            int maxSize = ospfInterface.mtu() - OspfUtil.LSA_HEADER_LENGTH; // subtract a normal IP header.
-            while (itr.hasNext()) {
-                if ((currentLength + OspfUtil.LSA_HEADER_LENGTH) > maxSize) {
-                    break;
-                }
-
-                LsaHeader lsaHeader = (LsaHeader) itr.next();
-                ddPacket.addLsaHeader(lsaHeader);
-                currentLength = currentLength + OspfUtil.LSA_HEADER_LENGTH;
-                ddSummaryList.remove(lsaHeader);
-                count--;
-            }
-
-            if (count > 0) {
-                ddPacket.setIsMore(OspfUtil.MORE_SET);
-            } else {
-                ddPacket.setIsMore(OspfUtil.MORE_NOTSET);
-            }
-        }
-
-        setLastSentDdPacket(ddPacket);
-    }
-
-    /**
-     * At this point, the router has sent and received an entire sequence of DD packets.
-     * Now it must be determined whether the new state is FULL, or LS Request packets
-     * have to be send.
-     *
-     * @param message OSPF message instance
-     * @param ch      netty channel handler
-     */
-    public void exchangeDone(OspfMessage message, Channel ch) {
-        log.debug("OSPFNbr::exchangeDone...!!!");
-        stopRxMtDdTimer();
-
-        OspfPacketHeader header = (OspfPacketHeader) message;
-
-        if (state == OspfNeighborState.EXCHANGE) {
-            if (lsReqList.isEmpty()) {
-                state = OspfNeighborState.FULL;
-                //handler.addDeviceInformation(this);
-                //handler.addLinkInformation(this, topLevelTlvs);
-            } else {
-                state = OspfNeighborState.LOADING;
-                LsRequest lsRequest = buildLsRequest();
-                //Setting the destination address
-                lsRequest.setDestinationIp(header.sourceIp());
-                byte[] messageToWrite = getMessage(lsRequest);
-                ch.write(messageToWrite);
-
-                setLastSentLsrPacket(lsRequest);
-                startRxMtLsrTimer(ch);
-            }
-        }
-    }
-
-    /**
-     * Builds LS Request.
-     *
-     * @return ls request instance
-     */
-    private LsRequest buildLsRequest() {
-        //send link state request packet to neighbor
-        //for recent lsa's which are not received in exchange state
-        LsRequest lsRequest = new LsRequest();
-        lsRequest.setOspfVer(OspfUtil.OSPF_VERSION);
-        lsRequest.setOspftype(OspfPacketType.LSREQUEST.value());
-        lsRequest.setRouterId(ospfArea.routerId());
-        lsRequest.setAreaId(ospfArea.areaId());
-        lsRequest.setAuthType(OspfUtil.NOT_ASSIGNED);
-        lsRequest.setAuthentication(OspfUtil.NOT_ASSIGNED);
-        lsRequest.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length
-        lsRequest.setChecksum(OspfUtil.NOT_ASSIGNED);
-
-        Set lsaKeys = lsReqList.keySet();
-        Iterator itr = lsaKeys.iterator();
-
-        int currentLength = OspfUtil.OSPF_HEADER_LENGTH;
-        int maxSize = ospfInterface.mtu() -
-                OspfUtil.LSA_HEADER_LENGTH; // subtract a normal IP header.
-
-        while (itr.hasNext()) {
-            if ((currentLength + OspfUtil.LSREQUEST_LENGTH) >= maxSize) {
-                break;
-            }
-            LsRequestPacket lsRequestPacket = new LsRequestPacket();
-
-            String key = ((String) itr.next());
-            String[] lsaKey = key.split("-");
-            OspfLsa lsa = (OspfLsa) lsReqList.get(key);
-
-            lsRequestPacket.setLsType(Integer.valueOf(lsaKey[0]));
-            lsRequestPacket.setOwnRouterId(lsaKey[2]);
-
-            if (((lsa.getOspfLsaType().value() == OspfLsaType.AREA_LOCAL_OPAQUE_LSA.value()) ||
-                    (lsa.getOspfLsaType().value() == OspfLsaType.LINK_LOCAL_OPAQUE_LSA.value())) ||
-                    (lsa.getOspfLsaType().value() == OspfLsaType.AS_OPAQUE_LSA.value())) {
-                OpaqueLsaHeader header = (OpaqueLsaHeader) lsa;
-                byte[] opaqueIdBytes = OspfUtil.convertToTwoBytes(header.opaqueId());
-                lsRequestPacket.setLinkStateId(header.opaqueType() + "." + "0" + "." + opaqueIdBytes[0]
-                                                       + "." + opaqueIdBytes[1]);
-            } else {
-                lsRequestPacket.setLinkStateId(lsaKey[1]);
-            }
-
-            lsRequest.addLinkStateRequests(lsRequestPacket);
-            currentLength = currentLength + OspfUtil.LSREQUEST_LENGTH;
-        }
-
-        return lsRequest;
-    }
-
-    /**
-     * Determines whether an adjacency should be established/maintained with the neighbor or not.
-     *
-     * @param ch netty channel instance
-     */
-    @Override
-    public void adjOk(Channel ch) {
-        log.debug("OSPFNbr::adjOk...!!!");
-        if (ospfInterface.interfaceType() != OspfInterfaceType.POINT_TO_POINT.value()) {
-            if (state == OspfNeighborState.TWOWAY) {
-                if (formAdjacencyOrNot()) {
-                    state = OspfNeighborState.EXSTART;
-                    //check for sequence number in lsdb
-                    ddSeqNum++;
-
-                    DdPacket ddPacket = new DdPacket();
-                    // seting OSPF Header
-                    ddPacket.setOspfVer(OspfUtil.OSPF_VERSION);
-                    ddPacket.setOspftype(OspfPacketType.DD.value());
-                    ddPacket.setRouterId(ospfArea.routerId());
-                    ddPacket.setAreaId(ospfArea.areaId());
-                    ddPacket.setAuthType(OspfUtil.NOT_ASSIGNED);
-                    ddPacket.setAuthentication(OspfUtil.NOT_ASSIGNED);
-                    ddPacket.setOspfPacLength(OspfUtil.NOT_ASSIGNED);
-                    ddPacket.setChecksum(OspfUtil.NOT_ASSIGNED);
-
-                    // setting DD Body
-                    boolean isOpaqueEnabled = ospfArea.isOpaqueEnabled();
-                    if (isOpaqueEnabled && this.isOpaqueCapable) {
-                        ddPacket.setOptions(ospfArea.opaqueEnabledOptions());
-                    } else {
-                        ddPacket.setOptions(ospfArea.options());
-                    }
-                    ddPacket.setIsInitialize(OspfUtil.INITIALIZE_SET);
-                    ddPacket.setIsMore(OspfUtil.MORE_SET);
-                    ddPacket.setIsMaster(OspfUtil.IS_MASTER);
-                    ddPacket.setImtu(ospfInterface.mtu());
-                    ddPacket.setSequenceNo(ddSeqNum);
-                    rxmtDdPacketTask = new InternalRxmtDdPacket(ch);
-                    startRxMtDdTimer(ch);
-                    //setting destination ip
-                    ddPacket.setDestinationIp(neighborIpAddr());
-                    setLastSentDdPacket(ddPacket);
-                    byte[] messageToWrite = getMessage(ddPacket);
-                    ch.write(messageToWrite);
-                }
-            } else if (state.getValue() >= OspfNeighborState.EXSTART.getValue()) {
-                if (!formAdjacencyOrNot()) {
-                    state = OspfNeighborState.TWOWAY;
-                    lsReqList.clear();
-                    ddSummaryList.clear();
-                    reTxList.clear();
-                }
-            }
-        }
-    }
-
-    /**
-     * LS Update Packet has been received while state was EXCHANGE or LOADING.
-     * Examine the received LSAs, check whether they were requested or not and process
-     * them accordingly. Therefore use method "processReceivedLsa" for further treatment.
-     *
-     * @param lsUpdPkt LS Update Packet received while Neighbor state was EXCHANGE or
-     *                 LOADING
-     * @param ch       netty channel instance
-     * @throws OspfParseException on parsing error
-     */
-    public void processLsUpdate(LsUpdate lsUpdPkt, Channel ch) throws OspfParseException {
-        stopRxMtLsrTimer();
-        log.debug("OSPFNbr::processLsUpdate...!!!");
-
-        List lsaList = lsUpdPkt.getLsaList();
-        if (!lsaList.isEmpty()) {
-            Iterator itr = lsaList.iterator();
-
-            while (itr.hasNext()) {
-                LsaHeader lsaHeader = (LsaHeader) itr.next();
-                String key = ((OspfAreaImpl) ospfArea).getLsaKey(lsaHeader);
-
-                if (lsReqList.containsKey(key)) {
-                    boolean removeIt;
-                    removeIt = processReceivedLsa(lsaHeader, false, ch,
-                                                  lsUpdPkt.sourceIp());
-                    if (removeIt) {
-                        lsReqList.remove(key);
-                    }
-                } else {
-                    // LSA was received via Flooding
-                    processReceivedLsa(lsaHeader, true, ch,
-                                       lsUpdPkt.sourceIp());
-                }
-            }
-
-            if (lsReqList.isEmpty() && (state == OspfNeighborState.LOADING)) {
-                // loading complete
-                loadingDone();
-            } else {
-                stopRxMtLsrTimer();
-                LsRequest lsRequest = buildLsRequest();
-                lsRequest.setDestinationIp(lsUpdPkt.sourceIp());
-                setLastSentLsrPacket(lsRequest);
-
-                startRxMtLsrTimer(ch);
-            }
-        }
-    }
-
-    /***
-     * Method gets called when no more ls request list and moving to FULL State.
-     */
-    public void loadingDone() {
-        stopRxMtLsrTimer();
-        stopRxMtDdTimer();
-        log.debug("OSPFNbr::loadingDone...!!!");
-        state = OspfNeighborState.FULL;
-        ospfArea.refreshArea(ospfInterface);
-    }
-
-    /**
-     * Adds device and link.
-     *
-     * @param topologyForDeviceAndLink topology for device and link instance
-     */
-    private void callDeviceAndLinkAdding(TopologyForDeviceAndLink topologyForDeviceAndLink) {
-        Map<String, DeviceInformation> deviceInformationMap = topologyForDeviceAndLink.deviceInformationMap();
-        Map<String, DeviceInformation> deviceInformationMapForPointToPoint =
-                topologyForDeviceAndLink.deviceInformationMapForPointToPoint();
-        Map<String, DeviceInformation> deviceInformationMapToDelete =
-                topologyForDeviceAndLink.deviceInformationMapToDelete();
-        Map<String, LinkInformation> linkInformationMap = topologyForDeviceAndLink.linkInformationMap();
-        Map<String, LinkInformation> linkInformationMapForPointToPoint =
-                topologyForDeviceAndLink.linkInformationMapForPointToPoint();
-        OspfRouter ospfRouter = new OspfRouterImpl();
-
-        if (deviceInformationMap.size() != 0) {
-            for (String key : deviceInformationMap.keySet()) {
-                DeviceInformation value = deviceInformationMap.get(key);
-                ospfRouter.setRouterIp(value.routerId());
-                ospfRouter.setAreaIdOfInterface(ospfArea.areaId());
-                ospfRouter.setNeighborRouterId(value.deviceId());
-                OspfDeviceTed ospfDeviceTed = new OspfDeviceTedImpl();
-                List<Ip4Address> ip4Addresses = value.interfaceId();
-                ospfDeviceTed.setIpv4RouterIds(ip4Addresses);
-                ospfRouter.setDeviceTed(ospfDeviceTed);
-                ospfRouter.setOpaque(ospfArea.isOpaqueEnabled());
-                if (value.isDr()) {
-                    ospfRouter.setDr(value.isDr());
-                } else {
-                    ospfRouter.setDr(false);
-                }
-                int size = value.interfaceId().size();
-                for (int i = 0; i < size; i++) {
-                    ospfRouter.setInterfaceId(value.interfaceId().get(i));
-                }
-                ((OspfInterfaceImpl) ospfInterface).addDeviceInformation(ospfRouter);
-            }
-        }
-        if (deviceInformationMapForPointToPoint.size() != 0) {
-            for (String key : deviceInformationMapForPointToPoint.keySet()) {
-                DeviceInformation value = deviceInformationMapForPointToPoint.get(key);
-                ospfRouter.setRouterIp(value.routerId());
-                ospfRouter.setAreaIdOfInterface(ospfArea.areaId());
-                ospfRouter.setNeighborRouterId(value.deviceId());
-                OspfDeviceTed ospfDeviceTed = new OspfDeviceTedImpl();
-                List<Ip4Address> ip4Addresses = value.interfaceId();
-                ospfDeviceTed.setIpv4RouterIds(ip4Addresses);
-                ospfRouter.setDeviceTed(ospfDeviceTed);
-                ospfRouter.setOpaque(value.isDr());
-                int size = value.interfaceId().size();
-                for (int i = 0; i < size; i++) {
-                    ospfRouter.setInterfaceId(value.interfaceId().get(i));
-                }
-                ((OspfInterfaceImpl) ospfInterface).addDeviceInformation(ospfRouter);
-            }
-        }
-        for (Map.Entry<String, LinkInformation> entry : linkInformationMap.entrySet()) {
-            String key = entry.getKey();
-            LinkInformation value = entry.getValue();
-            OspfRouter ospfRouterForLink = new OspfRouterImpl();
-            ospfRouterForLink.setInterfaceId(value.interfaceIp());
-            ospfRouterForLink.setAreaIdOfInterface(ospfArea.areaId());
-            ospfRouterForLink.setOpaque(ospfArea.isOpaqueEnabled());
-            OspfLinkTed ospfLinkTed = topologyForDeviceAndLink.getOspfLinkTedHashMap(
-                    value.linkDestinationId().toString());
-            if (ospfLinkTed == null) {
-                ospfLinkTed = new OspfLinkTedImpl();
-                ospfLinkTed.setMaximumLink(Bandwidth.bps(0));
-                ospfLinkTed.setMaxReserved(Bandwidth.bps(0));
-                ospfLinkTed.setTeMetric(0);
-            }
-
-            if (!value.isLinkSrcIdNotRouterId()) {
-                ospfRouterForLink.setRouterIp(value.linkSourceId());
-                ospfRouterForLink.setNeighborRouterId(value.linkDestinationId());
-                try {
-                    ((OspfInterfaceImpl) ospfInterface).addLinkInformation(ospfRouterForLink, ospfLinkTed);
-                } catch (Exception e) {
-                    log.debug("Exception addLinkInformation: " + e.getMessage());
-                }
-            }
-        }
-    }
-
-    // RFC 2328 Section 13 - partly as flooding procedure
-
-    /**
-     * Processes the received Lsa.
-     *
-     * @param recLsa              received Lsa
-     * @param receivedViaFlooding received via flooding or not
-     * @param ch                  channel instance
-     * @param sourceIp            source of this Lsa
-     * @throws OspfParseException on parsing error
-     * @return true to remove it from lsReqList else false
-     */
-    public boolean processReceivedLsa(LsaHeader recLsa,
-                                      boolean receivedViaFlooding, Channel ch, Ip4Address sourceIp)
-                    throws OspfParseException {
-        log.debug("OSPFNbr::processReceivedLsa(recLsa, receivedViaFlooding, ch)...!!!");
-
-        //Validate the lsa checksum RFC 2328 13 (1)
-        ChecksumCalculator checkSum = new ChecksumCalculator();
-        if (!checkSum.isValidLsaCheckSum(recLsa,
-                                         recLsa.getOspfLsaType().value(),
-                                         OspfUtil.LSAPACKET_CHECKSUM_POS1,
-                                         OspfUtil.LSAPACKET_CHECKSUM_POS2)) {
-            log.debug("Checksum mismatch. Received LSA packet type {} ",
-                      recLsa.lsType());
-
-            return true;
-        }
-
-        //If LSA type is unknown discard the lsa RFC 2328 13(2)
-        if (((recLsa.getOspfLsaType().value() > OspfLsaType.EXTERNAL_LSA.value()) &&
-                (recLsa.getOspfLsaType().value() < OspfLsaType.LINK_LOCAL_OPAQUE_LSA.value())) ||
-                (recLsa.getOspfLsaType().value() > OspfLsaType.AS_OPAQUE_LSA.value())) {
-            return true;
-        }
-
-        //If LSA type is external & the area is configured as stub area discard the lsa RFC 2328 13(3)
-        if ((recLsa.getOspfLsaType() == OspfLsaType.EXTERNAL_LSA) &&
-                (!ospfArea.isExternalRoutingCapability())) {
-            return true;
-        }
-
-        //if lsa age is equal to maxage && instance is not in lsdb && none of neighbors are in exchange
-        // or loading state
-        // Acknowledge the receipt by sending LSAck to the sender. 2328 13(4)
-        if ((recLsa.age() == OspfParameters.MAXAGE) &&
-                (ospfArea.lsaLookup(recLsa) == null) &&
-                ospfArea.noNeighborInLsaExchangeProcess()) {
-            // RFC 2328 Section 13. (4)
-            // Because the LSA was not yet requested, it is treated as a flooded LSA and thus
-            // acknowledged.
-            directAcknowledge(recLsa, ch, sourceIp);
-            return true;
-        }
-
-        String key = ((OspfAreaImpl) ospfArea).getLsaKey(recLsa);
-        LsaWrapper lsWrapper = ospfArea.lsaLookup(recLsa);
-        String status = isNullorLatest(lsWrapper, recLsa);
-        //Section 13 (5)
-        if (status.equals("isNullorLatest")) {
-
-            if (recLsa.lsType() == OspfLsaType.ROUTER.value() && recLsa.advertisingRouter().equals(
-                    ospfArea.routerId())) {
-                if (recLsa.lsSequenceNo() > ((LsaWrapperImpl) lsWrapper).lsaHeader().lsSequenceNo()) {
-                    ospfArea.setDbRouterSequenceNumber(recLsa.lsSequenceNo() + 1);
-                    processSelfOriginatedLsa();
-                }
-
-                if (recLsa.age() == OspfParameters.MAXAGE) {
-                    ((LsaWrapperImpl) lsWrapper).lsaHeader().setAge(OspfParameters.MAXAGE);
-                    //remove from db & bin, add the lsa to MaxAge bin.
-                    ospfArea.addLsaToMaxAgeBin(((OspfAreaImpl) ospfArea).getLsaKey(((LsaWrapperImpl)
-                            lsWrapper).lsaHeader()), lsWrapper);
-                    ospfArea.removeLsaFromBin(lsWrapper);
-                }
-
-                return true;
-            } else if (recLsa.lsType() == OspfLsaType.NETWORK.value() && isLinkStateMatchesOwnRouterId(
-                    recLsa.linkStateId())) {
-                // if we are not DR or if origination router ID not equal to our router ID //either
-                // DR state changed or our router ID was changed
-                //set LSAge = MaxAge
-                //flood the LSA
-                if (((OspfInterfaceImpl) ospfInterface).state() != OspfInterfaceState.DR ||
-                        !recLsa.advertisingRouter().equals(
-                                ospfArea.routerId())) {
-                    if (lsWrapper != null) {
-                        ((LsaWrapperImpl) lsWrapper).lsaHeader().setAge(OspfParameters.MAXAGE);
-                        //remove from bin, add the lsa to MaxAge bin.
-                        ospfArea.addLsaToMaxAgeBin(((OspfAreaImpl) ospfArea).getLsaKey(((LsaWrapperImpl)
-                                lsWrapper).lsaHeader()), lsWrapper);
-                        ospfArea.removeLsaFromBin(lsWrapper);
-                    } else {
-                        recLsa.setAge(OspfParameters.MAXAGE);
-                        ((OspfAreaImpl) ospfArea).addToOtherNeighborLsaTxList(recLsa);
-                    }
-                }
-
-                return true;
-            } else {
-                if (recLsa.age() == OspfParameters.MAXAGE) {
-                    ((OspfInterfaceImpl) ospfInterface).addLsaHeaderForDelayAck(recLsa);
-                    //remove from db & bin, add the lsa to MaxAge bin.
-                    if (lsWrapper != null) {
-                        lsWrapper.setLsaAgeReceived(OspfParameters.MAXAGE);
-                        ospfArea.addLsaToMaxAgeBin(((OspfAreaImpl) ospfArea).getLsaKey(((LsaWrapperImpl)
-                                lsWrapper).lsaHeader()), lsWrapper);
-                        ospfArea.removeLsaFromBin(lsWrapper);
-                    } else {
-                        ((OspfAreaImpl) ospfArea).addToOtherNeighborLsaTxList(recLsa);
-                    }
-
-                    return true;
-                } else {
-                    ospfArea.addLsa(recLsa, ospfInterface);
-                    log.debug("Inside addLsaMethod");
-                    topologyForDeviceAndLink.addLocalDevice(recLsa, ospfInterface, ospfArea);
-                    callDeviceAndLinkAdding(topologyForDeviceAndLink);
-                    log.debug("Adding to lsdb interface State {}", ((OspfInterfaceImpl) ospfInterface).state().value());
-                    // should not send any acknowledge if flooded out on receiving interface
-                    if (((OspfInterfaceImpl) ospfInterface).state().value() == OspfInterfaceState.BDR.value()) {
-                        if (neighborDr.equals(sourceIp)) {
-                            log.debug("Adding for delayed ack {}", recLsa);
-                            ((OspfInterfaceImpl) ospfInterface).addLsaHeaderForDelayAck(recLsa);
-                        }
-                    } else {
-                        log.debug("Adding for delayed ack {}", recLsa);
-                        ((OspfInterfaceImpl) ospfInterface).addLsaHeaderForDelayAck(recLsa);
-                    }
-
-                    if (((OspfInterfaceImpl) ospfInterface).state().value() == OspfInterfaceState.DR.value() ||
-                            ((OspfInterfaceImpl) ospfInterface).state().value() ==
-                                    OspfInterfaceState.POINT2POINT.value()) {
-                        ((OspfAreaImpl) ospfArea).addToOtherNeighborLsaTxList(recLsa);
-                    }
-                }
-
-            }
-        }
-        // RFC 2328 Section 13  (6)
-        if (lsReqList.containsValue(key)) {
-            badLSReq(ch);
-        }
-        if (status.equals("same")) { //13 (7)
-            if (pendingReTxList.containsKey(key)) {
-                pendingReTxList.remove(key);
-                if (((OspfInterfaceImpl) ospfInterface).state().value() == OspfInterfaceState.BDR.value()) {
-                    if (neighborDr.equals(recLsa.advertisingRouter())) {
-                        ((OspfInterfaceImpl) ospfInterface).addLsaHeaderForDelayAck(recLsa);
-                    }
-                }
-            } else {
-                directAcknowledge(recLsa, ch, sourceIp);
-                return true;
-            }
-        } else if (status.equals("old")) { // section 13 - point 8
-            if ((recLsa.lsSequenceNo() == OspfParameters.MAXSEQUENCENUMBER) &&
-                    (recLsa.age() == OspfParameters.MAXAGE)) {
-                // section 13 - point 8
-                // simple discard the received LSA -
-                return true;
-            } else {
-                // respond back with the same LSA
-                //Using flood LSA to sent the LSUpdate back to advertising router
-                int diff = Math.abs(lsWrapper.lsaAgeReceived() - recLsa.age());
-                if (diff > OspfParameters.MINLSARRIVAL) {
-                    sendLsa(((LsaWrapperImpl) lsWrapper).lsaHeader(), sourceIp, ch);
-                }
-            }
-        }
-
-        constructDeviceInformationFromDb();
-        callDeviceAndLinkAdding(topologyForDeviceAndLink);
-
-        return true;
-    }
-
-    /**
-     * Constructs device and link information from link state database.
-     */
-    private void constructDeviceInformationFromDb() {
-        OspfLsdb database = ospfArea.database();
-        List lsas = database.getAllLsaHeaders(true, true);
-        Iterator iterator = lsas.iterator();
-        while (iterator.hasNext()) {
-            OspfLsa ospfLsa = (OspfLsa) iterator.next();
-            if (ospfLsa.getOspfLsaType().value() == OspfLsaType.ROUTER.value()) {
-                topologyForDeviceAndLink.addLocalDevice(ospfLsa, ospfInterface, ospfArea);
-            } else if (ospfLsa.getOspfLsaType().value() == OspfLsaType.NETWORK.value()) {
-                topologyForDeviceAndLink.addLocalDevice(ospfLsa, ospfInterface, ospfArea);
-            }
-        }
-    }
-
-    /**
-     * Checks Link State ID is equal to one of the router's own IP interface addresses.
-     *
-     * @param linkStateId link state id
-     * @return true if link state matches or false
-     */
-    private boolean isLinkStateMatchesOwnRouterId(String linkStateId) {
-        boolean isLinkStateMatches = false;
-        List<OspfInterface> interfaceLst = ospfArea.ospfInterfaceList();
-        for (OspfInterface ospfInterface : interfaceLst) {
-            if (ospfInterface.ipAddress().toString().equals(linkStateId)) {
-                isLinkStateMatches = true;
-                break;
-            }
-        }
-
-        return isLinkStateMatches;
-    }
-
-    /**
-     * RFC 2328 Section 13 (5).
-     *
-     * @param lsWrapper ls wrapper instance
-     * @param recLsa    received LSA instance
-     * @return returns a string status
-     */
-    public String isNullorLatest(LsaWrapper lsWrapper, LsaHeader recLsa) {
-
-
-        if (lsWrapper != null) {
-            LsaHeader ownLsa = (LsaHeader) lsWrapper.ospfLsa();
-            String status = ospfArea.isNewerOrSameLsa(recLsa, ownLsa);
-
-            if (status.equals("latest")) {
-                return "isNullorLatest";
-            } else {
-                return status;
-            }
-        } else {
-            return "isNullorLatest";
-        }
-    }
-
-    /**
-     * RFC 2328 section 13.4
-     * Processing self-originated LSAs.
-     */
-    public void processSelfOriginatedLsa() {
-        ospfArea.refreshArea(ospfInterface);
-    }
-
-    /**
-     * Sends the LSA to destination address.
-     *
-     * @param lsa         LSA instance to sent
-     * @param destination destination IP address
-     * @param ch          netty channel instance
-     */
-    public void sendLsa(LsaHeader lsa, Ip4Address destination, Channel ch) {
-        if (lsa == null) {
-            return;
-        }
-
-        LsUpdate responseLsUpdate = new LsUpdate();
-        // seting OSPF Header
-        responseLsUpdate.setOspfVer(OspfUtil.OSPF_VERSION);
-        responseLsUpdate.setOspftype(OspfPacketType.LSUPDATE.value());
-        responseLsUpdate.setRouterId(ospfArea.routerId());
-        responseLsUpdate.setAreaId(ospfArea.areaId());
-        responseLsUpdate.setAuthType(OspfUtil.NOT_ASSIGNED);
-        responseLsUpdate.setAuthentication(OspfUtil.NOT_ASSIGNED);
-        responseLsUpdate.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length
-        responseLsUpdate.setChecksum(OspfUtil.NOT_ASSIGNED);
-        responseLsUpdate.setNumberOfLsa(1);
-        responseLsUpdate.addLsa(lsa);
-
-        //setting the destination.
-        responseLsUpdate.setDestinationIp(destination);
-        byte[] messageToWrite = getMessage(responseLsUpdate);
-        ch.write(messageToWrite);
-    }
-
-    /**
-     * Sends a direct Acknowledgment for a particular LSA to the Neighbor.
-     *
-     * @param ackLsa   LSA instance
-     * @param ch       netty channel instance
-     * @param sourceIp source IP address
-     */
-    public void directAcknowledge(LsaHeader ackLsa, Channel ch, Ip4Address sourceIp) {
-        log.debug("OSPFNbr::directAcknowledge...!!!");
-
-        LsAcknowledge ackContent = new LsAcknowledge();
-        // seting OSPF Header
-        ackContent.setOspfVer(OspfUtil.OSPF_VERSION);
-        ackContent.setOspftype(OspfPacketType.LSAACK.value());
-        ackContent.setRouterId(ospfArea.routerId());
-        ackContent.setAreaId(ospfArea.areaId());
-        ackContent.setAuthType(OspfUtil.NOT_ASSIGNED);
-        ackContent.setAuthentication(OspfUtil.NOT_ASSIGNED);
-        ackContent.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length
-        ackContent.setChecksum(OspfUtil.NOT_ASSIGNED);
-        ackContent.addLinkStateHeader(ackLsa);
-        //setting the destination IP
-        ackContent.setDestinationIp(sourceIp);
-        byte[] messageToWrite = getMessage(ackContent);
-        ch.write(messageToWrite);
-    }
-
-    /**
-     * Called when neighbor is down.
-     */
-    public void neighborDown() {
-        log.debug("Neighbor Down {} and NeighborId {}", neighborIpAddr,
-                  neighborId);
-        stopInactivityTimeCheck();
-        stopRxMtDdTimer();
-        stopRxMtLsrTimer();
-
-        if (floodingTimerScheduled) {
-            stopFloodingTimer();
-            floodingTimerScheduled = false;
-        }
-
-        state = OspfNeighborState.DOWN;
-        ospfArea.refreshArea(ospfInterface);
-        lsReqList.clear();
-        ddSummaryList.clear();
-        if (neighborIpAddr.equals(neighborBdr) ||
-                neighborIpAddr.equals(neighborDr)) {
-            ((OspfInterfaceImpl) ospfInterface).neighborChange();
-        }
-        log.debug("Neighbor Went Down : "
-                          + this.neighborIpAddr + " , " + this.neighborId);
-        removeDeviceDetails(this.neighborId);
-        OspfRouter ospfRouter = new OspfRouterImpl();
-        ospfRouter.setRouterIp(this.neighborId());
-        ospfRouter.setInterfaceId(ospfInterface.ipAddress());
-        ospfRouter.setAreaIdOfInterface(ospfArea.areaId());
-        ospfRouter.setDeviceTed(new OspfDeviceTedImpl());
-        ((OspfInterfaceImpl) ospfInterface).removeDeviceInformation(ospfRouter);
-        removeDeviceDetails(this.neighborIpAddr);
-        OspfRouter ospfRouter1 = new OspfRouterImpl();
-        ospfRouter1.setRouterIp(this.neighborIpAddr);
-        ospfRouter1.setInterfaceId(ospfInterface.ipAddress());
-        ospfRouter1.setAreaIdOfInterface(ospfArea.areaId());
-        ospfRouter1.setDeviceTed(new OspfDeviceTedImpl());
-        ((OspfInterfaceImpl) ospfInterface).removeDeviceInformation(ospfRouter1);
-    }
-
-    /**
-     * Removes device details.
-     *
-     * @param routerId router id
-     */
-    private void removeDeviceDetails(Ip4Address routerId) {
-        String key = "device:" + routerId;
-        topologyForDeviceAndLink.removeDeviceInformationMap(key);
-    }
-
-    /**
-     * Starts the inactivity timer.
-     */
-    @Override
-    public void startInactivityTimeCheck() {
-        if (!inActivityTimerScheduled) {
-            log.debug("OSPFNbr::startInactivityTimeCheck");
-            inActivityTimeCheckTask = new InternalInactivityTimeCheck();
-            exServiceInActivity = Executors.newSingleThreadScheduledExecutor();
-            exServiceInActivity.scheduleAtFixedRate(inActivityTimeCheckTask, routerDeadInterval,
-                                                    routerDeadInterval, TimeUnit.SECONDS);
-            inActivityTimerScheduled = true;
-        }
-    }
-
-    /**
-     * Stops the inactivity timer.
-     */
-    @Override
-    public void stopInactivityTimeCheck() {
-        if (inActivityTimerScheduled) {
-            log.debug("OSPFNbr::stopInactivityTimeCheck ");
-            exServiceInActivity.shutdown();
-            inActivityTimerScheduled = false;
-        }
-    }
-
-    /**
-     * Starts the flooding timer.
-     *
-     * @param channel channel instance
-     */
-    public void startFloodingTimer(Channel channel) {
-
-        if (!floodingTimerScheduled) {
-            log.debug("OSPFNbr::startFloodingTimer");
-            floodingTask = new InternalFloodingTask(channel);
-            exServiceFlooding = Executors.newSingleThreadScheduledExecutor();
-            //Run every 5 seconds.
-            exServiceFlooding.scheduleAtFixedRate(floodingTask, OspfParameters.START_NOW,
-                                                  OspfParameters.MINLSINTERVAL, TimeUnit.SECONDS);
-            floodingTimerScheduled = true;
-        }
-    }
-
-    /**
-     * Stops the flooding timer.
-     */
-    @Override
-    public void stopFloodingTimer() {
-        if (floodingTimerScheduled) {
-            log.debug("OSPFNbr::stopFloodingTimer ");
-            exServiceFlooding.shutdown();
-            floodingTimerScheduled = false;
-        }
-    }
-
-    /**
-     * Starts the Dd Retransmission executor task.
-     *
-     * @param ch netty channel instance
-     */
-    private void startRxMtDdTimer(Channel ch) {
-        if (!rxmtDdPacketTimerScheduled) {
-            long retransmitInterval = ospfInterface.reTransmitInterval();
-            rxmtDdPacketTask = new InternalRxmtDdPacket(ch);
-            exServiceRxmtDDPacket = Executors.newSingleThreadScheduledExecutor();
-            exServiceRxmtDDPacket.scheduleAtFixedRate(rxmtDdPacketTask, retransmitInterval,
-                                                      retransmitInterval, TimeUnit.SECONDS);
-            rxmtDdPacketTimerScheduled = true;
-        }
-    }
-
-    /**
-     * Stops the Dd Retransmission executor task.
-     */
-    @Override
-    public void stopRxMtDdTimer() {
-        if (rxmtDdPacketTimerScheduled) {
-            exServiceRxmtDDPacket.shutdown();
-            rxmtDdPacketTimerScheduled = false;
-        }
-    }
-
-    /**
-     * Starts Ls request retransmission executor task.
-     *
-     * @param ch Netty channel instance
-     */
-    private void startRxMtLsrTimer(Channel ch) {
-        if (!rxmtLsrTimerScheduled) {
-            log.debug("OSPFNbr::startRxMtLsrTimer...!!!");
-            long retransmitIntrvl = ospfInterface.reTransmitInterval();
-            rxmtLsrPacketTask = new InternalRxmtLsrPacket(ch);
-            exServiceRxmtLsr = Executors.newSingleThreadScheduledExecutor();
-            exServiceRxmtLsr.scheduleAtFixedRate(rxmtLsrPacketTask, retransmitIntrvl,
-                                                 retransmitIntrvl, TimeUnit.SECONDS);
-            rxmtLsrTimerScheduled = true;
-        }
-    }
-
-    /**
-     * Stops Ls request retransmission executor task.
-     */
-    @Override
-    public void stopRxMtLsrTimer() {
-        if (rxmtLsrTimerScheduled) {
-            exServiceRxmtLsr.shutdown();
-            rxmtLsrTimerScheduled = false;
-        }
-    }
-
-    /**
-     * Gets the last sent DdPacket.
-     *
-     * @return DdPacket instance
-     */
-    public DdPacket lastDdPacket() {
-        return lastDdPacket;
-    }
-
-    /**
-     * Sets the last sent DdPacket.
-     *
-     * @param lastDdPacket DdPacket instance
-     */
-    public void setLastDdPacket(DdPacket lastDdPacket) {
-        this.lastDdPacket = lastDdPacket;
-    }
-
-    /**
-     * Gets neighbor id.
-     *
-     * @return neighbor id
-     */
-    @Override
-    public Ip4Address neighborId() {
-        return neighborId;
-    }
-
-    /**
-     * Sets the neighbor id.
-     *
-     * @param neighborId neighbor id
-     */
-    @Override
-    public void setNeighborId(Ip4Address neighborId) {
-        this.neighborId = neighborId;
-    }
-
-    /**
-     * Gets the neighbor DR address.
-     *
-     * @return neighbor DR address
-     */
-    @Override
-    public Ip4Address neighborDr() {
-        return neighborDr;
-    }
-
-    /**
-     * Sets the neighbor DR address.
-     *
-     * @param neighborDr neighbor DR address
-     */
-    @Override
-    public void setNeighborDr(Ip4Address neighborDr) {
-        this.neighborDr = neighborDr;
-    }
-
-    /**
-     * Gets the neighbor BDR address.
-     *
-     * @return neighbor BDR address
-     */
-    @Override
-    public Ip4Address neighborBdr() {
-        return neighborBdr;
-    }
-
-    /**
-     * Sets the neighbor BDR address.
-     *
-     * @param neighborBdr neighbor BDR address
-     */
-    @Override
-    public void setNeighborBdr(Ip4Address neighborBdr) {
-        this.neighborBdr = neighborBdr;
-    }
-
-    /**
-     * Gets router priority.
-     *
-     * @return router priority
-     */
-    @Override
-    public int routerPriority() {
-        return routerPriority;
-    }
-
-    /**
-     * Sets router priority.
-     *
-     * @param routerPriority router priority
-     */
-    @Override
-    public void setRouterPriority(int routerPriority) {
-        this.routerPriority = routerPriority;
-    }
-
-    /**
-     * Gets the options value.
-     *
-     * @return options value
-     */
-    @Override
-    public int options() {
-        return options;
-    }
-
-    /**
-     * Sets the options value.
-     *
-     * @param options options value
-     */
-    @Override
-    public void setOptions(int options) {
-        this.options = options;
-    }
-
-    /**
-     * Gets the DD sequence number.
-     *
-     * @return DD sequence number
-     */
-    @Override
-    public long ddSeqNum() {
-        return ddSeqNum;
-    }
-
-    /**
-     * Sets the DD sequence number.
-     *
-     * @param ddSeqNum DD sequence number
-     */
-    @Override
-    public void setDdSeqNum(long ddSeqNum) {
-        this.ddSeqNum = ddSeqNum;
-    }
-
-    /**
-     * Gets neighbor is master or not.
-     *
-     * @return true if neighbor is master else false
-     */
-    @Override
-    public int isMaster() {
-        return isMaster;
-    }
-
-    /**
-     * Gets the last sent DD Packet.
-     *
-     * @return last sent DD Packet
-     */
-    public DdPacket lastSentDdPacket() {
-        return lastSentDdPacket;
-    }
-
-    /**
-     * Sets the last sent DD Packet.
-     *
-     * @param lastSentDdPacket last sent DD Packet
-     */
-    public void setLastSentDdPacket(DdPacket lastSentDdPacket) {
-        this.lastSentDdPacket = lastSentDdPacket;
-    }
-
-    /**
-     * Gets the last sent Ls Request Packet.
-     *
-     * @return last sent Ls Request Packet
-     */
-    public LsRequest getLastSentLsrPacket() {
-        return lastSentLsrPacket;
-    }
-
-    /**
-     * Sets the last sent Ls Request Packet.
-     *
-     * @param lastSentLsrPacket last sent Ls Request Packet
-     */
-    public void setLastSentLsrPacket(LsRequest lastSentLsrPacket) {
-        this.lastSentLsrPacket = lastSentLsrPacket;
-    }
-
-    /**
-     * Gets the neighbors state.
-     *
-     * @return neighbors state
-     */
-    @Override
-    public OspfNeighborState getState() {
-        return state;
-    }
-
-    /**
-     * Sets the neighbors state.
-     *
-     * @param state neighbors state
-     */
-    public void setState(OspfNeighborState state) {
-        this.state = state;
-    }
-
-    /**
-     * Sets neighbor is master or not.
-     *
-     * @param isMaster neighbor is master or not
-     */
-    @Override
-    public void setIsMaster(int isMaster) {
-        this.isMaster = isMaster;
-    }
-
-    /**
-     * Gets the ls request list.
-     *
-     * @return ls request list
-     */
-    @Override
-    public Hashtable getLsReqList() {
-        return lsReqList;
-    }
-
-    /**
-     * Gets the reTxList instance.
-     *
-     * @return reTxList instance
-     */
-    @Override
-    public Map getReTxList() {
-        return reTxList;
-    }
-
-    /**
-     * Gets the pending re transmit list.
-     *
-     * @return pendingReTxList instance
-     */
-    @Override
-    public Map<String, OspfLsa> getPendingReTxList() {
-        return pendingReTxList;
-    }
-
-    /**
-     * Gets message as bytes.
-     *
-     * @param ospfMessage OSPF message
-     * @return OSPF message
-     */
-    private byte[] getMessage(OspfMessage ospfMessage) {
-        OspfMessageWriter messageWriter = new OspfMessageWriter();
-        if (((OspfInterfaceImpl) ospfInterface).state().equals(OspfInterfaceState.POINT2POINT)) {
-            ospfMessage.setDestinationIp(OspfUtil.ALL_SPF_ROUTERS);
-        }
-        return (messageWriter.getMessage(ospfMessage, ospfInterface.interfaceIndex(),
-                                         ((OspfInterfaceImpl) ospfInterface).state().value()));
-    }
-
-
-    /**
-     * Represents a Task which will do an inactivity time check.
-     */
-    private class InternalInactivityTimeCheck implements Runnable {
-        /**
-         * Constructor.
-         */
-        InternalInactivityTimeCheck() {
-        }
-
-        @Override
-        public void run() {
-            try {
-                log.debug("Neighbor Not Heard till the past router dead interval .");
-                neighborDown();
-            } catch (Exception e) {
-                log.debug("Exception at inactivity time check...!!!");
-            }
-        }
-    }
-
-    /**
-     * Task which re transmits DdPacket every configured time interval.
-     */
-    private class InternalRxmtDdPacket implements Runnable {
-        Channel ch;
-
-        /**
-         * Creates an instance or Re transmit DD packet timer.
-         *
-         * @param ch netty channel instance
-         */
-        InternalRxmtDdPacket(Channel ch) {
-            this.ch = ch;
-        }
-
-        @Override
-        public void run() {
-            if ((ch != null) && ch.isConnected()) {
-                DdPacket ddPacket = lastSentDdPacket();
-                byte[] messageToWrite = getMessage(ddPacket);
-                ch.write(messageToWrite);
-                log.debug("Re-Transmit DD Packet .");
-            } else {
-                log.debug(
-                        "Re-Transmit DD Packet failed. Channel not connected..");
-            }
-        }
-    }
-
-    /**
-     * Task which re transmits Ls request Packet every configured time interval.
-     */
-    private class InternalRxmtLsrPacket implements Runnable {
-        Channel ch;
-
-        /**
-         * Creates an instance or Re transmit LS Request packet timer.
-         *
-         * @param ch netty channel instance
-         */
-        InternalRxmtLsrPacket(Channel ch) {
-            this.ch = ch;
-        }
-
-        @Override
-        public void run() {
-            if ((ch != null) && ch.isConnected()) {
-                LsRequest lsrPacket = getLastSentLsrPacket();
-                byte[] messageToWrite = getMessage(lsrPacket);
-                ch.write(messageToWrite);
-                log.debug("Re-Transmit LSRequest Packet .");
-            } else {
-                log.debug(
-                        "Re-Transmit LSRequest failed. Channel not connected..");
-            }
-        }
-    }
-
-    /**
-     * Task which transmits Ls update Packet based on the re transmit list.
-     * every configured time interval.
-     */
-    private class InternalFloodingTask implements Runnable {
-        Channel channel;
-
-        /**
-         * Creates an instance or Flooding task.
-         *
-         * @param ch netty channel instance
-         */
-        InternalFloodingTask(Channel ch) {
-            this.channel = ch;
-        }
-
-        @Override
-        public void run() {
-            if ((channel != null) && channel.isConnected()) {
-
-                if ((pendingReTxList != null) && (pendingReTxList.size() > 0)) {
-                    List<LsUpdate> lsUpdateList = buildLsUpdate(pendingReTxList);
-
-                    for (LsUpdate lsupdate : lsUpdateList) {
-                        //Pending for acknowledge directly sent it to neighbor
-                        lsupdate.setDestinationIp(neighborIpAddr);
-                        byte[] messageToWrite = getMessage(lsupdate);
-                        channel.write(messageToWrite);
-                    }
-                }
-
-                if ((reTxList != null) && (reTxList.size() > 0)) {
-                    List<LsUpdate> lsUpdateList = buildLsUpdate(reTxList);
-
-                    for (LsUpdate lsupdate : lsUpdateList) {
-                        //set the destination
-                        if ((((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.DR) ||
-                                (((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.POINT2POINT)) {
-                            lsupdate.setDestinationIp(OspfUtil.ALL_SPF_ROUTERS);
-                        } else if (((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.DROTHER ||
-                                (((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.BDR)) {
-                            lsupdate.setDestinationIp(neighborDr);
-                        }
-                        byte[] messageToWrite = getMessage(lsupdate);
-                        channel.write(messageToWrite);
-                    }
-                }
-            }
-        }
-
-        /**
-         * Builds the LsUpdate for flooding.
-         *
-         * @param txList list contains LSAs
-         * @return list of LsUpdate instances
-         */
-        private List buildLsUpdate(Map<String, OspfLsa> txList) {
-            List<LsUpdate> lsUpdateList = new ArrayList<>();
-            ListIterator itr = new ArrayList(txList.keySet()).listIterator();
-            while (itr.hasNext()) {
-                LsUpdate lsupdate = new LsUpdate();
-                // seting OSPF Header
-                lsupdate.setOspfVer(OspfUtil.OSPF_VERSION);
-                lsupdate.setOspftype(OspfPacketType.LSUPDATE.value());
-                lsupdate.setRouterId(ospfArea.routerId());
-                lsupdate.setAreaId(ospfArea.areaId());
-                lsupdate.setAuthType(OspfUtil.NOT_ASSIGNED);
-                lsupdate.setAuthentication(OspfUtil.NOT_ASSIGNED);
-                lsupdate.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length
-                lsupdate.setChecksum(OspfUtil.NOT_ASSIGNED);
-
-                //limit to mtu
-                int currentLength = OspfUtil.OSPF_HEADER_LENGTH + OspfUtil.FOUR_BYTES;
-                int maxSize = ospfInterface.mtu() -
-                        OspfUtil.LSA_HEADER_LENGTH; // subtract a normal IP header.
-
-                int noLsa = 0;
-                while (itr.hasNext()) {
-
-                    String key = (String) itr.next();
-                    OspfLsa lsa = txList.get(key);
-                    if (lsa != null) {
-                        if ((lsa.age() + OspfParameters.INFTRA_NS_DELAY) >= OspfParameters.MAXAGE) {
-                            ((LsaHeader) lsa.lsaHeader()).setAge(OspfParameters.MAXAGE);
-                        } else {
-                            ((LsaHeader) lsa.lsaHeader()).setAge(lsa.age() + OspfParameters.INFTRA_NS_DELAY);
-                        }
-
-                        if ((currentLength + ((LsaHeader) lsa.lsaHeader()).lsPacketLen()) >= maxSize) {
-                            itr.previous();
-                            break;
-                        }
-                        log.debug("FloodingTimer::LSA Type::{}, Header: {}, LSA: {}", lsa.getOspfLsaType(),
-                                  lsa.lsaHeader(), lsa);
-                        lsupdate.addLsa(lsa);
-                        noLsa++;
-                        currentLength = currentLength + ((LsaHeader) lsa.lsaHeader()).lsPacketLen();
-                    }
-                    log.debug("FloodingTimer::Removing key {}", key);
-                    if (txList.equals(reTxList)) {
-                        reTxList.remove(key);
-                        pendingReTxList.put(key, lsa);
-                    }
-                }
-                //set number of lsa's
-                lsupdate.setNumberOfLsa(noLsa);
-                lsUpdateList.add(lsupdate);
-            }
-            return lsUpdateList;
-        }
-    }
-}
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfPipelineFactory.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfPipelineFactory.java
deleted file mode 100644
index f98f54c..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfPipelineFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.jboss.netty.channel.ChannelPipeline;
-import org.jboss.netty.channel.ChannelPipelineFactory;
-import org.jboss.netty.channel.Channels;
-
-/**
- * Creates a ChannelPipeline for a client-side OSPF channel.
- */
-public class OspfPipelineFactory implements ChannelPipelineFactory {
-    private OspfInterfaceChannelHandler ospfChannelHandler;
-
-    /**
-     * Creates an instance of OSPF channel pipeline factory.
-     *
-     * @param ospfChannelHandler OSPF channel handler instance
-     */
-    public OspfPipelineFactory(OspfInterfaceChannelHandler ospfChannelHandler) {
-        this.ospfChannelHandler = ospfChannelHandler;
-    }
-
-    @Override
-    public ChannelPipeline getPipeline() {
-        ChannelPipeline pipeline = Channels.pipeline();
-        pipeline.addLast("encoder", new OspfMessageDecoder());
-        pipeline.addLast("decoder", new OspfMessageEncoder());
-        pipeline.addLast("handler", ospfChannelHandler);
-
-        return pipeline;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfRouterImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfRouterImpl.java
deleted file mode 100644
index 5cfb028..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfRouterImpl.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfDeviceTed;
-import org.onosproject.ospf.controller.OspfRouter;
-
-/**
- * Representation of an OSPF Router.
- */
-public class OspfRouterImpl implements OspfRouter {
-
-    private Ip4Address routerIp;
-    private Ip4Address areaIdOfInterface;
-    private Ip4Address neighborRouterId;
-    private Ip4Address interfaceId;
-    private OspfDeviceTed deviceTed;
-    private boolean isOpaque;
-    private boolean isDr;
-
-    /**
-     * Gets IP address of the Router.
-     *
-     * @return IP address router
-     */
-    public Ip4Address routerIp() {
-        return routerIp;
-    }
-
-    /**
-     * Sets IP address of the Router.
-     *
-     * @param routerIp IP address of the router
-     */
-    public void setRouterIp(Ip4Address routerIp) {
-        this.routerIp = routerIp;
-    }
-
-    /**
-     * Gets the area id of this device.
-     *
-     * @return the area id od this device
-     */
-    public Ip4Address areaIdOfInterface() {
-        return areaIdOfInterface;
-    }
-
-    /**
-     * Sets the area id for this device.
-     *
-     * @param areaIdOfInterface area identifier for the device
-     */
-    public void setAreaIdOfInterface(Ip4Address areaIdOfInterface) {
-        this.areaIdOfInterface = areaIdOfInterface;
-    }
-
-    /**
-     * Gets IP address of the interface.
-     *
-     * @return IP address of the interface
-     */
-    public Ip4Address interfaceId() {
-        return interfaceId;
-    }
-
-    /**
-     * Gets IP address of the interface.
-     *
-     * @param interfaceId IP address of the interface
-     */
-    public void setInterfaceId(Ip4Address interfaceId) {
-        this.interfaceId = interfaceId;
-    }
-
-    /**
-     * Gets List of the device ted.
-     *
-     * @return List of the device ted.
-     */
-    public OspfDeviceTed deviceTed() {
-        return deviceTed;
-    }
-
-    /**
-     * Sets List of the device TED.
-     *
-     * @param deviceTed of the device TED.
-     */
-    public void setDeviceTed(OspfDeviceTed deviceTed) {
-        this.deviceTed = deviceTed;
-    }
-
-    /**
-     * Gets boolean value.
-     *
-     * @return boolean value.
-     */
-    public boolean isOpaque() {
-        return isOpaque;
-    }
-
-    /**
-     * Sets boolean value.
-     *
-     * @param opaque true if opaque else false
-     */
-    public void setOpaque(boolean opaque) {
-        isOpaque = opaque;
-    }
-
-    /**
-     * Gets neighbor's Router id.
-     *
-     * @return neighbor's Router id
-     */
-    public Ip4Address neighborRouterId() {
-        return neighborRouterId;
-    }
-
-    /**
-     * Sets neighbor's Router id.
-     *
-     * @param advertisingRouterId neighbor's Router id
-     */
-    public void setNeighborRouterId(Ip4Address advertisingRouterId) {
-        this.neighborRouterId = advertisingRouterId;
-    }
-
-    /**
-     * Gets if DR or not.
-     *
-     * @return true if DR else false
-     */
-    public boolean isDr() {
-        return isDr;
-    }
-
-    /**
-     * Sets dr or not.
-     *
-     * @param dr true if DR else false
-     */
-    public void setDr(boolean dr) {
-        isDr = dr;
-    }
-}
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/TopologyForDeviceAndLinkImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/TopologyForDeviceAndLinkImpl.java
deleted file mode 100644
index 710e6a8..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/TopologyForDeviceAndLinkImpl.java
+++ /dev/null
@@ -1,669 +0,0 @@
-/*
-* Copyright 2016-present Open Networking Foundation
-*
-* 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.ospf.controller.impl;
-
-import org.onlab.packet.Ip4Address;
-import org.onlab.util.Bandwidth;
-import org.onosproject.ospf.controller.DeviceInformation;
-import org.onosproject.ospf.controller.LinkInformation;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfLinkTed;
-import org.onosproject.ospf.controller.OspfLsa;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.controller.TopologyForDeviceAndLink;
-import org.onosproject.ospf.protocol.lsa.linksubtype.LinkSubType;
-import org.onosproject.ospf.protocol.lsa.linksubtype.LocalInterfaceIpAddress;
-import org.onosproject.ospf.protocol.lsa.linksubtype.MaximumBandwidth;
-import org.onosproject.ospf.protocol.lsa.linksubtype.MaximumReservableBandwidth;
-import org.onosproject.ospf.protocol.lsa.linksubtype.RemoteInterfaceIpAddress;
-import org.onosproject.ospf.protocol.lsa.linksubtype.TrafficEngineeringMetric;
-import org.onosproject.ospf.protocol.lsa.linksubtype.UnreservedBandwidth;
-import org.onosproject.ospf.protocol.lsa.subtypes.OspfLsaLink;
-import org.onosproject.ospf.protocol.lsa.tlvtypes.LinkTlv;
-import org.onosproject.ospf.protocol.lsa.types.NetworkLsa;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10;
-import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
-import org.onosproject.ospf.protocol.lsa.types.TopLevelTlv;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-
-/**
- * Represents device and link topology information.
- */
-public class TopologyForDeviceAndLinkImpl implements TopologyForDeviceAndLink {
-
-    private static final Logger log = LoggerFactory.getLogger(TopologyForDeviceAndLinkImpl.class);
-    Set<Ip4Address> routerSet = new TreeSet<Ip4Address>();
-    Ip4Address firstValue = Ip4Address.valueOf("0.0.0.0");
-    private Map<String, DeviceInformation> deviceInformationMap = new LinkedHashMap();
-    private Map<Ip4Address, List<Ip4Address>> networkLsaMap = new LinkedHashMap();
-    private Map<String, DeviceInformation> deviceInformationMapForPointToPoint = new LinkedHashMap();
-    private Map<String, DeviceInformation> deviceInformationMapToDelete = new LinkedHashMap();
-    private HashMap<String, Set<OspfLsaLink>> deviceAndLinkInformation = new HashMap();
-    private HashMap<String, OspfLinkTed> ospfLinkTedHashMap = new LinkedHashMap();
-    private Ip4Address drRouter = Ip4Address.valueOf("0.0.0.0");
-    private Ip4Address drRouterOld = Ip4Address.valueOf("0.0.0.0");
-    private Ip4Address adRouterId = Ip4Address.valueOf("0.0.0.0");
-    private Map<String, LinkInformation> linkInformationMap = new LinkedHashMap();
-    private Map<String, LinkInformation> linkInformationMapForPointToPoint = new LinkedHashMap();
-    private List<String> toRemove = new ArrayList<>();
-
-    /**
-     * Gets device information.
-     *
-     * @return device information
-     */
-    public Map<String, DeviceInformation> deviceInformationMap() {
-        return deviceInformationMap;
-    }
-
-    /**
-     * Sets device information.
-     *
-     * @param key                  key used to add in map
-     * @param deviceInformationMap device information instance
-     */
-    public void setDeviceInformationMap(String key, DeviceInformation deviceInformationMap) {
-        if (deviceInformationMap != null) {
-            this.deviceInformationMap.put(key, deviceInformationMap);
-        }
-
-    }
-
-    /**
-     * Gets deviceInformation as map for Point-To-Point.
-     *
-     * @return deviceInformationMap
-     */
-    public Map<String, DeviceInformation> deviceInformationMapForPointToPoint() {
-        return deviceInformationMapForPointToPoint;
-    }
-
-    /**
-     * Sets deviceInformation as map for Point-To-Point..
-     *
-     * @param key                  key to store device information
-     * @param deviceInformationMap device information instance
-     */
-    public void setDeviceInformationMapForPointToPoint(String key, DeviceInformation deviceInformationMap) {
-        if (deviceInformationMap != null) {
-            this.deviceInformationMapForPointToPoint.put(key, deviceInformationMap);
-        }
-
-    }
-
-    /**
-     * Gets deviceInformation as map.
-     *
-     * @return deviceInformationMap to delete from core
-     */
-    public Map<String, DeviceInformation> deviceInformationMapToDelete() {
-        return deviceInformationMapToDelete;
-    }
-
-    /**
-     * Sets device information for removal.
-     *
-     * @param key                          ket used to add in map
-     * @param deviceInformationMapToDelete map from device information to remove
-     */
-    public void setDeviceInformationMapToDelete(String key, DeviceInformation deviceInformationMapToDelete) {
-        if (deviceInformationMapToDelete != null) {
-            this.deviceInformationMapToDelete.put(key, deviceInformationMapToDelete);
-        }
-    }
-
-    /**
-     * Removes Device Information.
-     *
-     * @param key ket used to remove from map
-     */
-    public void removeDeviceInformationMapFromDeleteMap(String key) {
-        removeDeviceInformationMap(key);
-        if (this.deviceInformationMapToDelete.containsKey(key)) {
-            this.deviceInformationMapToDelete.remove(key);
-        }
-    }
-
-    /**
-     * Gets Device Information.
-     *
-     * @param key key to store in map
-     * @return Device Information
-     */
-    public DeviceInformation deviceInformation(String key) {
-        DeviceInformation deviceInformation = this.deviceInformationMap.get(key);
-        return deviceInformation;
-    }
-
-    /**
-     * Removes Device Information from map.
-     *
-     * @param key key used to remove from map
-     */
-    public void removeDeviceInformationMap(String key) {
-        if (this.deviceInformationMap.containsKey(key)) {
-            this.deviceInformationMap.remove(key);
-        }
-    }
-
-    /**
-     * Gets link information as map.
-     *
-     * @return link information as map
-     */
-    public Map<String, LinkInformation> linkInformationMap() {
-        return linkInformationMap;
-    }
-
-    private LinkInformation getLinkInformation(String key) {
-        LinkInformation linkInformation = this.linkInformationMap.get(key);
-        return linkInformation;
-    }
-
-    /**
-     * Sets link information in map.
-     *
-     * @param key                key used to add in map
-     * @param linkInformationMap link information instance
-     */
-    public void setLinkInformationMap(String key, LinkInformation linkInformationMap) {
-        if (!this.linkInformationMap.containsKey(key)) {
-            this.linkInformationMap.put(key, linkInformationMap);
-        }
-    }
-
-    /**
-     * Gets linkInformation as map for PointToPoint.
-     *
-     * @return linkInformationMap
-     */
-    public Map<String, LinkInformation> linkInformationMapForPointToPoint() {
-        return linkInformationMap;
-    }
-
-    /**
-     * Sets linkInformation as map for PointToPoint.
-     *
-     * @param key                key to store link information
-     * @param linkInformationMap link information instance
-     */
-    public void setLinkInformationMapForPointToPoint(String key, LinkInformation linkInformationMap) {
-        if (!this.linkInformationMap.containsKey(key)) {
-            this.linkInformationMap.put(key, linkInformationMap);
-        }
-    }
-
-    /**
-     * Removes Link Information from linkInformationMap.
-     *
-     * @param key key to remove link information
-     */
-    public void removeLinkInformationMap(String key) {
-        if (this.linkInformationMap.containsKey(key)) {
-            this.linkInformationMap.remove(key);
-        }
-    }
-
-
-    /**
-     * Gets OSPF Link TED details from the map.
-     *
-     * @param key key used to retrieve from map
-     * @return OSPF link ted instance
-     */
-    public OspfLinkTed getOspfLinkTedHashMap(String key) {
-        OspfLinkTed ospfLinkTed = ospfLinkTedHashMap.get(key);
-        return ospfLinkTed;
-    }
-
-    /**
-     * Adds device information to map.
-     *
-     * @param ospfLsa       OSPF LSA instance
-     * @param ospfInterface OSPF interface instance
-     * @param ospfArea      OSPF area instance
-     */
-    public void addLocalDevice(OspfLsa ospfLsa, OspfInterface ospfInterface, OspfArea ospfArea) {
-        if (ospfLsa.getOspfLsaType().equals(OspfLsaType.ROUTER)) {
-            createDeviceAndLinkFromRouterLsa(ospfLsa, ospfArea);
-        } else if (ospfLsa.getOspfLsaType().equals(OspfLsaType.NETWORK)) {
-            createDeviceAndLinkFromNetworkLsa(ospfLsa, ospfArea);
-        } else if (ospfLsa.getOspfLsaType().equals(OspfLsaType.AREA_LOCAL_OPAQUE_LSA)) {
-            createDeviceAndLinkFromOpaqueLsa(ospfLsa, ospfArea);
-        }
-    }
-
-    /**
-     * Creates device object from parameters.
-     *
-     * @param alreadyCreated device already created or not
-     * @param deviceId       device id
-     * @param neighborId     neighbor's id
-     * @param routerId       router's id
-     * @param interfaceId    interface id
-     * @param areaId         area id
-     * @param isDr           true if router is DR else false
-     */
-    private DeviceInformation createDeviceInformation(boolean alreadyCreated, Ip4Address deviceId,
-                                                      Ip4Address neighborId, Ip4Address routerId,
-                                                      Ip4Address interfaceId, Ip4Address areaId,
-                                                      boolean isDr) {
-        DeviceInformation deviceInformation = new DeviceInformationImpl();
-        deviceInformation.setAlreadyCreated(alreadyCreated);
-        deviceInformation.setDeviceId(deviceId);
-        deviceInformation.setNeighborId(neighborId);
-        deviceInformation.setRouterId(routerId);
-        deviceInformation.addInterfaceId(interfaceId);
-        deviceInformation.setAreaId(areaId);
-        deviceInformation.setDr(isDr);
-        return deviceInformation;
-    }
-
-    /**
-     * Creates Device and Link instance from the RouterLsa parameters.
-     *
-     * @param ospfLsa  OSPF LSA instance
-     * @param ospfArea OSPF area
-     */
-    private void createDeviceAndLinkFromRouterLsa(OspfLsa ospfLsa, OspfArea ospfArea) {
-        RouterLsa routerLsa = (RouterLsa) ospfLsa;
-        List<OspfLsaLink> ospfLsaLinkList = routerLsa.routerLink();
-        Iterator iterator = ospfLsaLinkList.iterator();
-        Ip4Address advertisingRouterId = routerLsa.advertisingRouter();
-        while (iterator.hasNext()) {
-            OspfLsaLink ospfLsaLink = (OspfLsaLink) iterator.next();
-            Ip4Address linkId = Ip4Address.valueOf(ospfLsaLink.linkId());
-            Ip4Address linkData = Ip4Address.valueOf(ospfLsaLink.linkData());
-            if (ospfLsaLink.linkType() == 1) {
-                if ((advertisingRouterId.equals(ospfArea.routerId())) || (linkId.equals(ospfArea.routerId()))) {
-                    if (!advertisingRouterId.equals(ospfArea.routerId())) {
-                        DeviceInformation deviceInformationPointToPoint =
-                                createDeviceInformation(false, linkId, linkId, advertisingRouterId, linkData,
-                                                        ospfArea.areaId(), false);
-                        String key = "device:" + advertisingRouterId;
-                        setDeviceInformationMapForPointToPoint(key, deviceInformationPointToPoint);
-                    }
-                } else {
-                    DeviceInformation deviceInformationPointToPoint =
-                            createDeviceInformation(false, linkId, linkId, advertisingRouterId,
-                                                    linkData, ospfArea.areaId(), false);
-                    String key = "device:" + advertisingRouterId;
-                    setDeviceInformationMapForPointToPoint(key, deviceInformationPointToPoint);
-                    String linkIdKey = "linkId:" + advertisingRouterId + "-" + linkId;
-                    addLocalLinkForPointToPoint(linkIdKey, linkData, advertisingRouterId, linkId, true, false);
-                }
-            }
-        }
-    }
-
-    /**
-     * Creates device and link instance from the network LSA parameters.
-     *
-     * @param ospfLsa  OSPF LSA instance
-     * @param ospfArea OSPF area instance
-     */
-    private void createDeviceAndLinkFromNetworkLsa(OspfLsa ospfLsa, OspfArea ospfArea) {
-        NetworkLsa networkLsa = (NetworkLsa) ospfLsa;
-        Ip4Address linkStateId = Ip4Address.valueOf(networkLsa.linkStateId());
-        Set<Ip4Address> drList = networkLsaMap.keySet();
-        try {
-            Ip4Address drToReplace = null;
-            for (Ip4Address drIp : drList) {
-                if (!drIp.equals(linkStateId)) {
-                    if (OspfUtil.sameNetwork(drIp, linkStateId, networkLsa.networkMask())) {
-                        drToReplace = drIp;
-                        String key = "device:" + drToReplace;
-                        DeviceInformation deleteDr = deviceInformation(key);
-                        if (deleteDr != null) {
-                            deleteDr.setAlreadyCreated(true);
-                            setDeviceInformationMapToDelete(key, deleteDr);
-                        }
-
-                        networkLsaMap.remove(drToReplace);
-                        break;
-                    }
-                }
-            }
-            networkLsaMap.put(linkStateId, networkLsa.attachedRouters());
-
-        } catch (Exception e) {
-            log.debug("Error::TopologyForDeviceAndLinkImpl:: {}", e.getMessage());
-        }
-        constructDeviceForBroadCastTopology(ospfArea);
-        disp();
-
-    }
-
-    private void constructDeviceForBroadCastTopology(OspfArea ospfArea) {
-
-        for (Map.Entry<Ip4Address, List<Ip4Address>> entry : networkLsaMap.entrySet()) {
-            Ip4Address key = entry.getKey();
-            DeviceInformation deviceInformationForDr = createDeviceInformation(false, key, key, key,
-                                                                               key, ospfArea.areaId(), true);
-            String dr = "device:" + key;
-            setDeviceInformationMap(dr, deviceInformationForDr);
-            List<Ip4Address> value = entry.getValue();
-            for (Ip4Address connectedRouter : value) {
-                if (!connectedRouter.equals(ospfArea.routerId())) {
-                    DeviceInformation deviceInformationAttachedRouters =
-                            createDeviceInformation(false, connectedRouter, key, connectedRouter,
-                                                    key, ospfArea.areaId(), false);
-                    String attachedRouters = "device:" + connectedRouter;
-                    setDeviceInformationMap(attachedRouters, deviceInformationAttachedRouters);
-                    String linkIdKey = "linkId:" + key + "-" + connectedRouter;
-                    addLocalLink(linkIdKey, key, key, connectedRouter, true, false);
-                }
-            }
-        }
-
-    }
-
-    private void disp() {
-        for (String key : deviceInformationMap.keySet()) {
-            DeviceInformation deviceInformation = deviceInformationMap.get(key);
-            log.debug("************************************************************************");
-            log.debug("DeviceInfoList RouterId is : {} and neighbour is  {} and linkdata {}",
-                      deviceInformation.routerId(), deviceInformation.neighborId(), deviceInformation.interfaceId());
-        }
-
-        for (Map.Entry<String, LinkInformation> entry : linkInformationMap.entrySet()) {
-            String linkDetail = entry.getKey();
-            log.debug("Link From and to is  " + linkDetail);
-        }
-        log.debug("Devices Needs to delete from Core are  : " + deviceInformationMapToDelete.size());
-        for (String key : deviceInformationMapToDelete.keySet()) {
-            DeviceInformation value = deviceInformationMapToDelete.get(key);
-            if (value.isAlreadyCreated()) {
-                log.debug("Device is deleted from list " + value.routerId());
-            }
-        }
-    }
-
-    private void getLinksToDelete(Set<Ip4Address> list, Ip4Address value, OspfArea ospfArea) {
-
-        Iterator iterator = list.iterator();
-
-        while (iterator.hasNext()) {
-            Ip4Address secondValue = (Ip4Address) iterator.next();
-            if (!value.toString().equals("0.0.0.0")) {
-                if ((!value.equals(secondValue))) {
-                    if ((!secondValue.equals(ospfArea.routerId()))) {
-                        String key = "link:" + value.toString() + "-" + secondValue.toString();
-                        String key1 = "link:" + secondValue.toString() + "-" + value.toString();
-                        LinkInformation linkDetails = getLinkInformation(key);
-                        LinkInformation linkDetailsOther = getLinkInformation(key1);
-                        linkInformationMapForPointToPoint.put(key, linkDetails);
-                        linkInformationMapForPointToPoint.put(key1, linkDetailsOther);
-                    }
-                }
-            }
-
-        }
-
-    }
-
-    /**
-     * Creates Device and Link instance from the OpaqueLsa parameters.
-     *
-     * @param ospfLsa  OSPF LSA instance
-     * @param ospfArea OSPF area instance
-     */
-    private void createDeviceAndLinkFromOpaqueLsa(OspfLsa ospfLsa, OspfArea ospfArea) {
-        OspfLinkTed ospfLinkTed = new OspfLinkTedImpl();
-        OpaqueLsa10 opaqueLsa10 = (OpaqueLsa10) ospfLsa;
-        List<TopLevelTlv> topLevelTlvList = opaqueLsa10.topLevelValues();
-        for (TopLevelTlv topLevelTlv : topLevelTlvList) {
-            if (topLevelTlv instanceof LinkTlv) {
-                LinkTlv linkTlv = (LinkTlv) topLevelTlv;
-                List<LinkSubType> subTypes = linkTlv.subTlvList();
-                for (LinkSubType type : subTypes) {
-                    if (type instanceof UnreservedBandwidth) {
-                        UnreservedBandwidth unreservedBandwidth = (UnreservedBandwidth) type;
-                        List<Float> bandwidthFloatValues = unreservedBandwidth.getUnReservedBandwidthValue();
-                        List<Bandwidth> bandwidthList = new ArrayList<>();
-                        for (Float value : bandwidthFloatValues) {
-                            Bandwidth bandwidth = Bandwidth.bps((double) value);
-                            ospfLinkTed.setMaxUnResBandwidth(bandwidth);
-                            bandwidthList.add(bandwidth);
-                        }
-                    }
-                    if (type instanceof MaximumBandwidth) {
-                        MaximumBandwidth maximumBandwidth = (MaximumBandwidth) type;
-                        float maxBandValue = maximumBandwidth.getMaximumBandwidthValue();
-                        Bandwidth bandwidth = Bandwidth.bps((double) maxBandValue);
-                        ospfLinkTed.setMaximumLink(bandwidth);
-                    }
-                    if (type instanceof MaximumReservableBandwidth) {
-                        MaximumReservableBandwidth maximumReservableBandwidth = (MaximumReservableBandwidth) type;
-                        float maxResBandValue = maximumReservableBandwidth.getMaximumBandwidthValue();
-                        Bandwidth bandwidth = Bandwidth.bps((double) maxResBandValue);
-                        ospfLinkTed.setMaxReserved(bandwidth);
-                    }
-                    if (type instanceof TrafficEngineeringMetric) {
-                        TrafficEngineeringMetric trafficEngineeringMetric = (TrafficEngineeringMetric) type;
-                        long teMetric = trafficEngineeringMetric.getTrafficEngineeringMetricValue();
-                        ospfLinkTed.setTeMetric((Integer) (int) teMetric);
-                    }
-                    if (type instanceof LocalInterfaceIpAddress) {
-                        LocalInterfaceIpAddress localInterfaceIpAddress = (LocalInterfaceIpAddress) type;
-                        List<String> stringValue = localInterfaceIpAddress.getLocalInterfaceIPAddress();
-                        List<Ip4Address> localIp4Address = new ArrayList<>();
-                        for (String value : stringValue) {
-                            Ip4Address ip4Address = Ip4Address.valueOf(value);
-                            localIp4Address.add(ip4Address);
-                        }
-                        ospfLinkTed.setIpv4LocRouterId(localIp4Address);
-                    }
-                    if (type instanceof RemoteInterfaceIpAddress) {
-                        RemoteInterfaceIpAddress remoteInterfaceIpAddress = (RemoteInterfaceIpAddress) type;
-                        List<String> stringValue = remoteInterfaceIpAddress.getRemoteInterfaceAddress();
-                        List<Ip4Address> remoteIp4Address = new ArrayList<>();
-                        for (String value : stringValue) {
-                            Ip4Address ip4Address = Ip4Address.valueOf(value);
-                            remoteIp4Address.add(ip4Address);
-                        }
-                        ospfLinkTed.setIpv4RemRouterId(remoteIp4Address);
-                    }
-                }
-            }
-
-        }
-        ospfLinkTedHashMap.put(adRouterId.toString(), ospfLinkTed);
-    }
-
-
-    /**
-     * Adds link information to LinkInformationMap.
-     *
-     * @param advertisingRouter    advertising router
-     * @param linkData             link data address
-     * @param linkSrc              link source address
-     * @param linkDest             link destination address
-     * @param opaqueEnabled        opaque enabled or not
-     * @param linkSrcIdNotRouterId link source id or not
-     */
-    public void addLocalLink(String advertisingRouter, Ip4Address linkData, Ip4Address linkSrc, Ip4Address linkDest,
-                             boolean opaqueEnabled, boolean linkSrcIdNotRouterId) {
-        String linkKey = "link:";
-        LinkInformation linkInformation = new LinkInformationImpl();
-        linkInformation.setLinkId(advertisingRouter);
-        linkInformation.setLinkSourceId(linkSrc);
-        linkInformation.setLinkDestinationId(linkDest);
-        linkInformation.setAlreadyCreated(false);
-        linkInformation.setLinkSrcIdNotRouterId(linkSrcIdNotRouterId);
-        linkInformation.setInterfaceIp(linkData);
-        if (linkDest != null) {
-            linkInformation.setLinkSrcIdNotRouterId(false);
-        }
-        linkKey = linkKey + "-" + linkSrc + "-" + linkDest;
-        setLinkInformationMap(linkKey, linkInformation);
-    }
-
-    /**
-     * Adds link information to LinkInformationMap for PointToPoint.
-     *
-     * @param advertisingRouter    advertising router
-     * @param linkData             link data
-     * @param linkSrc              link source
-     * @param linkDest             link destination
-     * @param opaqueEnabled        whether opaque is enabled or not
-     * @param linkSrcIdNotRouterId whether link is source id or router id
-     */
-    public void addLocalLinkForPointToPoint(String advertisingRouter, Ip4Address linkData, Ip4Address linkSrc,
-                                            Ip4Address linkDest, boolean opaqueEnabled, boolean linkSrcIdNotRouterId) {
-        String linkKey = "link:";
-        LinkInformation linkInformation = new LinkInformationImpl();
-        linkInformation.setLinkId(advertisingRouter);
-        linkInformation.setLinkSourceId(linkSrc);
-        linkInformation.setLinkDestinationId(linkDest);
-        linkInformation.setAlreadyCreated(false);
-        linkInformation.setLinkSrcIdNotRouterId(linkSrcIdNotRouterId);
-        linkInformation.setInterfaceIp(linkData);
-        if (linkDest != null) {
-            linkInformation.setLinkSrcIdNotRouterId(false);
-        }
-        linkKey = linkKey + "-" + linkSrc + "-" + linkDest;
-        setLinkInformationMapForPointToPoint(linkKey, linkInformation);
-    }
-
-    /**
-     * Removes links from LinkInformationMap.
-     *
-     * @param routerId router id
-     */
-    public void removeLinks(Ip4Address routerId) {
-        Map<String, LinkInformation> linkInformationMapLocal = linkInformationMap;
-        if (linkInformationMapLocal != null) {
-            for (Map.Entry<String, LinkInformation> entry : linkInformationMap.entrySet()) {
-                String key = entry.getKey();
-                boolean check = key.contains(routerId.toString());
-                LinkInformation linkInformation = linkInformationMap.get(key);
-                boolean check1 = (linkInformation.linkDestinationId() == routerId) ? true : false;
-                if (check || check1) {
-                    toRemove.add(key);
-                }
-            }
-            removeLinkFromMap();
-        }
-    }
-
-    /**
-     * Removes Device from DeviceInformationMap.
-     *
-     * @param routerId router id
-     */
-    public void removeDevice(Ip4Address routerId) {
-        String key = "device:" + routerId;
-        this.deviceInformationMap.remove(key);
-    }
-
-    /**
-     * Removes link information from Map.
-     */
-    private void removeLinkFromMap() {
-        Iterator iterator = toRemove.iterator();
-        while (iterator.hasNext()) {
-            String key = (String) iterator.next();
-            removeLinkInformationMap(key);
-        }
-    }
-
-    /**
-     * Updates the deviceAndLinkInformation list for received OSPF LSA.
-     *
-     * @param ospfLsa  OSPF LSA  instance
-     * @param ospfArea OSPF area instance
-     */
-    public void updateLinkInformation(OspfLsa ospfLsa, OspfArea ospfArea) {
-        if (ospfLsa.getOspfLsaType().equals(OspfLsaType.ROUTER)) {
-            RouterLsa routerLsa = (RouterLsa) ospfLsa;
-            routerLsa.lsType();
-            List<OspfLsaLink> ospfLsaLinkList = routerLsa.routerLink();
-            for (OspfLsaLink link : ospfLsaLinkList) {
-                if (link.linkType() == 1 || link.linkType() == 2) {
-                    if ((routerLsa.advertisingRouter().equals(ospfArea.routerId())) ||
-                            (link.linkId().equals(ospfArea.routerId().toString()))) {
-                        log.debug("OspfInterface information will not display in web ");
-                    } else {
-                        String key = routerLsa.advertisingRouter() + "-" + link.linkData();
-                        Set<OspfLsaLink> linkInformations = new HashSet<>();
-                        if (deviceAndLinkInformation.containsKey(key)) {
-                            linkInformations = deviceAndLinkInformation.get(key);
-                            linkInformations.add(link);
-                            deviceAndLinkInformation.put(key, linkInformations);
-                        } else {
-                            linkInformations.add(link);
-                            deviceAndLinkInformation.put(key, linkInformations);
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Gets all the router information which needs to delete from deviceList.
-     *
-     * @param ospfLsa  OSPF LSA instance
-     * @param ospfArea OSPF area instance
-     * @return list of deleted router information
-     */
-    public List<String> getDeleteRouterInformation(OspfLsa ospfLsa, OspfArea ospfArea) {
-        List<String> removedLinkList = new ArrayList<>();
-        if (ospfLsa.getOspfLsaType().equals(OspfLsaType.ROUTER)) {
-
-            RouterLsa routerLsa = (RouterLsa) ospfLsa;
-            List<OspfLsaLink> ospfLsaLinkList = routerLsa.routerLink();
-            for (OspfLsaLink link : ospfLsaLinkList) {
-                if (link.linkType() == 1 || link.linkType() == 2) {
-                    if ((routerLsa.advertisingRouter().equals(ospfArea.routerId())) ||
-                            (link.linkId().equals(ospfArea.routerId().toString()))) {
-                        log.debug("OspfInterface information will not display in web ");
-                    } else {
-                        String key = routerLsa.advertisingRouter() + "-" + link.linkData();
-                        Set<OspfLsaLink> linkInformations = deviceAndLinkInformation.get(key);
-                        if (linkInformations.contains(link)) {
-                            linkInformations.remove(link);
-                            deviceAndLinkInformation.put(key, linkInformations);
-                        }
-                    }
-                }
-                Set<String> keys = deviceAndLinkInformation.keySet();
-                for (String key : keys) {
-                    Set<OspfLsaLink> linkInformations = deviceAndLinkInformation.get(key);
-                    for (OspfLsaLink link1 : linkInformations) {
-                        String removedLink = link1.linkId();
-                        removedLinkList.add(removedLink);
-                    }
-                }
-            }
-        }
-        return removedLinkList;
-    }
-}
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/package-info.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/package-info.java
deleted file mode 100644
index 9275af0..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the OSPF controller.
- */
-package org.onosproject.ospf.controller.impl;
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaBinImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaBinImpl.java
deleted file mode 100644
index 9ba49a4..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaBinImpl.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.lsdb;
-
-import com.google.common.base.MoreObjects;
-import org.onosproject.ospf.controller.LsaBin;
-import org.onosproject.ospf.controller.LsaWrapper;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Represents a bin, where an LSA is stored for Aging.
- * A bin is identified by a bin number and can have one or more LSAs
- * store in a particular bin location.
- */
-public class LsaBinImpl implements LsaBin {
-
-    private int binNumber;
-    private Map<String, LsaWrapper> listOfLsa = new ConcurrentHashMap<>();
-
-    /**
-     * Creates an instance of LSA bin.
-     *
-     * @param binNumber unique number of this bin
-     */
-    public LsaBinImpl(int binNumber) {
-        this.binNumber = binNumber;
-    }
-
-    /**
-     * Adds the LSA to this bin with the given key.
-     *
-     * @param lsaKey     key of the LSA
-     * @param lsaWrapper wrapper instance to store
-     */
-    public void addOspfLsa(String lsaKey, LsaWrapper lsaWrapper) {
-        if (!listOfLsa.containsKey(lsaKey)) {
-            listOfLsa.put(lsaKey, lsaWrapper);
-            lsaWrapper.setBinNumber(this.binNumber);
-        }
-    }
-
-    /**
-     * Gets the LSA from the bin.
-     *
-     * @param lsaKey key to search the LSA
-     * @return LSA Wrapper instance
-     */
-    public LsaWrapper ospfLsa(String lsaKey) {
-
-        return listOfLsa.get(lsaKey);
-    }
-
-    /**
-     * Removes LSA from the bin.
-     *
-     * @param lsaKey     key to search LSA
-     * @param lsaWrapper wrapper object to remove
-     */
-    public void removeOspfLsa(String lsaKey, LsaWrapper lsaWrapper) {
-        if (listOfLsa.containsKey(lsaKey)) {
-            listOfLsa.remove(lsaKey);
-        }
-    }
-
-    /**
-     * Gets the list of LSAs in this bin as key value pair.
-     *
-     * @return list of LSAs in this bin as key value pair
-     */
-    public Map<String, LsaWrapper> listOfLsa() {
-        return listOfLsa;
-    }
-
-    /**
-     * Gets the bin number.
-     *
-     * @return the bin number
-     */
-    public int binNumber() {
-        return binNumber;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("binNumber", binNumber)
-                .add("listOfLsa", listOfLsa)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaQueueConsumer.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaQueueConsumer.java
deleted file mode 100644
index 94d232c..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaQueueConsumer.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.lsdb;
-
-import org.jboss.netty.channel.Channel;
-import org.onosproject.ospf.controller.LsaWrapper;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.controller.area.OspfAreaImpl;
-import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.types.NetworkLsa;
-import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
-import org.onosproject.ospf.protocol.util.ChecksumCalculator;
-import org.onosproject.ospf.protocol.util.OspfInterfaceState;
-import org.onosproject.ospf.protocol.util.OspfParameters;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.concurrent.BlockingQueue;
-
-/**
- * Consumes LSA from the Queue and processes it.
- * Its a producer consumer implementation using Blocking queue.
- */
-public class LsaQueueConsumer implements Runnable {
-    private static final Logger log = LoggerFactory.getLogger(LsaQueueConsumer.class);
-    private BlockingQueue queue = null;
-    private Channel channel;
-    private OspfArea ospfArea;
-
-    /**
-     * Creates an instance of LSA queue consumer.
-     *
-     * @param queue    queue instance
-     * @param channel  netty channel instance
-     * @param ospfArea OSPF area instance
-     */
-    public LsaQueueConsumer(BlockingQueue queue, Channel channel, OspfArea ospfArea) {
-        this.queue = queue;
-        this.channel = channel;
-        this.ospfArea = ospfArea;
-    }
-
-    /**
-     * Threads run method.
-     */
-    public void run() {
-        log.debug("LSAQueueConsumer:run...!!!");
-        try {
-            while (true) {
-                if (!queue.isEmpty()) {
-                    LsaWrapper wrapper = (LsaWrapper) queue.take();
-                    String lsaProcessing = wrapper.lsaProcessing();
-                    switch (lsaProcessing) {
-                        case OspfParameters.VERIFYCHECKSUM:
-                            log.debug("LSAQueueConsumer: Message - " + OspfParameters.VERIFYCHECKSUM + " consumed.");
-                            processVerifyChecksum(wrapper);
-                            break;
-                        case OspfParameters.REFRESHLSA:
-                            log.debug("LSAQueueConsumer: Message - " + OspfParameters.REFRESHLSA + " consumed.");
-                            processRefreshLsa(wrapper);
-                            break;
-                        case OspfParameters.MAXAGELSA:
-                            log.debug("LSAQueueConsumer: Message - " + OspfParameters.MAXAGELSA + " consumed.");
-                            processMaxAgeLsa(wrapper);
-                            break;
-                        default:
-                            log.debug("Unknown command to process the LSA in queue ...!!!");
-                            break;
-                    }
-                }
-            }
-
-        } catch (Exception e) {
-            log.debug("Error::LSAQueueConsumer::{}", e.getMessage());
-        }
-    }
-
-    /**
-     * Processes verify checksum - checkAges.
-     *
-     * @param wrapper LSA wrapper instance
-     */
-    private void processVerifyChecksum(LsaWrapper wrapper) throws OspfParseException {
-        ChecksumCalculator checkSum = new ChecksumCalculator();
-        if (!checkSum.isValidLsaCheckSum(wrapper.ospfLsa(), ((LsaWrapperImpl) wrapper).lsaHeader().lsType(),
-                                         OspfUtil.LSAPACKET_CHECKSUM_POS1,
-                                         OspfUtil.LSAPACKET_CHECKSUM_POS2)) {
-            log.debug("LSAQueueConsumer::Checksum mismatch. Received LSA packet type {} ",
-                      ((LsaWrapperImpl) wrapper).lsaHeader().lsType());
-
-            //Checksum Invalid
-            //RFC 2328 Restart the Router.
-            //Currently we are not restarting. We are not handling this case.
-        }
-    }
-
-    /**
-     * Process refresh LSA.
-     *
-     * @param wrapper LSA wrapper instance
-     */
-    private void processRefreshLsa(LsaWrapper wrapper) throws OspfParseException {
-        if (wrapper.isSelfOriginated()) { //self originated
-            //set the destination
-            OspfInterface ospfInterface = wrapper.ospfInterface();
-            if (ospfInterface != null) {
-                LsaHeader header = ((LsaWrapperImpl) wrapper).lsaHeader();
-                header.setAge(wrapper.currentAge());
-                if (((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.DR) {
-                    if (header.lsType() == OspfLsaType.ROUTER.value()) {
-                        RouterLsa routerLsa = ((OspfAreaImpl) ospfArea).buildRouterLsa(ospfInterface);
-                        ((OspfAreaImpl) ospfArea).addLsa(routerLsa, true, ospfInterface);
-                        ((OspfAreaImpl) ospfArea).addToOtherNeighborLsaTxList(routerLsa);
-                    } else if (header.lsType() == OspfLsaType.NETWORK.value()) {
-                        if (ospfInterface.listOfNeighbors().size() > 0) {
-                            NetworkLsa networkLsa = ((OspfAreaImpl) ospfArea).buildNetworkLsa(
-                                    ospfInterface.ipAddress(), ospfInterface.ipNetworkMask());
-                            ospfArea.addLsa(networkLsa, true, ospfInterface);
-                            ((OspfAreaImpl) ospfArea).addToOtherNeighborLsaTxList(networkLsa);
-                        }
-                    }
-                }
-
-                if (((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.BDR ||
-                        ((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.POINT2POINT ||
-                        ((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.DROTHER) {
-                    ospfArea.refreshArea(ospfInterface);
-                }
-                log.debug("LSAQueueConsumer: processRefreshLsa - Flooded SelfOriginated LSA {}",
-                          ((LsaWrapperImpl) wrapper).lsaHeader());
-            }
-        }
-    }
-
-    /**
-     * Process max age LSA.
-     *
-     * @param wrapper LSA wrapper instance
-     */
-    private void processMaxAgeLsa(LsaWrapper wrapper) {
-        //set the destination
-        OspfInterface ospfInterface = wrapper.ospfInterface();
-        if (ospfInterface != null) {
-            LsaHeader header = (LsaHeader) wrapper.ospfLsa().lsaHeader();
-            header.setAge(OspfParameters.MAXAGE);
-            ((LsaWrapperImpl) wrapper).lsaHeader().setAge(OspfParameters.MAXAGE);
-            if (((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.DR ||
-                    ((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.POINT2POINT) {
-                //remove from db
-                ((OspfAreaImpl) ospfArea).addToOtherNeighborLsaTxList(((LsaWrapperImpl) wrapper).lsaHeader());
-                ((OspfAreaImpl) ospfArea).deleteLsa(((LsaWrapperImpl) wrapper).lsaHeader());
-            } else {
-                ((OspfAreaImpl) ospfArea).deleteLsa(((LsaWrapperImpl) wrapper).lsaHeader());
-            }
-            log.debug("LSAQueueConsumer: processMaxAgeLsa - Flooded SelfOriginated-Max Age LSA {}",
-                      ((LsaWrapperImpl) wrapper).lsaHeader());
-        }
-    }
-
-    /**
-     * Sets the channel.
-     *
-     * @param channel channel instance
-     */
-    public void setChannel(Channel channel) {
-        this.channel = channel;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaWrapperImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaWrapperImpl.java
deleted file mode 100644
index 9d747ad..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaWrapperImpl.java
+++ /dev/null
@@ -1,463 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.lsdb;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.onosproject.ospf.controller.LsaWrapper;
-import org.onosproject.ospf.controller.LsdbAge;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfLsa;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.util.OspfParameters;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Wrapper object to store LSA and associated metadata information.
- */
-public class LsaWrapperImpl implements LsaWrapper {
-    private static final Logger log = LoggerFactory.getLogger(LsaWrapperImpl.class);
-    private LsaHeader lsaHeader;
-    private int lsaAgeReceived;
-    private int ageCounterWhenReceived;
-    private boolean isSelfOriginated;
-    private OspfLsaType lsaType;
-    private OspfLsa ospfLsa;
-    private int noReTransmissionLists;
-    private boolean inAnAgeBin;
-    private boolean changedSinceLastFlood;
-    private boolean isSequenceRollOver;
-    private boolean sentReplyForOlderLsa;
-    private boolean checkAge; // Queued for check sum verification
-    private boolean isAging;
-    private String lsaProcessing; //for LSAQueueConsumer processing
-    private int binNumber = -1;
-    private OspfInterface ospfInterface;
-    private LsdbAge lsdbAge;
-    private int ageCounterRollOverWhenAdded;
-
-    public int getAgeCounterRollOverWhenAdded() {
-        return ageCounterRollOverWhenAdded;
-    }
-
-    public void setAgeCounterRollOverWhenAdded(int ageCounterRollOverWhenAdded) {
-        this.ageCounterRollOverWhenAdded = ageCounterRollOverWhenAdded;
-    }
-
-    /**
-     * Gets the LSA type.
-     *
-     * @return LSA type
-     */
-    public OspfLsaType lsaType() {
-        return lsaType;
-    }
-
-    /**
-     * Sets the LSA type.
-     *
-     * @param lsaType LSA type
-     */
-    public void setLsaType(OspfLsaType lsaType) {
-        this.lsaType = lsaType;
-    }
-
-    /**
-     * Gets if self originated or not.
-     *
-     * @return true if self originated else false
-     */
-    public boolean isSelfOriginated() {
-        return isSelfOriginated;
-    }
-
-    /**
-     * Sets if self originated or not.
-     *
-     * @param isSelfOriginated true if self originated else false
-     */
-    public void setIsSelfOriginated(boolean isSelfOriginated) {
-        this.isSelfOriginated = isSelfOriginated;
-    }
-
-    /**
-     * Adds the LSA in the wrapper.
-     *
-     * @param lsaType LSA type
-     * @param ospfLsa LSA instance
-     */
-    public void addLsa(OspfLsaType lsaType, OspfLsa ospfLsa) {
-        this.lsaType = lsaType;
-        this.lsaHeader = (LsaHeader) ospfLsa.lsaHeader();
-        this.ospfLsa = ospfLsa;
-    }
-
-    /**
-     * Age of LSA when received.
-     *
-     * @return Age of LSA when received
-     */
-    public int lsaAgeReceived() {
-        return lsaAgeReceived;
-    }
-
-    /**
-     * Sets the Age of LSA when received.
-     *
-     * @param lsaAgeReceived Age of LSA when received
-     */
-    public void setLsaAgeReceived(int lsaAgeReceived) {
-        this.lsaAgeReceived = lsaAgeReceived;
-    }
-
-    /**
-     * Gets the LSA header.
-     *
-     * @return LSA header instance
-     */
-    public LsaHeader lsaHeader() {
-        lsaHeader.setAge(currentAge());
-        return lsaHeader;
-    }
-
-    /**
-     * Sets LSA header.
-     *
-     * @param lsaHeader LSA header
-     */
-    public void setLsaHeader(LsaHeader lsaHeader) {
-        this.lsaHeader = lsaHeader;
-    }
-
-    /**
-     * Gets the LSA.
-     *
-     * @return LSA instance
-     */
-    public OspfLsa ospfLsa() {
-        LsaHeader lsaHeader = (LsaHeader) ospfLsa;
-        lsaHeader.setAge(currentAge());
-
-        return lsaHeader;
-    }
-
-    /**
-     * Sets the LSA.
-     *
-     * @param ospfLsa LSA instance
-     */
-    public void setOspfLsa(OspfLsa ospfLsa) {
-        this.ospfLsa = ospfLsa;
-    }
-
-    /**
-     * Gets number of LSAs in retransmission list.
-     *
-     * @return number of LSAs in retransmission list
-     */
-    public int noReTransmissionLists() {
-        return noReTransmissionLists;
-    }
-
-    /**
-     * Sets number of LSAs in retransmission list.
-     *
-     * @param noReTransmissionLists number of LSAs in retransmission list
-     */
-    public void setNoReTransmissionLists(int noReTransmissionLists) {
-        this.noReTransmissionLists = noReTransmissionLists;
-    }
-
-    /**
-     * whether LSA in age bin or not.
-     *
-     * @return true if LSA in age bin else false
-     */
-    public boolean isInAnAgeBin() {
-        return inAnAgeBin;
-    }
-
-    /**
-     * Sets whether LSA in age bin or not.
-     *
-     * @param inAnAgeBin whether LSA in age bin or not
-     */
-    public void setInAnAgeBin(boolean inAnAgeBin) {
-        this.inAnAgeBin = inAnAgeBin;
-    }
-
-    /**
-     * Gets if LSA is changed since last flood.
-     *
-     * @return true if LSA is changed since last flood else false
-     */
-    public boolean isChangedSinceLastFlood() {
-        return changedSinceLastFlood;
-    }
-
-    /**
-     * Sets if LSA is changed since last flood.
-     *
-     * @param changedSinceLastFlood true if LSA is changed since last flood else false
-     */
-    public void setChangedSinceLastFlood(boolean changedSinceLastFlood) {
-        this.changedSinceLastFlood = changedSinceLastFlood;
-    }
-
-    /**
-     * Gets if sequence number rolled over.
-     *
-     * @return true if sequence rolled over else false.
-     */
-    public boolean isSequenceRollOver() {
-        return isSequenceRollOver;
-    }
-
-    /**
-     * Sets if sequence number rolled over.
-     *
-     * @param isSequenceRollOver true if sequence rolled over else false
-     */
-    public void setIsSequenceRollOver(boolean isSequenceRollOver) {
-        this.isSequenceRollOver = isSequenceRollOver;
-    }
-
-    /**
-     * Gets is sent reply for older LSA.
-     *
-     * @return true if sent reply for old LSA else false
-     */
-    public boolean isSentReplyForOlderLsa() {
-        return sentReplyForOlderLsa;
-    }
-
-    /**
-     * Sets is sent reply for older lsa.
-     *
-     * @param sentReplyForOlderLsa true if sent reply for older lsa else false
-     */
-    public void setSentReplyForOlderLsa(boolean sentReplyForOlderLsa) {
-        this.sentReplyForOlderLsa = sentReplyForOlderLsa;
-    }
-
-    /**
-     * Gets check age flag.
-     *
-     * @return true check age flag is set else false
-     */
-    public boolean isCheckAge() {
-        return checkAge;
-    }
-
-    /**
-     * Sets check age flag.
-     *
-     * @param checkAge check age flag.
-     */
-    public void setCheckAge(boolean checkAge) {
-        this.checkAge = checkAge;
-    }
-
-    /**
-     * Gets value of aging flag.
-     *
-     * @return is aging flag
-     */
-    public boolean isAging() {
-        return isAging;
-    }
-
-    /**
-     * Sets aging flag.
-     *
-     * @param isAging is aging flag
-     */
-    public void setIsAging(boolean isAging) {
-        this.isAging = isAging;
-    }
-
-    /**
-     * Gets the LSDB age.
-     *
-     * @return LSDB age
-     */
-    public LsdbAge getLsdbAge() {
-        return lsdbAge;
-    }
-
-    /**
-     * Sets the LSDB age.
-     *
-     * @param lsdbAge LSDB age
-     */
-    public void setLsdbAge(LsdbAge lsdbAge) {
-        this.lsdbAge = lsdbAge;
-    }
-
-    /**
-     * Gets the current LSA Age.
-     *
-     * @return LSA age
-     */
-    public int currentAge() {
-
-        int currentAge = 0;
-        //ls age received
-        if (lsdbAge.getAgeCounter() >= ageCounterWhenReceived) {
-            currentAge = lsaAgeReceived + (lsdbAge.getAgeCounter() - ageCounterWhenReceived);
-        } else {
-            currentAge = lsaAgeReceived + ((OspfParameters.MAXAGE + lsdbAge.getAgeCounter())
-                    - ageCounterWhenReceived);
-        }
-
-        if (currentAge >= OspfParameters.MAXAGE) {
-            return OspfParameters.MAXAGE;
-        } else if ((currentAge == lsaAgeReceived) && ageCounterRollOverWhenAdded != lsdbAge.getAgeCounterRollOver()) {
-            return OspfParameters.MAXAGE;
-        }
-
-        return currentAge;
-    }
-
-    /**
-     * Gets the age counter when received.
-     *
-     * @return the age counter when received
-     */
-    public int ageCounterWhenReceived() {
-        return ageCounterWhenReceived;
-    }
-
-    /**
-     * Sets the age counter when received.
-     *
-     * @param ageCounterWhenReceived the age counter when received
-     */
-    public void setAgeCounterWhenReceived(int ageCounterWhenReceived) {
-        this.ageCounterWhenReceived = ageCounterWhenReceived;
-    }
-
-    /**
-     * Gets the LSA process command.
-     *
-     * @return LSA process command
-     */
-    public String lsaProcessing() {
-        return lsaProcessing;
-    }
-
-    /**
-     * Sets the LSA process command.
-     *
-     * @param lsaProcessing LSA process command
-     */
-    public void setLsaProcessing(String lsaProcessing) {
-        this.lsaProcessing = lsaProcessing;
-    }
-
-    /**
-     * Gets bin number.
-     *
-     * @return bin number
-     */
-    public int binNumber() {
-        return binNumber;
-    }
-
-    /**
-     * Sets bin number.
-     *
-     * @param binNumber bin number
-     */
-    public void setBinNumber(int binNumber) {
-        this.binNumber = binNumber;
-    }
-
-
-    /**
-     * Get the OSPF interface.
-     *
-     * @return the OSPF interface.
-     */
-    public OspfInterface ospfInterface() {
-        return ospfInterface;
-    }
-
-    /**
-     * Sets the OSPF interface.
-     *
-     * @param ospfInterface OSPF interface instance
-     */
-    @Override
-    public void setOspfInterface(OspfInterface ospfInterface) {
-        this.ospfInterface = ospfInterface;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("lsaAgeReceived", lsaAgeReceived)
-                .add("ageCounterWhenReceived", ageCounterWhenReceived)
-                .add("isSelfOriginated", isSelfOriginated)
-                .add("lsaHeader", lsaHeader)
-                .add("lsaType", lsaType)
-                .add("ospflsa", ospfLsa)
-                .add("noReTransmissionLists", noReTransmissionLists)
-                .add("inAnAgeBin", inAnAgeBin)
-                .add("changedSinceLasFlood", changedSinceLastFlood)
-                .add("isSequenceRollOver", isSequenceRollOver)
-                .add("sentReplyForOlderLSA", sentReplyForOlderLsa)
-                .add("checkAge", checkAge)
-                .add("isAging", isAging)
-                .add("lsaProcessing", lsaProcessing)
-                .toString();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        LsaWrapperImpl that = (LsaWrapperImpl) o;
-        return Objects.equal(lsaAgeReceived, that.lsaAgeReceived) &&
-                Objects.equal(ageCounterWhenReceived, that.ageCounterWhenReceived) &&
-                Objects.equal(isSelfOriginated, that.isSelfOriginated) &&
-                Objects.equal(lsaHeader, that.lsaHeader) &&
-                Objects.equal(ospfLsa, that.ospfLsa) &&
-                Objects.equal(noReTransmissionLists, that.noReTransmissionLists) &&
-                Objects.equal(inAnAgeBin, that.inAnAgeBin) &&
-                Objects.equal(changedSinceLastFlood, that.changedSinceLastFlood) &&
-                Objects.equal(isSequenceRollOver, that.isSequenceRollOver) &&
-                Objects.equal(sentReplyForOlderLsa, that.sentReplyForOlderLsa) &&
-                Objects.equal(checkAge, that.checkAge) &&
-                Objects.equal(isAging, that.isAging) &&
-                Objects.equal(lsaProcessing, that.lsaProcessing);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(lsaAgeReceived, lsaAgeReceived, ageCounterWhenReceived, isSelfOriginated,
-                                lsaHeader, lsaType, ospfLsa, noReTransmissionLists, inAnAgeBin,
-                                changedSinceLastFlood, isSequenceRollOver, sentReplyForOlderLsa,
-                                checkAge, isAging, lsaProcessing);
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsdbAgeImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsdbAgeImpl.java
deleted file mode 100644
index ea10996..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsdbAgeImpl.java
+++ /dev/null
@@ -1,391 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.lsdb;
-
-import com.google.common.base.Objects;
-import org.jboss.netty.channel.Channel;
-import org.onosproject.ospf.controller.LsaBin;
-import org.onosproject.ospf.controller.LsaWrapper;
-import org.onosproject.ospf.controller.LsdbAge;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.area.OspfAreaImpl;
-import org.onosproject.ospf.protocol.util.OspfParameters;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Map;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Representation of LSDB Aging process.
- */
-public class LsdbAgeImpl implements LsdbAge {
-
-    private static final Logger log =
-            LoggerFactory.getLogger(LsdbAgeImpl.class);
-    protected static int ageCounter = 0;
-    private InternalAgeTimer dbAgeTimer;
-    private ScheduledExecutorService exServiceage;
-    // creating age bins of MAXAGE
-    private Map<Integer, LsaBin> ageBins = new ConcurrentHashMap<>(OspfParameters.MAXAGE);
-    private LsaBin maxAgeBin = new LsaBinImpl(OspfParameters.MAXAGE);
-    private int ageCounterRollOver = 0;
-    private Channel channel = null;
-    private LsaQueueConsumer queueConsumer = null;
-    private BlockingQueue<LsaWrapper> lsaQueue = new ArrayBlockingQueue(1024);
-    private OspfArea ospfArea = null;
-
-
-    /**
-     * Creates an instance of LSDB age.
-     *
-     * @param ospfArea OSPF area instance
-     */
-    public LsdbAgeImpl(OspfArea ospfArea) {
-        // create LSBin's in the HashMap.
-        for (int i = 0; i < OspfParameters.MAXAGE; i++) {
-            LsaBin lsaBin = new LsaBinImpl(i);
-            ageBins.put(i, lsaBin);
-        }
-        this.ospfArea = ospfArea;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        LsdbAgeImpl that = (LsdbAgeImpl) o;
-        return Objects.equal(ageBins, that.ageBins) &&
-                Objects.equal(ageCounter, that.ageCounter) &&
-                Objects.equal(ageCounterRollOver, that.ageCounterRollOver) &&
-                Objects.equal(lsaQueue, that.lsaQueue);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(ageBins, ageCounter, ageCounterRollOver, lsaQueue);
-    }
-
-    /**
-     * Adds LSA to bin.
-     *
-     * @param binKey key to store in bin
-     * @param lsaBin LSA bin instance
-     */
-    @Override
-    public void addLsaBin(Integer binKey, LsaBin lsaBin) {
-        if (!ageBins.containsKey(binKey)) {
-            ageBins.put(binKey, lsaBin);
-        }
-    }
-
-    /**
-     * Gets LSA from Bin.
-     *
-     * @param binKey key
-     * @return bin instance
-     */
-    @Override
-    public LsaBin getLsaBin(Integer binKey) {
-
-        return ageBins.get(binKey);
-    }
-
-    /**
-     * Adds the LSA to maxAge bin.
-     *
-     * @param key     key
-     * @param wrapper wrapper instance
-     */
-    @Override
-    public void addLsaToMaxAgeBin(String key, LsaWrapper wrapper) {
-        maxAgeBin.addOspfLsa(key, wrapper);
-    }
-
-    /**
-     * Removes LSA from Bin.
-     *
-     * @param lsaWrapper wrapper instance
-     */
-    @Override
-    public void removeLsaFromBin(LsaWrapper lsaWrapper) {
-        if (ageBins.containsKey(lsaWrapper.binNumber())) {
-            LsaBin lsaBin = ageBins.get(lsaWrapper.binNumber());
-            lsaBin.removeOspfLsa(((OspfAreaImpl) ospfArea).getLsaKey(((LsaWrapperImpl)
-                    lsaWrapper).lsaHeader()), lsaWrapper);
-        }
-    }
-
-    /**
-     * Starts the aging timer and queue consumer.
-     */
-    @Override
-    public void startDbAging() {
-        startDbAgeTimer();
-        queueConsumer = new LsaQueueConsumer(lsaQueue, channel, ospfArea);
-        new Thread(queueConsumer).start();
-    }
-
-
-    /**
-     * Gets called every 1 second as part of the timer.
-     */
-    @Override
-    public void ageLsaAndFlood() {
-        //every 5 mins checksum validation
-        checkAges();
-        //every 30 mins - flood LSA
-        refreshLsa();
-        //every 60 mins - flood LSA
-        maxAgeLsa();
-
-        if (ageCounter == OspfParameters.MAXAGE) {
-            ageCounter = 0;
-            ageCounterRollOver++;
-        } else {
-            //increment age bin
-            ageCounter++;
-        }
-    }
-
-    /**
-     * If the LSA have completed the MaxAge - they are moved called stop aging and flooded.
-     */
-    @Override
-    public void maxAgeLsa() {
-        if (ageCounter == 0) {
-            return;
-        }
-        //Get from Age Bins
-        LsaBin lsaBin = ageBins.get(ageCounter - 1);
-        if (lsaBin == null) {
-            return;
-        }
-        Map lsaBinMap = lsaBin.listOfLsa();
-        for (Object key : lsaBinMap.keySet()) {
-            LsaWrapper lsa = (LsaWrapper) lsaBinMap.get(key);
-            if (lsa.currentAge() == OspfParameters.MAXAGE) {
-                lsa.setLsaProcessing(OspfParameters.MAXAGELSA);
-                log.debug("Lsa picked for maxage flooding. Age Counter: {}, AgeCounterRollover: {}, " +
-                                  "AgeCounterRollover WhenAddedToDb: {}, LSA Type: {}, LSA Key: {}",
-                          ageCounter, ageCounterRollOver, lsa.currentAge(), lsa.lsaType(), key);
-                //add it to lsaQueue for processing
-                try {
-                    lsaQueue.put(lsa);
-                    //remove from bin
-                    lsaBin.removeOspfLsa((String) key, lsa);
-                } catch (InterruptedException e) {
-                    Thread.currentThread().interrupt();
-                    log.debug("Error::LSDBAge::maxAgeLsa::{}", e.getMessage());
-                }
-            }
-        }
-
-        //Get from maxAgeBin
-        Map lsaMaxAgeBinMap = maxAgeBin.listOfLsa();
-        for (Object key : lsaMaxAgeBinMap.keySet()) {
-            LsaWrapper lsa = (LsaWrapper) lsaMaxAgeBinMap.get(key);
-            lsa.setLsaProcessing(OspfParameters.MAXAGELSA);
-            log.debug("Lsa picked for maxage flooding. Age Counter: {}, LSA Type: {}, LSA Key: {}",
-                      ageCounter, lsa.lsaType(), key);
-            //add it to lsaQueue for processing
-            try {
-                lsaQueue.put(lsa);
-                //remove from bin
-                maxAgeBin.removeOspfLsa((String) key, lsa);
-            } catch (InterruptedException e) {
-                Thread.currentThread().interrupt();
-                log.debug("Error::LSDBAge::maxAgeLsa::{}", e.getMessage());
-            }
-        }
-    }
-
-
-    /*
-     * If the LSA is in age bin of 1800 - it's pushed into refresh list.
-     */
-    @Override
-    public void refreshLsa() {
-        int binNumber;
-        if (ageCounter < OspfParameters.LSREFRESHTIME) {
-            binNumber = ageCounter + OspfParameters.LSREFRESHTIME;
-        } else {
-            binNumber = ageCounter - OspfParameters.LSREFRESHTIME;
-        }
-        LsaBin lsaBin = ageBins.get(binNumber);
-        if (lsaBin == null) {
-            return;
-        }
-        Map lsaBinMap = lsaBin.listOfLsa();
-        for (Object key : lsaBinMap.keySet()) {
-            LsaWrapper lsa = (LsaWrapper) lsaBinMap.get(key);
-            try {
-                if (lsa.isSelfOriginated()) {
-                    log.debug("Lsa picked for refreshLsa. binNumber: {}, LSA Type: {}, LSA Key: {}",
-                              binNumber, lsa.lsaType(), key);
-                    lsa.setLsaProcessing(OspfParameters.REFRESHLSA);
-                    lsaQueue.put(lsa);
-                    //remove from bin
-                    lsaBin.removeOspfLsa((String) key, lsa);
-                }
-            } catch (InterruptedException e) {
-                Thread.currentThread().interrupt();
-                log.debug("Error::LSDBAge::refreshLsa::{}", e.getMessage());
-            }
-        }
-    }
-
-    /**
-     * Verify the checksum for the LSAs who are in bins of 300 and it's multiples.
-     */
-    public void checkAges() {
-        //evry 5 min age counter + multiples of 300
-        for (int age = OspfParameters.CHECKAGE; age < OspfParameters.MAXAGE;
-             age += OspfParameters.CHECKAGE) {
-            LsaBin lsaBin = ageBins.get(age2Bin(age));
-            if (lsaBin == null) {
-                continue;
-            }
-            Map lsaBinMap = lsaBin.listOfLsa();
-            for (Object key : lsaBinMap.keySet()) {
-                LsaWrapper lsa = (LsaWrapper) lsaBinMap.get(key);
-                lsa.setLsaProcessing(OspfParameters.VERIFYCHECKSUM);
-                try {
-                    lsaQueue.put(lsa);
-                } catch (InterruptedException e) {
-                    Thread.currentThread().interrupt();
-                    log.debug("Error::LSDBAge::checkAges::{}", e.getMessage());
-                }
-            }
-        }
-    }
-
-
-    /**
-     * Starts DB age timer method start the aging task.
-     */
-    private void startDbAgeTimer() {
-        log.debug("OSPFNbr::startWaitTimer");
-        dbAgeTimer = new InternalAgeTimer();
-        //from 1 sec
-        exServiceage = Executors.newSingleThreadScheduledExecutor();
-        exServiceage.scheduleAtFixedRate(dbAgeTimer, OspfParameters.AGECOUNTER,
-                                         OspfParameters.AGECOUNTER, TimeUnit.SECONDS);
-    }
-
-    /**
-     * Stops the aging task.
-     */
-    private void stopDbAgeTimer() {
-        log.debug("OSPFNbr::stopWaitTimer ");
-        exServiceage.shutdown();
-    }
-
-
-    /**
-     * Gets the netty channel.
-     *
-     * @return netty channel
-     */
-    public Channel getChannel() {
-        return channel;
-    }
-
-    /**
-     * Sets the netty channel.
-     *
-     * @param channel netty channel
-     */
-    public void setChannel(Channel channel) {
-
-        this.channel = channel;
-        if (queueConsumer != null) {
-            queueConsumer.setChannel(channel);
-        }
-    }
-
-    /**
-     * Gets the age counter.
-     *
-     * @return ageCounter
-     */
-    @Override
-    public int getAgeCounter() {
-        return ageCounter;
-    }
-
-    /**
-     * Gets the age counter roll over value.
-     *
-     * @return the age counter roll over value
-     */
-    @Override
-    public int getAgeCounterRollOver() {
-        return ageCounterRollOver;
-    }
-
-    /**
-     * Gets the max age bin.
-     *
-     * @return lsa bin instance
-     */
-    @Override
-    public LsaBin getMaxAgeBin() {
-        return maxAgeBin;
-    }
-
-    /**
-     * Gets the bin number.
-     *
-     * @param x Can be either age or ageCounter
-     * @return bin number.
-     */
-    @Override
-    public int age2Bin(int x) {
-        if (x <= ageCounter) {
-            return (ageCounter - x);
-        } else {
-            return ((OspfParameters.MAXAGE - 1) + (ageCounter - x));
-        }
-    }
-
-    /**
-     * Runnable task which runs every second and calls aging process.
-     */
-    private class InternalAgeTimer implements Runnable {
-
-        /**
-         * Constructor.
-         */
-        InternalAgeTimer() {
-            log.debug("Starts::LsdbAge::AgeTimer...!!! ");
-        }
-
-        @Override
-        public void run() {
-            ageLsaAndFlood();
-        }
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/OspfLsdbImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/OspfLsdbImpl.java
deleted file mode 100644
index a494afa..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/OspfLsdbImpl.java
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.lsdb;
-
-import com.google.common.base.Objects;
-import org.onosproject.ospf.controller.LsaBin;
-import org.onosproject.ospf.controller.LsaWrapper;
-import org.onosproject.ospf.controller.LsdbAge;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.controller.OspfLsdb;
-import org.onosproject.ospf.controller.area.OspfAreaImpl;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.util.OspfParameters;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-/**
- * Represents the Link State Database.
- */
-public class OspfLsdbImpl implements OspfLsdb {
-    private static final Logger log = LoggerFactory.getLogger(OspfLsdbImpl.class);
-    private Map routerLsas = new HashMap();
-    private Map networkLsas = new HashMap();
-    private Map summaryLsas = new HashMap();
-    private Map asbrSummaryLSAs = new HashMap();
-    private Map opaque9Lsas = new HashMap();
-    private Map opaque10Lsas = new HashMap();
-    private Map opaque11Lsas = new HashMap();
-    private Map externalLsas = new HashMap();
-    private long routerLsaSeqNo = OspfParameters.STARTLSSEQUENCENUM;
-    private long networkLsaSeqNo = OspfParameters.STARTLSSEQUENCENUM;
-    private LsdbAge lsdbAge = null;
-    private OspfArea ospfArea = null;
-
-
-    /**
-     * Creates an instance of OSPF LSDB.
-     *
-     * @param ospfArea area instance
-     */
-    public OspfLsdbImpl(OspfArea ospfArea) {
-        this.ospfArea = ospfArea;
-        lsdbAge = new LsdbAgeImpl(ospfArea);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        OspfLsdbImpl that = (OspfLsdbImpl) o;
-        return Objects.equal(routerLsas.size(), that.routerLsas.size()) &&
-                Objects.equal(networkLsas.size(), that.networkLsas.size()) &&
-                Objects.equal(summaryLsas.size(), that.summaryLsas.size()) &&
-                Objects.equal(asbrSummaryLSAs.size(), that.asbrSummaryLSAs.size()) &&
-                Objects.equal(lsdbAge, that.lsdbAge) &&
-                Objects.equal(routerLsaSeqNo, that.routerLsaSeqNo) &&
-                Objects.equal(networkLsaSeqNo, that.networkLsaSeqNo);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(routerLsas, networkLsas, summaryLsas, asbrSummaryLSAs, lsdbAge,
-                                routerLsaSeqNo, networkLsaSeqNo);
-    }
-
-    /**
-     * Initializes the link state database.
-     */
-    public void initializeDb() {
-        lsdbAge.startDbAging();
-    }
-
-    /**
-     * Returns all LSA Headers (Router and Summary) in a Vector.
-     *
-     * @param excludeMaxAgeLsa exclude the max age LSAs
-     * @param isOpaqueCapable  is opaque capable or not
-     * @return List of LSA headers
-     */
-    public List getAllLsaHeaders(boolean excludeMaxAgeLsa, boolean isOpaqueCapable) {
-        List summList = new CopyOnWriteArrayList();
-        addLsaToHeaderList(summList, excludeMaxAgeLsa, routerLsas);
-        addLsaToHeaderList(summList, excludeMaxAgeLsa, networkLsas);
-        addLsaToHeaderList(summList, excludeMaxAgeLsa, summaryLsas);
-        addLsaToHeaderList(summList, excludeMaxAgeLsa, asbrSummaryLSAs);
-        addLsaToHeaderList(summList, excludeMaxAgeLsa, externalLsas);
-        if (isOpaqueCapable) {
-            addLsaToHeaderList(summList, excludeMaxAgeLsa, opaque9Lsas);
-            addLsaToHeaderList(summList, excludeMaxAgeLsa, opaque10Lsas);
-            addLsaToHeaderList(summList, excludeMaxAgeLsa, opaque11Lsas);
-        }
-
-        return summList;
-    }
-
-    /**
-     * Adds the LSAs to summary list.
-     *
-     * @param summList         summary list
-     * @param excludeMaxAgeLsa exclude max age LSA
-     * @param lsaMap           map of LSA
-     */
-    private void addLsaToHeaderList(List summList, boolean excludeMaxAgeLsa, Map lsaMap) {
-        Iterator slotVals = lsaMap.values().iterator();
-        while (slotVals.hasNext()) {
-            LsaWrapper wrapper = (LsaWrapper) slotVals.next();
-            if (excludeMaxAgeLsa) {
-                //if current age of lsa is max age or lsa present in Max Age bin
-                if (wrapper.currentAge() != OspfParameters.MAXAGE &&
-                        lsdbAge.getMaxAgeBin().ospfLsa(((OspfAreaImpl)
-                                ospfArea).getLsaKey(((LsaWrapperImpl) wrapper).lsaHeader())) == null) {
-                    addToList(wrapper, summList);
-                }
-            } else {
-                addToList(wrapper, summList);
-            }
-        }
-    }
-
-    /**
-     * Adds the LSWrapper to summary list.
-     *
-     * @param wrapper  LSA wrapper instance
-     * @param summList LSA summary list
-     */
-    private void addToList(LsaWrapper wrapper, List summList) {
-        LsaHeader header = (LsaHeader) wrapper.ospfLsa();
-        //set the current age
-        header.setAge(wrapper.currentAge());
-        summList.add(header);
-    }
-
-    /**
-     * Gets the LSDB LSA key from Lsa Header.
-     *
-     * @param lsaHeader LSA header instance
-     * @return key
-     */
-    public String getLsaKey(LsaHeader lsaHeader) {
-        String lsaKey = "";
-        switch (lsaHeader.lsType()) {
-            case OspfParameters.LINK_LOCAL_OPAQUE_LSA:
-            case OspfParameters.AREA_LOCAL_OPAQUE_LSA:
-            case OspfParameters.AS_OPAQUE_LSA:
-                OpaqueLsaHeader header = (OpaqueLsaHeader) lsaHeader;
-                lsaKey = lsaHeader.lsType() + "-" + header.opaqueType() + header.opaqueId() + "-" +
-                        lsaHeader.advertisingRouter();
-                break;
-            case OspfParameters.ROUTER:
-            case OspfParameters.NETWORK:
-            case OspfParameters.ASBR_SUMMARY:
-            case OspfParameters.SUMMARY:
-            case OspfParameters.EXTERNAL_LSA:
-                lsaKey = lsaHeader.lsType() + "-" + lsaHeader.linkStateId() + "-" +
-                        lsaHeader.advertisingRouter();
-                break;
-            default:
-                log.debug("Unknown LSA type..!!!");
-                break;
-        }
-
-        return lsaKey;
-    }
-
-    /**
-     * Gets wrapper instance in LSDB.
-     *
-     * @param lsaHeader LSA header instance.
-     * @return LSA Wrapper instance.
-     */
-    public LsaWrapper lsaLookup(LsaHeader lsaHeader) {
-
-        return findLsa(lsaHeader.lsType(), getLsaKey(lsaHeader));
-    }
-
-    /**
-     * Finds the LSA from appropriate maps.
-     *
-     * @param lsType type of LSA
-     * @param lsaKey key
-     * @return LSA wrapper object
-     */
-    public LsaWrapper findLsa(int lsType, String lsaKey) {
-        LsaWrapper lsaWrapper = null;
-
-        switch (lsType) {
-            case OspfParameters.LINK_LOCAL_OPAQUE_LSA:
-                lsaWrapper = (LsaWrapper) opaque9Lsas.get(lsaKey);
-                break;
-            case OspfParameters.AREA_LOCAL_OPAQUE_LSA:
-                lsaWrapper = (LsaWrapper) opaque10Lsas.get(lsaKey);
-                break;
-            case OspfParameters.AS_OPAQUE_LSA:
-                lsaWrapper = (LsaWrapper) opaque11Lsas.get(lsaKey);
-                break;
-            case OspfParameters.ROUTER:
-                lsaWrapper = (LsaWrapper) routerLsas.get(lsaKey);
-                break;
-            case OspfParameters.NETWORK:
-                lsaWrapper = (LsaWrapper) networkLsas.get(lsaKey);
-                break;
-            case OspfParameters.ASBR_SUMMARY:
-                lsaWrapper = (LsaWrapper) asbrSummaryLSAs.get(lsaKey);
-                break;
-            case OspfParameters.SUMMARY:
-                lsaWrapper = (LsaWrapper) summaryLsas.get(lsaKey);
-                break;
-            case OspfParameters.EXTERNAL_LSA:
-                lsaWrapper = (LsaWrapper) externalLsas.get(lsaKey);
-                break;
-            default:
-                log.debug("Unknown LSA type..!!!");
-                break;
-        }
-
-        //set the current age
-        if (lsaWrapper != null) {
-            //set the current age
-            ((LsaWrapperImpl) lsaWrapper).lsaHeader().setAge(lsaWrapper.currentAge());
-            ((LsaHeader) lsaWrapper.ospfLsa()).setAge(lsaWrapper.currentAge());
-        }
-
-        return lsaWrapper;
-    }
-
-
-    /**
-     * Installs a new self-originated LSA if possible.
-     * Return true if installing was successful else false.
-     *
-     * @param newLsa           LSA header instance
-     * @param isSelfOriginated is self originated or not
-     * @param ospfInterface    OSPF interface instance
-     * @return true if successfully added
-     */
-    public boolean addLsa(LsaHeader newLsa, boolean isSelfOriginated, OspfInterface ospfInterface) {
-
-        LsaWrapperImpl lsaWrapper = new LsaWrapperImpl();
-        lsaWrapper.setLsaType(newLsa.getOspfLsaType());
-        lsaWrapper.setOspfLsa(newLsa);
-        lsaWrapper.setLsaHeader(newLsa);
-        lsaWrapper.setLsaAgeReceived(newLsa.age());
-        lsaWrapper.setAgeCounterWhenReceived(lsdbAge.getAgeCounter());
-        lsaWrapper.setAgeCounterRollOverWhenAdded(lsdbAge.getAgeCounterRollOver());
-        lsaWrapper.setIsSelfOriginated(isSelfOriginated);
-        lsaWrapper.setIsSelfOriginated(isSelfOriginated);
-        lsaWrapper.setOspfInterface(ospfInterface);
-        lsaWrapper.setLsdbAge(lsdbAge);
-        addLsa(lsaWrapper);
-
-        log.debug("Added LSA In LSDB: {}", newLsa);
-
-        return true;
-    }
-
-    /**
-     * Installs a new self-originated LSA if possible.
-     * Return true if installing was successful else false.
-     * Adding LSA In cases
-     * 1) New Self Originated LSA based on change in topology
-     * 2) New Self Originated LSA because of LSRefresh
-     * 2) New LSA received via Link State Update Packet
-     *
-     * @param newLsa LSA wrapper instance
-     * @return true if added successfully
-     */
-    private boolean addLsa(LsaWrapper newLsa) {
-        // adding an LSA - verify if it's old or new
-        // verify min failed
-        // to verify if it's a new LSA or updating the old LSA .
-        // fetch the LSA Type
-        // verify if the LSA age is ! Max Age
-        // a) it is  received during the flooding process (Section 13)
-        // b) it is originated by the router itself (Section 12.4)
-        // start aging .
-        String key = getLsaKey(((LsaWrapperImpl) newLsa).lsaHeader());
-        //Remove the lsa from bin if exist. we will be adding it in new bin based on the current age.
-        removeLsaFromBin(lsaLookup(((LsaWrapperImpl) newLsa).lsaHeader()));
-
-        switch (((LsaWrapperImpl) newLsa).lsaHeader().lsType()) {
-
-            case OspfParameters.LINK_LOCAL_OPAQUE_LSA:
-                opaque9Lsas.put(key, newLsa);
-                break;
-            case OspfParameters.AREA_LOCAL_OPAQUE_LSA:
-                opaque10Lsas.put(key, newLsa);
-                break;
-            case OspfParameters.AS_OPAQUE_LSA:
-                opaque11Lsas.put(key, newLsa);
-                break;
-            case OspfParameters.ROUTER:
-                routerLsas.put(key, newLsa);
-                break;
-            case OspfParameters.NETWORK:
-                networkLsas.put(key, newLsa);
-                break;
-            case OspfParameters.ASBR_SUMMARY:
-                asbrSummaryLSAs.put(key, newLsa);
-                break;
-            case OspfParameters.SUMMARY:
-                summaryLsas.put(key, newLsa);
-                break;
-            case OspfParameters.EXTERNAL_LSA:
-                externalLsas.put(key, newLsa);
-                break;
-            default:
-                log.debug("Unknown LSA type to add..!!!");
-                break;
-        }
-        //add it to bin
-        Integer binNumber = lsdbAge.age2Bin(((LsaWrapperImpl) newLsa).lsaHeader().age());
-        LsaBin lsaBin = lsdbAge.getLsaBin(binNumber);
-        if (lsaBin != null) {
-            //remove from existing
-            newLsa.setBinNumber(binNumber);
-            lsaBin.addOspfLsa(key, newLsa);
-            lsdbAge.addLsaBin(binNumber, lsaBin);
-            log.debug("Added Type {} LSA to LSDB and LSABin[{}], Age of LSA {}", newLsa.lsaType(),
-                      binNumber, ((LsaWrapperImpl) newLsa).lsaHeader().age());
-        }
-
-        return false;
-    }
-
-    /**
-     * Adds the LSA to maxAge bin.
-     *
-     * @param key     key
-     * @param wrapper LSA wrapper instance
-     */
-    public void addLsaToMaxAgeBin(String key, Object wrapper) {
-        lsdbAge.addLsaToMaxAgeBin(key, (LsaWrapper) wrapper);
-    }
-
-    /**
-     * Removes LSA from Bin.
-     *
-     * @param lsaWrapper LSA wrapper instance
-     */
-    public void removeLsaFromBin(Object lsaWrapper) {
-        if (lsaWrapper != null) {
-            lsdbAge.removeLsaFromBin((LsaWrapper) lsaWrapper);
-        }
-    }
-
-    /**
-     * RFC 2328 - Section 13.1.  Determining which LSA is newer.
-     *
-     * @param lsa1 LSA instance
-     * @param lsa2 LSA instance
-     * @return string status
-     */
-    public String isNewerOrSameLsa(LsaHeader lsa1, LsaHeader lsa2) {
-        if (lsa1.lsSequenceNo() > lsa2.lsSequenceNo()) {
-            return "latest";
-        } else if (lsa1.lsSequenceNo() < lsa2.lsSequenceNo()) {
-            return "old";
-        } else if (lsa1.lsSequenceNo() == lsa2.lsSequenceNo()) {
-            if (lsa1.lsCheckSum() > lsa2.lsCheckSum()) {
-                return "latest";
-            } else if (lsa1.lsCheckSum() < lsa2.lsCheckSum()) {
-                return "old";
-            } else if (lsa1.lsCheckSum() == lsa2.lsCheckSum()) {
-                if (lsa1.age() == lsa2.age()) {
-                    return "same";
-                } else if (lsa1.age() == OspfParameters.MAXAGE) {
-                    return "latest";
-                } else if (lsa2.age() == OspfParameters.MAXAGE) {
-                    return "old";
-                } else if (OspfParameters.MAXAGEDIFF == (lsa1.age() - lsa2.age())) {
-                    if (lsa1.age() < lsa2.age()) {
-                        return "latest";
-                    } else {
-                        return "old";
-                    }
-                } else {
-                    return "same";
-                }
-            }
-        }
-
-        return "";
-    }
-
-    /**
-     * Gets the sequence number.
-     *
-     * @param lsaType type of LSA
-     * @return sequence number
-     */
-    public long getLsSequenceNumber(OspfLsaType lsaType) {
-        switch (lsaType) {
-            case ROUTER:
-                return routerLsaSeqNo++;
-            case NETWORK:
-                return networkLsaSeqNo++;
-            default:
-                return OspfParameters.STARTLSSEQUENCENUM;
-        }
-    }
-
-    /**
-     * Deletes the given LSA.
-     *
-     * @param lsaHeader LSA header instance
-     */
-    public void deleteLsa(LsaHeader lsaHeader) {
-
-        String lsaKey = getLsaKey(lsaHeader);
-        switch (lsaHeader.lsType()) {
-            case OspfParameters.LINK_LOCAL_OPAQUE_LSA:
-                opaque9Lsas.remove(lsaKey);
-                break;
-            case OspfParameters.AREA_LOCAL_OPAQUE_LSA:
-                opaque10Lsas.remove(lsaKey);
-                break;
-            case OspfParameters.AS_OPAQUE_LSA:
-                opaque11Lsas.remove(lsaKey);
-                break;
-            case OspfParameters.ROUTER:
-                routerLsas.remove(lsaKey);
-                break;
-            case OspfParameters.NETWORK:
-                networkLsas.remove(lsaKey);
-                break;
-            case OspfParameters.ASBR_SUMMARY:
-                asbrSummaryLSAs.remove(lsaKey);
-                break;
-            case OspfParameters.SUMMARY:
-                summaryLsas.remove(lsaKey);
-                break;
-            case OspfParameters.EXTERNAL_LSA:
-                externalLsas.remove(lsaKey);
-                break;
-            default:
-                log.debug("Unknown LSA type to delete..!!!");
-                break;
-        }
-    }
-
-    /**
-     * Sets sequence number.
-     *
-     * @param routerLsaSeqNo sequence number
-     */
-    public void setRouterLsaSeqNo(long routerLsaSeqNo) {
-        this.routerLsaSeqNo = routerLsaSeqNo;
-    }
-
-    /**
-     * Sets sequence number.
-     *
-     * @param networkLsaSeqNo sequence number
-     */
-    public void setNetworkLsaSeqNo(long networkLsaSeqNo) {
-        this.networkLsaSeqNo = networkLsaSeqNo;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/package-info.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/package-info.java
deleted file mode 100644
index 6c8f422..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the OSPF Link state database and Ageing.
- */
-package org.onosproject.ospf.controller.lsdb;
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfEligibleRouter.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfEligibleRouter.java
deleted file mode 100644
index 3e8acda..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfEligibleRouter.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.util;
-
-import org.onlab.packet.Ip4Address;
-
-/**
- * Represents a router who is eligible for DR election.
- */
-public class OspfEligibleRouter {
-
-    private Ip4Address ipAddress;
-    private Ip4Address routerId;
-    private int routerPriority;
-    private boolean isDr;
-    private boolean isBdr;
-
-    /**
-     * Creates an instance.
-     * Initialize IP address of eligible router.
-     */
-    public OspfEligibleRouter() {
-        ipAddress = Ip4Address.valueOf("0.0.0.0");
-    }
-
-    /**
-     * Gets the value of IP address.
-     *
-     * @return IP address
-     */
-    public Ip4Address getIpAddress() {
-        return ipAddress;
-    }
-
-    /**
-     * Sets the value of IP address.
-     *
-     * @param ipAddress IP address
-     */
-    public void setIpAddress(Ip4Address ipAddress) {
-        this.ipAddress = ipAddress;
-    }
-
-    /**
-     * Gets the value of router id.
-     *
-     * @return router id.
-     */
-    public Ip4Address getRouterId() {
-        return routerId;
-    }
-
-    /**
-     * Sets the value of router id.
-     *
-     * @param routerId router id
-     */
-    public void setRouterId(Ip4Address routerId) {
-        this.routerId = routerId;
-    }
-
-    /**
-     * Gets the value of router priority.
-     *
-     * @return router priority.
-     */
-    public int getRouterPriority() {
-        return routerPriority;
-    }
-
-    /**
-     * Sets the value of router priority.
-     *
-     * @param routerPriority router priority
-     */
-    public void setRouterPriority(int routerPriority) {
-        this.routerPriority = routerPriority;
-    }
-
-    /**
-     * Gets whether the router is DR.
-     *
-     * @return boolean true if router is DR else return false.
-     */
-    public boolean isDr() {
-        return isDr;
-    }
-
-    /**
-     * Sets the router is DR or not.
-     *
-     * @param isDr router is DR or not
-     */
-    public void setIsDr(boolean isDr) {
-        this.isDr = isDr;
-    }
-
-    /**
-     * Gets whether the router is BDR or not.
-     *
-     * @return boolean true if router is Bdr else return false.
-     */
-    public boolean isBdr() {
-        return isBdr;
-    }
-
-    /**
-     * Sets the router is BDR or not.
-     *
-     * @param isBdr the router is BDR or not
-     */
-    public void setIsBdr(boolean isBdr) {
-        this.isBdr = isBdr;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfInterfaceType.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfInterfaceType.java
deleted file mode 100644
index c173884..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfInterfaceType.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.util;
-
-/**
- * Enum represents OSPF interface types.
- */
-public enum OspfInterfaceType {
-
-    POINT_TO_POINT(1),
-    BROADCAST(2),
-    VIRTUAL(3);
-
-    private int value;
-
-    /**
-     * Creates an instance.
-     *
-     * @param value value represents interface type
-     */
-    OspfInterfaceType(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Gets value represents interface type.
-     *
-     * @return value represents interface type
-     */
-    public int value() {
-        return value;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfLinkType.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfLinkType.java
deleted file mode 100644
index ad38cea..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfLinkType.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.util;
-
-/**
- * Enum represents OSPF link type.
- */
-public enum OspfLinkType {
-
-    /**
-     * Indicates a point-to-point connection to another router.
-     */
-    POINT_TO_POINT,
-
-    /**
-     * Indicates a connection to a transit network.
-     */
-    TO_TRANSIT_NET,
-
-    /**
-     * Indicates a connection to a stub network.
-     */
-    TO_STUB_NET,
-
-    /**
-     * Indicates a Virtual link to another area border router.
-     */
-    VIRTUAL_LINK
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/package-info.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/package-info.java
deleted file mode 100644
index e1fad0d..0000000
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the OSPF utilities.
- */
-package org.onosproject.ospf.controller.util;
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/ConfigurationTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/ConfigurationTest.java
deleted file mode 100644
index 9583e17..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/ConfigurationTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.area;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.controller.OspfProcess;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for Configuration.
- */
-public class ConfigurationTest {
-    private Configuration configuration;
-    private List<OspfProcess> ospfProcesses;
-    private List result;
-    private OspfProcessImpl ospfProcessImpl;
-
-    @Before
-    public void setUp() throws Exception {
-        configuration = new Configuration();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        configuration = null;
-        ospfProcessImpl = new OspfProcessImpl();
-        result = null;
-        ospfProcesses = null;
-    }
-
-    /**
-     * Tests getProcesses() getter method.
-     */
-    @Test
-    public void testGetOspfProcess() throws Exception {
-        ospfProcesses = new ArrayList();
-        ospfProcesses.add(ospfProcessImpl);
-        ospfProcesses.add(ospfProcessImpl);
-        configuration.setProcesses(ospfProcesses);
-        result = configuration.getProcesses();
-        assertThat(result.size(), is(2));
-    }
-
-    /**
-     * Tests setProcesses() setter method.
-     */
-    @Test
-    public void testSetOspfProcess() throws Exception {
-        ospfProcesses = new ArrayList();
-        ospfProcesses.add(ospfProcessImpl);
-        ospfProcesses.add(ospfProcessImpl);
-        configuration.setProcesses(ospfProcesses);
-        result = configuration.getProcesses();
-        assertThat(result.size(), is(2));
-    }
-
-    /**
-     * Tests getMethod() getter method.
-     */
-    @Test
-    public void testGetMethod() throws Exception {
-        configuration.setMethod("method");
-        assertThat(configuration.getMethod(), is("method"));
-    }
-
-    /**
-     * Tests setMethod() setter method.
-     */
-    @Test
-    public void testSetMethod() throws Exception {
-        configuration.setMethod("method");
-        assertThat(configuration.getMethod(), is("method"));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(configuration.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfAreaAddressRangeImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfAreaAddressRangeImplTest.java
deleted file mode 100644
index d294db1..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfAreaAddressRangeImplTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.area;
-
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfAreaAddressRange;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for OspfAreaAddressRangeImpl.
- */
-public class OspfAreaAddressRangeImplTest {
-
-    private OspfAreaAddressRange ospfAreaAddressRange;
-    private int result;
-    private String result1;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfAreaAddressRange = new OspfAreaAddressRangeImpl();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfAreaAddressRange = null;
-    }
-
-    /**
-     * Tests ipAddress() getter method.
-     */
-    @Test
-    public void testGetIpAddress() throws Exception {
-        ospfAreaAddressRange.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfAreaAddressRange.ipAddress(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests ipAddress() setter method.
-     */
-    @Test
-    public void testSetIpAddress() throws Exception {
-        ospfAreaAddressRange.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfAreaAddressRange.ipAddress(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests mask() getter method.
-     */
-    @Test
-    public void testGetMask() throws Exception {
-        ospfAreaAddressRange.setMask("1.1.1.1");
-        assertThat(ospfAreaAddressRange.mask(), is("1.1.1.1"));
-    }
-
-    /**
-     * Tests mask() setter method.
-     */
-    @Test
-    public void testSetMask() throws Exception {
-        ospfAreaAddressRange.setMask("1.1.1.1");
-        assertThat(ospfAreaAddressRange.mask(), is("1.1.1.1"));
-    }
-
-    /**
-     * Tests isAdvertise() getter method.
-     */
-    @Test
-    public void testIsAdvertise() throws Exception {
-        ospfAreaAddressRange.setAdvertise(true);
-        assertThat(ospfAreaAddressRange.isAdvertise(), is(true));
-    }
-
-    /**
-     * Tests isAdvertise() setter method.
-     */
-    @Test
-    public void testSetAdvertise() throws Exception {
-        ospfAreaAddressRange.setAdvertise(true);
-        assertThat(ospfAreaAddressRange.isAdvertise(), is(true));
-    }
-
-    /**
-     * Tests equals() method.
-     */
-    @Test
-    public void testEquals() throws Exception {
-        assertThat(ospfAreaAddressRange.equals(new OspfAreaAddressRangeImpl()), is(true));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashCode() throws Exception {
-        result = ospfAreaAddressRange.hashCode();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        result1 = ospfAreaAddressRange.toString();
-        assertThat(result1, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfAreaImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfAreaImplTest.java
deleted file mode 100644
index 79689c0..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfAreaImplTest.java
+++ /dev/null
@@ -1,468 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.area;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfNeighborState;
-import org.onosproject.ospf.controller.TopologyForDeviceAndLink;
-import org.onosproject.ospf.controller.impl.OspfNbrImpl;
-import org.onosproject.ospf.controller.impl.TopologyForDeviceAndLinkImpl;
-import org.onosproject.ospf.controller.lsdb.LsaWrapperImpl;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.lsa.types.NetworkLsa;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10;
-import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
-import org.onosproject.ospf.protocol.util.OspfInterfaceState;
-import org.onosproject.ospf.protocol.util.OspfParameters;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.*;
-
-/**
- * Unit test class for OspfAreaImpl.
- */
-public class OspfAreaImplTest {
-
-    private OspfAreaImpl ospfArea;
-    private int result;
-    private List<OspfInterface> ospfInterfaces = new ArrayList<>();
-    private OspfInterfaceImpl ospfInterface1;
-    private OspfInterfaceImpl ospfInterface2;
-    private OspfInterfaceImpl ospfInterface3;
-    private OspfNbrImpl ospfNbr;
-    private OspfNbrImpl ospfNbr1;
-    private NetworkLsa networkLsa;
-    private LsaHeader lsaHeader;
-    private Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10");
-    private Ip4Address ip4Address1 = Ip4Address.valueOf("11.11.11.11");
-    private Ip4Address networkAddress = Ip4Address.valueOf("255.255.255.255");
-    private TopologyForDeviceAndLink topologyForDeviceAndLink;
-    private RouterLsa routerLsa;
-    private OpaqueLsaHeader opaqueLsaHeader;
-    private OpaqueLsa10 opaqueLsa10;
-
-    @Before
-    public void setUp() throws Exception {
-        lsaHeader = new LsaHeader();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setAdvertisingRouter(ip4Address);
-        lsaHeader.setAdvertisingRouter(ip4Address);
-        routerLsa = new RouterLsa(lsaHeader);
-        routerLsa.setAdvertisingRouter(ip4Address);
-        opaqueLsa10 = new OpaqueLsa10(opaqueLsaHeader);
-        ospfArea = new OspfAreaImpl();
-        ospfInterface1 = new OspfInterfaceImpl();
-        topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl();
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface1, ip4Address, ip4Address1,
-                                  2, topologyForDeviceAndLink);
-        ospfNbr.setState(OspfNeighborState.EXCHANGE);
-        ospfNbr1 = new OspfNbrImpl(ospfArea, ospfInterface1, ip4Address, ip4Address1,
-                                   2, topologyForDeviceAndLink);
-        ospfNbr1.setState(OspfNeighborState.FULL);
-        ospfNbr1.setNeighborId(ip4Address);
-        ospfNbr.setNeighborId(ip4Address);
-        ospfNbr.setIsOpaqueCapable(true);
-        ospfInterface1.addNeighbouringRouter(ospfNbr);
-        ospfInterface1.addNeighbouringRouter(ospfNbr1);
-        ospfInterface2 = new OspfInterfaceImpl();
-        ospfInterface2.setIpAddress(ip4Address);
-        ospfInterface2.setIpNetworkMask(networkAddress);
-        ospfInterface2.setState(OspfInterfaceState.LOOPBACK);
-        ospfInterface2.addNeighbouringRouter(ospfNbr);
-        ospfInterface2.addNeighbouringRouter(ospfNbr1);
-        ospfInterfaces.add(ospfInterface2);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfArea = null;
-        ospfInterfaces = null;
-        lsaHeader = null;
-        networkLsa = null;
-        ospfInterface1 = null;
-        ospfInterface2 = null;
-        ospfInterface3 = null;
-
-    }
-
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashCode() throws Exception {
-        result = ospfArea.hashCode();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests routerId() getter method.
-     */
-    @Test
-    public void testGetRouterId() throws Exception {
-        ospfArea.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfArea.routerId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests routerId() setter method.
-     */
-    @Test
-    public void testSetRouterId() throws Exception {
-        ospfArea.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfArea.routerId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests isOpaqueEnabled() getter method.
-     */
-    @Test
-    public void testSetisOpaqueEnabled() throws Exception {
-        ospfArea.setIsOpaqueEnabled(true);
-        assertThat(ospfArea.isOpaqueEnabled(), is(true));
-    }
-
-    /**
-     * Tests isOpaqueEnabled() setter method.
-     */
-    @Test
-    public void testIsOpaqueEnabled() throws Exception {
-        ospfArea.setIsOpaqueEnabled(true);
-        assertThat(ospfArea.isOpaqueEnabled(), is(true));
-    }
-
-    /**
-     * Tests initializeDb() method.
-     */
-    @Test
-    public void testInitializeDb() throws Exception {
-        ospfArea.initializeDb();
-        assertThat(ospfArea, is(notNullValue()));
-    }
-
-
-    /**
-     * Tests buildNetworkLsa() method.
-     */
-    @Test
-    public void testBuildNetworkLsa() throws Exception {
-        ospfInterfaces = new ArrayList();
-        ospfInterface1 = new OspfInterfaceImpl();
-        ospfInterface1.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        ospfInterfaces.add(ospfInterface1);
-        ospfInterface2 = new OspfInterfaceImpl();
-        ospfInterface2.setIpAddress(Ip4Address.valueOf("2.2.2.2"));
-        ospfInterfaces.add(ospfInterface2);
-        ospfInterface3 = new OspfInterfaceImpl();
-        ospfInterface3.setIpAddress(Ip4Address.valueOf("3.3.3.3"));
-        ospfInterfaces.add(ospfInterface3);
-        ospfArea.setOspfInterfaceList(ospfInterfaces);
-        ospfArea.setRouterId(Ip4Address.valueOf("111.111.111.111"));
-        networkLsa = ospfArea.buildNetworkLsa(Ip4Address.valueOf("1.1.1.1"),
-                                              Ip4Address.valueOf("255.255.255.255"));
-        assertThat(ospfInterfaces.size(), is(3));
-        assertThat(networkLsa, is(notNullValue()));
-        assertThat(ospfArea, is(notNullValue()));
-    }
-
-
-    /**
-     * Tests areaId() getter method.
-     */
-    @Test
-    public void testGetAreaId() throws Exception {
-        ospfArea.setAreaId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfArea.areaId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests areaId() setter method.
-     */
-    @Test
-    public void testSetAreaId() throws Exception {
-        ospfArea.setAreaId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfArea.areaId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-
-    /**
-     * Tests isExternalRoutingCapability() getter method.
-     */
-    @Test
-    public void testIsExternalRoutingCapability() throws Exception {
-        ospfArea.setExternalRoutingCapability(true);
-        assertThat(ospfArea.isExternalRoutingCapability(), is(true));
-    }
-
-    /**
-     * Tests isExternalRoutingCapability() setter method.
-     */
-    @Test
-    public void testSetExternalRoutingCapability() throws Exception {
-        ospfArea.setExternalRoutingCapability(true);
-        assertThat(ospfArea.isExternalRoutingCapability(), is(true));
-    }
-
-
-    /**
-     * Tests ospfInterfaceList() getter method.
-     */
-    @Test
-    public void testGetInterfacesLst() throws Exception {
-        ospfInterfaces = new ArrayList();
-        ospfInterface1 = new OspfInterfaceImpl();
-        ospfInterface1.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        ospfInterfaces.add(ospfInterface1);
-        ospfInterface2 = new OspfInterfaceImpl();
-        ospfInterface2.setIpAddress(Ip4Address.valueOf("2.2.2.2"));
-        ospfInterfaces.add(ospfInterface2);
-        ospfInterface3 = new OspfInterfaceImpl();
-        ospfInterface3.setIpAddress(Ip4Address.valueOf("3.3.3.3"));
-        ospfInterfaces.add(ospfInterface3);
-        ospfArea.setOspfInterfaceList(ospfInterfaces);
-        assertThat(ospfInterfaces.size(), is(3));
-        assertThat(ospfArea.ospfInterfaceList(), is(notNullValue()));
-    }
-
-    /**
-     * Tests setInterfacesLst() setter method.
-     */
-    @Test
-    public void testSetInterfacesLst() throws Exception {
-        ospfInterfaces = new ArrayList();
-        ospfInterface1 = new OspfInterfaceImpl();
-        ospfInterface1.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        ospfInterfaces.add(ospfInterface1);
-        ospfInterface2 = new OspfInterfaceImpl();
-        ospfInterface2.setIpAddress(Ip4Address.valueOf("2.2.2.2"));
-        ospfInterfaces.add(ospfInterface2);
-        ospfInterface3 = new OspfInterfaceImpl();
-        ospfInterface3.setIpAddress(Ip4Address.valueOf("3.3.3.3"));
-        ospfInterfaces.add(ospfInterface3);
-        ospfArea.setOspfInterfaceList(ospfInterfaces);
-        assertThat(ospfInterfaces.size(), is(3));
-        assertThat(ospfArea.ospfInterfaceList(), is(notNullValue()));
-    }
-
-
-    /**
-     * Tests getLsaHeaders() method.
-     */
-    @Test
-    public void testGetLsaHeaders() throws Exception {
-        assertThat(ospfArea.getLsaHeaders(true, true).size(), is(0));
-    }
-
-    /**
-     * Tests getLsa() method.
-     */
-    @Test
-    public void testGetLsa() throws Exception {
-        assertThat(ospfArea.getLsa(1, "1.1.1.1", "1.1.1.1"), is(nullValue()));
-        assertThat(ospfArea.getLsa(10, "1.1.1.1", "1.1.1.1"), is(nullValue()));
-    }
-
-    /**
-     * Tests lsaLookup() method.
-     */
-    @Test
-    public void testLsaLookup() throws Exception {
-        assertThat(ospfArea.lsaLookup(new RouterLsa()), is(nullValue()));
-    }
-
-    /**
-     * Tests isNewerOrSameLsa() method.
-     */
-    @Test
-    public void testIsNewerOrSameLsa() throws Exception {
-        assertThat(ospfArea.isNewerOrSameLsa(new RouterLsa(), new RouterLsa()), is("same"));
-    }
-
-    /**
-     * Tests addLsa() method.
-     */
-    @Test
-    public void testAddLsa() throws Exception {
-        ospfArea.addLsa(new RouterLsa(), new OspfInterfaceImpl());
-        assertThat(ospfArea, is(notNullValue()));
-    }
-
-    /**
-     * Tests addLsa() method.
-     */
-    @Test
-    public void testAddLsa1() throws Exception {
-        ospfArea.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
-        assertThat(ospfArea, is(notNullValue()));
-    }
-
-    /**
-     * Tests addLsaToMaxAgeBin() method.
-     */
-    @Test
-    public void testAddLsaToMaxAgeBin() throws Exception {
-        ospfArea.addLsaToMaxAgeBin("111", new LsaWrapperImpl());
-        assertThat(ospfArea, is(notNullValue()));
-    }
-
-    /**
-     * Tests setDbRouterSequenceNumber() method.
-     */
-    @Test
-    public void testSetDbRouterSequenceNumber() throws Exception {
-        ospfArea.setDbRouterSequenceNumber(123456);
-        assertThat(ospfArea, is(notNullValue()));
-    }
-
-    /**
-     * Tests deleteLsa() method.
-     */
-    @Test
-    public void testDeleteLsa() throws Exception {
-        ospfArea.deleteLsa(new LsaHeader());
-        assertThat(ospfArea, is(notNullValue()));
-    }
-
-    /**
-     * Tests removeLsaFromBin() method.
-     */
-    @Test
-    public void testRemoveLsaFromBin() throws Exception {
-        ospfArea.removeLsaFromBin(new LsaWrapperImpl());
-        assertThat(ospfArea, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(ospfArea.toString(), is(notNullValue()));
-    }
-
-
-    /**
-     * Tests getLsaKey() method.
-     */
-    @Test
-    public void testGetLsaKey() throws Exception {
-        lsaHeader = new LsaHeader();
-        lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfArea.getLsaKey(lsaHeader), is(notNullValue()));
-    }
-
-
-    /**
-     * Tests options() getter method.
-     */
-    @Test
-    public void testGetOptions() throws Exception {
-        ospfArea.setOptions(2);
-        assertThat(ospfArea.options(), is(2));
-    }
-
-    /**
-     * Tests options() setter method.
-     */
-    @Test
-    public void testSetOptions() throws Exception {
-        ospfArea.setOptions(2);
-        assertThat(ospfArea.options(), is(2));
-    }
-
-    /**
-     * Tests isOpaqueEnabled() method.
-     */
-    @Test
-    public void testGetOpaqueEnabledOptions() throws Exception {
-        ospfArea.setIsOpaqueEnabled(true);
-        assertThat(ospfArea.isOpaqueEnabled(), is(true));
-    }
-
-    /**
-     * Tests database()  method.
-     */
-    @Test
-    public void testGetDatabase() throws Exception {
-        assertThat(ospfArea.database(), is(notNullValue()));
-    }
-
-    /**
-     * Tests opaqueEnabledOptions()  method.
-     */
-    @Test
-    public void testOpaqueEnabledOptionsa() throws Exception {
-        assertThat(ospfArea.opaqueEnabledOptions(), is(66));
-    }
-
-    /**
-     * Tests noNeighborInLsaExchangeProcess()  method.
-     */
-    @Test
-    public void testNoNeighborInLsaExchangeProcess() throws Exception {
-        ospfArea.setOspfInterfaceList(ospfInterfaces);
-        ospfArea.noNeighborInLsaExchangeProcess();
-        assertThat(ospfArea, is(notNullValue()));
-    }
-
-    /**
-     * Tests getNeighborsInFullState()  method.
-     */
-    @Test
-    public void testGetNeighborsInFullState() throws Exception {
-        ospfArea.getNeighborsInFullState(ospfInterface1);
-        assertThat(ospfArea, is(notNullValue()));
-    }
-
-    /**
-     * Tests addToOtherNeighborLsaTxList()  method.
-     */
-    @Test
-    public void testAddToOtherNeighborLsaTxList() throws Exception {
-        ospfArea.setOspfInterfaceList(ospfInterfaces);
-        ospfArea.addToOtherNeighborLsaTxList(routerLsa);
-        assertThat(ospfArea, is(notNullValue()));
-
-        opaqueLsa10.setLsType(OspfParameters.LINK_LOCAL_OPAQUE_LSA);
-        ospfArea.addToOtherNeighborLsaTxList(opaqueLsa10);
-        assertThat(ospfArea, is(notNullValue()));
-    }
-
-    /**
-     * Tests buildRouterLsa()  method.
-     */
-    @Test
-    public void testBuildRouterLsa() throws Exception {
-        ospfArea.setRouterId(ip4Address);
-        ospfArea.setOspfInterfaceList(ospfInterfaces);
-        ospfInterface1.setState(OspfInterfaceState.POINT2POINT);
-        ospfInterface1.setIpAddress(ip4Address);
-        ospfInterface1.setIpNetworkMask(networkAddress);
-        ospfInterfaces.add(ospfInterface1);
-        ospfArea.buildRouterLsa(ospfInterface1);
-        ospfArea.setOspfInterfaceList(ospfInterfaces);
-        assertThat(ospfArea, is(notNullValue()));
-
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfInterfaceImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfInterfaceImplTest.java
deleted file mode 100644
index 13aacf0..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfInterfaceImplTest.java
+++ /dev/null
@@ -1,1472 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.area;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.jboss.netty.buffer.HeapChannelBufferFactory;
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelConfig;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.jboss.netty.channel.ChannelStateEvent;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfAreaAddressRange;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.controller.OspfMessage;
-import org.onosproject.ospf.controller.OspfNbr;
-import org.onosproject.ospf.controller.OspfNeighborState;
-import org.onosproject.ospf.controller.OspfProcess;
-import org.onosproject.ospf.controller.TopologyForDeviceAndLink;
-import org.onosproject.ospf.controller.impl.Controller;
-import org.onosproject.ospf.controller.impl.OspfInterfaceChannelHandler;
-import org.onosproject.ospf.controller.impl.OspfLinkTedImpl;
-import org.onosproject.ospf.controller.impl.OspfNbrImpl;
-import org.onosproject.ospf.controller.impl.OspfRouterImpl;
-import org.onosproject.ospf.controller.impl.TopologyForDeviceAndLinkImpl;
-import org.onosproject.ospf.controller.util.OspfEligibleRouter;
-import org.onosproject.ospf.controller.util.OspfInterfaceType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-import org.onosproject.ospf.protocol.lsa.tlvtypes.RouterTlv;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10;
-import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
-import org.onosproject.ospf.protocol.ospfpacket.subtype.LsRequestPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate;
-import org.onosproject.ospf.protocol.util.ChecksumCalculator;
-import org.onosproject.ospf.protocol.util.OspfInterfaceState;
-
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for OspfInterfaceImpl.
- */
-public class OspfInterfaceImplTest {
-    private List<OspfAreaAddressRange> addressRanges = new ArrayList();
-    private List<OspfInterface> ospfInterfaces = new ArrayList();
-    private OspfInterfaceImpl ospfInterface;
-    private OspfNbrImpl ospfNbr;
-    private OpaqueLsaHeader opaqueLsaHeader;
-    private int result;
-    private OspfAreaImpl ospfArea;
-    private HashMap<String, OspfNbr> ospfNbrHashMap;
-    private TopologyForDeviceAndLink topologyForDeviceAndLink;
-    private Channel channel;
-    private ChannelHandlerContext channelHandlerContext;
-    private ChannelStateEvent channelStateEvent;
-    private HelloPacket helloPacket;
-    private DdPacket ddPacket;
-    private ChecksumCalculator checksumCalculator;
-    private byte[] byteArray;
-    private byte[] checkArray;
-    private OspfInterfaceChannelHandler ospfInterfaceChannelHandler;
-    private LsRequest lsRequest;
-    private ChannelBuffer buf;
-    private LsUpdate lsUpdate;
-    private LsAcknowledge lsAck;
-    private Controller controller;
-    private List<OspfProcess> ospfProcesses = new ArrayList();
-    private OspfProcess ospfProcess;
-    private OspfEligibleRouter ospfEligibleRouter;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfProcess = new OspfProcessImpl();
-        ospfProcesses.add(ospfProcess);
-        ospfInterface = new OspfInterfaceImpl();
-        topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl();
-        channel = EasyMock.createMock(Channel.class);
-        ospfArea = createOspfArea();
-        ospfInterface = createOspfInterface();
-        ospfNbrHashMap = new HashMap();
-        topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl();
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"),
-                                  Ip4Address.valueOf("2.2.2.2"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setNeighborId(Ip4Address.valueOf("10.10.10.10"));
-        ospfNbr.setRouterPriority(0);
-        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        controller = new Controller();
-        ospfInterfaceChannelHandler = new OspfInterfaceChannelHandler(controller, ospfProcesses);
-
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfInterface = null;
-        ospfNbr = null;
-        opaqueLsaHeader = null;
-        ospfNbrHashMap = null;
-    }
-
-    /**
-     * Tests state() getter method.
-     */
-    @Test
-    public void testGetState() throws Exception {
-        ospfInterface.setState(OspfInterfaceState.DROTHER);
-        assertThat(ospfInterface.state(), is(OspfInterfaceState.DROTHER));
-    }
-
-    /**
-     * Tests state() setter method.
-     */
-    @Test
-    public void testSetState() throws Exception {
-        ospfInterface.setState(OspfInterfaceState.DROTHER);
-        assertThat(ospfInterface.state(), is(OspfInterfaceState.DROTHER));
-    }
-
-    /**
-     * Tests linkStateHeaders() method.
-     */
-    @Test
-    public void testGetLinkStateHeaders() throws Exception {
-
-        assertThat(ospfInterface.linkStateHeaders().size(), is(0));
-    }
-
-    /**
-     * Tests ipNetworkMask() getter method.
-     */
-    @Test
-    public void testGetIpNetworkMask() throws Exception {
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfInterface.ipNetworkMask(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests ipNetworkMask() setter method.
-     */
-    @Test
-    public void testSetIpNetworkMask() throws Exception {
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfInterface.ipNetworkMask(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests addNeighbouringRouter() method.
-     */
-    @Test
-    public void testAddNeighbouringRouter() throws Exception {
-        ospfNbr = new OspfNbrImpl(new OspfAreaImpl(), new OspfInterfaceImpl(),
-                                  Ip4Address.valueOf("1.1.1.1"), Ip4Address.valueOf("2.2.2.2"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setNeighborId(Ip4Address.valueOf("111.111.111.111"));
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        assertThat(ospfInterface, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests neighbouringRouter() method.
-     */
-    @Test
-    public void testGetNeighbouringRouter() throws Exception {
-        ospfNbr = new OspfNbrImpl(new OspfAreaImpl(), new OspfInterfaceImpl(),
-                                  Ip4Address.valueOf("1.1.1.1"), Ip4Address.valueOf("2.2.2.2"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setNeighborId(Ip4Address.valueOf("111.111.111.111"));
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        assertThat(ospfInterface.neighbouringRouter("111.111.111.111"), is(notNullValue()));
-    }
-
-    /**
-     * Tests addLsaHeaderForDelayAck() method.
-     */
-    @Test
-    public void testAddLsaHeaderForDelayAck() throws Exception {
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(10);
-        ospfInterface.addLsaHeaderForDelayAck(opaqueLsaHeader);
-        assertThat(ospfInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests removeLsaFromNeighborMap() method.
-     */
-    @Test
-    public void testRemoveLsaFromNeighborMap() throws Exception {
-        ospfInterface.removeLsaFromNeighborMap("lsa10");
-        assertThat(ospfInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests isNeighborInList() method.
-     */
-    @Test
-    public void testIsNeighborinList() throws Exception {
-        ospfNbr = new OspfNbrImpl(new OspfAreaImpl(), new OspfInterfaceImpl(),
-                                  Ip4Address.valueOf("1.1.1.1"), Ip4Address.valueOf("2.2.2.2"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setNeighborId(Ip4Address.valueOf("111.111.111.111"));
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        assertThat(ospfInterface.isNeighborInList("111.111.111.111"), is(notNullValue()));
-    }
-
-    /**
-     * Tests listOfNeighbors() getter method.
-     */
-    @Test
-    public void testGetListOfNeighbors() throws Exception {
-        ospfNbrHashMap = new HashMap();
-        ospfNbr = new OspfNbrImpl(new OspfAreaImpl(), new OspfInterfaceImpl(),
-                                  Ip4Address.valueOf("1.1.1.1"), Ip4Address.valueOf("2.2.2.2"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setNeighborId(Ip4Address.valueOf("111.111.111.111"));
-        ospfNbrHashMap.put("111.111.111.111", ospfNbr);
-        ospfInterface.setListOfNeighbors(ospfNbrHashMap);
-        assertThat(ospfInterface.listOfNeighbors().size(), is(1));
-    }
-
-    /**
-     * Tests listOfNeighbors() setter method.
-     */
-    @Test
-    public void testSetListOfNeighbors() throws Exception {
-        ospfNbrHashMap = new HashMap();
-        ospfNbr = new OspfNbrImpl(new OspfAreaImpl(), new OspfInterfaceImpl(),
-                                  Ip4Address.valueOf("1.1.1.1"), Ip4Address.valueOf("2.2.2.2"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setNeighborId(Ip4Address.valueOf("111.111.111.111"));
-        ospfNbrHashMap.put("111.111.111.111", ospfNbr);
-        ospfInterface.setListOfNeighbors(ospfNbrHashMap);
-        assertThat(ospfInterface.listOfNeighbors().size(), is(1));
-    }
-
-    /**
-     * Tests ipAddress() getter method.
-     */
-    @Test
-    public void testGetIpAddress() throws Exception {
-        ospfInterface.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfInterface.ipAddress(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests ipAddress() getter method.
-     */
-    @Test
-    public void testSetIpAddress() throws Exception {
-        ospfInterface.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfInterface.ipAddress(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests routerPriority() getter method.
-     */
-    @Test
-    public void testGetRouterPriority() throws Exception {
-        ospfInterface.setRouterPriority(1);
-        Assert.assertEquals(1, ospfInterface.routerPriority());
-    }
-
-    /**
-     * Tests routerPriority() setter method.
-     */
-    @Test
-    public void testSetRouterPriority() throws Exception {
-        ospfInterface.setRouterPriority(1);
-        assertThat(ospfInterface.routerPriority(), is(1));
-    }
-
-    /**
-     * Tests helloIntervalTime() getter method.
-     */
-    @Test
-    public void testGetHelloIntervalTime() throws Exception {
-        ospfInterface.setHelloIntervalTime(10);
-        assertThat(ospfInterface.helloIntervalTime(), is(10));
-    }
-
-    /**
-     * Tests helloIntervalTime() setter method.
-     */
-    @Test
-    public void testSetHelloIntervalTime() throws Exception {
-        ospfInterface.setHelloIntervalTime(10);
-        assertThat(ospfInterface.helloIntervalTime(), is(10));
-    }
-
-    /**
-     * Tests routerDeadIntervalTime() getter method.
-     */
-    @Test
-    public void testGetRouterDeadIntervalTime() throws Exception {
-        ospfInterface.setRouterDeadIntervalTime(10);
-        assertThat(ospfInterface.routerDeadIntervalTime(), is(10));
-    }
-
-    /**
-     * Tests routerDeadIntervalTime() setter method.
-     */
-    @Test
-    public void testSetRouterDeadIntervalTime() throws Exception {
-        ospfInterface.setRouterDeadIntervalTime(10);
-        assertThat(ospfInterface.routerDeadIntervalTime(), is(10));
-    }
-
-    /**
-     * Tests interfaceType() getter method.
-     */
-    @Test
-    public void testGetInterfaceType() throws Exception {
-        ospfInterface.setInterfaceType(1);
-        assertThat(ospfInterface.interfaceType(), is(1));
-    }
-
-    /**
-     * Tests interfaceType() setter method.
-     */
-    @Test
-    public void testSetInterfaceType() throws Exception {
-        ospfInterface.setInterfaceType(1);
-        assertThat(ospfInterface.interfaceType(), is(1));
-    }
-
-    /**
-     * Tests mtu() getter method.
-     */
-    @Test
-    public void testGetMtu() throws Exception {
-        ospfInterface.setMtu(100);
-        assertThat(ospfInterface.mtu(), is(100));
-    }
-
-    /**
-     * Tests mtu() setter method.
-     */
-    @Test
-    public void testSetMtu() throws Exception {
-        ospfInterface.setMtu(100);
-        assertThat(ospfInterface.mtu(), is(100));
-    }
-
-    /**
-     * Tests reTransmitInterval() getter method.
-     */
-    @Test
-    public void testGetReTransmitInterval() throws Exception {
-        ospfInterface.setReTransmitInterval(100);
-        assertThat(ospfInterface.reTransmitInterval(), is(100));
-    }
-
-    /**
-     * Tests reTransmitInterval() setter method.
-     */
-    @Test
-    public void testSetReTransmitInterval() throws Exception {
-        ospfInterface.setReTransmitInterval(100);
-        assertThat(ospfInterface.reTransmitInterval(), is(100));
-    }
-
-    /**
-     * Tests dr() getter method.
-     */
-    @Test
-    public void testGetDr() throws Exception {
-        ospfInterface.setDr(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfInterface.dr(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests dr() setter method.
-     */
-    @Test
-    public void testSetDr() throws Exception {
-        ospfInterface.setDr(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfInterface.dr(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests bdr() getter method.
-     */
-    @Test
-    public void testGetBdr() throws Exception {
-        ospfInterface.setBdr(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfInterface.bdr(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests bdr() setter method.
-     */
-    @Test
-    public void testSetBdr() throws Exception {
-        ospfInterface.setBdr(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfInterface.bdr(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests equals() method.
-     */
-    @Test
-    public void testEquals() throws Exception {
-        assertThat(ospfInterface.equals(new OspfInterfaceImpl()), is(false));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashCode() throws Exception {
-        result = ospfInterface.hashCode();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(ospfInterface.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests to interfaceUp() method.
-     */
-    @Test(expected = Exception.class)
-    public void testInterfaceUp() throws Exception {
-        ospfInterface.setInterfaceType(OspfInterfaceType.POINT_TO_POINT.value());
-        ospfInterface.interfaceUp();
-        assertThat(ospfInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests to interfaceUp() method.
-     */
-    @Test(expected = Exception.class)
-    public void testInterfaceUp1() throws Exception {
-
-        ospfInterface.setInterfaceType(OspfInterfaceType.BROADCAST.value());
-        ospfInterface.interfaceUp();
-        assertThat(ospfInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests to interfaceUp() method.
-     */
-    @Test(expected = Exception.class)
-    public void testInterfaceUp2() throws Exception {
-
-        ospfInterface.setRouterPriority(1);
-        ospfInterface.setInterfaceType(OspfInterfaceType.BROADCAST.value());
-        ospfInterface.interfaceUp();
-        assertThat(ospfInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests to backupSeen() method.
-     */
-    @Test
-    public void testBackupSeen() throws Exception {
-        ospfInterface.setOspfArea(ospfArea);
-        ospfInterface.setState(OspfInterfaceState.WAITING);
-        ospfInterface.backupSeen(channel);
-        assertThat(ospfInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests to waitTimer() method.
-     */
-    @Test
-    public void testWaitTimer() throws Exception {
-        ospfInterface.setOspfArea(ospfArea);
-        ospfInterface.setState(OspfInterfaceState.WAITING);
-        ospfInterface.waitTimer(channel);
-        assertThat(ospfInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests to callDrElection() method.
-     */
-    @Test
-    public void testCallDrElection() throws Exception {
-        ospfInterface.setOspfArea(ospfArea);
-        ospfInterface.setState(OspfInterfaceState.WAITING);
-        ospfInterface.callDrElection(channel);
-        assertThat(ospfInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests to neighborChange() method.
-     */
-    @Test
-    public void testNeighborChange() throws Exception {
-        ospfInterface.setOspfArea(ospfArea);
-        ospfInterface.setState(OspfInterfaceState.DR);
-        ospfInterface.neighborChange();
-        assertThat(ospfInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests to interfaceDown() method.
-     */
-    @Test(expected = Exception.class)
-    public void testInterfaceDown() throws Exception {
-        ospfInterface.interfaceDown();
-        assertThat(ospfInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests processOspfMessage() method.
-     */
-    @Test
-    public void testProcessOspfMessage() throws Exception {
-        ospfInterface.setOspfArea(ospfArea);
-        ospfInterface.setInterfaceType(OspfInterfaceType.POINT_TO_POINT.value());
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("0.0.0.0"));
-        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
-        ospfInterface.setInterfaceType(2);
-        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        OspfMessage message;
-        helloPacket = new HelloPacket();
-        helloPacket.setSourceIp(Ip4Address.valueOf("1.1.0.1"));
-        helloPacket.setRouterId(Ip4Address.valueOf("10.10.10.10"));
-        helloPacket.setOspfVer(2);
-        helloPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        helloPacket.setOptions(2);
-        helloPacket.setNetworkMask(Ip4Address.valueOf("3.3.3.3"));
-        helloPacket.setOspftype(1);
-        helloPacket.setAuthType(0);
-        helloPacket.setHelloInterval(60);
-        helloPacket.setRouterDeadInterval(60);
-        helloPacket.setAuthentication(0);
-        helloPacket.setNetworkMask(Ip4Address.valueOf("1.1.1.1"));
-        checksumCalculator = new ChecksumCalculator();
-        byteArray = helloPacket.asBytes();
-        helloPacket.setOspfPacLength(byteArray.length);
-        checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13);
-        checkArray[0] = -51;
-        checkArray[1] = 52;
-        buf = ChannelBuffers.copiedBuffer(checkArray);
-        helloPacket.setChecksum(buf.readUnsignedShort());
-        message = helloPacket;
-        ospfInterface.processOspfMessage(message, channelHandlerContext);
-        ddPacket = new DdPacket();
-        ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        ddPacket.setRouterId(Ip4Address.valueOf("10.10.10.10"));
-        ddPacket.setOspfVer(2);
-        ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        ddPacket.setOptions(2);
-        ddPacket.setOspftype(2);
-        ddPacket.setAuthType(0);
-        ddPacket.setAuthentication(0);
-        checksumCalculator = new ChecksumCalculator();
-        byteArray = ddPacket.asBytes();
-        ddPacket.setOspfPacLength(byteArray.length);
-        checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13);
-        checkArray[0] = -49;
-        checkArray[1] = -79;
-        buf = ChannelBuffers.copiedBuffer(checkArray);
-        ddPacket.setChecksum(buf.readUnsignedShort());
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        message = ddPacket;
-        ospfInterface.processOspfMessage(message, channelHandlerContext);
-        lsRequest = new LsRequest();
-        lsRequest.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        lsRequest.setRouterId(Ip4Address.valueOf("10.10.10.10"));
-        lsRequest.setOspfVer(2);
-        lsRequest.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        lsRequest.setOspftype(3);
-        lsRequest.setAuthType(0);
-        lsRequest.setAuthentication(0);
-        checksumCalculator = new ChecksumCalculator();
-        byteArray = lsRequest.asBytes();
-        lsRequest.setOspfPacLength(byteArray.length);
-        checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13);
-        checkArray[0] = -47;
-        checkArray[1] = -72;
-        buf = ChannelBuffers.copiedBuffer(checkArray);
-        lsRequest.setChecksum(buf.readUnsignedShort());
-        message = lsRequest;
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ospfInterface.processOspfMessage(message, channelHandlerContext);
-        lsUpdate = new LsUpdate();
-        lsUpdate.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        lsUpdate.setRouterId(Ip4Address.valueOf("10.10.10.10"));
-        lsUpdate.setOspfVer(2);
-        lsUpdate.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        lsUpdate.setOspftype(4);
-        lsUpdate.setAuthType(0);
-        lsUpdate.setAuthentication(0);
-        checksumCalculator = new ChecksumCalculator();
-        byteArray = lsUpdate.asBytes();
-        lsUpdate.setOspfPacLength(byteArray.length);
-        checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13);
-        checkArray[0] = -47;
-        checkArray[1] = -77;
-        buf = ChannelBuffers.copiedBuffer(checkArray);
-        lsUpdate.setChecksum(buf.readUnsignedShort());
-        message = lsUpdate;
-        ospfInterface.processOspfMessage(message, channelHandlerContext);
-        lsAck = new LsAcknowledge();
-        lsAck.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        lsAck.setRouterId(Ip4Address.valueOf("10.10.10.10"));
-        lsAck.setOspfVer(2);
-        lsAck.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        lsAck.setOspftype(5);
-        lsAck.setAuthType(0);
-        lsAck.setAuthentication(0);
-        checksumCalculator = new ChecksumCalculator();
-        byteArray = lsAck.asBytes();
-        lsAck.setOspfPacLength(byteArray.length);
-        checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13);
-        checkArray[0] = -47;
-        checkArray[1] = -74;
-        buf = ChannelBuffers.copiedBuffer(checkArray);
-        lsAck.setChecksum(buf.readUnsignedShort());
-        message = lsAck;
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ospfInterface.processOspfMessage(message, channelHandlerContext);
-        assertThat(ospfInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests processHelloMessage() method.
-     */
-    @Test
-    public void testProcessHelloMessage() throws Exception {
-        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
-        ospfInterface.setInterfaceType(1);
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("244.244.244.244"));
-        ospfInterface.setHelloIntervalTime(10);
-        ospfInterface.setRouterDeadIntervalTime(10);
-        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        OspfMessage message;
-        helloPacket = new HelloPacket();
-        helloPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        helloPacket.setOspfVer(2);
-        helloPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        helloPacket.setNetworkMask(Ip4Address.valueOf("244.244.244.244"));
-        helloPacket.setHelloInterval(10);
-        helloPacket.setRouterDeadInterval(10);
-        helloPacket.setDr(Ip4Address.valueOf("10.10.10.10"));
-        helloPacket.setBdr(Ip4Address.valueOf("11.11.11.11"));
-        helloPacket.setRouterId(Ip4Address.valueOf("111.111.111.111"));
-        message = helloPacket;
-        ospfInterface.processHelloMessage(message, channelHandlerContext);
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests processHelloMessage() method.
-     */
-    @Test
-    public void testProcessHelloMessage1() throws Exception {
-        ospfInterface.setOspfArea(ospfArea);
-        ospfInterface.setInterfaceType(2);
-        ospfInterface.setRouterPriority(1);
-        ospfInterface.interfaceUp();
-        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
-        ospfInterface.setState(OspfInterfaceState.WAITING);
-        ospfInterface.setInterfaceType(2);
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("244.244.244.244"));
-        ospfInterface.setHelloIntervalTime(10);
-        ospfInterface.setRouterDeadIntervalTime(10);
-        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        OspfMessage message;
-        helloPacket = new HelloPacket();
-        helloPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        helloPacket.setOspfVer(2);
-        helloPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        helloPacket.setNetworkMask(Ip4Address.valueOf("244.244.244.244"));
-        helloPacket.setHelloInterval(10);
-        helloPacket.setRouterDeadInterval(10);
-        helloPacket.setDr(Ip4Address.valueOf("10.10.10.10"));
-        helloPacket.setBdr(Ip4Address.valueOf("11.11.11.11"));
-        helloPacket.setRouterId(Ip4Address.valueOf("2.2.2.2"));
-        message = helloPacket;
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ospfInterface.processHelloMessage(message, channelHandlerContext);
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-        ospfNbrHashMap = new HashMap();
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"),
-                                  Ip4Address.valueOf("2.2.2.2"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
-        ospfNbr.setRouterPriority(0);
-        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ospfInterface.processHelloMessage(message, channelHandlerContext);
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests processDdMessage() method.
-     */
-    @Test
-    public void testProcessDdMessage() throws Exception {
-        ospfInterface.setOspfArea(ospfArea);
-        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
-        ospfInterface.setInterfaceType(2);
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        ospfInterface.setHelloIntervalTime(10);
-        ospfInterface.setRouterDeadIntervalTime(10);
-        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        OspfMessage message;
-        ddPacket = new DdPacket();
-        ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        ddPacket.setOspfVer(2);
-        ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2"));
-        ddPacket.setIsOpaqueCapable(true);
-        ddPacket.setIsMore(1);
-        ddPacket.setIsInitialize(1);
-        ddPacket.setIsMaster(1);
-        ddPacket.setSequenceNo(123);
-        message = ddPacket;
-        ospfNbrHashMap = new HashMap();
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"),
-                                  Ip4Address.valueOf("2.2.2.2"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setLastDdPacket(createDdPacket());
-        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
-        ospfNbr.setState(OspfNeighborState.EXSTART);
-        ospfNbr.setRouterPriority(0);
-        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
-        ospfNbr.setDdSeqNum(123);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ospfInterface.processDdMessage(message, channelHandlerContext);
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests processDdMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testProcessDdMessage3() throws Exception {
-        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
-        ospfInterface.setInterfaceType(2);
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        ospfInterface.setHelloIntervalTime(10);
-        ospfInterface.setRouterDeadIntervalTime(10);
-        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        OspfMessage message;
-        ddPacket = new DdPacket();
-        ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        ddPacket.setOspfVer(2);
-        ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2"));
-        ddPacket.setIsOpaqueCapable(true);
-        ddPacket.setIsMore(1);
-        ddPacket.setIsInitialize(1);
-        ddPacket.setIsMaster(1);
-        ddPacket.setSequenceNo(123);
-        message = ddPacket;
-        ospfNbrHashMap = new HashMap();
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"),
-                                  Ip4Address.valueOf("2.2.2.2"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setLastDdPacket(createDdPacket());
-        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
-        ospfNbr.setState(OspfNeighborState.EXSTART);
-        ospfNbr.setRouterPriority(0);
-        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
-        ospfNbr.setDdSeqNum(123);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        ddPacket.setIsMore(1);
-        ddPacket.setIsInitialize(0);
-        ddPacket.setIsMaster(0);
-        ddPacket.setSequenceNo(123);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ospfInterface.processDdMessage(message, channelHandlerContext);
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests processDdMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testProcessDdMessage1() throws Exception {
-        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
-        ospfInterface.setInterfaceType(2);
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        ospfInterface.setHelloIntervalTime(10);
-        ospfInterface.setRouterDeadIntervalTime(10);
-        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        OspfMessage message;
-        ddPacket = new DdPacket();
-        ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        ddPacket.setOspfVer(2);
-        ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2"));
-        ddPacket.setIsOpaqueCapable(true);
-        ddPacket.setIsMore(1);
-        ddPacket.setIsInitialize(1);
-        ddPacket.setIsMaster(1);
-        ddPacket.setSequenceNo(123);
-        message = ddPacket;
-        ospfNbrHashMap = new HashMap();
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"),
-                                  Ip4Address.valueOf("2.2.2.2"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setLastDdPacket(createDdPacket());
-        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
-        ospfNbr.setState(OspfNeighborState.EXCHANGE);
-        ospfNbr.setRouterPriority(0);
-        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
-        ospfNbr.setDdSeqNum(123);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        ddPacket.setIsMore(1);
-        ddPacket.setIsInitialize(0);
-        ddPacket.setIsMaster(0);
-        ddPacket.setSequenceNo(123);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ospfInterface.processDdMessage(message, channelHandlerContext);
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests processDdMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testProcessDdMessage2() throws Exception {
-        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
-        ospfInterface.setInterfaceType(2);
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        ospfInterface.setHelloIntervalTime(10);
-        ospfInterface.setRouterDeadIntervalTime(10);
-        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        OspfMessage message;
-        ddPacket = new DdPacket();
-        ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        ddPacket.setOspfVer(2);
-        ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2"));
-        ddPacket.setIsOpaqueCapable(true);
-        ddPacket.setIsMore(1);
-        ddPacket.setIsInitialize(1);
-        ddPacket.setIsMaster(1);
-        ddPacket.setSequenceNo(123);
-        message = ddPacket;
-        ospfNbrHashMap = new HashMap();
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"),
-                                  Ip4Address.valueOf("2.2.2.2"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setLastDdPacket(createDdPacket());
-        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
-        ospfNbr.setState(OspfNeighborState.LOADING);
-        ospfNbr.setRouterPriority(0);
-        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
-        ospfNbr.setDdSeqNum(123);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        ospfInterface.setState(OspfInterfaceState.POINT2POINT);
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ospfInterface.processDdMessage(message, channelHandlerContext);
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests processDdMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testProcessDdMessage4() throws Exception {
-        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
-        ospfInterface.setInterfaceType(2);
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        ospfInterface.setHelloIntervalTime(10);
-        ospfInterface.setRouterDeadIntervalTime(10);
-        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        OspfMessage message;
-        ddPacket = new DdPacket();
-        ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        ddPacket.setOspfVer(2);
-        ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2"));
-        ddPacket.setIsOpaqueCapable(true);
-        ddPacket.setIsMore(1);
-        ddPacket.setIsInitialize(1);
-        ddPacket.setIsMaster(1);
-        ddPacket.setSequenceNo(123);
-        message = ddPacket;
-        ospfNbrHashMap = new HashMap();
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"),
-                                  Ip4Address.valueOf("2.2.2.2"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setLastDdPacket(createDdPacket());
-        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
-        ospfNbr.setState(OspfNeighborState.EXCHANGE);
-        ospfNbr.setRouterPriority(0);
-        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
-        ospfNbr.setDdSeqNum(123);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        ospfInterface.setState(OspfInterfaceState.POINT2POINT);
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ddPacket.setIsMore(1);
-        ddPacket.setIsInitialize(0);
-        ddPacket.setIsMaster(1);
-        ddPacket.setSequenceNo(123);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        ospfNbr.setState(OspfNeighborState.EXCHANGE);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ospfInterface.processDdMessage(message, channelHandlerContext);
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests processDdMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testProcessDdMessage5() throws Exception {
-        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
-        ospfInterface.setInterfaceType(2);
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        ospfInterface.setHelloIntervalTime(10);
-        ospfInterface.setRouterDeadIntervalTime(10);
-        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        OspfMessage message;
-        ddPacket = new DdPacket();
-        ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        ddPacket.setOspfVer(2);
-        ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2"));
-        ddPacket.setIsOpaqueCapable(true);
-        ddPacket.setIsMore(1);
-        ddPacket.setIsInitialize(1);
-        ddPacket.setIsMaster(1);
-        ddPacket.setSequenceNo(123);
-        message = ddPacket;
-        ospfNbrHashMap = new HashMap();
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"),
-                                  Ip4Address.valueOf("2.2.2.2"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setLastDdPacket(createDdPacket());
-        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
-        ospfNbr.setState(OspfNeighborState.EXCHANGE);
-        ospfNbr.setRouterPriority(0);
-        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
-        ospfNbr.setDdSeqNum(123);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        ospfInterface.setState(OspfInterfaceState.POINT2POINT);
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ddPacket.setIsMore(1);
-        ddPacket.setIsInitialize(1);
-        ddPacket.setIsMaster(0);
-        ddPacket.setSequenceNo(123);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        ospfNbr.setState(OspfNeighborState.EXCHANGE);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ospfInterface.processDdMessage(message, channelHandlerContext);
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests processDdMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testProcessDdMessage6() throws Exception {
-        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
-        ospfInterface.setInterfaceType(2);
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        ospfInterface.setHelloIntervalTime(10);
-        ospfInterface.setRouterDeadIntervalTime(10);
-        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        OspfMessage message;
-        ddPacket = new DdPacket();
-        ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        ddPacket.setOspfVer(2);
-        ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2"));
-        ddPacket.setIsOpaqueCapable(true);
-        ddPacket.setIsMore(1);
-        ddPacket.setIsInitialize(1);
-        ddPacket.setIsMaster(1);
-        ddPacket.setSequenceNo(123);
-        message = ddPacket;
-        ospfNbrHashMap = new HashMap();
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"),
-                                  Ip4Address.valueOf("2.2.2.2"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setLastDdPacket(createDdPacket());
-        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
-        ospfNbr.setState(OspfNeighborState.FULL);
-        ospfNbr.setRouterPriority(0);
-        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
-        ospfNbr.setDdSeqNum(123);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        ospfInterface.setState(OspfInterfaceState.POINT2POINT);
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ddPacket.setIsMore(1);
-        ddPacket.setIsInitialize(1);
-        ddPacket.setIsMaster(0);
-        ddPacket.setSequenceNo(123);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        ospfNbr.setState(OspfNeighborState.FULL);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ospfInterface.processDdMessage(message, channelHandlerContext);
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests processLsRequestMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testProcessLSRequestMessage() throws Exception {
-        ospfArea.setRouterId(Ip4Address.valueOf("11.11.11.11"));
-        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        ospfInterface.setOspfArea(ospfArea);
-        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
-        ospfInterface.setInterfaceType(2);
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        ospfInterface.setHelloIntervalTime(10);
-        ospfInterface.setRouterDeadIntervalTime(10);
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        OspfMessage message;
-        lsRequest = new LsRequest();
-        lsRequest.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        lsRequest.setOspfVer(2);
-        lsRequest.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        lsRequest.setRouterId(Ip4Address.valueOf("10.226.165.100"));
-        List<LsRequestPacket> lsRequests = new ArrayList();
-        LsRequestPacket lsRequestPacket = new LsRequestPacket();
-        lsRequestPacket.setLsType(OspfLsaType.AREA_LOCAL_OPAQUE_LSA.value());
-        lsRequestPacket.setLinkStateId("2.2.2.2");
-        lsRequestPacket.setOwnRouterId("10.226.165.100");
-        lsRequests.add(lsRequestPacket);
-        lsRequests.add(lsRequestPacket);
-        lsRequest.addLinkStateRequests(lsRequestPacket);
-        message = lsRequest;
-        ospfNbrHashMap = new HashMap();
-        ospfNbr.setState(OspfNeighborState.EXCHANGE);
-        ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"),
-                                  Ip4Address.valueOf("10.226.165.100"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setLastDdPacket(createDdPacket());
-        ospfNbr.setNeighborId(Ip4Address.valueOf("10.226.165.100"));
-        ospfNbr.setState(OspfNeighborState.FULL);
-        ospfNbr.setRouterPriority(0);
-        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
-        ospfNbr.setDdSeqNum(123);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        OpaqueLsaHeader lsaHeader = new OpaqueLsaHeader();
-        lsaHeader.setLsType(OspfLsaType.AREA_LOCAL_OPAQUE_LSA.value());
-        lsaHeader.setLinkStateId("2.2.2.2");
-        lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("10.226.165.100"));
-        OpaqueLsa10 opaqueLsa10 = new OpaqueLsa10(lsaHeader);
-        ospfArea.addLsa(opaqueLsa10, false, ospfInterface);
-        ospfInterface.setOspfArea(ospfArea);
-        ospfInterface.processLsRequestMessage(message, channelHandlerContext);
-        assertThat(ospfInterface, is(notNullValue()));
-    }
-
-    /**
-     * Tests processLsUpdateMessage() method.
-     */
-    @Test
-    public void testProcessLSUpdateMessage() throws Exception {
-        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
-        ospfInterface.setInterfaceType(2);
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        ospfInterface.setHelloIntervalTime(10);
-        ospfInterface.setRouterDeadIntervalTime(10);
-        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        OspfMessage message;
-        lsUpdate = new LsUpdate();
-        lsUpdate.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        lsUpdate.setOspfVer(2);
-        lsUpdate.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        lsUpdate.setRouterId(Ip4Address.valueOf("10.226.165.100"));
-        RouterLsa routerLsa = new RouterLsa();
-        lsUpdate.addLsa(routerLsa);
-        lsUpdate.setNumberOfLsa(1);
-        message = lsUpdate;
-        ospfNbrHashMap = new HashMap();
-        ospfNbr.setState(OspfNeighborState.FULL);
-        ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"),
-                                  Ip4Address.valueOf("10.226.165.100"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setLastDdPacket(createDdPacket());
-        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
-        ospfNbr.setState(OspfNeighborState.FULL);
-        ospfNbr.setRouterPriority(0);
-        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
-        ospfNbr.setDdSeqNum(123);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ospfInterface.processLsUpdateMessage(message, channelHandlerContext);
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-
-    }
-
-    @Test(expected = Exception.class)
-    public void testProcessLSAckMessage() throws Exception {
-        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
-        ospfInterface.setInterfaceType(2);
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        ospfInterface.setHelloIntervalTime(10);
-        ospfInterface.setRouterDeadIntervalTime(10);
-        ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        OspfMessage message;
-        lsAck = new LsAcknowledge();
-        lsAck.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        lsAck.setOspfVer(2);
-        lsAck.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-        LsaHeader lsaHeader = new LsaHeader();
-        lsAck.addLinkStateHeader(lsaHeader);
-        message = lsAck;
-        ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"),
-                                  Ip4Address.valueOf("10.226.165.100"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setLastDdPacket(createDdPacket());
-        ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2"));
-        ospfNbr.setState(OspfNeighborState.FULL);
-        ospfNbr.setRouterPriority(0);
-        ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13"));
-        ospfNbr.setDdSeqNum(123);
-        channelHandlerContext = null;
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ospfInterface.processLsAckMessage(message, channelHandlerContext);
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests electRouter() method.
-     */
-    @Test
-    public void testElectRouter() throws Exception {
-        ospfInterface.setOspfArea(ospfArea);
-        ospfInterface.setDr(Ip4Address.valueOf("3.3.3.3"));
-        ospfInterface.setBdr(Ip4Address.valueOf("3.3.3.3"));
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        ChannelConfig channelConfig = EasyMock.createMock(ChannelConfig.class);
-        EasyMock.expect(channelConfig.getBufferFactory()).andReturn(new HeapChannelBufferFactory());
-        Channel channel = EasyMock.createMock(Channel.class);
-        ospfInterface.electRouter(channel);
-        assertThat(ospfInterface.dr(), is(notNullValue()));
-    }
-
-    /**
-     * Tests electBdr() method.
-     */
-    @Test
-    public void testElectBdr() throws Exception {
-        ospfEligibleRouter = new OspfEligibleRouter();
-        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsDr(true);
-        ospfEligibleRouter.setRouterPriority(10);
-        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsBdr(false);
-        OspfEligibleRouter ospfEligibleRouter1 = new OspfEligibleRouter();
-        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsDr(true);
-        ospfEligibleRouter.setRouterPriority(10);
-        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsBdr(false);
-        OspfEligibleRouter ospfEligibleRouter2 = new OspfEligibleRouter();
-        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsDr(true);
-        ospfEligibleRouter.setRouterPriority(10);
-        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsBdr(false);
-        List<OspfEligibleRouter> ospfEligibleRouters = new ArrayList<>();
-
-        ospfEligibleRouters.add(ospfEligibleRouter);
-        ospfEligibleRouters.add(ospfEligibleRouter1);
-        ospfEligibleRouters.add(ospfEligibleRouter2);
-        OspfEligibleRouter eligibleRouter = ospfInterface.electBdr(ospfEligibleRouters);
-        assertThat(ospfEligibleRouters.size(), is(3));
-        assertThat(eligibleRouter, is(notNullValue()));
-    }
-
-    /**
-     * Tests electDr() method.
-     */
-    @Test
-    public void testElectDR() throws Exception {
-        ospfEligibleRouter = new OspfEligibleRouter();
-        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsDr(true);
-        ospfEligibleRouter.setRouterPriority(10);
-        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsBdr(false);
-        OspfEligibleRouter ospfEligibleRouter1 = new OspfEligibleRouter();
-        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsDr(true);
-        ospfEligibleRouter.setRouterPriority(10);
-        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsBdr(false);
-        OspfEligibleRouter ospfEligibleRouter2 = new OspfEligibleRouter();
-        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsDr(true);
-        ospfEligibleRouter.setRouterPriority(10);
-        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsBdr(false);
-        List<OspfEligibleRouter> ospfEligibleRouters = new ArrayList<>();
-        ospfEligibleRouters.add(ospfEligibleRouter);
-        ospfEligibleRouters.add(ospfEligibleRouter1);
-        ospfEligibleRouters.add(ospfEligibleRouter2);
-        OspfEligibleRouter eligibleRouter = ospfInterface.electDr(ospfEligibleRouters,
-                                                                  ospfEligibleRouter);
-        assertThat(ospfEligibleRouters.size(), is(3));
-        assertThat(eligibleRouter, is(notNullValue()));
-    }
-
-    /**
-     * Tests selectRouterBasedOnPriority() method.
-     */
-    @Test
-    public void testSelectRouterBasedOnPriority() throws Exception {
-        ospfEligibleRouter = new OspfEligibleRouter();
-        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsDr(true);
-        ospfEligibleRouter.setRouterPriority(10);
-        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsBdr(false);
-        OspfEligibleRouter ospfEligibleRouter1 = new OspfEligibleRouter();
-        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsDr(true);
-        ospfEligibleRouter.setRouterPriority(11);
-        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsBdr(false);
-        OspfEligibleRouter ospfEligibleRouter2 = new OspfEligibleRouter();
-        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsDr(true);
-        ospfEligibleRouter.setRouterPriority(12);
-        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        ospfEligibleRouter.setIsBdr(false);
-        List<OspfEligibleRouter> ospfEligibleRouters = new ArrayList<>();
-        ospfEligibleRouters.add(ospfEligibleRouter);
-        ospfEligibleRouters.add(ospfEligibleRouter1);
-        ospfEligibleRouters.add(ospfEligibleRouter2);
-        OspfEligibleRouter eligibleRouter = ospfInterface.selectRouterBasedOnPriority(
-                ospfEligibleRouters);
-        assertThat(eligibleRouter, is(notNullValue()));
-    }
-
-    /**
-     * Tests addDeviceInformation() method.
-     */
-    @Test(expected = Exception.class)
-    public void testAddDeviceInformation() throws Exception {
-        ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"),
-                                  Ip4Address.valueOf("10.226.165.100"), 2,
-                                  topologyForDeviceAndLink);
-
-        ospfInterface.addDeviceInformation(new OspfRouterImpl());
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests removeDeviceInformation() method.
-     */
-    @Test(expected = Exception.class)
-    public void testRemoveDeviceInformation() throws Exception {
-        ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"),
-                                  Ip4Address.valueOf("10.226.165.100"), 2,
-                                  topologyForDeviceAndLink);
-
-        ospfInterface.removeDeviceInformation(new OspfRouterImpl());
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests addLinkInformation() method.
-     */
-    @Test(expected = Exception.class)
-    public void testaddLinkInformation() throws Exception {
-        ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"),
-                                  Ip4Address.valueOf("10.226.165.100"), 2,
-                                  topologyForDeviceAndLink);
-
-        List topTlv = new ArrayList();
-        topTlv.add(new RouterTlv(new TlvHeader()));
-        ospfInterface.addLinkInformation(new OspfRouterImpl(), new OspfLinkTedImpl());
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests removeLinkInformation() method.
-     */
-    @Test(expected = Exception.class)
-    public void testRemoveLinkInformation() throws Exception {
-        ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"),
-                                  Ip4Address.valueOf("10.226.165.100"), 2,
-                                  topologyForDeviceAndLink);
-
-        ospfInterface.removeLinkInformation(new OspfRouterImpl(), new OspfLinkTedImpl());
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Utility for test method.
-     */
-    private DdPacket createDdPacket() throws OspfParseException {
-        byte[] ddPacket = {2, 2, 0, 32, -64, -88, -86, 8, 0, 0, 0, 1, -96, 82,
-                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -36, 2, 7, 65, 119, -87, 126};
-        DdPacket ddPacket1 = new DdPacket();
-        ChannelBuffer buf = ChannelBuffers.buffer(ddPacket.length);
-        buf.writeBytes(ddPacket);
-        ddPacket1.readFrom(buf);
-        return ddPacket1;
-    }
-
-    /**
-     * Utility for test method.
-     */
-    private OspfInterfaceImpl createOspfInterface() throws UnknownHostException {
-        ospfInterface = new OspfInterfaceImpl();
-        OspfAreaImpl ospfArea = new OspfAreaImpl();
-        OspfInterfaceChannelHandler ospfInterfaceChannelHandler = EasyMock.createMock(
-                OspfInterfaceChannelHandler.class);
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.226.165.164"),
-                                  Ip4Address.valueOf("1.1.1.1"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setState(OspfNeighborState.EXSTART);
-        ospfNbr.setNeighborId(Ip4Address.valueOf("10.226.165.100"));
-        this.ospfInterface = new OspfInterfaceImpl();
-        this.ospfInterface.setIpAddress(Ip4Address.valueOf("10.226.165.164"));
-        this.ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        this.ospfInterface.setBdr(Ip4Address.valueOf("111.111.111.111"));
-        this.ospfInterface.setDr(Ip4Address.valueOf("111.111.111.111"));
-        this.ospfInterface.setHelloIntervalTime(20);
-        this.ospfInterface.setInterfaceType(2);
-        this.ospfInterface.setReTransmitInterval(2000);
-        this.ospfInterface.setMtu(6500);
-        this.ospfInterface.setRouterDeadIntervalTime(1000);
-        this.ospfInterface.setRouterPriority(1);
-        this.ospfInterface.setInterfaceType(1);
-        this.ospfInterface.addNeighbouringRouter(ospfNbr);
-        return this.ospfInterface;
-    }
-
-    /**
-     * Utility for test method.
-     */
-    private OspfInterfaceImpl createOspfInterface1() throws UnknownHostException {
-        ospfInterface = new OspfInterfaceImpl();
-        OspfAreaImpl ospfArea = new OspfAreaImpl();
-        OspfInterfaceChannelHandler ospfInterfaceChannelHandler = EasyMock.createMock(
-                OspfInterfaceChannelHandler.class);
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.226.165.164"),
-                                  Ip4Address.valueOf("1.1.1.1"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setState(OspfNeighborState.FULL);
-        ospfNbr.setNeighborId(Ip4Address.valueOf("10.226.165.100"));
-        ospfInterface = new OspfInterfaceImpl();
-        ospfInterface.setIpAddress(Ip4Address.valueOf("10.226.165.164"));
-        ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        ospfInterface.setBdr(Ip4Address.valueOf("111.111.111.111"));
-        ospfInterface.setDr(Ip4Address.valueOf("111.111.111.111"));
-        ospfInterface.setHelloIntervalTime(20);
-        ospfInterface.setInterfaceType(2);
-        ospfInterface.setReTransmitInterval(2000);
-        ospfInterface.setMtu(6500);
-        ospfInterface.setRouterDeadIntervalTime(1000);
-        ospfInterface.setRouterPriority(1);
-        ospfInterface.setInterfaceType(1);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        return ospfInterface;
-    }
-
-    /**
-     * Utility for test method.
-     */
-    private OspfAreaImpl createOspfArea() throws UnknownHostException {
-        OspfAreaAddressRangeImpl ospfAreaAddressRange;
-        ospfAreaAddressRange = createOspfAreaAddressRange();
-        addressRanges.add(ospfAreaAddressRange);
-        OspfAreaImpl ospfArea = new OspfAreaImpl();
-        ospfArea.setAreaId(Ip4Address.valueOf("10.226.165.164"));
-        ospfArea.setExternalRoutingCapability(true);
-        OspfInterfaceImpl ospfInterface = createOspfInterface();
-        ospfInterfaces.add(ospfInterface);
-        ospfArea.setOspfInterfaceList(ospfInterfaces);
-        RouterLsa routerLsa = new RouterLsa();
-        routerLsa.setLsType(1);
-        routerLsa.setLinkStateId("2.2.2.2");
-        routerLsa.setAdvertisingRouter(Ip4Address.valueOf("2.2.2.2"));
-        try {
-            ospfArea.addLsa(routerLsa, false, ospfInterface);
-        } catch (Exception e) {
-            System.out.println("ospfAreaImpl createOspfArea");
-        }
-        ospfArea.setRouterId(Ip4Address.valueOf("111.111.111.111"));
-
-        return ospfArea;
-    }
-
-    /**
-     * Utility for test method.
-     */
-    private OspfAreaAddressRangeImpl createOspfAreaAddressRange() {
-        OspfAreaAddressRangeImpl ospfAreaAddressRange = new OspfAreaAddressRangeImpl();
-        ospfAreaAddressRange.setIpAddress(Ip4Address.valueOf("10.226.165.164"));
-        ospfAreaAddressRange.setAdvertise(true);
-        ospfAreaAddressRange.setMask("mask");
-        return ospfAreaAddressRange;
-    }
-
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfProcessImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfProcessImplTest.java
deleted file mode 100644
index f20048c..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfProcessImplTest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.area;
-
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.controller.OspfArea;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for OspfProcessImpl.
- */
-public class OspfProcessImplTest {
-
-    private OspfProcessImpl ospfProcess;
-    private List<OspfArea> list;
-    private List result;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfProcess = new OspfProcessImpl();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfProcess = null;
-        list = null;
-    }
-
-    /**
-     * Tests areas() getter method.
-     */
-    @Test
-    public void testGetAreas() throws Exception {
-        list = new ArrayList();
-        list.add(new OspfAreaImpl());
-        list.add(new OspfAreaImpl());
-        ospfProcess.setAreas(list);
-        result = ospfProcess.areas();
-        assertThat(result.size(), is(2));
-    }
-
-    /**
-     * Tests areas() setter method.
-     */
-    @Test
-    public void testSetAreas() throws Exception {
-        list = new ArrayList();
-        list.add(new OspfAreaImpl());
-        list.add(new OspfAreaImpl());
-        ospfProcess.setAreas(list);
-        result = ospfProcess.areas();
-        assertThat(result.size(), is(2));
-    }
-
-    /**
-     * Tests processId() getter method.
-     */
-    @Test
-    public void testGetProcessId() throws Exception {
-        ospfProcess.setProcessId("1.1.1.1");
-        assertThat(ospfProcess.processId(), is("1.1.1.1"));
-    }
-
-    /**
-     * Tests processId() setter method.
-     */
-    @Test
-    public void testSetProcessId() throws Exception {
-        ospfProcess.setProcessId("1.1.1.1");
-        assertThat(ospfProcess.processId(), is("1.1.1.1"));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(ospfProcess.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/ControllerTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/ControllerTest.java
deleted file mode 100644
index c0b5db8..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/ControllerTest.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-
-import org.easymock.EasyMock;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.net.driver.DriverService;
-import org.onosproject.ospf.controller.OspfAgent;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfProcess;
-import org.onosproject.ospf.controller.OspfRouter;
-import org.onosproject.ospf.controller.area.OspfAreaImpl;
-import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
-import org.onosproject.ospf.controller.area.OspfProcessImpl;
-
-import java.nio.channels.Channel;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for Controller.
- */
-public class ControllerTest {
-    private Controller controller;
-    private Map<String, Long> maps;
-    private OspfAgent ospfAgent;
-    private DriverService driverService;
-    private List<Channel> connectedChannels;
-    private List<OspfProcess> process;
-    private OspfProcess ospfProcess;
-    private OspfArea ospfArea;
-    private OspfInterface ospfInterface;
-    private List<OspfInterface> ospfInterfaces;
-    private List<OspfArea> ospfAreas;
-    private List<OspfProcess> ospfProcesses;
-    private OspfProcess ospfProcess1;
-    private OspfArea ospfArea1;
-    private OspfRouter ospfRouter;
-
-    @Before
-    public void setUp() throws Exception {
-        controller = new Controller();
-        maps = new HashMap<String, Long>();
-        ospfProcess = new OspfProcessImpl();
-        ospfArea = new OspfAreaImpl();
-        ospfInterface = new OspfInterfaceImpl();
-        ospfInterfaces = new ArrayList();
-        ospfInterface.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        ospfInterfaces.add(ospfInterface);
-        ospfArea.setAreaId(Ip4Address.valueOf("2.2.2.2"));
-        ospfArea.setOspfInterfaceList(ospfInterfaces);
-        ospfProcess.setProcessId("10.10.10.10");
-        ospfAreas = new ArrayList();
-        ospfAreas.add(ospfArea);
-        ospfProcess.setAreas(ospfAreas);
-        ospfProcesses = new ArrayList();
-        ospfProcesses.add(ospfProcess);
-        ospfProcess1 = new OspfProcessImpl();
-        ospfProcess1.setProcessId("11.11.11.11");
-        ospfArea1 = new OspfAreaImpl();
-        ospfArea1.setAreaId(Ip4Address.valueOf("2.2.2.2"));
-        ospfArea1.setOspfInterfaceList(ospfInterfaces);
-        ospfAreas.add(ospfArea1);
-        ospfProcess1.setAreas(ospfAreas);
-        ospfProcesses.add(ospfProcess1);
-        connectedChannels = new ArrayList<>();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        controller = null;
-        maps.clear();
-        connectedChannels.clear();
-        controller = null;
-        maps = null;
-        ospfAgent = null;
-        driverService = null;
-        connectedChannels = null;
-        process = null;
-        ospfProcess = null;
-        ospfArea = null;
-        ospfInterface = null;
-        ospfInterfaces = null;
-        ospfAreas = null;
-        ospfProcesses = null;
-        ospfProcess1 = null;
-        ospfArea1 = null;
-    }
-
-    /**
-     * Tests getAllConfiguredProcesses() method.
-     */
-    @Test
-    public void testGetAllConfiguredProcesses() throws Exception {
-        process = controller.getAllConfiguredProcesses();
-        assertThat(process, is(nullValue()));
-    }
-
-    /**
-     * Tests addDeviceDetails() method.
-     */
-    @Test(expected = Exception.class)
-    public void testAddDeviceDetails() throws Exception {
-        controller.addDeviceDetails(new OspfRouterImpl());
-        assertThat(controller, is(notNullValue()));
-    }
-
-    /**
-     * Tests removeDeviceDetails() method.
-     */
-    @Test(expected = Exception.class)
-    public void testRemoveDeviceDetails() throws Exception {
-        controller.removeDeviceDetails(new OspfRouterImpl());
-        assertThat(controller, is(notNullValue()));
-    }
-
-    /**
-     * Tests init() method.
-     */
-    @Test
-    public void testInit() throws Exception {
-        controller.init();
-        assertThat(controller.systemStartTime, is(notNullValue()));
-    }
-
-    /**
-     * Tests start() method.
-     */
-    @Test
-    public void testStart() throws Exception {
-        ospfAgent = EasyMock.createMock(OspfAgent.class);
-        controller.start(ospfAgent, driverService);
-        controller.updateConfig(ospfProcesses);
-        assertThat(controller, is(notNullValue()));
-    }
-
-    /**
-     * Tests stop() method.
-     */
-    @Test(expected = Exception.class)
-    public void testStop() throws Exception {
-        controller.start(ospfAgent, driverService);
-        controller.stop();
-        assertThat(controller, is(notNullValue()));
-    }
-
-
-    /**
-     * Tests updateConfig() method.
-     */
-    @Test
-    public void testUpdateConfig1() throws Exception {
-        ospfProcess = new OspfProcessImpl();
-        ospfArea = new OspfAreaImpl();
-        ospfInterface = new OspfInterfaceImpl();
-        ospfInterfaces = new ArrayList();
-        ospfInterface.setIpAddress(Ip4Address.valueOf("10.10.10.5"));
-        ospfInterfaces.add(ospfInterface);
-        ospfArea.setAreaId(Ip4Address.valueOf("2.2.2.2"));
-        ospfArea.setOspfInterfaceList(ospfInterfaces);
-        ospfProcess.setProcessId("10.10.10.10");
-        ospfAreas = new ArrayList();
-        ospfAreas.add(ospfArea);
-        ospfProcess.setAreas(ospfAreas);
-        ospfProcesses = new ArrayList();
-        ospfProcesses.add(ospfProcess);
-        controller.updateConfig(ospfProcesses);
-        assertThat(controller, is(notNullValue()));
-    }
-
-    /**
-     * Tests addLinkDetails() method.
-     */
-    @Test
-    public void testAddLinkDetails() throws Exception {
-        ospfAgent = EasyMock.createMock(OspfAgent.class);
-        controller.start(ospfAgent, driverService);
-        ospfRouter = new OspfRouterImpl();
-        controller.addLinkDetails(ospfRouter, new OspfLinkTedImpl());
-        assertThat(controller, is(notNullValue()));
-    }
-
-    /**
-     * Tests removeLinkDetails() method.
-     */
-    @Test
-    public void testRemoveLinkDetails() throws Exception {
-        ospfAgent = EasyMock.createMock(OspfAgent.class);
-        controller.start(ospfAgent, driverService);
-        ospfRouter = new OspfRouterImpl();
-        controller.addLinkDetails(ospfRouter, new OspfLinkTedImpl());
-        controller.removeLinkDetails(ospfRouter, new OspfLinkTedImpl());
-        assertThat(controller, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/DeviceInformationImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/DeviceInformationImplTest.java
deleted file mode 100644
index a96d523..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/DeviceInformationImplTest.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for DeviceInformationImpl.
- */
-public class DeviceInformationImplTest {
-
-    private DeviceInformationImpl deviceInformation;
-
-    @Before
-    public void setUp() throws Exception {
-        deviceInformation = new DeviceInformationImpl();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        deviceInformation = null;
-    }
-
-    /**
-     * Tests routerId() getter method.
-     */
-    @Test
-    public void testRouterId() throws Exception {
-        deviceInformation.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(deviceInformation.routerId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests routerId() setter method.
-     */
-    @Test
-    public void testSetRouterId() throws Exception {
-        deviceInformation.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(deviceInformation.routerId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests deviceId() getter method.
-     */
-    @Test
-    public void testDeviceId() throws Exception {
-        deviceInformation.setDeviceId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(deviceInformation.deviceId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests deviceId() getter method.
-     */
-    @Test
-    public void testSetDeviceId() throws Exception {
-        deviceInformation.setDeviceId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(deviceInformation.deviceId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests interfaceId() method.
-     */
-    @Test
-    public void testInterfaceId() throws Exception {
-        deviceInformation.addInterfaceId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(deviceInformation.interfaceId().size(), is(1));
-    }
-
-    /**
-     * Tests addInterfaceId() method.
-     */
-    @Test
-    public void testAddInterfaceId() throws Exception {
-        deviceInformation.addInterfaceId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(deviceInformation.interfaceId().size(), is(1));
-    }
-
-    /**
-     * Tests areaId() getter method.
-     */
-    @Test
-    public void testAreaId() throws Exception {
-        deviceInformation.setAreaId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(deviceInformation.areaId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests areaId() setter method.
-     */
-    @Test
-    public void testSetAreaId() throws Exception {
-        deviceInformation.setAreaId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(deviceInformation.areaId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests isAlreadyCreated() getter method.
-     */
-    @Test
-    public void testIsAlreadyCreated() throws Exception {
-        deviceInformation.setAlreadyCreated(true);
-        assertThat(deviceInformation.isAlreadyCreated(), is(true));
-    }
-
-    /**
-     * Tests isAlreadyCreated() setter method.
-     */
-    @Test
-    public void testSetAlreadyCreated() throws Exception {
-        deviceInformation.setAlreadyCreated(true);
-        assertThat(deviceInformation.isAlreadyCreated(), is(true));
-    }
-
-    /**
-     * Tests isDr() getter method.
-     */
-    @Test
-    public void testIsDr() throws Exception {
-        deviceInformation.setDr(true);
-        assertThat(deviceInformation.isDr(), is(true));
-    }
-
-    /**
-     * Tests isDr() setter method.
-     */
-    @Test
-    public void testSetDr() throws Exception {
-        deviceInformation.setDr(true);
-        assertThat(deviceInformation.isDr(), is(true));
-    }
-
-    /**
-     * Tests neighborId() getter method.
-     */
-    @Test
-    public void testNeighborId() throws Exception {
-        deviceInformation.setNeighborId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(deviceInformation.neighborId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests neighborId() setter method.
-     */
-    @Test
-    public void testSetNeighborId() throws Exception {
-        deviceInformation.setNeighborId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(deviceInformation.neighborId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/LinkInformationImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/LinkInformationImplTest.java
deleted file mode 100644
index e666c4e..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/LinkInformationImplTest.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for LinkInformationImpl.
- */
-public class LinkInformationImplTest {
-
-    private LinkInformationImpl linkInformation;
-
-    @Before
-    public void setUp() throws Exception {
-        linkInformation = new LinkInformationImpl();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        linkInformation = null;
-    }
-
-    /**
-     * Tests linkId() getter method.
-     */
-    @Test
-    public void testLinkId() throws Exception {
-        linkInformation.setLinkId("1.1.1.1");
-        assertThat(linkInformation.linkId(), is("1.1.1.1"));
-    }
-
-    /**
-     * Tests linkId() setter method.
-     */
-    @Test
-    public void testSetLinkId() throws Exception {
-        linkInformation.setLinkId("1.1.1.1");
-        assertThat(linkInformation.linkId(), is("1.1.1.1"));
-    }
-
-    /**
-     * Tests isAlreadyCreated() getter method.
-     */
-    @Test
-    public void testIsAlreadyCreated() throws Exception {
-        linkInformation.setAlreadyCreated(true);
-        assertThat(linkInformation.isAlreadyCreated(), is(true));
-    }
-
-    /**
-     * Tests isAlreadyCreated() setter method.
-     */
-    @Test
-    public void testSetAlreadyCreated() throws Exception {
-        linkInformation.setAlreadyCreated(true);
-        assertThat(linkInformation.isAlreadyCreated(), is(true));
-    }
-
-    /**
-     * Tests isLinkSrcIdNotRouterId() getter method.
-     */
-    @Test
-    public void testIsLinkSrcIdNotRouterId() throws Exception {
-        linkInformation.setLinkSrcIdNotRouterId(true);
-        assertThat(linkInformation.isLinkSrcIdNotRouterId(), is(true));
-    }
-
-    /**
-     * Tests isLinkSrcIdNotRouterId() setter method.
-     */
-    @Test
-    public void testSetLinkSrcIdNotRouterId() throws Exception {
-        linkInformation.setLinkSrcIdNotRouterId(true);
-        assertThat(linkInformation.isLinkSrcIdNotRouterId(), is(true));
-    }
-
-    /**
-     * Tests linkDestinationId() getter method.
-     */
-    @Test
-    public void testLinkDestinationId() throws Exception {
-        linkInformation.setLinkDestinationId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(linkInformation.linkDestinationId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests linkDestinationId() setter method.
-     */
-    @Test
-    public void testSetLinkDestinationId() throws Exception {
-        linkInformation.setLinkDestinationId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(linkInformation.linkDestinationId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests linkSourceId() getter method.
-     */
-    @Test
-    public void testLinkSourceId() throws Exception {
-        linkInformation.setLinkSourceId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(linkInformation.linkSourceId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests linkSourceId() setter method.
-     */
-    @Test
-    public void testSetLinkSourceId() throws Exception {
-        linkInformation.setLinkSourceId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(linkInformation.linkSourceId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests interfaceIp() getter method.
-     */
-    @Test
-    public void testInterfaceIp() throws Exception {
-        linkInformation.setInterfaceIp(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(linkInformation.interfaceIp(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests interfaceIp() setter method.
-     */
-    @Test
-    public void testSetInterfaceIp() throws Exception {
-        linkInformation.setInterfaceIp(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(linkInformation.interfaceIp(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests linkSourceIpAddress() getter method.
-     */
-    @Test
-    public void testLinkSourceIpAddress() throws Exception {
-        linkInformation.setLinkSourceIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(linkInformation.linkSourceIpAddress(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests linkSourceIpAddress() setter method.
-     */
-    @Test
-    public void testSetLinkSourceIpAddress() throws Exception {
-        linkInformation.setLinkSourceIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(linkInformation.linkSourceIpAddress(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests linkDestinationId() getter method.
-     */
-    @Test
-    public void testLinkDestinationIpAddress() throws Exception {
-        linkInformation.setLinkDestinationIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(linkInformation.linkDestinationIpAddress(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests linkDestinationId() setter method.
-     */
-    @Test
-    public void testSetLinkDestinationIpAddress() throws Exception {
-        linkInformation.setLinkDestinationIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(linkInformation.linkDestinationIpAddress(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfConfigUtilTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfConfigUtilTest.java
deleted file mode 100644
index 4ac6dd9..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfConfigUtilTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.onosproject.ospf.controller.OspfProcess;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for OspfJsonParsingUtilTest.
- */
-public class OspfConfigUtilTest {
-    private ObjectMapper mapper;
-    private JsonNode jsonNode;
-    private List<OspfProcess> ospfProcessList = new ArrayList<>();
-    private String jsonString = "{\n" +
-            "\t\"processes\": {\n" +
-            "\t\t\"areas\": [{\n" +
-            "\t\t\t\"interface\": [{\n" +
-            "\t\t\t\t\"interfaceIndex\": \"2\",\n" +
-            "\n" +
-            "\t\t\t\t\"helloIntervalTime\": \"10\",\n" +
-            "\n" +
-            "\t\t\t\t\"routerDeadIntervalTime\": \"40\",\n" +
-            "\n" +
-            "\t\t\t\t\"interfaceType\": \"2\",\n" +
-            "\n" +
-            "\t\t\t\t\"reTransmitInterval\": \"5\"\n" +
-            "\t\t\t}],\n" +
-            "\t\t\t\"areaId\": \"5.5.5.5\",\n" +
-            "\n" +
-            "\t\t\t\"routerId\": \"7.7.7.7\",\n" +
-            "\n" +
-            "\t\t\t\"isOpaqueEnable\": \"false\",\n" +
-            "\n" +
-            "\t\t\t\"externalRoutingCapability\": \"true\"\n" +
-            "\t\t}]\n" +
-            "\t}\n" +
-            "}";
-
-    @Before
-    public void setUp() throws Exception {
-        mapper = new ObjectMapper();
-        jsonNode = mapper.readTree(jsonString);
-        mapper = new ObjectMapper();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-
-    }
-
-    @Test
-    @Ignore
-    // Disabling because it seems to have an external dependency that can cause
-    // it to fail in some environments.
-    public void testProcesses() throws Exception {
-        jsonNode.path("areas");
-        ospfProcessList = OspfConfigUtil.processes(jsonNode);
-        assertThat(ospfProcessList, is(notNullValue()));
-    }
-}
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfControllerImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfControllerImplTest.java
deleted file mode 100644
index b38ddfb..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfControllerImplTest.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-
-import org.easymock.EasyMock;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfLinkListener;
-import org.onosproject.ospf.controller.OspfProcess;
-import org.onosproject.ospf.controller.OspfRouter;
-import org.onosproject.ospf.controller.OspfRouterListener;
-import org.onosproject.ospf.controller.area.OspfAreaImpl;
-import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
-import org.onosproject.ospf.controller.area.OspfProcessImpl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for OspfRouterId.
- */
-public class OspfControllerImplTest {
-
-    private OspfControllerImpl ospfController;
-    private OspfRouterListener ospfRouterListener;
-    private OspfLinkListener ospfLinkListener;
-    private List<OspfProcess> ospfProcesses;
-    private OspfProcess process1;
-    private List<OspfArea> areas;
-    private OspfAreaImpl ospfArea;
-    private List<OspfInterface> ospfInterfaces;
-    private OspfInterfaceImpl ospfInterface;
-    private OspfProcess ospfProcess;
-    private OspfArea ospfArea1;
-    private OspfRouter ospfRouter;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfController = new OspfControllerImpl();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfController = null;
-        ospfRouterListener = null;
-        ospfLinkListener = null;
-        ospfProcesses = null;
-        areas = null;
-        ospfArea = null;
-        ospfInterfaces = null;
-        ospfInterface = null;
-        ospfProcess = null;
-        ospfProcess = null;
-        ospfArea1 = null;
-        ospfRouter = null;
-    }
-
-    /**
-     * Tests activate() method.
-     */
-    @Test
-    public void testActivate() throws Exception {
-        ospfController.activate();
-        assertThat(ospfController, is(notNullValue()));
-    }
-
-    @Test(expected = Exception.class)
-    public void testDeactivate() throws Exception {
-        ospfController.activate();
-        ospfController.deactivate();
-        assertThat(ospfController, is(notNullValue()));
-    }
-
-    /**
-     * Tests addRouterListener() method.
-     */
-    @Test
-    public void testAddRouterListener() throws Exception {
-        ospfRouterListener = EasyMock.createMock(OspfRouterListener.class);
-        ospfController.addRouterListener(ospfRouterListener);
-        assertThat(ospfController, is(notNullValue()));
-    }
-
-    /**
-     * Tests removeRouterListener() method.
-     */
-    @Test
-    public void testRemoveRouterListener() throws Exception {
-        ospfRouterListener = EasyMock.createMock(OspfRouterListener.class);
-        ospfController.addRouterListener(ospfRouterListener);
-        ospfController.removeRouterListener(ospfRouterListener);
-        assertThat(ospfController, is(notNullValue()));
-    }
-
-    /**
-     * Tests addLinkListener() method.
-     */
-    @Test
-    public void testAddLinkListener() throws Exception {
-        ospfLinkListener = EasyMock.createMock(OspfLinkListener.class);
-        ospfController.addLinkListener(ospfLinkListener);
-        assertThat(ospfController, is(notNullValue()));
-    }
-
-    /**
-     * Tests removeLinkListener() method.
-     */
-    @Test
-    public void testRemoveLinkListener() throws Exception {
-        ospfLinkListener = EasyMock.createMock(OspfLinkListener.class);
-        ospfController.addLinkListener(ospfLinkListener);
-        ospfController.removeLinkListener(ospfLinkListener);
-        assertThat(ospfController, is(notNullValue()));
-    }
-
-    /**
-     * Tests deleteConfig() method.
-     */
-    @Test
-    public void testDeleteConfig() throws Exception {
-        ospfProcess = new OspfProcessImpl();
-        ospfArea = new OspfAreaImpl();
-        ospfInterface = new OspfInterfaceImpl();
-        ospfInterfaces = new ArrayList();
-        ospfInterface.setIpAddress(Ip4Address.valueOf("10.10.10.5"));
-        ospfInterfaces.add(ospfInterface);
-        ospfArea.setAreaId(Ip4Address.valueOf("2.2.2.2"));
-        ospfArea.setOspfInterfaceList(ospfInterfaces);
-        ospfProcess.setProcessId("10.10.10.10");
-        areas = new ArrayList();
-        areas.add(ospfArea);
-        ospfProcess.setAreas(areas);
-        ospfProcesses = new ArrayList();
-        ospfProcesses.add(ospfProcess);
-        process1 = new OspfProcessImpl();
-        process1.setProcessId("11.11.11.11");
-        ospfArea1 = new OspfAreaImpl();
-        ospfArea1.setAreaId(Ip4Address.valueOf("2.2.2.2"));
-        ospfArea1.setOspfInterfaceList(ospfInterfaces);
-        areas.add(ospfArea1);
-        process1.setAreas(areas);
-        ospfProcesses.add(process1);
-        ospfController.deleteConfig(ospfProcesses, "INTERFACE");
-        assertThat(ospfController, is(notNullValue()));
-    }
-
-    /**
-     * Tests addLink() method.
-     */
-    @Test
-    public void testAddLink() throws Exception {
-        ospfRouter = new OspfRouterImpl();
-
-        ospfController.agent.addLink(ospfRouter, new OspfLinkTedImpl());
-        assertThat(ospfController, is(notNullValue()));
-    }
-
-    /**
-     * Tests deleteLink() method.
-     */
-    @Test
-    public void testDeleteLink() throws Exception {
-        ospfRouter = new OspfRouterImpl();
-
-        ospfController.agent.addLink(ospfRouter, new OspfLinkTedImpl());
-        ospfController.agent.deleteLink(ospfRouter, new OspfLinkTedImpl());
-        assertThat(ospfController, is(notNullValue()));
-    }
-
-    /**
-     * Tests listener() method.
-     */
-    @Test
-    public void testListener() throws Exception {
-        assertThat(ospfController.listener().size(), is(0));
-    }
-
-    /**
-     * Tests linkListener() method.
-     */
-    @Test
-    public void testLinkListener() throws Exception {
-        assertThat(ospfController.linkListener().size(), is(0));
-    }
-
-    /**
-     * Tests addConnectedRouter() method.
-     */
-    @Test
-    public void testaddConnectedRouter() throws Exception {
-        ospfRouter = new OspfRouterImpl();
-
-        ospfController.agent.addConnectedRouter(ospfRouter);
-        assertThat(ospfController, is(notNullValue()));
-    }
-
-    /**
-     * Tests removeConnectedRouter() method.
-     */
-    @Test
-    public void testRemoveConnectedRouter() throws Exception {
-        ospfRouter = new OspfRouterImpl();
-
-        ospfController.agent.addConnectedRouter(ospfRouter);
-        ospfController.agent.removeConnectedRouter(ospfRouter);
-        assertThat(ospfController, is(notNullValue()));
-    }
-
-    /**
-     * Tests getAllConfiguredProcesses() method.
-     */
-    @Test(expected = Exception.class)
-    public void testGetAllConfiguredProcesses() throws Exception {
-        assertThat(ospfController.getAllConfiguredProcesses().size(), is(0));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfDeviceTedImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfDeviceTedImplTest.java
deleted file mode 100644
index 1fe33d4..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfDeviceTedImplTest.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.Ip6Address;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for OspfDeviceTedImpl.
- */
-public class OspfDeviceTedImplTest {
-    private OspfDeviceTedImpl ospfDeviceTed;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfDeviceTed = new OspfDeviceTedImpl();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfDeviceTed = null;
-    }
-
-    /**
-     * Tests ipv4RouterIds() getter method.
-     */
-    @Test
-    public void testIpv4RouterIds() throws Exception {
-        List list = new ArrayList();
-        list.add(Ip4Address.valueOf("1.1.1.1"));
-        ospfDeviceTed.setIpv4RouterIds(list);
-        assertThat(ospfDeviceTed.ipv4RouterIds().size(), is(1));
-    }
-
-    /**
-     * Tests ipv4RouterIds() setter method.
-     */
-    @Test
-    public void testSetIpv4RouterIds() throws Exception {
-        List list = new ArrayList();
-        list.add(Ip4Address.valueOf("1.1.1.1"));
-        ospfDeviceTed.setIpv4RouterIds(list);
-        assertThat(ospfDeviceTed.ipv4RouterIds().size(), is(1));
-    }
-
-    /**
-     * Tests abr() getter method.
-     */
-    @Test
-    public void testAbr() throws Exception {
-        ospfDeviceTed.setAbr(true);
-        assertThat(ospfDeviceTed.abr(), is(true));
-    }
-
-    /**
-     * Tests abr() setter method.
-     */
-    @Test
-    public void testSetAbr() throws Exception {
-        ospfDeviceTed.setAbr(true);
-        assertThat(ospfDeviceTed.abr(), is(true));
-    }
-
-    /**
-     * Tests asbr() getter method.
-     */
-    @Test
-    public void testAsbr() throws Exception {
-        ospfDeviceTed.setAsbr(true);
-        assertThat(ospfDeviceTed.asbr(), is(true));
-    }
-
-    /**
-     * Tests asbr() setter method.
-     */
-    @Test
-    public void testSetAsbr() throws Exception {
-        ospfDeviceTed.setAsbr(true);
-        assertThat(ospfDeviceTed.asbr(), is(true));
-    }
-
-    /**
-     * Tests topologyIds() getter method.
-     */
-    @Test
-    public void testTopologyIds() throws Exception {
-        List list = new ArrayList();
-        list.add(Ip4Address.valueOf("1.1.1.1"));
-        ospfDeviceTed.setTopologyIds(list);
-        assertThat(ospfDeviceTed.topologyIds().size(), is(1));
-    }
-
-    /**
-     * Tests topologyIds() setter method.
-     */
-    @Test
-    public void testSetTopologyIds() throws Exception {
-        List list = new ArrayList();
-        list.add(Ip4Address.valueOf("1.1.1.1"));
-        ospfDeviceTed.setTopologyIds(list);
-        assertThat(ospfDeviceTed.topologyIds().size(), is(1));
-    }
-
-    /**
-     * Tests ipv6RouterIds() getter method.
-     */
-    @Test
-    public void testIpv6RouterIds() throws Exception {
-        List list = new ArrayList();
-        list.add(Ip6Address.valueOf(1));
-        ospfDeviceTed.setIpv6RouterIds(list);
-        assertThat(ospfDeviceTed.ipv6RouterIds().size(), is(1));
-    }
-
-    /**
-     * Tests ipv6RouterIds() setter method.
-     */
-    @Test
-    public void testSetIpv6RouterIds() throws Exception {
-        List list = new ArrayList();
-        list.add(Ip6Address.valueOf(1));
-        ospfDeviceTed.setIpv6RouterIds(list);
-        assertThat(ospfDeviceTed.ipv6RouterIds().size(), is(1));
-    }
-}
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfInterfaceChannelHandlerTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfInterfaceChannelHandlerTest.java
deleted file mode 100644
index 49a7435..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfInterfaceChannelHandlerTest.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelFuture;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.jboss.netty.channel.ChannelStateEvent;
-import org.jboss.netty.channel.ExceptionEvent;
-import org.jboss.netty.channel.MessageEvent;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.OspfAreaAddressRange;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.controller.OspfNeighborState;
-import org.onosproject.ospf.controller.OspfProcess;
-import org.onosproject.ospf.controller.TopologyForDeviceAndLink;
-import org.onosproject.ospf.controller.area.OspfAreaAddressRangeImpl;
-import org.onosproject.ospf.controller.area.OspfAreaImpl;
-import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
-import org.onosproject.ospf.controller.area.OspfProcessImpl;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
-import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket;
-import org.onosproject.ospf.protocol.util.ChecksumCalculator;
-
-import java.net.SocketAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-
-/**
- * Unit test class for OspfInterfaceChannelHandler.
- */
-public class OspfInterfaceChannelHandlerTest {
-    private final String string1 = "2.2.2.2";
-    private List<OspfAreaAddressRange> addressRanges = new ArrayList();
-    private List<OspfInterface> ospfInterfaces = new ArrayList<>();
-    private Controller controller;
-    private OspfAreaImpl ospfArea;
-    private OspfInterfaceImpl ospfInterface;
-    private OspfInterfaceChannelHandler ospfInterfaceChannelHandler;
-    private OspfNbrImpl ospfNbr;
-    private ChannelHandlerContext channelHandlerContext;
-    private ChannelStateEvent channelStateEvent;
-    private TopologyForDeviceAndLink topologyForDeviceAndLink;
-    private List<OspfProcess> ospfProcesses = new ArrayList<>();
-    private OspfProcess ospfProcess;
-    private Ip4Address ip4Address1 = Ip4Address.valueOf("10.10.10.10");
-    private Ip4Address ip4Address2 = Ip4Address.valueOf("2.2.2.2");
-    private Ip4Address ip4Address3 = Ip4Address.valueOf("13.13.13.13");
-    private Ip4Address ip4Address4 = Ip4Address.valueOf("111.111.111.111");
-    private Ip4Address ip4Address5 = Ip4Address.valueOf("10.226.165.164");
-    private Ip4Address ip4Address6 = Ip4Address.valueOf("1.1.1.1");
-    private Ip4Address ip4Address7 = Ip4Address.valueOf("10.226.165.100");
-    private Ip4Address subnetAddress = Ip4Address.valueOf("255.255.255.255");
-    private byte[] byteArray;
-    private byte[] checkArray;
-    private HelloPacket helloPacket;
-    private ChecksumCalculator checksumCalculator;
-    private ChannelBuffer buf;
-    private List<OspfArea> ospfAreas = new ArrayList<>();
-
-    @Before
-    public void setUp() throws Exception {
-        ospfProcess = new OspfProcessImpl();
-        ospfArea = createOspfArea();
-        ospfAreas.add(ospfArea);
-        ospfProcess.setAreas(ospfAreas);
-        ospfProcesses.add(ospfProcess);
-        controller = new Controller();
-        topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl();
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, ip4Address1,
-                                  ip4Address2, 2, topologyForDeviceAndLink);
-        ospfNbr.setNeighborId(ip4Address1);
-        ospfNbr.setRouterPriority(0);
-        ospfNbr.setNeighborDr(ip4Address3);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        ospfInterfaceChannelHandler = new OspfInterfaceChannelHandler(controller, ospfProcesses);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfInterfaceChannelHandler = null;
-        ospfInterfaceChannelHandler = null;
-        ospfInterface = null;
-        channelHandlerContext = null;
-        channelStateEvent = null;
-    }
-
-    /**
-     * Tests channelConnected() method.
-     */
-    @Test(expected = Exception.class)
-    public void testChannelConnected() throws Exception {
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        channelStateEvent = EasyMock.createMock(ChannelStateEvent.class);
-        ospfInterfaceChannelHandler.channelConnected(channelHandlerContext, channelStateEvent);
-    }
-
-    /**
-     * Tests exceptionCaught() method.
-     */
-    @Test(expected = Exception.class)
-    public void testExceptionCaught() throws Exception {
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        ExceptionEvent exception = EasyMock.createMock(ExceptionEvent.class);
-        ospfInterfaceChannelHandler.exceptionCaught(channelHandlerContext, exception);
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests channelDisconnected() method.
-     */
-    @Test
-    public void testChannelDisconnected() throws Exception {
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        channelStateEvent = EasyMock.createMock(ChannelStateEvent.class);
-        ospfInterfaceChannelHandler.channelDisconnected(channelHandlerContext, channelStateEvent);
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests initializeInterfaceMap() method.
-     */
-    @Test
-    public void testInitializeInterfaceMap() throws Exception {
-        ospfInterfaceChannelHandler.initializeInterfaceMap();
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Tests updateInterfaceMap() method.
-     */
-    @Test
-    public void testUpdateInterfaceMap() throws Exception {
-        ospfInterfaceChannelHandler.updateInterfaceMap(ospfProcesses);
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Utility for test method.
-     */
-    private OspfAreaImpl createOspfArea() throws Exception {
-        OspfAreaAddressRangeImpl ospfAreaAddressRange;
-        ospfAreaAddressRange = createOspfAreaAddressRange();
-        addressRanges.add(ospfAreaAddressRange);
-        OspfAreaImpl ospfArea = new OspfAreaImpl();
-        ospfArea.setAreaId(ip4Address5);
-        ospfArea.setExternalRoutingCapability(true);
-        OspfInterfaceImpl ospfInterface = createOspfInterface();
-        ospfInterfaces.add(ospfInterface);
-        ospfArea.setOspfInterfaceList(ospfInterfaces);
-        RouterLsa routerLsa = new RouterLsa();
-        routerLsa.setLsType(1);
-        routerLsa.setLinkStateId(string1);
-        routerLsa.setAdvertisingRouter(ip4Address2);
-        ospfArea.addLsa(routerLsa, false, ospfInterface);
-        ospfArea.setRouterId(ip4Address4);
-
-        return ospfArea;
-    }
-
-    /**
-     * Utility for test method.
-     */
-    private OspfAreaAddressRangeImpl createOspfAreaAddressRange() {
-        OspfAreaAddressRangeImpl ospfAreaAddressRange = new OspfAreaAddressRangeImpl();
-        ospfAreaAddressRange.setIpAddress(ip4Address5);
-        ospfAreaAddressRange.setAdvertise(true);
-        ospfAreaAddressRange.setMask("mask");
-        return ospfAreaAddressRange;
-    }
-
-    /**
-     * Tests messageReceived() method.
-     */
-    @Test
-    public void testMessageReceived() throws Exception {
-        ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11"));
-        ospfInterface.setInterfaceType(2);
-        ospfArea.setAreaId(Ip4Address.valueOf("13.13.13.13"));
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        MessageEvent messageEvent = new MessageEvent() {
-            @Override
-            public Object getMessage() {
-                helloPacket = new HelloPacket();
-                helloPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-                helloPacket.setRouterId(Ip4Address.valueOf("10.10.10.10"));
-                helloPacket.setOspfVer(2);
-                helloPacket.setAreaId(Ip4Address.valueOf("12.12.12.12"));
-                helloPacket.setOptions(2);
-                helloPacket.setAreaId(Ip4Address.valueOf("5.5.5.5"));
-                helloPacket.setNetworkMask(Ip4Address.valueOf("3.3.3.3"));
-                helloPacket.setOspftype(1);
-                helloPacket.setAuthType(0);
-                helloPacket.setAuthentication(0);
-                checksumCalculator = new ChecksumCalculator();
-                byteArray = helloPacket.asBytes();
-                helloPacket.setOspfPacLength(byteArray.length);
-                checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13);
-                buf = ChannelBuffers.copiedBuffer(checkArray);
-                helloPacket.setChecksum(buf.readUnsignedShort());
-                List<HelloPacket> messPackets = new ArrayList<>();
-                messPackets.add(helloPacket);
-                return messPackets;
-            }
-
-            @Override
-            public SocketAddress getRemoteAddress() {
-                return null;
-            }
-
-            @Override
-            public Channel getChannel() {
-                return null;
-            }
-
-            @Override
-            public ChannelFuture getFuture() {
-                return null;
-            }
-        };
-        ospfInterfaceChannelHandler.messageReceived(channelHandlerContext, messageEvent);
-        assertThat(ospfInterfaceChannelHandler, is(notNullValue()));
-    }
-
-    /**
-     * Utility for test method.
-     */
-    private OspfInterfaceImpl createOspfInterface1() throws UnknownHostException {
-        ospfInterface = new OspfInterfaceImpl();
-        OspfAreaImpl ospfArea = new OspfAreaImpl();
-        OspfInterfaceChannelHandler ospfInterfaceChannelHandler = EasyMock.createMock(
-                OspfInterfaceChannelHandler.class);
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, ip4Address5,
-                                  ip4Address6, 2, topologyForDeviceAndLink);
-        ospfNbr.setState(OspfNeighborState.FULL);
-        ospfNbr.setNeighborId(ip4Address7);
-        ospfInterface = new OspfInterfaceImpl();
-        ospfInterface.setIpAddress(ip4Address5);
-        ospfInterface.setIpNetworkMask(subnetAddress);
-        ospfInterface.setBdr(ip4Address4);
-        ospfInterface.setDr(ip4Address4);
-        ospfInterface.setHelloIntervalTime(20);
-        ospfInterface.setInterfaceType(2);
-        ospfInterface.setReTransmitInterval(2000);
-        ospfInterface.setMtu(6500);
-        ospfInterface.setRouterDeadIntervalTime(1000);
-        ospfInterface.setRouterPriority(1);
-        ospfInterface.setInterfaceType(1);
-        ospfInterface.addNeighbouringRouter(ospfNbr);
-        return ospfInterface;
-    }
-
-    /**
-     * Utility for test method.
-     */
-    private OspfInterfaceImpl createOspfInterface() throws Exception {
-        ospfInterface = new OspfInterfaceImpl();
-        LsaHeader lsaHeader = new LsaHeader();
-        lsaHeader.setLsType(OspfLsaType.ROUTER.value());
-        RouterLsa routerLsa = new RouterLsa();
-        OspfAreaImpl ospfArea = new OspfAreaImpl();
-        ospfArea.addLsa(routerLsa, true, ospfInterface);
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, ip4Address5,
-                                  ip4Address6, 2, topologyForDeviceAndLink);
-        ospfNbr.setState(OspfNeighborState.EXSTART);
-        ospfNbr.setNeighborId(ip4Address7);
-        this.ospfInterface = new OspfInterfaceImpl();
-        this.ospfInterface.setIpAddress(ip4Address5);
-        this.ospfInterface.setIpNetworkMask(subnetAddress);
-        this.ospfInterface.setBdr(ip4Address4);
-        this.ospfInterface.setDr(ip4Address4);
-        this.ospfInterface.setHelloIntervalTime(20);
-        this.ospfInterface.setInterfaceType(2);
-        this.ospfInterface.setReTransmitInterval(2000);
-        this.ospfInterface.setMtu(6500);
-        this.ospfInterface.setRouterDeadIntervalTime(1000);
-        this.ospfInterface.setRouterPriority(1);
-        this.ospfInterface.setInterfaceType(1);
-        this.ospfInterface.setInterfaceIndex(1);
-        this.ospfInterface.addNeighbouringRouter(ospfNbr);
-        this.ospfInterface.setOspfArea(ospfArea);
-        return this.ospfInterface;
-    }
-
-    /**
-     * Utility for test method.
-     */
-    private DdPacket createDdPacket() throws OspfParseException {
-        byte[] ddPacket = {2, 2, 0, 32, -64, -88, -86, 8, 0, 0, 0, 1, -96, 82,
-                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -36, 2, 7, 65, 119, -87, 126};
-        DdPacket ddPacket1 = new DdPacket();
-        ChannelBuffer buf = ChannelBuffers.buffer(ddPacket.length);
-        buf.writeBytes(ddPacket);
-        ddPacket1.readFrom(buf);
-        return ddPacket1;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfLinkTedImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfLinkTedImplTest.java
deleted file mode 100644
index 87fc853..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfLinkTedImplTest.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onlab.util.Bandwidth;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for OspfDeviceTedImpl.
- */
-public class OspfLinkTedImplTest {
-    private OspfLinkTedImpl ospfLinkTed;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfLinkTed = new OspfLinkTedImpl();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfLinkTed = null;
-    }
-
-    /**
-     * Tests maximumLink() getter method.
-     */
-    @Test
-    public void testMaximumLink() throws Exception {
-
-        ospfLinkTed.setMaximumLink(Bandwidth.bps(1234));
-        assertThat(ospfLinkTed.maximumLink(), is(Bandwidth.bps(1234)));
-    }
-
-    /**
-     * Tests maximumLink() setter method.
-     */
-    @Test
-    public void testSetMaximumLink() throws Exception {
-        ospfLinkTed.setMaximumLink(Bandwidth.bps(1234));
-        assertThat(ospfLinkTed.maximumLink(), is(Bandwidth.bps(1234)));
-    }
-
-    /**
-     * Tests ipv6RemRouterId() getter method.
-     */
-    @Test
-    public void testIpv6RemRouterId() throws Exception {
-        List list = new ArrayList();
-        ospfLinkTed.setIpv6RemRouterId(list);
-        assertThat(ospfLinkTed.ipv6RemRouterId().size(), is(0));
-    }
-
-    /**
-     * Tests ipv6RemRouterId() setter method.
-     */
-    @Test
-    public void testSetIpv6RemRouterId() throws Exception {
-        List list = new ArrayList();
-        ospfLinkTed.setIpv6RemRouterId(list);
-        assertThat(ospfLinkTed.ipv6RemRouterId().size(), is(0));
-    }
-
-    /**
-     * Tests ipv4RemRouterId() getter method.
-     */
-    @Test
-    public void testIpv4RemRouterId() throws Exception {
-        List list = new ArrayList();
-        list.add(Ip4Address.valueOf(1));
-        ospfLinkTed.setIpv4RemRouterId(list);
-        assertThat(ospfLinkTed.ipv4RemRouterId().size(), is(1));
-    }
-
-    /**
-     * Tests ipv4RemRouterId() setter method.
-     */
-    @Test
-    public void testSetIpv4RemRouterId() throws Exception {
-        List list = new ArrayList();
-        list.add(Ip4Address.valueOf(1));
-        ospfLinkTed.setIpv4RemRouterId(list);
-        assertThat(ospfLinkTed.ipv4RemRouterId().size(), is(1));
-    }
-
-    /**
-     * Tests ipv6LocRouterId() getter method.
-     */
-    @Test
-    public void testIpv6LocRouterId() throws Exception {
-        List list = new ArrayList();
-        ospfLinkTed.setIpv4LocRouterId(list);
-        assertThat(ospfLinkTed.ipv6LocRouterId().size(), is(0));
-    }
-
-    /**
-     * Tests ipv6LocRouterId() setter method.
-     */
-    @Test
-    public void testSetIpv6LocRouterId() throws Exception {
-        List list = new ArrayList();
-        ospfLinkTed.setIpv4LocRouterId(list);
-        assertThat(ospfLinkTed.ipv6LocRouterId().size(), is(0));
-    }
-
-    /**
-     * Tests ipv4LocRouterId() getter method.
-     */
-    @Test
-    public void testIpv4LocRouterId() throws Exception {
-        List list = new ArrayList();
-        list.add(Ip4Address.valueOf(1));
-        ospfLinkTed.setIpv4LocRouterId(list);
-        assertThat(ospfLinkTed.ipv4LocRouterId().size(), is(1));
-    }
-
-    /**
-     * Tests ipv4LocRouterId() setter method.
-     */
-    @Test
-    public void testSetIpv4LocRouterId() throws Exception {
-        List list = new ArrayList();
-        list.add(Ip4Address.valueOf(1));
-        ospfLinkTed.setIpv4LocRouterId(list);
-        assertThat(ospfLinkTed.ipv4LocRouterId().size(), is(1));
-    }
-
-    /**
-     * Tests teMetric() getter method.
-     */
-    @Test
-    public void testTeMetric() throws Exception {
-        ospfLinkTed.setTeMetric(1234);
-        assertThat(ospfLinkTed.teMetric(), is(1234));
-    }
-
-    /**
-     * Tests teMetric() setter method.
-     */
-    @Test
-    public void testSetTeMetric() throws Exception {
-        ospfLinkTed.setTeMetric(1234);
-        assertThat(ospfLinkTed.teMetric(), is(1234));
-    }
-
-    /**
-     * Tests maxReserved() getter method.
-     */
-    @Test
-    public void testMaxReserved() throws Exception {
-        ospfLinkTed.setMaxReserved(Bandwidth.bps(1234));
-        assertThat(ospfLinkTed.maxReserved(), is(Bandwidth.bps(1234)));
-    }
-
-    /**
-     * Tests maxReserved() setter method.
-     */
-    @Test
-    public void testSetMaxReserved() throws Exception {
-        ospfLinkTed.setMaxReserved(Bandwidth.bps(1234));
-        assertThat(ospfLinkTed.maxReserved(), is(Bandwidth.bps(1234)));
-    }
-
-    /**
-     * Tests maxUnResBandwidth() getter method.
-     */
-    @Test
-    public void testMaxUnResBandwidth() throws Exception {
-        ospfLinkTed.setMaxUnResBandwidth(Bandwidth.bps(1234));
-        assertThat(ospfLinkTed.maxUnResBandwidth(), is(notNullValue()));
-    }
-
-    /**
-     * Tests maxUnResBandwidth() setter method.
-     */
-    @Test
-    public void testSetMaxUnResBandwidth() throws Exception {
-        ospfLinkTed.setMaxUnResBandwidth(Bandwidth.bps(1234.0));
-        assertThat(ospfLinkTed.maxUnResBandwidth(), is(notNullValue()));
-    }
-}
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageDecoderTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageDecoderTest.java
deleted file mode 100644
index a7dd372..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageDecoderTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for OspfMessageDecoder.
- */
-public class OspfMessageDecoderTest {
-
-    private final byte[] hellopacket = {0, 0, 0, 0, 0, 2, 1, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, 39, 59,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 10, 2, 1, 0, 0, 0,
-            40, -64, -88, -86, 8, 0, 0, 0, 0};
-    private final byte[] ddpacket = {0, 0, 0, 0, 2, 2, 0, 32, -64, -88, -86, 8, 0, 0, 0, 1, -96, 82,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -36, 2, 7, 65, 119, -87, 126};
-    private final byte[] ddpacket44 = {0, 0, 0, 0, 2, 2, 0, 10, -64, -88};
-    private final byte[] lsAckpacket = {0, 0, 0, 0, 2, 5, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, -30, -12,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 16, 2, 1, -64, -88, -86, 2, -64,
-            -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48};
-    private final byte[] lsUpdatePacket = {0, 0, 0, 0, 2, 4, 0, 76, -64, -88, -86, 3, 0, 0, 0, 1, 7, 111,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 14, 16, 2, 1, -64, -88,
-            -86, 2, -64, -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48, 2, 0, 0, 2,
-            -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10, -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10};
-    private final byte[] lsRequestPacket = {0, 0, 0, 0, 2, 3, 0, 36, -64, -88, -86, 3, 0, 0, 0, 1, -67, -57,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -64, -88, -86, 8, -64, -88, -86, 8};
-    private OspfMessageDecoder ospfMessageDecoder;
-    private ChannelHandlerContext ctx;
-    private Channel channel;
-    private SocketAddress socketAddress;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfMessageDecoder = new OspfMessageDecoder();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfMessageDecoder = null;
-        channel = null;
-        socketAddress = null;
-        channelBuffer = null;
-    }
-
-    /**
-     * Tests decode() method.
-     */
-    @Test
-    public void testDecode() throws Exception {
-        channel = EasyMock.createMock(Channel.class);
-        socketAddress = InetSocketAddress.createUnresolved("127.0.0.1", 7000);
-        channelBuffer = ChannelBuffers.copiedBuffer(hellopacket);
-        ospfMessageDecoder.decode(ctx, channel, channelBuffer);
-        assertThat(ospfMessageDecoder, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageEncoderTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageEncoderTest.java
deleted file mode 100644
index c356877..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageEncoderTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-
-import org.easymock.EasyMock;
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Created by sdn on 13/1/16.
- */
-public class OspfMessageEncoderTest {
-
-    private final byte[] object = {2, 1, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, 39,
-            59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 10, 2, 1, 0, 0,
-            0, 40, -64, -88, -86, 8, 0, 0, 0, 0};
-    private OspfMessageEncoder ospfMessageEncoder;
-    private ChannelHandlerContext channelHandlerContext;
-    private Channel channel;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfMessageEncoder = new OspfMessageEncoder();
-        channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class);
-        channel = EasyMock.createMock(Channel.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfMessageEncoder = null;
-    }
-
-    /**
-     * Tests encode() method.
-     */
-    @Test
-    public void testEncode() throws Exception {
-        assertThat(ospfMessageEncoder.encode(channelHandlerContext, channel, object), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfNbrImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfNbrImplTest.java
deleted file mode 100644
index 25e2ac6..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfNbrImplTest.java
+++ /dev/null
@@ -1,768 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-
-import org.easymock.EasyMock;
-import org.jboss.netty.channel.Channel;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfAreaAddressRange;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfLsa;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.controller.OspfMessage;
-import org.onosproject.ospf.controller.OspfNeighborState;
-import org.onosproject.ospf.controller.TopologyForDeviceAndLink;
-import org.onosproject.ospf.controller.area.OspfAreaAddressRangeImpl;
-import org.onosproject.ospf.controller.area.OspfAreaImpl;
-import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
-import org.onosproject.ospf.controller.lsdb.LsaWrapperImpl;
-import org.onosproject.ospf.controller.lsdb.LsdbAgeImpl;
-import org.onosproject.ospf.controller.util.OspfInterfaceType;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.lsa.types.NetworkLsa;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10;
-import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
-import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate;
-import org.onosproject.ospf.protocol.util.ChecksumCalculator;
-import org.onosproject.ospf.protocol.util.OspfInterfaceState;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-
-import java.net.SocketAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for OspfNbrImpl.
- */
-public class OspfNbrImplTest {
-    private List<OspfAreaAddressRange> addressRanges = new ArrayList();
-    private OspfNbrImpl ospfNbr;
-    private OspfNbrImpl ospfNbr1;
-    private OspfInterfaceImpl ospfInterface;
-    private OspfAreaImpl ospfArea;
-    private OspfInterfaceImpl ospfInterface1;
-    private OspfInterfaceImpl ospfInterface2;
-    private List<OspfInterface> ospfInterfaces = new ArrayList();
-    private List<OspfLsa> ospfLsaList;
-    private Channel channel;
-    private Channel channel1;
-    private Channel channel2;
-    private OspfMessage ospfMessage;
-    private TopologyForDeviceAndLink topologyForDeviceAndLink;
-    private LsaHeader lsaHeader;
-
-    @Before
-    public void setUp() throws Exception {
-        lsaHeader = new LsaHeader();
-        lsaHeader.setLsType(OspfLsaType.ROUTER.value());
-        RouterLsa routerLsa = new RouterLsa(lsaHeader);
-        routerLsa.setLsType(OspfLsaType.ROUTER.value());
-        ospfInterface = new OspfInterfaceImpl();
-        ospfInterface.setInterfaceType(2);
-        ospfInterface.setInterfaceIndex(1);
-        ospfInterface.setRouterDeadIntervalTime(30);
-        ospfInterface.setReTransmitInterval(30);
-        ospfInterface.setDr(Ip4Address.valueOf("1.1.1.1"));
-        ospfInterface.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        ospfInterface.setState(OspfInterfaceState.POINT2POINT);
-        ospfArea = createOspfArea();
-        ospfArea.addLsa(routerLsa, true, ospfInterface);
-        ospfInterface.setOspfArea(ospfArea);
-        ospfInterface1 = new OspfInterfaceImpl();
-        ospfInterface1.setInterfaceType(2);
-        ospfInterface1.setInterfaceIndex(1);
-        ospfInterface1.setRouterDeadIntervalTime(30);
-        ospfInterface1.setReTransmitInterval(30);
-        ospfInterface1.setDr(Ip4Address.valueOf("7.7.7.7"));
-        ospfInterface1.setIpAddress(Ip4Address.valueOf("7.7.7.7"));
-        ospfInterface1.setState(OspfInterfaceState.DOWN);
-        ospfInterface1.setOspfArea(ospfArea);
-        ospfInterface2 = new OspfInterfaceImpl();
-        ospfInterface2.setInterfaceType(2);
-        ospfInterface2.setInterfaceIndex(1);
-        ospfInterface2.setRouterDeadIntervalTime(30);
-        ospfInterface2.setReTransmitInterval(30);
-        ospfInterface2.setDr(Ip4Address.valueOf("6.6.6.6"));
-        ospfInterface2.setIpAddress(Ip4Address.valueOf("6.6.6.6"));
-        ospfInterface2.setOspfArea(ospfArea);
-        ospfInterface1.setState(OspfInterfaceState.DR);
-        ospfInterfaces = new ArrayList();
-        ospfInterfaces.add(ospfInterface);
-        ospfInterfaces.add(ospfInterface1);
-        ospfInterfaces.add(ospfInterface2);
-        ospfArea.setOspfInterfaceList(ospfInterfaces);
-        ospfInterface.setState(OspfInterfaceState.POINT2POINT);
-        ospfArea.setRouterId(Ip4Address.valueOf("111.111.111.111"));
-        topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl();
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("1.1.1.1"),
-                                  Ip4Address.valueOf("2.2.2.2"), 2,
-                                  topologyForDeviceAndLink);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfNbr = null;
-        ospfArea = null;
-        ospfInterface = null;
-        ospfLsaList = null;
-        channel = null;
-        channel1 = null;
-        channel2 = null;
-        ospfMessage = null;
-
-    }
-
-    /**
-     * Tests neighborIpAddr() method.
-     */
-    @Test
-    public void testNeighborIpAddr() throws Exception {
-        assertThat(ospfNbr.neighborIpAddr(), is(notNullValue()));
-    }
-
-    /**
-     * Tests isOpaqueCapable() getter method.
-     */
-    @Test
-    public void testIsOpaqueCapable() throws Exception {
-        assertThat(ospfNbr.isOpaqueCapable(), is(false));
-    }
-
-    /**
-     * Tests isOpaqueCapable() setter method.
-     */
-    @Test
-    public void testSetIsOpaqueCapable() throws Exception {
-        ospfNbr.setIsOpaqueCapable(true);
-        assertThat(ospfNbr.isOpaqueCapable(), is(true));
-    }
-
-    /**
-     * Tests oneWayReceived() method.
-     */
-    @Test
-    public void testOneWayReceived() throws Exception {
-        ospfMessage = new HelloPacket();
-        ospfNbr.setState(OspfNeighborState.ATTEMPT);
-        channel = EasyMock.createMock(Channel.class);
-        ospfNbr.oneWayReceived(ospfMessage, channel);
-        channel1 = EasyMock.createMock(Channel.class);
-        ospfNbr.setState(OspfNeighborState.DOWN);
-        ospfNbr.oneWayReceived(ospfMessage, channel1);
-        channel2 = EasyMock.createMock(Channel.class);
-        ospfNbr.setState(OspfNeighborState.TWOWAY);
-        ospfNbr.oneWayReceived(ospfMessage, channel2);
-        assertThat(ospfNbr, is(notNullValue()));
-    }
-
-    /**
-     * Tests twoWayReceived() method.
-     */
-    @Test(expected = Exception.class)
-    public void testTwoWayReceived() throws Exception {
-        ospfNbr.setNeighborDr(Ip4Address.valueOf("1.1.1.1"));
-        ospfMessage = new HelloPacket();
-        ospfNbr.setState(OspfNeighborState.ATTEMPT);
-        ospfNbr.setNeighborDr(Ip4Address.valueOf("2.2.2.2"));
-        ospfInterface.setIpAddress(Ip4Address.valueOf("2.2.2.2"));
-        channel = EasyMock.createMock(Channel.class);
-        SocketAddress socketAddress = EasyMock.createMock(SocketAddress.class);
-        channel.bind(socketAddress);
-        ospfNbr.twoWayReceived(ospfMessage, channel);
-        ospfInterface.setIpAddress(Ip4Address.valueOf("3.3.3.3"));
-        channel1 = EasyMock.createMock(Channel.class);
-        ospfNbr.twoWayReceived(ospfMessage, channel1);
-        assertThat(ospfNbr, is(notNullValue()));
-    }
-
-    /**
-     * Tests negotiationDone() method.
-     */
-    @Test
-    public void testNegotiationDone() throws Exception {
-
-        ospfLsaList = new ArrayList();
-        RouterLsa routerLsa = new RouterLsa();
-        routerLsa.setLsType(OspfLsaType.ROUTER.value());
-        ospfLsaList.add(routerLsa);
-        DdPacket ddPacket = new DdPacket();
-        ddPacket.setIsOpaqueCapable(true);
-        ospfMessage = ddPacket;
-        ospfNbr.setState(OspfNeighborState.EXSTART);
-        ospfNbr.setIsOpaqueCapable(true);
-        channel = null;
-        channel = EasyMock.createMock(Channel.class);
-        ospfNbr.negotiationDone(ospfMessage, true, ospfLsaList, channel);
-        channel1 = EasyMock.createMock(Channel.class);
-        ospfNbr.negotiationDone(ospfMessage, false, ospfLsaList, channel1);
-        assertThat(ospfNbr, is(notNullValue()));
-    }
-
-    /**
-     * Tests processLsas() method.
-     */
-    @Test
-    public void testProcessLsas() throws Exception {
-        ospfLsaList = new ArrayList();
-        RouterLsa routerLsa = new RouterLsa();
-        routerLsa.setLsType(1);
-        ospfLsaList.add(routerLsa);
-        NetworkLsa networkLsa = new NetworkLsa();
-        routerLsa.setLsType(2);
-        ospfLsaList.add(networkLsa);
-        routerLsa.setLsType(3);
-        ospfLsaList.add(routerLsa);
-        ospfNbr.processLsas(ospfLsaList);
-        assertThat(ospfNbr, is(notNullValue()));
-    }
-
-    /**
-     * Tests seqNumMismatch() method.
-     */
-    @Test
-    public void testSeqNumMismatch() throws Exception {
-        ospfNbr.setState(OspfNeighborState.FULL);
-        assertThat(ospfNbr.seqNumMismatch("samelsa"), is(notNullValue()));
-    }
-
-    /**
-     * Tests badLSReq() method.
-     */
-    @Test
-    public void testBadLSReq() throws Exception {
-        channel = EasyMock.createMock(Channel.class);
-        ospfNbr.setState(OspfNeighborState.EXCHANGE);
-        ospfNbr.badLSReq(channel);
-        assertThat(ospfNbr, is(notNullValue()));
-    }
-
-    /**
-     * Tests processDdPacket() method.
-     */
-    @Test
-    public void testProcessDdPacket() throws Exception {
-        ospfArea.addLsa(new RouterLsa(), false, ospfInterface);
-        ospfArea.addLsa(new RouterLsa(), ospfInterface);
-        ospfArea.addLsaToMaxAgeBin("lsa", new LsaWrapperImpl());
-        channel = EasyMock.createMock(Channel.class);
-        DdPacket ddPacket = new DdPacket();
-        ddPacket.addLsaHeader(new LsaHeader());
-        ospfNbr.processDdPacket(true, ddPacket, channel);
-        channel1 = EasyMock.createMock(Channel.class);
-        ddPacket.setIsMore(1);
-        ospfNbr.processDdPacket(false, ddPacket, channel1);
-        assertThat(ospfNbr, is(notNullValue()));
-    }
-
-    /**
-     * Tests exchangeDone() method.
-     */
-    @Test
-    public void testExchangeDone() throws Exception {
-        ospfMessage = new HelloPacket();
-        channel = EasyMock.createMock(Channel.class);
-        ospfNbr.setState(OspfNeighborState.EXCHANGE);
-        ospfNbr.exchangeDone(ospfMessage, channel);
-        assertThat(ospfNbr, is(notNullValue()));
-    }
-
-    /**
-     * Tests exchangeDone() method.
-     */
-    @Test
-    public void testExchangeDone1() throws Exception {
-        ospfMessage = new HelloPacket();
-        channel = EasyMock.createMock(Channel.class);
-        ospfNbr.setState(OspfNeighborState.EXCHANGE);
-        ospfLsaList = new ArrayList();
-        RouterLsa routerLsa = new RouterLsa();
-        routerLsa.setLsType(1);
-        ospfLsaList.add(routerLsa);
-        NetworkLsa networkLsa = new NetworkLsa();
-        routerLsa.setLsType(2);
-        ospfLsaList.add(networkLsa);
-        routerLsa.setLsType(3);
-        ospfLsaList.add(routerLsa);
-        ospfNbr.processLsas(ospfLsaList);
-        ospfNbr.setState(OspfNeighborState.EXCHANGE);
-        ospfNbr.exchangeDone(ospfMessage, channel);
-        assertThat(ospfNbr, is(notNullValue()));
-    }
-
-    /**
-     * Tests adjOk() method.
-     */
-    @Test
-    public void testAdjOk() throws Exception {
-        channel = EasyMock.createMock(Channel.class);
-        ospfInterface.setInterfaceType(OspfInterfaceType.BROADCAST.value());
-        ospfInterface.setIpAddress(Ip4Address.valueOf("2.2.2.2"));
-        ospfNbr1 = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("1.1.1.1"),
-                                   Ip4Address.valueOf("2.2.2.2"), 2,
-                                   topologyForDeviceAndLink);
-        ospfNbr1.setState(OspfNeighborState.TWOWAY);
-        ospfNbr1.setNeighborDr(Ip4Address.valueOf("2.2.2.2"));
-        ospfNbr1.adjOk(channel);
-        assertThat(ospfNbr1, is(notNullValue()));
-
-        ospfInterface.setInterfaceType(OspfInterfaceType.POINT_TO_POINT.value());
-        ospfNbr1 = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("1.1.1.1"),
-                                   Ip4Address.valueOf("2.2.2.2"), 2,
-                                   topologyForDeviceAndLink);
-        channel = null;
-        channel = EasyMock.createMock(Channel.class);
-        ospfNbr1.adjOk(channel);
-        assertThat(ospfNbr1, is(notNullValue()));
-    }
-
-    /**
-     * Tests processLsUpdate() method.
-     */
-    @Test
-    public void testProcessLsUpdate() throws Exception {
-        LsUpdate ospfMessage = new LsUpdate();
-        ospfMessage.setSourceIp(Ip4Address.valueOf("10.10.10.10"));
-        ospfMessage.addLsa(new RouterLsa());
-        ospfMessage.addLsa(new NetworkLsa());
-        channel = EasyMock.createMock(Channel.class);
-        ospfNbr.setState(OspfNeighborState.EXCHANGE);
-        ospfNbr.processLsUpdate(ospfMessage, channel);
-        assertThat(ospfNbr, is(notNullValue()));
-    }
-
-    /**
-     * Tests loadingDone() method.
-     */
-    @Test
-    public void testLoadingDone() throws Exception {
-        LsaHeader lsaHeader = new LsaHeader();
-        lsaHeader.setLsType(OspfLsaType.ROUTER.value());
-        RouterLsa routerLsa = new RouterLsa(lsaHeader);
-        ospfArea.addLsa(routerLsa, false, ospfInterface);
-        ospfArea.addLsa(routerLsa, ospfInterface);
-        ospfArea.addLsaToMaxAgeBin("lsa", new LsaWrapperImpl());
-        ospfNbr.loadingDone();
-        assertThat(ospfNbr, is(notNullValue()));
-    }
-
-    /**
-     * Tests processReceivedLsa() method.
-     */
-    @Test
-    public void testProcessReceivedLsa() throws Exception {
-        LsaWrapperImpl lsaWrapper = new LsaWrapperImpl();
-        LsdbAgeImpl lsdbAge = new LsdbAgeImpl(new OspfAreaImpl());
-        lsdbAge.ageLsaAndFlood();
-        lsaWrapper.setLsdbAge(lsdbAge);
-        lsaWrapper.setLsaHeader(new NetworkLsa());
-        RouterLsa routerlsa = new RouterLsa();
-        routerlsa.setLsType(1);
-        routerlsa.setOptions(2);
-        routerlsa.setAdvertisingRouter(Ip4Address.valueOf("1.1.1.1"));
-        routerlsa.setAge(100);
-        routerlsa.setLinkStateId("2.2.2.2");
-        routerlsa.setLsSequenceNo(1010101);
-        lsaWrapper.setLsaHeader(new RouterLsa());
-        ospfArea.addLsa(routerlsa, false, ospfInterface);
-
-        lsaWrapper.addLsa(OspfLsaType.ROUTER, routerlsa);
-        ospfArea.addLsa(routerlsa, ospfInterface);
-        ospfArea.addLsaToMaxAgeBin("lsa", new LsaWrapperImpl());
-        byte[] res = routerlsa.asBytes();
-        routerlsa.setLsPacketLen(res.length);
-        res = new ChecksumCalculator().calculateLsaChecksum(routerlsa.asBytes(), 16, 17);
-        routerlsa.setLsCheckSum(OspfUtil.byteToInteger(res));
-        channel = EasyMock.createMock(Channel.class);
-        lsdbAge.ageLsaAndFlood();
-        assertThat(ospfNbr.processReceivedLsa(lsaWrapper.lsaHeader(), true, channel,
-                                              Ip4Address.valueOf("10.10.10.10")), is(true));
-        channel1 = EasyMock.createMock(Channel.class);
-        assertThat(ospfNbr.processReceivedLsa(routerlsa, true, channel1,
-                                              Ip4Address.valueOf("10.10.10.10")), is(true));
-
-    }
-
-    /**
-     * Tests isNullorLatest() method.
-     */
-    @Test
-    public void testIsNullorLatest() throws Exception {
-
-        LsaWrapperImpl lsaWrapper = new LsaWrapperImpl();
-        LsdbAgeImpl lsdbAge = new LsdbAgeImpl(new OspfAreaImpl());
-        lsdbAge.ageLsaAndFlood();
-        lsaWrapper.setLsdbAge(lsdbAge);
-        lsaWrapper.setLsaHeader(new LsaHeader());
-        lsaWrapper.addLsa(OspfLsaType.ROUTER, new RouterLsa());
-        assertThat(ospfNbr.isNullorLatest(lsaWrapper, new LsaHeader()), is(notNullValue()));
-    }
-
-    /**
-     * Tests processSelfOriginatedLsa() method.
-     */
-    @Test
-    public void testProcessSelfOriginatedLsa() throws Exception {
-        ospfNbr.processSelfOriginatedLsa();
-        assertThat(ospfNbr, is(notNullValue()));
-    }
-
-    /**
-     * Tests sendLsa() method.
-     */
-    @Test
-    public void testSendLsa() throws Exception {
-        channel = EasyMock.createMock(Channel.class);
-        ospfNbr.sendLsa(lsaHeader, Ip4Address.valueOf("1.1.1.1"), channel);
-        assertThat(ospfNbr, is(notNullValue()));
-    }
-
-    /**
-     * Tests directAcknowledge() method.
-     */
-    @Test
-    public void testDirectAcknowledge() throws Exception {
-        channel = EasyMock.createMock(Channel.class);
-        ospfNbr.directAcknowledge(new LsaHeader(), channel, Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfNbr, is(notNullValue()));
-    }
-
-    /**
-     * Tests neighborDown() method.
-     */
-    @Test(expected = Exception.class)
-    public void testNeighborDown() throws Exception {
-        ospfNbr.neighborDown();
-        assertThat(ospfNbr, is(notNullValue()));
-    }
-
-    /**
-     * Tests startFloodingTimer() method.
-     */
-    @Test
-    public void testStartFloodingTimer() throws Exception {
-        channel = EasyMock.createMock(Channel.class);
-        ospfNbr.startFloodingTimer(channel);
-        assertThat(ospfNbr, is(notNullValue()));
-    }
-
-    /**
-     * Tests lastDdPacket() getter method.
-     */
-    @Test
-    public void testGetLastDdPacket() throws Exception {
-        ospfNbr.setLastDdPacket(new DdPacket());
-        assertThat(ospfNbr.lastDdPacket(), is(notNullValue()));
-    }
-
-    /**
-     * Tests lastDdPacket() setter method.
-     */
-    @Test
-    public void testSetLastDdPacket() throws Exception {
-        ospfNbr.setLastDdPacket(new DdPacket());
-        assertThat(ospfNbr.lastDdPacket(), is(notNullValue()));
-    }
-
-    /**
-     * Tests neighborId() getter method.
-     */
-    @Test
-    public void testNeighborId() throws Exception {
-        ospfNbr.setNeighborId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfNbr.neighborId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests neighborId() setter method.
-     */
-    @Test
-    public void testSetNeighborId() throws Exception {
-        ospfNbr.setNeighborId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfNbr.neighborId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests neighborDr() getter method.
-     */
-    @Test
-    public void testNeighborDr() throws Exception {
-        ospfNbr.setNeighborDr(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfNbr.neighborDr(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests neighborDr() setter method.
-     */
-    @Test
-    public void testSetNeighborDr() throws Exception {
-        ospfNbr.setNeighborDr(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfNbr.neighborDr(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests neighborBdr() getter method.
-     */
-    @Test
-    public void testNeighborBdr() throws Exception {
-        ospfNbr.setNeighborBdr(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfNbr.neighborBdr(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests neighborBdr() setter method.
-     */
-    @Test
-    public void testSetNeighborBdr() throws Exception {
-        ospfNbr.setNeighborBdr(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfNbr.neighborBdr(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests routerPriority() getter method.
-     */
-    @Test
-    public void testRouterPriority() throws Exception {
-        ospfNbr.setRouterPriority(1);
-        assertThat(ospfNbr.routerPriority(), is(1));
-    }
-
-    /**
-     * Tests routerPriority() setter method.
-     */
-    @Test
-    public void testSetRouterPriority() throws Exception {
-        ospfNbr.setRouterPriority(1);
-        assertThat(ospfNbr.routerPriority(), is(1));
-    }
-
-    /**
-     * Tests options() getter method.
-     */
-    @Test
-    public void testGetOptions() throws Exception {
-        ospfNbr.setOptions(1);
-        assertThat(ospfNbr.options(), is(1));
-    }
-
-    /**
-     * Tests options() setter method.
-     */
-    @Test
-    public void testSetOptions() throws Exception {
-        ospfNbr.setOptions(1);
-        assertThat(ospfNbr.options(), is(1));
-    }
-
-    /**
-     * Tests ddSeqNum() getter method.
-     */
-    @Test
-    public void testGetDdSeqNum() throws Exception {
-        ospfNbr.setDdSeqNum(1);
-        assertThat(ospfNbr.ddSeqNum(), is(1L));
-    }
-
-    /**
-     * Tests ddSeqNum() setter method.
-     */
-    @Test
-    public void testSetDdSeqNum() throws Exception {
-        ospfNbr.setDdSeqNum(1);
-        assertThat(ospfNbr.ddSeqNum(), is(1L));
-    }
-
-    /**
-     * Tests isMaster() getter method.
-     */
-    @Test
-    public void testIsMaster() throws Exception {
-        ospfNbr.setIsMaster(1);
-        assertThat(ospfNbr.isMaster(), is(1));
-    }
-
-    /**
-     * Tests lastDdPacket() getter method.
-     */
-    @Test
-    public void testGetLastSentDdPacket() throws Exception {
-        ospfNbr.setLastDdPacket(new DdPacket());
-        assertThat(ospfNbr.lastDdPacket(), is(notNullValue()));
-    }
-
-    /**
-     * Tests lastDdPacket() setter method.
-     */
-    @Test
-    public void testSetLastSentDdPacket() throws Exception {
-        ospfNbr.setLastDdPacket(new DdPacket());
-        assertThat(ospfNbr.lastDdPacket(), is(notNullValue()));
-    }
-
-    /**
-     * Tests getLastSentLsrPacket() getter method.
-     */
-    @Test
-    public void testGetLastSentLsrPacket() throws Exception {
-        ospfNbr.setLastSentLsrPacket(new LsRequest());
-        assertThat(ospfNbr.getLastSentLsrPacket(), is(notNullValue()));
-    }
-
-    /**
-     * Tests getLastSentLsrPacket() setter method.
-     */
-    @Test
-    public void testSetLastSentLsrPacket() throws Exception {
-        ospfNbr.setLastSentLsrPacket(new LsRequest());
-        assertThat(ospfNbr.getLastSentLsrPacket(), is(notNullValue()));
-    }
-
-    /**
-     * Tests getState() getter method.
-     */
-    @Test
-    public void testGetState() throws Exception {
-        ospfNbr.setState(OspfNeighborState.EXCHANGE);
-        assertThat(ospfNbr.getState(), is(OspfNeighborState.EXCHANGE));
-    }
-
-    /**
-     * Tests getState() setter method.
-     */
-    @Test
-    public void testSetState() throws Exception {
-        ospfNbr.setState(OspfNeighborState.EXCHANGE);
-        assertThat(ospfNbr.getState(), is(OspfNeighborState.EXCHANGE));
-    }
-
-    /**
-     * Tests isMaster() setter method.
-     */
-    @Test
-    public void testSetIsMaster() throws Exception {
-        ospfNbr.setIsMaster(1);
-        assertThat(ospfNbr.isMaster(), is(1));
-    }
-
-    /**
-     * Tests getLsReqList() method.
-     */
-    @Test
-    public void testGetLsReqList() throws Exception {
-        assertThat(ospfNbr.getLsReqList(), is(notNullValue()));
-    }
-
-    /**
-     * Tests getReTxList() method.
-     */
-    @Test
-    public void testGetReTxList() throws Exception {
-        assertThat(ospfNbr.getReTxList(), is(notNullValue()));
-    }
-
-    /**
-     * Tests getPendingReTxList() method.
-     */
-    @Test
-    public void testGetPendingReTxList() throws Exception {
-        assertThat(ospfNbr.getPendingReTxList(), is(notNullValue()));
-    }
-
-    /**
-     * Utility for test method.
-     */
-    private OspfAreaImpl createOspfArea() throws UnknownHostException {
-        OspfAreaAddressRangeImpl ospfAreaAddressRange;
-        ospfAreaAddressRange = createOspfAreaAddressRange();
-        addressRanges.add(ospfAreaAddressRange);
-        OspfAreaImpl ospfArea = new OspfAreaImpl();
-        ospfArea.setAreaId(Ip4Address.valueOf("10.226.165.164"));
-        ospfArea.setExternalRoutingCapability(true);
-        OspfInterfaceImpl ospfInterface = createOspfInterface();
-        ospfInterfaces.add(ospfInterface);
-        ospfArea.setOspfInterfaceList(ospfInterfaces);
-        RouterLsa routerLsa = new RouterLsa();
-        routerLsa.setLsType(1);
-        routerLsa.setLinkStateId("2.2.2.2");
-        routerLsa.setAdvertisingRouter(Ip4Address.valueOf("2.2.2.2"));
-        OpaqueLsaHeader opaqueLsaHeader = new OpaqueLsaHeader();
-        OpaqueLsa10 opaqueLsa10 = new OpaqueLsa10(opaqueLsaHeader);
-        opaqueLsa10.setLsType(OspfLsaType.AREA_LOCAL_OPAQUE_LSA.value());
-        opaqueLsa10.setLinkStateId("2.2.2.2");
-        opaqueLsa10.setAdvertisingRouter(Ip4Address.valueOf("2.2.2.2"));
-        try {
-            ospfArea.addLsa(routerLsa, false, ospfInterface);
-            ospfArea.addLsa(opaqueLsa10, false, ospfInterface);
-        } catch (Exception e) {
-            System.out.println("ospfAreaImpl createOspfArea");
-        }
-        ospfArea.setRouterId(Ip4Address.valueOf("111.111.111.111"));
-
-        return ospfArea;
-    }
-
-    /**
-     * Utility for test method.
-     */
-    private OspfAreaAddressRangeImpl createOspfAreaAddressRange() {
-        OspfAreaAddressRangeImpl ospfAreaAddressRange = new OspfAreaAddressRangeImpl();
-        ospfAreaAddressRange.setIpAddress(Ip4Address.valueOf("10.226.165.164"));
-        ospfAreaAddressRange.setAdvertise(true);
-        ospfAreaAddressRange.setMask("mask");
-        return ospfAreaAddressRange;
-    }
-
-    /**
-     * Utility for test method.
-     */
-    private OspfInterfaceImpl createOspfInterface() throws UnknownHostException {
-        ospfInterface = new OspfInterfaceImpl();
-        OspfAreaImpl ospfArea = new OspfAreaImpl();
-        OspfInterfaceChannelHandler ospfInterfaceChannelHandler = EasyMock.createMock(
-                OspfInterfaceChannelHandler.class);
-        ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.226.165.164"),
-                                  Ip4Address.valueOf("1.1.1.1"), 2,
-                                  topologyForDeviceAndLink);
-        ospfNbr.setState(OspfNeighborState.EXSTART);
-        ospfNbr.setNeighborId(Ip4Address.valueOf("10.226.165.100"));
-        this.ospfInterface = new OspfInterfaceImpl();
-        this.ospfInterface.setIpAddress(Ip4Address.valueOf("10.226.165.164"));
-        this.ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        this.ospfInterface.setBdr(Ip4Address.valueOf("111.111.111.111"));
-        this.ospfInterface.setDr(Ip4Address.valueOf("111.111.111.111"));
-        this.ospfInterface.setHelloIntervalTime(20);
-        this.ospfInterface.setInterfaceType(2);
-        this.ospfInterface.setReTransmitInterval(2000);
-        this.ospfInterface.setMtu(6500);
-        this.ospfInterface.setRouterDeadIntervalTime(1000);
-        this.ospfInterface.setRouterPriority(1);
-        this.ospfInterface.setInterfaceType(1);
-        this.ospfInterface.addNeighbouringRouter(ospfNbr);
-        return this.ospfInterface;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfPipelineFactoryTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfPipelineFactoryTest.java
deleted file mode 100644
index c1a546b..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfPipelineFactoryTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.jboss.netty.channel.ChannelPipeline;
-import org.junit.After;
-import org.junit.Before;
-
-/**
- * Unit test class for OspfPipelineFactory.
- */
-public class OspfPipelineFactoryTest {
-
-    private OspfPipelineFactory ospfPipelineFactory;
-    private ChannelPipeline channelPipeline;
-
-    @Before
-    public void setUp() throws Exception {
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfPipelineFactory = null;
-        channelPipeline = null;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfRouterImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfRouterImplTest.java
deleted file mode 100644
index 3221260..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfRouterImplTest.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.impl;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.IpAddress;
-import org.onosproject.ospf.controller.OspfDeviceTed;
-
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for OspfRouterImpl.
- */
-public class OspfRouterImplTest {
-    private OspfRouterImpl ospfRouter;
-    private OspfDeviceTed ospfDeviceTed;
-    private List<OspfDeviceTed> list;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfRouter = new OspfRouterImpl();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfRouter = null;
-    }
-
-    /**
-     * Tests routerIp() getter method.
-     */
-    @Test
-    public void testRouterIp() throws Exception {
-        ospfRouter.setRouterIp(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfRouter.routerIp(), is(IpAddress.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests routerIp() setter method.
-     */
-    @Test
-    public void testSetRouterIp() throws Exception {
-        ospfRouter.setRouterIp(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfRouter.routerIp(), is(IpAddress.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests areaIdOfInterface() getter method.
-     */
-    @Test
-    public void testAreaIdOfInterface() throws Exception {
-        ospfRouter.setAreaIdOfInterface(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfRouter.areaIdOfInterface(), is(IpAddress.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests areaIdOfInterface() setter method.
-     */
-    @Test
-    public void testSetAreaIdOfInterface() throws Exception {
-        ospfRouter.setAreaIdOfInterface(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfRouter.areaIdOfInterface(), is(IpAddress.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests interfaceId() getter method.
-     */
-    @Test
-    public void testInterfaceId() throws Exception {
-        ospfRouter.setInterfaceId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfRouter.interfaceId(), is(IpAddress.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests interfaceId() setter method.
-     */
-    @Test
-    public void testSetInterfaceId() throws Exception {
-        ospfRouter.setInterfaceId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfRouter.interfaceId(), is(IpAddress.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests isDr() setter method.
-     */
-    @Test
-    public void testSetDr() throws Exception {
-        ospfRouter.setDr(true);
-        assertThat(ospfRouter.isDr(), is(true));
-    }
-
-    /**
-     * Tests isDr() getter method.
-     */
-    @Test
-    public void testIsDr() throws Exception {
-        ospfRouter.setDr(true);
-        assertThat(ospfRouter.isDr(), is(true));
-    }
-
-    /**
-     * Tests isOpaque() setter method.
-     */
-    @Test
-    public void testSetOpaque() throws Exception {
-        ospfRouter.setOpaque(true);
-        assertThat(ospfRouter.isOpaque(), is(true));
-    }
-
-    /**
-     * Tests isOpaque() getter method.
-     */
-    @Test
-    public void testisOpaque() throws Exception {
-        ospfRouter.setOpaque(true);
-        assertThat(ospfRouter.isOpaque(), is(true));
-    }
-
-    /**
-     * Tests deviceTed() getter method.
-     */
-    @Test
-    public void testDeviceTed() throws Exception {
-        ospfRouter.setDeviceTed(new OspfDeviceTedImpl());
-        assertThat(ospfRouter.deviceTed(), is(notNullValue()));
-    }
-
-    /**
-     * Tests deviceTed() Setter method.
-     */
-    @Test
-    public void testSetDeviceTed() throws Exception {
-        ospfRouter.setDeviceTed(new OspfDeviceTedImpl());
-        assertThat(ospfRouter.deviceTed(), is(notNullValue()));
-    }
-
-    /**
-     * Tests neighborRouterId() getter method.
-     */
-    @Test
-    public void testNeighborRouterId() throws Exception {
-        ospfRouter.setNeighborRouterId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfRouter.neighborRouterId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests neighborRouterId() Setter method.
-     */
-    @Test
-    public void testSetNeighborRouterId() throws Exception {
-        ospfRouter.setNeighborRouterId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfRouter.neighborRouterId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/TopologyForDeviceAndLinkImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/TopologyForDeviceAndLinkImplTest.java
deleted file mode 100644
index 6955a2c..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/TopologyForDeviceAndLinkImplTest.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
-* Copyright 2016-present Open Networking Foundation
-*
-* 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.ospf.controller.impl;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.DeviceInformation;
-import org.onosproject.ospf.controller.OspfLinkTed;
-import org.onosproject.ospf.controller.OspfLsa;
-import org.onosproject.ospf.controller.area.OspfAreaImpl;
-import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-import org.onosproject.ospf.protocol.lsa.subtypes.OspfLsaLink;
-import org.onosproject.ospf.protocol.lsa.tlvtypes.LinkTlv;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10;
-import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
-
-import java.util.List;
-import java.util.Map;
-
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for TopologyForDeviceAndLinkImpl.
- */
-public class TopologyForDeviceAndLinkImplTest {
-    private final byte[] packet = {0, 9, 0, 4, 0, 0, 0, 1,
-            0, 9, 0, 4, 0, 0, 0, 1,
-            0, 1, 0, 4, 0, 0, 0, 1,
-            0, 2, 0, 4, 0, 0, 0, 1,
-            0, 3, 0, 4, 0, 0, 0, 1,
-            0, 4, 0, 4, 0, 0, 0, 1,
-            0, 6, 0, 4, 0, 0, 0, 1,
-            0, 7, 0, 4, 0, 0, 0, 1,
-            0, 8, 0, 4, 0, 0, 0, 1,
-    };
-    private TopologyForDeviceAndLinkImpl topologyForDeviceAndLink;
-    private Map result;
-    private LinkTlv linkTlv;
-    private TlvHeader header;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        topologyForDeviceAndLink = null;
-    }
-
-    /**
-     * Tests deviceInformationMap() method.
-     */
-    @Test
-    public void testDeviceInformationMap() throws Exception {
-        result = topologyForDeviceAndLink.deviceInformationMap();
-        assertThat(result.size(), is(0));
-    }
-
-    /**
-     * Tests setDeviceInformationMap() method.
-     */
-    @Test
-    public void testSetDeviceInformationMap() throws Exception {
-        topologyForDeviceAndLink.setDeviceInformationMap("1.1.1.1", new DeviceInformationImpl());
-        result = topologyForDeviceAndLink.deviceInformationMap();
-        assertThat(result.size(), is(1));
-    }
-
-    /**
-     * Tests deviceInformation() method.
-     */
-    @Test
-    public void testDeviceInformation() throws Exception {
-        topologyForDeviceAndLink.setDeviceInformationMap("1.1.1.1", new DeviceInformationImpl());
-        DeviceInformation deviceInformation = topologyForDeviceAndLink.deviceInformation("1.1.1.1");
-        assertThat(deviceInformation, is(notNullValue()));
-    }
-
-    /**
-     * Tests removeDeviceInformationMap() method.
-     */
-    @Test
-    public void testRemoveDeviceInformationMap() throws Exception {
-        topologyForDeviceAndLink.setDeviceInformationMap("1.1.1.1", new DeviceInformationImpl());
-        topologyForDeviceAndLink.deviceInformation("1.1.1.1");
-        result = topologyForDeviceAndLink.deviceInformationMap();
-        topologyForDeviceAndLink.removeDeviceInformationMap("1.1.1.1");
-        assertThat(result.size(), is(0));
-    }
-
-    /**
-     * Tests linkInformationMap() method.
-     */
-    @Test
-    public void testLinkInformationMap() throws Exception {
-        result = topologyForDeviceAndLink.linkInformationMap();
-        assertThat(result.size(), is(0));
-    }
-
-    /**
-     * Tests setLinkInformationMap() method.
-     */
-    @Test
-    public void testSetLinkInformationMap() throws Exception {
-        topologyForDeviceAndLink.setLinkInformationMap("1.1.1.1", new LinkInformationImpl());
-        result = topologyForDeviceAndLink.linkInformationMap();
-        assertThat(result.size(), is(1));
-    }
-
-    /**
-     * Tests removeLinkInformationMap() method.
-     */
-    @Test
-    public void testRemoveLinkInformationMap() throws Exception {
-        topologyForDeviceAndLink.setLinkInformationMap("1.1.1.1", new LinkInformationImpl());
-        topologyForDeviceAndLink.removeLinkInformationMap("1.1.1.1");
-        result = topologyForDeviceAndLink.linkInformationMap();
-        assertThat(result.size(), is(0));
-    }
-
-    /**
-     * Tests getOspfLinkTedHashMap() method.
-     */
-    @Test
-    public void testGetOspfLinkTedHashMap() throws Exception {
-        OspfLinkTed ospfLinkTed = topologyForDeviceAndLink.getOspfLinkTedHashMap("1.1.1.1");
-        assertThat(ospfLinkTed, is(nullValue()));
-    }
-
-    /**
-     * Tests addLocalDevice() method.
-     */
-    @Test
-    public void testAddLocalDevice() throws Exception {
-        OspfAreaImpl ospfArea = new OspfAreaImpl();
-        ospfArea.setRouterId(Ip4Address.valueOf("5.5.5.5"));
-        topologyForDeviceAndLink.addLocalDevice(createOspfLsa(), new OspfInterfaceImpl(), ospfArea);
-        topologyForDeviceAndLink.addLocalDevice(createOspfLsa1(), new OspfInterfaceImpl(), ospfArea);
-        assertThat(topologyForDeviceAndLink, is(notNullValue()));
-    }
-
-    /**
-     * Tests addLocalLink() method.
-     */
-    @Test
-    public void testAddLocalLink() throws Exception {
-        Ip4Address linkData = Ip4Address.valueOf("1.1.1.1");
-        Ip4Address linkSrc = Ip4Address.valueOf("2.2.2.2");
-        Ip4Address linkDest = Ip4Address.valueOf("3.3.3.3");
-        boolean opaqueEnabled = true;
-        boolean linkSrcIdNotRouterId = true;
-        topologyForDeviceAndLink.addLocalLink("10.10.10.10", linkData, linkSrc,
-                                              linkDest, opaqueEnabled, linkSrcIdNotRouterId);
-        assertThat(topologyForDeviceAndLink, is(notNullValue()));
-    }
-
-    /**
-     * Tests removeLinks() method.
-     */
-    @Test
-    public void testRemoveLinks() throws Exception {
-        Ip4Address linkData = Ip4Address.valueOf("1.1.1.1");
-        Ip4Address linkSrc = Ip4Address.valueOf("2.2.2.2");
-        Ip4Address linkDest = Ip4Address.valueOf("3.3.3.3");
-        boolean opaqueEnabled = true;
-        boolean linkSrcIdNotRouterId = true;
-        topologyForDeviceAndLink.addLocalLink("10.10.10.10", linkData, linkSrc,
-                                              linkDest, opaqueEnabled, linkSrcIdNotRouterId);
-        topologyForDeviceAndLink.removeLinks(Ip4Address.valueOf("10.10.10.10"));
-        assertThat(topologyForDeviceAndLink, is(notNullValue()));
-    }
-
-    /**
-     * Tests updateLinkInformation() method.
-     */
-    @Test
-    public void testUpdateLinkInformation() throws Exception {
-        OspfAreaImpl ospfArea = new OspfAreaImpl();
-        ospfArea.setRouterId(Ip4Address.valueOf("5.5.5.5"));
-        topologyForDeviceAndLink.updateLinkInformation(createOspfLsa(), ospfArea);
-        assertThat(topologyForDeviceAndLink, is(notNullValue()));
-    }
-
-    /**
-     * Tests getDeleteRouterInformation() method.
-     */
-    @Test
-    public void testGetDeleteRouterInformation() throws Exception {
-        OspfAreaImpl ospfArea = new OspfAreaImpl();
-        ospfArea.setRouterId(Ip4Address.valueOf("5.5.5.5"));
-        topologyForDeviceAndLink.updateLinkInformation(createOspfLsa(), ospfArea);
-        List list = topologyForDeviceAndLink.getDeleteRouterInformation(createOspfLsa(), ospfArea);
-        assertThat(list, is(notNullValue()));
-    }
-
-    /**
-     * Utility for test methods.
-     */
-    private OspfLsa createOspfLsa() {
-        RouterLsa routerLsa = new RouterLsa();
-        routerLsa.setLsType(1);
-        routerLsa.setAdvertisingRouter(Ip4Address.valueOf("6.6.6.6"));
-        OspfLsaLink ospfLsaLink = new OspfLsaLink();
-        ospfLsaLink.setLinkData("192.168.7.77");
-        ospfLsaLink.setLinkId("9.9.9.9");
-        ospfLsaLink.setLinkType(1);
-        OspfLsaLink ospfLsaLink0 = new OspfLsaLink();
-        ospfLsaLink0.setLinkData("7.7.7.7");
-        ospfLsaLink0.setLinkId("7.7.7.7");
-        ospfLsaLink0.setLinkType(2);
-        OspfLsaLink ospfLsaLink120 = new OspfLsaLink();
-        ospfLsaLink120.setLinkData("192.168.7.77");
-        ospfLsaLink120.setLinkId("1.1.1.1");
-        ospfLsaLink120.setLinkType(1);
-        OspfLsaLink lsaLink = new OspfLsaLink();
-        lsaLink.setLinkData("192.168.7.77");
-        lsaLink.setLinkId("14.14.14.14");
-        lsaLink.setLinkType(2);
-        routerLsa.addRouterLink(lsaLink);
-        routerLsa.addRouterLink(ospfLsaLink);
-        routerLsa.addRouterLink(ospfLsaLink0);
-        routerLsa.addRouterLink(ospfLsaLink120);
-        return routerLsa;
-    }
-
-    /**
-     * Utility for test methods.
-     */
-    private OspfLsa createOspfLsa1() throws Exception {
-        OpaqueLsa10 opaqueLsa10 = new OpaqueLsa10(new OpaqueLsaHeader());
-        opaqueLsa10.setLsType(10);
-        header = new TlvHeader();
-        header.setTlvLength(8);
-        header.setTlvType(9);
-        linkTlv = new LinkTlv(header);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        linkTlv.readFrom(channelBuffer);
-        opaqueLsa10.addValue(linkTlv);
-        return opaqueLsa10;
-    }
-}
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaBinImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaBinImplTest.java
deleted file mode 100644
index 9d8582d..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaBinImplTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.lsdb;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.controller.LsaWrapper;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for LsaBinImpl.
- */
-public class LsaBinImplTest {
-    private LsaBinImpl lsaBin;
-    private LsaHeader ospflsa1;
-    private LsaWrapper lsaWrapper;
-
-
-    @Before
-    public void setUp() throws Exception {
-        ospflsa1 = new LsaHeader();
-        ospflsa1.setAge(20);
-        lsaBin = new LsaBinImpl(1);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospflsa1 = null;
-        lsaBin = null;
-    }
-
-    /**
-     * Tests binNumber() getter method.
-     */
-    @Test
-    public void testGetBinNumber() throws Exception {
-        lsaWrapper = new LsaWrapperImpl();
-        lsaBin.addOspfLsa("lsa1", lsaWrapper);
-        assertThat(lsaBin.binNumber(), is(1));
-    }
-
-    /**
-     * Tests addOspfLsa() method.
-     */
-    @Test
-    public void testAddOspfLsa() throws Exception {
-        LsaWrapper lsaWrapper = new LsaWrapperImpl();
-        lsaBin.addOspfLsa("lsa1", lsaWrapper);
-        assertThat(lsaBin, is(notNullValue()));
-    }
-
-    /**
-     * Tests ospfLsa() getter method.
-     */
-    @Test
-    public void testGetOspfLsa() throws Exception {
-        lsaWrapper = new LsaWrapperImpl();
-        lsaBin.addOspfLsa("lsa1", lsaWrapper);
-        assertThat(lsaBin, is(notNullValue()));
-        assertThat(lsaBin.ospfLsa("lsa1"), is(lsaWrapper));
-    }
-
-    /**
-     * Tests removeOspfLsa()  method.
-     */
-    @Test
-    public void testRemoveOspfLsa() throws Exception {
-        lsaWrapper = new LsaWrapperImpl();
-        lsaBin.addOspfLsa("lsa1", lsaWrapper);
-        lsaBin.removeOspfLsa("lsa1", lsaWrapper);
-        assertThat(lsaBin, is(notNullValue()));
-    }
-
-    /**
-     * Tests listOfLsa()  method.
-     */
-    @Test
-    public void testGetListOfLsa() throws Exception {
-        lsaWrapper = new LsaWrapperImpl();
-        lsaBin.addOspfLsa("lsa1", lsaWrapper);
-        assertThat(lsaBin.listOfLsa().size(), is(1));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(lsaBin.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaQueueConsumerTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaQueueConsumerTest.java
deleted file mode 100644
index c624e02..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaQueueConsumerTest.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.lsdb;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.channel.Channel;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.controller.LsaWrapper;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.controller.area.OspfAreaImpl;
-import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
-import org.onosproject.ospf.protocol.util.OspfInterfaceState;
-
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.BlockingQueue;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for LsaQueueConsumer.
- */
-public class LsaQueueConsumerTest {
-    private LsaQueueConsumer lsaQueueConsumer;
-    private BlockingQueue<LsaWrapper> blockingQueue;
-    private Channel channel;
-    private LsaWrapperImpl lsaWrapper;
-    private OspfArea ospfArea;
-    private RouterLsa routerLsa;
-    private OspfInterfaceImpl ospfInterface;
-    private LsaHeader lsaHeader;
-    private LsdbAgeImpl lsdbAge;
-
-    @Before
-    public void setUp() throws Exception {
-        lsaQueueConsumer = EasyMock.createMock(LsaQueueConsumer.class);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        lsaQueueConsumer = null;
-        blockingQueue = null;
-        channel = null;
-        lsaWrapper = null;
-        lsdbAge = null;
-        lsaHeader = null;
-        ospfInterface = null;
-        ospfArea = null;
-        routerLsa = null;
-    }
-
-    /**
-     * Tests run() method.
-     */
-    @Test
-    public void testRun() throws Exception {
-        blockingQueue = new ArrayBlockingQueue(5);
-        ospfArea = new OspfAreaImpl();
-        lsdbAge = new LsdbAgeImpl(ospfArea);
-        channel = EasyMock.createMock(Channel.class);
-        lsaWrapper = new LsaWrapperImpl();
-        lsaWrapper.setLsaProcessing("verifyChecksum");
-        blockingQueue.add(lsaWrapper);
-        lsaQueueConsumer = new LsaQueueConsumer(blockingQueue, channel, ospfArea);
-        lsaQueueConsumer.run();
-        assertThat(lsaQueueConsumer, is(notNullValue()));
-    }
-
-    /**
-     * Tests run() method.
-     */
-    @Test
-    public void testRun1() throws Exception {
-        blockingQueue = new ArrayBlockingQueue(5);
-        channel = EasyMock.createMock(Channel.class);
-        ospfArea = new OspfAreaImpl();
-        lsaWrapper = new LsaWrapperImpl();
-        routerLsa = new RouterLsa();
-        routerLsa.setLsType(1);
-        lsaWrapper.addLsa(OspfLsaType.ROUTER, routerLsa);
-        ospfInterface = new OspfInterfaceImpl();
-        ospfInterface.setState(OspfInterfaceState.DR);
-        lsaWrapper.setOspfInterface(ospfInterface);
-        lsaWrapper.setIsSelfOriginated(true);
-        lsaHeader = new LsaHeader();
-        lsaHeader.setLsType(1);
-        lsaWrapper.setLsaHeader(lsaHeader);
-        lsaWrapper.setLsaProcessing("refreshLsa");
-        lsaWrapper.setLsdbAge(new LsdbAgeImpl(ospfArea));
-        blockingQueue.add(lsaWrapper);
-        lsaQueueConsumer = new LsaQueueConsumer(blockingQueue, channel, ospfArea);
-        lsaQueueConsumer.run();
-        assertThat(lsaQueueConsumer, is(notNullValue()));
-    }
-
-    @Test
-    public void testRun3() throws Exception {
-        blockingQueue = new ArrayBlockingQueue(5);
-        channel = EasyMock.createMock(Channel.class);
-        ospfArea = new OspfAreaImpl();
-        lsaWrapper = new LsaWrapperImpl();
-        routerLsa = new RouterLsa();
-        routerLsa.setLsType(2);
-        lsaWrapper.addLsa(OspfLsaType.NETWORK, routerLsa);
-        ospfInterface = new OspfInterfaceImpl();
-        ospfInterface.setState(OspfInterfaceState.BDR);
-        lsaWrapper.setOspfInterface(ospfInterface);
-        lsaWrapper.setIsSelfOriginated(true);
-        lsaHeader = new LsaHeader();
-        lsaHeader.setLsType(2);
-        lsaWrapper.setLsaHeader(lsaHeader);
-        lsaWrapper.setLsaProcessing("refreshLsa");
-        lsaWrapper.setLsdbAge(new LsdbAgeImpl(ospfArea));
-        blockingQueue.add(lsaWrapper);
-        lsaQueueConsumer = new LsaQueueConsumer(blockingQueue, channel, ospfArea);
-        lsaQueueConsumer.run();
-        assertThat(lsaQueueConsumer, is(notNullValue()));
-    }
-
-    /**
-     * Tests run() method.
-     */
-    @Test
-    public void testRun5() throws Exception {
-        blockingQueue = new ArrayBlockingQueue(5);
-        channel = EasyMock.createMock(Channel.class);
-        ospfArea = new OspfAreaImpl();
-        lsaWrapper = new LsaWrapperImpl();
-        routerLsa = new RouterLsa();
-        routerLsa.setLsType(2);
-        lsaWrapper.addLsa(OspfLsaType.NETWORK, routerLsa);
-        ospfInterface = new OspfInterfaceImpl();
-        ospfInterface.setState(OspfInterfaceState.DR);
-        lsaWrapper.setOspfInterface(ospfInterface);
-        lsaWrapper.setIsSelfOriginated(true);
-        lsaHeader = new LsaHeader();
-        lsaHeader.setLsType(2);
-        lsaWrapper.setLsaHeader(lsaHeader);
-        lsaWrapper.setLsaProcessing("maxAgeLsa");
-        lsaWrapper.setLsdbAge(new LsdbAgeImpl(ospfArea));
-        blockingQueue.add(lsaWrapper);
-        lsaQueueConsumer = new LsaQueueConsumer(blockingQueue, channel, ospfArea);
-        lsaQueueConsumer.run();
-        assertThat(lsaQueueConsumer, is(notNullValue()));
-    }
-
-    /**
-     * Tests setChannel() method.
-     */
-    @Test
-    public void testSetChannel() throws Exception {
-        channel = EasyMock.createMock(Channel.class);
-        lsdbAge = new LsdbAgeImpl(ospfArea);
-        lsdbAge.startDbAging();
-        lsdbAge.setChannel(channel);
-        assertThat(lsaQueueConsumer, is(notNullValue()));
-    }
-
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaWrapperImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaWrapperImplTest.java
deleted file mode 100644
index 6aee39b..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaWrapperImplTest.java
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.lsdb;
-
-import org.easymock.EasyMock;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.controller.area.OspfAreaImpl;
-import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for LsaWrapperImpl.
- */
-public class LsaWrapperImplTest {
-
-    private LsaWrapperImpl lsaWrapper;
-    private LsdbAgeImpl lsdbAge;
-    private LsaHeader header;
-    private OspfInterfaceImpl ospfInterfaceImpl;
-
-    @Before
-    public void setUp() throws Exception {
-        lsaWrapper = new LsaWrapperImpl();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        lsaWrapper = null;
-        header = null;
-        lsdbAge = null;
-        ospfInterfaceImpl = null;
-    }
-
-    /**
-     * Tests lsaType() getter method.
-     */
-    @Test
-    public void testGetLsaType() throws Exception {
-        lsaWrapper.setLsaType(OspfLsaType.ROUTER);
-        assertThat(lsaWrapper.lsaType(), is(OspfLsaType.ROUTER));
-    }
-
-    /**
-     * Tests lsaType() setter method.
-     */
-    @Test
-    public void testSetLsaType() throws Exception {
-        lsaWrapper.setLsaType(OspfLsaType.ROUTER);
-        assertThat(lsaWrapper.lsaType(), is(OspfLsaType.ROUTER));
-    }
-
-    /**
-     * Tests isSelfOriginated() getter method.
-     */
-    @Test
-    public void testIsSelfOriginated() throws Exception {
-        lsaWrapper.setIsSelfOriginated(true);
-        assertThat(lsaWrapper.isSelfOriginated(), is(true));
-    }
-
-    /**
-     * Tests isSelfOriginated() setter method.
-     */
-    @Test
-    public void testSetIsSelfOriginated() throws Exception {
-        lsaWrapper.setIsSelfOriginated(true);
-        assertThat(lsaWrapper.isSelfOriginated(), is(true));
-    }
-
-    /**
-     * Tests addLsa() method.
-     */
-    @Test
-    public void testAddLsa() throws Exception {
-        lsaWrapper.addLsa(OspfLsaType.ROUTER, new RouterLsa());
-        assertThat(lsaWrapper, is(notNullValue()));
-    }
-
-    /**
-     * Tests lsaAgeReceived() getter method.
-     */
-    @Test
-    public void testGetLsaAgeReceived() throws Exception {
-        lsaWrapper.setLsaAgeReceived(10);
-        assertThat(lsaWrapper.lsaAgeReceived(), is(10));
-    }
-
-    /**
-     * Tests lsaAgeReceived() setter method.
-     */
-    @Test
-    public void testSetLsaAgeReceived() throws Exception {
-        lsaWrapper.setLsaAgeReceived(10);
-        assertThat(lsaWrapper.lsaAgeReceived(), is(10));
-    }
-
-    /**
-     * Tests lsaHeader() getter method.
-     */
-    @Test
-    public void testGetLsaHeader() throws Exception {
-        lsdbAge = new LsdbAgeImpl(new OspfAreaImpl());
-        lsdbAge.ageLsaAndFlood();
-        lsaWrapper.setLsdbAge(lsdbAge);
-        header = new LsaHeader();
-        lsaWrapper.setLsaHeader(header);
-        assertThat(lsaWrapper.lsaHeader(), instanceOf(LsaHeader.class));
-    }
-
-    /**
-     * Tests lsaHeader() setter method.
-     */
-    @Test
-    public void testSetLsaHeader() throws Exception {
-        lsdbAge = new LsdbAgeImpl(new OspfAreaImpl());
-        lsdbAge.ageLsaAndFlood();
-        lsaWrapper.setLsdbAge(lsdbAge);
-        header = new LsaHeader();
-        lsaWrapper.setLsaHeader(header);
-        assertThat(lsaWrapper.lsaHeader(), instanceOf(LsaHeader.class));
-    }
-
-    /**
-     * Tests setOspfLsa() setter method.
-     */
-    @Test
-    public void testSetOspfLsa() throws Exception {
-        lsaWrapper.setOspfLsa(new RouterLsa());
-        assertThat(lsaWrapper, is(notNullValue()));
-    }
-
-    /**
-     * Tests noReTransmissionLists() getter method.
-     */
-    @Test
-    public void testGetNoReTransmissionLists() throws Exception {
-        lsaWrapper.setNoReTransmissionLists(10);
-        assertThat(lsaWrapper.noReTransmissionLists(), is(10));
-    }
-
-    /**
-     * Tests noReTransmissionLists() setter method.
-     */
-    @Test
-    public void testSetNoReTransmissionLists() throws Exception {
-        lsaWrapper.setNoReTransmissionLists(10);
-        assertThat(lsaWrapper.noReTransmissionLists(), is(10));
-    }
-
-    /**
-     * Tests isInAnAgeBin() getter method.
-     */
-    @Test
-    public void testIsInAnAgeBin() throws Exception {
-        lsaWrapper.setInAnAgeBin(true);
-        assertThat(lsaWrapper.isInAnAgeBin(), is(true));
-    }
-
-    /**
-     * Tests isInAnAgeBin() setter method.
-     */
-    @Test
-    public void testSetInAnAgeBin() throws Exception {
-        lsaWrapper.setInAnAgeBin(true);
-        assertThat(lsaWrapper.isInAnAgeBin(), is(true));
-    }
-
-    /**
-     * Tests isChangedSinceLastFlood() getter method.
-     */
-    @Test
-    public void testIsChangedSinceLastFlood() throws Exception {
-        lsaWrapper.setChangedSinceLastFlood(true);
-        assertThat(lsaWrapper.isChangedSinceLastFlood(), is(true));
-    }
-
-    /**
-     * Tests isChangedSinceLastFlood() setter method.
-     */
-    @Test
-    public void testSetChangedSinceLastFlood() throws Exception {
-        lsaWrapper.setChangedSinceLastFlood(true);
-        assertThat(lsaWrapper.isChangedSinceLastFlood(), is(true));
-    }
-
-    /**
-     * Tests isSequenceRollOver() method.
-     */
-    @Test
-    public void testIsSequenceRollOver() throws Exception {
-        lsaWrapper.setIsSequenceRollOver(true);
-        assertThat(lsaWrapper.isSequenceRollOver(), is(true));
-    }
-
-    /**
-     * Tests isSentReplyForOlderLsa() method.
-     */
-    @Test
-    public void testIsSentReplyForOlderLsa() throws Exception {
-        lsaWrapper.setSentReplyForOlderLsa(true);
-        assertThat(lsaWrapper.isSentReplyForOlderLsa(), is(true));
-    }
-
-    /**
-     * Tests isCheckAge() getter method.
-     */
-    @Test
-    public void testIsCheckAge() throws Exception {
-        lsaWrapper.setCheckAge(true);
-        assertThat(lsaWrapper.isCheckAge(), is(true));
-    }
-
-    /**
-     * Tests isSentReplyForOlderLsa() getter method.
-     */
-    @Test
-    public void testSetSentReplyForOlderLsa() throws Exception {
-        lsaWrapper.setSentReplyForOlderLsa(true);
-        assertThat(lsaWrapper.isSentReplyForOlderLsa(), is(true));
-    }
-
-    /**
-     * Tests isSentReplyForOlderLsa() setter method.
-     */
-    @Test
-    public void testSetCheckAge() throws Exception {
-        lsaWrapper.setCheckAge(true);
-        assertThat(lsaWrapper.isCheckAge(), is(true));
-    }
-
-    /**
-     * Tests isAging() getter method.
-     */
-    @Test
-    public void testIsAging() throws Exception {
-        lsaWrapper.setIsAging(true);
-        assertThat(lsaWrapper.isAging(), is(true));
-    }
-
-    /**
-     * Tests isAging() setter method.
-     */
-    @Test
-    public void testSetIsAging() throws Exception {
-        lsaWrapper.setIsAging(true);
-        assertThat(lsaWrapper.isAging(), is(true));
-    }
-
-    /**
-     * Tests currentAge() method.
-     */
-    @Test
-    public void testGetCurrentAge() throws Exception {
-        lsdbAge = new LsdbAgeImpl(new OspfAreaImpl());
-        lsdbAge.ageLsaAndFlood();
-        lsaWrapper.setLsdbAge(lsdbAge);
-        assertThat(lsaWrapper.currentAge(), is(notNullValue()));
-    }
-
-    /**
-     * Tests ageCounterWhenReceived() getter method.
-     */
-    @Test
-    public void testGetAgeCounterWhenReceived() throws Exception {
-        lsaWrapper.setAgeCounterWhenReceived(10);
-        assertThat(lsaWrapper.ageCounterWhenReceived(), is(10));
-    }
-
-    /**
-     * Tests ageCounterWhenReceived() setter method.
-     */
-    @Test
-    public void testSetAgeCounterWhenReceived() throws Exception {
-        lsaWrapper.setAgeCounterWhenReceived(10);
-        assertThat(lsaWrapper.ageCounterWhenReceived(), is(10));
-    }
-
-    /**
-     * Tests lsaProcessing() getter method.
-     */
-    @Test
-    public void testGetLsaProcessing() throws Exception {
-        lsaWrapper.setLsaProcessing("router");
-        assertThat(lsaWrapper.lsaProcessing(), is("router"));
-    }
-
-    /**
-     * Tests lsaProcessing() setter method.
-     */
-    @Test
-    public void testSetLsaProcessing() throws Exception {
-        lsaWrapper.setLsaProcessing("router");
-        assertThat(lsaWrapper.lsaProcessing(), is("router"));
-    }
-
-    /**
-     * Tests binNumber() getter method.
-     */
-    @Test
-    public void testGetBinNumber() throws Exception {
-        lsaWrapper.setBinNumber(10);
-        assertThat(lsaWrapper.binNumber(), is(10));
-    }
-
-    /**
-     * Tests binNumber() setter method.
-     */
-    @Test
-    public void testSetBinNumber() throws Exception {
-        lsaWrapper.setBinNumber(10);
-        assertThat(lsaWrapper.binNumber(), is(10));
-    }
-
-    /**
-     * Tests ospfInterface() getter method.
-     */
-    @Test
-    public void testGetOspfInterface() throws Exception {
-        ospfInterfaceImpl = EasyMock.createMock(OspfInterfaceImpl.class);
-        lsaWrapper.setOspfInterface(ospfInterfaceImpl);
-        assertThat(lsaWrapper.ospfInterface(), is(notNullValue()));
-    }
-
-    /**
-     * Tests ospfInterface() setter method.
-     */
-    @Test
-    public void testSetOspfInterface() throws Exception {
-        ospfInterfaceImpl = EasyMock.createMock(OspfInterfaceImpl.class);
-        lsaWrapper.setOspfInterface(ospfInterfaceImpl);
-        assertThat(lsaWrapper.ospfInterface(), is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsdbAge() method.
-     */
-    @Test
-    public void testGetLsdbAge() throws Exception {
-        assertThat(lsaWrapper.getLsdbAge(), is(nullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(lsaWrapper.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests equals() method.
-     */
-    @Test
-    public void testEquals() throws Exception {
-        assertThat(lsaWrapper.equals(new LsaWrapperImpl()), is(true));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashCode() throws Exception {
-        int hashCode = lsaWrapper.hashCode();
-        assertThat(hashCode, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsdbAgeImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsdbAgeImplTest.java
deleted file mode 100644
index 696ecb8..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsdbAgeImplTest.java
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.lsdb;
-
-import org.easymock.EasyMock;
-import org.jboss.netty.channel.Channel;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.controller.LsaBin;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.controller.area.OspfAreaImpl;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for LsdbAgeImpl.
- */
-public class LsdbAgeImplTest {
-    private LsdbAgeImpl lsdbAge;
-    private OspfAreaImpl ospfAreaImpl;
-    private LsaBinImpl lsaBin;
-    private LsaBin lsaBin1;
-    private LsaWrapperImpl lsaWrapper;
-    private OspfArea ospfArea;
-    private Channel channel;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfAreaImpl = EasyMock.createMock(OspfAreaImpl.class);
-        lsdbAge = new LsdbAgeImpl(ospfAreaImpl);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        lsdbAge = null;
-        lsaBin = null;
-        lsaBin1 = null;
-        ospfAreaImpl = null;
-        lsaWrapper = null;
-        channel = null;
-        ospfArea = null;
-    }
-
-    /**
-     * Tests getLsaBin() method.
-     */
-    @Test
-    public void testGetLsaBin() throws Exception {
-        lsaBin = new LsaBinImpl(1);
-        lsdbAge.addLsaBin(1, lsaBin);
-        assertThat(lsdbAge, is(notNullValue()));
-        lsaBin1 = lsdbAge.getLsaBin(1);
-        assertThat(lsaBin, instanceOf(LsaBin.class));
-        assertThat(lsaBin1, instanceOf(LsaBin.class));
-    }
-
-    /**
-     * Tests addLsaBin() method.
-     */
-    @Test
-    public void testAddLsaBin() throws Exception {
-        lsaBin = new LsaBinImpl(1);
-        lsdbAge.addLsaBin(1, lsaBin);
-        assertThat(lsdbAge, is(notNullValue()));
-        assertThat(lsaBin, instanceOf(LsaBin.class));
-    }
-
-    /**
-     * Tests equals() method.
-     */
-    @Test
-    public void testEquals() throws Exception {
-        assertThat(lsdbAge.equals(lsdbAge), is(true));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashCode() throws Exception {
-        int hashCode = lsdbAge.hashCode();
-        assertThat(hashCode, is(notNullValue()));
-    }
-
-    /**
-     * Tests addLsaToMaxAgeBin() method.
-     */
-    @Test
-    public void testAddLsaToMaxAgeBin() throws Exception {
-        lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class);
-        lsdbAge.addLsaToMaxAgeBin("lsa1", lsaWrapper);
-        assertThat(lsdbAge, is(notNullValue()));
-    }
-
-    /**
-     * Tests removeLsaFromBin() method.
-     */
-    @Test
-    public void testRemoveLsaFromBin() throws Exception {
-        lsaBin = EasyMock.createMock(LsaBinImpl.class);
-        lsaWrapper = new LsaWrapperImpl();
-        lsaWrapper.setBinNumber(-1);
-        lsaBin.addOspfLsa("1", lsaWrapper);
-        lsdbAge.startDbAging();
-        lsdbAge.addLsaToMaxAgeBin("3600", lsaWrapper);
-        lsdbAge.addLsaBin(-1, lsaBin);
-        lsdbAge.removeLsaFromBin(lsaWrapper);
-        assertThat(lsdbAge, is(notNullValue()));
-    }
-
-    /**
-     * Tests startDbAging() method.
-     */
-    @Test
-    public void testStartDbAging() throws Exception {
-        lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class);
-        lsdbAge.addLsaToMaxAgeBin("lsa1", lsaWrapper);
-        lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class);
-        lsdbAge.addLsaToMaxAgeBin("lsa2", lsaWrapper);
-        lsdbAge.startDbAging();
-        assertThat(lsdbAge, is(notNullValue()));
-    }
-
-    /**
-     * Tests ageLsaAndFlood() method.
-     */
-    @Test
-    public void testAgeLsaAndFlood() throws Exception {
-        lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class);
-        lsdbAge.addLsaToMaxAgeBin("lsa1", lsaWrapper);
-        lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class);
-        lsdbAge.addLsaToMaxAgeBin("lsa2", lsaWrapper);
-        lsdbAge.startDbAging();
-        lsdbAge.ageLsaAndFlood();
-        Assert.assertNotNull(lsdbAge);
-    }
-
-    /**
-     * Tests maxAgeLsa() method.
-     */
-    @Test
-    public void testMaxageLsa() throws Exception {
-        lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class);
-        ospfArea = new OspfAreaImpl();
-        lsdbAge = new LsdbAgeImpl(ospfArea);
-        lsaWrapper.setLsdbAge(lsdbAge);
-        lsdbAge.addLsaToMaxAgeBin("lsa1", lsaWrapper);
-        lsaBin = new LsaBinImpl(1);
-        lsaBin.addOspfLsa("1", lsaWrapper);
-        lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class);
-        lsdbAge.addLsaToMaxAgeBin("lsa2", lsaWrapper);
-        lsaBin.addOspfLsa("2", lsaWrapper);
-        lsdbAge.startDbAging();
-        lsdbAge = new LsdbAgeImpl(new OspfAreaImpl());
-        lsdbAge.ageLsaAndFlood();
-        lsdbAge.maxAgeLsa();
-        assertThat(lsdbAge, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests refreshLsa() method.
-     */
-    @Test
-    public void testRefereshLsa() throws Exception {
-        lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class);
-        lsaWrapper.setBinNumber(0);
-        lsaWrapper.setLsaType(OspfLsaType.NETWORK);
-        lsdbAge.addLsaToMaxAgeBin("lsa1", lsaWrapper);
-        lsdbAge.ageLsaAndFlood();
-        lsdbAge.startDbAging();
-        lsdbAge.refreshLsa();
-        assertThat(lsdbAge, is(notNullValue()));
-    }
-
-    /**
-     * Tests checkAges() method.
-     */
-    @Test
-    public void testCheckAges() throws Exception {
-        lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class);
-        lsdbAge.addLsaToMaxAgeBin("lsa1", lsaWrapper);
-        lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class);
-        lsdbAge.addLsaToMaxAgeBin("lsa2", lsaWrapper);
-        lsdbAge.startDbAging();
-        lsdbAge.checkAges();
-        assertThat(lsdbAge, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests getChannel() getter method.
-     */
-    @Test
-    public void testGetChannel() throws Exception {
-        channel = EasyMock.createMock(Channel.class);
-        lsdbAge.setChannel(channel);
-        assertThat(lsdbAge.getChannel(), is(notNullValue()));
-    }
-
-    /**
-     * Tests setChannel() setter method.
-     */
-    @Test
-    public void testSetChannel() throws Exception {
-        channel = EasyMock.createMock(Channel.class);
-        lsdbAge.setChannel(channel);
-        assertThat(lsdbAge.getChannel(), is(notNullValue()));
-    }
-
-    /**
-     * Tests getAgeCounter() method.
-     */
-    @Test
-    public void testGetAgeCounter() throws Exception {
-        lsaBin = new LsaBinImpl(1);
-        lsdbAge.addLsaBin(1, lsaBin);
-        int age = lsdbAge.getAgeCounter();
-        assertThat(age, is(notNullValue()));
-    }
-
-    /**
-     * Tests getAgeCounterRollOver() method.
-     */
-    @Test
-    public void testGetAgeCounterRollOver() throws Exception {
-        lsaBin = new LsaBinImpl(1);
-        lsdbAge.addLsaBin(1, lsaBin);
-        lsdbAge.startDbAging();
-        assertThat(lsdbAge.getAgeCounterRollOver(), is(notNullValue()));
-    }
-
-    /**
-     * Tests getMaxAgeBin() method.
-     */
-    @Test
-    public void testGetMaxAgeBin() throws Exception {
-        lsaBin = new LsaBinImpl(1);
-        lsdbAge.addLsaBin(1, lsaBin);
-        lsdbAge.startDbAging();
-        assertThat(lsdbAge.getMaxAgeBin(), is(notNullValue()));
-    }
-
-    /**
-     * Tests age2Bin() method.
-     */
-    @Test
-    public void testAge2Bin() throws Exception {
-        int age = lsdbAge.age2Bin(0);
-        assertThat(age, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/OspfLsdbImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/OspfLsdbImplTest.java
deleted file mode 100644
index f6e1a24..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/OspfLsdbImplTest.java
+++ /dev/null
@@ -1,456 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.lsdb;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.controller.area.OspfAreaImpl;
-import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.lsa.types.AsbrSummaryLsa;
-import org.onosproject.ospf.protocol.lsa.types.ExternalLsa;
-import org.onosproject.ospf.protocol.lsa.types.NetworkLsa;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa11;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa9;
-import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
-import org.onosproject.ospf.protocol.lsa.types.SummaryLsa;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for OspfLsdbImpl.
- */
-public class OspfLsdbImplTest {
-    private OspfLsdbImpl ospfLsdb;
-    private RouterLsa routerLsa;
-    private NetworkLsa networkLsa;
-    private SummaryLsa summaryLsa;
-    private AsbrSummaryLsa asbrSummaryLsa;
-    private OpaqueLsa9 opaqueLsa9;
-    private OpaqueLsa10 opaqueLsa10;
-    private OpaqueLsa11 opaqueLsa11;
-    private ExternalLsa externalLsa;
-    private OpaqueLsaHeader opaqueLsaHeader;
-    private LsaWrapperImpl lsaWrapper;
-    private OpaqueLsaHeader opaqueLsaHeader1;
-    private String key;
-
-    @Before
-    public void setUp() throws Exception {
-        OspfAreaImpl ospfArea = new OspfAreaImpl();
-        ospfLsdb = new OspfLsdbImpl(ospfArea);
-        routerLsa = new RouterLsa();
-        networkLsa = new NetworkLsa();
-        summaryLsa = new SummaryLsa(new LsaHeader());
-        asbrSummaryLsa = new AsbrSummaryLsa(new LsaHeader());
-        opaqueLsa9 = new OpaqueLsa9(new OpaqueLsaHeader());
-        opaqueLsa10 = new OpaqueLsa10(new OpaqueLsaHeader());
-        opaqueLsa11 = new OpaqueLsa11(new OpaqueLsaHeader());
-        externalLsa = new ExternalLsa(new LsaHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfLsdb = null;
-        routerLsa = null;
-        externalLsa = null;
-        summaryLsa = null;
-        asbrSummaryLsa = null;
-        opaqueLsa10 = null;
-        opaqueLsa11 = null;
-        opaqueLsa9 = null;
-        networkLsa = null;
-        lsaWrapper = null;
-        opaqueLsaHeader = null;
-        opaqueLsaHeader1 = null;
-        key = null;
-    }
-
-    /**
-     * Tests equals() method.
-     */
-    @Test
-    public void testEquals() throws Exception {
-        assertThat(ospfLsdb.equals(new OspfLsdbImpl(new OspfAreaImpl())), is(false));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashCode() throws Exception {
-        int hashCode = ospfLsdb.hashCode();
-        assertThat(hashCode, is(notNullValue()));
-    }
-
-    /**
-     * Tests initializeDb() method.
-     */
-    @Test
-    public void testInitializeDb() throws Exception {
-        ospfLsdb.initializeDb();
-        assertThat(ospfLsdb, is(notNullValue()));
-    }
-
-    /**
-     * Tests getAllLsaHeaders() method.
-     */
-    @Test
-    public void testGetAllLsaHeaders() throws Exception {
-        ospfLsdb.initializeDb();
-        routerLsa.setLsType(1);
-        assertThat(ospfLsdb.addLsa(routerLsa, false, new OspfInterfaceImpl()), is(true));
-        networkLsa.setLsType(2);
-        assertThat(ospfLsdb.addLsa(networkLsa, false, new OspfInterfaceImpl()), is(true));
-        summaryLsa.setLsType(3);
-        assertThat(ospfLsdb.addLsa(summaryLsa, false, new OspfInterfaceImpl()), is(true));
-        asbrSummaryLsa.setLsType(4);
-        assertThat(ospfLsdb.addLsa(asbrSummaryLsa, false, new OspfInterfaceImpl()), is(true));
-        externalLsa.setLsType(5);
-        assertThat(ospfLsdb.addLsa(externalLsa, false, new OspfInterfaceImpl()), is(true));
-        ospfLsdb.initializeDb();
-        assertThat(ospfLsdb.getAllLsaHeaders(true, true).size(), is(5));
-    }
-
-    /**
-     * Tests getLsaKey() method.
-     */
-    @Test
-    public void testGetLsaKey() throws Exception {
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(1);
-        assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue()));
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(2);
-        assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue()));
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(3);
-        assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue()));
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(4);
-        assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue()));
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(5);
-        assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue()));
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(9);
-        assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue()));
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(10);
-        assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue()));
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(11);
-        assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue()));
-    }
-
-    /**
-     * Tests lsaLookup() method.
-     */
-    @Test
-    public void testLsaLookup() throws Exception {
-        ospfLsdb.initializeDb();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        ospfLsdb.addLsa(opaqueLsaHeader, true, new OspfInterfaceImpl());
-        opaqueLsaHeader.setLsType(1);
-        String key = ospfLsdb.getLsaKey(opaqueLsaHeader);
-        assertThat(ospfLsdb.lsaLookup(opaqueLsaHeader), is(nullValue()));
-    }
-
-    /**
-     * Tests findLsa() method.
-     */
-    @Test
-    public void testFindlsa() throws Exception {
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(1);
-        key = ospfLsdb.getLsaKey(opaqueLsaHeader);
-        ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
-        lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key);
-        assertThat(lsaWrapper, is(nullValue()));
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(2);
-        key = ospfLsdb.getLsaKey(opaqueLsaHeader);
-        ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
-        lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key);
-        assertThat(lsaWrapper, is(nullValue()));
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(3);
-        key = ospfLsdb.getLsaKey(opaqueLsaHeader);
-        ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
-        lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key);
-        assertThat(lsaWrapper, is(nullValue()));
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(4);
-        key = ospfLsdb.getLsaKey(opaqueLsaHeader);
-        ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
-        lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key);
-        assertThat(lsaWrapper, is(nullValue()));
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(5);
-        key = ospfLsdb.getLsaKey(opaqueLsaHeader);
-        ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
-        lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key);
-        assertThat(lsaWrapper, is(nullValue()));
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(9);
-        key = ospfLsdb.getLsaKey(opaqueLsaHeader);
-        ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
-        lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key);
-        assertThat(lsaWrapper, is(nullValue()));
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(10);
-        key = ospfLsdb.getLsaKey(opaqueLsaHeader);
-        ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
-        lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key);
-        assertThat(lsaWrapper, is(nullValue()));
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(11);
-        key = ospfLsdb.getLsaKey(opaqueLsaHeader);
-        ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
-        lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key);
-        assertThat(lsaWrapper, is(nullValue()));
-    }
-
-    /**
-     * Tests addLSA() method.
-     */
-    @Test
-    public void testAddLsa() throws Exception {
-        routerLsa.setLsType(1);
-        assertThat(ospfLsdb.addLsa(routerLsa, false, new OspfInterfaceImpl()), is(true));
-        networkLsa.setLsType(2);
-        assertThat(ospfLsdb.addLsa(networkLsa, false, new OspfInterfaceImpl()), is(true));
-        summaryLsa.setLsType(3);
-        assertThat(ospfLsdb.addLsa(summaryLsa, false, new OspfInterfaceImpl()), is(true));
-        asbrSummaryLsa.setLsType(4);
-        assertThat(ospfLsdb.addLsa(asbrSummaryLsa, false, new OspfInterfaceImpl()), is(true));
-        externalLsa.setLsType(5);
-        assertThat(ospfLsdb.addLsa(externalLsa, false, new OspfInterfaceImpl()), is(true));
-        opaqueLsa9.setLsType(9);
-        assertThat(ospfLsdb.addLsa(opaqueLsa9, false, new OspfInterfaceImpl()), is(true));
-        opaqueLsa10.setLsType(10);
-        assertThat(ospfLsdb.addLsa(opaqueLsa10, false, new OspfInterfaceImpl()), is(true));
-        opaqueLsa11.setLsType(11);
-        assertThat(ospfLsdb.addLsa(opaqueLsa11, false, new OspfInterfaceImpl()), is(true));
-
-    }
-
-    /**
-     * Tests addLsaToMaxAgeBin() method.
-     */
-    @Test
-    public void testAddLsaToMaxAgeBin() throws Exception {
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(1);
-        key = ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader((OpaqueLsaHeader) opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(2);
-        ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(3);
-        ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(4);
-        ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(5);
-        ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(9);
-        ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(10);
-        ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(11);
-        ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        assertThat(ospfLsdb, is(notNullValue()));
-    }
-
-    /**
-     * Tests removeLsaFromBin() method.
-     */
-    @Test
-    public void testRemoveLsaFromBin() throws Exception {
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(1);
-        key = ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        ospfLsdb.removeLsaFromBin(lsaWrapper);
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(2);
-        ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        ospfLsdb.removeLsaFromBin(lsaWrapper);
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(3);
-        ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        ospfLsdb.removeLsaFromBin(lsaWrapper);
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(4);
-        ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        ospfLsdb.removeLsaFromBin(lsaWrapper);
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(5);
-        ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        ospfLsdb.removeLsaFromBin(lsaWrapper);
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(9);
-        ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        ospfLsdb.removeLsaFromBin(lsaWrapper);
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(10);
-        ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        ospfLsdb.removeLsaFromBin(lsaWrapper);
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(11);
-        ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        ospfLsdb.removeLsaFromBin(lsaWrapper);
-        assertThat(ospfLsdb, is(notNullValue()));
-    }
-
-    /**
-     * Tests isNewerOrSameLsa() method.
-     */
-    @Test
-    public void testIsNewerorSameLsa() throws Exception {
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader1 = new OpaqueLsaHeader();
-        opaqueLsaHeader1.setLsType(1);
-        key = ospfLsdb.getLsaKey(opaqueLsaHeader1);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader1);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        lsaWrapper = new LsaWrapperImpl();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        opaqueLsaHeader.setLsType(2);
-        ospfLsdb.getLsaKey(opaqueLsaHeader);
-        lsaWrapper.setLsaHeader(opaqueLsaHeader);
-        ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
-        assertThat(ospfLsdb.isNewerOrSameLsa(opaqueLsaHeader1, opaqueLsaHeader), is(notNullValue()));
-        assertThat(ospfLsdb, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsSequenceNumber() method.
-     */
-    @Test
-    public void testGetLsSequenceNumber() throws Exception {
-        assertThat(ospfLsdb.getLsSequenceNumber(OspfLsaType.NETWORK), is(notNullValue()));
-        assertThat(ospfLsdb.getLsSequenceNumber(OspfLsaType.ROUTER), is(notNullValue()));
-    }
-
-    /**
-     * Tests deleteLsa() method.
-     */
-    @Test
-    public void testDeleteLsa() throws Exception {
-        opaqueLsaHeader1 = new OpaqueLsaHeader();
-        opaqueLsaHeader1.setLsType(1);
-        ospfLsdb.deleteLsa(opaqueLsaHeader1);
-        opaqueLsaHeader1 = new OpaqueLsaHeader();
-        opaqueLsaHeader1.setLsType(2);
-        ospfLsdb.deleteLsa(opaqueLsaHeader1);
-        opaqueLsaHeader1 = new OpaqueLsaHeader();
-        opaqueLsaHeader1.setLsType(3);
-        ospfLsdb.deleteLsa(opaqueLsaHeader1);
-        opaqueLsaHeader1 = new OpaqueLsaHeader();
-        opaqueLsaHeader1.setLsType(4);
-        ospfLsdb.deleteLsa(opaqueLsaHeader1);
-        opaqueLsaHeader1 = new OpaqueLsaHeader();
-        opaqueLsaHeader1.setLsType(5);
-        ospfLsdb.deleteLsa(opaqueLsaHeader1);
-        opaqueLsaHeader1 = new OpaqueLsaHeader();
-        opaqueLsaHeader1.setLsType(9);
-        ospfLsdb.deleteLsa(opaqueLsaHeader1);
-        opaqueLsaHeader1 = new OpaqueLsaHeader();
-        opaqueLsaHeader1.setLsType(10);
-        ospfLsdb.deleteLsa(opaqueLsaHeader1);
-        opaqueLsaHeader1 = new OpaqueLsaHeader();
-        opaqueLsaHeader1.setLsType(11);
-        ospfLsdb.deleteLsa(opaqueLsaHeader1);
-        assertThat(ospfLsdb, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests getLsSequenceNumber() method.
-     */
-    @Test
-    public void testSetRouterLsaSeqNo() throws Exception {
-        ospfLsdb.setRouterLsaSeqNo(-2147483647);
-        assertThat(ospfLsdb.getLsSequenceNumber(OspfLsaType.ROUTER), is(-2147483647L));
-    }
-
-    /**
-     * Tests getLsSequenceNumber() method.
-     */
-    @Test
-    public void testSetNetworkLsaSeqNo() throws Exception {
-        ospfLsdb.setNetworkLsaSeqNo(111111);
-        assertThat(ospfLsdb.getLsSequenceNumber(OspfLsaType.NETWORK), is(111111L));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/util/OspfEligibleRouterTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/util/OspfEligibleRouterTest.java
deleted file mode 100644
index 47bbb92..0000000
--- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/util/OspfEligibleRouterTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.controller.util;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for OspfEligibleRouter.
- */
-public class OspfEligibleRouterTest {
-
-    private OspfEligibleRouter ospfEligibleRouter;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfEligibleRouter = new OspfEligibleRouter();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfEligibleRouter = null;
-    }
-
-    /**
-     * Tests getIpAddress() getter method.
-     */
-    @Test
-    public void testGetIpAddress() throws Exception {
-        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfEligibleRouter.getIpAddress(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests setIpAddress() setter method.
-     */
-    @Test
-    public void testSetIpAddress() throws Exception {
-        ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfEligibleRouter.getIpAddress(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests getRouterId() getter method.
-     */
-    @Test
-    public void testGetRouterId() throws Exception {
-        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfEligibleRouter.getRouterId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests setRouterId() setter method.
-     */
-    @Test
-    public void testSetRouterId() throws Exception {
-        ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfEligibleRouter.getRouterId(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests getRouterPriority() getter method.
-     */
-    @Test
-    public void testGetRouterPriority() throws Exception {
-        ospfEligibleRouter.setRouterPriority(1);
-        assertThat(ospfEligibleRouter.getRouterPriority(), is(1));
-    }
-
-    /**
-     * Tests getRouterPriority() setter method.
-     */
-    @Test
-    public void testSetRouterPriority() throws Exception {
-        ospfEligibleRouter.setRouterPriority(1);
-        assertThat(ospfEligibleRouter.getRouterPriority(), is(1));
-    }
-
-    /**
-     * Tests isDr() getter method.
-     */
-    @Test
-    public void testIsDr() throws Exception {
-        ospfEligibleRouter.setIsDr(true);
-        assertThat(ospfEligibleRouter.isDr(), is(true));
-    }
-
-    /**
-     * Tests isDr() setter method.
-     */
-    @Test
-    public void testSetIsDr() throws Exception {
-        ospfEligibleRouter.setIsDr(true);
-        assertThat(ospfEligibleRouter.isDr(), is(true));
-    }
-
-    /**
-     * Tests isBdr() getter method.
-     */
-    @Test
-    public void testIsBdr() throws Exception {
-        ospfEligibleRouter.setIsBdr(true);
-        assertThat(ospfEligibleRouter.isBdr(), is(true));
-    }
-
-    /**
-     * Tests isBdr() setter method.
-     */
-    @Test
-    public void testSetIsBdr() throws Exception {
-        ospfEligibleRouter.setIsBdr(true);
-        assertThat(ospfEligibleRouter.isBdr(), is(true));
-    }
-}
diff --git a/protocols/ospf/protocol/BUILD b/protocols/ospf/protocol/BUILD
deleted file mode 100644
index 7de13a9..0000000
--- a/protocols/ospf/protocol/BUILD
+++ /dev/null
@@ -1,8 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + NETTY + JAXB + [
-    "@io_netty_netty//jar",
-    "//protocols/ospf/api:onos-protocols-ospf-api",
-]
-
-osgi_jar_with_tests(
-    deps = COMPILE_DEPS,
-)
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/exceptions/OspfErrorType.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/exceptions/OspfErrorType.java
deleted file mode 100644
index cab1240..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/exceptions/OspfErrorType.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.exceptions;
-
-/**
- * Defines all error codes and error sub codes.
- */
-public final class OspfErrorType {
-
-    //Represents an invalid OSPF message header
-    public static final byte MESSAGE_HEADER_ERROR = 1;
-    //Represents an invalid OSPF message body
-    public static final byte OSPF_MESSAGE_ERROR = 2;
-    //Message Header error sub codes
-    //Represents an invalid OSPF message length
-    public static final byte BAD_MESSAGE_LENGTH = 2;
-    //Represents an invalid OSPF message
-    public static final byte BAD_MESSAGE = 4;
-
-    /**
-     * Creates an instance of OSPF error type.
-     */
-    private OspfErrorType() {
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/exceptions/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/exceptions/package-info.java
deleted file mode 100644
index db2cc81..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/exceptions/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the OSPF exception types.
- */
-package org.onosproject.ospf.exceptions;
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/package-info.java
deleted file mode 100644
index e55f1bd..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the ospf protocol.
- */
-package org.onosproject.ospf;
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/LsaHeader.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/LsaHeader.java
deleted file mode 100644
index 864a746..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/LsaHeader.java
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.primitives.Bytes;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfLsa;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Defines the LSA header, fields and the methods to access them.
- */
-public class LsaHeader implements OspfLsa {
-
-    /*
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |            LS age             |    Options    |    LS type    |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                        Link State ID                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                     Advertising Router                        |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                     LS sequence number                        |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |         LS checksum           |             length            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       LSA header format
-       REFERENCE : RFC 2328
-     */
-    public static final Logger log = LoggerFactory.getLogger(LsaHeader.class);
-    private int age;
-    private int options;
-    private int lsType;
-    private long lsSequenceNo;
-    private int lsCheckSum;
-    private int lsPacketLen;
-    private String linkStateId;
-    private Ip4Address advertisingRouter;
-
-    /**
-     * Gets LSA age.
-     *
-     * @return LSA age
-     */
-    public int age() {
-        return age;
-    }
-
-    /**
-     * Sets LSA age.
-     *
-     * @param age LSA age
-     */
-    public void setAge(int age) {
-        this.age = age;
-    }
-
-    /**
-     * Gets options value.
-     *
-     * @return options header value
-     */
-    public int options() {
-        return options;
-    }
-
-    /**
-     * Sets options header value.
-     *
-     * @param options header value
-     */
-    public void setOptions(int options) {
-        this.options = options;
-    }
-
-    /**
-     * Gets LSA type.
-     *
-     * @return LSA type
-     */
-    public int lsType() {
-        return lsType;
-    }
-
-    /**
-     * Sets LSA type.
-     *
-     * @param lsType LSA type
-     */
-    public void setLsType(int lsType) {
-        this.lsType = lsType;
-    }
-
-    /**
-     * Gets link state id.
-     *
-     * @return linkStateId link state id
-     */
-    public String linkStateId() {
-        return linkStateId;
-    }
-
-    /**
-     * Sets link state id.
-     *
-     * @param linkStateId link state id
-     */
-    public void setLinkStateId(String linkStateId) {
-        this.linkStateId = linkStateId;
-    }
-
-    /**
-     * Gets advertising router IP.
-     *
-     * @return advertising router
-     */
-    public Ip4Address advertisingRouter() {
-        return advertisingRouter;
-    }
-
-    /**
-     * Sets advertising router.
-     *
-     * @param advertisingRouter advertising router
-     */
-    public void setAdvertisingRouter(Ip4Address advertisingRouter) {
-        this.advertisingRouter = advertisingRouter;
-    }
-
-    /**
-     * Gets LSA sequence number.
-     *
-     * @return LSA sequence number
-     */
-    public long lsSequenceNo() {
-        return lsSequenceNo;
-    }
-
-    /**
-     * Sets LSA sequence number.
-     *
-     * @param lsSequenceNo LSA sequence number
-     */
-    public void setLsSequenceNo(long lsSequenceNo) {
-        this.lsSequenceNo = lsSequenceNo;
-    }
-
-    /**
-     * Gets LSA check sum.
-     *
-     * @return lsCheckSum LSA checksum
-     */
-    public int lsCheckSum() {
-        return lsCheckSum;
-    }
-
-    /**
-     * Sets LSA checksum.
-     *
-     * @param lsCheckSum LSA checksum
-     */
-    public void setLsCheckSum(int lsCheckSum) {
-        this.lsCheckSum = lsCheckSum;
-    }
-
-    /**
-     * Gets lsa packet length.
-     *
-     * @return lsPacketLen LSA packet length
-     */
-    public int lsPacketLen() {
-        return lsPacketLen;
-    }
-
-    /**
-     * Sets LSA packet length.
-     *
-     * @param lsPacketLen LSA packet length
-     */
-    public void setLsPacketLen(int lsPacketLen) {
-        this.lsPacketLen = lsPacketLen;
-    }
-
-    @Override
-    public OspfLsaType getOspfLsaType() {
-        if (lsType == OspfLsaType.ROUTER.value()) {
-            return OspfLsaType.ROUTER;
-        } else if (lsType == OspfLsaType.NETWORK.value()) {
-            return OspfLsaType.NETWORK;
-        } else if (lsType == OspfLsaType.SUMMARY.value()) {
-            return OspfLsaType.SUMMARY;
-        } else if (lsType == OspfLsaType.ASBR_SUMMARY.value()) {
-            return OspfLsaType.ASBR_SUMMARY;
-        } else if (lsType == OspfLsaType.EXTERNAL_LSA.value()) {
-            return OspfLsaType.EXTERNAL_LSA;
-        } else if (lsType == OspfLsaType.LINK_LOCAL_OPAQUE_LSA.value()) {
-            return OspfLsaType.LINK_LOCAL_OPAQUE_LSA;
-        } else if (lsType == OspfLsaType.AREA_LOCAL_OPAQUE_LSA.value()) {
-            return OspfLsaType.AREA_LOCAL_OPAQUE_LSA;
-        } else if (lsType == OspfLsaType.AS_OPAQUE_LSA.value()) {
-            return OspfLsaType.AS_OPAQUE_LSA;
-        }
-
-        return OspfLsaType.UNDEFINED;
-    }
-
-    @Override
-    public OspfLsa lsaHeader() {
-        return this;
-    }
-
-    /**
-     * Gets the LSA header as bytes.
-     *
-     * @return LSA header as bytes
-     */
-    public byte[] getLsaHeaderAsByteArray() {
-        List<Byte> headerLst = new ArrayList<>();
-        try {
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.age())));
-            headerLst.add((byte) this.options());
-            headerLst.add((byte) this.lsType());
-            headerLst.addAll(Bytes.asList(InetAddress.getByName(this.linkStateId()).getAddress()));
-            headerLst.addAll(Bytes.asList(this.advertisingRouter().toOctets()));
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToFourBytes(this.lsSequenceNo())));
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.lsCheckSum())));
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.lsPacketLen())));
-        } catch (Exception e) {
-            log.debug("Error::getLsaHeaderAsByteArray {}", e.getMessage());
-            return Bytes.toArray(headerLst);
-        }
-        return Bytes.toArray(headerLst);
-    }
-
-    /**
-     * Populates the header from the LSA header instance.
-     *
-     * @param lsaHeader LSA header instance
-     */
-    public void populateHeader(LsaHeader lsaHeader) {
-        //assign all the header values
-        this.setAge(lsaHeader.age());
-        this.setOptions(lsaHeader.options());
-        this.setLsType(lsaHeader.lsType());
-        this.setLinkStateId(lsaHeader.linkStateId());
-        this.setAdvertisingRouter(lsaHeader.advertisingRouter());
-        this.setLsSequenceNo(lsaHeader.lsSequenceNo());
-        this.setLsCheckSum(lsaHeader.lsCheckSum());
-        this.setLsPacketLen(lsaHeader.lsPacketLen());
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        LsaHeader that = (LsaHeader) o;
-        return Objects.equal(age, that.age) &&
-                Objects.equal(options, that.options) &&
-                Objects.equal(lsType, that.lsType) &&
-                Objects.equal(lsSequenceNo, that.lsSequenceNo) &&
-                Objects.equal(lsCheckSum, that.lsCheckSum) &&
-                Objects.equal(lsPacketLen, that.lsPacketLen) &&
-                Objects.equal(linkStateId, that.linkStateId) &&
-                Objects.equal(advertisingRouter, that.advertisingRouter);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(age, options, lsType, lsSequenceNo, lsCheckSum,
-                                lsPacketLen, linkStateId, advertisingRouter);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("age", age)
-                .add("options", options)
-                .add("lsType", lsType)
-                .add("lsSequenceNo", lsSequenceNo)
-                .add("lsCheckSum", lsCheckSum)
-                .add("lsPacketLen", lsPacketLen)
-                .add("linkStateId;", linkStateId)
-                .add("advertisingRouter", advertisingRouter)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/OpaqueLsaHeader.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/OpaqueLsaHeader.java
deleted file mode 100644
index c2da0c3..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/OpaqueLsaHeader.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.primitives.Bytes;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Defines the Opaque LSA header, fields and the methods to access them.
- */
-public class OpaqueLsaHeader extends LsaHeader {
-    /*
-       0                   1                   2                   3
-       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |            LS age             |     Options   |  9, 10, or 11 |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |  Opaque Type  |               Opaque ID                       |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |                      Advertising Router                       |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |                      LS Sequence Number                       |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |         LS checksum           |           Length              |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      Opaque LSA header format
-      REFERENCE : RFC 5250
-     */
-    private int opaqueId;
-    private int opaqueType;
-
-    /**
-     * Populates the header from the lsaHeader instance.
-     *
-     * @param lsaHeader lsa header instance.
-     */
-    public void populateHeader(OpaqueLsaHeader lsaHeader) {
-        //assign all the header values
-        this.setAge(lsaHeader.age());
-        this.setOptions(lsaHeader.options());
-        this.setLsType(lsaHeader.lsType());
-        this.setLinkStateId(lsaHeader.linkStateId());
-        this.setAdvertisingRouter(lsaHeader.advertisingRouter());
-        this.setLsSequenceNo(lsaHeader.lsSequenceNo());
-        this.setLsCheckSum(lsaHeader.lsCheckSum());
-        this.setLsPacketLen(lsaHeader.lsPacketLen());
-        this.setOpaqueId(lsaHeader.opaqueId());
-        this.setOpaqueType(lsaHeader.opaqueType());
-    }
-
-    /**
-     * Gets the opaque id.
-     *
-     * @return opaque id
-     */
-    public int opaqueId() {
-        return opaqueId;
-    }
-
-    /**
-     * Sets the opaque id.
-     *
-     * @param opaqueId opaque id
-     */
-    public void setOpaqueId(int opaqueId) {
-        this.opaqueId = opaqueId;
-    }
-
-    /**
-     * Gets opaque type.
-     *
-     * @return opaque type
-     */
-    public int opaqueType() {
-        return opaqueType;
-    }
-
-    /**
-     * Sets opaque type.
-     *
-     * @param opaqueType opaque type
-     */
-    public void setOpaqueType(int opaqueType) {
-        this.opaqueType = opaqueType;
-    }
-
-    /**
-     * Gets header as byte array.
-     *
-     * @return header as byte array
-     */
-    public byte[] getOpaqueLsaHeaderAsByteArray() {
-        List<Byte> headerLst = new ArrayList<>();
-        try {
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.age())));
-            headerLst.add((byte) this.options());
-            headerLst.add((byte) this.lsType());
-            headerLst.add((byte) this.opaqueType());
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToThreeBytes(this.opaqueId())));
-            headerLst.addAll(Bytes.asList(this.advertisingRouter().toOctets()));
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToFourBytes(this.lsSequenceNo())));
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.lsCheckSum())));
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.lsPacketLen())));
-        } catch (Exception e) {
-            log.debug("Error::getLsaHeaderAsByteArray {}", e.getMessage());
-            return Bytes.toArray(headerLst);
-        }
-        return Bytes.toArray(headerLst);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        OpaqueLsaHeader that = (OpaqueLsaHeader) o;
-        return Objects.equal(opaqueId, that.opaqueId) &&
-                Objects.equal(opaqueType, that.opaqueType) &&
-                Objects.equal(age(), that.age()) &&
-                Objects.equal(options(), that.options()) &&
-                Objects.equal(lsType(), that.lsType()) &&
-                Objects.equal(lsSequenceNo(), that.lsSequenceNo()) &&
-                Objects.equal(lsCheckSum(), that.lsCheckSum()) &&
-                Objects.equal(lsPacketLen(), that.lsPacketLen()) &&
-                Objects.equal(linkStateId(), that.linkStateId()) &&
-                Objects.equal(advertisingRouter(), that.advertisingRouter());
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(opaqueId, opaqueType);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("opaqueId", this.opaqueId)
-                .add("opaqueType", opaqueType)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/TlvHeader.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/TlvHeader.java
deleted file mode 100644
index 22b0d67..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/TlvHeader.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of a TLV header.
- */
-public class TlvHeader {
-    private int tlvType;
-    private int tlvLength;
-
-    /**
-     * Gets TLV length.
-     *
-     * @return TLV length
-     */
-    public int tlvLength() {
-        return tlvLength;
-    }
-
-    /**
-     * Sets TLV length.
-     *
-     * @param tlvLength TLV length
-     */
-    public void setTlvLength(int tlvLength) {
-        this.tlvLength = tlvLength;
-    }
-
-    /**
-     * Gets TLV type.
-     *
-     * @return TLV type
-     */
-    public int tlvType() {
-        return tlvType;
-    }
-
-    /**
-     * Sets TLV type.
-     *
-     * @param tlvType TLV type
-     */
-    public void setTlvType(int tlvType) {
-        this.tlvType = tlvType;
-    }
-
-    /**
-     * Gets TLV header as bytes.
-     *
-     * @return TLV header as bytes
-     */
-    public byte[] getTlvHeaderAsByteArray() {
-        List<Byte> headerLst = new ArrayList();
-        headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.tlvType)));
-        headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.tlvLength)));
-        return Bytes.toArray(headerLst);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("tlvType", tlvType)
-                .add("tlvLength", tlvLength)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/AdministrativeGroup.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/AdministrativeGroup.java
deleted file mode 100644
index 16aa7c9..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/AdministrativeGroup.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-
-/**
- * Representation of an administrative group value of link tlv of Traffic Engineering..
- */
-public class AdministrativeGroup extends TlvHeader implements LinkSubType {
-
-    private int administrativeGroup;
-
-    /**
-     * Creates an administrative group instance.
-     *
-     * @param header Tlv Header instance
-     */
-    public AdministrativeGroup(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Gets administrative group value.
-     *
-     * @return administrative group value
-     */
-    public int administrativeGroup() {
-        return administrativeGroup;
-    }
-
-    /**
-     * Sets administrative group value.
-     *
-     * @param administrativeGroup value
-     */
-    public void setAdministrativeGroup(int administrativeGroup) {
-        this.administrativeGroup = administrativeGroup;
-    }
-
-    /**
-     * Gets administrative group value.
-     *
-     * @return administrativeGroup value
-     */
-    public int getAdministrativeGroupValue() {
-        return this.administrativeGroup;
-    }
-
-    /**
-     * Reads bytes from channel buffer.
-     *
-     * @param channelBuffer Channel buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        byte[] tempByteArray = new byte[tlvLength()];
-        channelBuffer.readBytes(tempByteArray, 0, tlvLength());
-        this.setAdministrativeGroup(OspfUtil.byteToInteger(tempByteArray));
-    }
-
-    /**
-     * Returns administrative group as byte array.
-     *
-     * @return administrative group instance as byte array
-     */
-    public byte[] asBytes() {
-        byte[] linkSubType = null;
-
-        byte[] linkSubTlvHeader = getTlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-
-        return linkSubType;
-    }
-
-    /**
-     * Gets administrative group body as byte array.
-     *
-     * @return byte array of sub tlv administrative group
-     */
-    public byte[] getLinkSubTypeTlvBodyAsByteArray() {
-
-        byte[] linkSubTypeBody;
-        linkSubTypeBody = OspfUtil.convertToFourBytes(this.administrativeGroup);
-
-        return linkSubTypeBody;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("administrativeGroup", administrativeGroup)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkId.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkId.java
deleted file mode 100644
index e530097..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkId.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.exceptions.OspfErrorType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-/**
- * Representation of link id value of link tlv of Traffic Engineering.
- */
-public class LinkId extends TlvHeader implements LinkSubType {
-    private static final Logger log =
-            LoggerFactory.getLogger(LinkId.class);
-    private String linkId;
-
-    /**
-     * Creates an instance of link id.
-     *
-     * @param header tlv header instance
-     */
-    public LinkId(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Sets link type.
-     *
-     * @param linkType link type value
-     */
-    public void setLinkId(String linkType) {
-        this.linkId = linkType;
-    }
-
-    /**
-     * Reads bytes from channel buffer.
-     *
-     * @param channelBuffer channel buffer instance
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-        try {
-            byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-            this.setLinkId(InetAddress.getByAddress(tempByteArray).getHostName());
-        } catch (UnknownHostException e) {
-            log.debug("Error::LinkId:: {}", e.getMessage());
-            throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR,
-                                         OspfErrorType.BAD_MESSAGE);
-        }
-    }
-
-    /**
-     * Returns instance as byte array.
-     *
-     * @return instance as bytes
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public byte[] asBytes() throws OspfParseException {
-        byte[] linkSubType = null;
-
-        byte[] linkSubTlvHeader = getTlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-
-        return linkSubType;
-    }
-
-    /**
-     * Gets byte array of link id sub tlv body.
-     *
-     * @return gets the body as byte array
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public byte[] getLinkSubTypeTlvBodyAsByteArray() throws OspfParseException {
-        byte[] linkSubTypeBody = null;
-        try {
-            linkSubTypeBody = InetAddress.getByName(this.linkId).getAddress();
-        } catch (Exception e) {
-            log.debug("Error::LinkId:: {}", e.getMessage());
-            throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR,
-                                         OspfErrorType.BAD_MESSAGE);
-        }
-        return linkSubTypeBody;
-    }
-
-    /**
-     * Returns this instance as string.
-     *
-     * @return this instance as string
-     */
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("linkId", linkId)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkSubType.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkSubType.java
deleted file mode 100644
index 3703bfe..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkSubType.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-/**
- * Marker interface to represent TE Link sub types.
- */
-public interface LinkSubType {
-}
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkSubTypes.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkSubTypes.java
deleted file mode 100644
index f5cda35..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkSubTypes.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-/**
- * Representation of TE link sub types.
- */
-public enum LinkSubTypes {
-    LINK_TYPE(1),
-    LINK_ID(2),
-    LOCAL_INTERFACE_IP_ADDRESS(3),
-    REMOTE_INTERFACE_IP_ADDRESS(4),
-    TRAFFIC_ENGINEERING_METRIC(5),
-    MAXIMUM_BANDWIDTH(6),
-    MAXIMUM_RESERVABLE_BANDWIDTH(7),
-    UNRESERVED_BANDWIDTH(8),
-    ADMINISTRATIVE_GROUP(9);
-
-    private int value;
-
-    /**
-     * Creates an instance of link sub types.
-     *
-     * @param value link sub type value
-     */
-    LinkSubTypes(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Gets the link sub type value.
-     *
-     * @return link sub type value
-     */
-    public int value() {
-        return value;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkType.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkType.java
deleted file mode 100644
index a1a2ac9..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkType.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.exceptions.OspfErrorType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Representation of link type TE value.
- */
-public class LinkType extends TlvHeader implements LinkSubType {
-    private static final Logger log =
-            LoggerFactory.getLogger(LinkType.class);
-    private int linkType;
-
-    /**
-     * Creates link type instance .
-     */
-    public LinkType() {
-
-    }
-
-    /**
-     * Creates link type instance.
-     *
-     * @param header tlv header instance
-     */
-    public LinkType(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Sets link type.
-     *
-     * @param linkType value of link type
-     */
-    public void setLinkType(int linkType) {
-        this.linkType = linkType;
-    }
-
-    /**
-     * Reads from channel buffer.
-     *
-     * @param channelBuffer channel buffer instance
-     * @throws OspfParseException might throws exception while parsing buffer
-     */
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-        try {
-            int len = channelBuffer.readableBytes();
-            byte[] tempByteArray = new byte[len];
-            channelBuffer.readBytes(tempByteArray, 0, len);
-            this.setLinkType(OspfUtil.byteToInteger(tempByteArray));
-        } catch (Exception e) {
-            log.debug("Error::LinkType:: {}", e.getMessage());
-            throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR,
-                                         OspfErrorType.BAD_MESSAGE);
-        }
-    }
-
-    /**
-     * Gets link subtype as byte array.
-     *
-     * @return byte array of link subtype
-     */
-    public byte[] asBytes() {
-        byte[] linkSubType = null;
-
-        byte[] linkSubTlvHeader = getTlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-        return linkSubType;
-    }
-
-    /**
-     * Gets link subtype as bytes.
-     *
-     * @return byte array of link subtype
-     */
-    public byte[] getLinkSubTypeTlvBodyAsByteArray() {
-        byte[] linkSubTypeBody = new byte[4];
-        linkSubTypeBody[0] = (byte) this.linkType;
-        linkSubTypeBody[1] = 0;
-        linkSubTypeBody[2] = 0;
-        linkSubTypeBody[3] = 0;
-        return linkSubTypeBody;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("linkType", linkType)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LocalInterfaceIpAddress.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LocalInterfaceIpAddress.java
deleted file mode 100644
index 0214ccc..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LocalInterfaceIpAddress.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.exceptions.OspfErrorType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of local interface ip address TE value.
- */
-public class LocalInterfaceIpAddress extends TlvHeader implements LinkSubType {
-    private static final Logger log =
-            LoggerFactory.getLogger(RemoteInterfaceIpAddress.class);
-    private List<String> localInterfaceIPAddress = new ArrayList<>();
-
-    /**
-     * Creates an instance of local interface ip address.
-     *
-     * @param header tlv header instance
-     */
-    public LocalInterfaceIpAddress(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Adds local interface ip address.
-     *
-     * @param localAddress ip address
-     */
-    public void addLocalInterfaceIPAddress(String localAddress) {
-        localInterfaceIPAddress.add(localAddress);
-    }
-
-    /**
-     * Gets local interface ip address.
-     *
-     * @return localAddress ip address
-     */
-    public List<String> getLocalInterfaceIPAddress() {
-        return localInterfaceIPAddress;
-    }
-
-    /**
-     * Reads bytes from channel buffer.
-     *
-     * @param channelBuffer channel buffer instance
-     * @throws OspfParseException might throws exception while parsing buffer
-     */
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-        while (channelBuffer.readableBytes() >= OspfUtil.FOUR_BYTES) {
-            try {
-                byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-                channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-                this.addLocalInterfaceIPAddress(InetAddress.getByAddress(tempByteArray).getHostName());
-            } catch (UnknownHostException e) {
-                log.debug("Error::readFrom:: {}", e.getMessage());
-                throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR,
-                                             OspfErrorType.BAD_MESSAGE);
-            }
-        }
-    }
-
-    /**
-     * Gets local interface ip address as byte array.
-     *
-     * @return local interface ip address as byte array
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public byte[] asBytes() throws OspfParseException {
-        byte[] linkSubType = null;
-
-        byte[] linkSubTlvHeader = getTlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-
-        return linkSubType;
-    }
-
-    /**
-     * Gets byte array of local interface ip address.
-     *
-     * @return byte array of local interface ip address
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public byte[] getLinkSubTypeTlvBodyAsByteArray() throws OspfParseException {
-
-        List<Byte> linkSubTypeBody = new ArrayList<>();
-
-        for (String remoteAddress : this.localInterfaceIPAddress) {
-            try {
-                linkSubTypeBody.addAll(Bytes.asList(InetAddress.getByName(remoteAddress).getAddress()));
-            } catch (Exception e) {
-                log.debug("Error::getLinkSubTypeTlvBodyAsByteArray:: {}", e.getMessage());
-                throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR,
-                                             OspfErrorType.BAD_MESSAGE);
-            }
-        }
-
-        return Bytes.toArray(linkSubTypeBody);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("localInterfaceIPAddress", localInterfaceIPAddress)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumBandwidth.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumBandwidth.java
deleted file mode 100644
index 495040c..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumBandwidth.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-
-/**
- * Representation of maximum bandwidth TE value.
- */
-public class MaximumBandwidth extends TlvHeader implements LinkSubType {
-    private float maximumBandwidth;
-
-    /**
-     * Creates an instance of maximum bandwidth.
-     *
-     * @param header tlv header instance
-     */
-    public MaximumBandwidth(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Sets value of maximum bandwidth.
-     *
-     * @param maximumBandwidth value of maximum bandwidth
-     */
-    public void setMaximumBandwidth(float maximumBandwidth) {
-        this.maximumBandwidth = maximumBandwidth;
-    }
-
-    /**
-     * Gets value of maximum bandwidth.
-     *
-     * @return maximumBandwidth value of maximum bandwidth
-     */
-    public float getMaximumBandwidthValue() {
-        return this.maximumBandwidth;
-    }
-
-    /**
-     * Reads bytes from channel buffer.
-     *
-     * @param channelBuffer channel buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        byte[] tempByteArray = new byte[tlvLength()];
-        channelBuffer.readBytes(tempByteArray, 0, tlvLength());
-        int maxBandwidth = (OspfUtil.byteToInteger(tempByteArray));
-        this.setMaximumBandwidth(Float.intBitsToFloat(maxBandwidth));
-    }
-
-    /**
-     * Gets byte array of maximum bandwidth sub tlv.
-     *
-     * @return byte array of maximum bandwidth sub tlv
-     */
-    public byte[] asBytes() {
-        byte[] linkSubType = null;
-        byte[] linkSubTlvHeader = getTlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-
-        return linkSubType;
-    }
-
-    /**
-     * Gets maximum bandwidth sub tlv byte array.
-     *
-     * @return byte array of maximum bandwidth sub tlv
-     */
-    public byte[] getLinkSubTypeTlvBodyAsByteArray() {
-        byte[] linkSubTypeBody;
-        linkSubTypeBody = OspfUtil.convertToFourBytes(Float.floatToIntBits(this.maximumBandwidth));
-        return linkSubTypeBody;
-    }
-
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("maximumBandwidth", maximumBandwidth)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumReservableBandwidth.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumReservableBandwidth.java
deleted file mode 100644
index 2b4e6d3..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumReservableBandwidth.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-
-/**
- * Representation of maximum reservable bandwidth TE value.
- */
-public class MaximumReservableBandwidth extends TlvHeader implements LinkSubType {
-    private float maximumReservableBandwidth;
-
-    /**
-     * Creates an instance of maximum reservable bandwidth.
-     *
-     * @param header tlv header
-     */
-    public MaximumReservableBandwidth(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Sets value of maximum reversible bandwidth.
-     *
-     * @param maximumBandwidth maximum reversible bandwidth
-     */
-    public void setMaximumBandwidth(float maximumBandwidth) {
-        this.maximumReservableBandwidth = maximumBandwidth;
-    }
-
-    /**
-     * Gets value of maximum reversible bandwidth.
-     *
-     * @return maximumBandwidth maximum reversible bandwidth
-     */
-    public float getMaximumBandwidthValue() {
-        return this.maximumReservableBandwidth;
-    }
-
-    /**
-     * Reads bytes from channel buffer.
-     *
-     * @param channelBuffer channel buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        byte[] tempByteArray = new byte[tlvLength()];
-        channelBuffer.readBytes(tempByteArray, 0, tlvLength());
-        int maxBandwidth = (OspfUtil.byteToInteger(tempByteArray));
-        this.setMaximumBandwidth(Float.intBitsToFloat(maxBandwidth));
-    }
-
-    /**
-     * Returns byte array of maximum reservable bandwidth.
-     *
-     * @return byte array of maximum reservable bandwidth
-     */
-    public byte[] asBytes() {
-        byte[] linkSubType = null;
-
-        byte[] linkSubTlvHeader = getTlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = getLinksubTypeTlvBodyAsByteArray();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-        return linkSubType;
-
-    }
-
-    /**
-     * Gets maximum reservable bandwidth sub tlv body as byte array.
-     *
-     * @return byte of maximum reservable bandwidth sub tlv body
-     */
-    public byte[] getLinksubTypeTlvBodyAsByteArray() {
-        byte[] linkSubTypeBody;
-        linkSubTypeBody = OspfUtil.convertToFourBytes(Float.floatToIntBits(this.maximumReservableBandwidth));
-        return linkSubTypeBody;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("maximumReservableBandwidth", maximumReservableBandwidth)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/RemoteInterfaceIpAddress.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/RemoteInterfaceIpAddress.java
deleted file mode 100644
index 7aaf9d9..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/RemoteInterfaceIpAddress.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.exceptions.OspfErrorType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of remote interface ip address TE value.
- */
-public class RemoteInterfaceIpAddress extends TlvHeader implements LinkSubType {
-    private static final Logger log =
-            LoggerFactory.getLogger(RemoteInterfaceIpAddress.class);
-    private List<String> remoteInterfaceAddress = new ArrayList<>();
-
-    /**
-     * Creates an instance of remote interface ip address.
-     *
-     * @param header tlv header instance
-     */
-    public RemoteInterfaceIpAddress(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Adds remote interface ip address.
-     *
-     * @param remoteAddress ip address
-     */
-    public void addRemoteInterfaceAddress(String remoteAddress) {
-        remoteInterfaceAddress.add(remoteAddress);
-    }
-
-    /**
-     * Gets remote interface ip address.
-     *
-     * @return remoteAddress ip address
-     */
-    public List<String> getRemoteInterfaceAddress() {
-        return remoteInterfaceAddress;
-    }
-
-    /**
-     * Reads bytes from channel buffer .
-     *
-     * @param channelBuffer channel buffer instance
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-        while (channelBuffer.readableBytes() >= OspfUtil.FOUR_BYTES) {
-            try {
-                byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-                channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-                this.addRemoteInterfaceAddress(InetAddress.getByAddress(tempByteArray).getHostName());
-            } catch (Exception e) {
-                log.debug("Error::RemoteInterfaceIPAddress:: {}", e.getMessage());
-                throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR,
-                                             OspfErrorType.BAD_MESSAGE);
-            }
-        }
-    }
-
-    /**
-     * Gets byte array of remote interface ip address .
-     *
-     * @return byte array of remote interface ip address
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public byte[] asBytes() throws OspfParseException {
-        byte[] linkSubType = null;
-
-        byte[] linkSubTlvHeader = getTlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-
-        return linkSubType;
-    }
-
-    /**
-     * Gets byte array of remote interface ip address.
-     *
-     * @return byte array of remote interface ip address
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public byte[] getLinkSubTypeTlvBodyAsByteArray() throws OspfParseException {
-        List<Byte> linkSubTypeBody = new ArrayList<>();
-
-        for (String remoteAddress : this.remoteInterfaceAddress) {
-            try {
-                linkSubTypeBody.addAll(Bytes.asList(InetAddress.getByName(remoteAddress).getAddress()));
-            } catch (Exception e) {
-                log.debug("Error::RemoteInterfaceIPAddress:: {}", e.getMessage());
-                throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR,
-                                             OspfErrorType.BAD_MESSAGE);
-            }
-        }
-
-        return Bytes.toArray(linkSubTypeBody);
-    }
-
-    /**
-     * Returns instance as string.
-     *
-     * @return instance as string
-     */
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("RemoteInterfaceIPAddress", remoteInterfaceAddress)
-                .toString();
-    }
-
-}
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/TrafficEngineeringMetric.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/TrafficEngineeringMetric.java
deleted file mode 100644
index 8693eee..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/TrafficEngineeringMetric.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-
-/**
- * Representation of traffic engineering metric TE value.
- */
-public class TrafficEngineeringMetric extends TlvHeader implements LinkSubType {
-    private long trafficEngineeringMetric;
-
-    /**
-     * Creates an instance of traffic engineering metric .
-     *
-     * @param header tlv header instance
-     */
-    public TrafficEngineeringMetric(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Sets TE metric value.
-     *
-     * @param trafficEngineeringMetric value of trafficEngineeringMetric
-     */
-    public void setTrafficEngineeringMetric(long trafficEngineeringMetric) {
-        this.trafficEngineeringMetric = trafficEngineeringMetric;
-    }
-
-    /**
-     * Gets TE metric value.
-     *
-     * @return value of traffic engineering metric
-     */
-    public long getTrafficEngineeringMetricValue() {
-        return this.trafficEngineeringMetric;
-    }
-
-    /**
-     * Reads bytes from channel buffer .
-     *
-     * @param channelBuffer channel buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        byte[] tempByteArray = new byte[tlvLength()];
-        channelBuffer.readBytes(tempByteArray, 0, tlvLength());
-        this.setTrafficEngineeringMetric(OspfUtil.byteToLong(tempByteArray));
-    }
-
-    /**
-     * Gets instance as byte array.
-     *
-     * @return instance as byte array
-     */
-    public byte[] asBytes() {
-        byte[] linkSubType = null;
-
-        byte[] linkSubTlvHeader = getTlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-
-        return linkSubType;
-    }
-
-    /**
-     * Gets trafficEngineeringMetric as byte array .
-     *
-     * @return byte array of trafficEngineeringMetric
-     */
-    public byte[] getLinkSubTypeTlvBodyAsByteArray() {
-
-        byte[] linkSubTypeBody;
-        linkSubTypeBody = OspfUtil.convertToFourBytes(this.trafficEngineeringMetric);
-
-        return linkSubTypeBody;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("trafficEngineeringMetric", trafficEngineeringMetric)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnknownLinkSubType.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnknownLinkSubType.java
deleted file mode 100644
index 12f4a73..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnknownLinkSubType.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-
-/**
- * Representation of an unknown or experimental TE value.
- */
-public class UnknownLinkSubType extends TlvHeader implements LinkSubType {
-
-    private byte[] value;
-
-    /**
-     * Creates an instance of this.
-     *
-     * @param header tlv header
-     */
-    public UnknownLinkSubType(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Gets the unknown subtype value .
-     *
-     * @return unknown subtype value
-     */
-    public byte[] value() {
-        return value;
-    }
-
-    /**
-     * Sets unknown subtype value.
-     *
-     * @param value unknown subtype value.
-     */
-    public void setValue(byte[] value) {
-        this.value = value;
-    }
-
-    /**
-     * Reads bytes from channel buffer .
-     *
-     * @param channelBuffer channel buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        byte[] tempByteArray = new byte[tlvLength()];
-        channelBuffer.readBytes(tempByteArray, 0, tlvLength());
-        this.setValue(tempByteArray);
-    }
-
-    /**
-     * Returns instance as byte array.
-     *
-     * @return instance as byte array
-     */
-    public byte[] asBytes() {
-        byte[] linkSubType = null;
-
-        byte[] linkSubTlvHeader = getTlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-        return linkSubType;
-
-    }
-
-    /**
-     * Gets instance body as byte array.
-     *
-     * @return instance body as byte array
-     */
-    public byte[] getLinkSubTypeTlvBodyAsByteArray() {
-        return value;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("value", value)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnreservedBandwidth.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnreservedBandwidth.java
deleted file mode 100644
index 06bfa60..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnreservedBandwidth.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-import org.onosproject.ospf.protocol.util.OspfParameters;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of an unreserved band width TE value.
- */
-public class UnreservedBandwidth extends TlvHeader implements LinkSubType {
-    private List<Float> unReservedBandwidth = new ArrayList<>();
-
-    /**
-     * Creates an instance of unreserved band width.
-     *
-     * @param header tlv header instance
-     */
-    public UnreservedBandwidth(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Adds value of un reserved bandwidth .
-     *
-     * @param unreservedBandwidth value of un reserved bandwidth
-     */
-    public void addUnReservedBandwidth(float unreservedBandwidth) {
-        this.unReservedBandwidth.add(unreservedBandwidth);
-    }
-
-    /**
-     * Gets list of un reserved bandwidth .
-     *
-     * @return List of un reserved bandwidth
-     */
-    public List<Float> getUnReservedBandwidthValue() {
-        return this.unReservedBandwidth;
-    }
-
-    /**
-     * Reads bytes from channel buffer .
-     *
-     * @param channelBuffer channel buffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        while (channelBuffer.readableBytes() >= OspfUtil.FOUR_BYTES) {
-            int maxReversibleBandwidth = channelBuffer.readInt();
-            this.addUnReservedBandwidth(Float.intBitsToFloat(maxReversibleBandwidth));
-        }
-    }
-
-    /**
-     * Gets instance as byte array.
-     *
-     * @return instance as byte array
-     */
-    public byte[] asBytes() {
-        byte[] linkSubType = null;
-
-        byte[] linkSubTlvHeader = getTlvHeaderAsByteArray();
-        byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray();
-        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
-
-        return linkSubType;
-    }
-
-    /**
-     * Gets unreserved bandwidth as byte array.
-     *
-     * @return unreserved bandwidth as byte array
-     */
-    public byte[] getLinkSubTypeTlvBodyAsByteArray() {
-        List<Byte> linkSubTypeBody = new ArrayList<>();
-        if (this.unReservedBandwidth.size() < 8) {
-            int size = OspfUtil.EIGHT_BYTES - this.unReservedBandwidth.size();
-            for (int i = 0; i < size; i++) {
-                linkSubTypeBody.addAll(Bytes.asList(OspfUtil.convertToFourBytes(OspfParameters.INITIAL_BANDWIDTH)));
-            }
-        }
-        for (Float unreservedBandwidth : this.unReservedBandwidth) {
-            int unresBandwidth = Float.floatToIntBits(unreservedBandwidth);
-            linkSubTypeBody.addAll(Bytes.asList(OspfUtil.convertToFourBytes(unresBandwidth)));
-        }
-
-        return Bytes.toArray(linkSubTypeBody);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("unReservedBandwidth", unReservedBandwidth)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/package-info.java
deleted file mode 100644
index 980d260..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the ospf TE link types.
- */
-package org.onosproject.ospf.protocol.lsa.linksubtype;
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/package-info.java
deleted file mode 100644
index 871fc16..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the OSPF LSA.
- */
-package org.onosproject.ospf.protocol.lsa;
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfExternalDestination.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfExternalDestination.java
deleted file mode 100644
index 0b377ab..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfExternalDestination.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.subtypes;
-
-import com.google.common.base.MoreObjects;
-import org.onlab.packet.Ip4Address;
-
-/**
- * Defines the OSPF external destination.
- */
-public class OspfExternalDestination {
-
-    private boolean isType1orType2Metric;
-    private int metric;
-    private Ip4Address forwardingAddress;
-    private int externalRouterTag;
-
-    /**
-     * Gets whether type1 or type 2 metric.
-     *
-     * @return true if Type1 or false if Type2 metric
-     */
-    public boolean isType1orType2Metric() {
-        return isType1orType2Metric;
-    }
-
-    /**
-     * Sets whether type1 or Type2 metric.
-     *
-     * @param isType1orType2Metric is type 1 or type 2 metric
-     */
-    public void setType1orType2Metric(boolean isType1orType2Metric) {
-        this.isType1orType2Metric = isType1orType2Metric;
-    }
-
-    /**
-     * Gets the metric value.
-     *
-     * @return metric value
-     */
-    public int metric() {
-        return metric;
-    }
-
-    /**
-     * Sets the metric value.
-     *
-     * @param metric metric value
-     */
-    public void setMetric(int metric) {
-        this.metric = metric;
-    }
-
-    /**
-     * Gets forwarding address.
-     *
-     * @return forwarding address
-     */
-    public Ip4Address forwardingAddress() {
-        return forwardingAddress;
-    }
-
-    /**
-     * Sets forwarding address.
-     *
-     * @param forwardingAddress forwarding address
-     */
-    public void setForwardingAddress(Ip4Address forwardingAddress) {
-        this.forwardingAddress = forwardingAddress;
-    }
-
-    /**
-     * Gets external router tag.
-     *
-     * @return external router tag
-     */
-    public int externalRouterTag() {
-        return externalRouterTag;
-    }
-
-    /**
-     * Sets external router tag.
-     *
-     * @param externalRouterTag external router tag
-     */
-    public void setExternalRouterTag(int externalRouterTag) {
-        this.externalRouterTag = externalRouterTag;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("isType1orType2Metric", isType1orType2Metric)
-                .add("metric", metric)
-                .add("forwardingAddress", forwardingAddress)
-                .add("externalRouterTag", externalRouterTag)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfLsaLink.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfLsaLink.java
deleted file mode 100644
index d0c40ff..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfLsaLink.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.subtypes;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Representation of an OSPF LSA link.
- */
-public class OspfLsaLink {
-
-    private String linkId;
-    private String linkData;
-    private int linkType;
-    private int metric;
-    private int tos;
-
-    /**
-     * Gets link id.
-     *
-     * @return link id
-     */
-    public String linkId() {
-        return linkId;
-    }
-
-    /**
-     * Sets link id.
-     *
-     * @param linkId link id
-     */
-    public void setLinkId(String linkId) {
-        this.linkId = linkId;
-    }
-
-    /**
-     * Gets link data.
-     *
-     * @return link data
-     */
-    public String linkData() {
-        return linkData;
-    }
-
-    /**
-     * Sets link data.
-     *
-     * @param linkData link data
-     */
-    public void setLinkData(String linkData) {
-        this.linkData = linkData;
-    }
-
-    /**
-     * Gets link type.
-     *
-     * @return link type
-     */
-    public int linkType() {
-        return linkType;
-    }
-
-    /**
-     * Sets link type.
-     *
-     * @param linkType link type
-     */
-    public void setLinkType(int linkType) {
-        this.linkType = linkType;
-    }
-
-    /**
-     * Gets metric value.
-     *
-     * @return metric.
-     */
-    public int metric() {
-        return metric;
-    }
-
-    /**
-     * Sets metric value.
-     *
-     * @param metric metric
-     */
-    public void setMetric(int metric) {
-        this.metric = metric;
-    }
-
-    /**
-     * Gets tos.
-     *
-     * @return tos
-     */
-    public int tos() {
-        return tos;
-    }
-
-    /**
-     * Sets tos.
-     *
-     * @param tos tos
-     */
-    public void setTos(int tos) {
-        this.tos = tos;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("linkID", linkId)
-                .add("linkData", linkData)
-                .add("linkType", linkType)
-                .add("metric", metric)
-                .add("tos", tos)
-                .toString();
-    }
-}
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/package-info.java
deleted file mode 100644
index c74d683..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the OSPF LSA Sub Types.
- */
-package org.onosproject.ospf.protocol.lsa.subtypes;
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/LinkTlv.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/LinkTlv.java
deleted file mode 100644
index 6521ab2..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/LinkTlv.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.tlvtypes;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-import org.onosproject.ospf.protocol.lsa.linksubtype.AdministrativeGroup;
-import org.onosproject.ospf.protocol.lsa.linksubtype.LinkId;
-import org.onosproject.ospf.protocol.lsa.linksubtype.LinkSubType;
-import org.onosproject.ospf.protocol.lsa.linksubtype.LinkSubTypes;
-import org.onosproject.ospf.protocol.lsa.linksubtype.LinkType;
-import org.onosproject.ospf.protocol.lsa.linksubtype.LocalInterfaceIpAddress;
-import org.onosproject.ospf.protocol.lsa.linksubtype.MaximumBandwidth;
-import org.onosproject.ospf.protocol.lsa.linksubtype.MaximumReservableBandwidth;
-import org.onosproject.ospf.protocol.lsa.linksubtype.RemoteInterfaceIpAddress;
-import org.onosproject.ospf.protocol.lsa.linksubtype.TrafficEngineeringMetric;
-import org.onosproject.ospf.protocol.lsa.linksubtype.UnknownLinkSubType;
-import org.onosproject.ospf.protocol.lsa.linksubtype.UnreservedBandwidth;
-import org.onosproject.ospf.protocol.lsa.types.TopLevelTlv;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of an OSPF Opaque link tlv.
- */
-public class LinkTlv extends TlvHeader implements TopLevelTlv {
-    private List<LinkSubType> subTlv = new ArrayList<>();
-
-    /**
-     * Creates an instance of link tlv.
-     *
-     * @param header tlv header
-     */
-    public LinkTlv(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Gets sub tlv lists.
-     *
-     * @return sub tlv lists
-     */
-    public List<LinkSubType> subTlvList() {
-        return this.subTlv;
-    }
-
-    /**
-     * Reads bytes from channel buffer .
-     *
-     * @param channelBuffer channel buffer instance
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-        while (channelBuffer.readableBytes() > 0) {
-            TlvHeader tlvHeader = new TlvHeader();
-            tlvHeader.setTlvType(channelBuffer.readUnsignedShort());
-            tlvHeader.setTlvLength(channelBuffer.readUnsignedShort());
-
-            if (LinkSubTypes.LINK_TYPE.value() == tlvHeader.tlvType()) {
-                LinkType linktype = new LinkType(tlvHeader);
-                linktype.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength()));
-                subTlv.add(linktype);
-                if (tlvHeader.tlvLength() < OspfUtil.FOUR_BYTES) {
-                    int readerIndex = channelBuffer.readerIndex() + (OspfUtil.FOUR_BYTES - tlvHeader.tlvLength());
-                    channelBuffer.readerIndex(readerIndex);
-                }
-            } else if (LinkSubTypes.LINK_ID.value() == tlvHeader.tlvType()) {
-                LinkId linkId = new LinkId(tlvHeader);
-                linkId.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength()));
-                subTlv.add(linkId);
-            } else if (LinkSubTypes.LOCAL_INTERFACE_IP_ADDRESS.value() == tlvHeader.tlvType()) {
-                LocalInterfaceIpAddress localInterfaceIpAddress = new LocalInterfaceIpAddress(tlvHeader);
-                localInterfaceIpAddress.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength()));
-                subTlv.add(localInterfaceIpAddress);
-            } else if (LinkSubTypes.REMOTE_INTERFACE_IP_ADDRESS.value() == tlvHeader.tlvType()) {
-                RemoteInterfaceIpAddress remoteInterfaceIpAddress = new RemoteInterfaceIpAddress(tlvHeader);
-                remoteInterfaceIpAddress.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength()));
-                subTlv.add(remoteInterfaceIpAddress);
-            } else if (LinkSubTypes.TRAFFIC_ENGINEERING_METRIC.value() == tlvHeader.tlvType()) {
-                TrafficEngineeringMetric trafficEngineeringMetric = new TrafficEngineeringMetric(tlvHeader);
-                trafficEngineeringMetric.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength()));
-                subTlv.add(trafficEngineeringMetric);
-            } else if (LinkSubTypes.MAXIMUM_BANDWIDTH.value() == tlvHeader.tlvType()) {
-                MaximumBandwidth maximumBandwidth = new MaximumBandwidth(tlvHeader);
-                maximumBandwidth.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength()));
-                subTlv.add(maximumBandwidth);
-            } else if (LinkSubTypes.MAXIMUM_RESERVABLE_BANDWIDTH.value() == tlvHeader.tlvType()) {
-                MaximumReservableBandwidth maximumReservableBandwidth = new MaximumReservableBandwidth(tlvHeader);
-                maximumReservableBandwidth.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength()));
-                subTlv.add(maximumReservableBandwidth);
-            } else if (LinkSubTypes.UNRESERVED_BANDWIDTH.value() == tlvHeader.tlvType()) {
-                UnreservedBandwidth unreservedBandwidth = new UnreservedBandwidth(tlvHeader);
-                unreservedBandwidth.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength()));
-                subTlv.add(unreservedBandwidth);
-            } else if (LinkSubTypes.ADMINISTRATIVE_GROUP.value() == tlvHeader.tlvType()) {
-                AdministrativeGroup administrativeGroup = new AdministrativeGroup(tlvHeader);
-                administrativeGroup.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength()));
-                subTlv.add(administrativeGroup);
-            } else {
-                UnknownLinkSubType unknownLinkSubType = new UnknownLinkSubType(tlvHeader);
-                unknownLinkSubType.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength()));
-                subTlv.add(unknownLinkSubType);
-            }
-        }
-    }
-
-    /**
-     * Gets link tlv as byte array.
-     *
-     * @return link tlv as byte array
-     * @throws OspfParseException if the packet can't be parsed
-     */
-    public byte[] asBytes() throws OspfParseException {
-        byte[] lsaMessage = null;
-
-        byte[] tlvHeader = getTlvHeaderAsByteArray();
-        byte[] tlvBody = getTlvBodyAsByteArray();
-        lsaMessage = Bytes.concat(tlvHeader, tlvBody);
-
-        return lsaMessage;
-    }
-
-    /**
-     * Gets tlv body as byte array.
-     *
-     * @return tlv body as byte array
-     * @throws OspfParseException might throws exception while parsing buffer
-     */
-    public byte[] getTlvBodyAsByteArray() throws OspfParseException {
-
-        List<Byte> bodyLst = new ArrayList<>();
-        for (LinkSubType tlv : subTlv) {
-            //Check the type of tlv and build bytes accordingly
-            if (tlv instanceof LinkType) {
-                LinkType linkType = (LinkType) tlv;
-                bodyLst.addAll(Bytes.asList(linkType.asBytes()));
-            } else if (tlv instanceof LinkId) {
-                LinkId linkId = (LinkId) tlv;
-                bodyLst.addAll(Bytes.asList(linkId.asBytes()));
-            } else if (tlv instanceof LocalInterfaceIpAddress) {
-                LocalInterfaceIpAddress localInterfaceIpAddress = (LocalInterfaceIpAddress) tlv;
-                bodyLst.addAll(Bytes.asList(localInterfaceIpAddress.asBytes()));
-            } else if (tlv instanceof RemoteInterfaceIpAddress) {
-                RemoteInterfaceIpAddress remoteInterfaceIpAddress = (RemoteInterfaceIpAddress) tlv;
-                bodyLst.addAll(Bytes.asList(remoteInterfaceIpAddress.asBytes()));
-            } else if (tlv instanceof TrafficEngineeringMetric) {
-                TrafficEngineeringMetric trafficEngineeringMetric = (TrafficEngineeringMetric) tlv;
-                bodyLst.addAll(Bytes.asList(trafficEngineeringMetric.asBytes()));
-            } else if (tlv instanceof MaximumBandwidth) {
-                MaximumBandwidth maximumBandwidth = (MaximumBandwidth) tlv;
-                bodyLst.addAll(Bytes.asList(maximumBandwidth.asBytes()));
-            } else if (tlv instanceof MaximumReservableBandwidth) {
-                MaximumReservableBandwidth maximumReservableBandwidth = (MaximumReservableBandwidth) tlv;
-                bodyLst.addAll(Bytes.asList(maximumReservableBandwidth.asBytes()));
-            } else if (tlv instanceof UnreservedBandwidth) {
-                UnreservedBandwidth unreservedBandwidth = (UnreservedBandwidth) tlv;
-                bodyLst.addAll(Bytes.asList(unreservedBandwidth.asBytes()));
-            } else if (tlv instanceof AdministrativeGroup) {
-                AdministrativeGroup administrativeGroup = (AdministrativeGroup) tlv;
-                bodyLst.addAll(Bytes.asList(administrativeGroup.asBytes()));
-            } else {
-                UnknownLinkSubType unknownLinkSubType = (UnknownLinkSubType) tlv;
-                bodyLst.addAll(Bytes.asList(unknownLinkSubType.asBytes()));
-            }
-        }
-        return Bytes.toArray(bodyLst);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("subTlv", subTlv)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/OpaqueTopLevelTlvTypes.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/OpaqueTopLevelTlvTypes.java
deleted file mode 100644
index cc52a7d..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/OpaqueTopLevelTlvTypes.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.tlvtypes;
-
-/**
- * Representation of an OSPF Opaque top level tlv types.
- */
-public enum OpaqueTopLevelTlvTypes {
-
-    ROUTER(1),
-    LINK(2);
-
-    private int value;
-
-    /**
-     * Creates an instance of Opaque top level tlv types.
-     *
-     * @param value opaque TLV value
-     */
-    OpaqueTopLevelTlvTypes(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Gets the tlv type value.
-     *
-     * @return tlv type value
-     */
-    public int value() {
-        return value;
-    }
-
-}
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/RouterTlv.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/RouterTlv.java
deleted file mode 100644
index 8ac443b..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/RouterTlv.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.tlvtypes;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.exceptions.OspfErrorType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-import org.onosproject.ospf.protocol.lsa.types.TopLevelTlv;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of an OSPF Opaque router tlv.
- */
-public class RouterTlv extends TlvHeader implements TopLevelTlv {
-
-    private static final Logger log =
-            LoggerFactory.getLogger(RouterTlv.class);
-    private Ip4Address routerAddress;
-
-    /**
-     * Creates an instance of Opaque router tlv.
-     *
-     * @param header tlv header
-     */
-    public RouterTlv(TlvHeader header) {
-        this.setTlvType(header.tlvType());
-        this.setTlvLength(header.tlvLength());
-    }
-
-    /**
-     * Gets router address.
-     *
-     * @return router address
-     */
-    public Ip4Address routerAddress() {
-        return routerAddress;
-    }
-
-    /**
-     * Sets router address.
-     *
-     * @param routerAddress router address.
-     */
-    public void setRouterAddress(Ip4Address routerAddress) {
-        this.routerAddress = routerAddress;
-    }
-
-    /**
-     * Reads bytes from channel buffer .
-     *
-     * @param channelBuffer channel buffer instance
-     * @throws OspfParseException might throws exception while parsing buffer
-     */
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-        try {
-            byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-            this.setRouterAddress(Ip4Address.valueOf(tempByteArray));
-        } catch (Exception e) {
-            log.debug("Error::RouterTLV:: {}", e.getMessage());
-            throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR,
-                                         OspfErrorType.BAD_MESSAGE);
-        }
-    }
-
-    /**
-     * Gets router tlv as byte array.
-     *
-     * @return router tlv as byte array
-     */
-    public byte[] asBytes() {
-        byte[] lsaMessage = null;
-
-        byte[] tlvHeader = getTlvHeaderAsByteArray();
-        byte[] tlvBody = getTlvBodyAsByteArray();
-        lsaMessage = Bytes.concat(tlvHeader, tlvBody);
-
-        return lsaMessage;
-    }
-
-    /**
-     * Gets tlv body as byte array.
-     *
-     * @return tlv body as byte array
-     */
-    public byte[] getTlvBodyAsByteArray() {
-        List<Byte> bodyLst = new ArrayList<>();
-        bodyLst.addAll(Bytes.asList(this.routerAddress().toOctets()));
-
-        return Bytes.toArray(bodyLst);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("routerAddress", routerAddress)
-                .toString();
-    }
-}
-
-
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/package-info.java
deleted file mode 100644
index 0820d7a..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the OSPF Opaque Tlv Types.
- */
-package org.onosproject.ospf.protocol.lsa.tlvtypes;
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/AsbrSummaryLsa.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/AsbrSummaryLsa.java
deleted file mode 100644
index 435c423..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/AsbrSummaryLsa.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.exceptions.OspfErrorType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of an ASBR Summary LSA and methods to access them.
- */
-public class AsbrSummaryLsa extends LsaHeader {
-
-    /*
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |            LS age             |     Options   |    3 or 4     |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                        Link State ID                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                     Advertising Router                        |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                     LS sequence number                        |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |         LS checksum           |             length            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                         Network Mask                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |      0        |                  metric                       |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |     TOS       |                TOS  metric                    |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                              ...                              |
-
-        Summary LSA format
-        REFERENCE : RFC 2328
-     */
-    private Ip4Address networkMask;
-    private int metric;
-
-    /**
-     * Creates an instance of ASBR Summary LSA.
-     *
-     * @param lsaHeader lsa header instance.
-     */
-    public AsbrSummaryLsa(LsaHeader lsaHeader) {
-        populateHeader(lsaHeader);
-    }
-
-    /**
-     * Gets network mask.
-     *
-     * @return networkMask network mask
-     */
-    public Ip4Address networkMask() {
-        return networkMask;
-    }
-
-    /**
-     * Sets network mask.
-     *
-     * @param networkMask network mask
-     */
-    public void setNetworkMask(Ip4Address networkMask) {
-        this.networkMask = networkMask;
-    }
-
-    /**
-     * Gets metric value.
-     *
-     * @return metric value
-     */
-    public int metric() {
-        return metric;
-    }
-
-    /**
-     * Sets metric value.
-     *
-     * @param metric metric value
-     */
-    public void setMetric(int metric) {
-        this.metric = metric;
-    }
-
-    /**
-     * Reads from channel buffer and populate instance.
-     *
-     * @param channelBuffer channelBuffer instance.
-     * @throws OspfParseException might throws exception while parsing buffer
-     */
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-        try {
-            byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-            this.setNetworkMask(Ip4Address.valueOf(tempByteArray));
-            int unusedByte = channelBuffer.readByte();
-            this.setMetric(channelBuffer.readUnsignedMedium());
-        } catch (Exception e) {
-            log.debug("Error::AsbrSummaryLsa:: {}", e.getMessage());
-            throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, OspfErrorType.BAD_MESSAGE);
-        }
-    }
-
-    /**
-     * Gets LSA bytes as array.
-     *
-     * @return LSA message as bytes
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public byte[] asBytes() throws OspfParseException {
-        byte[] lsaMessage = null;
-
-        byte[] lsaHeader = getLsaHeaderAsByteArray();
-        byte[] lsaBody = getLsaBodyAsByteArray();
-        lsaMessage = Bytes.concat(lsaHeader, lsaBody);
-
-        return lsaMessage;
-    }
-
-    /**
-     * Get LSA body as byte array.
-     *
-     * @return byte array contains lsa body
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public byte[] getLsaBodyAsByteArray() throws OspfParseException {
-        List<Byte> bodyLst = new ArrayList<>();
-
-        try {
-            bodyLst.addAll(Bytes.asList(this.networkMask().toOctets()));
-            bodyLst.addAll(Bytes.asList(OspfUtil.convertToFourBytes(this.metric())));
-        } catch (Exception e) {
-            log.debug("Error::getLsrBodyAsByteArray {}", e.getMessage());
-            throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, OspfErrorType.BAD_MESSAGE);
-        }
-
-        return Bytes.toArray(bodyLst);
-    }
-
-    @Override
-    public OspfLsaType getOspfLsaType() {
-        return OspfLsaType.ASBR_SUMMARY;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        AsbrSummaryLsa that = (AsbrSummaryLsa) o;
-        return Objects.equal(networkMask, that.networkMask) &&
-                Objects.equal(metric, that.metric);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(networkMask, metric);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("networkMask", networkMask)
-                .add("metric", metric)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/ExternalLsa.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/ExternalLsa.java
deleted file mode 100644
index 765b2bb..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/ExternalLsa.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.exceptions.OspfErrorType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.subtypes.OspfExternalDestination;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of an External LSA and the fields and methods to access them.
- */
-public class ExternalLsa extends LsaHeader {
-
-    /*
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |            LS age             |     Options   |      5        |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                        Link State ID                          |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                     Advertising Router                        |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                     LS sequence number                        |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |         LS checksum           |             length            |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                         Network Mask                          |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |E|     0       |                  metric                       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                      Forwarding address                       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                      External Route Tag                       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |E|    TOS      |                TOS  metric                    |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                      Forwarding address                       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                      External Route Tag                       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                              ...                              |
-
-        External LSA format
-        REFERENCE : RFC 2328
-     */
-    private static final Logger log =
-            LoggerFactory.getLogger(ExternalLsa.class);
-    private Ip4Address networkMask;
-    private List<OspfExternalDestination> externalDestinations = new ArrayList<>();
-
-    /**
-     * Creates an instance of External LSA.
-     *
-     * @param lsaHeader lsa header instance.
-     */
-    public ExternalLsa(LsaHeader lsaHeader) {
-        populateHeader(lsaHeader);
-    }
-
-
-    /**
-     * Gets the network mask.
-     *
-     * @return networkMask
-     */
-    public Ip4Address networkMask() {
-        return networkMask;
-    }
-
-    /**
-     * Sets network mask.
-     *
-     * @param networkMask network mask
-     */
-    public void setNetworkMask(Ip4Address networkMask) {
-        this.networkMask = networkMask;
-    }
-
-    /**
-     * Adds the external destination details to the list.
-     *
-     * @param externalDestination external destination details
-     */
-    public void addExternalDestination(OspfExternalDestination externalDestination) {
-        if (!externalDestinations.contains(externalDestination)) {
-            externalDestinations.add(externalDestination);
-        }
-    }
-
-    /**
-     * Reads from channel buffer and populate instance.
-     *
-     * @param channelBuffer channelBuffer instance
-     * @throws OspfParseException might throws exception while parsing buffer
-     */
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-
-        try {
-            byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-            this.setNetworkMask(Ip4Address.valueOf(tempByteArray));
-
-            while (channelBuffer.readableBytes() >= OspfUtil.EXTERNAL_DESTINATION_LENGTH) {
-                OspfExternalDestination externalDestination = new OspfExternalDestination();
-
-                //E Bit - use to find type1 or type2
-                int eIsSet = channelBuffer.readByte();
-                if (eIsSet != 0) {
-                    externalDestination.setType1orType2Metric(true);
-                } else {
-                    externalDestination.setType1orType2Metric(false);
-                }
-                externalDestination.setMetric(channelBuffer.readUnsignedMedium());
-                tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-                channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-                externalDestination.setForwardingAddress(Ip4Address.valueOf(tempByteArray));
-                externalDestination.setExternalRouterTag(channelBuffer.readInt());
-
-                this.addExternalDestination(externalDestination);
-            }
-        } catch (Exception e) {
-            log.debug("Error::ExternalLSA:: {}", e.getMessage());
-            throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, OspfErrorType.BAD_MESSAGE);
-        }
-    }
-
-    /**
-     * Gets LSA as bytes.
-     *
-     * @return LSA as bytes.
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public byte[] asBytes() throws OspfParseException {
-        byte[] lsaMessage = null;
-
-        byte[] lsaHeader = getLsaHeaderAsByteArray();
-        byte[] lsaBody = getLsaBodyAsByteArray();
-        lsaMessage = Bytes.concat(lsaHeader, lsaBody);
-
-        return lsaMessage;
-    }
-
-    /**
-     * Gets LSA body as byte array.
-     *
-     * @return byte array contains LSA body
-     * @throws OspfParseException might throws exception while parsing buffer
-     */
-    public byte[] getLsaBodyAsByteArray() throws OspfParseException {
-        List<Byte> bodyLst = new ArrayList<>();
-
-        try {
-            bodyLst.addAll(Bytes.asList(this.networkMask().toOctets()));
-
-            //add each OSPFExternalDestination details
-            for (OspfExternalDestination externalDest : externalDestinations) {
-                if (externalDest.isType1orType2Metric()) {
-                    //add 1 followed by 7 zeros equals to decimal 128
-                    bodyLst.add((byte) 128);
-                } else {
-                    bodyLst.add((byte) 0);
-                }
-
-                bodyLst.addAll(Bytes.asList(OspfUtil.convertToThreeBytes(externalDest.metric())));
-                bodyLst.addAll(Bytes.asList(externalDest.forwardingAddress().toOctets()));
-                bodyLst.addAll(Bytes.asList(OspfUtil.convertToFourBytes(externalDest.externalRouterTag())));
-            }
-        } catch (Exception e) {
-            log.debug("Error::getLsrBodyAsByteArray {}", e.getMessage());
-            return Bytes.toArray(bodyLst);
-        }
-
-        return Bytes.toArray(bodyLst);
-    }
-
-    @Override
-    public OspfLsaType getOspfLsaType() {
-        return OspfLsaType.EXTERNAL_LSA;
-    }
-
-    @Override
-    public boolean equals(Object other) {
-        if (this == other) {
-            return true;
-        }
-        if (other == null || getClass() != other.getClass()) {
-            return false;
-        }
-        ExternalLsa that = (ExternalLsa) other;
-        return Objects.equal(networkMask, that.networkMask) &&
-                Objects.equal(externalDestinations, that.externalDestinations);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(networkMask, externalDestinations);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("networkMask", networkMask)
-                .add("externalDestinations", externalDestinations)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/NetworkLsa.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/NetworkLsa.java
deleted file mode 100644
index 577da33..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/NetworkLsa.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.exceptions.OspfErrorType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of a Network LSA and fields and methods to access them.
- */
-public class NetworkLsa extends LsaHeader {
-
-    /*
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |            LS age             |      Options  |      2        |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                        Link State ID                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                     Advertising Router                        |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                     LS sequence number                        |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |         LS checksum           |             length            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                         Network Mask                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                        Attached Router                        |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                              ...                              |
-     */
-    private static final Logger log =
-            LoggerFactory.getLogger(NetworkLsa.class);
-    private Ip4Address networkMask;
-    private List<Ip4Address> attachedRouters = new ArrayList<>();
-
-    /**
-     * Creates an instance of Network LSA.
-     */
-    public NetworkLsa() {
-    }
-
-    /**
-     * Creates an instance of Network LSA.
-     *
-     * @param lsaHeader lsa header instance.
-     */
-    public NetworkLsa(LsaHeader lsaHeader) {
-        populateHeader(lsaHeader);
-    }
-
-    /**
-     * Gets network mask.
-     *
-     * @return network mask
-     */
-    public Ip4Address networkMask() {
-        return networkMask;
-    }
-
-    /**
-     * Sets network mask.
-     *
-     * @param networkMask network mask
-     */
-    public void setNetworkMask(Ip4Address networkMask) {
-        this.networkMask = networkMask;
-    }
-
-    /**
-     * Adds attached router to list.
-     *
-     * @param attachedRouter attached router ip address.
-     */
-    public void addAttachedRouter(Ip4Address attachedRouter) {
-        attachedRouters.add(attachedRouter);
-    }
-
-    /**
-     * Gets the list of attached routers.
-     *
-     * @return list of attached routers
-     */
-    public List<Ip4Address> attachedRouters() {
-
-        return attachedRouters;
-    }
-
-    /**
-     * Reads from channel buffer and populate instance.
-     *
-     * @param channelBuffer channel buffer instance
-     * @throws OspfParseException might throws exception while parsing buffer
-     */
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-
-        try {
-            byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-            this.setNetworkMask(Ip4Address.valueOf(tempByteArray));
-            //add all the attached routers
-            while (channelBuffer.readableBytes() > 0) {
-                tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-                channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-                this.addAttachedRouter(Ip4Address.valueOf(tempByteArray));
-            }
-        } catch (Exception e) {
-            log.debug("Error::NetworkLSA::readFrom:: {}", e.getMessage());
-            throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, OspfErrorType.BAD_MESSAGE);
-        }
-    }
-
-    /**
-     * Gets LSA as bytes.
-     *
-     * @return LSA as byte array
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public byte[] asBytes() throws OspfParseException {
-        byte[] lsaMessage = null;
-
-        byte[] lsaHeader = getLsaHeaderAsByteArray();
-        byte[] lsaBody = getLsaBodyAsByteArray();
-        lsaMessage = Bytes.concat(lsaHeader, lsaBody);
-
-        return lsaMessage;
-    }
-
-    /**
-     * Gets LSA body as byte array.
-     *
-     * @return LSA body as byte array
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public byte[] getLsaBodyAsByteArray() throws OspfParseException {
-        List<Byte> bodyLst = new ArrayList<>();
-
-        try {
-            bodyLst.addAll(Bytes.asList(this.networkMask().toOctets()));
-            //add each attachedRouters details
-            for (Ip4Address attachedRouter : attachedRouters) {
-                //attached router
-                bodyLst.addAll(Bytes.asList(attachedRouter.toOctets()));
-            }
-        } catch (Exception e) {
-            log.debug("Error::NetworkLSA::getLsrBodyAsByteArray {}", e.getMessage());
-            throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, OspfErrorType.BAD_MESSAGE);
-        }
-
-        return Bytes.toArray(bodyLst);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        NetworkLsa that = (NetworkLsa) o;
-        return Objects.equal(networkMask, that.networkMask) &&
-                Objects.equal(attachedRouters, that.attachedRouters);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(networkMask, attachedRouters);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("networkMask", networkMask)
-                .add("attachedRouters", attachedRouters)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa10.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa10.java
deleted file mode 100644
index b0fd4b6..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa10.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.exceptions.OspfErrorType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-import org.onosproject.ospf.protocol.lsa.tlvtypes.LinkTlv;
-import org.onosproject.ospf.protocol.lsa.tlvtypes.OpaqueTopLevelTlvTypes;
-import org.onosproject.ospf.protocol.lsa.tlvtypes.RouterTlv;
-import org.onosproject.ospf.protocol.util.OspfParameters;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Representation of an Opaque LSA of type area local (10).
- */
-public class OpaqueLsa10 extends OpaqueLsaHeader {
-    /*
-      0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |            LS age             |     Options   |   9, 10 or 11 |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |  Opaque Type  |               Opaque ID                       |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                      Advertising Router                       |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                      LS Sequence Number                       |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |         LS checksum           |           Length              |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                                                               |
-     +                                                               +
-     |                      Opaque Information                       |
-     +                                                               +
-     |                              ...                              |
-
-        Opaque LSA format
-        REFERENCE : RFC 5250
-    */
-    private List<TopLevelTlv> topLevelValues = new ArrayList<>();
-    private byte[] opaqueInfo = null;
-
-    /**
-     * Creates an instance of Opaque type 10 LSA.
-     *
-     * @param lsaHeader LSA header instance
-     */
-    public OpaqueLsa10(OpaqueLsaHeader lsaHeader) {
-        populateHeader(lsaHeader);
-    }
-
-    /**
-     * Returns the list of top level TLVs.
-     *
-     * @return list of top level TLVs
-     */
-    public List<TopLevelTlv> topLevelValues() {
-        return topLevelValues;
-    }
-
-    /**
-     * Adds TLV value.
-     *
-     * @param value TLV value
-     */
-    public void addValue(TopLevelTlv value) {
-        topLevelValues.add(value);
-    }
-
-    /**
-     * Reads from channel buffer and populate instance.
-     *
-     * @param channelBuffer channelBuffer instance
-     * @throws OspfParseException might throws exception while parsing buffer
-     */
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-
-        try {
-            if (this.opaqueId() == OspfParameters.TRAFFIC_ENGINEERING) {
-                while (channelBuffer.readableBytes() > 0) {
-                    TlvHeader tlvHeader = new TlvHeader();
-                    tlvHeader.setTlvType(channelBuffer.readUnsignedShort());
-                    tlvHeader.setTlvLength(channelBuffer.readUnsignedShort());
-                    if (tlvHeader.tlvType() == OpaqueTopLevelTlvTypes.ROUTER.value()) {
-                        RouterTlv routerTlv = new RouterTlv(tlvHeader);
-                        routerTlv.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength()));
-                        this.addValue(routerTlv);
-                    } else if (tlvHeader.tlvType() == OpaqueTopLevelTlvTypes.LINK.value()) {
-                        LinkTlv linkTlv = new LinkTlv(tlvHeader);
-                        linkTlv.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength()));
-                        this.addValue(linkTlv);
-                    }
-                }
-            } else {
-                int length = channelBuffer.readableBytes();
-                opaqueInfo = new byte[length];
-                channelBuffer.readBytes(opaqueInfo, 0, length);
-            }
-
-        } catch (Exception e) {
-            log.debug("Error::OpaqueLsa10:: {}", e.getMessage());
-            throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR,
-                                         OspfErrorType.BAD_MESSAGE);
-        }
-    }
-
-    /**
-     * Returns instance as bytes.
-     *
-     * @return instance as bytes
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public byte[] asBytes() throws OspfParseException {
-
-        byte[] lsaMessage = null;
-        byte[] lsaHeader = getOpaqueLsaHeaderAsByteArray();
-        byte[] lsaBody = getLsaBodyAsByteArray();
-        lsaMessage = Bytes.concat(lsaHeader, lsaBody);
-        return lsaMessage;
-
-    }
-
-    /**
-     * Gets the LSA body as byte array.
-     *
-     * @return the lsa body as byte array
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public byte[] getLsaBodyAsByteArray() throws OspfParseException {
-        List<Byte> bodyLst = new ArrayList<>();
-        if (this.opaqueId() == 1) {
-            for (TopLevelTlv tlv : this.topLevelValues) {
-                //Check the sub type of lsa and build bytes accordingly
-                if (tlv instanceof RouterTlv) {
-                    RouterTlv routerTlv = (RouterTlv) tlv;
-                    bodyLst.addAll(Bytes.asList(routerTlv.asBytes()));
-                } else if (tlv instanceof LinkTlv) {
-                    LinkTlv linkTlv = (LinkTlv) tlv;
-                    bodyLst.addAll(Bytes.asList(linkTlv.asBytes()));
-                }
-            }
-        } else {
-            return opaqueInfo;
-        }
-
-        return Bytes.toArray(bodyLst);
-    }
-
-    @Override
-    public OspfLsaType getOspfLsaType() {
-        return OspfLsaType.AREA_LOCAL_OPAQUE_LSA;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("topLevelValues", topLevelValues)
-                .add("opaqueInfo", opaqueInfo)
-                .toString();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        OpaqueLsa10 that = (OpaqueLsa10) o;
-        return Objects.equal(topLevelValues, that.topLevelValues) &&
-                Arrays.equals(opaqueInfo, that.opaqueInfo);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(Arrays.hashCode(opaqueInfo), topLevelValues);
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa11.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa11.java
deleted file mode 100644
index 69f8bfd..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa11.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-
-import java.util.Arrays;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-
-/**
- * Representation of an Opaque LSA of type AS (11).
- */
-public class OpaqueLsa11 extends OpaqueLsaHeader {
-    /*
-      0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |            LS age             |     Options   |   9, 10 or 11 |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |  Opaque Type  |               Opaque ID                       |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                      Advertising Router                       |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                      LS Sequence Number                       |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |         LS checksum           |           Length              |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                                                               |
-     +                                                               +
-     |                      Opaque Information                       |
-     +                                                               +
-     |                              ...                              |
-    */
-    private byte[] opaqueInfo = null;
-
-    /**
-     * Creates an instance of Opaque type 11 LSA.
-     *
-     * @param lsaHeader LSA header instance
-     */
-    public OpaqueLsa11(OpaqueLsaHeader lsaHeader) {
-        populateHeader(lsaHeader);
-    }
-
-    /**
-     * Reads from channel buffer and populate this.
-     *
-     * @param channelBuffer channelBuffer instance.
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        int length = channelBuffer.readableBytes();
-        opaqueInfo = new byte[length];
-        channelBuffer.readBytes(opaqueInfo, 0, length);
-    }
-
-    /**
-     * Returns instance as bytes.
-     *
-     * @return instance as bytes
-     */
-    public byte[] asBytes() {
-        byte[] lsaMessage = null;
-
-        byte[] lsaHeader = getOpaqueLsaHeaderAsByteArray();
-        byte[] lsaBody = getLsaBodyAsByteArray();
-        lsaMessage = Bytes.concat(lsaHeader, lsaBody);
-
-        return lsaMessage;
-    }
-
-    /**
-     * Get the LSA body as byte array.
-     *
-     * @return LSA body as byte array
-     */
-    public byte[] getLsaBodyAsByteArray() {
-        return opaqueInfo;
-    }
-
-    @Override
-    public OspfLsaType getOspfLsaType() {
-        return OspfLsaType.AS_OPAQUE_LSA;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        OpaqueLsa11 that = (OpaqueLsa11) o;
-        return Arrays.equals(opaqueInfo, that.opaqueInfo);
-    }
-
-    @Override
-    public int hashCode() {
-        return Arrays.hashCode(opaqueInfo);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("opaqueInfo", opaqueInfo)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa9.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa9.java
deleted file mode 100644
index e311fce..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa9.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-
-import java.util.Arrays;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-
-/**
- * Representation of an Opaque LSA of type link local (9).
- */
-public class OpaqueLsa9 extends OpaqueLsaHeader {
-
-    /*
-       0                   1                   2                   3
-       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |            LS age             |     Options   |   9, 10 or 11 |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |  Opaque Type  |               Opaque ID                       |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |                      Advertising Router                       |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |                      LS Sequence Number                       |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |         LS checksum           |           Length              |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |                                                               |
-      +                                                               +
-      |                      Opaque Information                       |
-      +                                                               +
-      |                              ...                              |
-     */
-    private byte[] opaqueInfo = null;
-
-    /**
-     * Creates an instance of Opaque type 9 LSA.
-     *
-     * @param lsaHeader LSA header instance
-     */
-    public OpaqueLsa9(OpaqueLsaHeader lsaHeader) {
-        populateHeader(lsaHeader);
-    }
-
-    /**
-     * Reads from channel buffer and populate instance.
-     *
-     * @param channelBuffer channelBuffer instance
-     */
-    public void readFrom(ChannelBuffer channelBuffer) {
-        int length = channelBuffer.readableBytes();
-        opaqueInfo = new byte[length];
-        channelBuffer.readBytes(opaqueInfo, 0, length);
-    }
-
-    /**
-     * Returns instance as bytes.
-     *
-     * @return instance as bytes
-     */
-    public byte[] asBytes() {
-        byte[] lsaMessage = null;
-
-        byte[] lsaHeader = getOpaqueLsaHeaderAsByteArray();
-        byte[] lsaBody = getLsaBodyAsByteArray();
-        lsaMessage = Bytes.concat(lsaHeader, lsaBody);
-
-        return lsaMessage;
-    }
-
-    /**
-     * Gets the LSA body.
-     *
-     * @return the LSA body
-     */
-    public byte[] getLsaBodyAsByteArray() {
-        return opaqueInfo;
-
-    }
-
-    @Override
-    public OspfLsaType getOspfLsaType() {
-        return OspfLsaType.LINK_LOCAL_OPAQUE_LSA;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        OpaqueLsa9 that = (OpaqueLsa9) o;
-        return Arrays.equals(opaqueInfo, that.opaqueInfo);
-    }
-
-    @Override
-    public int hashCode() {
-        return Arrays.hashCode(opaqueInfo);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("opaqueInfo", opaqueInfo)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/RouterLsa.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/RouterLsa.java
deleted file mode 100644
index e8cc39f..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/RouterLsa.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.exceptions.OspfErrorType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.subtypes.OspfLsaLink;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of a Router LSA, and the fields and methods to access them.
- */
-public class RouterLsa extends LsaHeader {
-    /*
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |            LS age             |     Options   |       1       |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                        Link State ID                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                     Advertising Router                        |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                     LS sequence number                        |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |         LS checksum           |             length            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |    0    |V|E|B|        0      |            # links            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                          Link ID                              |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                         Link Data                             |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |     Type      |     # TOS     |            metric             |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                              ...                              |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |      TOS      |        0      |          TOS  metric          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                          Link ID                              |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                         Link Data                             |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                              ...                              |
-     */
-    private static final Logger log =
-            LoggerFactory.getLogger(RouterLsa.class);
-    private boolean isVirtualEndPoint;
-    private boolean isAsBoundaryRouter;
-    private boolean isAreaBorderRouter;
-    private int noLink;
-    private List<OspfLsaLink> routerLinks = new ArrayList<>();
-
-    /**
-     * Creates an instance of Router LSA.
-     */
-    public RouterLsa() {
-    }
-
-    /**
-     * Creates an instance of Router LSA.
-     *
-     * @param lsaHeader lsa header instance
-     */
-    public RouterLsa(LsaHeader lsaHeader) {
-        populateHeader(lsaHeader);
-    }
-
-    /**
-     * Sets virtual endpoint or not.
-     *
-     * @param isVirtualEndPoint true or false
-     */
-    public void setVirtualEndPoint(boolean isVirtualEndPoint) {
-        this.isVirtualEndPoint = isVirtualEndPoint;
-    }
-
-    /**
-     * Sets if it is an AS boundary router or not.
-     *
-     * @param isAsBoundaryRouter true if AS boundary router else false
-     */
-    public void setAsBoundaryRouter(boolean isAsBoundaryRouter) {
-        this.isAsBoundaryRouter = isAsBoundaryRouter;
-    }
-
-    /**
-     * Sets whether it is an ABR or not.
-     *
-     * @param isAreaBorderRouter true if ABR else false
-     */
-    public void setAreaBorderRouter(boolean isAreaBorderRouter) {
-        this.isAreaBorderRouter = isAreaBorderRouter;
-    }
-
-    /**
-     * Gets number of links.
-     *
-     * @return number of links
-     */
-    public int noLink() {
-        return noLink;
-    }
-
-    /**
-     * Sets number of links.
-     *
-     * @param noLink number of links
-     */
-    public void setNoLink(int noLink) {
-        this.noLink = noLink;
-    }
-
-
-    /**
-     * Adds router link.
-     *
-     * @param lsaLink LSA link
-     */
-    public void addRouterLink(OspfLsaLink lsaLink) {
-        if (!this.routerLinks.contains(lsaLink)) {
-            this.routerLinks.add(lsaLink);
-        }
-    }
-
-    /**
-     * Gets router link.
-     *
-     * @return routerLinks LSA link list
-     */
-    public List<OspfLsaLink> routerLink() {
-        return this.routerLinks;
-    }
-
-    /**
-     * Reads from channel buffer and populate this.
-     *
-     * @param channelBuffer channelBuffer instance.
-     * @throws OspfParseException might throws exception while parsing buffer
-     */
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-
-        try {
-            int veb = channelBuffer.readByte();
-            int unUsed = channelBuffer.readByte();
-            //Convert the byte to veb bits
-            String strVeb = Integer.toBinaryString(veb);
-            if (strVeb.length() == 3) {
-                this.setVirtualEndPoint((Integer.parseInt(Character.toString(strVeb.charAt(0))) == 1) ? true : false);
-                this.setAsBoundaryRouter((Integer.parseInt(Character.toString(strVeb.charAt(1))) == 1) ? true : false);
-                this.setAreaBorderRouter((Integer.parseInt(Character.toString(strVeb.charAt(2))) == 1) ? true : false);
-            } else if (strVeb.length() == 2) {
-                this.setVirtualEndPoint(false);
-                this.setAsBoundaryRouter((Integer.parseInt(Character.toString(strVeb.charAt(0))) == 1) ? true : false);
-                this.setAreaBorderRouter((Integer.parseInt(Character.toString(strVeb.charAt(1))) == 1) ? true : false);
-            } else if (strVeb.length() == 1) {
-                this.setVirtualEndPoint(false);
-                this.setAsBoundaryRouter(false);
-                this.setAreaBorderRouter((Integer.parseInt(Character.toString(strVeb.charAt(0))) == 1) ? true : false);
-            }
-            this.setNoLink(channelBuffer.readUnsignedShort());
-            while (channelBuffer.readableBytes() >= OspfUtil.TWELVE_BYTES) {
-                OspfLsaLink ospfLsaLink = new OspfLsaLink();
-
-                byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-                channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-                ospfLsaLink.setLinkId(InetAddress.getByAddress(tempByteArray).getHostName());
-                tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-                channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-                ospfLsaLink.setLinkData(InetAddress.getByAddress(tempByteArray).getHostName());
-                ospfLsaLink.setLinkType(channelBuffer.readByte());
-                ospfLsaLink.setTos(channelBuffer.readByte());
-                ospfLsaLink.setMetric(channelBuffer.readUnsignedShort());
-                //add the link
-                this.addRouterLink(ospfLsaLink);
-            }
-        } catch (Exception e) {
-            log.debug("Error::RouterLsa:: {}", e.getMessage());
-            throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, OspfErrorType.BAD_MESSAGE);
-        }
-    }
-
-    /**
-     * Returns instance as bytes.
-     *
-     * @return instance as bytes
-     * @throws OspfParseException might throws exception while parsing packet
-     */
-    public byte[] asBytes() throws OspfParseException {
-        byte[] lsaMessage = null;
-
-        byte[] lsaHeader = getLsaHeaderAsByteArray();
-        byte[] lsaBody = getLsaBodyAsByteArray();
-        lsaMessage = Bytes.concat(lsaHeader, lsaBody);
-
-        return lsaMessage;
-    }
-
-    /**
-     * Gets the LSA body as bytes.
-     *
-     * @return LSA body as bytes
-     */
-    public byte[] getLsaBodyAsByteArray() {
-        List<Byte> bodyLst = new ArrayList<>();
-
-        try {
-            int isVirtualEndPointVal = this.isVirtualEndPoint ? 1 : 0;
-            int isASBoundaryRouterVal = this.isAsBoundaryRouter ? 1 : 0;
-            int isAreaBorderRouterVal = this.isAreaBorderRouter ? 1 : 0;
-
-            StringBuilder sb = new StringBuilder();
-            sb.append(Integer.toBinaryString(isVirtualEndPointVal));
-            sb.append(Integer.toBinaryString(isASBoundaryRouterVal));
-            sb.append(Integer.toBinaryString(isAreaBorderRouterVal));
-
-            //added VEB
-            bodyLst.add((byte) Integer.parseInt(sb.toString(), 2));
-            //second byte is 0.
-            bodyLst.add((byte) 0);
-            //Number of links
-            bodyLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.noLink())));
-
-            //add each link details
-            for (OspfLsaLink lsaLink : routerLinks) {
-                bodyLst.addAll(Bytes.asList(InetAddress.getByName(lsaLink.linkId()).getAddress()));
-                bodyLst.addAll(Bytes.asList(InetAddress.getByName(lsaLink.linkData()).getAddress()));
-                bodyLst.add((byte) lsaLink.linkType());
-                bodyLst.add((byte) lsaLink.tos());
-                bodyLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(lsaLink.metric())));
-            }
-        } catch (Exception e) {
-            log.debug("Error::getLsrBodyAsByteArray {}", e.getMessage());
-            return Bytes.toArray(bodyLst);
-        }
-
-        return Bytes.toArray(bodyLst);
-    }
-
-    /**
-     * Increment the link by 1.
-     */
-    public void incrementLinkNo() {
-        this.noLink++;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("isVirtualEndPoint", isVirtualEndPoint)
-                .add("isAsBoundaryRouter", isAsBoundaryRouter)
-                .add("isAreaBorderRouter", isAreaBorderRouter)
-                .add("noLink", noLink)
-                .add("routerLinks", routerLinks)
-                .toString();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        RouterLsa that = (RouterLsa) o;
-        return Objects.equal(isVirtualEndPoint, that.isVirtualEndPoint) &&
-                Objects.equal(isAsBoundaryRouter, that.isAsBoundaryRouter) &&
-                Objects.equal(isAreaBorderRouter, that.isAreaBorderRouter) &&
-                Objects.equal(noLink, that.noLink) &&
-                Objects.equal(routerLinks, that.routerLinks);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(isVirtualEndPoint, isAsBoundaryRouter, isAreaBorderRouter,
-                                noLink, routerLinks);
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/SummaryLsa.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/SummaryLsa.java
deleted file mode 100644
index ec0ffe7..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/SummaryLsa.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.exceptions.OspfErrorType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of a Summary LSA, fields and methods to access them.
- */
-public class SummaryLsa extends LsaHeader {
-    /*
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |            LS age             |     Options   |    3 or 4     |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                        Link State ID                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                     Advertising Router                        |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                     LS sequence number                        |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |         LS checksum           |             length            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                         Network Mask                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |      0        |                  metric                       |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |     TOS       |                TOS  metric                    |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                              ...                              |
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(SummaryLsa.class);
-    private Ip4Address networkMask;
-    private int metric;
-
-    /**
-     * Creates an instance of Summary LSA.
-     *
-     * @param lsaHeader LSA header instance
-     */
-    public SummaryLsa(LsaHeader lsaHeader) {
-        populateHeader(lsaHeader);
-    }
-
-    /**
-     * Gets network mask.
-     *
-     * @return network mask
-     */
-    public Ip4Address networkMask() {
-        return networkMask;
-    }
-
-    /**
-     * Sets network mask.
-     *
-     * @param networkMask network mask
-     */
-    public void setNetworkMask(Ip4Address networkMask) {
-        this.networkMask = networkMask;
-    }
-
-    /**
-     * Gets metric value.
-     *
-     * @return metric
-     */
-    public int metric() {
-        return metric;
-    }
-
-    /**
-     * Sets metric value.
-     *
-     * @param metric metric value
-     */
-    public void setMetric(int metric) {
-        this.metric = metric;
-    }
-
-    /**
-     * Reads from channel buffer and populate instance.
-     *
-     * @param channelBuffer channelBuffer instance
-     * @throws OspfParseException might throws exception while parsing buffer
-     */
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-
-        try {
-            byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-            this.setNetworkMask(Ip4Address.valueOf(tempByteArray));
-            int unsedByte = channelBuffer.readByte();
-            this.setMetric(channelBuffer.readUnsignedMedium());
-        } catch (Exception e) {
-            log.debug("Error::SummaryLsa:: {}", e.getMessage());
-            throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, OspfErrorType.BAD_MESSAGE);
-        }
-    }
-
-    /**
-     * Returns instance as bytes.
-     *
-     * @return instance as bytes
-     */
-    public byte[] asBytes() {
-        byte[] lsaMessage = null;
-        byte[] lsaHeader = getLsaHeaderAsByteArray();
-        byte[] lsaBody = getLsaBodyAsByteArray();
-        lsaMessage = Bytes.concat(lsaHeader, lsaBody);
-
-        return lsaMessage;
-    }
-
-    /**
-     * Get the LSA body.
-     *
-     * @return LSA body
-     */
-    public byte[] getLsaBodyAsByteArray() {
-        List<Byte> bodyLst = new ArrayList<>();
-
-        try {
-            bodyLst.addAll(Bytes.asList(this.networkMask().toOctets()));
-            bodyLst.add((byte) 0);
-            bodyLst.addAll(Bytes.asList(OspfUtil.convertToThreeBytes(this.metric())));
-        } catch (Exception e) {
-            log.debug("Error::getLsrBodyAsByteArray {}", e.getMessage());
-            return Bytes.toArray(bodyLst);
-        }
-
-        return Bytes.toArray(bodyLst);
-    }
-
-    @Override
-    public OspfLsaType getOspfLsaType() {
-        return OspfLsaType.SUMMARY;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("networkMask", networkMask)
-                .add("metric", metric)
-                .toString();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        SummaryLsa that = (SummaryLsa) o;
-        return Objects.equal(networkMask, that.networkMask) &&
-                Objects.equal(metric, that.metric);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(networkMask, metric);
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/TopLevelTlv.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/TopLevelTlv.java
deleted file mode 100644
index d9e83116..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/TopLevelTlv.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-/**
- * Marker interface represents a top level TLV in an Opaque LSA.
- */
-public interface TopLevelTlv {
-}
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/package-info.java
deleted file mode 100644
index 3ec9e2a..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the OSPF LSA types.
- */
-package org.onosproject.ospf.protocol.lsa.types;
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageReader.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageReader.java
deleted file mode 100644
index e51672f..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageReader.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfMessage;
-import org.onosproject.ospf.exceptions.OspfErrorType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate;
-import org.onosproject.ospf.protocol.util.OspfParameters;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * A message reader which reads OSPF messages from ChannelBuffer and converts to OspfMessage instances.
- */
-public class OspfMessageReader {
-    private static final Logger log = LoggerFactory.getLogger(OspfMessageReader.class);
-
-    /**
-     * Reads and Converts the channel buffer to OspfMessage instance.
-     *
-     * @param channelBuffer channel buffer instance.
-     * @return OSPF message instance.
-     * @throws OspfParseException might throws exception while parsing buffer
-     */
-    public OspfMessage readFromBuffer(ChannelBuffer channelBuffer)
-            throws OspfParseException {
-
-        try {
-            OspfPacketHeader ospfHeader = getOspfHeader(channelBuffer);
-            OspfMessage ospfMessage = null;
-            switch (ospfHeader.ospfType()) {
-                case OspfParameters.HELLO:
-                    ospfMessage = new HelloPacket(ospfHeader);
-                    break;
-                case OspfParameters.DD:
-                    ospfMessage = new DdPacket(ospfHeader);
-                    break;
-                case OspfParameters.LSREQUEST:
-                    ospfMessage = new LsRequest(ospfHeader);
-                    break;
-                case OspfParameters.LSUPDATE:
-                    ospfMessage = new LsUpdate(ospfHeader);
-                    break;
-                case OspfParameters.LSACK:
-                    ospfMessage = new LsAcknowledge(ospfHeader);
-                    break;
-                default:
-                    log.debug("Message Reader[Decoder] - Unknown LSA type..!!!");
-                    break;
-            }
-
-            if (ospfMessage != null) {
-                try {
-                    log.debug("{} Received::Message Length :: {} ", ospfMessage.ospfMessageType(),
-                              ospfHeader.ospfPacLength());
-                    ospfMessage.readFrom(channelBuffer.readBytes(ospfHeader.ospfPacLength() -
-                                                                         OspfUtil.OSPF_HEADER_LENGTH));
-                } catch (Exception e) {
-                    throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR,
-                                                 OspfErrorType.BAD_MESSAGE);
-                }
-
-            }
-
-            return ospfMessage;
-        } catch (Exception e) {
-            throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR,
-                                         OspfErrorType.BAD_MESSAGE);
-        }
-    }
-
-    /**
-     * Gets the OSPF packet Header.
-     *
-     * @param channelBuffer channel buffer instance.
-     * @return Ospf Header instance.
-     */
-    private OspfPacketHeader getOspfHeader(ChannelBuffer channelBuffer) {
-        OspfPacketHeader ospfPacketHeader = new OspfPacketHeader();
-
-        // Determine OSPF version & Packet Type
-        int version = channelBuffer.readByte(); //byte 1 is ospf version
-        int packetType = channelBuffer.readByte(); //byte 2 is ospf packet type
-
-        // byte 3 & 4 combine is packet length.
-        int packetLength = channelBuffer.readShort();
-
-        byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-        channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-        Ip4Address routerId = Ip4Address.valueOf(tempByteArray);
-
-        tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-        channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-        Ip4Address areaId = Ip4Address.valueOf(tempByteArray);
-
-        int checkSum = channelBuffer.readUnsignedShort();
-        int auType = channelBuffer.readUnsignedShort();
-        int authentication = (int) channelBuffer.readLong();
-
-        ospfPacketHeader.setOspfVer(version);
-        ospfPacketHeader.setOspftype(packetType);
-        ospfPacketHeader.setOspfPacLength(packetLength);
-        ospfPacketHeader.setRouterId(routerId);
-        ospfPacketHeader.setAreaId(areaId);
-        ospfPacketHeader.setChecksum(checkSum);
-        ospfPacketHeader.setAuthType(auType);
-        ospfPacketHeader.setAuthentication(authentication);
-
-        return ospfPacketHeader;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageWriter.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageWriter.java
deleted file mode 100644
index 1a69a3b..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageWriter.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-* Copyright 2016-present Open Networking Foundation
-*
-* 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.ospf.protocol.ospfpacket;
-
-import org.onosproject.ospf.controller.OspfMessage;
-import org.onosproject.ospf.protocol.util.OspfParameters;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * A message writer which writes an OSPF message to byte array.
- */
-public class OspfMessageWriter {
-    private static final Logger log = LoggerFactory.getLogger(OspfMessageWriter.class);
-
-    /**
-     * Writes OSPF message to byte array.
-     *
-     * @param ospfMessage    OSPF message
-     * @param interfaceIndex interface index
-     * @param interfaceState interface state
-     * @return message as byte array
-     */
-    public byte[] getMessage(OspfMessage ospfMessage, int interfaceIndex, int interfaceState) {
-
-        byte[] buf = null;
-        switch (ospfMessage.ospfMessageType().value()) {
-            case OspfParameters.HELLO:
-            case OspfParameters.LSACK:
-            case OspfParameters.DD:
-            case OspfParameters.LSREQUEST:
-            case OspfParameters.LSUPDATE:
-                buf = writeMessageToBytes(ospfMessage, interfaceIndex, interfaceState);
-                break;
-            default:
-                log.debug("Message Writer[Encoder] - Unknown Message to encode..!!!");
-                break;
-        }
-
-        return buf;
-    }
-
-    /**
-     * Writes an OSPF Message to byte array.
-     *
-     * @param ospfMessage    OSPF Message instance
-     * @param interfaceState interface state
-     * @return message as byte array
-     */
-    private byte[] writeMessageToBytes(OspfMessage ospfMessage, int interfaceIndex, int interfaceState) {
-        byte[] ospfMessageAsByte = ospfMessage.asBytes();
-        //Add the length and checksum in byte array at length position 2 & 3 and Checksum position
-        ospfMessageAsByte = OspfUtil.addLengthAndCheckSum(ospfMessageAsByte, OspfUtil.OSPFPACKET_LENGTH_POS1,
-                                                          OspfUtil.OSPFPACKET_LENGTH_POS2,
-                                                          OspfUtil.OSPFPACKET_CHECKSUM_POS1,
-                                                          OspfUtil.OSPFPACKET_CHECKSUM_POS2);
-        //Add Interface State Info and destination IP as metadata
-        if (interfaceState == OspfParameters.DR || interfaceState == OspfParameters.BDR) {
-            ospfMessageAsByte = OspfUtil.addMetadata(interfaceIndex, ospfMessageAsByte, OspfUtil.JOIN_ALL_DROUTERS,
-                                                     ospfMessage.destinationIp());
-        } else {
-            ospfMessageAsByte = OspfUtil.addMetadata(interfaceIndex, ospfMessageAsByte, OspfUtil.ONLY_ALL_SPF_ROUTERS,
-                                                     ospfMessage.destinationIp());
-        }
-
-        return ospfMessageAsByte;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfPacketHeader.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfPacketHeader.java
deleted file mode 100644
index 2d76cf9..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfPacketHeader.java
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket;
-
-import com.google.common.base.MoreObjects;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfMessage;
-import org.onosproject.ospf.controller.OspfPacketType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-
-/**
- * Defines the OSPF Packet Header, fields and access methods.
- * Every OSPF packet starts with a standard 24 byte header.
- * This header contains all the information necessary to determine whether
- * the packet should be accepted for further processing
- */
-public class OspfPacketHeader implements OspfMessage {
-
-    /*
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |   Version #   |     Type      |         Packet length         |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                          Router ID                            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                           Area ID                             |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |           Checksum            |             AuType            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                       Authentication                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                       Authentication                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private int ospfVer;
-    private int ospfType;
-    private int ospfPackLength;
-    private Ip4Address routerId;
-    private Ip4Address areaId;
-    private int checkSum;
-    private int auType;
-    private int authentication;
-    private Ip4Address destinationIp;
-    private Ip4Address sourceIp;
-    private int interfaceIndex;
-
-    /**
-     * Gets the source IP.
-     *
-     * @return source IP address
-     */
-    public Ip4Address sourceIp() {
-        return sourceIp;
-    }
-
-    /**
-     * Sets the source IP address.
-     *
-     * @param sourceIp source IP address
-     */
-    public void setSourceIp(Ip4Address sourceIp) {
-        this.sourceIp = sourceIp;
-    }
-
-    @Override
-    public OspfPacketType ospfMessageType() {
-        //default impl
-        return null;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-        //default impl
-    }
-
-    @Override
-    public byte[] asBytes() {
-        //default impl
-        return new byte[0];
-    }
-
-    /**
-     * Gets OSPF version.
-     *
-     * @return OSPF version
-     */
-    public int ospfVersion() {
-        return ospfVer;
-    }
-
-    /**
-     * Sets OSPF version.
-     *
-     * @param ospfVer OSPF version
-     */
-    public void setOspfVer(int ospfVer) {
-        this.ospfVer = ospfVer;
-    }
-
-    /**
-     * Gets OSPF packet type.
-     *
-     * @return OSPF packet type
-     */
-    public int ospfType() {
-        return ospfType;
-    }
-
-    /**
-     * Sets OSPF packet type.
-     *
-     * @param ospfType packet type
-     */
-    public void setOspftype(int ospfType) {
-        this.ospfType = ospfType;
-    }
-
-    /**
-     * Gets ospf packet length.
-     *
-     * @return OSPF packet length
-     */
-    public int ospfPacLength() {
-        return ospfPackLength;
-    }
-
-    /**
-     * Sets OSPF packet length.
-     *
-     * @param ospfPacLength packet length
-     */
-    public void setOspfPacLength(int ospfPacLength) {
-        this.ospfPackLength = ospfPacLength;
-    }
-
-    /**
-     * Gets router id.
-     *
-     * @return routerId
-     */
-    public Ip4Address routerId() {
-        return routerId;
-    }
-
-    /**
-     * Sets router id.
-     *
-     * @param routerId router id
-     */
-    public void setRouterId(Ip4Address routerId) {
-        this.routerId = routerId;
-    }
-
-    /**
-     * Gets area id.
-     *
-     * @return areaId area id
-     */
-    public Ip4Address areaId() {
-        return areaId;
-    }
-
-    /**
-     * Sets area id.
-     *
-     * @param areaId area id
-     */
-    public void setAreaId(Ip4Address areaId) {
-        this.areaId = areaId;
-    }
-
-    /**
-     * Gets checksum value.
-     *
-     * @return checkSum check sum value
-     */
-    public int checksum() {
-        return checkSum;
-    }
-
-    /**
-     * Sets checksum.
-     *
-     * @param checkSum check sum value
-     */
-    public void setChecksum(int checkSum) {
-        this.checkSum = checkSum;
-    }
-
-    /**
-     * Gets auth type.
-     *
-     * @return authType authentication type
-     */
-    public int authType() {
-        return auType;
-    }
-
-    /**
-     * Sets auth Type.
-     *
-     * @param auType authentication type
-     */
-    public void setAuthType(int auType) {
-        this.auType = auType;
-    }
-
-    /**
-     * Gets authentication.
-     *
-     * @return authentication
-     */
-    public int authentication() {
-        return authentication;
-    }
-
-    /**
-     * Sets authentication.
-     *
-     * @param authentication authentication
-     */
-    public void setAuthentication(int authentication) {
-        this.authentication = authentication;
-    }
-
-    /**
-     * Gets destination IP.
-     *
-     * @return destination IP
-     */
-    public Ip4Address destinationIp() {
-        return destinationIp;
-    }
-
-    /**
-     * Sets destination IP.
-     *
-     * @param destinationIp destination IP
-     */
-    public void setDestinationIp(Ip4Address destinationIp) {
-        this.destinationIp = destinationIp;
-    }
-
-    /**
-     * Returns the interface index on which the message received.
-     *
-     * @return interface index on which the message received
-     */
-    public int interfaceIndex() {
-        return interfaceIndex;
-    }
-
-    /**
-     * Sets the interface index on which the message received.
-     *
-     * @param interfaceIndex interface index on which the message received
-     */
-    public void setInterfaceIndex(int interfaceIndex) {
-        this.interfaceIndex = interfaceIndex;
-    }
-
-    /**
-     * Populates the header from the packetHeader instance.
-     *
-     * @param ospfPacketHeader packet header instance.
-     */
-    public void populateHeader(OspfPacketHeader ospfPacketHeader) {
-        this.setInterfaceIndex(ospfPacketHeader.interfaceIndex());
-        this.setSourceIp(ospfPacketHeader.sourceIp());
-        this.setOspfVer(ospfPacketHeader.ospfVersion());
-        this.setOspftype(ospfPacketHeader.ospfType());
-        this.setOspfPacLength(ospfPacketHeader.ospfPacLength());
-        this.setRouterId(ospfPacketHeader.routerId());
-        this.setAreaId(ospfPacketHeader.areaId());
-        this.setChecksum(ospfPacketHeader.checksum());
-        this.setAuthType(ospfPacketHeader.authType());
-        this.setAuthentication(ospfPacketHeader.authentication());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("ospfVersion", ospfVer)
-                .add("ospfType", ospfType)
-                .add("ospfPackLength", ospfPackLength)
-                .add("routerId", routerId)
-                .add("areaId", areaId)
-                .add("checkSum", checkSum)
-                .add("auType", auType)
-                .add("authentication", authentication)
-                .add("destinationIP", destinationIp)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/package-info.java
deleted file mode 100644
index e408789..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the different types of OSPF Packets.
- */
-package org.onosproject.ospf.protocol.ospfpacket;
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/subtype/LsRequestPacket.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/subtype/LsRequestPacket.java
deleted file mode 100644
index e8ce640..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/subtype/LsRequestPacket.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket.subtype;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Representation of an LS Request packet and fields and access methods to access it.
- */
-public class LsRequestPacket {
-
-    private int lsType;
-    private String linkStateId;
-    private String ownRouterId;
-
-    /**
-     * Gets the LSA type.
-     *
-     * @return LSA type
-     */
-    public int lsType() {
-        return lsType;
-    }
-
-    /**
-     * Sets the LSA type.
-     *
-     * @param lsType LSA type
-     */
-    public void setLsType(int lsType) {
-        this.lsType = lsType;
-    }
-
-    /**
-     * Gets the link state id.
-     *
-     * @return link state id
-     */
-    public String linkStateId() {
-        return linkStateId;
-    }
-
-    /**
-     * Sets link state id.
-     *
-     * @param linkStateId state id
-     */
-    public void setLinkStateId(String linkStateId) {
-        this.linkStateId = linkStateId;
-    }
-
-    /**
-     * Gets the router id.
-     *
-     * @return router id
-     */
-    public String ownRouterId() {
-        return ownRouterId;
-    }
-
-    /**
-     * Sets the router id.
-     *
-     * @param ownRouterId router id
-     */
-    public void setOwnRouterId(String ownRouterId) {
-        this.ownRouterId = ownRouterId;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("lsType", lsType)
-                .add("linkStateId", linkStateId)
-                .add("ownRouterId", ownRouterId)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/subtype/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/subtype/package-info.java
deleted file mode 100644
index 2b29614..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/subtype/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the OSPF packet sub types which is used in OSPF packets..
- */
-package org.onosproject.ospf.protocol.ospfpacket.subtype;
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/DdPacket.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/DdPacket.java
deleted file mode 100644
index c38b383..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/DdPacket.java
+++ /dev/null
@@ -1,420 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.exceptions.OspfErrorType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
-import org.onosproject.ospf.controller.OspfPacketType;
-import org.onosproject.ospf.protocol.util.OspfParameters;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of an OSPF Database Description packet.
- * Database Description packets are OSPF packet type 2.
- * These packets are exchanged when an adjacency is being initialized.
- * They describe the contents of the link-state database.
- */
-public class DdPacket extends OspfPacketHeader {
-
-    /*
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |   Version #   |       2       |         Packet length         |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                          Router ID                            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                           Area ID                             |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |           Checksum            |             AuType            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                       Authentication                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                       Authentication                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |         Interface MTU         |    Options    |0|0|0|0|0|I|M|MS
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                     DD sequence number                        |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                                                               |
-       +-                                                             -+
-       |                                                               |
-       +-                      An LSA Header                          -+
-       |                                                               |
-       +-                                                             -+
-       |                                                               |
-       +-                                                             -+
-       |                                                               |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                              ...                              |
-     */
-    private static final Logger log = LoggerFactory.getLogger(DdPacket.class);
-    private int imtu;
-    private int options;
-    private int ims; // initialize , more but / master slave bit
-    private int isMaster;
-    private int isInitialize;
-    private int isMore;
-    private long sequenceNo;
-    private boolean isOpaqueCapable;
-    private List<LsaHeader> lsaHeaderList = new ArrayList<>();
-
-    /**
-     * Creates an instance of DD packet.
-     */
-    public DdPacket() {
-    }
-
-    /**
-     * Creates an instance of DD packet.
-     *
-     * @param ospfHeader OSPF header instance
-     */
-    public DdPacket(OspfPacketHeader ospfHeader) {
-        populateHeader(ospfHeader);
-    }
-
-    /**
-     * Gets is opaque capable or not.
-     *
-     * @return true if opaque capable else false
-     */
-    public boolean isOpaqueCapable() {
-        return isOpaqueCapable;
-    }
-
-    /**
-     * Sets is opaque capable or not.
-     *
-     * @param isOpaqueCapable true or false
-     */
-    public void setIsOpaqueCapable(boolean isOpaqueCapable) {
-        this.isOpaqueCapable = isOpaqueCapable;
-    }
-
-    /**
-     * Gets IMS value.
-     *
-     * @return IMS bits as an int value
-     */
-    public int ims() {
-        return ims;
-    }
-
-    /**
-     * Sets IMS value.
-     *
-     * @param ims IMS value
-     */
-    public void setIms(int ims) {
-        this.ims = ims;
-    }
-
-    /**
-     * Gets master bit value.
-     *
-     * @return 1 if master else 0
-     */
-    public int isMaster() {
-        return isMaster;
-    }
-
-    /**
-     * Sets master value.
-     *
-     * @param isMaster 1 represents master
-     */
-    public void setIsMaster(int isMaster) {
-        this.isMaster = isMaster;
-    }
-
-    /**
-     * Gets Initialize bit value.
-     *
-     * @return 1 if initialize else 0
-     */
-    public int isInitialize() {
-        return isInitialize;
-    }
-
-    /**
-     * Sets initialize value.
-     *
-     * @param isInitialize 1 is initialize else 0
-     */
-    public void setIsInitialize(int isInitialize) {
-        this.isInitialize = isInitialize;
-    }
-
-    /**
-     * Gets is more bit set or not.
-     *
-     * @return 1 if more set else 0
-     */
-    public int isMore() {
-        return isMore;
-    }
-
-    /**
-     * Sets more bit value to 0 or 1.
-     *
-     * @param isMore 1 if more set else 0
-     */
-    public void setIsMore(int isMore) {
-        this.isMore = isMore;
-    }
-
-
-    /**
-     * Gets IMTU value.
-     *
-     * @return IMTU value
-     */
-    public int imtu() {
-        return imtu;
-    }
-
-    /**
-     * Sets IMTU value.
-     *
-     * @param imtu value
-     */
-    public void setImtu(int imtu) {
-        this.imtu = imtu;
-    }
-
-    /**
-     * Gets options value.
-     *
-     * @return options
-     */
-    public int options() {
-        return options;
-    }
-
-    /**
-     * Sets options value.
-     *
-     * @param options options value
-     */
-    public void setOptions(int options) {
-        this.options = options;
-    }
-
-    /**
-     * Gets sequence number.
-     *
-     * @return sequenceNo
-     */
-    public long sequenceNo() {
-        return sequenceNo;
-    }
-
-    /**
-     * Sets Sequence number.
-     *
-     * @param sequenceNo sequence number
-     */
-    public void setSequenceNo(long sequenceNo) {
-        this.sequenceNo = sequenceNo;
-    }
-
-    /**
-     * Gets LSA header list.
-     *
-     * @return LSA header
-     */
-    public List<LsaHeader> getLsaHeaderList() {
-        return lsaHeaderList;
-    }
-
-    /**
-     * Adds LSA header to header list.
-     *
-     * @param lsaHeader lsa header instance
-     */
-    public void addLsaHeader(LsaHeader lsaHeader) {
-
-        if (!lsaHeaderList.contains(lsaHeader)) {
-            lsaHeaderList.add(lsaHeader);
-        }
-    }
-
-    @Override
-    public OspfPacketType ospfMessageType() {
-        return OspfPacketType.DD;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-
-        try {
-            this.setImtu(channelBuffer.readShort());
-
-            int options = channelBuffer.readByte();
-            String obit = Integer.toHexString(options);
-            if (obit.length() == 1) {
-                obit = "0" + obit;
-            }
-            String toBinary = Integer.toBinaryString(Integer.parseInt(new Character(obit.charAt(0)).toString()));
-            if (toBinary.length() == 1) {
-                toBinary = "000" + toBinary;
-            } else if (toBinary.length() == 2) {
-                toBinary = "00" + toBinary;
-            } else if (toBinary.length() == 3) {
-                toBinary = "0" + toBinary;
-            }
-            if (Integer.parseInt(new Character(toBinary.charAt(1)).toString()) == 1) {
-                this.setIsOpaqueCapable(true);
-            }
-            this.setOptions(options);
-            this.setIms(channelBuffer.readByte());
-            //Convert the byte to ims bits
-            String strIms = Integer.toBinaryString(this.ims());
-            if (strIms.length() == 3) {
-                this.setIsInitialize(Integer.parseInt(Character.toString(strIms.charAt(0))));
-                this.setIsMore(Integer.parseInt(Character.toString(strIms.charAt(1))));
-                this.setIsMaster(Integer.parseInt(Character.toString(strIms.charAt(2))));
-            } else if (strIms.length() == 2) {
-                this.setIsInitialize(0);
-                this.setIsMore(Integer.parseInt(Character.toString(strIms.charAt(0))));
-                this.setIsMaster(Integer.parseInt(Character.toString(strIms.charAt(1))));
-            } else if (strIms.length() == 1) {
-                this.setIsInitialize(0);
-                this.setIsMore(0);
-                this.setIsMaster(Integer.parseInt(Character.toString(strIms.charAt(0))));
-            }
-            this.setSequenceNo(channelBuffer.readInt());
-
-            //add all the LSA Headers - header is of 20 bytes
-            while (channelBuffer.readableBytes() >= OspfUtil.LSA_HEADER_LENGTH) {
-                LsaHeader header = OspfUtil.readLsaHeader(channelBuffer.readBytes(OspfUtil.LSA_HEADER_LENGTH));
-                //add the LSAHeader to DDPacket
-                addLsaHeader(header);
-            }
-
-        } catch (Exception e) {
-            log.debug("Error::DdPacket:: {}", e.getMessage());
-            throw new OspfParseException(OspfErrorType.MESSAGE_HEADER_ERROR, OspfErrorType.BAD_MESSAGE_LENGTH);
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-
-        byte[] ddMessage = null;
-
-        byte[] ddHeader = getDdHeaderAsByteArray();
-        byte[] ddBody = getDdBodyAsByteArray();
-        ddMessage = Bytes.concat(ddHeader, ddBody);
-
-        return ddMessage;
-    }
-
-    /**
-     * Gets DD Header as byte array.
-     *
-     * @return dd header as byte array.
-     */
-    public byte[] getDdHeaderAsByteArray() {
-        List<Byte> headerLst = new ArrayList<>();
-
-        try {
-            headerLst.add((byte) this.ospfVersion());
-            headerLst.add((byte) this.ospfType());
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.ospfPacLength())));
-            headerLst.addAll(Bytes.asList(this.routerId().toOctets()));
-            headerLst.addAll(Bytes.asList(this.areaId().toOctets()));
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.checksum())));
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.authType())));
-            //Authentication is 0 always. Total 8 bytes consist of zero
-            byte[] auth = new byte[OspfUtil.EIGHT_BYTES];
-            headerLst.addAll(Bytes.asList(auth));
-
-        } catch (Exception e) {
-            log.debug("Error");
-
-        }
-
-        return Bytes.toArray(headerLst);
-    }
-
-
-    /**
-     * Gets DD body as byte array.
-     *
-     * @return DD body
-     */
-    public byte[] getDdBodyAsByteArray() {
-        List<Byte> bodyLst = new ArrayList<>();
-
-        try {
-            bodyLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.imtu())));
-            bodyLst.add((byte) this.options());
-
-            StringBuilder sb = new StringBuilder();
-            sb.append(this.isInitialize());
-            sb.append(this.isMore());
-            sb.append(this.isMaster());
-
-            bodyLst.add((byte) Integer.parseInt(sb.toString(), 2));
-            bodyLst.addAll(Bytes.asList(OspfUtil.convertToFourBytes(this.sequenceNo()))); // passing long value
-
-            for (LsaHeader lsaHeader : lsaHeaderList) {
-                if (lsaHeader.lsType() == OspfParameters.LINK_LOCAL_OPAQUE_LSA ||
-                        lsaHeader.lsType() == OspfParameters.AREA_LOCAL_OPAQUE_LSA ||
-                        lsaHeader.lsType() == OspfParameters.AS_OPAQUE_LSA) {
-                    OpaqueLsaHeader header = (OpaqueLsaHeader) lsaHeader;
-                    bodyLst.addAll(Bytes.asList(header.getOpaqueLsaHeaderAsByteArray()));
-                } else {
-                    bodyLst.addAll(Bytes.asList(lsaHeader.getLsaHeaderAsByteArray()));
-                }
-            }
-        } catch (Exception e) {
-            log.debug("Error::getLsrBodyAsByteArray {}", e.getMessage());
-            return Bytes.toArray(bodyLst);
-        }
-
-        return Bytes.toArray(bodyLst);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("imtu", imtu)
-                .add("options", options)
-                .add("ims", ims)
-                .add("isMaster", isMaster)
-                .add("isInitialize", isInitialize)
-                .add("isMore", isMore)
-                .add("sequenceNo", sequenceNo)
-                .add("isOpaqueCapable", isOpaqueCapable)
-                .add("lsaHeaderList", lsaHeaderList)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/HelloPacket.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/HelloPacket.java
deleted file mode 100644
index ab7e885..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/HelloPacket.java
+++ /dev/null
@@ -1,362 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.exceptions.OspfErrorType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
-import org.onosproject.ospf.controller.OspfPacketType;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Defines an OSPF Hello Message, and the fields and methods to access it.
- * Hello packets are OSPF packet type 1. These packets are sent
- * periodically on all interfaces in order to establish and
- * maintain neighbor relationships.
- */
-public class HelloPacket extends OspfPacketHeader {
-
-    /*
-              0                   1                   2                   3
-            0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |   Version #   |       1       |         Packet length         |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                          Router ID                            |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                           Area ID                             |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |           Checksum            |             AuType            |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                       Authentication                          |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                       Authentication                          |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                        Network Mask                           |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |         HelloInterval         |    Options    |    Rtr Pri    |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                     RouterDeadInterval                        |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                      Designated Router                        |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                   Backup Designated Router                    |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                          Neighbor                             |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                              ...                              |
-
-            Hello Message Format
-            REFERENCE : RFC 2328
-    */
-
-    private static final Logger log = LoggerFactory.getLogger(HelloPacket.class);
-    private Ip4Address networkMask;
-    private int options;
-    private int helloInterval;
-    private int routerPriority;
-    private int routerDeadInterval;
-    private Ip4Address bdr;
-    private Ip4Address dr;
-    private List<Ip4Address> neighborAddress = new ArrayList<>();
-
-    /**
-     * Creates an instance of Hello packet.
-     */
-    public HelloPacket() {
-    }
-
-    /**
-     * Creates an instance of Hello packet.
-     *
-     * @param ospfHeader OSPF header instance.
-     */
-    public HelloPacket(OspfPacketHeader ospfHeader) {
-        populateHeader(ospfHeader);
-    }
-
-    /**
-     * Gets network mask.
-     *
-     * @return network mask
-     */
-    public Ip4Address networkMask() {
-        return networkMask;
-    }
-
-    /**
-     * Sets network mask.
-     *
-     * @param networkMask network mask
-     */
-    public void setNetworkMask(Ip4Address networkMask) {
-        this.networkMask = networkMask;
-    }
-
-    /**
-     * Gets BDRs IP address.
-     *
-     * @return BDRs IP address
-     */
-    public Ip4Address bdr() {
-        return bdr;
-    }
-
-    /**
-     * Sets BDR IP address.
-     *
-     * @param bdr BDR IP address
-     */
-    public void setBdr(Ip4Address bdr) {
-        this.bdr = bdr;
-    }
-
-    /**
-     * Gets DRs IP address.
-     *
-     * @return DRs IP address
-     */
-    public Ip4Address dr() {
-        return dr;
-    }
-
-    /**
-     * Sets DRs IP address.
-     *
-     * @param dr DRs IP address
-     */
-    public void setDr(Ip4Address dr) {
-        this.dr = dr;
-    }
-
-    /**
-     * Adds neighbor to map.
-     *
-     * @param neighborID neighbors id
-     */
-    public void addNeighbor(Ip4Address neighborID) {
-        if (!neighborAddress.contains(neighborID)) {
-            neighborAddress.add(neighborID);
-        }
-    }
-
-    /**
-     * Checks neighbor is in map or not.
-     *
-     * @param neighborID neighbors id
-     * @return true if neighbor exist else false
-     */
-    public boolean containsNeighbour(Ip4Address neighborID) {
-        return (neighborAddress.contains(neighborID)) ? true : false;
-    }
-
-    /**
-     * Gets options value.
-     *
-     * @return options value
-     */
-    public int options() {
-        return options;
-    }
-
-    /**
-     * Sets options value.
-     *
-     * @param options options value
-     */
-    public void setOptions(int options) {
-        this.options = options;
-    }
-
-    /**
-     * Gets router priority.
-     *
-     * @return routerPriority
-     */
-    public int routerPriority() {
-        return routerPriority;
-    }
-
-    /**
-     * Sets router priority.
-     *
-     * @param routerPriority router priority
-     */
-    public void setRouterPriority(int routerPriority) {
-        this.routerPriority = routerPriority;
-    }
-
-    /**
-     * Gets hello interval.
-     *
-     * @return hello Interval
-     */
-    public int helloInterval() {
-        return helloInterval;
-    }
-
-    /**
-     * Sets hello Interval.
-     *
-     * @param helloInterval hello Interval
-     */
-    public void setHelloInterval(int helloInterval) {
-        this.helloInterval = helloInterval;
-    }
-
-    /**
-     * Gets router dead interval.
-     *
-     * @return router dead interval
-     */
-    public int routerDeadInterval() {
-        return routerDeadInterval;
-    }
-
-    /**
-     * Sets router dead interval.
-     *
-     * @param routerDeadInterval router dead interval
-     */
-    public void setRouterDeadInterval(int routerDeadInterval) {
-        this.routerDeadInterval = routerDeadInterval;
-    }
-
-    @Override
-    public OspfPacketType ospfMessageType() {
-        return OspfPacketType.HELLO;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-
-        try {
-            byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-            this.setNetworkMask(Ip4Address.valueOf(tempByteArray));
-            this.setHelloInterval(channelBuffer.readShort());
-            this.setOptions(channelBuffer.readByte());
-            this.setRouterPriority(channelBuffer.readByte() & 0xff);
-            this.setRouterDeadInterval(channelBuffer.readInt());
-            tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-            this.setDr(Ip4Address.valueOf(tempByteArray));
-            tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-            this.setBdr(Ip4Address.valueOf(tempByteArray));
-
-            while (channelBuffer.readableBytes() > 0) {
-                tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-                channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-                this.addNeighbor(Ip4Address.valueOf(tempByteArray));
-            }
-
-        } catch (Exception e) {
-            log.debug("Error::HelloPacket:: {}", e.getMessage());
-            throw new OspfParseException(OspfErrorType.MESSAGE_HEADER_ERROR, OspfErrorType.BAD_MESSAGE_LENGTH);
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-
-        byte[] helloMessage = null;
-        byte[] helloHeader = getHelloHeaderAsByteArray();
-        byte[] helloBody = getHelloBodyAsByteArray();
-        helloMessage = Bytes.concat(helloHeader, helloBody);
-
-        log.debug("HelloPacket::asBytes::Hello asBytes:: {}", helloMessage);
-
-        return helloMessage;
-    }
-
-    /**
-     * Gets hello header as byte array.
-     *
-     * @return hello header
-     */
-    public byte[] getHelloHeaderAsByteArray() {
-        List<Byte> headerLst = new ArrayList<>();
-        try {
-            headerLst.add((byte) this.ospfVersion());
-            headerLst.add((byte) this.ospfType());
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.ospfPacLength())));
-            headerLst.addAll(Bytes.asList(this.routerId().toOctets()));
-            headerLst.addAll(Bytes.asList(this.areaId().toOctets()));
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.checksum())));
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.authType())));
-            //Authentication is 0 always. Total 8 bytes consist of zero
-            byte[] auth = new byte[OspfUtil.EIGHT_BYTES];
-            headerLst.addAll(Bytes.asList(auth));
-        } catch (Exception e) {
-            log.debug("Error::getHelloHeaderAsByteArray {}", e.getMessage());
-            return Bytes.toArray(headerLst);
-        }
-
-        return Bytes.toArray(headerLst);
-    }
-
-    /**
-     * Gets hello body as byte array.
-     *
-     * @return hello body as byte array
-     */
-    public byte[] getHelloBodyAsByteArray() {
-        List<Byte> bodyLst = new ArrayList<>();
-
-        try {
-            bodyLst.addAll(Bytes.asList(this.networkMask().toOctets()));
-            bodyLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.helloInterval())));
-            bodyLst.add((byte) this.options());
-            bodyLst.add((byte) this.routerPriority());
-            bodyLst.addAll(Bytes.asList(OspfUtil.convertToFourBytes(this.routerDeadInterval())));
-            bodyLst.addAll(Bytes.asList(this.dr().toOctets()));
-            bodyLst.addAll(Bytes.asList(this.bdr().toOctets()));
-            for (Ip4Address neighbour : neighborAddress) {
-                bodyLst.addAll(Bytes.asList(neighbour.toOctets()));
-            }
-
-        } catch (Exception e) {
-            log.debug("Error::getHelloBodyAsByteArray {}", e.getMessage());
-            return Bytes.toArray(bodyLst);
-        }
-
-        return Bytes.toArray(bodyLst);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("networkMask", networkMask)
-                .add("options", options)
-                .add("helloInterval", helloInterval)
-                .add("routerPriority", routerPriority)
-                .add("routerDeadInterval", routerDeadInterval)
-                .add("bdr", bdr)
-                .add("dr", dr)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsAcknowledge.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsAcknowledge.java
deleted file mode 100644
index 5dd63aa..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsAcknowledge.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.exceptions.OspfErrorType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
-import org.onosproject.ospf.controller.OspfPacketType;
-import org.onosproject.ospf.protocol.util.OspfParameters;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of an  OSPF Link State Acknowledgment Message.
- * Link State Acknowledgment Packets are OSPF packet type 5.
- * To make the flooding of LSAs reliable, flooded LSAs are explicitly
- * acknowledged. This acknowledgment is accomplished through the
- * sending and receiving of Link State Acknowledgment packets.
- * Multiple LSAs can be acknowledged in a single Link State Acknowledgment packet.
- */
-public class LsAcknowledge extends OspfPacketHeader {
-    /*
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |   Version #   |       5       |         Packet length         |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                          Router ID                            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                           Area ID                             |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |           Checksum            |             AuType            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                       Authentication                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                       Authentication                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                                                               |
-       +-                                                             -+
-       |                                                               |
-       +-                         An LSA Header                       -+
-       |                                                               |
-       +-                                                             -+
-       |                                                               |
-       +-                                                             -+
-       |                                                               |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                              ...                              |
- */
-    private static final Logger log = LoggerFactory.getLogger(LsAcknowledge.class);
-    private List<LsaHeader> linkStateHeaders = new ArrayList<>();
-
-    /**
-     * Creates an instance of Link State Acknowledgment instance.
-     */
-    public LsAcknowledge() {
-    }
-
-    /**
-     * Creates an instance of Link State Acknowledgment instance.
-     *
-     * @param ospfHeader OSPF header instance.
-     */
-    public LsAcknowledge(OspfPacketHeader ospfHeader) {
-        populateHeader(ospfHeader);
-    }
-
-    /**
-     * Gets ls headers.
-     *
-     * @return ls headers
-     */
-    public List<LsaHeader> getLinkStateHeaders() {
-        return linkStateHeaders;
-    }
-
-    /**
-     * Adds link state header to list.
-     *
-     * @param lsaHeader LSA header
-     */
-    public void addLinkStateHeader(LsaHeader lsaHeader) {
-        if (!linkStateHeaders.contains(lsaHeader)) {
-            linkStateHeaders.add(lsaHeader);
-        }
-    }
-
-    @Override
-    public OspfPacketType ospfMessageType() {
-        return OspfPacketType.LSAACK;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-        try {
-            //add all the LSA Headers - one header is of 20 bytes
-            while (channelBuffer.readableBytes() >= OspfUtil.LSA_HEADER_LENGTH) {
-                LsaHeader header = OspfUtil.readLsaHeader(channelBuffer);
-                //add the LSAHeader to acknowledge
-                addLinkStateHeader(header);
-            }
-
-        } catch (Exception e) {
-            log.debug("Error::LsAckPacket:: {}", e.getMessage());
-            throw new OspfParseException(OspfErrorType.MESSAGE_HEADER_ERROR, OspfErrorType.BAD_MESSAGE_LENGTH);
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] lsAckMessage = null;
-
-        byte[] lsAckHeader = getLsAckAsByteArray();
-        byte[] lsAckBody = getLsAckBodyAsByteArray();
-        lsAckMessage = Bytes.concat(lsAckHeader, lsAckBody);
-
-        return lsAckMessage;
-    }
-
-    /**
-     * Gets LSAcknowledge as byte array.
-     *
-     * @return byte array
-     */
-    public byte[] getLsAckAsByteArray() {
-        List<Byte> headerLst = new ArrayList<>();
-        try {
-            headerLst.add((byte) this.ospfVersion());
-            headerLst.add((byte) this.ospfType());
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.ospfPacLength())));
-            headerLst.addAll(Bytes.asList(this.routerId().toOctets()));
-            headerLst.addAll(Bytes.asList(this.areaId().toOctets()));
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.checksum())));
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.authType())));
-            //Authentication is 0 always. Total 8 bytes consist of zero
-            byte[] auth = new byte[OspfUtil.EIGHT_BYTES];
-            headerLst.addAll(Bytes.asList(auth));
-        } catch (Exception e) {
-            log.debug("Error::LsAckPacket:: {}", e.getMessage());
-            return Bytes.toArray(headerLst);
-        }
-
-        return Bytes.toArray(headerLst);
-    }
-
-    /**
-     * Gets LsAck body as byte array.
-     *
-     * @return byte array
-     */
-    public byte[] getLsAckBodyAsByteArray() {
-        List<Byte> bodyLst = new ArrayList<>();
-
-        try {
-            for (LsaHeader lsaHeader : linkStateHeaders) {
-                if (lsaHeader.lsType() == OspfParameters.LINK_LOCAL_OPAQUE_LSA ||
-                        lsaHeader.lsType() == OspfParameters.AREA_LOCAL_OPAQUE_LSA ||
-                        lsaHeader.lsType() == OspfParameters.AS_OPAQUE_LSA) {
-                    OpaqueLsaHeader header = (OpaqueLsaHeader) lsaHeader;
-                    bodyLst.addAll(Bytes.asList(header.getOpaqueLsaHeaderAsByteArray()));
-                } else {
-                    bodyLst.addAll(Bytes.asList(lsaHeader.getLsaHeaderAsByteArray()));
-                }
-            }
-        } catch (Exception e) {
-            log.debug("Error::getLsAckBodyAsByteArray {}", e.getMessage());
-            return Bytes.toArray(bodyLst);
-        }
-
-        return Bytes.toArray(bodyLst);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("linkStateHeaders", linkStateHeaders)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequest.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequest.java
deleted file mode 100644
index 9f7e884..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequest.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
-import org.onosproject.ospf.protocol.ospfpacket.subtype.LsRequestPacket;
-import org.onosproject.ospf.controller.OspfPacketType;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Representation of an OSPF Link State Request packet.
- * Link State Request packets are OSPF packet type 3.  After exchanging
- * database description packets with a neighboring router, a router may
- * find that parts of its link-state database are out-of-date.  The
- * Link State Request packet is used to request the pieces of the
- * neighbor's database that are more up-to-date.
- */
-public class LsRequest extends OspfPacketHeader {
-    /*
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |   Version #   |       3       |         Packet length         |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                          Router ID                            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                           Area ID                             |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |           Checksum            |             AuType            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                       Authentication                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                       Authentication                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                          LS type                              |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                       Link State ID                           |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                     Advertising Router                        |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                              ...                              |
-
-       LsRequest Message Format
-       REFERENCE : RFC 2328
-     */
-    private static final Logger log = LoggerFactory.getLogger(LsRequest.class);
-    private List<LsRequestPacket> linkStateRequests = new ArrayList<>();
-
-    /**
-     * Creates an instance of link state request packet.
-     */
-    public LsRequest() {
-    }
-
-    /**
-     * Creates an instance of link state request packet.
-     *
-     * @param ospfHeader OSPF header instance.
-     */
-    public LsRequest(OspfPacketHeader ospfHeader) {
-        populateHeader(ospfHeader);
-    }
-
-    /**
-     * Adds link state request.
-     *
-     * @param lsRequestPacket ls request packet instance
-     */
-    public void addLinkStateRequests(LsRequestPacket lsRequestPacket) {
-        if (!linkStateRequests.contains(lsRequestPacket)) {
-            linkStateRequests.add(lsRequestPacket);
-        }
-    }
-
-    /**
-     * Gets link state request packet instance.
-     *
-     * @return link state request packet instance
-     */
-    public List<LsRequestPacket> getLinkStateRequests() {
-        return linkStateRequests;
-    }
-
-    @Override
-    public OspfPacketType ospfMessageType() {
-        return OspfPacketType.LSREQUEST;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-
-        while (channelBuffer.readableBytes() >= OspfUtil.LSREQUEST_LENGTH) {
-            LsRequestPacket lsRequestPacket = new LsRequestPacket();
-            lsRequestPacket.setLsType(channelBuffer.readInt());
-            byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-            lsRequestPacket.setLinkStateId(Ip4Address.valueOf(tempByteArray).toString());
-            tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-            channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-            lsRequestPacket.setOwnRouterId(Ip4Address.valueOf(tempByteArray).toString());
-
-            this.addLinkStateRequests(lsRequestPacket);
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] lsrMessage = null;
-        byte[] lsrHeader = getLsrHeaderAsByteArray();
-        byte[] lsrBody = getLsrBodyAsByteArray();
-        lsrMessage = Bytes.concat(lsrHeader, lsrBody);
-
-        return lsrMessage;
-    }
-
-    /**
-     * Gets LS request packet header as byte array.
-     *
-     * @return LS request packet header as byte array
-     */
-    public byte[] getLsrHeaderAsByteArray() {
-        List<Byte> headerLst = new ArrayList<>();
-
-        try {
-            headerLst.add((byte) this.ospfVersion());
-            headerLst.add((byte) this.ospfType());
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.ospfPacLength())));
-            headerLst.addAll(Bytes.asList(this.routerId().toOctets()));
-            headerLst.addAll(Bytes.asList(this.areaId().toOctets()));
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.checksum())));
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.authType())));
-            //Authentication is 0 always. Total 8 bytes consist of zero
-            byte[] auth = new byte[OspfUtil.EIGHT_BYTES];
-            headerLst.addAll(Bytes.asList(auth));
-        } catch (Exception e) {
-            log.debug("Error::getLsrBodyAsByteArray {}", e.getMessage());
-            return Bytes.toArray(headerLst);
-        }
-
-        return Bytes.toArray(headerLst);
-    }
-
-    /**
-     * Gets LS request packet body as byte array.
-     *
-     * @return LS request packet body as byte array
-     */
-    public byte[] getLsrBodyAsByteArray() {
-        List<Byte> bodyLst = new ArrayList<>();
-
-        try {
-            for (LsRequestPacket lsrPacket : linkStateRequests) {
-                bodyLst.addAll(Bytes.asList(OspfUtil.convertToFourBytes(lsrPacket.lsType())));
-                bodyLst.addAll(Bytes.asList(InetAddress.getByName(lsrPacket.linkStateId()).getAddress()));
-                bodyLst.addAll(Bytes.asList(InetAddress.getByName(lsrPacket.ownRouterId()).getAddress()));
-            }
-        } catch (Exception e) {
-            log.debug("Error::getLsrBodyAsByteArray {}", e.getMessage());
-            return Bytes.toArray(bodyLst);
-        }
-
-        return Bytes.toArray(bodyLst);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("linkStateRequests", linkStateRequests)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdate.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdate.java
deleted file mode 100644
index a0e9b32..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdate.java
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.ospf.controller.OspfLsa;
-import org.onosproject.ospf.exceptions.OspfErrorType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.lsa.types.AsbrSummaryLsa;
-import org.onosproject.ospf.protocol.lsa.types.ExternalLsa;
-import org.onosproject.ospf.protocol.lsa.types.NetworkLsa;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa11;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa9;
-import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
-import org.onosproject.ospf.protocol.lsa.types.SummaryLsa;
-import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
-import org.onosproject.ospf.controller.OspfPacketType;
-import org.onosproject.ospf.protocol.util.OspfParameters;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Representation of an OSPF Link State Update packet.
- * Link State Update packets are OSPF packet type 4.  These packets
- * implement the flooding of LSAs.  Each Link State Update packet
- * carries a collection of LSAs one hop further from their origin.
- * Several LSAs may be included in a single packet.
- */
-public class LsUpdate extends OspfPacketHeader {
-    /*
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |   Version #   |       4       |         Packet length         |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                          Router ID                            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                           Area ID                             |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |           Checksum            |             AuType            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                       Authentication                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                       Authentication                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                            # LSAs                             |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                                                               |
-       +-                                                            +-+
-       |                             LSAs                              |
-       +-                                                            +-+
-       |                              ...                              |
-     */
-    private static final Logger log = LoggerFactory.getLogger(LsUpdate.class);
-    private int numberOfLsa;
-    private List<OspfLsa> lsaList = new LinkedList<>();
-
-    /**
-     * Creates an instance of Link State Update packet.
-     */
-    public LsUpdate() {
-    }
-
-    /**
-     * Creates an instance of Link State Update packet.
-     *
-     * @param ospfHeader ospf header instance.
-     */
-    public LsUpdate(OspfPacketHeader ospfHeader) {
-        populateHeader(ospfHeader);
-    }
-
-    /**
-     * Gets the LSA list.
-     *
-     * @return list of LSA
-     */
-    public List getLsaList() {
-        return lsaList;
-    }
-
-    /**
-     * Adds the LSA to list.
-     *
-     * @param lsa LSA
-     */
-    public void addLsa(OspfLsa lsa) {
-        if (!lsaList.contains(lsa)) {
-            lsaList.add(lsa);
-        }
-    }
-
-    /**
-     * Gets the number of LSA.
-     *
-     * @return number of LSA
-     */
-    public int noLsa() {
-        return numberOfLsa;
-    }
-
-    /**
-     * Sets number of LSA.
-     *
-     * @param numberOfLsa number of LSA
-     */
-    public void setNumberOfLsa(int numberOfLsa) {
-        this.numberOfLsa = numberOfLsa;
-    }
-
-
-    @Override
-    public OspfPacketType ospfMessageType() {
-        return OspfPacketType.LSUPDATE;
-    }
-
-    @Override
-    public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException {
-        try {
-            //From header 4 bytes is number of lsa's
-            this.setNumberOfLsa(channelBuffer.readInt());
-            //get the remaining bytes represents Number of LSA's present. Add all the LSA's
-            while (channelBuffer.readableBytes() > OspfUtil.LSA_HEADER_LENGTH) {
-
-                LsaHeader header = OspfUtil.readLsaHeader(channelBuffer.readBytes(OspfUtil.LSA_HEADER_LENGTH));
-                int lsaLength = header.lsPacketLen();
-                int lsType = header.lsType();
-
-                switch (lsType) {
-                    case OspfParameters.LINK_LOCAL_OPAQUE_LSA:
-                        OpaqueLsa9 opaqueLsa9 = new OpaqueLsa9((OpaqueLsaHeader) header);
-                        opaqueLsa9.readFrom(channelBuffer.readBytes(lsaLength - OspfUtil.LSA_HEADER_LENGTH));
-                        addLsa(opaqueLsa9);
-                        break;
-                    case OspfParameters.AREA_LOCAL_OPAQUE_LSA:
-                        OpaqueLsa10 opaqueLsa10 = new OpaqueLsa10((OpaqueLsaHeader) header);
-                        opaqueLsa10.readFrom(channelBuffer.readBytes(lsaLength - OspfUtil.LSA_HEADER_LENGTH));
-                        addLsa(opaqueLsa10);
-                        break;
-                    case OspfParameters.AS_OPAQUE_LSA:
-                        OpaqueLsa11 opaqueLsa11 = new OpaqueLsa11((OpaqueLsaHeader) header);
-                        opaqueLsa11.readFrom(channelBuffer.readBytes(lsaLength - OspfUtil.LSA_HEADER_LENGTH));
-                        addLsa(opaqueLsa11);
-                        break;
-                    case OspfParameters.ROUTER:
-                        RouterLsa routerLsa = new RouterLsa(header);
-                        routerLsa.readFrom(channelBuffer.readBytes(lsaLength - OspfUtil.LSA_HEADER_LENGTH));
-                        addLsa(routerLsa);
-                        break;
-                    case OspfParameters.NETWORK:
-                        NetworkLsa networkLsa = new NetworkLsa(header);
-                        networkLsa.readFrom(channelBuffer.readBytes(lsaLength - OspfUtil.LSA_HEADER_LENGTH));
-                        addLsa(networkLsa);
-                        break;
-                    case OspfParameters.ASBR_SUMMARY:
-                        AsbrSummaryLsa asbrSummaryLsa = new AsbrSummaryLsa(header);
-                        asbrSummaryLsa.readFrom(channelBuffer.readBytes(lsaLength - OspfUtil.LSA_HEADER_LENGTH));
-                        addLsa(asbrSummaryLsa);
-                        break;
-                    case OspfParameters.SUMMARY:
-                        SummaryLsa summaryLsa = new SummaryLsa(header);
-                        summaryLsa.readFrom(channelBuffer.readBytes(lsaLength - OspfUtil.LSA_HEADER_LENGTH));
-                        addLsa(summaryLsa);
-                        break;
-                    case OspfParameters.EXTERNAL_LSA:
-                        ExternalLsa externalLsa = new ExternalLsa(header);
-                        externalLsa.readFrom(channelBuffer.readBytes(lsaLength - OspfUtil.LSA_HEADER_LENGTH));
-                        addLsa(externalLsa);
-                        break;
-                    default:
-                        log.debug("LSUpdate::readLsUpdateBody::UnKnown LS Type: {}", lsType);
-                        break;
-                }
-            }
-        } catch (Exception e) {
-            log.debug("Error::LsUpdate:: {}", e.getMessage());
-            throw new OspfParseException(OspfErrorType.MESSAGE_HEADER_ERROR, OspfErrorType.BAD_MESSAGE_LENGTH);
-        }
-    }
-
-    @Override
-    public byte[] asBytes() {
-        byte[] lsuMessage = null;
-
-        byte[] ospfHeader = getLsuHeaderAsByteArray();
-        byte[] lsuBody = getLsuBodyAsByteArray();
-        lsuMessage = Bytes.concat(ospfHeader, lsuBody);
-
-        return lsuMessage;
-    }
-
-    /**
-     * Gets lsu header.
-     *
-     * @return lsu header as byte array
-     */
-    public byte[] getLsuHeaderAsByteArray() {
-        List<Byte> headerLst = new ArrayList<>();
-        try {
-            headerLst.add((byte) this.ospfVersion());
-            headerLst.add((byte) this.ospfType());
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.ospfPacLength())));
-            headerLst.addAll(Bytes.asList(this.routerId().toOctets()));
-            headerLst.addAll(Bytes.asList(this.areaId().toOctets()));
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.checksum())));
-            headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.authType())));
-            //Authentication is 0 always. Total 8 bytes consist of zero
-            byte[] auth = new byte[OspfUtil.EIGHT_BYTES];
-            headerLst.addAll(Bytes.asList(auth));
-        } catch (Exception e) {
-            log.debug("Error::LSUpdate::getLsuHeaderAsByteArray:: {}", e.getMessage());
-            return Bytes.toArray(headerLst);
-        }
-
-        return Bytes.toArray(headerLst);
-    }
-
-    /**
-     * Get lsu body as byte array.
-     *
-     * @return lsu body as byte array
-     */
-    public byte[] getLsuBodyAsByteArray() {
-        List<Byte> bodyLst = new ArrayList<>();
-
-        try {
-            //add number of LSA's
-            bodyLst.addAll(Bytes.asList(OspfUtil.convertToFourBytes(this.noLsa())));
-            //for each type of LSA's from the list get lsa bytes
-            for (OspfLsa ospfLsa : lsaList) {
-                //Check the type of lsa and build bytes accordingly
-                switch (ospfLsa.getOspfLsaType().value()) {
-                    case OspfParameters.LINK_LOCAL_OPAQUE_LSA:
-                        OpaqueLsa9 opaqueLsa9 = (OpaqueLsa9) ospfLsa;
-                        bodyLst.addAll(Bytes.asList(opaqueLsa9.asBytes()));
-                        break;
-                    case OspfParameters.AREA_LOCAL_OPAQUE_LSA:
-                        OpaqueLsa10 opaqueLsa10 = (OpaqueLsa10) ospfLsa;
-                        bodyLst.addAll(Bytes.asList(opaqueLsa10.asBytes()));
-                        break;
-                    case OspfParameters.AS_OPAQUE_LSA:
-                        OpaqueLsa11 opaqueLsa11 = (OpaqueLsa11) ospfLsa;
-                        bodyLst.addAll(Bytes.asList(opaqueLsa11.asBytes()));
-                        break;
-                    case OspfParameters.ROUTER:
-                        RouterLsa routerLsa = (RouterLsa) ospfLsa;
-                        bodyLst.addAll(Bytes.asList(routerLsa.asBytes()));
-                        break;
-                    case OspfParameters.NETWORK:
-                        NetworkLsa networkLsa = (NetworkLsa) ospfLsa;
-                        bodyLst.addAll(Bytes.asList(networkLsa.asBytes()));
-                        break;
-                    case OspfParameters.ASBR_SUMMARY:
-                        AsbrSummaryLsa asbrSummaryLsa = (AsbrSummaryLsa) ospfLsa;
-                        bodyLst.addAll(Bytes.asList(asbrSummaryLsa.asBytes()));
-                        break;
-                    case OspfParameters.SUMMARY:
-                        SummaryLsa summaryLsa = (SummaryLsa) ospfLsa;
-                        bodyLst.addAll(Bytes.asList(summaryLsa.asBytes()));
-                        break;
-                    case OspfParameters.EXTERNAL_LSA:
-                        ExternalLsa externalLsa = (ExternalLsa) ospfLsa;
-                        bodyLst.addAll(Bytes.asList(externalLsa.asBytes()));
-                        break;
-                    default:
-                        log.debug("LSUpdate::getLsuBodyAsByteArray::UnKnown ospfLsa: {}", ospfLsa);
-                        break;
-                }
-            }
-
-        } catch (Exception e) {
-            log.debug("Error::getLsuBodyAsByteArray {}", e.getMessage());
-            return Bytes.toArray(bodyLst);
-        }
-
-        return Bytes.toArray(bodyLst);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("noLsa", numberOfLsa)
-                .add("lsaList", lsaList)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/package-info.java
deleted file mode 100644
index e5c55b0..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the OSPF Packet.
- */
-package org.onosproject.ospf.protocol.ospfpacket.types;
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/package-info.java
deleted file mode 100644
index 6ff02a9..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the OSPF protocol..
- */
-package org.onosproject.ospf.protocol;
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/ChecksumCalculator.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/ChecksumCalculator.java
deleted file mode 100644
index bddb853..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/ChecksumCalculator.java
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.util;
-
-import org.onosproject.ospf.controller.OspfLsa;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.exceptions.OspfParseException;
-import org.onosproject.ospf.protocol.lsa.types.AsbrSummaryLsa;
-import org.onosproject.ospf.protocol.lsa.types.ExternalLsa;
-import org.onosproject.ospf.protocol.lsa.types.NetworkLsa;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa11;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa9;
-import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
-import org.onosproject.ospf.protocol.lsa.types.SummaryLsa;
-import org.onosproject.ospf.controller.OspfMessage;
-import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate;
-import org.slf4j.Logger;
-
-import java.util.Arrays;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Calculates checksum for different types of OSPF packets.
- */
-public class ChecksumCalculator {
-
-    private static final Logger log = getLogger(ChecksumCalculator.class);
-
-    /**
-     * Converts given string to sixteen bits integer.
-     * If hexasum is more than 16 bit value, needs to be reduced to 16 bit value.
-     *
-     * @param strToConvert hexasum value to convert
-     * @return 16 bit integer value
-     */
-    public static int convertToSixteenBits(String strToConvert) {
-        StringBuilder sb = new StringBuilder(strToConvert);
-        sb = sb.reverse();
-        StringBuilder s1 = new StringBuilder(sb.substring(0, 4));
-        s1 = s1.reverse();
-        StringBuilder s2 = new StringBuilder(sb.substring(4, sb.length()));
-        s2 = s2.reverse();
-        int num = Integer.parseInt(s1.toString(), 16) + Integer.parseInt(s2.toString(), 16);
-        return num;
-    }
-
-    /**
-     * Checks whether checksum is valid or not in the given OSPF message.
-     *
-     * @param ospfMessage  ospf message instance
-     * @param checksumPos1 position of checksum bit in packet
-     * @param checksumPos2 position of checksum bit in packet
-     * @return true if valid else false
-     */
-    public boolean isValidOspfCheckSum(OspfMessage ospfMessage, int checksumPos1, int checksumPos2) {
-
-        switch (ospfMessage.ospfMessageType().value()) {
-            case OspfParameters.HELLO:
-                ospfMessage = (HelloPacket) ospfMessage;
-                break;
-            case OspfParameters.DD:
-                ospfMessage = (DdPacket) ospfMessage;
-                break;
-            case OspfParameters.LSREQUEST:
-                ospfMessage = (LsRequest) ospfMessage;
-                break;
-            case OspfParameters.LSUPDATE:
-                ospfMessage = (LsUpdate) ospfMessage;
-                break;
-            case OspfParameters.LSACK:
-                ospfMessage = (LsAcknowledge) ospfMessage;
-                break;
-            default:
-                break;
-        }
-
-        byte[] messageAsBytes = ospfMessage.asBytes();
-        return validateOspfCheckSum(messageAsBytes, checksumPos1, checksumPos2);
-    }
-
-    /**
-     * Checks whether checksum is valid or not in the given OSPF LSA.
-     *
-     * @param ospfLsa         lsa instance
-     * @param lsType          lsa type
-     * @param lsaChecksumPos1 lsa checksum position in packet
-     * @param lsaChecksumPos2 lsa checksum position in packet
-     * @throws OspfParseException if packet can't be parsed
-     * @return true if valid else false
-     */
-    public boolean isValidLsaCheckSum(OspfLsa ospfLsa, int lsType, int lsaChecksumPos1,
-                                      int lsaChecksumPos2) throws OspfParseException {
-
-        if (lsType == OspfLsaType.ROUTER.value()) {
-            RouterLsa lsa = (RouterLsa) ospfLsa;
-            return validateLsaCheckSum(lsa.asBytes(), lsaChecksumPos1, lsaChecksumPos2);
-        } else if (lsType == OspfLsaType.NETWORK.value()) {
-            NetworkLsa lsa = (NetworkLsa) ospfLsa;
-            return validateLsaCheckSum(lsa.asBytes(), lsaChecksumPos1, lsaChecksumPos2);
-        } else if (lsType == OspfLsaType.SUMMARY.value()) {
-            SummaryLsa lsa = (SummaryLsa) ospfLsa;
-            return validateLsaCheckSum(lsa.asBytes(), lsaChecksumPos1, lsaChecksumPos2);
-        } else if (lsType == OspfLsaType.ASBR_SUMMARY.value()) {
-            AsbrSummaryLsa lsa = (AsbrSummaryLsa) ospfLsa;
-            return validateLsaCheckSum(lsa.asBytes(), lsaChecksumPos1, lsaChecksumPos2);
-        } else if (lsType == OspfLsaType.EXTERNAL_LSA.value()) {
-            ExternalLsa lsa = (ExternalLsa) ospfLsa;
-            return validateLsaCheckSum(lsa.asBytes(), lsaChecksumPos1, lsaChecksumPos2);
-        } else if (lsType == OspfLsaType.LINK_LOCAL_OPAQUE_LSA.value()) {
-            OpaqueLsa9 lsa = (OpaqueLsa9) ospfLsa;
-            return validateLsaCheckSum(lsa.asBytes(), lsaChecksumPos1, lsaChecksumPos2);
-        } else if (lsType == OspfLsaType.AREA_LOCAL_OPAQUE_LSA.value()) {
-            OpaqueLsa10 lsa = (OpaqueLsa10) ospfLsa;
-            return validateLsaCheckSum(lsa.asBytes(), lsaChecksumPos1, lsaChecksumPos2);
-        } else if (lsType == OspfLsaType.AS_OPAQUE_LSA.value()) {
-            OpaqueLsa11 lsa = (OpaqueLsa11) ospfLsa;
-            return validateLsaCheckSum(lsa.asBytes(), lsaChecksumPos1, lsaChecksumPos2);
-        }
-
-
-        return false;
-    }
-
-    /**
-     * Verifies the checksum is valid in given LSA packet bytes.
-     *
-     * @param lsaPacket       lsa as byte array
-     * @param lsaChecksumPos1 position of checksum bit in packet
-     * @param lsaChecksumPos2 position of checksum bit in packet
-     * @return true if valid else false
-     */
-    public boolean validateLsaCheckSum(byte[] lsaPacket, int lsaChecksumPos1, int lsaChecksumPos2) {
-
-        byte[] checksum = calculateLsaChecksum(lsaPacket, lsaChecksumPos1, lsaChecksumPos2);
-
-        if (lsaPacket[lsaChecksumPos1] == checksum[0] && lsaPacket[lsaChecksumPos2] == checksum[1]) {
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Verifies the checksum is valid in given OSPF packet bytes.
-     *
-     * @param ospfPacket   as byte array
-     * @param checksumPos1 position of checksum bit in packet
-     * @param checksumPos2 position of checksum bit in packet
-     * @return true if valid else false
-     */
-    public boolean validateOspfCheckSum(byte[] ospfPacket, int checksumPos1, int checksumPos2) {
-
-        byte[] checkSum = calculateOspfCheckSum(ospfPacket, checksumPos1, checksumPos2);
-
-        if (ospfPacket[checksumPos1] == checkSum[0] && ospfPacket[checksumPos2] == checkSum[1]) {
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Calculates the LSA checksum.
-     *
-     * @param lsaBytes        as byte array
-     * @param lsaChecksumPos1 position of checksum bit in packet
-     * @param lsaChecksumPos2 position of checksum bit in packet
-     * @return checksum bytes
-     */
-    public byte[] calculateLsaChecksum(byte[] lsaBytes, int lsaChecksumPos1, int lsaChecksumPos2) {
-
-        byte[] tempLsaByte = Arrays.copyOf(lsaBytes, lsaBytes.length);
-
-        int[] checksumOut = {0, 0};
-        tempLsaByte[lsaChecksumPos1] = 0;
-        tempLsaByte[lsaChecksumPos2] = 0;
-        byte[] byteCheckSum = {0, 0};
-        for (int i = 2; i < tempLsaByte.length; i++) {
-            checksumOut[0] = checksumOut[0] + ((int) tempLsaByte[i] & 0xFF);
-            checksumOut[1] = checksumOut[1] + checksumOut[0];
-        }
-        checksumOut[0] = checksumOut[0] % 255;
-        checksumOut[1] = checksumOut[1] % 255;
-        int byte1 = (int) ((tempLsaByte.length - lsaChecksumPos1 - 1) * checksumOut[0] - checksumOut[1]) % 255;
-        if (byte1 <= 0) {
-            byte1 += 255;
-        }
-        int byte2 = 510 - checksumOut[0] - byte1;
-        if (byte2 > 255) {
-            byte2 -= 255;
-        }
-
-        byteCheckSum[0] = (byte) byte1;
-        byteCheckSum[1] = (byte) byte2;
-
-        return byteCheckSum;
-    }
-
-    /**
-     * Calculate checksum from hexasum.
-     *
-     * @param hexasum total of 16 bits hexadecimal values
-     * @return checksum value
-     */
-    private int calculateChecksum(int hexasum) {
-
-        char[] tempZeros = {'0', '0', '0', '0'};
-        StringBuffer hexaAsBinaryStr = new StringBuffer(Integer.toBinaryString(hexasum));
-        int length = hexaAsBinaryStr.length();
-        while (length > 16) {
-            if (hexaAsBinaryStr.length() % 4 != 0) {
-                int offset = hexaAsBinaryStr.length() % 4;
-                hexaAsBinaryStr.insert(0, tempZeros, 0, 4 - offset);
-            }
-            StringBuffer hexaStr1 = new StringBuffer(hexaAsBinaryStr.reverse().substring(0, 16));
-            String revHexaStr1 = hexaStr1.reverse().toString();
-            StringBuffer hexaStr2 = new StringBuffer(hexaAsBinaryStr.reverse());
-            StringBuffer hexaStr3 = new StringBuffer(hexaStr2.reverse().substring(16, hexaStr2.length()));
-            String revHexaStr3 = hexaStr3.reverse().toString();
-            int lastSixteenHexaBits = Integer.parseInt(revHexaStr1, 2);
-            int remainingHexaBits = Integer.parseInt(revHexaStr3, 2);
-            int totalCheckSum = lastSixteenHexaBits + remainingHexaBits;
-            hexaAsBinaryStr = new StringBuffer(Integer.toBinaryString(totalCheckSum));
-            length = hexaAsBinaryStr.length();
-        }
-        if (hexaAsBinaryStr.length() < 16) {
-            int count = 16 - hexaAsBinaryStr.length();
-            String s = hexaAsBinaryStr.toString();
-            for (int i = 0; i < count; i++) {
-                s = "0" + s;
-            }
-
-            hexaAsBinaryStr = new StringBuffer(s);
-
-        }
-        StringBuffer checksum = negate(hexaAsBinaryStr);
-        return Integer.parseInt(checksum.toString(), 2);
-    }
-
-    /**
-     * Negates given hexasum.
-     *
-     * @param binaryString binary form of hexasum
-     * @return binary from of calculateChecksum
-     */
-    private StringBuffer negate(StringBuffer binaryString) {
-        for (int i = 0; i < binaryString.length(); i++) {
-            if (binaryString.charAt(i) == '1') {
-                binaryString.replace(i, i + 1, "0");
-            } else {
-                binaryString.replace(i, i + 1, "1");
-            }
-        }
-
-        return binaryString;
-    }
-
-    /**
-     * Calculates the OSPF checksum for the given packet.
-     *
-     * @param packet       as byte array
-     * @param checksumPos1 position of checksum bit in packet
-     * @param checksumPos2 position of checksum bit in packet
-     * @return checksum bytes
-     */
-    public byte[] calculateOspfCheckSum(byte[] packet, int checksumPos1, int checksumPos2) {
-
-        int hexasum = 0;
-        for (int i = 0; i < packet.length; i = i + 2) {
-            if (i != 12) {
-                byte b1 = packet[i];
-                String s1 = String.format("%8s", Integer.toBinaryString(b1 & 0xFF)).replace(' ', '0');
-                b1 = packet[i + 1];
-                String s2 = String.format("%8s", Integer.toBinaryString(b1 & 0xFF)).replace(' ', '0');
-                String hexa = s1 + s2;
-                int num1 = Integer.parseInt(hexa, 2);
-                hexasum = hexasum + num1;
-                String convertTo16 = Integer.toHexString(hexasum);
-                if (convertTo16.length() > 4) {
-                    hexasum = convertToSixteenBits(convertTo16);
-                }
-            }
-        }
-        StringBuilder sb = new StringBuilder(Integer.toHexString(hexasum));
-        if (sb.length() > 4) {
-            sb = sb.reverse();
-            StringBuilder s1 = new StringBuilder(sb.substring(0, 4));
-            s1 = s1.reverse();
-            StringBuilder s2 = new StringBuilder(sb.substring(4, sb.length()));
-            s2 = s2.reverse();
-            hexasum = Integer.parseInt(s1.toString(), 16) + Integer.parseInt(s2.toString(), 16);
-        }
-        int finalChecksum = calculateChecksum(hexasum);
-        return OspfUtil.convertToTwoBytes(finalChecksum);
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfInterfaceState.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfInterfaceState.java
deleted file mode 100644
index 794dc24..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfInterfaceState.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.util;
-
-/**
- * Representation of an OSPF Interface states.
- */
-public enum OspfInterfaceState {
-
-    DOWN(1),
-    LOOPBACK(2),
-    WAITING(3),
-    POINT2POINT(4),
-    DROTHER(5),
-    BDR(6),
-    DR(7);
-
-    private int value;
-
-    /**
-     * Creates an instance of interface state.
-     *
-     * @param value Interface state value
-     */
-    OspfInterfaceState(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Gets value for Interface state.
-     *
-     * @return value Interface state
-     */
-    public int value() {
-        return value;
-    }
-
-    /**
-     * Gets interface state.
-     *
-     * @return interface state
-     */
-    public String interfaceState() {
-        String state = null;
-        switch (value) {
-            case 1:
-                state = "DOWN";
-                break;
-            case 2:
-                state = "LOOPBACK";
-                break;
-            case 3:
-                state = "WAITING";
-                break;
-            case 4:
-                state = "POINT2POINT";
-                break;
-            case 5:
-                state = "DROTHER";
-                break;
-            case 6:
-                state = "BDR";
-                break;
-            case 7:
-                state = "DR";
-                break;
-            default:
-                break;
-        }
-        return state;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfParameters.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfParameters.java
deleted file mode 100644
index c8c3382..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfParameters.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.util;
-
-/**
- * Representation of an OSPF configuration parameters and constants.
- */
-public final class OspfParameters {
-
-    public static final int LSREFRESHTIME = 1800; //max time between updates;
-    public static final int MINLSINTERVAL = 5; // set to 5 second
-    public static final int MINLSARRIVAL = 1; // set to 1 second
-    public static final int MAXAGE = 3600; // set to 1 hour in seconds
-    public static final int CHECKAGE = 300; // set to 5 mins
-    public static final int MAXAGEDIFF = 900; // set to 15 mins
-    public static final long MAXSEQUENCENUMBER = 2147483647;
-    public static final long STARTLSSEQUENCENUM = -2147483647;
-    public static final int AGECOUNTER = 1;
-    public static final String VERIFYCHECKSUM = "verifyChecksum";
-    public static final String REFRESHLSA = "refreshLsa";
-    public static final String MAXAGELSA = "maxAgeLsa";
-    public static final int START_NOW = 0;
-    public static final int TRAFFIC_ENGINEERING = 1;
-    public static final int INITIAL_BANDWIDTH = 12500000;
-    public static final int ROUTER = 1;
-    public static final int NETWORK = 2;
-    public static final int SUMMARY = 3;
-    public static final int ASBR_SUMMARY = 4;
-    public static final int EXTERNAL_LSA = 5;
-    public static final int LINK_LOCAL_OPAQUE_LSA = 9;
-    public static final int AREA_LOCAL_OPAQUE_LSA = 10;
-    public static final int AS_OPAQUE_LSA = 11;
-    public static final int HELLO = 1;
-    public static final int DD = 2;
-    public static final int LSREQUEST = 3;
-    public static final int LSUPDATE = 4;
-    public static final int LSACK = 5;
-    public static final int INFTRA_NS_DELAY = 1;
-    public static final int BDR = 6;
-    public static final int DR = 7;
-    public static final String OPAQUE_ENABLED_OPTION_VALUE = "01000010";
-
-    private OspfParameters() {
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfUtil.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfUtil.java
deleted file mode 100644
index 182b827..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfUtil.java
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.util;
-
-import com.google.common.primitives.Bytes;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.xml.bind.DatatypeConverter;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.security.SecureRandom;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
-import java.util.StringTokenizer;
-
-/**
- * Representation of an OSPF constants and utility methods.
- */
-public final class OspfUtil {
-    public static final int OSPF_VERSION_2 = 2;
-    public static final int OSPF_VERSION = OSPF_VERSION_2;
-    public static final int PACKET_MINIMUM_LENGTH = 24;
-    public static final int METADATA_LEN = 5;
-    public static final int MINIMUM_FRAME_LEN = 1487;
-    public static final int OSPF_HEADER_LENGTH = 24;
-    public static final int LSA_HEADER_LENGTH = 20;
-    public static final int DD_HEADER_LENGTH = OSPF_HEADER_LENGTH + 8;
-    public static final int LSREQUEST_LENGTH = 12;
-    public static final int OSPFPACKET_LENGTH_POS1 = 2;
-    public static final int OSPFPACKET_LENGTH_POS2 = 3;
-    public static final int OSPFPACKET_CHECKSUM_POS1 = 12;
-    public static final int OSPFPACKET_CHECKSUM_POS2 = 13;
-    public static final int LSAPACKET_CHECKSUM_POS1 = 16;
-    public static final int LSAPACKET_CHECKSUM_POS2 = 17;
-    public static final Ip4Address ALL_SPF_ROUTERS = Ip4Address.valueOf("224.0.0.5");
-    public static final Ip4Address ALL_DROUTERS = Ip4Address.valueOf("224.0.0.6");
-    public static final Ip4Address DEFAULTIP = Ip4Address.valueOf("0.0.0.0");
-    public static final int RETRANSMITINTERVAL = 5;
-    public static final int ONLY_ALL_SPF_ROUTERS = 1;
-    public static final int JOIN_ALL_DROUTERS = 2;
-    public static final int INITIALIZE_SET = 1;
-    public static final int INITIALIZE_NOTSET = 0;
-    public static final int MORE_SET = 1;
-    public static final int MORE_NOTSET = 0;
-    public static final int IS_MASTER = 1;
-    public static final int NOT_MASTER = 0;
-    public static final int NOT_ASSIGNED = 0;
-    public static final int FOUR_BYTES = 4;
-    public static final int FIVE_BYTES = 5;
-    public static final int EIGHT_BYTES = 8;
-    public static final int TWELVE_BYTES = 12;
-    public static final int EXTERNAL_DESTINATION_LENGTH = 12;
-    public static final String SHOST = "127.0.0.1";
-    public static final int SPORT = 7000;
-    public static final int MTU = 1500;
-    public static final char CONFIG_LENGTH = 1498;
-    public static final char ROUTER_PRIORITY = 0;
-    public static final int HELLO_PACKET_OPTIONS = 2;
-    private static final Logger log =
-            LoggerFactory.getLogger(OspfUtil.class);
-
-    /**
-     * Creates an instance.
-     */
-    private OspfUtil() {
-
-    }
-
-    /**
-     * Checks given IPs are in same network or not.
-     *
-     * @param ip1  IP address
-     * @param ip2  IP address
-     * @param mask network mask
-     * @return true if both are in same network else false
-     */
-    public static boolean sameNetwork(Ip4Address ip1, Ip4Address ip2, Ip4Address mask) {
-
-        byte[] a1 = ip1.toOctets();
-        byte[] a2 = ip2.toOctets();
-        byte[] m = mask.toOctets();
-
-        for (int i = 0; i < a1.length; i++) {
-            if ((a1[i] & m[i]) != (a2[i] & m[i])) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Converts IP address to long.
-     *
-     * @param ipAddress IP address
-     * @return long value represents IP address
-     */
-    public static long ipAddressToLong(String ipAddress) {
-        StringTokenizer st = new StringTokenizer(ipAddress, ".");
-        long ipAsNumber = Long.parseLong(st.nextToken()) * (long) Math.pow(256, 3);
-        ipAsNumber += Long.parseLong(st.nextToken()) * (long) Math.pow(256, 2);
-        ipAsNumber += Long.parseLong(st.nextToken()) * 256;
-        ipAsNumber += +Long.parseLong(st.nextToken());
-
-        return ipAsNumber;
-    }
-
-    /**
-     * Checks option field to see whether opaque enabled or not.
-     * 2nd Bit in options field of DdPacket represents Opaque.
-     * 7th bit is external capability.
-     * This method checks Opaque bit is set in the options or not.
-     *
-     * @param options options value
-     * @return true if opaque enabled else false.
-     */
-    public static boolean isOpaqueEnabled(int options) {
-        Boolean[] bits = new Boolean[8];
-        for (int i = 7; i >= 0; i--) {
-            bits[i] = (options & (1 << i)) != 0;
-        }
-
-        List<Boolean> list = Arrays.asList(bits);
-        Collections.reverse(list);
-
-        //2nd bit is Opaque.
-        return list.get(1);
-    }
-
-    /**
-     * Converts a byte to integer variable.
-     *
-     * @param bytesToConvert bytes to convert
-     * @return integer representation of bytes
-     */
-    public static int byteToInteger(byte[] bytesToConvert) {
-        final StringBuilder builder = new StringBuilder();
-        for (byte eachByte : bytesToConvert) {
-            builder.append(String.format("%02x", eachByte));
-        }
-        int num = Integer.parseInt(builder.toString(), 16);
-        return num;
-    }
-
-    /**
-     * Converts a byte to long variable.
-     *
-     * @param bytesToConvert bytes to convert
-     * @return long representation of bytes
-     */
-    public static long byteToLong(byte[] bytesToConvert) {
-        final StringBuilder builder = new StringBuilder();
-        for (byte eachByte : bytesToConvert) {
-            builder.append(String.format("%02x", eachByte));
-        }
-        long num = Long.parseLong(builder.toString(), 16);
-        return num;
-    }
-
-    /**
-     * Creates a random number.
-     *
-     * @return random number
-     */
-    public static int createRandomNumber() {
-        Random rnd = new SecureRandom();
-        int randomNumber = 10000000 + rnd.nextInt(90000000);
-        return randomNumber;
-    }
-
-    /**
-     * Reads the LSA header from channel buffer.
-     *
-     * @param channelBuffer channel buffer instance
-     * @return LSA header instance.
-     */
-    public static LsaHeader readLsaHeader(ChannelBuffer channelBuffer) {
-        //add all the LSA Headers - one header is of 20 bytes
-        LsaHeader lsaHeader = null;
-        if (channelBuffer.readableBytes() >= OspfUtil.LSA_HEADER_LENGTH) {
-            byte[] byteArray = new byte[OspfUtil.FOUR_BYTES];
-            channelBuffer.readBytes(byteArray, 0, OspfUtil.FOUR_BYTES);
-            ChannelBuffer tempBuffer = ChannelBuffers.copiedBuffer(byteArray);
-            int lsType = byteArray[3];
-            if (lsType == OspfParameters.AREA_LOCAL_OPAQUE_LSA || lsType == OspfParameters.LINK_LOCAL_OPAQUE_LSA
-                    || lsType == OspfParameters.AS_OPAQUE_LSA) {
-                OpaqueLsaHeader header = new OpaqueLsaHeader();
-                header.setAge(tempBuffer.readShort());
-                header.setOptions(tempBuffer.readByte());
-                header.setLsType(tempBuffer.readByte());
-                header.setOpaqueType(channelBuffer.readByte());
-                header.setOpaqueId(channelBuffer.readUnsignedMedium());
-                byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-                channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-                header.setAdvertisingRouter(Ip4Address.valueOf(tempByteArray));
-                header.setLsSequenceNo(channelBuffer.readInt());
-                header.setLsCheckSum(channelBuffer.readUnsignedShort());
-                header.setLsPacketLen(channelBuffer.readShort());
-                byte[] opaqueIdBytes = OspfUtil.convertToTwoBytes(header.opaqueId());
-                header.setLinkStateId(header.opaqueType() + "." + "0" + "." +
-                                              opaqueIdBytes[0] + "." + opaqueIdBytes[1]);
-                lsaHeader = header;
-            } else {
-                LsaHeader header = new LsaHeader();
-                header.setAge(tempBuffer.readShort());
-                header.setOptions(tempBuffer.readByte());
-                header.setLsType(tempBuffer.readByte());
-                byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-                channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-                try {
-                    header.setLinkStateId(InetAddress.getByAddress(tempByteArray).getHostName());
-                } catch (UnknownHostException uhe) {
-                    log.warn("Can't look up host", uhe);
-                }
-                tempByteArray = new byte[OspfUtil.FOUR_BYTES];
-                channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES);
-                header.setAdvertisingRouter(Ip4Address.valueOf(tempByteArray));
-                header.setLsSequenceNo(channelBuffer.readInt());
-                header.setLsCheckSum(channelBuffer.readUnsignedShort());
-                header.setLsPacketLen(channelBuffer.readShort());
-                lsaHeader = header;
-            }
-        }
-        return lsaHeader;
-    }
-
-
-    /**
-     * Converts an integer to two bytes.
-     *
-     * @param numberToConvert number to convert
-     * @return given number as bytes
-     */
-    public static byte[] convertToTwoBytes(int numberToConvert) {
-
-        byte[] numInBytes = new byte[2];
-        String s1 = Integer.toHexString(numberToConvert);
-        if (s1.length() % 2 != 0) {
-            s1 = "0" + s1;
-        }
-        byte[] hexas = DatatypeConverter.parseHexBinary(s1);
-        if (hexas.length == 1) {
-            numInBytes[0] = 0;
-            numInBytes[1] = hexas[0];
-        } else {
-            numInBytes[0] = hexas[0];
-            numInBytes[1] = hexas[1];
-        }
-        return numInBytes;
-    }
-
-    /**
-     * Converts a number to three bytes.
-     *
-     * @param numberToConvert number to convert
-     * @return given number as bytes
-     */
-    public static byte[] convertToThreeBytes(int numberToConvert) {
-        byte[] numInBytes = new byte[3];
-        String s1 = Integer.toHexString(numberToConvert);
-        if (s1.length() % 2 != 0) {
-            s1 = "0" + s1;
-        }
-        byte[] hexas = DatatypeConverter.parseHexBinary(s1);
-        if (hexas.length == 1) {
-            numInBytes[0] = 0;
-            numInBytes[1] = 0;
-            numInBytes[2] = hexas[0];
-        } else if (hexas.length == 2) {
-            numInBytes[0] = 0;
-            numInBytes[1] = hexas[0];
-            numInBytes[2] = hexas[1];
-        } else {
-            numInBytes[0] = hexas[0];
-            numInBytes[1] = hexas[1];
-            numInBytes[2] = hexas[2];
-        }
-        return numInBytes;
-    }
-
-    /**
-     * Converts a number to four bytes.
-     *
-     * @param numberToConvert number to convert
-     * @return given number as bytes
-     */
-    public static byte[] convertToFourBytes(int numberToConvert) {
-
-        byte[] numInBytes = new byte[4];
-        String s1 = Integer.toHexString(numberToConvert);
-        if (s1.length() % 2 != 0) {
-            s1 = "0" + s1;
-        }
-        byte[] hexas = DatatypeConverter.parseHexBinary(s1);
-        if (hexas.length == 1) {
-            numInBytes[0] = 0;
-            numInBytes[1] = 0;
-            numInBytes[2] = 0;
-            numInBytes[3] = hexas[0];
-        } else if (hexas.length == 2) {
-            numInBytes[0] = 0;
-            numInBytes[1] = 0;
-            numInBytes[2] = hexas[0];
-            numInBytes[3] = hexas[1];
-        } else if (hexas.length == 3) {
-            numInBytes[0] = 0;
-            numInBytes[1] = hexas[0];
-            numInBytes[2] = hexas[1];
-            numInBytes[3] = hexas[2];
-        } else {
-            numInBytes[0] = hexas[0];
-            numInBytes[1] = hexas[1];
-            numInBytes[2] = hexas[2];
-            numInBytes[3] = hexas[3];
-        }
-        return numInBytes;
-    }
-
-    /**
-     * Converts a number to four bytes.
-     *
-     * @param numberToConvert number to convert
-     * @return given number as bytes
-     */
-    public static byte[] convertToFourBytes(long numberToConvert) {
-
-        byte[] numInBytes = new byte[4];
-        String s1 = Long.toHexString(numberToConvert);
-        if (s1.length() % 2 != 0) {
-            s1 = "0" + s1;
-        }
-        if (s1.length() == 16) {
-            s1 = s1.substring(8, s1.length());
-        }
-        byte[] hexas = DatatypeConverter.parseHexBinary(s1);
-        if (hexas.length == 1) {
-            numInBytes[0] = 0;
-            numInBytes[1] = 0;
-            numInBytes[2] = 0;
-            numInBytes[3] = hexas[0];
-        } else if (hexas.length == 2) {
-            numInBytes[0] = 0;
-            numInBytes[1] = 0;
-            numInBytes[2] = hexas[0];
-            numInBytes[3] = hexas[1];
-        } else if (hexas.length == 3) {
-            numInBytes[0] = 0;
-            numInBytes[1] = hexas[0];
-            numInBytes[2] = hexas[1];
-            numInBytes[3] = hexas[2];
-        } else {
-            numInBytes[0] = hexas[0];
-            numInBytes[1] = hexas[1];
-            numInBytes[2] = hexas[2];
-            numInBytes[3] = hexas[3];
-        }
-        return numInBytes;
-    }
-
-    /**
-     * Adds the checksum and length in packet.
-     *
-     * @param ospfPacket       ospf packet
-     * @param lengthBytePos1   length byte position
-     * @param lengthBytePos2   length byte position
-     * @param checksumBytePos1 checksum byte position
-     * @param checksumBytePos2 checksum byte position
-     * @return byte array with checksum and length
-     */
-    public static byte[] addLengthAndCheckSum(byte[] ospfPacket, int lengthBytePos1, int lengthBytePos2,
-                                              int checksumBytePos1, int checksumBytePos2) {
-        //Set the length of the packet
-        //Get the total length of the packet
-        int length = ospfPacket.length;
-        //Convert the lenth to two bytes as the length field is 2 bytes
-        byte[] lenthInTwoBytes = OspfUtil.convertToTwoBytes(length);
-        //ospf header 3rd and 4th position represents length
-        ospfPacket[lengthBytePos1] = lenthInTwoBytes[0]; //assign 1st byte in lengthBytePos1
-        ospfPacket[lengthBytePos2] = lenthInTwoBytes[1]; //assign 2st byte in lengthBytePos2
-
-        //Get the checksum as two bytes.
-        byte[] checkSumInTwoBytes = new ChecksumCalculator().calculateOspfCheckSum(ospfPacket,
-                                                                                   checksumBytePos1, checksumBytePos2);
-        ospfPacket[checksumBytePos1] = checkSumInTwoBytes[0]; //assign 1st byte in checksumBytePos1
-        ospfPacket[checksumBytePos2] = checkSumInTwoBytes[1]; //assign 2st byte in checksumBytePos2
-
-        return ospfPacket;
-    }
-
-    /**
-     * Adds metadata to ospf packet like whether to join multi cast group and destination IP.
-     *
-     * @param interfaceIndex   interface index
-     * @param ospfPacket       OSPF packet
-     * @param allDroutersValue whether to join multi cast or not
-     * @param destinationIp    destination ip address
-     * @return byte array
-     */
-    public static byte[] addMetadata(int interfaceIndex, byte[] ospfPacket, int allDroutersValue,
-                                     Ip4Address destinationIp) {
-        byte[] packet;
-        byte[] interfaceIndexByteVal = {(byte) interfaceIndex};
-        byte[] allDroutersByteVal = {(byte) allDroutersValue};
-        byte[] destIpAsBytes = destinationIp.toOctets();
-        byte[] metadata = Bytes.concat(interfaceIndexByteVal, allDroutersByteVal);
-        metadata = Bytes.concat(metadata, destIpAsBytes);
-        packet = Bytes.concat(ospfPacket, metadata);
-
-        return packet;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/package-info.java
deleted file mode 100644
index 28c19e0..0000000
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the ospf protocol utilities.
- */
-package org.onosproject.ospf.protocol.util;
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/LsaHeaderTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/LsaHeaderTest.java
deleted file mode 100644
index 065a2dfa..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/LsaHeaderTest.java
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfLsaType;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.*;
-
-/**
- * Unit test class for LsaHeader.
- */
-public class LsaHeaderTest {
-
-    private LsaHeader lsaHeader;
-    private int result;
-    private Ip4Address result1;
-    private long result2;
-    private OspfLsaType ospflsaType;
-    private LsaHeader header;
-    private byte[] result3;
-    private LsaHeader lsaHeader1;
-    private String result4;
-
-    @Before
-    public void setUp() throws Exception {
-        lsaHeader = new LsaHeader();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        lsaHeader = null;
-        result1 = null;
-        ospflsaType = null;
-        header = null;
-        result3 = null;
-        lsaHeader1 = null;
-    }
-
-    /**
-     * Tests equals() method.
-     */
-    @Test
-    public void testEquals() throws Exception {
-        assertThat(lsaHeader.equals(new LsaHeader()), is(true));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashCode() throws Exception {
-        result = lsaHeader.hashCode();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests age() getter method.
-     */
-    @Test
-    public void testGetAge() throws Exception {
-        lsaHeader.setAge(10);
-        result = lsaHeader.age();
-        assertThat(result, is(10));
-    }
-
-    /**
-     * Tests age() setter method.
-     */
-    @Test
-    public void testSetAge() throws Exception {
-        lsaHeader.setAge(10);
-        result = lsaHeader.age();
-        assertThat(result, is(10));
-    }
-
-    /**
-     * Tests options() getter method.
-     */
-    @Test
-    public void testGetOptions() throws Exception {
-        lsaHeader.setOptions(2);
-        result = lsaHeader.options();
-        assertThat(result, is(2));
-    }
-
-    /**
-     * Tests options() setter method.
-     */
-    @Test
-    public void testSetOptions() throws Exception {
-        lsaHeader.setOptions(2);
-        result = lsaHeader.options();
-        assertThat(result, is(2));
-    }
-
-    /**
-     * Tests lsType() getter method.
-     */
-    @Test
-    public void testGetLsType() throws Exception {
-        lsaHeader.setLsType(1);
-        result = lsaHeader.lsType();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests lsType() setter method.
-     */
-    @Test
-    public void testSetLsType() throws Exception {
-        lsaHeader.setLsType(1);
-        result = lsaHeader.lsType();
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests linkStateId() getter method.
-     */
-    @Test
-    public void testGetLinkStateId() throws Exception {
-        lsaHeader.setLinkStateId("10.226.165.164");
-        result4 = lsaHeader.linkStateId();
-        assertThat(result4, is("10.226.165.164"));
-    }
-
-    /**
-     * Tests linkStateId() setter method.
-     */
-    @Test
-    public void testSetLinkStateId() throws Exception {
-        lsaHeader.setLinkStateId("10.226.165.164");
-        result4 = lsaHeader.linkStateId();
-        assertThat(result4, is("10.226.165.164"));
-    }
-
-    /**
-     * Tests advertisingRouter() setter method.
-     */
-    @Test
-    public void testGetAdvertisingRouter() throws Exception {
-        lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("10.226.165.164"));
-        result1 = lsaHeader.advertisingRouter();
-        assertThat(result1, is(Ip4Address.valueOf("10.226.165.164")));
-    }
-
-    /**
-     * Tests advertisingRouter() setter method.
-     */
-    @Test
-    public void testSetAdvertisingRouter() throws Exception {
-        lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("10.226.165.164"));
-        result1 = lsaHeader.advertisingRouter();
-        assertThat(result1, is(Ip4Address.valueOf("10.226.165.164")));
-    }
-
-    /**
-     * Tests lsSequenceNo() getter method.
-     */
-    @Test
-    public void testGetLsSequenceNo() throws Exception {
-        lsaHeader.setLsSequenceNo(222);
-        result2 = lsaHeader.lsSequenceNo();
-        assertThat(result2, is(222L));
-    }
-
-    /**
-     * Tests lsSequenceNo() setter method.
-     */
-    @Test
-    public void testSetLsSequenceNo() throws Exception {
-        lsaHeader.setLsSequenceNo(222);
-        result2 = lsaHeader.lsSequenceNo();
-        assertThat(result2, is(222L));
-    }
-
-    /**
-     * Tests lsCheckSum() getter method.
-     */
-    @Test
-    public void testGetLsChecksum() throws Exception {
-        lsaHeader.setLsCheckSum(2);
-        result = lsaHeader.lsCheckSum();
-        assertThat(result, is(2));
-    }
-
-    /**
-     * Tests lsCheckSum() setter method.
-     */
-    @Test
-    public void testSetLsChecksum() throws Exception {
-        lsaHeader.setLsCheckSum(2);
-        result = lsaHeader.lsCheckSum();
-        assertThat(result, is(2));
-    }
-
-    /**
-     * Tests lsPacketLen() getter method.
-     */
-    @Test
-    public void testGetLsPacketLen() throws Exception {
-        lsaHeader.setLsPacketLen(48);
-        result = lsaHeader.lsPacketLen();
-        assertThat(result, is(48));
-    }
-
-    /**
-     * Tests lsPacketLen() getter method.
-     */
-    @Test
-    public void testSetLsPacketLen() throws Exception {
-        lsaHeader.setLsPacketLen(48);
-        result = lsaHeader.lsPacketLen();
-        assertThat(result, is(48));
-    }
-
-    /**
-     * Tests getOspfLsaType() getter method.
-     */
-    @Test
-    public void testGetOspfLsaType() throws Exception {
-        lsaHeader.setLsType(1);
-        ospflsaType = lsaHeader.getOspfLsaType();
-        assertThat(ospflsaType, is(notNullValue()));
-        assertThat(ospflsaType, is(OspfLsaType.ROUTER));
-        lsaHeader.setLsType(2);
-        ospflsaType = lsaHeader.getOspfLsaType();
-        assertThat(ospflsaType, is(notNullValue()));
-        assertThat(ospflsaType, is(OspfLsaType.NETWORK));
-        lsaHeader.setLsType(3);
-        ospflsaType = lsaHeader.getOspfLsaType();
-        assertThat(ospflsaType, is(notNullValue()));
-        assertThat(ospflsaType, is(OspfLsaType.SUMMARY));
-        lsaHeader.setLsType(4);
-        ospflsaType = lsaHeader.getOspfLsaType();
-        assertThat(ospflsaType, is(notNullValue()));
-        assertThat(ospflsaType, is(OspfLsaType.ASBR_SUMMARY));
-        lsaHeader.setLsType(5);
-        ospflsaType = lsaHeader.getOspfLsaType();
-        assertThat(ospflsaType, is(notNullValue()));
-        assertThat(ospflsaType, is(OspfLsaType.EXTERNAL_LSA));
-        lsaHeader.setLsType(6);
-        ospflsaType = lsaHeader.getOspfLsaType();
-        assertThat(ospflsaType, is(notNullValue()));
-        assertThat(ospflsaType, is(OspfLsaType.UNDEFINED));
-    }
-
-    /**
-     * Tests lsaHeader() getter method.
-     */
-    @Test
-    public void testGetLsaHeader() throws Exception {
-        header = (LsaHeader) lsaHeader.lsaHeader();
-        assertThat(header, instanceOf(LsaHeader.class));
-    }
-
-    /**
-     * Tests getLsaHeaderAsByteArray() method.
-     */
-    @Test
-    public void testGetLsaHeaderAsByteArray() throws Exception {
-        result3 = lsaHeader.getLsaHeaderAsByteArray();
-        assertThat(result3, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(lsaHeader.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests populateHeader() method.
-     */
-    @Test
-    public void testPopulateHeader() throws Exception {
-        lsaHeader1 = new LsaHeader();
-        lsaHeader1.setLsPacketLen(10);
-        lsaHeader1.setAdvertisingRouter(Ip4Address.valueOf("1.1.1.1"));
-        lsaHeader1.setOptions(2);
-        lsaHeader1.setAge(20);
-        lsaHeader1.setLsType(3);
-        lsaHeader1.setLinkStateId("2.2.2.2");
-        lsaHeader1.setLsCheckSum(1234);
-        lsaHeader1.setLsSequenceNo(456789);
-        lsaHeader.populateHeader(lsaHeader1);
-        assertThat(lsaHeader1, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/OpaqueLsaHeaderTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/OpaqueLsaHeaderTest.java
deleted file mode 100644
index f439af4..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/OpaqueLsaHeaderTest.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa;
-
-import org.hamcrest.Matchers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for OpaqueLsaHeader.
- */
-public class OpaqueLsaHeaderTest {
-
-    private OpaqueLsaHeader opaqueHeader;
-    private OpaqueLsaHeader opaqueLsaHeader1;
-    private int num;
-    private byte[] result;
-    private int result1;
-
-    @Before
-    public void setUp() throws Exception {
-        opaqueHeader = new OpaqueLsaHeader();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        opaqueHeader = null;
-        opaqueLsaHeader1 = null;
-        result = null;
-    }
-
-    /**
-     * Tests populateHeader() method.
-     */
-    @Test
-    public void testPopulateHeader() throws Exception {
-        opaqueLsaHeader1 = new OpaqueLsaHeader();
-        opaqueLsaHeader1.setLsPacketLen(10);
-        opaqueLsaHeader1.setAdvertisingRouter(Ip4Address.valueOf("1.1.1.1"));
-        opaqueLsaHeader1.setOptions(2);
-        opaqueLsaHeader1.setAge(20);
-        opaqueLsaHeader1.setLsType(3);
-        opaqueLsaHeader1.setOpaqueId(1);
-        opaqueLsaHeader1.setOpaqueType(3);
-        opaqueLsaHeader1.setLsCheckSum(1234);
-        opaqueLsaHeader1.setLsSequenceNo(456789);
-        opaqueLsaHeader1.populateHeader(opaqueLsaHeader1);
-        assertThat(opaqueLsaHeader1, is(notNullValue()));
-    }
-
-    /**
-     * Tests opaqueId() getter method.
-     */
-    @Test
-    public void testGetOpaqueId() throws Exception {
-        opaqueHeader.setOpaqueId(1);
-        num = opaqueHeader.opaqueId();
-        assertThat(num, is(1));
-    }
-
-    /**
-     * Tests opaqueId() setter method.
-     */
-    @Test
-    public void testSetOpaqueId() throws Exception {
-        opaqueHeader.setOpaqueId(1);
-        num = opaqueHeader.opaqueId();
-        assertThat(num, is(1));
-    }
-
-    /**
-     * Tests opaqueType() getter method.
-     */
-    @Test
-    public void testGetOpaqueType() throws Exception {
-        opaqueHeader.setOpaqueType(1);
-        num = opaqueHeader.opaqueType();
-        assertThat(num, is(1));
-    }
-
-    /**
-     * Tests opaqueType() setter method.
-     */
-    @Test
-    public void testSetOpaqueType() throws Exception {
-        opaqueHeader.setOpaqueType(1);
-        num = opaqueHeader.opaqueType();
-        assertThat(num, is(1));
-    }
-
-    /**
-     * Tests getOpaqueLsaHeaderAsByteArray() method.
-     */
-    @Test
-    public void testGetOpaqueLsaHeaderAsByteArray() throws Exception {
-        result = opaqueHeader.getOpaqueLsaHeaderAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(opaqueHeader.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashcode() throws Exception {
-
-        result1 = opaqueHeader.hashCode();
-        assertThat(result1, is(Matchers.notNullValue()));
-
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/TlvHeaderTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/TlvHeaderTest.java
deleted file mode 100644
index 0b232c3..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/TlvHeaderTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for Tlv Header.
- */
-public class TlvHeaderTest {
-
-    private TlvHeader tlvHeader;
-    private byte[] result;
-
-
-    @Before
-    public void setUp() throws Exception {
-        tlvHeader = new TlvHeader();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tlvHeader = null;
-        result = null;
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(tlvHeader.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests tlvLength() getter method.
-     */
-    @Test
-    public void testGetTlvLength() throws Exception {
-        tlvHeader.setTlvLength(2);
-        assertThat(tlvHeader.tlvLength(), is(2));
-    }
-
-    /**
-     * Tests tlvLength() setter method.
-     */
-    @Test
-    public void testSetTlvLength() throws Exception {
-        tlvHeader.setTlvLength(2);
-        assertThat(tlvHeader.tlvLength(), is(2));
-    }
-
-    /**
-     * Tests tlvType() getter method.
-     */
-    @Test
-    public void testGetTlvType() throws Exception {
-        tlvHeader.setTlvType(2);
-        assertThat(tlvHeader.tlvType(), is(2));
-    }
-
-    /**
-     * Tests tlvType() setter method.
-     */
-    @Test
-    public void testSetTlvType() throws Exception {
-        tlvHeader.setTlvType(2);
-        assertThat(tlvHeader.tlvType(), is(2));
-    }
-
-    /**
-     * Tests getTlvHeaderAsByteArray() method.
-     */
-    @Test
-    public void testGetTlvHeaderAsByteArray() throws Exception {
-        result = tlvHeader.getTlvHeaderAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/AdministrativeGroupTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/AdministrativeGroupTest.java
deleted file mode 100644
index 778588b..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/AdministrativeGroupTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for AdministrativeGroup.
- */
-public class AdministrativeGroupTest {
-
-    private final byte[] packet = {0, 0, 0, 1};
-    private AdministrativeGroup administrativeGroup;
-    private ChannelBuffer channelBuffer;
-    private TlvHeader tlvHeader;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        administrativeGroup = new AdministrativeGroup(new TlvHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        administrativeGroup = null;
-        channelBuffer = null;
-        tlvHeader = null;
-    }
-
-    /**
-     * Tests administrativeGroup() getter method.
-     */
-    @Test
-    public void testGetAdministrativeGroup() throws Exception {
-        administrativeGroup.setAdministrativeGroup(1);
-        assertThat(administrativeGroup.administrativeGroup(), is(1));
-    }
-
-    /**
-     * Tests administrativeGroup() setter method.
-     */
-    @Test
-    public void testSetAdministrativeGroup() throws Exception {
-        administrativeGroup.setAdministrativeGroup(1);
-        assertThat(administrativeGroup.administrativeGroup(), is(1));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(9);
-        tlvHeader.setTlvLength(4);
-        administrativeGroup = new AdministrativeGroup(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        administrativeGroup.readFrom(channelBuffer);
-        assertThat(administrativeGroup.administrativeGroup(), is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result = administrativeGroup.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-
-    /**
-     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
-        result = administrativeGroup.getLinkSubTypeTlvBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(administrativeGroup.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkIdTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkIdTest.java
deleted file mode 100644
index 718492f..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkIdTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for LinkId.
- */
-public class LinkIdTest {
-
-    private final byte[] packet = {1, 1, 1, 1};
-    private final byte[] packet1 = {0, 0, 1};
-    private LinkId linkId;
-    private TlvHeader tlvHeader;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        linkId = new LinkId(new TlvHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        linkId = null;
-        channelBuffer = null;
-        tlvHeader = null;
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(linkId.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests linkId() getter method.
-     */
-    @Test
-    public void testGetLinkId() throws Exception {
-        linkId.setLinkId("1.1.1.1");
-        assertThat(linkId, is(notNullValue()));
-    }
-
-    /**
-     * Tests linkId() setter method.
-     */
-    @Test
-    public void testSetLinkId() throws Exception {
-        linkId.setLinkId("1.1.1.1");
-        assertThat(linkId, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(2);
-        tlvHeader.setTlvLength(4);
-        linkId = new LinkId(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        linkId.readFrom(channelBuffer);
-        assertThat(linkId, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test(expected = Exception.class)
-    public void testReadFrom1() throws Exception {
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(2);
-        tlvHeader.setTlvLength(4);
-        linkId = new LinkId(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
-        linkId.readFrom(channelBuffer);
-        assertThat(linkId, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result = linkId.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
-        result = linkId.getLinkSubTypeTlvBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkTypeTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkTypeTest.java
deleted file mode 100644
index 727b0d1..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkTypeTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for LinkType.
- */
-public class LinkTypeTest {
-
-    private final byte[] packet = {0, 0, 0, 1};
-    private final byte[] packet1 = {0, 0, 1};
-    private LinkType linkType;
-    private byte[] result;
-    private ChannelBuffer channelBuffer;
-    private TlvHeader tlvHeader;
-
-    @Before
-    public void setUp() throws Exception {
-        linkType = new LinkType();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        linkType = null;
-        channelBuffer = null;
-        tlvHeader = null;
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(linkType.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests linkType() getter method.
-     */
-    @Test
-    public void testGetLinkType() throws Exception {
-        linkType.setLinkType(1);
-        assertThat(linkType, is(notNullValue()));
-    }
-
-    /**
-     * Tests linkType() setter method.
-     */
-    @Test
-    public void testSetLinkType() throws Exception {
-        linkType.setLinkType(1);
-        assertThat(linkType, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(1);
-        tlvHeader.setTlvLength(4);
-        linkType = new LinkType(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        linkType.readFrom(channelBuffer);
-        assertThat(linkType, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom1() throws Exception {
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(1);
-        tlvHeader.setTlvLength(4);
-        linkType = new LinkType(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
-        linkType.readFrom(channelBuffer);
-        assertThat(linkType, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result = linkType.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-
-    /**
-     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
-        result = linkType.getLinkSubTypeTlvBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LocalInterfaceIpAddressTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LocalInterfaceIpAddressTest.java
deleted file mode 100644
index 7e551ce..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LocalInterfaceIpAddressTest.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for LocalInterfaceIpAddress.
- */
-public class LocalInterfaceIpAddressTest {
-
-    private final byte[] packet = {1, 1, 1, 1};
-    private final byte[] packet1 = {};
-    private LocalInterfaceIpAddress localInterfaceIpAddress;
-    private TlvHeader tlvHeader;
-    private byte[] result;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        localInterfaceIpAddress = new LocalInterfaceIpAddress(new TlvHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        localInterfaceIpAddress = null;
-        tlvHeader = null;
-        result = null;
-        channelBuffer = null;
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(localInterfaceIpAddress.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests addLocalInterfaceIPAddress() method.
-     */
-    @Test
-    public void testAddLocalInterfaceIPAddress() throws Exception {
-        localInterfaceIpAddress.addLocalInterfaceIPAddress("1.1.1.1");
-        assertThat(localInterfaceIpAddress, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(3);
-        tlvHeader.setTlvLength(4);
-        localInterfaceIpAddress = new LocalInterfaceIpAddress(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        localInterfaceIpAddress.readFrom(channelBuffer);
-        assertThat(localInterfaceIpAddress, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom1() throws Exception {
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(3);
-        tlvHeader.setTlvLength(4);
-        localInterfaceIpAddress = new LocalInterfaceIpAddress(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
-        localInterfaceIpAddress.readFrom(channelBuffer);
-        assertThat(localInterfaceIpAddress, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result = localInterfaceIpAddress.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-
-    /**
-     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
-        result = localInterfaceIpAddress.getLinkSubTypeTlvBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-}
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumBandwidthTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumBandwidthTest.java
deleted file mode 100644
index 090988a..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumBandwidthTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for MaximumBandwidth.
- */
-public class MaximumBandwidthTest {
-
-    private final byte[] packet = {0, 0, 0, 0};
-    private MaximumBandwidth maximumBandwidth;
-    private TlvHeader header;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        maximumBandwidth = new MaximumBandwidth(new TlvHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        maximumBandwidth = null;
-        header = null;
-        channelBuffer = null;
-        result = null;
-    }
-
-    /**
-     * Tests maximumBandwidth() setter method.
-     */
-    @Test
-    public void testSetMaximumBandwidth() throws Exception {
-        maximumBandwidth.setMaximumBandwidth(123456.00f);
-        assertThat(maximumBandwidth, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        header = new TlvHeader();
-        header.setTlvType(6);
-        header.setTlvLength(4);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        maximumBandwidth = new MaximumBandwidth(header);
-        maximumBandwidth.readFrom(channelBuffer);
-        assertThat(maximumBandwidth, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result = maximumBandwidth.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(maximumBandwidth.toString(), is(notNullValue()));
-    }
-}
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumReservableBandwidthTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumReservableBandwidthTest.java
deleted file mode 100644
index e0a00ed..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumReservableBandwidthTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for MaximumReservableBandwidth.
- */
-public class MaximumReservableBandwidthTest {
-
-    private final byte[] packet = {0, 0, 0, 0};
-    private MaximumReservableBandwidth maximumReservableBandwidth;
-    private TlvHeader header;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        maximumReservableBandwidth = new MaximumReservableBandwidth(new TlvHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        maximumReservableBandwidth = null;
-        header = null;
-        channelBuffer = null;
-        result = null;
-    }
-
-
-    /**
-     * Tests maximumBandwidth() setter method.
-     */
-    @Test
-    public void testSetMaximumBandwidth() throws Exception {
-        maximumReservableBandwidth.setMaximumBandwidth(123456.78f);
-        assertThat(maximumReservableBandwidth, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        header = new TlvHeader();
-        header.setTlvType(6);
-        header.setTlvLength(4);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        maximumReservableBandwidth = new MaximumReservableBandwidth(header);
-        maximumReservableBandwidth.readFrom(channelBuffer);
-        assertThat(maximumReservableBandwidth, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result = maximumReservableBandwidth.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-
-    /**
-     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
-        result = maximumReservableBandwidth.getLinksubTypeTlvBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(maximumReservableBandwidth.toString(), is(notNullValue()));
-    }
-}
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/RemoteInterfaceIpAddressTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/RemoteInterfaceIpAddressTest.java
deleted file mode 100644
index b534f5e..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/RemoteInterfaceIpAddressTest.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-
-/**
- * Unit test class for RemoteInterfaceIpAddress.
- */
-public class RemoteInterfaceIpAddressTest {
-
-    private final byte[] packet = {1, 1, 1, 1};
-    private final byte[] packet1 = {};
-    private byte[] result;
-    private TlvHeader tlvHeader;
-    private RemoteInterfaceIpAddress remoteInterfaceIpAddress;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        remoteInterfaceIpAddress = new RemoteInterfaceIpAddress(new TlvHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        remoteInterfaceIpAddress = null;
-        result = null;
-        tlvHeader = null;
-        channelBuffer = null;
-    }
-
-    /**
-     * Tests addRemoteInterfaceAddress() method.
-     */
-    @Test
-    public void testAddRemoteInterfaceIpAddress() throws Exception {
-        remoteInterfaceIpAddress.addRemoteInterfaceAddress("1.1.1.1");
-        assertThat(remoteInterfaceIpAddress, is(notNullValue()));
-    }
-
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(4);
-        tlvHeader.setTlvLength(4);
-        remoteInterfaceIpAddress = new RemoteInterfaceIpAddress(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        remoteInterfaceIpAddress.readFrom(channelBuffer);
-        assertThat(remoteInterfaceIpAddress, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom1() throws Exception {
-        tlvHeader = new TlvHeader();
-        tlvHeader.setTlvType(4);
-        tlvHeader.setTlvLength(4);
-        remoteInterfaceIpAddress = new RemoteInterfaceIpAddress(tlvHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
-        remoteInterfaceIpAddress.readFrom(channelBuffer);
-        assertThat(remoteInterfaceIpAddress, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result = remoteInterfaceIpAddress.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-
-    /**
-     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
-        result = remoteInterfaceIpAddress.getLinkSubTypeTlvBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(remoteInterfaceIpAddress.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/TrafficEngineeringMetricTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/TrafficEngineeringMetricTest.java
deleted file mode 100644
index 078ef4e..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/TrafficEngineeringMetricTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for TrafficEngineeringMetric.
- */
-public class TrafficEngineeringMetricTest {
-
-    private final byte[] packet = {0, 0, 1, 1};
-    private TrafficEngineeringMetric trafficEngineeringMetric;
-    private TlvHeader header;
-    private byte[] result;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        trafficEngineeringMetric = new TrafficEngineeringMetric(new TlvHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        trafficEngineeringMetric = null;
-        header = null;
-        result = null;
-        channelBuffer = null;
-    }
-
-
-    /**
-     * Tests trafficEngineeringMetric() setter method.
-     */
-    @Test
-    public void testSetTrafficEngineeringMetric() throws Exception {
-        trafficEngineeringMetric.setTrafficEngineeringMetric(123456789L);
-        assertThat(trafficEngineeringMetric, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        header = new TlvHeader();
-        header.setTlvLength(4);
-        header.setTlvType(5);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        trafficEngineeringMetric = new TrafficEngineeringMetric(header);
-        trafficEngineeringMetric.readFrom(channelBuffer);
-        assertThat(trafficEngineeringMetric, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result = trafficEngineeringMetric.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-
-    /**
-     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
-        result = trafficEngineeringMetric.getLinkSubTypeTlvBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(trafficEngineeringMetric.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnknownLinkSubTypeTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnknownLinkSubTypeTest.java
deleted file mode 100644
index 7ff01de..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnknownLinkSubTypeTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for UnknownLinkSubType.
- */
-public class UnknownLinkSubTypeTest {
-    private final byte[] packet = {0, 114, 0, 4, 0, 0, 0, 1};
-    private UnknownLinkSubType unknownLinkSubType;
-    private TlvHeader header;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        unknownLinkSubType = new UnknownLinkSubType(new TlvHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        unknownLinkSubType = null;
-        header = null;
-    }
-
-    /**
-     * Tests value() getter method.
-     */
-    @Test
-    public void testValue() throws Exception {
-        unknownLinkSubType.setValue(packet);
-        assertThat(unknownLinkSubType.value(), is(notNullValue()));
-    }
-
-    /**
-     * Tests value() setter method.
-     */
-    @Test
-    public void testSetValue() throws Exception {
-        unknownLinkSubType.setValue(packet);
-        assertThat(unknownLinkSubType.value(), is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        header = new TlvHeader();
-        header.setTlvLength(8);
-        header.setTlvType(114);
-        unknownLinkSubType = new UnknownLinkSubType(header);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        unknownLinkSubType.readFrom(channelBuffer);
-        assertThat(unknownLinkSubType, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test(expected = Exception.class)
-    public void testAsBytes() throws Exception {
-        result = unknownLinkSubType.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-
-    /**
-     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        unknownLinkSubType.readFrom(channelBuffer);
-        result = unknownLinkSubType.getLinkSubTypeTlvBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(unknownLinkSubType.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnreservedBandwidthTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnreservedBandwidthTest.java
deleted file mode 100644
index 9287546..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnreservedBandwidthTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.linksubtype;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for OspfRouterId.
- */
-public class UnreservedBandwidthTest {
-
-    private final byte[] packet = {0, 0, 0, 1};
-    private UnreservedBandwidth unreservedBandwidth;
-    private TlvHeader header;
-    private byte[] result;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        unreservedBandwidth = new UnreservedBandwidth(new TlvHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        unreservedBandwidth = null;
-        header = null;
-        result = null;
-        channelBuffer = null;
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(unreservedBandwidth.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests addUnReservedBandwidth() method.
-     */
-    @Test
-    public void testAddUnReservedBandwidth() throws Exception {
-        unreservedBandwidth.addUnReservedBandwidth(123456.78f);
-        assertThat(unreservedBandwidth, is(notNullValue()));
-    }
-
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        header = new TlvHeader();
-        header.setTlvLength(4);
-        header.setTlvType(8);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        unreservedBandwidth = new UnreservedBandwidth(header);
-        unreservedBandwidth.readFrom(channelBuffer);
-        unreservedBandwidth.readFrom(channelBuffer);
-        assertThat(unreservedBandwidth, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result = unreservedBandwidth.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-
-    /**
-     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
-        result = unreservedBandwidth.getLinkSubTypeTlvBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfExternalDestinationTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfExternalDestinationTest.java
deleted file mode 100644
index 30e393dd..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfExternalDestinationTest.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.subtypes;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for OspfRouterId.
- */
-public class OspfExternalDestinationTest {
-
-    private static final Ip4Address LOCAL_ADDRESS = Ip4Address.valueOf("127.0.0.1");
-
-    private OspfExternalDestination ospfExternalDestination;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfExternalDestination = new OspfExternalDestination();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfExternalDestination = null;
-    }
-
-    /**
-     * Tests isType1orType2Metric() getter method.
-     */
-    @Test
-    public void testIsType1orType2Metric() throws Exception {
-        ospfExternalDestination.setType1orType2Metric(true);
-        assertThat(ospfExternalDestination.isType1orType2Metric(), is(true));
-    }
-
-    /**
-     * Tests isType1orType2Metric() setter method.
-     */
-    @Test
-    public void testSetType1orType2Metric() throws Exception {
-        ospfExternalDestination.setType1orType2Metric(true);
-        assertThat(ospfExternalDestination.isType1orType2Metric(), is(true));
-    }
-
-    /**
-     * Tests metric() getter method.
-     */
-    @Test
-    public void testGetMetric() throws Exception {
-        ospfExternalDestination.setMetric(100);
-        assertThat(ospfExternalDestination.metric(), is(100));
-    }
-
-    /**
-     * Tests metric() setter method.
-     */
-    @Test
-    public void testSetMetric() throws Exception {
-        ospfExternalDestination.setMetric(100);
-        assertThat(ospfExternalDestination.metric(), is(100));
-    }
-
-    /**
-     * Tests forwardingAddress() getter method.
-     */
-    @Test
-    public void testGetForwardingAddress() throws Exception {
-        ospfExternalDestination.setForwardingAddress(LOCAL_ADDRESS);
-        assertThat(ospfExternalDestination.forwardingAddress(), is(LOCAL_ADDRESS));
-
-    }
-
-    /**
-     * Tests forwardingAddress() setter method.
-     */
-    @Test
-    public void testSetForwardingAddress() throws Exception {
-        ospfExternalDestination.setForwardingAddress(LOCAL_ADDRESS);
-        assertThat(ospfExternalDestination.forwardingAddress(), is(LOCAL_ADDRESS));
-    }
-
-    /**
-     * Tests externalRouterTag() getter method.
-     */
-    @Test
-    public void testGetExternalRouterTag() throws Exception {
-        ospfExternalDestination.setExternalRouterTag(100);
-        assertThat(ospfExternalDestination.externalRouterTag(), is(100));
-    }
-
-    /**
-     * Tests externalRouterTag() setter method.
-     */
-    @Test
-    public void testSetExternalRouterTag() throws Exception {
-        ospfExternalDestination.setExternalRouterTag(100);
-        assertThat(ospfExternalDestination.externalRouterTag(), is(100));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(ospfExternalDestination.toString(), is(notNullValue()));
-    }
-}
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfLsaLinkTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfLsaLinkTest.java
deleted file mode 100644
index a129ed0..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfLsaLinkTest.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.subtypes;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for OspfLsaLink.
- */
-public class OspfLsaLinkTest {
-
-    private OspfLsaLink ospfLsaLink;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfLsaLink = new OspfLsaLink();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfLsaLink = null;
-    }
-
-    /**
-     * Tests linkId() getter method.
-     */
-    @Test
-    public void testGetLinkID() throws Exception {
-        ospfLsaLink.setLinkId("1.1.1.1");
-        assertThat(ospfLsaLink.linkId(), is("1.1.1.1"));
-    }
-
-    /**
-     * Tests linkId() setter method.
-     */
-    @Test
-    public void testSetLinkID() throws Exception {
-        ospfLsaLink.setLinkId("1.1.1.1");
-        assertThat(ospfLsaLink.linkId(), is("1.1.1.1"));
-    }
-
-    /**
-     * Tests linkData() getter method.
-     */
-    @Test
-    public void testGetLinkData() throws Exception {
-        ospfLsaLink.setLinkData("1.1.1.1");
-        assertThat(ospfLsaLink.linkData(), is("1.1.1.1"));
-    }
-
-    /**
-     * Tests linkData() setter method.
-     */
-    @Test
-    public void testSetLinkData() throws Exception {
-        ospfLsaLink.setLinkData("1.1.1.1");
-        assertThat(ospfLsaLink.linkData(), is("1.1.1.1"));
-    }
-
-    /**
-     * Tests linkType() getter method.
-     */
-    @Test
-    public void testGetLinkType() throws Exception {
-        ospfLsaLink.setLinkType(1);
-        assertThat(ospfLsaLink.linkType(), is(1));
-    }
-
-    /**
-     * Tests linkType() setter method.
-     */
-    @Test
-    public void testSetLinkType() throws Exception {
-        ospfLsaLink.setLinkType(1);
-        assertThat(ospfLsaLink.linkType(), is(1));
-    }
-
-    /**
-     * Tests metric() getter method.
-     */
-    @Test
-    public void testGetMetric() throws Exception {
-        ospfLsaLink.setMetric(100);
-        assertThat(ospfLsaLink.metric(), is(100));
-    }
-
-    /**
-     * Tests metric() setter method.
-     */
-    @Test
-    public void testSetMetric() throws Exception {
-        ospfLsaLink.setMetric(100);
-        assertThat(ospfLsaLink.metric(), is(100));
-    }
-
-    /**
-     * Tests tos() getter method.
-     */
-    @Test
-    public void testGetTos() throws Exception {
-        ospfLsaLink.setTos(100);
-        assertThat(ospfLsaLink.tos(), is(100));
-    }
-
-    /**
-     * Tests tos() setter method.
-     */
-    @Test
-    public void testSetTos() throws Exception {
-        ospfLsaLink.setTos(100);
-        assertThat(ospfLsaLink.tos(), is(100));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(ospfLsaLink.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/tlvtypes/LinkTlvTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/tlvtypes/LinkTlvTest.java
deleted file mode 100644
index b28e7e0..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/tlvtypes/LinkTlvTest.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.tlvtypes;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.*;
-
-/**
- * Unit test class for LinkTlv.
- */
-public class LinkTlvTest {
-
-    private final byte[] packet1 = {0, 9, 0, 4, 0, 0, 0, 1};
-    private final byte[] packet2 = {0, 1, 0, 4, 0, 0, 0, 1};
-    private final byte[] packet3 = {0, 2, 0, 4, 0, 0, 0, 1};
-    private final byte[] packet4 = {0, 3, 0, 4, 0, 0, 0, 1};
-    private final byte[] packet5 = {0, 4, 0, 4, 0, 0, 0, 1};
-    private final byte[] packet6 = {0, 6, 0, 4, 0, 0, 0, 1};
-    private final byte[] packet7 = {0, 7, 0, 4, 0, 0, 0, 1};
-    private final byte[] packet8 = {0, 8, 0, 4, 0, 0, 0, 1};
-    private final byte[] packet9 = {0, 9, 0, 4, 0, 0, 0, 1,
-            0, 9, 0, 4, 0, 0, 0, 1,
-            0, 1, 0, 4, 0, 0, 0, 1,
-            0, 2, 0, 4, 0, 0, 0, 1,
-            0, 3, 0, 4, 0, 0, 0, 1,
-            0, 4, 0, 4, 0, 0, 0, 1,
-            0, 6, 0, 4, 0, 0, 0, 1,
-            0, 7, 0, 4, 0, 0, 0, 1,
-            0, 8, 0, 4, 0, 0, 0, 1,
-    };
-    private LinkTlv linkTlv;
-    private TlvHeader header;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        linkTlv = new LinkTlv(new TlvHeader());
-
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        linkTlv = null;
-        header = null;
-        channelBuffer = null;
-        result = null;
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(linkTlv.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-
-        header = new TlvHeader();
-        header.setTlvLength(8);
-        header.setTlvType(9);
-        linkTlv = new LinkTlv(header);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
-        linkTlv.readFrom(channelBuffer);
-        assertThat(linkTlv, is(notNullValue()));
-
-        header = new TlvHeader();
-        header.setTlvLength(8);
-        header.setTlvType(1);
-        linkTlv = new LinkTlv(header);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet2);
-        linkTlv.readFrom(channelBuffer);
-        assertThat(linkTlv, is(notNullValue()));
-
-        header = new TlvHeader();
-        header.setTlvLength(8);
-        header.setTlvType(2);
-        linkTlv = new LinkTlv(header);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet3);
-        linkTlv.readFrom(channelBuffer);
-        assertThat(linkTlv, is(notNullValue()));
-
-        header = new TlvHeader();
-        header.setTlvLength(8);
-        header.setTlvType(3);
-        linkTlv = new LinkTlv(header);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet4);
-        linkTlv.readFrom(channelBuffer);
-        assertThat(linkTlv, is(notNullValue()));
-
-        header = new TlvHeader();
-        header.setTlvLength(8);
-        header.setTlvType(4);
-        linkTlv = new LinkTlv(header);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet5);
-        linkTlv.readFrom(channelBuffer);
-        assertThat(linkTlv, is(notNullValue()));
-
-        header = new TlvHeader();
-        header.setTlvLength(8);
-        header.setTlvType(5);
-        linkTlv = new LinkTlv(header);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
-        linkTlv.readFrom(channelBuffer);
-        assertThat(linkTlv, is(notNullValue()));
-
-        header = new TlvHeader();
-        header.setTlvLength(8);
-        header.setTlvType(6);
-        linkTlv = new LinkTlv(header);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet6);
-        linkTlv.readFrom(channelBuffer);
-        assertThat(linkTlv, is(notNullValue()));
-
-        header = new TlvHeader();
-        header.setTlvLength(8);
-        header.setTlvType(7);
-        linkTlv = new LinkTlv(header);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet7);
-        linkTlv.readFrom(channelBuffer);
-        assertThat(linkTlv, is(notNullValue()));
-
-        header = new TlvHeader();
-        header.setTlvLength(8);
-        header.setTlvType(8);
-        linkTlv = new LinkTlv(header);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet8);
-        linkTlv.readFrom(channelBuffer);
-        assertThat(linkTlv, is(notNullValue()));
-        assertThat(linkTlv, instanceOf(LinkTlv.class));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result = linkTlv.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-
-    /**
-     * Tests getTlvBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetTlvBodyAsByteArray() throws Exception {
-
-        channelBuffer = ChannelBuffers.copiedBuffer(packet9);
-        linkTlv.readFrom(channelBuffer);
-
-        result = linkTlv.getTlvBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/tlvtypes/RouterTlvTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/tlvtypes/RouterTlvTest.java
deleted file mode 100644
index 8a250c9..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/tlvtypes/RouterTlvTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.tlvtypes;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.*;
-
-/**
- * Unit test class for RouterTlv.
- */
-public class RouterTlvTest {
-
-    private final byte[] packet = {1, 1, 1, 1};
-    private final byte[] packet1 = {1, 1, 1};
-    private RouterTlv rtlv;
-    private TlvHeader header;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        rtlv = new RouterTlv(new TlvHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        rtlv = null;
-        header = null;
-        channelBuffer = null;
-        result = null;
-    }
-
-    /**
-     * Tests routerAddress() getter method.
-     */
-    @Test
-    public void testGetRouterAddress() throws Exception {
-        rtlv.setRouterAddress(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(rtlv.routerAddress(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests routerAddress() setter method.
-     */
-    @Test
-    public void testSetRouterAddress() throws Exception {
-        rtlv.setRouterAddress(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(rtlv.routerAddress(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        header = new TlvHeader();
-        header.setTlvType(1);
-        header.setTlvLength(4);
-        rtlv = new RouterTlv(header);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        rtlv.readFrom(channelBuffer);
-        assertThat(rtlv, is(notNullValue()));
-        assertThat(rtlv, instanceOf(RouterTlv.class));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test(expected = Exception.class)
-    public void testReadFrom1() throws Exception {
-        header = new TlvHeader();
-        header.setTlvType(1);
-        header.setTlvLength(4);
-        rtlv = new RouterTlv(header);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
-        rtlv.readFrom(channelBuffer);
-        assertThat(rtlv, is(notNullValue()));
-        assertThat(rtlv, instanceOf(RouterTlv.class));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test(expected = Exception.class)
-    public void testAsBytes() throws Exception {
-        result = rtlv.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests getTlvBodyAsByteArray() method.
-     */
-    @Test(expected = Exception.class)
-    public void testGetTlvBodyAsByteArray() throws Exception {
-        result = rtlv.getTlvBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(rtlv.toString(), is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/AsbrSummaryLsaTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/AsbrSummaryLsaTest.java
deleted file mode 100644
index 5bf7d01..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/AsbrSummaryLsaTest.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for AsbrSummaryLsa.
- */
-public class AsbrSummaryLsaTest {
-
-    private final Ip4Address ipAddress = Ip4Address.valueOf("10.226.165.164");
-    private AsbrSummaryLsa asbrSummaryLsa;
-    private Ip4Address result;
-    private int result1;
-    private int num;
-    private byte[] inputByteArray;
-    private byte[] result2;
-    private ChannelBuffer channelBuffer;
-    private LsaHeader lsaHeader;
-    private OspfLsaType ospflsaType;
-    private String result3;
-    private boolean result4;
-
-    @Before
-    public void setUp() throws Exception {
-        asbrSummaryLsa = new AsbrSummaryLsa(new LsaHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        asbrSummaryLsa = null;
-    }
-
-    /**
-     * Tests networkMask() getter method.
-     */
-    @Test
-    public void testGetNetworkMask() throws Exception {
-        asbrSummaryLsa.setNetworkMask(ipAddress);
-        result = asbrSummaryLsa.networkMask();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(ipAddress));
-    }
-
-    /**
-     * Tests networkMask() setter method.
-     */
-    @Test
-    public void testSetNetworkMask() throws Exception {
-        asbrSummaryLsa.setNetworkMask(ipAddress);
-        result = asbrSummaryLsa.networkMask();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(ipAddress));
-    }
-
-    /**
-     * Tests metric() getter method.
-     */
-    @Test
-    public void testGetMetric() throws Exception {
-        num = 10;
-        asbrSummaryLsa.setMetric(num);
-        result1 = asbrSummaryLsa.metric();
-        assertThat(result1, is(notNullValue()));
-        assertThat(result1, is(num));
-    }
-
-    /**
-     * Tests metric() setter method.
-     */
-    @Test
-    public void testSetMetric() throws Exception {
-        num = 20;
-        asbrSummaryLsa.setMetric(num);
-        result1 = asbrSummaryLsa.metric();
-        assertThat(result1, is(notNullValue()));
-        assertThat(result1, is(num));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        inputByteArray = createByteForNetworkLsa();
-        lsaHeader = createLsaHeader();
-        asbrSummaryLsa = new AsbrSummaryLsa(lsaHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(inputByteArray);
-        asbrSummaryLsa.readFrom(channelBuffer);
-        assertThat(asbrSummaryLsa, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test(expected = Exception.class)
-    public void testReadFrom1() throws Exception {
-        byte[] temp = {0, 1, 2, 3};
-        inputByteArray = temp;
-        lsaHeader = createLsaHeader();
-        asbrSummaryLsa = new AsbrSummaryLsa(lsaHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(inputByteArray);
-        asbrSummaryLsa.readFrom(channelBuffer);
-        assertThat(asbrSummaryLsa, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test(expected = Exception.class)
-    public void testAsBytes() throws Exception {
-        result2 = asbrSummaryLsa.asBytes();
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsaBodyAsByteArray() method.
-     */
-    @Test(expected = Exception.class)
-    public void testGetLsaBodyAsByteArray() throws Exception {
-        result2 = asbrSummaryLsa.getLsaBodyAsByteArray();
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests ospfLsaType() getter method.
-     */
-    @Test
-    public void testGetOspfLsaType() throws Exception {
-
-        ospflsaType = asbrSummaryLsa.getOspfLsaType();
-        assertThat(ospflsaType, is(notNullValue()));
-        assertThat(ospflsaType, is(OspfLsaType.ASBR_SUMMARY));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-
-        result3 = asbrSummaryLsa.toString();
-        assertThat(result3, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests hashcode() method.
-     */
-    @Test
-    public void testHashcode() throws Exception {
-
-        result1 = asbrSummaryLsa.hashCode();
-        assertThat(result1, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests equals() method.
-     */
-    @Test
-    public void testEqual() throws Exception {
-
-        result4 = asbrSummaryLsa.equals(new AsbrSummaryLsa(new LsaHeader()));
-        assertThat(result4, is(true));
-
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private byte[] createByteForNetworkLsa() {
-        byte[] packet = {2, 1, 1, 52, -64, -88, 56, 1, -64, -88, 56, 1, 0, 100, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, -64,
-                -88, 56, 1, 0, 10, 1, 1, 0, 0, 0, 40, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56,
-                1};
-        return packet;
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private LsaHeader createLsaHeader() {
-        lsaHeader = new LsaHeader();
-        lsaHeader.setLsType(1);
-        lsaHeader.setLsPacketLen(48);
-        lsaHeader.setLsCheckSum(10);
-        lsaHeader.setAge(4);
-        lsaHeader.setLinkStateId("10.226.165.164");
-        lsaHeader.setLsSequenceNo(250);
-        lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        lsaHeader.setOptions(2);
-        return lsaHeader;
-    }
-}
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/ExternalLsaTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/ExternalLsaTest.java
deleted file mode 100644
index d5a4256..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/ExternalLsaTest.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.subtypes.OspfExternalDestination;
-
-import java.net.UnknownHostException;
-import java.util.Vector;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for ExternalLsa.
- */
-public class ExternalLsaTest {
-
-    private static final Ip4Address LOCAL_ADDRESS = Ip4Address.valueOf("127.0.0.1");
-
-    private ExternalLsa externalLsa;
-    private Vector<OspfExternalDestination> externalDestinations = new Vector<OspfExternalDestination>();
-    private Ip4Address result;
-    private OspfExternalDestination ospfExternalDestination;
-    private OspfExternalDestination ospfExternalDestination1;
-    private LsaHeader lsaHeader;
-    private byte[] inputByteArray;
-    private ChannelBuffer channelBuffer;
-    private byte[] result1;
-    private OspfLsaType ospflsaType;
-    private int result2;
-
-    @Before
-    public void setUp() throws Exception {
-        externalLsa = new ExternalLsa(new LsaHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        externalLsa = null;
-        externalDestinations = null;
-        result = null;
-        ospfExternalDestination = null;
-        ospfExternalDestination1 = null;
-        lsaHeader = null;
-        inputByteArray = null;
-        channelBuffer = null;
-        result1 = null;
-        ospflsaType = null;
-    }
-
-    /**
-     * Tests networkMask() getter method.
-     */
-    @Test
-    public void testGetNetworkMask() throws Exception {
-        externalLsa.setNetworkMask(Ip4Address.valueOf("10.226.165.164"));
-        result = externalLsa.networkMask();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(Ip4Address.valueOf("10.226.165.164")));
-    }
-
-    /**
-     * Tests networkMask() setter method.
-     */
-    @Test
-    public void testSetNetworkMask() throws Exception {
-        externalLsa.setNetworkMask(Ip4Address.valueOf("10.226.165.164"));
-        result = externalLsa.networkMask();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(Ip4Address.valueOf("10.226.165.164")));
-    }
-
-    /**
-     * Tests addExternalDesitnation() method.
-     */
-    @Test
-    public void testAddExternalDesitnation() throws Exception {
-        externalLsa.addExternalDestination(createOspfExternalDestination());
-        assertThat(externalLsa, is(notNullValue()));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashcode() throws Exception {
-
-        result2 = externalLsa.hashCode();
-        assertThat(result2, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        ospfExternalDestination = new OspfExternalDestination();
-        ospfExternalDestination.setExternalRouterTag(2);
-        ospfExternalDestination.setMetric(100);
-        ospfExternalDestination.setType1orType2Metric(true);
-        externalLsa.addExternalDestination(ospfExternalDestination);
-        ospfExternalDestination1 = new OspfExternalDestination();
-        ospfExternalDestination.setExternalRouterTag(3);
-        ospfExternalDestination.setMetric(50);
-        ospfExternalDestination.setType1orType2Metric(true);
-        externalLsa.addExternalDestination(ospfExternalDestination1);
-        ospfExternalDestination.setForwardingAddress(LOCAL_ADDRESS);
-        inputByteArray = createByteForNetworkLsa();
-        lsaHeader = createLsaHeader();
-        externalLsa = new ExternalLsa(lsaHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(inputByteArray);
-        externalLsa.readFrom(channelBuffer);
-        assertThat(externalLsa, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test(expected = Exception.class)
-    public void testReadFrom1() throws Exception {
-        ospfExternalDestination = new OspfExternalDestination();
-        ospfExternalDestination.setExternalRouterTag(2);
-        ospfExternalDestination.setMetric(100);
-        ospfExternalDestination.setType1orType2Metric(true);
-        externalLsa.addExternalDestination(ospfExternalDestination);
-        ospfExternalDestination1 = new OspfExternalDestination();
-        ospfExternalDestination.setExternalRouterTag(3);
-        ospfExternalDestination.setMetric(50);
-        ospfExternalDestination.setType1orType2Metric(true);
-        externalLsa.addExternalDestination(ospfExternalDestination1);
-        ospfExternalDestination.setForwardingAddress(LOCAL_ADDRESS);
-        byte[] temp = {0, 0, 0};
-        inputByteArray = temp;
-        lsaHeader = createLsaHeader();
-        externalLsa = new ExternalLsa(lsaHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(inputByteArray);
-        externalLsa.readFrom(channelBuffer);
-        assertThat(externalLsa, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result1 = externalLsa.asBytes();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsaBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLsaBodyAsByteArray() throws Exception {
-        ospfExternalDestination = new OspfExternalDestination();
-        ospfExternalDestination.setExternalRouterTag(2);
-        ospfExternalDestination.setMetric(100);
-        ospfExternalDestination.setType1orType2Metric(true);
-        externalLsa.addExternalDestination(ospfExternalDestination);
-        ospfExternalDestination1 = new OspfExternalDestination();
-        ospfExternalDestination.setExternalRouterTag(3);
-        ospfExternalDestination.setMetric(100);
-        ospfExternalDestination.setType1orType2Metric(true);
-        externalLsa.addExternalDestination(ospfExternalDestination1);
-        result1 = externalLsa.getLsaBodyAsByteArray();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsaBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLsaBodyAsByteArray1() throws Exception {
-        externalLsa.setNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        ospfExternalDestination = new OspfExternalDestination();
-        ospfExternalDestination.setExternalRouterTag(2);
-        ospfExternalDestination.setMetric(100);
-        ospfExternalDestination.setType1orType2Metric(true);
-        externalLsa.addExternalDestination(ospfExternalDestination);
-        ospfExternalDestination1 = new OspfExternalDestination();
-        ospfExternalDestination.setExternalRouterTag(3);
-        ospfExternalDestination.setMetric(100);
-        ospfExternalDestination.setType1orType2Metric(true);
-        externalLsa.addExternalDestination(ospfExternalDestination1);
-        result1 = externalLsa.getLsaBodyAsByteArray();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests getOspfLsaType() getter method.
-     */
-    @Test
-    public void testGetOspfLsaType() throws Exception {
-        ospflsaType = externalLsa.getOspfLsaType();
-        assertThat(ospflsaType, is(notNullValue()));
-        assertThat(ospflsaType, is(OspfLsaType.EXTERNAL_LSA));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(externalLsa.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private byte[] createByteForNetworkLsa() {
-        byte[] packet = {2, 1, 1, 52, -64, -88, 56, 1, -64, -88, 56, 1, 0, 100, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, -64,
-                -88, 56, 1, 0, 10, 1, 1, 0, 0, 0, 40, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56,
-                1};
-        return packet;
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private LsaHeader createLsaHeader() {
-        lsaHeader = new LsaHeader();
-        lsaHeader.setLsType(1);
-        lsaHeader.setLsPacketLen(48);
-        lsaHeader.setLsCheckSum(10);
-        lsaHeader.setAge(4);
-        lsaHeader.setLinkStateId("10.226.165.164");
-        lsaHeader.setLsSequenceNo(250);
-        lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        lsaHeader.setOptions(2);
-        return lsaHeader;
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private OspfExternalDestination createOspfExternalDestination() throws UnknownHostException {
-        ospfExternalDestination = new OspfExternalDestination();
-        ospfExternalDestination.setExternalRouterTag(1);
-        ospfExternalDestination.setMetric(10);
-        ospfExternalDestination.setType1orType2Metric(true);
-        ospfExternalDestination.setForwardingAddress(LOCAL_ADDRESS);
-        return ospfExternalDestination;
-    }
-}
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/NetworkLsaTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/NetworkLsaTest.java
deleted file mode 100644
index 7924cd3..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/NetworkLsaTest.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-
-import java.util.Vector;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for NetworkLsa.
- */
-public class NetworkLsaTest {
-
-    private static final Ip4Address LOCAL_ADDRESS = Ip4Address.valueOf("127.0.0.1");
-
-    private Vector<String> attachedRouters = new Vector();
-    private NetworkLsa networkLsa;
-    private Ip4Address result;
-    private Ip4Address inetAddres;
-    private byte[] inputByteArray;
-    private LsaHeader lsaHeader;
-    private ChannelBuffer channelBuffer;
-    private byte[] result1;
-    private OspfLsaType ospflsaType;
-    private int result2;
-
-    @Before
-    public void setUp() throws Exception {
-        networkLsa = new NetworkLsa();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        networkLsa = null;
-        attachedRouters = null;
-        result = null;
-        inetAddres = null;
-        inputByteArray = null;
-        lsaHeader = null;
-        channelBuffer = null;
-        result1 = null;
-        ospflsaType = null;
-    }
-
-    /**
-     * Tests networkMask() getter method.
-     */
-    @Test
-    public void testGetNetworkMask() throws Exception {
-        networkLsa.setNetworkMask(Ip4Address.valueOf("10.226.165.164"));
-        result = networkLsa.networkMask();
-        assertThat(result, is(Ip4Address.valueOf("10.226.165.164")));
-    }
-
-    /**
-     * Tests networkMask() setter method.
-     */
-    @Test
-    public void testSetNetworkMask() throws Exception {
-        networkLsa.setNetworkMask(Ip4Address.valueOf("10.226.165.165"));
-        result = networkLsa.networkMask();
-        result = networkLsa.networkMask();
-        assertThat(result, is(Ip4Address.valueOf("10.226.165.165")));
-    }
-
-    /**
-     * Tests addAttachedRouter() getter method.
-     */
-    @Test
-    public void testGetAttachedRouters() throws Exception {
-        attachedRouters.add("1.1.1.1");
-        networkLsa.addAttachedRouter(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(attachedRouters, is(notNullValue()));
-    }
-
-    /**
-     * Tests addAttachedRouter() setter method.
-     */
-    @Test
-    public void testSetAttachedRouters() throws Exception {
-        attachedRouters.add("1.1.1.1");
-        networkLsa.addAttachedRouter(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(attachedRouters, is(notNullValue()));
-    }
-
-    /**
-     * Tests addAttachedRouter() method.
-     */
-    @Test
-    public void testAddAttachedRouter() throws Exception {
-        networkLsa.addAttachedRouter(LOCAL_ADDRESS);
-        networkLsa.addAttachedRouter(LOCAL_ADDRESS);
-        assertThat(networkLsa, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-
-    @Test
-    public void testReadFrom() throws Exception {
-        inputByteArray = createByteForNetworkLsa();
-        lsaHeader = createLsaHeader();
-        networkLsa = new NetworkLsa(lsaHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(inputByteArray);
-        networkLsa.readFrom(channelBuffer);
-        assertThat(networkLsa, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test(expected = Exception.class)
-    public void testReadFrom1() throws Exception {
-        byte[] temp = {0, 0, 0};
-        inputByteArray = temp;
-        lsaHeader = createLsaHeader();
-        networkLsa = new NetworkLsa(lsaHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(inputByteArray);
-        networkLsa.readFrom(channelBuffer);
-        assertThat(networkLsa, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test(expected = Exception.class)
-    public void testAsBytes() throws Exception {
-        result1 = networkLsa.asBytes();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsaBodyAsByteArray() method.
-     */
-    @Test(expected = Exception.class)
-    public void testGetLsaBodyAsByteArray() throws Exception {
-        networkLsa.addAttachedRouter(Ip4Address.valueOf("1.1.1.1"));
-        networkLsa.addAttachedRouter(Ip4Address.valueOf("2.2.2.2"));
-        networkLsa.addAttachedRouter(Ip4Address.valueOf("3.3.3.3"));
-        result1 = networkLsa.getLsaBodyAsByteArray();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsaBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLsaBodyAsByteArray1() throws Exception {
-        networkLsa.setNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        networkLsa.addAttachedRouter(Ip4Address.valueOf("1.1.1.1"));
-        networkLsa.addAttachedRouter(Ip4Address.valueOf("2.2.2.2"));
-        networkLsa.addAttachedRouter(Ip4Address.valueOf("3.3.3.3"));
-        result1 = networkLsa.getLsaBodyAsByteArray();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests getOspfLsaType() getter method.
-     */
-    @Test
-    public void testGetOspfLsaType() throws Exception {
-        networkLsa.setLsType(2);
-        ospflsaType = networkLsa.getOspfLsaType();
-        assertThat(ospflsaType, is(OspfLsaType.NETWORK));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashcode() throws Exception {
-
-        result2 = networkLsa.hashCode();
-        assertThat(result2, is(notNullValue()));
-
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private byte[] createByteForNetworkLsa() {
-        byte[] packet = {2, 1, 1, 52, -64, -88, 56, 1, -64, -88, 56, 1, 0, 100, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, -64,
-                -88, 56, 1, 0, 10, 1, 1, 0, 0, 0, 40, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56,
-                1};
-        return packet;
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private LsaHeader createLsaHeader() {
-        lsaHeader = new LsaHeader();
-        lsaHeader.setLsType(2);
-        lsaHeader.setLsPacketLen(48);
-        lsaHeader.setLsCheckSum(10);
-        lsaHeader.setAge(4);
-        lsaHeader.setLinkStateId("10.226.165.164");
-        lsaHeader.setLsSequenceNo(250);
-        lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        lsaHeader.setOptions(2);
-        return lsaHeader;
-    }
-}
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa10Test.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa10Test.java
deleted file mode 100644
index 172863a..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa10Test.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.lsa.TlvHeader;
-import org.onosproject.ospf.protocol.lsa.tlvtypes.LinkTlv;
-import org.onosproject.ospf.protocol.lsa.tlvtypes.RouterTlv;
-
-
-import java.util.List;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for OpaqueLsa10.
- */
-public class OpaqueLsa10Test {
-
-    private final byte[] packet = {0, 1, 0, 4, 1, 1, 1, 1, 0, 2, 0, 84, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-    private OpaqueLsa10 opaqueLsa10;
-    private TopLevelTlv tlv;
-    private OpaqueLsaHeader opqueHeader;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-    private RouterTlv routerTlv;
-    private RouterTlv routerTlv1;
-    private LinkTlv linkTlv;
-    private LinkTlv linkTlv1;
-    private OspfLsaType ospflsaType;
-    private int result1;
-    private List result2;
-
-    @Before
-    public void setUp() throws Exception {
-        opaqueLsa10 = new OpaqueLsa10(new OpaqueLsaHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        opaqueLsa10 = null;
-        tlv = null;
-        opqueHeader = null;
-        channelBuffer = null;
-        result = null;
-        routerTlv = null;
-        routerTlv1 = null;
-        linkTlv1 = null;
-        ospflsaType = null;
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(opaqueLsa10.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests addValue() method.
-     */
-    @Test
-    public void testAddValue() throws Exception {
-        tlv = new RouterTlv(new TlvHeader());
-        opaqueLsa10.addValue(tlv);
-        assertThat(opaqueLsa10, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test(expected = Exception.class)
-    public void testReadFrom() throws Exception {
-        opqueHeader = new OpaqueLsaHeader();
-        opqueHeader.setLsType(10);
-        opqueHeader.setLsPacketLen(48);
-        opqueHeader.setLsCheckSum(10);
-        opqueHeader.setAge(4);
-        opqueHeader.setOpaqueId(1);
-        opqueHeader.setOpaqueType(10);
-        opqueHeader.setLsSequenceNo(250);
-        opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader.setOptions(66);
-        opaqueLsa10 = new OpaqueLsa10(opqueHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        opaqueLsa10.readFrom(channelBuffer);
-        result = opaqueLsa10.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test(expected = Exception.class)
-    public void testAsBytes() throws Exception {
-        opqueHeader = new OpaqueLsaHeader();
-        opqueHeader.setLsType(10);
-        opqueHeader.setLsPacketLen(48);
-        opqueHeader.setLsCheckSum(10);
-        opqueHeader.setAge(4);
-        opqueHeader.setOpaqueId(1);
-        opqueHeader.setOpaqueType(10);
-        opqueHeader.setLsSequenceNo(250);
-        opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader.setOptions(66);
-        opaqueLsa10 = new OpaqueLsa10(opqueHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        opaqueLsa10.readFrom(channelBuffer);
-        result = opaqueLsa10.getLsaBodyAsByteArray();
-        result = opaqueLsa10.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsaBodyAsByteArray() method.
-     */
-    @Test(expected = Exception.class)
-    public void testGetLsaBodyAsByteArray() throws Exception {
-        opqueHeader = new OpaqueLsaHeader();
-        opqueHeader.setLsType(10);
-        opqueHeader.setLsPacketLen(48);
-        opqueHeader.setLsCheckSum(10);
-        opqueHeader.setAge(4);
-        opqueHeader.setOpaqueId(1);
-        opqueHeader.setOpaqueType(10);
-        opqueHeader.setLsSequenceNo(250);
-        opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader.setOptions(2);
-        opaqueLsa10 = new OpaqueLsa10(opqueHeader);
-        routerTlv = new RouterTlv(new TlvHeader());
-        linkTlv = new LinkTlv(new TlvHeader());
-        opaqueLsa10.addValue(routerTlv);
-        opaqueLsa10.addValue(linkTlv);
-        routerTlv1 = new RouterTlv(new TlvHeader());
-        linkTlv1 = new LinkTlv(new TlvHeader());
-        opaqueLsa10.addValue(routerTlv1);
-        opaqueLsa10.addValue(linkTlv1);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        opaqueLsa10.readFrom(channelBuffer);
-        result = opaqueLsa10.getLsaBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsaBodyAsByteArray() method.
-     */
-    @Test(expected = Exception.class)
-    public void testGetLsaBodyAsByteArray1() throws Exception {
-        opqueHeader = new OpaqueLsaHeader();
-        opqueHeader.setLsType(10);
-        opqueHeader.setLsPacketLen(48);
-        opqueHeader.setLsCheckSum(10);
-        opqueHeader.setAge(4);
-        opqueHeader.setOpaqueId(1);
-        opqueHeader.setOpaqueType(10);
-        opqueHeader.setLsSequenceNo(250);
-        opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader.setOptions(2);
-        opaqueLsa10 = new OpaqueLsa10(opqueHeader);
-        routerTlv = new RouterTlv(new TlvHeader());
-        opaqueLsa10.addValue(routerTlv);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        result = opaqueLsa10.getLsaBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsaBodyAsByteArray() method.
-     */
-    @Test(expected = Exception.class)
-    public void testGetLsaBodyAsByteArray2() throws Exception {
-        opqueHeader = new OpaqueLsaHeader();
-        opqueHeader.setLsType(10);
-        opqueHeader.setLsPacketLen(48);
-        opqueHeader.setLsCheckSum(10);
-        opqueHeader.setAge(4);
-        opqueHeader.setOpaqueId(1);
-        opqueHeader.setOpaqueType(10);
-        opqueHeader.setLsSequenceNo(250);
-        opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader.setOptions(2);
-        opaqueLsa10 = new OpaqueLsa10(opqueHeader);
-        linkTlv = new LinkTlv(new TlvHeader());
-        opaqueLsa10.addValue(linkTlv);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        opaqueLsa10.readFrom(channelBuffer);
-        result = opaqueLsa10.getLsaBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests getOspfLsaType() getter method.
-     */
-    @Test
-    public void testGetOspfLsaType() throws Exception {
-        opaqueLsa10.setLsType(10);
-        ospflsaType = opaqueLsa10.getOspfLsaType();
-        assertThat(ospflsaType, is(notNullValue()));
-        assertThat(ospflsaType, is(OspfLsaType.AREA_LOCAL_OPAQUE_LSA));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashcode() throws Exception {
-
-        result1 = opaqueLsa10.hashCode();
-        assertThat(result1, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests topLevelValues() method.
-     */
-    @Test
-    public void testTopLevelValues() throws Exception {
-
-        result2 = opaqueLsa10.topLevelValues();
-        assertThat(result2, is(notNullValue()));
-
-    }
-
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa11Test.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa11Test.java
deleted file mode 100644
index 07b50c5..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa11Test.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for OpaqueLsa11.
- */
-public class OpaqueLsa11Test {
-
-    private final byte[] packet = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-    private OpaqueLsa11 opaqueLsa11;
-    private OpaqueLsaHeader opqueHeader;
-    private ChannelBuffer channelBuffer;
-    private byte[] result;
-    private int result1;
-    private String result2;
-    private OspfLsaType ospflsaType;
-
-    @Before
-    public void setUp() throws Exception {
-        opaqueLsa11 = new OpaqueLsa11(new OpaqueLsaHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        opaqueLsa11 = null;
-        opqueHeader = null;
-        channelBuffer = null;
-        result = null;
-        ospflsaType = null;
-    }
-
-    /**
-     * Tests readFrom()  method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        opqueHeader = new OpaqueLsaHeader();
-        opqueHeader.setLsType(11);
-        opqueHeader.setLsPacketLen(48);
-        opqueHeader.setLsCheckSum(10);
-        opqueHeader.setAge(4);
-        opqueHeader.setOpaqueId(1);
-        opqueHeader.setOpaqueType(11);
-        opqueHeader.setLsSequenceNo(250);
-        opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader.setOptions(2);
-        opaqueLsa11 = new OpaqueLsa11(opqueHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        opaqueLsa11.readFrom(channelBuffer);
-        assertThat(opaqueLsa11, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes()  method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        opqueHeader = new OpaqueLsaHeader();
-        opqueHeader.setLsType(11);
-        opqueHeader.setLsPacketLen(48);
-        opqueHeader.setLsCheckSum(10);
-        opqueHeader.setAge(4);
-        opqueHeader.setOpaqueId(1);
-        opqueHeader.setOpaqueType(11);
-        opqueHeader.setLsSequenceNo(250);
-        opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader.setOptions(2);
-        opaqueLsa11 = new OpaqueLsa11(opqueHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        opaqueLsa11.readFrom(channelBuffer);
-        result = opaqueLsa11.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsaBodyAsByteArray()  method.
-     */
-    @Test
-    public void testGetLsaBodyAsByteArray() throws Exception {
-        opqueHeader = new OpaqueLsaHeader();
-        opqueHeader.setLsType(11);
-        opqueHeader.setLsPacketLen(48);
-        opqueHeader.setLsCheckSum(10);
-        opqueHeader.setAge(4);
-        opqueHeader.setOpaqueId(1);
-        opqueHeader.setOpaqueType(11);
-        opqueHeader.setLsSequenceNo(250);
-        opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader.setOptions(2);
-        opaqueLsa11 = new OpaqueLsa11(opqueHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        opaqueLsa11.readFrom(channelBuffer);
-        result = opaqueLsa11.getLsaBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests getOspfLsaType()  method.
-     */
-    @Test
-    public void testGetOspfLsaType() throws Exception {
-        opaqueLsa11.setLsType(11);
-        ospflsaType = opaqueLsa11.getOspfLsaType();
-        assertThat(ospflsaType, is(notNullValue()));
-        assertThat(ospflsaType, is(OspfLsaType.AS_OPAQUE_LSA));
-    }
-
-    /**
-     * Tests hashCode()  method.
-     */
-    @Test
-    public void testHashcode() throws Exception {
-
-        result1 = opaqueLsa11.hashCode();
-        assertThat(result1, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-
-        result2 = opaqueLsa11.toString();
-        assertThat(result2, is(notNullValue()));
-
-    }
-}
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa9Test.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa9Test.java
deleted file mode 100644
index 0c6fa41..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa9Test.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for OpaqueLsa9.
- */
-public class OpaqueLsa9Test {
-
-    private final byte[] packet = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0};
-    private byte[] result;
-    private String result1;
-    private OpaqueLsaHeader opqueHeader;
-    private OpaqueLsa9 opaqueLsa9;
-    private ChannelBuffer channelBuffer;
-    private OspfLsaType ospflsaType;
-    private int result2;
-
-    @Before
-    public void setUp() throws Exception {
-        opaqueLsa9 = new OpaqueLsa9(new OpaqueLsaHeader());
-
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        opaqueLsa9 = null;
-        opqueHeader = null;
-        channelBuffer = null;
-        result = null;
-        ospflsaType = null;
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        opqueHeader = new OpaqueLsaHeader();
-        opqueHeader.setLsType(1);
-        opqueHeader.setLsPacketLen(48);
-        opqueHeader.setLsCheckSum(10);
-        opqueHeader.setAge(4);
-        opqueHeader.setOpaqueId(9);
-        opqueHeader.setOpaqueType(9);
-        opqueHeader.setLsSequenceNo(250);
-        opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader.setOptions(2);
-        opaqueLsa9 = new OpaqueLsa9(opqueHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        opaqueLsa9.readFrom(channelBuffer);
-        assertThat(opaqueLsa9, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        opqueHeader = new OpaqueLsaHeader();
-        opqueHeader.setLsType(9);
-        opqueHeader.setLsPacketLen(48);
-        opqueHeader.setLsCheckSum(10);
-        opqueHeader.setAge(4);
-        opqueHeader.setOpaqueId(9);
-        opqueHeader.setOpaqueType(9);
-        opqueHeader.setLsSequenceNo(250);
-        opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader.setOptions(2);
-        opaqueLsa9 = new OpaqueLsa9(opqueHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        opaqueLsa9.readFrom(channelBuffer);
-        result = opaqueLsa9.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsaBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLsaBodyAsByteArray() throws Exception {
-        opqueHeader = new OpaqueLsaHeader();
-        opqueHeader.setLsType(9);
-        opqueHeader.setLsPacketLen(48);
-        opqueHeader.setLsCheckSum(10);
-        opqueHeader.setAge(4);
-        opqueHeader.setOpaqueId(9);
-        opqueHeader.setOpaqueType(9);
-        opqueHeader.setLsSequenceNo(250);
-        opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader.setOptions(2);
-        opaqueLsa9 = new OpaqueLsa9(opqueHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        opaqueLsa9.readFrom(channelBuffer);
-        result = opaqueLsa9.getLsaBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashcode() throws Exception {
-
-        result2 = opaqueLsa9.hashCode();
-        assertThat(result2, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-
-        result1 = opaqueLsa9.toString();
-        assertThat(result1, is(notNullValue()));
-
-    }
-
-    /**
-     * Tests to getOspfLsaType() getter method.
-     */
-    @Test
-    public void testGetOspfLsaType() throws Exception {
-        opaqueLsa9.setLsType(9);
-        ospflsaType = opaqueLsa9.getOspfLsaType();
-        assertThat(ospflsaType, is(notNullValue()));
-        assertThat(ospflsaType, is(OspfLsaType.LINK_LOCAL_OPAQUE_LSA));
-    }
-}
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/RouterLsaTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/RouterLsaTest.java
deleted file mode 100644
index 4611976..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/RouterLsaTest.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.subtypes.OspfLsaLink;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.*;
-
-/**
- * Unit test class for RouterLsa.
- */
-public class RouterLsaTest {
-
-    private RouterLsa routerLsa;
-    private int result1;
-    private OspfLsaLink ospflsaLink;
-    private byte[] inputArray;
-    private LsaHeader lsaHeader;
-    private ChannelBuffer channelBuffer;
-    private byte[] result2;
-    private OspfLsaType result3;
-
-    @Before
-    public void setUp() throws Exception {
-        routerLsa = new RouterLsa();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        routerLsa = null;
-        ospflsaLink = null;
-        inputArray = null;
-        lsaHeader = null;
-        channelBuffer = null;
-        result2 = null;
-        result3 = null;
-    }
-
-
-    /**
-     * Tests virtualEndPoint() setter method.
-     */
-    @Test
-    public void testSetVirtualEndPoint() throws Exception {
-        routerLsa.setVirtualEndPoint(true);
-        assertThat(routerLsa, is(notNullValue()));
-    }
-
-
-    /**
-     * Tests isAsBoundaryRouter() setter method.
-     */
-    @Test
-    public void testSetAsBoundaryRouter() throws Exception {
-        routerLsa.setAsBoundaryRouter(true);
-        assertThat(routerLsa, is(notNullValue()));
-    }
-
-    /**
-     * Tests areaBorderRouter() setter method.
-     */
-    @Test
-    public void testSetAreaBorderRouter() throws Exception {
-        routerLsa.setAreaBorderRouter(true);
-        assertThat(routerLsa, is(notNullValue()));
-    }
-
-    /**
-     * Tests noLink() getter method.
-     */
-    @Test
-    public void testGetNoLink() throws Exception {
-        routerLsa.setNoLink(10);
-        result1 = routerLsa.noLink();
-        assertThat(result1, is(10));
-    }
-
-    /**
-     * Tests noLink() setter method.
-     */
-    @Test
-    public void testSetNoLink() throws Exception {
-        routerLsa.setNoLink(10);
-        result1 = routerLsa.noLink();
-        assertThat(result1, is(10));
-    }
-
-    /**
-     * Tests addRouterLink() method.
-     */
-    @Test
-    public void testAddRouterLink() throws Exception {
-        routerLsa.setNoLink(0);
-        ospflsaLink = createOspfLsaLink();
-        routerLsa.addRouterLink(ospflsaLink);
-        routerLsa.incrementLinkNo();
-        result1 = routerLsa.noLink();
-        assertThat(result1, is(1));
-
-    }
-
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        ospflsaLink = createOspfLsaLink();
-        routerLsa.addRouterLink(ospflsaLink);
-        inputArray = createByteForRouterLsa();
-        lsaHeader = createLsaHeader();
-        routerLsa = new RouterLsa(lsaHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(inputArray);
-        routerLsa.readFrom(channelBuffer);
-        assertThat(routerLsa, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test(expected = Exception.class)
-    public void testReadFrom1() throws Exception {
-        byte[] temp = {0, 0, 0};
-        ospflsaLink = createOspfLsaLink();
-        routerLsa.addRouterLink(ospflsaLink);
-        inputArray = temp;
-        lsaHeader = createLsaHeader();
-        routerLsa = new RouterLsa(lsaHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(inputArray);
-        routerLsa.readFrom(channelBuffer);
-        assertThat(routerLsa, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result2 = routerLsa.asBytes();
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsaBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLsaBodyAsByteArray() throws Exception {
-        routerLsa.setAreaBorderRouter(true);
-        routerLsa.setVirtualEndPoint(true);
-        routerLsa.setAreaBorderRouter(true);
-        ospflsaLink = createOspfLsaLink();
-        routerLsa.addRouterLink(ospflsaLink);
-        result2 = routerLsa.getLsaBodyAsByteArray();
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests getOspfLsaType() getter method.
-     */
-    @Test
-    public void testGetOspfLsaType() throws Exception {
-        routerLsa.setLsType(1);
-        result3 = routerLsa.getOspfLsaType();
-        assertThat(result3, is(OspfLsaType.ROUTER));
-    }
-
-    /**
-     * Tests incrementLinkNo() method.
-     */
-    @Test
-    public void testIncrementLinkNo() throws Exception {
-        routerLsa.setNoLink(1);
-        routerLsa.incrementLinkNo();
-        assertThat(routerLsa.noLink(), is(2));
-    }
-
-    /**
-     * Tests lsaHeader() method.
-     */
-    @Test
-    public void testGetLsaHeader() throws Exception {
-        lsaHeader = (LsaHeader) routerLsa.lsaHeader();
-        assertThat(lsaHeader, instanceOf(RouterLsa.class));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(routerLsa.toString(), is(notNullValue()));
-
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private OspfLsaLink createOspfLsaLink() {
-        ospflsaLink = new OspfLsaLink();
-        ospflsaLink.setLinkId("10.226.165.164");
-        ospflsaLink.setMetric(10);
-        ospflsaLink.setTos(50);
-        ospflsaLink.setLinkType(2);
-        ospflsaLink.setLinkData("10.226.165.170");
-        return ospflsaLink;
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private byte[] createByteForRouterLsa() {
-        byte[] packet = {2, 1, 1, 52, -64, -88, 56, 1, -64, -88, 56, 1, 0, 100, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, -64,
-                -88, 56, 1, 0, 10, 1, 1, 0, 0, 0, 40, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56,
-                1};
-        return packet;
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private LsaHeader createLsaHeader() {
-        lsaHeader = new LsaHeader();
-        lsaHeader.setLsType(1);
-        lsaHeader.setLsPacketLen(48);
-        lsaHeader.setLsCheckSum(10);
-        lsaHeader.setAge(4);
-        lsaHeader.setLinkStateId("10.226.165.164");
-        lsaHeader.setLsSequenceNo(250);
-        lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        lsaHeader.setOptions(2);
-        return lsaHeader;
-    }
-
-    /**
-     * Tests hashcode() method.
-     */
-    @Test
-    public void testHashcode() throws Exception {
-
-        result1 = routerLsa.hashCode();
-        assertThat(result1, is(notNullValue()));
-
-    }
-}
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/SummaryLsaTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/SummaryLsaTest.java
deleted file mode 100644
index eb06192..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/SummaryLsaTest.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.lsa.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Unit test class for SummaryLsa.
- */
-public class SummaryLsaTest {
-
-    private SummaryLsa summaryLsa;
-    private Ip4Address result;
-    private int result1;
-    private byte[] inputByteArray;
-    private LsaHeader lsaHeader;
-    private ChannelBuffer channelBuffer;
-    private byte[] result2;
-    private OspfLsaType ospflsaType;
-
-    @Before
-    public void setUp() throws Exception {
-        summaryLsa = new SummaryLsa(new LsaHeader());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        summaryLsa = null;
-        result = null;
-        inputByteArray = null;
-        lsaHeader = null;
-        channelBuffer = null;
-        result2 = null;
-        ospflsaType = null;
-    }
-
-    /**
-     * Tests networkMask() getter method.
-     */
-    @Test
-    public void testGetNetworkMask() throws Exception {
-        summaryLsa.setNetworkMask(Ip4Address.valueOf("10.226.165.164"));
-        result = summaryLsa.networkMask();
-        assertThat(result, is(Ip4Address.valueOf("10.226.165.164")));
-    }
-
-    /**
-     * Tests networkMask() setter method.
-     */
-    @Test
-    public void testSetNetworkMask() throws Exception {
-        summaryLsa.setNetworkMask(Ip4Address.valueOf("10.226.165.164"));
-        result = summaryLsa.networkMask();
-        assertThat(result, is(Ip4Address.valueOf("10.226.165.164")));
-    }
-
-    /**
-     * Tests metric() getter method.
-     */
-    @Test
-    public void testGetMetric() throws Exception {
-        summaryLsa.setMetric(10);
-        result1 = summaryLsa.metric();
-        assertThat(result1, is(10));
-    }
-
-    /**
-     * Tests metric() setter method.
-     */
-    @Test
-    public void testSetMetric() throws Exception {
-        summaryLsa.setMetric(20);
-        result1 = summaryLsa.metric();
-        assertThat(result1, is(20));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        inputByteArray = createByteForNetworkLsa();
-        lsaHeader = createLsaHeader();
-        summaryLsa = new SummaryLsa(lsaHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(inputByteArray);
-        summaryLsa.readFrom(channelBuffer);
-        assertThat(summaryLsa, is(notNullValue()));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test(expected = Exception.class)
-    public void testReadFrom1() throws Exception {
-        byte[] temp = {0, 0, 0};
-        inputByteArray = temp;
-        lsaHeader = createLsaHeader();
-        summaryLsa = new SummaryLsa(lsaHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(inputByteArray);
-        summaryLsa.readFrom(channelBuffer);
-        assertThat(summaryLsa, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result2 = summaryLsa.asBytes();
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsaBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLsaBodyAsByteArray() throws Exception {
-        result2 = summaryLsa.getLsaBodyAsByteArray();
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests getOspfLsaType() getter method.
-     */
-    @Test
-    public void testGetOspfLsaType() throws Exception {
-        ospflsaType = summaryLsa.getOspfLsaType();
-        assertThat(ospflsaType, is(notNullValue()));
-        assertThat(ospflsaType, is(OspfLsaType.SUMMARY));
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private byte[] createByteForNetworkLsa() {
-        byte[] packet = {2, 1, 1, 52, -64, -88, 56, 1, -64, -88, 56, 1, 0, 100, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, -64,
-                -88, 56, 1, 0, 10, 1, 1, 0, 0, 0, 40, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56,
-                1};
-        return packet;
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private LsaHeader createLsaHeader() {
-        lsaHeader = new LsaHeader();
-        lsaHeader.setLsType(3);
-        lsaHeader.setLsPacketLen(48);
-        lsaHeader.setLsCheckSum(10);
-        lsaHeader.setAge(4);
-        lsaHeader.setLinkStateId("10.226.165.164");
-        lsaHeader.setLsSequenceNo(250);
-        lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        lsaHeader.setOptions(2);
-        return lsaHeader;
-    }
-
-    /**
-     * Tests hashcode() method.
-     */
-    @Test
-    public void testHashcode() throws Exception {
-
-        result1 = summaryLsa.hashCode();
-        assertThat(result1, is(notNullValue()));
-
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageReaderTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageReaderTest.java
deleted file mode 100644
index 8cf0aef..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageReaderTest.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.ospf.protocol.util.OspfUtil;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for OspfMessageReader.
- */
-
-public class OspfMessageReaderTest {
-
-    private final byte[] packet1 = {2, 1, 0, 44, -64, -88, -86, 8,
-            0, 0, 0, 1, 39, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0,
-            10, 2, 1, 0, 0, 0, 40, -64, -88, -86, 8, 0, 0, 0, 0};
-    private final byte[] packet2 = {2, 2, 0, 52, -64, -88, -86, 8, 0,
-            0, 0, 1, -96, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -36, 2, 7, 65, 119,
-            -87, 126, 0, 23, 2, 1, 10, 10, 10, 10, 10, 10, 10, 10, -128, 0, 0, 6,
-            -69, 26, 0, 36};
-    private final byte[] packet3 = {2, 3, 0, 36, -64, -88, -86, 3, 0,
-            0, 0, 1, -67, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -64, -88,
-            -86, 8, -64, -88, -86, 8};
-    private final byte[] packet4 = {2, 4, 1, 36, -64, -88, -86, 3, 0,
-            0, 0, 1, 54, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
-            2, 2, 1, -64, -88, -86, 3, -64, -88, -86, 3, -128, 0,
-            0, 1, 58, -100, 0, 48, 2, 0, 0, 2, -64, -88, -86,
-            0, -1, -1, -1, 0, 3, 0, 0, 10, -64, -88, -86, 0,
-            -1, -1, -1, 0, 3, 0, 0, 10, 0, 3, 2, 5, 80, -44,
-            16, 0, -64, -88, -86, 2, -128, 0, 0, 1, 42, 73, 0,
-            36, -1, -1, -1, -1, -128, 0, 0, 20, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 3, 2, 5, -108, 121, -85, 0, -64, -88,
-            -86, 2, -128, 0, 0, 1, 52, -91, 0, 36, -1, -1, -1,
-            0, -128, 0, 0, 20, -64, -88, -86, 1, 0, 0, 0, 0, 0,
-            3, 2, 5, -64, -126, 120, 0, -64, -88, -86, 2, -128, 0,
-            0, 1, -45, 25, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -64, -88, 0, 0,
-            -64, -88, -86, 2, -128, 0, 0, 1, 55, 8, 0, 36, -1, -1,
-            -1, 0, -128, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            3, 2, 5, -64, -88, 1, 0, -64, -88, -86, 2, -128, 0, 0,
-            1, 44, 18, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -64, -88, -84, 0, -64,
-            -88, -86, 2, -128, 0, 0, 1, 51, 65, 0, 36, -1, -1, -1, 0,
-            -128, 0, 0, 20, -64, -88, -86, 10, 0, 0, 0, 0};
-    private final byte[] packet5 = {2, 5, 0, 44, -64, -88, -86, 8, 0, 0,
-            0, 1, -30, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 16, 2, 1, -64, -88, -86,
-            2, -64, -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48};
-    private OspfMessageReader ospfMessageReader;
-    private ChannelBuffer channelBuffer;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfMessageReader = new OspfMessageReader();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfMessageReader = null;
-        channelBuffer = null;
-    }
-
-    /**
-     * Tests readFromBuffer() method.
-     */
-    @Test
-    public void testReadFromBuffer() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet1));
-        ospfMessageReader.readFromBuffer(channelBuffer);
-
-        channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet2));
-        ospfMessageReader.readFromBuffer(channelBuffer);
-
-        channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet3));
-        ospfMessageReader.readFromBuffer(channelBuffer);
-
-        channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet4));
-        ospfMessageReader.readFromBuffer(channelBuffer);
-
-        channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet5));
-        ospfMessageReader.readFromBuffer(channelBuffer);
-        assertThat(ospfMessageReader, is(notNullValue()));
-    }
-
-    /**
-     * Frames the packet to min frame length.
-     *
-     * @param ospfPacket OSPF packet
-     * @return OSPF packet as byte array
-     */
-    private byte[] framePacket(byte[] ospfPacket) {
-        //Set the length of the packet
-        //Get the total length of the packet
-        int length = ospfPacket.length;
-        //PDU_LENGTH + 1 byte for interface index
-        if (length < OspfUtil.MINIMUM_FRAME_LEN) {
-            byte[] bytes = new byte[OspfUtil.MINIMUM_FRAME_LEN + 5];
-            System.arraycopy(ospfPacket, 0, bytes, 0, length);
-            return bytes;
-        }
-        return ospfPacket;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageWriterTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageWriterTest.java
deleted file mode 100644
index 94f8702..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageWriterTest.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for OspfMessageWriter.
- */
-public class OspfMessageWriterTest {
-
-    private OspfMessageWriter ospfMessageWriter;
-    private HelloPacket helloPacket;
-    private DdPacket ddPacket;
-    private LsAcknowledge lsAck;
-    private LsRequest lsReq;
-    private LsUpdate lsUpdate;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfMessageWriter = new OspfMessageWriter();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfMessageWriter = null;
-        helloPacket = null;
-        ddPacket = null;
-        lsAck = null;
-        lsReq = null;
-        lsUpdate = null;
-    }
-
-    /**
-     * Tests getMessage() method.
-     */
-    @Test
-    public void testGetMessage() throws Exception {
-        helloPacket = new HelloPacket();
-        helloPacket.setAuthType(1);
-        helloPacket.setOspftype(1);
-        helloPacket.setRouterId(Ip4Address.valueOf("10.226.165.164"));
-        helloPacket.setAreaId(Ip4Address.valueOf("10.226.165.100"));
-        helloPacket.setChecksum(201);
-        helloPacket.setAuthentication(2);
-        helloPacket.setOspfPacLength(48);
-        helloPacket.setOspfVer(2);
-        helloPacket.setNetworkMask(Ip4Address.valueOf("255.255.255.255"));
-        helloPacket.setOptions(2); //not setting now
-        helloPacket.setHelloInterval(10);
-        helloPacket.setRouterPriority(1);
-        helloPacket.setRouterDeadInterval(40);
-        helloPacket.setDr(Ip4Address.valueOf("1.1.1.1"));
-        helloPacket.setBdr(Ip4Address.valueOf("2.2.2.2"));
-        helloPacket.addNeighbor(Ip4Address.valueOf("8.8.8.8"));
-        helloPacket.setDestinationIp(Ip4Address.valueOf("5.5.5.5"));
-        ospfMessageWriter.getMessage(helloPacket, 7, 1);
-        assertThat(ospfMessageWriter, is(notNullValue()));
-    }
-
-    @Test(expected = Exception.class)
-    public void testGetMessage1() throws Exception {
-
-        ddPacket = new DdPacket();
-        ddPacket.setAuthType(1);
-        ddPacket.setOspftype(2);
-        ddPacket.setRouterId(Ip4Address.valueOf("10.226.165.164"));
-        ddPacket.setAreaId(Ip4Address.valueOf("10.226.165.100"));
-        ddPacket.setChecksum(201);
-        ddPacket.setAuthentication(2);
-        ddPacket.setOspfPacLength(48);
-        ddPacket.setOspfVer(2);
-        ospfMessageWriter.getMessage(ddPacket, 1, 1);
-        assertThat(ospfMessageWriter, is(notNullValue()));
-    }
-
-    @Test(expected = Exception.class)
-    public void testGetMessage2() throws Exception {
-
-        lsAck = new LsAcknowledge();
-        lsAck.setAuthType(1);
-        lsAck.setOspftype(5);
-        lsAck.setRouterId(Ip4Address.valueOf("10.226.165.164"));
-        lsAck.setAreaId(Ip4Address.valueOf("10.226.165.100"));
-        lsAck.setChecksum(201);
-        lsAck.setAuthentication(2);
-        lsAck.setOspfPacLength(48);
-        lsAck.setOspfVer(2);
-        ospfMessageWriter.getMessage(lsAck, 1, 1);
-        assertThat(ospfMessageWriter, is(notNullValue()));
-    }
-
-    @Test(expected = Exception.class)
-    public void testGetMessage3() throws Exception {
-        lsReq = new LsRequest();
-        lsReq.setAuthType(1);
-        lsReq.setOspftype(3);
-        lsReq.setRouterId(Ip4Address.valueOf("10.226.165.164"));
-        lsReq.setAreaId(Ip4Address.valueOf("10.226.165.100"));
-        lsReq.setChecksum(201);
-        lsReq.setAuthentication(2);
-        lsReq.setOspfPacLength(48);
-        lsReq.setOspfVer(2);
-        ospfMessageWriter.getMessage(lsReq, 1, 1);
-        assertThat(ospfMessageWriter, is(notNullValue()));
-    }
-
-    /**
-     * Tests getMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testGetMessage4() throws Exception {
-        lsUpdate = new LsUpdate();
-        lsUpdate.setAuthType(1);
-        lsUpdate.setOspftype(3);
-        lsUpdate.setRouterId(Ip4Address.valueOf("10.226.165.164"));
-        lsUpdate.setAreaId(Ip4Address.valueOf("10.226.165.100"));
-        lsUpdate.setChecksum(201);
-        lsUpdate.setAuthentication(2);
-        lsUpdate.setOspfPacLength(48);
-        lsUpdate.setOspfVer(2);
-        ospfMessageWriter.getMessage(lsUpdate, 1, 1);
-        assertThat(ospfMessageWriter, is(notNullValue()));
-    }
-
-    /**
-     * Tests getMessage() method.
-     */
-    @Test(expected = Exception.class)
-    public void testGetMessage5() throws Exception {
-        lsAck = new LsAcknowledge();
-        lsAck.setAuthType(1);
-        lsAck.setOspftype(5);
-        lsAck.setRouterId(Ip4Address.valueOf("10.226.165.164"));
-        lsAck.setAreaId(Ip4Address.valueOf("10.226.165.100"));
-        lsAck.setChecksum(201);
-        lsAck.setAuthentication(2);
-        lsAck.setOspfPacLength(48);
-        lsAck.setOspfVer(2);
-        ospfMessageWriter.getMessage(lsAck, 1, 1);
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfPacketHeaderTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfPacketHeaderTest.java
deleted file mode 100644
index e4852a1..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfPacketHeaderTest.java
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for OspfPacketHeader.
- */
-public class OspfPacketHeaderTest {
-
-    private final byte[] packet = {0, 0, 0, 0};
-    private OspfPacketHeader ospfPacketHeader;
-    private ChannelBuffer channelBuffer;
-    private byte[] result2;
-    private int result;
-    private Ip4Address result1;
-
-    @Before
-    public void setUp() throws Exception {
-        ospfPacketHeader = new OspfPacketHeader();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ospfPacketHeader = null;
-        ospfPacketHeader = null;
-        channelBuffer = null;
-        result2 = null;
-        result1 = null;
-    }
-
-    /**
-     * Tests sourceIp() getter method.
-     */
-    @Test
-    public void testGetSourceIP() throws Exception {
-        ospfPacketHeader.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(ospfPacketHeader.sourceIp(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests sourceIp() setter method.
-     */
-    @Test
-    public void testSetSourceIP() throws Exception {
-        ospfPacketHeader.setSourceIp(Ip4Address.valueOf("1.1.1.1"));
-        assertThat(result, is(notNullValue()));
-        assertThat(ospfPacketHeader.sourceIp(), is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests ospfMessageType() getter method.
-     */
-    @Test
-    public void testGetOspfMessageType() throws Exception {
-        assertThat(ospfPacketHeader.ospfMessageType(), nullValue());
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        ospfPacketHeader.readFrom(channelBuffer);
-        assertThat(ospfPacketHeader, is(notNullValue()));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result2 = ospfPacketHeader.asBytes();
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests ospfVersion() getter method.
-     */
-    @Test
-    public void testGetOspfVer() throws Exception {
-        ospfPacketHeader.setOspfVer(2);
-        result = ospfPacketHeader.ospfVersion();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(2));
-    }
-
-    /**
-     * Tests ospfVersion() setter method.
-     */
-    @Test
-    public void testSetOspfVer() throws Exception {
-        ospfPacketHeader.setOspfVer(2);
-        result = ospfPacketHeader.ospfVersion();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(2));
-    }
-
-    /**
-     * Tests ospfType() getter method.
-     */
-    @Test
-    public void testGetOspfType() throws Exception {
-        ospfPacketHeader.setOspftype(3);
-        result = ospfPacketHeader.ospfType();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(3));
-    }
-
-    /**
-     * Tests ospfType() setter method.
-     */
-    @Test
-    public void testSetOspfType() throws Exception {
-        ospfPacketHeader.setOspftype(3);
-        result = ospfPacketHeader.ospfType();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(3));
-    }
-
-    /**
-     * Tests ospfPacLength() getter method.
-     */
-    @Test
-    public void testGetOspfPacLength() throws Exception {
-        ospfPacketHeader.setOspfPacLength(3);
-        result = ospfPacketHeader.ospfPacLength();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(3));
-    }
-
-    /**
-     * Tests ospfPacLength() setter method.
-     */
-    @Test
-    public void testSetOspfPacLength() throws Exception {
-        ospfPacketHeader.setOspfPacLength(3);
-        int result = ospfPacketHeader.ospfPacLength();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(3));
-    }
-
-    /**
-     * Tests routerId()getter method.
-     */
-    @Test
-    public void testGetRouterId() throws Exception {
-
-        ospfPacketHeader.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        result1 = ospfPacketHeader.routerId();
-        assertThat(result1, is(notNullValue()));
-        assertThat(result1, is(Ip4Address.valueOf("1.1.1.1")));
-
-    }
-
-    /**
-     * Tests routerId() setter method.
-     */
-    @Test
-    public void testSetRouterId() throws Exception {
-        ospfPacketHeader.setRouterId(Ip4Address.valueOf("1.1.1.1"));
-        result1 = ospfPacketHeader.routerId();
-        assertThat(result1, is(notNullValue()));
-        assertThat(result1, is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests areaId() getter method.
-     */
-    @Test
-    public void testGetAreaId() throws Exception {
-        ospfPacketHeader.setAreaId(Ip4Address.valueOf("1.1.1.1"));
-        result1 = ospfPacketHeader.areaId();
-        assertThat(result1, is(notNullValue()));
-        assertThat(result1, is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests areaId() setter method.
-     */
-    @Test
-    public void testSetAreaId() throws Exception {
-        ospfPacketHeader.setAreaId(Ip4Address.valueOf("1.1.1.1"));
-        result1 = ospfPacketHeader.areaId();
-        assertThat(result1, is(notNullValue()));
-        assertThat(result1, is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests checksum() getter method.
-     */
-    @Test
-    public void testGetChecksum() throws Exception {
-        ospfPacketHeader.setChecksum(3);
-        result = ospfPacketHeader.checksum();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(3));
-    }
-
-    /**
-     * Tests checksum() setter method.
-     */
-    @Test
-    public void testSetChecksum() throws Exception {
-        ospfPacketHeader.setChecksum(3);
-        result = ospfPacketHeader.checksum();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(3));
-    }
-
-    /**
-     * Tests authType() getter method.
-     */
-    @Test
-    public void testGetAutype() throws Exception {
-        ospfPacketHeader.setAuthType(3);
-        result = ospfPacketHeader.authType();
-        Assert.assertNotNull(result);
-        Assert.assertEquals(3, result);
-    }
-
-    /**
-     * Tests authType() setter method.
-     */
-    @Test
-    public void testSetAutype() throws Exception {
-        ospfPacketHeader.setAuthType(3);
-        result = ospfPacketHeader.authType();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(3));
-    }
-
-    /**
-     * Tests authentication() getter method.
-     */
-    @Test
-    public void testGetAuthentication() throws Exception {
-        ospfPacketHeader.setAuthentication(3);
-        result = ospfPacketHeader.authentication();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(3));
-    }
-
-    /**
-     * Tests authentication() setter method.
-     */
-    @Test
-    public void testSetAuthentication() throws Exception {
-        ospfPacketHeader.setAuthentication(3);
-        result = ospfPacketHeader.authentication();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(3));
-    }
-
-    /**
-     * Tests destinationIp() getter method.
-     */
-    @Test
-    public void testGetDestinationIP() throws Exception {
-        ospfPacketHeader.setDestinationIp(Ip4Address.valueOf("1.1.1.1"));
-        result1 = ospfPacketHeader.destinationIp();
-        assertThat(result1, is(notNullValue()));
-        assertThat(result1, is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests destinationIp() setter method.
-     */
-    @Test
-    public void testSetDestinationIP() throws Exception {
-        ospfPacketHeader.setDestinationIp(Ip4Address.valueOf("1.1.1.1"));
-        result1 = ospfPacketHeader.destinationIp();
-        assertThat(result1, is(notNullValue()));
-        assertThat(result1, is(Ip4Address.valueOf("1.1.1.1")));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(ospfPacketHeader.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests populateHeader() method.
-     */
-    @Test
-    public void testPopulateHeader() throws Exception {
-        ospfPacketHeader.populateHeader(new OspfPacketHeader());
-        assertThat(ospfPacketHeader, is(notNullValue()));
-    }
-
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/subtype/LsRequestPacketTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/subtype/LsRequestPacketTest.java
deleted file mode 100644
index 34809d6..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/subtype/LsRequestPacketTest.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket.subtype;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for LsRequestPacket.
- */
-public class LsRequestPacketTest {
-
-    private LsRequestPacket lsrPacket;
-    private int result;
-
-    @Before
-    public void setUp() throws Exception {
-        lsrPacket = new LsRequestPacket();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        lsrPacket = null;
-    }
-
-    /**
-     * Tests lsType() getter method.
-     */
-    @Test
-    public void testGetLsType() throws Exception {
-        lsrPacket.setLsType(1);
-        assertThat(lsrPacket.lsType(), is(1));
-    }
-
-    /**
-     * Tests lsType() setter method.
-     */
-    @Test
-    public void testSetLsType() throws Exception {
-        lsrPacket.setLsType(1);
-        assertThat(lsrPacket.lsType(), is(1));
-    }
-
-    /**
-     * Tests linkStateId() getter method.
-     */
-    @Test
-    public void testGetLinkStateId() throws Exception {
-        lsrPacket.setLinkStateId("1.1.1.1");
-        assertThat(lsrPacket.linkStateId(), is("1.1.1.1"));
-    }
-
-    /**
-     * Tests linkStateId() setter method.
-     */
-    @Test
-    public void testSetLinkStateId() throws Exception {
-        lsrPacket.setLinkStateId("1.1.1.1");
-        assertThat(lsrPacket.linkStateId(), is("1.1.1.1"));
-    }
-
-    /**
-     * Tests ownRouterId() getter method.
-     */
-    @Test
-    public void testGetOwnRouterId() throws Exception {
-        lsrPacket.setOwnRouterId("1.1.1.1");
-        assertThat(lsrPacket.ownRouterId(), is("1.1.1.1"));
-    }
-
-    /**
-     * Tests ownRouterId() setter method.
-     */
-    @Test
-    public void testSetOwnRouterId() throws Exception {
-        lsrPacket.setOwnRouterId("1.1.1.1");
-        assertThat(lsrPacket.ownRouterId(), is("1.1.1.1"));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(lsrPacket.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Tests equals() method.
-     */
-    @Test
-    public void testEquals() throws Exception {
-        assertThat(lsrPacket.equals(new LsRequestPacket()), is(false));
-    }
-
-    /**
-     * Tests hashCode() method.
-     */
-    @Test
-    public void testHashCode() throws Exception {
-        result = lsrPacket.hashCode();
-        assertThat(result, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/DdPacketTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/DdPacketTest.java
deleted file mode 100644
index 166cffa..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/DdPacketTest.java
+++ /dev/null
@@ -1,449 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfPacketType;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
-
-import java.util.List;
-import java.util.Vector;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for OspfRouterId.
- */
-public class DdPacketTest {
-
-    private byte[] packet;
-    private byte[] result2;
-    private DdPacket ddPacket;
-    private Vector<LsaHeader> lsaHeaderList = new Vector<LsaHeader>();
-    private int result;
-    private long result1;
-    private OpaqueLsaHeader opqueHeader;
-    private OpaqueLsaHeader opqueHeader1;
-    private List<LsaHeader> header;
-    private OspfPacketHeader ospfPacketHeader;
-    private ChannelBuffer channelBuffer;
-    private LsaHeader lsaHeader;
-    private long result3;
-    private OspfPacketType ospfPacketType;
-
-    @Before
-    public void setUp() throws Exception {
-        ddPacket = new DdPacket();
-        ddPacket.setAuthType(1);
-        ddPacket.setOspftype(2);
-        ddPacket.setRouterId(Ip4Address.valueOf("10.226.165.164"));
-        ddPacket.setAreaId(Ip4Address.valueOf("10.226.165.100"));
-        ddPacket.setChecksum(201);
-        ddPacket.setAuthentication(2);
-        ddPacket.setOspfPacLength(48);
-        ddPacket.setOspfVer(2);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ddPacket = null;
-        lsaHeaderList.clear();
-        opqueHeader = null;
-        opqueHeader1 = null;
-        header = null;
-        ospfPacketHeader = null;
-        channelBuffer = null;
-        lsaHeader = null;
-        ospfPacketType = null;
-    }
-
-    /**
-     * Tests isOpaqueCapable() getter method.
-     */
-    @Test
-    public void testIsOpaqueCapable() throws Exception {
-        ddPacket.setIsOpaqueCapable(true);
-        assertThat(ddPacket.isOpaqueCapable(), is(true));
-    }
-
-    /**
-     * Tests isOpaqueCapable() setter method.
-     */
-    @Test
-    public void testSetIsOpaqueCapable() throws Exception {
-        ddPacket.setIsOpaqueCapable(true);
-        assertThat(ddPacket.isOpaqueCapable(), is(true));
-    }
-
-    /**
-     * Tests ims() getter method.
-     */
-    @Test
-    public void testGetIms() throws Exception {
-        ddPacket.setIms(1);
-        result = ddPacket.ims();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests ims() setter method.
-     */
-    @Test
-    public void testSetIms() throws Exception {
-        ddPacket.setIms(1);
-        result = ddPacket.ims();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(1));
-    }
-
-    /**
-     * Tests isMaster() getter method.
-     */
-    @Test
-    public void testGetIsMaster() throws Exception {
-        ddPacket.setIsMaster(2);
-        result = ddPacket.isMaster();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(2));
-    }
-
-    /**
-     * Tests isMaster() setter method.
-     */
-    @Test
-    public void testSetIsMaster() throws Exception {
-        ddPacket.setIsMaster(2);
-        result = ddPacket.isMaster();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(2));
-    }
-
-    /**
-     * Tests isInitialize() getter method.
-     */
-    @Test
-    public void testGetIsInitialize() throws Exception {
-        ddPacket.setIsInitialize(3);
-        result = ddPacket.isInitialize();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(3));
-    }
-
-    /**
-     * Tests isInitialize() setter method.
-     */
-    @Test
-    public void testSetIsInitialize() throws Exception {
-        ddPacket.setIsInitialize(3);
-        int result = ddPacket.isInitialize();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(3));
-    }
-
-    /**
-     * Tests isMore() getter method.
-     */
-    @Test
-    public void testGetIsMore() throws Exception {
-        ddPacket.setIsMore(4);
-        result = ddPacket.isMore();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(4));
-    }
-
-    /**
-     * Tests isMore() setter method.
-     */
-    @Test
-    public void testSetIsMore() throws Exception {
-        ddPacket.setIsMore(4);
-        int result = ddPacket.isMore();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(4));
-    }
-
-    /**
-     * Tests imtu() getter method.
-     */
-    @Test
-    public void testGetImtu() throws Exception {
-        ddPacket.setImtu(5);
-        result = ddPacket.imtu();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(5));
-    }
-
-    /**
-     * Tests imtu() setter method.
-     */
-    @Test
-    public void testSetImtu() throws Exception {
-        ddPacket.setImtu(5);
-        result = ddPacket.imtu();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(5));
-    }
-
-    /**
-     * Tests options() getter method.
-     */
-    @Test
-    public void testGetOptions() throws Exception {
-        ddPacket.setOptions(2);
-        result = ddPacket.options();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(2));
-    }
-
-    /**
-     * Tests options() setter method.
-     */
-    @Test
-    public void testSetOptions() throws Exception {
-        ddPacket.setOptions(2);
-        result = ddPacket.options();
-        Assert.assertNotNull(result);
-        Assert.assertEquals(2, result);
-    }
-
-    /**
-     * Tests sequenceNo() getter method.
-     */
-    @Test
-    public void testGetSequenceno() throws Exception {
-        ddPacket.setSequenceNo(2020);
-        result1 = ddPacket.sequenceNo();
-        assertThat(result1, is(notNullValue()));
-        assertThat(result1, is(2020L));
-    }
-
-    /**
-     * Tests sequenceNo() setter method.
-     */
-    @Test
-    public void testSetSequenceno() throws Exception {
-        ddPacket.setSequenceNo(2020);
-        result3 = ddPacket.sequenceNo();
-        assertThat(result3, is(notNullValue()));
-        assertThat(result3, is(2020L));
-    }
-
-    /**
-     * Tests getLsaHeaderList() getter method.
-     */
-    @Test
-    public void testGetLsaHeaderList() throws Exception {
-        ddPacket.addLsaHeader(createLsaHeader());
-        opqueHeader = new OpaqueLsaHeader();
-        opqueHeader.setLsType(9);
-        opqueHeader.setLsPacketLen(48);
-        opqueHeader.setLsCheckSum(10);
-        opqueHeader.setAge(4);
-        opqueHeader.setOpaqueId(9);
-        opqueHeader.setOpaqueType(9);
-        opqueHeader.setLsSequenceNo(250);
-        opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader.setOptions(2);
-        ddPacket.setIsOpaqueCapable(true);
-        ddPacket.addLsaHeader(opqueHeader);
-        opqueHeader1 = new OpaqueLsaHeader();
-        opqueHeader1.setLsType(10);
-        opqueHeader1.setLsPacketLen(48);
-        opqueHeader1.setLsCheckSum(10);
-        opqueHeader1.setAge(4);
-        opqueHeader1.setOpaqueId(9);
-        opqueHeader1.setOpaqueType(9);
-        opqueHeader1.setLsSequenceNo(250);
-        opqueHeader1.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader1.setOptions(66);
-        ddPacket.addLsaHeader(opqueHeader1);
-        header = ddPacket.getLsaHeaderList();
-        assertThat(header, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsaHeaderList() setter method.
-     */
-    @Test
-    public void testSetLsaHeaderList() throws Exception {
-        ddPacket.addLsaHeader(createLsaHeader());
-        opqueHeader = new OpaqueLsaHeader();
-        opqueHeader.setLsType(9);
-        opqueHeader.setLsPacketLen(48);
-        opqueHeader.setLsCheckSum(10);
-        opqueHeader.setAge(4);
-        opqueHeader.setOpaqueId(9);
-        opqueHeader.setOpaqueType(9);
-        opqueHeader.setLsSequenceNo(250);
-        opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader.setOptions(66);
-        ddPacket.addLsaHeader(opqueHeader);
-        opqueHeader1 = new OpaqueLsaHeader();
-        opqueHeader1.setLsType(10);
-        opqueHeader1.setLsPacketLen(48);
-        opqueHeader1.setLsCheckSum(10);
-        opqueHeader1.setAge(4);
-        opqueHeader1.setOpaqueId(9);
-        opqueHeader1.setOpaqueType(9);
-        opqueHeader1.setLsSequenceNo(250);
-        opqueHeader1.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader1.setOptions(2);
-        ddPacket.addLsaHeader(opqueHeader1);
-        header = ddPacket.getLsaHeaderList();
-        assertThat(header.contains(createLsaHeader()), is(true));
-    }
-
-    /**
-     * Tests addLsaHeader() method.
-     */
-    @Test
-    public void testAddLsaHeader() throws Exception {
-        ddPacket.addLsaHeader(createLsaHeader());
-        assertThat(ddPacket, is(notNullValue()));
-    }
-
-    /**
-     * Tests ospfMessageType() getter method.
-     */
-    @Test
-    public void testGetOspfMessageType() throws Exception {
-        ospfPacketType = ddPacket.ospfMessageType();
-        assertThat(ospfPacketType, is(notNullValue()));
-        assertThat(ospfPacketType, is(OspfPacketType.DD));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        ospfPacketHeader = new OspfPacketHeader();
-        ospfPacketHeader.setAreaId(Ip4Address.valueOf("1.1.1.1"));
-        ospfPacketHeader.setAuthentication(0);
-        ospfPacketHeader.setAuthType(0);
-        ospfPacketHeader.setChecksum(12345);
-        ospfPacketHeader.setDestinationIp(Ip4Address.valueOf("10.10.10.10"));
-        ospfPacketHeader.setOspfPacLength(56);
-        ospfPacketHeader.setOspftype(2);
-        ospfPacketHeader.setOspfVer(2);
-        ospfPacketHeader.setRouterId(Ip4Address.valueOf("2.2.2.2"));
-        ospfPacketHeader.setSourceIp(Ip4Address.valueOf("3.3.3.3"));
-        ddPacket.setIsOpaqueCapable(true);
-        ddPacket.setOptions(66);
-        ddPacket = new DdPacket(ospfPacketHeader);
-        packet = createByteForDdPacket();
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        ddPacket.readFrom(channelBuffer);
-        assertThat(ddPacket, is(notNullValue()));
-        assertThat(ddPacket.ospfMessageType(), is(OspfPacketType.DD));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result2 = ddPacket.asBytes();
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests getDdHeaderAsByteArray() method.
-     */
-    @Test
-    public void testGetDdHeaderAsByteArray() throws Exception {
-        opqueHeader = new OpaqueLsaHeader();
-        opqueHeader.setLsType(9);
-        opqueHeader.setLsPacketLen(48);
-        opqueHeader.setLsCheckSum(10);
-        opqueHeader.setAge(4);
-        opqueHeader.setOpaqueId(9);
-        opqueHeader.setOpaqueType(9);
-        opqueHeader.setLsSequenceNo(250);
-        opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader.setOptions(66);
-        ddPacket.addLsaHeader(opqueHeader);
-        opqueHeader1 = new OpaqueLsaHeader();
-        opqueHeader1.setLsType(10);
-        opqueHeader1.setLsPacketLen(48);
-        opqueHeader1.setLsCheckSum(10);
-        opqueHeader1.setAge(4);
-        opqueHeader1.setOpaqueId(9);
-        opqueHeader1.setOpaqueType(9);
-        opqueHeader1.setLsSequenceNo(250);
-        opqueHeader1.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165"));
-        opqueHeader1.setOptions(2);
-        ddPacket.addLsaHeader(opqueHeader1);
-        result2 = ddPacket.getDdHeaderAsByteArray();
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests getDdBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetDdBodyAsByteArray() throws Exception {
-        lsaHeader = createLsaHeader();
-        ddPacket.addLsaHeader(lsaHeader);
-        result2 = ddPacket.getDdBodyAsByteArray();
-        assertThat(result2, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(ddPacket.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private LsaHeader createLsaHeader() {
-        lsaHeader = new LsaHeader();
-        lsaHeader.setAge(10);
-        lsaHeader.setLinkStateId("10.226.165.164");
-        lsaHeader.setLsCheckSum(222);
-        lsaHeader.setLsPacketLen(48);
-        lsaHeader.setLsSequenceNo(2020);
-        lsaHeader.setLsType(2);
-        lsaHeader.setOptions(2);
-        lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("10.226.165.165"));
-        return lsaHeader;
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private byte[] createByteForDdPacket() {
-        byte[] ddPacket = {5, -36, 66, 1, 65, 119, -87, 126, 0, 23, 2, 1, 10, 10,
-                10, 10, 10, 10, 10, 10, -128, 0, 0, 6, -69, 26, 0, 36};
-
-        return ddPacket;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/HelloPacketTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/HelloPacketTest.java
deleted file mode 100644
index f4dd79e..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/HelloPacketTest.java
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfPacketType;
-import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
-
-import java.util.Vector;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for HelloPacket.
- */
-public class HelloPacketTest {
-
-    private boolean result1;
-    private OspfPacketType ospfPacketType;
-    private OspfPacketHeader ospfPacketHeader;
-    private HelloPacket helloPacket;
-    private Vector<String> neighborAddress = new Vector();
-    private Ip4Address result;
-    private int result2;
-    private byte[] packet;
-    private ChannelBuffer channelBuffer;
-    private byte[] result3;
-
-    @Before
-    public void setUp() throws Exception {
-        helloPacket = new HelloPacket();
-        helloPacket.setAuthType(1);
-        helloPacket.setOspftype(2);
-        helloPacket.setRouterId(Ip4Address.valueOf("10.226.165.164"));
-        helloPacket.setAreaId(Ip4Address.valueOf("10.226.165.100"));
-        helloPacket.setChecksum(201);
-        helloPacket.setAuthentication(2);
-        helloPacket.setOspfPacLength(48);
-        helloPacket.setOspfVer(2);
-
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        helloPacket = null;
-        result = null;
-        ospfPacketType = null;
-        ospfPacketHeader = null;
-        packet = null;
-        channelBuffer = null;
-        result3 = null;
-    }
-
-    /**
-     * Tests networkMask() getter method.
-     */
-    @Test
-    public void testGetNetworkMask() throws Exception {
-        helloPacket.setNetworkMask(Ip4Address.valueOf("10.226.165.164"));
-        result = helloPacket.networkMask();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(Ip4Address.valueOf("10.226.165.164")));
-    }
-
-    /**
-     * Tests networkMask() setter method.
-     */
-    @Test
-    public void testSetNetworkMask() throws Exception {
-        helloPacket.setNetworkMask(Ip4Address.valueOf("10.226.165.164"));
-        result = helloPacket.networkMask();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(Ip4Address.valueOf("10.226.165.164")));
-    }
-
-    /**
-     * Tests bdr() setter method.
-     */
-    @Test
-    public void testSetBdr() throws Exception {
-        helloPacket.setBdr(Ip4Address.valueOf("10.226.165.166"));
-        result = helloPacket.bdr();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(Ip4Address.valueOf("10.226.165.166")));
-    }
-
-    /**
-     * Tests dr() getter method.
-     */
-    @Test
-    public void testGetDr() throws Exception {
-        helloPacket.setDr(Ip4Address.valueOf("10.226.165.167"));
-        result = helloPacket.dr();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(Ip4Address.valueOf("10.226.165.167")));
-    }
-
-    /**
-     * Tests dr() setter method.
-     */
-    @Test
-    public void testSetDr() throws Exception {
-        helloPacket.setDr(Ip4Address.valueOf("10.226.165.167"));
-        result = helloPacket.dr();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(Ip4Address.valueOf("10.226.165.167")));
-    }
-
-    /**
-     * Tests addNeighbor() method.
-     */
-    @Test
-    public void testAddNeighbor() throws Exception {
-        helloPacket.addNeighbor(Ip4Address.valueOf("10.226.165.170"));
-        result1 = helloPacket.containsNeighbour(Ip4Address.valueOf("10.226.165.170"));
-        assertThat(result1, is(true));
-    }
-
-    /**
-     * Tests containsNeighbour() method.
-     */
-    @Test
-    public void testContainsNeighbour() throws Exception {
-        helloPacket.addNeighbor(Ip4Address.valueOf("10.226.165.200"));
-        result1 = helloPacket.containsNeighbour(Ip4Address.valueOf("10.226.165.200"));
-        assertThat(result1, is(true));
-    }
-
-
-    /**
-     * Tests options() getter  method.
-     */
-    @Test
-    public void testGetOptions() throws Exception {
-        helloPacket.setOptions(10);
-        result2 = helloPacket.options();
-        assertThat(result2, is(notNullValue()));
-        assertThat(result2, is(10));
-    }
-
-    /**
-     * Tests options() setter  method.
-     */
-    @Test
-    public void testSetOptions() throws Exception {
-        helloPacket.setOptions(11);
-        result2 = helloPacket.options();
-        assertThat(result2, is(notNullValue()));
-        assertThat(result2, is(11));
-    }
-
-    /**
-     * Tests routerPriority() getter  method.
-     */
-    @Test
-    public void testGetRouterPriority() throws Exception {
-        helloPacket.setRouterPriority(1);
-        result2 = helloPacket.routerPriority();
-        assertThat(result2, is(notNullValue()));
-        assertThat(result2, is(1));
-    }
-
-    /**
-     * Tests routerPriority() setter  method.
-     */
-    @Test
-    public void testSetRouterPriority() throws Exception {
-        helloPacket.setRouterPriority(2);
-        result2 = helloPacket.routerPriority();
-        assertThat(result2, is(notNullValue()));
-        assertThat(result2, is(2));
-    }
-
-    /**
-     * Tests helloInterval() getter  method.
-     */
-    @Test
-    public void testGetHelloInterval() throws Exception {
-        helloPacket.setHelloInterval(10);
-        result2 = helloPacket.helloInterval();
-        assertThat(result2, is(notNullValue()));
-        assertThat(result2, is(10));
-    }
-
-    /**
-     * Tests helloInterval() setter  method.
-     */
-    @Test
-    public void testSetHelloInterval() throws Exception {
-        helloPacket.setHelloInterval(10);
-        result2 = helloPacket.helloInterval();
-        assertThat(result2, is(notNullValue()));
-        assertThat(result2, is(10));
-    }
-
-    /**
-     * Tests routerDeadInterval() getter  method.
-     */
-    @Test
-    public void testGetRouterDeadInterval() throws Exception {
-        helloPacket.setRouterDeadInterval(50);
-        result2 = helloPacket.routerDeadInterval();
-        assertThat(result2, is(notNullValue()));
-        assertThat(result2, is(50));
-    }
-
-    /**
-     * Tests routerDeadInterval() setter  method.
-     */
-    @Test
-    public void testSetRouterDeadInterval() throws Exception {
-        helloPacket.setRouterDeadInterval(50);
-        result2 = helloPacket.routerDeadInterval();
-        assertThat(result2, is(notNullValue()));
-        assertThat(result2, is(50));
-    }
-
-    /**
-     * Tests ospfMessageType() getter  method.
-     */
-    @Test
-    public void testGetOspfMessageType() throws Exception {
-        ospfPacketType = helloPacket.ospfMessageType();
-        assertThat(ospfPacketType, is(notNullValue()));
-        assertThat(ospfPacketType, is(OspfPacketType.HELLO));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        ospfPacketHeader = new OspfPacketHeader();
-        ospfPacketHeader.setAreaId(Ip4Address.valueOf("1.1.1.1"));
-        ospfPacketHeader.setAuthentication(0);
-        ospfPacketHeader.setAuthType(0);
-        ospfPacketHeader.setChecksum(12345);
-        ospfPacketHeader.setDestinationIp(Ip4Address.valueOf("10.10.10.10"));
-        ospfPacketHeader.setOspfPacLength(56);
-        ospfPacketHeader.setOspftype(1);
-        ospfPacketHeader.setOspfVer(2);
-        ospfPacketHeader.setRouterId(Ip4Address.valueOf("2.2.2.2"));
-        ospfPacketHeader.setSourceIp(Ip4Address.valueOf("3.3.3.3"));
-        packet = createByteForHelloPacket();
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        helloPacket.readFrom(channelBuffer);
-        assertThat(helloPacket, is(notNullValue()));
-        assertThat(helloPacket.ospfMessageType(), is(OspfPacketType.HELLO));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result3 = helloPacket.asBytes();
-        assertThat(result3, is(notNullValue()));
-    }
-
-    /**
-     * Tests getHelloHeaderAsByteArray() method.
-     */
-    @Test
-    public void testGetHelloHeaderAsByteArray() throws Exception {
-        result3 = helloPacket.getHelloHeaderAsByteArray();
-        assertThat(result3, is(notNullValue()));
-    }
-
-    /**
-     * Tests getHelloBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetHelloBodyAsByteArray() throws Exception {
-        neighborAddress.add("10.226.165.100");
-        result3 = helloPacket.getHelloBodyAsByteArray();
-        assertThat(result3, is(notNullValue()));
-    }
-
-    /**
-     * Tests getHelloBodyAsByteArray() method.
-     */
-    @Test
-    public void testReadHelloBody() throws Exception {
-        helloPacket.getHelloBodyAsByteArray();
-        assertThat(helloPacket, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(helloPacket.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private byte[] createByteForHelloPacket() {
-        byte[] helloPacket = {2, 1, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, 39, 59, 0, 0, 0, 0,
-                0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 10, 2, 1, 0, 0, 0, 40, -64, -88, -86, 8, 0, 0, 0, 0};
-
-        return helloPacket;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsAcknowledgeTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsAcknowledgeTest.java
deleted file mode 100644
index f25b66a..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsAcknowledgeTest.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket.types;
-
-import org.hamcrest.MatcherAssert;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfPacketType;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
-
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for LsAck.
- */
-public class LsAcknowledgeTest {
-
-    private LsaHeader lsaHeader;
-    private LsAcknowledge lsAck;
-    private OspfPacketType ospfPacketType;
-    private OspfPacketHeader ospfPacketHeader;
-    private byte[] result;
-    private ChannelBuffer channelBuffer;
-    private OpaqueLsaHeader opaqueLsaHeader;
-
-    @Before
-    public void setUp() throws Exception {
-        lsaHeader = new LsaHeader();
-        lsAck = new LsAcknowledge();
-        lsAck.setAuthType(1);
-        lsAck.setOspftype(5);
-        lsAck.setRouterId(Ip4Address.valueOf("10.226.165.164"));
-        lsAck.setAreaId(Ip4Address.valueOf("10.226.165.100"));
-        lsAck.setChecksum(201);
-        lsAck.setAuthentication(2);
-        lsAck.setOspfPacLength(48);
-        lsAck.setOspfVer(2);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        lsaHeader = null;
-        lsAck = null;
-        ospfPacketType = null;
-        ospfPacketHeader = null;
-        result = null;
-        channelBuffer = null;
-        opaqueLsaHeader = null;
-    }
-
-    /**
-     * Tests getLinkStateHeaders() getter method.
-     */
-    @Test
-    public void testGetLinkStateHeaders() throws Exception {
-        lsaHeader = createLsaHeader();
-        lsAck.addLinkStateHeader(lsaHeader);
-        lsAck.addLinkStateHeader(lsaHeader);
-        List headers = lsAck.getLinkStateHeaders();
-        assertThat(headers.size(), is(1));
-
-    }
-
-    /**
-     * Tests addLinkStateHeader() method.
-     */
-    @Test
-    public void testAddLinkStateHeader() throws Exception {
-        lsaHeader = createLsaHeader();
-        lsAck.addLinkStateHeader(lsaHeader);
-        lsAck.addLinkStateHeader(lsaHeader);
-        assertThat(lsAck, is(notNullValue()));
-    }
-
-    /**
-     * Tests ospfMessageType() getter method.
-     */
-    @Test
-    public void testGetOspfMessageType() throws Exception {
-        ospfPacketType = lsAck.ospfMessageType();
-        assertThat(ospfPacketType, is(notNullValue()));
-        assertThat(ospfPacketType, is(OspfPacketType.LSAACK));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        ospfPacketHeader = new OspfPacketHeader();
-        ospfPacketHeader.setAreaId(Ip4Address.valueOf("1.1.1.1"));
-        ospfPacketHeader.setAuthentication(0);
-        ospfPacketHeader.setAuthType(0);
-        ospfPacketHeader.setChecksum(12345);
-        ospfPacketHeader.setDestinationIp(Ip4Address.valueOf("10.10.10.10"));
-        ospfPacketHeader.setOspfPacLength(56);
-        ospfPacketHeader.setOspftype(5);
-        ospfPacketHeader.setOspfVer(2);
-        ospfPacketHeader.setRouterId(Ip4Address.valueOf("2.2.2.2"));
-        ospfPacketHeader.setSourceIp(Ip4Address.valueOf("3.3.3.3"));
-        result = createByteForLSAck();
-        lsAck = new LsAcknowledge(ospfPacketHeader);
-        channelBuffer = ChannelBuffers.copiedBuffer(result);
-        lsAck.readFrom(channelBuffer);
-        assertThat(lsAck, is(notNullValue()));
-        assertThat(lsAck.ospfMessageType(), is(OspfPacketType.LSAACK));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result = lsAck.asBytes();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsAckAsByteArray() method.
-     */
-    @Test
-    public void testGetLsAckAsByteArray() throws Exception {
-        result = lsAck.getLsAckAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsAckBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLsAckBodyAsByteArray() throws Exception {
-        lsaHeader = createLsaHeader();
-        opaqueLsaHeader = new OpaqueLsaHeader();
-        lsAck.addLinkStateHeader(lsaHeader);
-        lsAck.addLinkStateHeader(opaqueLsaHeader);
-        result = lsAck.getLsAckBodyAsByteArray();
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        MatcherAssert.assertThat(lsAck.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private LsaHeader createLsaHeader() {
-        lsaHeader = new LsaHeader();
-        lsaHeader.setAge(10);
-        lsaHeader.setLinkStateId("10.226.165.164");
-        lsaHeader.setLsCheckSum(222);
-        lsaHeader.setLsPacketLen(48);
-        lsaHeader.setLsSequenceNo(2020);
-        lsaHeader.setLsType(5);
-        lsaHeader.setOptions(2);
-        lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("10.226.165.165"));
-        return lsaHeader;
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private byte[] createByteForLSAck() {
-        byte[] lsAckPacket = {2, 5, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, -30,
-                -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 16, 2, 1, -64, -88, -86,
-                2, -64, -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48};
-
-        return lsAckPacket;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequestTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequestTest.java
deleted file mode 100644
index af6320f..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequestTest.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfPacketType;
-import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
-import org.onosproject.ospf.protocol.ospfpacket.subtype.LsRequestPacket;
-
-import java.net.UnknownHostException;
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for LsRequest.
- */
-public class LsRequestTest {
-
-    private LsRequest lsRequest;
-    private List<LsRequestPacket> result;
-    private OspfPacketType ospfMessageType;
-    private OspfPacketHeader ospfPacketHeader;
-    private byte[] result1;
-    private String result2;
-    private ChannelBuffer channelBuffer;
-    private LsRequestPacket lsRequestPacket;
-
-    @Before
-    public void setUp() throws Exception {
-        lsRequest = new LsRequest();
-        lsRequest.setAuthType(1);
-        lsRequest.setOspftype(3);
-        lsRequest.setRouterId(Ip4Address.valueOf("10.226.165.164"));
-        lsRequest.setAreaId(Ip4Address.valueOf("10.226.165.163"));
-        lsRequest.setChecksum(201);
-        lsRequest.setAuthentication(2);
-        lsRequest.setOspfPacLength(48);
-        lsRequest.setOspfVer(2);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        lsRequest = null;
-        result = null;
-        ospfMessageType = null;
-        ospfPacketHeader = null;
-        result1 = null;
-        channelBuffer = null;
-        lsRequestPacket = null;
-    }
-
-    /**
-     * Tests addLinkStateRequests() method.
-     */
-    @Test
-    public void testAddLinkStateRequests() throws Exception {
-        lsRequest.addLinkStateRequests(createLsRequestPacket());
-        result = lsRequest.getLinkStateRequests();
-        assertThat(result, is(notNullValue()));
-        assertThat(result.size(), is(1));
-    }
-
-    /**
-     * Tests getLinkStateRequests() method.
-     */
-    @Test
-    public void testGetLinkStateRequests() throws Exception {
-        lsRequest.addLinkStateRequests(createLsRequestPacket());
-        lsRequest.addLinkStateRequests(new LsRequestPacket());
-        result = lsRequest.getLinkStateRequests();
-        assertThat(result, is(notNullValue()));
-        assertThat(result.size(), is(2));
-    }
-
-    /**
-     * Tests ospfMessageType()getter  method.
-     */
-    @Test
-    public void testGetOspfMessageType() throws Exception {
-        ospfMessageType = lsRequest.ospfMessageType();
-        assertThat(ospfMessageType, is(notNullValue()));
-        assertThat(ospfMessageType, is(OspfPacketType.LSREQUEST));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        ospfPacketHeader = new OspfPacketHeader();
-        ospfPacketHeader.setAreaId(Ip4Address.valueOf("1.1.1.1"));
-        ospfPacketHeader.setAuthentication(0);
-        ospfPacketHeader.setAuthType(0);
-        ospfPacketHeader.setChecksum(12345);
-        ospfPacketHeader.setDestinationIp(Ip4Address.valueOf("10.10.10.10"));
-        ospfPacketHeader.setOspfPacLength(56);
-        ospfPacketHeader.setOspftype(3);
-        ospfPacketHeader.setOspfVer(2);
-        ospfPacketHeader.setRouterId(Ip4Address.valueOf("2.2.2.2"));
-        ospfPacketHeader.setSourceIp(Ip4Address.valueOf("3.3.3.3"));
-        lsRequest = new LsRequest(ospfPacketHeader);
-        result1 = createByteLsReqestPacket();
-        channelBuffer = ChannelBuffers.copiedBuffer(result1);
-        lsRequest.readFrom(channelBuffer);
-        assertThat(lsRequest, is(notNullValue()));
-        assertThat(lsRequest.ospfMessageType(), is(OspfPacketType.LSREQUEST));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result1 = lsRequest.asBytes();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsrHeaderAsByteArray() method.
-     */
-    @Test
-    public void testGetLsrHeaderAsByteArray() throws Exception {
-        result1 = lsRequest.getLsrHeaderAsByteArray();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsrBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLsrBodyAsByteArray() throws Exception {
-        lsRequest.addLinkStateRequests(createLsRequestPacket());
-        lsRequest.addLinkStateRequests(new LsRequestPacket());
-        result1 = lsRequest.getLsrBodyAsByteArray();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        result2 = lsRequest.toString();
-        assertThat(result2, is(notNullValue()));
-    }
-
-    private LsRequestPacket createLsRequestPacket() throws UnknownHostException {
-        lsRequestPacket = new LsRequestPacket();
-        lsRequestPacket.setOwnRouterId("165");
-        lsRequestPacket.setLinkStateId("10.226.165.164");
-        lsRequestPacket.setLsType(2);
-        return lsRequestPacket;
-    }
-
-    private byte[] createByteLsReqestPacket() {
-        byte[] lsRequestPacket = {2, 3, 0, 36, -64, -88, -86, 3, 0, 0, 0, 1, -67,
-                -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -64, -88, -86, 8,
-                -64, -88, -86, 8};
-        return lsRequestPacket;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdateTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdateTest.java
deleted file mode 100644
index b45821b..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdateTest.java
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.ospfpacket.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.controller.OspfLsa;
-import org.onosproject.ospf.controller.OspfPacketType;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.lsa.types.AsbrSummaryLsa;
-import org.onosproject.ospf.protocol.lsa.types.ExternalLsa;
-import org.onosproject.ospf.protocol.lsa.types.NetworkLsa;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa11;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa9;
-import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
-import org.onosproject.ospf.protocol.lsa.types.SummaryLsa;
-import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
-
-import java.util.List;
-import java.util.Vector;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for LsUpdate.
- */
-public class LsUpdateTest {
-
-    private final byte[] packet1 = {0, 0, 0, 2, 0, 10, 2, 1, 7, 7, 7, 7, 7, 7, 7, 7,
-            -128, 0, 0, 2, 46, -126, 0, 48, 0, 0, 0, 2, 1, 1, 1, 1, 10, 10, 10, 7, 1,
-            0, 0, 10, 10, 10, 10, 0, -1, -1, -1, 0, 3, 0, 0, 10, 0, 10, 66, 10, 1, 0,
-            0, 1, 7, 7, 7, 7, -128, 0, 0, 1, -64, 79, 0, 116, 0, 1, 0, 4, 0, 0, 0, 0,
-            0, 2, 0, 84, 0, 1, 0, 1, 1, 0, 0, 0, 0, 2, 0, 4, 10, 10, 10, 0, 0, 5, 0,
-            4, 0, 0, 0, 0, 0, 6, 0, 4, 73, -104, -106, -128, 0, 7, 0, 4, 73, -104, -106,
-            -128, 0, 8, 0, 32, 73, -104, -106, -128, 73, -104, -106, -128, 73, -104, -106,
-            -128, 73, -104, -106, -128, 73, -104, -106, -128, 73, -104, -106, -128, 73,
-            -104, -106, -128, 73, -104, -106, -128, 0, 9, 0, 4, 0, 0, 0, 0};
-    private final byte[] packet3 = {0, 0, 0, 1, 0, 100, 2, 10, 1, 0, 0, 1, 9, 9, 9, 9,
-            -128, 0, 0, 1, -7, 62, 0, -124, 0, 2, 0, 108, 0, 1, 0, 1, 2, 0, 0, 0, 0, 2,
-            0, 4, -64, -88, 7, -91, 0, 3, 0, 4, -64, -88, 7, -91, 0, 4, 0, 4, 0, 0, 0,
-            0, 0, 5, 0, 4, 0, 0, 0, 1, 0, 6, 0, 4, 0, 0, 0, 0, 0, 7, 0, 4, 0, 0, 0, 0,
-            0, 8, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 4, 0, 0, 0, 0, -128, 2, 0, 4, 0,
-            0, 0, 1};
-    private final byte[] packet2 = {0, 0,
-            0, 1, 0, 1, 2, 2, -64, -88,
-            -86, 8, -64, -88, -86, 8, -128, 0, 0, 1, 55, -73, 0, 32, -1, -1, -1, 0, -64,
-            -88, -86, 3, -64, -88, -86, 8};
-    private final byte[] packet4 = {0, 0, 0, 1, 0, 100, 2, 9, 1, 0, 0, 1, 9, 9, 9, 9, -128,
-            0, 0, 1, -7, 62, 0, -124, 0, 2, 0, 108, 0, 1, 0, 1, 2, 0, 0, 0, 0, 2, 0, 4, -64,
-            -88, 7, -91, 0, 3, 0, 4, -64, -88, 7, -91, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0,
-            0, 0, 1, 0, 6, 0, 4, 0, 0, 0, 0, 0, 7, 0, 4, 0, 0, 0, 0, 0, 8, 0, 32, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 9, 0, 4, 0, 0, 0, 0, -128, 2, 0, 4, 0, 0, 0, 1};
-
-    private final byte[] packet5 = {0, 0, 0, 1, 0, 100, 2, 11, 1, 0, 0, 1, 9, 9, 9, 9, -128, 0,
-            0, 1, -7, 62, 0, -124, 0, 2, 0, 108, 0, 1, 0, 1, 2, 0, 0, 0, 0, 2, 0, 4, -64, -88,
-            7, -91, 0, 3, 0, 4, -64, -88, 7, -91, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0,
-            1, 0, 6, 0, 4, 0, 0, 0, 0, 0, 7, 0, 4, 0, 0, 0, 0, 0, 8, 0, 32, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            9, 0, 4, 0, 0, 0, 0, -128, 2, 0, 4, 0, 0, 0, 1};
-    private final byte[] packet6 = {0, 0, 0, 1, 0, 100, 2, 3, 1, 0, 0, 1, 9, 9, 9, 9, -128,
-            0, 0, 1, -7, 62, 0, -124, 0, 2, 0, 108, 0, 1, 0, 1, 2, 0, 0, 0, 0, 2, 0, 4, -64,
-            -88, 7, -91, 0, 3, 0, 4, -64, -88, 7, -91, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4,
-            0, 0, 0, 1, 0, 6, 0, 4, 0, 0, 0, 0, 0, 7, 0, 4, 0, 0, 0, 0, 0, 8, 0, 32, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 9, 0, 4, 0, 0, 0, 0, -128, 2, 0, 4, 0, 0, 0, 1};
-    private final byte[] packet7 = {0, 0, 0, 1, 0, 100, 2, 4, 1, 0, 0, 1, 9, 9, 9, 9, -128,
-            0, 0, 1, -7, 62, 0, -124, 0, 2, 0, 108, 0, 1, 0, 1, 2, 0, 0, 0, 0, 2, 0, 4, -64,
-            -88, 7, -91, 0, 3, 0, 4, -64, -88, 7, -91, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0,
-            0, 0, 1, 0, 6, 0, 4, 0, 0, 0, 0, 0, 7, 0, 4, 0, 0, 0, 0, 0, 8, 0, 32, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 9, 0, 4, 0, 0, 0, 0, -128, 2, 0, 4, 0, 0, 0, 1};
-
-    private final byte[] packet8 = {0, 0, 0, 2, 1, 4, 2, 1, 5, 5, 5, 5, 5, 5, 5, 5, -128, 0, 0,
-            4, -39, -84, 0, 36, 1, 0, 0, 1, -64, -88, 7, 90, -64, -88, 7, 92, 2, 0, 0, 10, 1, 4,
-            2, 4, -34, -34, -34, -34, 5, 5, 5, 5, -128, 0, 0, 1, 31, -93, 0, 28, 0, 0, 0, 0, 0,
-            0, 0, 10};
-    private LsUpdate lsUpdate;
-    private RouterLsa ospflsa;
-    private NetworkLsa ospflsa1;
-    private SummaryLsa ospflsa2;
-    private AsbrSummaryLsa ospflsa3;
-    private ExternalLsa ospflsa4;
-    private Vector<OspfLsa> listLsa = new Vector();
-    private List lsa;
-    private int result;
-    private OspfPacketType ospfMessageType;
-    private OspfPacketHeader ospfPacketHeader;
-    private byte[] result1;
-    private ChannelBuffer channelBuffer;
-    private OpaqueLsa10 opaqueLsa10;
-    private OpaqueLsa9 opaqueLsa9;
-    private OpaqueLsa11 opaqueLsa11;
-
-    @Before
-    public void setUp() throws Exception {
-        lsUpdate = new LsUpdate();
-        ospflsa = new RouterLsa();
-        lsUpdate.setAuthType(1);
-        lsUpdate.setOspftype(2);
-        lsUpdate.setRouterId(Ip4Address.valueOf("10.226.165.164"));
-        lsUpdate.setAreaId(Ip4Address.valueOf("10.226.165.100"));
-        lsUpdate.setChecksum(201);
-        lsUpdate.setAuthentication(2);
-        lsUpdate.setOspfPacLength(48);
-        lsUpdate.setOspfVer(2);
-        ospflsa.setLsType(1);
-        lsUpdate.addLsa(ospflsa);
-        ospflsa1 = new NetworkLsa();
-        ospflsa1.setNetworkMask(Ip4Address.valueOf("10.226.165.164"));
-        ospflsa1.setLsType(2);
-        lsUpdate.addLsa(ospflsa1);
-        ospflsa2 = new SummaryLsa(new LsaHeader());
-        ospflsa2.setLsType(3);
-        lsUpdate.addLsa(ospflsa2);
-        ospflsa3 = new AsbrSummaryLsa(new LsaHeader());
-        ospflsa3.setNetworkMask(Ip4Address.valueOf("10.226.165.164"));
-        ospflsa3.setLsType(4);
-        lsUpdate.addLsa(ospflsa3);
-        ospflsa4 = new ExternalLsa(new LsaHeader());
-        ospflsa4.setLsType(5);
-        lsUpdate.addLsa(ospflsa4);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        lsUpdate = null;
-        ospflsa = null;
-        ospflsa1 = null;
-        ospflsa2 = null;
-        ospflsa3 = null;
-        ospflsa4 = null;
-        listLsa.clear();
-        lsa = null;
-        ospfMessageType = null;
-        ospfPacketHeader = null;
-        result1 = null;
-        channelBuffer = null;
-        opaqueLsa9 = null;
-        opaqueLsa10 = null;
-        opaqueLsa11 = null;
-    }
-
-    /**
-     * Tests getLsaList() getter method.
-     */
-    @Test
-    public void testGetListLsa() throws Exception {
-        lsUpdate.addLsa(ospflsa);
-        lsUpdate.addLsa(ospflsa);
-        lsa = lsUpdate.getLsaList();
-        assertThat(lsa, is(notNullValue()));
-        assertThat(lsa.size(), is(5));
-    }
-
-    /**
-     * Tests addLsa() method.
-     */
-    @Test
-    public void testAddLsa() throws Exception {
-        lsUpdate.addLsa(ospflsa);
-        assertThat(lsUpdate, is(notNullValue()));
-    }
-
-    /**
-     * Tests noLsa() getter  method.
-     */
-    @Test
-    public void testGetNoLsa() throws Exception {
-        lsUpdate.setNumberOfLsa(5);
-        result = lsUpdate.noLsa();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(5));
-    }
-
-    /**
-     * Tests noLsa() setter  method.
-     */
-    @Test
-    public void testSetNoLsa() throws Exception {
-        lsUpdate.setNumberOfLsa(5);
-        result = lsUpdate.noLsa();
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(5));
-    }
-
-    /**
-     * Tests ospfMessageType() getter  method.
-     */
-    @Test
-    public void testGetOspfMessageType() throws Exception {
-        ospfMessageType = lsUpdate.ospfMessageType();
-        assertThat(ospfMessageType, is(OspfPacketType.LSUPDATE));
-    }
-
-    /**
-     * Tests readFrom() method.
-     */
-    @Test
-    public void testReadFrom() throws Exception {
-        ospfPacketHeader = new OspfPacketHeader();
-        ospfPacketHeader.setAreaId(Ip4Address.valueOf("1.1.1.1"));
-        ospfPacketHeader.setAuthentication(0);
-        ospfPacketHeader.setAuthType(0);
-        ospfPacketHeader.setChecksum(12345);
-        ospfPacketHeader.setDestinationIp(Ip4Address.valueOf("10.10.10.10"));
-        ospfPacketHeader.setOspfPacLength(56);
-        ospfPacketHeader.setOspftype(4);
-        ospfPacketHeader.setOspfVer(2);
-        ospfPacketHeader.setRouterId(Ip4Address.valueOf("2.2.2.2"));
-        ospfPacketHeader.setSourceIp(Ip4Address.valueOf("3.3.3.3"));
-        lsUpdate = new LsUpdate(ospfPacketHeader);
-        result1 = createLsUpdatePacket();
-        channelBuffer = ChannelBuffers.copiedBuffer(result1);
-        lsUpdate.readFrom(channelBuffer);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
-        lsUpdate.readFrom(channelBuffer);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet2);
-        lsUpdate.readFrom(channelBuffer);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet3);
-        lsUpdate.readFrom(channelBuffer);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet4);
-        lsUpdate.readFrom(channelBuffer);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet5);
-        lsUpdate.readFrom(channelBuffer);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet6);
-        lsUpdate.readFrom(channelBuffer);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet7);
-        lsUpdate.readFrom(channelBuffer);
-        channelBuffer = ChannelBuffers.copiedBuffer(packet8);
-        lsUpdate.readFrom(channelBuffer);
-        assertThat(lsUpdate, is(notNullValue()));
-        assertThat(lsUpdate.ospfMessageType(), is(OspfPacketType.LSUPDATE));
-    }
-
-    /**
-     * Tests asBytes() method.
-     */
-    @Test
-    public void testAsBytes() throws Exception {
-        result1 = lsUpdate.asBytes();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsuHeaderAsByteArray() method.
-     */
-    @Test
-    public void testGetLsuHeaderAsByteArray() throws Exception {
-        result1 = lsUpdate.getLsuHeaderAsByteArray();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests getLsuBodyAsByteArray() method.
-     */
-    @Test
-    public void testGetLsuBodyAsByteArray() throws Exception {
-        lsUpdate.setNumberOfLsa(8);
-        lsUpdate.addLsa(ospflsa3);
-        opaqueLsa9 = new OpaqueLsa9(new OpaqueLsaHeader());
-        opaqueLsa9.setLsType(9);
-        lsUpdate.addLsa(opaqueLsa9);
-        opaqueLsa10 = new OpaqueLsa10(new OpaqueLsaHeader());
-        opaqueLsa10.setLsType(10);
-        lsUpdate.addLsa(opaqueLsa10);
-        opaqueLsa11 = new OpaqueLsa11(new OpaqueLsaHeader());
-        opaqueLsa10.setLsType(11);
-        lsUpdate.addLsa(opaqueLsa11);
-        result1 = lsUpdate.getLsuBodyAsByteArray();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    @Test
-    public void testGetLsuBodyAsByteArray1() throws Exception {
-        lsUpdate.setNumberOfLsa(8);
-        opaqueLsa10 = new OpaqueLsa10(new OpaqueLsaHeader());
-        opaqueLsa10.setLsType(10);
-        lsUpdate.addLsa(opaqueLsa10);
-        assertThat(result1, is(nullValue()));
-    }
-
-    @Test
-    public void testGetLsuBodyAsByteArray2() throws Exception {
-        opaqueLsa11 = new OpaqueLsa11(new OpaqueLsaHeader());
-        opaqueLsa11.setLsType(11);
-        lsUpdate.addLsa(opaqueLsa11);
-        result1 = lsUpdate.getLsuBodyAsByteArray();
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests to string method.
-     */
-    @Test
-    public void testToString() throws Exception {
-        assertThat(lsUpdate.toString(), is(notNullValue()));
-    }
-
-    /**
-     * Utility method used by junit methods.
-     */
-    private byte[] createLsUpdatePacket() {
-        byte[] lsUpdatePacket = {0, 0, 0, 7, 0, 2, 2,
-                1, -64, -88, -86, 3, -64, -88, -86, 3, -128, 0, 0, 1, 58,
-                -100, 0, 48, 2, 0, 0, 2, -64, -88, -86, 0, -1, -1, -1, 0,
-                3, 0, 0, 10, -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10,
-                0, 3, 2, 5, 80, -44, 16, 0, -64, -88, -86, 2, -128, 0, 0,
-                1, 42, 73, 0, 36, -1, -1, -1, -1, -128, 0, 0, 20, 0, 0,
-                0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -108, 121, -85, 0, -64, -88,
-                -86, 2, -128, 0, 0, 1, 52, -91, 0, 36, -1, -1, -1, 0,
-                -128, 0, 0, 20, -64, -88, -86, 1, 0, 0, 0, 0, 0, 3, 2, 5,
-                -64, -126, 120, 0, -64, -88, -86, 2, -128, 0, 0, 1, -45,
-                25, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20, 0, 0, 0, 0, 0,
-                0, 0, 0, 0, 3, 2, 5, -64, -88, 0, 0, -64, -88, -86, 2,
-                -128, 0, 0, 1, 55, 8, 0, 36, -1, -1, -1, 0, -128, 0, 0,
-                20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -64, -88, 1, 0,
-                -64, -88, -86, 2, -128, 0, 0, 1, 44, 18, 0, 36, -1, -1, -1, 0, -128, 0,
-                0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -64, -88, -84, 0, -64, -88,
-                -86, 2, -128, 0, 0, 1, 51, 65, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20, -64,
-                -88, -86, 10, 0, 0, 0, 0};
-        return lsUpdatePacket;
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/ChecksumCalculatorTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/ChecksumCalculatorTest.java
deleted file mode 100644
index 5f96afc..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/ChecksumCalculatorTest.java
+++ /dev/null
@@ -1,367 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.util;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
-import org.onosproject.ospf.protocol.lsa.types.AsbrSummaryLsa;
-import org.onosproject.ospf.protocol.lsa.types.ExternalLsa;
-import org.onosproject.ospf.protocol.lsa.types.NetworkLsa;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa11;
-import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa9;
-import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
-import org.onosproject.ospf.protocol.lsa.types.SummaryLsa;
-import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest;
-import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Unit test class for ChecksumCalculator.
- */
-public class ChecksumCalculatorTest {
-
-    private final int ospfChecksumPos1 = 12;
-    private final int ospfChecksumPos2 = 13;
-    private final int lsaChecksumPos1 = 16;
-    private final int lsaChecksumPos2 = 17;
-    private final byte[] updatePacket = {1, 1, 1, 1, 2, 4, 0, -96, 9, 9, 9, 9, 5, 5, 5, 5, 62, 125,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 100, 2, 10, 1, 0, 0, 1, 9, 9, 9, 9, -128,
-            0, 0, 1, -7, 62, 0, -124, 0, 2, 0, 108, 0, 1, 0, 1, 2, 0, 0, 0, 0, 2, 0, 4, -64, -88,
-            7, -91, 0, 3, 0, 4, -64, -88, 7, -91, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 1,
-            0, 6, 0, 4, 0, 0, 0, 0, 0, 7, 0, 4, 0, 0, 0, 0, 0, 8, 0, 32, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
-            0, 4, 0, 0, 0, 0, -128, 2, 0, 4, 0, 0, 0, 1};
-
-    private final byte[] helloPacket = {2, 1, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, 39, 59,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 10, 2, 1, 0, 0, 0, 40, -64, -88,
-            -86, 8, 0, 0, 0, 0};
-    private final byte[] rlsa = {14, 16, 2, 1, -64, -88, -86, 2, -64, -88, -86, 2, -128, 0,
-            0, 1, 74, -114, 0, 48, 2, 0, 0, 2, -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10,
-            -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10};
-    private ChecksumCalculator checksumCalculator;
-    private boolean validate;
-    private HelloPacket hello;
-    private LsUpdate message;
-    private DdPacket message1;
-    private LsRequest message2;
-    private RouterLsa router;
-    private LsAcknowledge lsack;
-    private ExternalLsa external;
-    private NetworkLsa external1;
-    private SummaryLsa external2;
-    private AsbrSummaryLsa external3;
-    private OpaqueLsa9 external4;
-    private OpaqueLsa10 external5;
-    private OpaqueLsa11 external6;
-    private byte[] result;
-
-    @Before
-    public void setUp() throws Exception {
-        checksumCalculator = new ChecksumCalculator();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        checksumCalculator = null;
-        hello = null;
-        message = null;
-        message1 = null;
-        message2 = null;
-        router = null;
-        lsack = null;
-        external = null;
-        external1 = null;
-        external2 = null;
-        external3 = null;
-        result = null;
-    }
-
-    /**
-     * Tests convertToSixteenBits() method.
-     */
-    @Test
-    public void testConvertToSixteenBits() throws Exception {
-        int num = checksumCalculator.convertToSixteenBits("16cdd");
-        assertThat(num, is(27870));
-    }
-
-    /**
-     * Tests isValidOspfCheckSum() method.
-     */
-    @Test
-    public void testIsValidOspfCheckSum() throws Exception {
-        hello = new HelloPacket();
-        hello.setOspfVer(2);
-        hello.setOspftype(1);
-        hello.setOspfPacLength(172);
-        hello.setRouterId(Ip4Address.valueOf("192.168.170.3"));
-        hello.setAreaId(Ip4Address.valueOf("0.0.0.1"));
-        hello.setChecksum(5537);
-        hello.setAuthType(0);
-        hello.setAuthentication(0);
-        validate = checksumCalculator.isValidOspfCheckSum(hello, ospfChecksumPos1, ospfChecksumPos2);
-        assertThat(validate, is(false));
-        lsack = new LsAcknowledge();
-        lsack.setOspfVer(2);
-        lsack.setOspftype(5);
-        lsack.setOspfPacLength(172);
-        lsack.setRouterId(Ip4Address.valueOf("192.168.170.3"));
-        lsack.setAreaId(Ip4Address.valueOf("0.0.0.1"));
-        lsack.setChecksum(37537);
-        lsack.setAuthType(0);
-        lsack.setAuthentication(0);
-        validate = checksumCalculator.isValidOspfCheckSum(lsack, ospfChecksumPos1, ospfChecksumPos2);
-        assertThat(validate, is(true));
-        message = new LsUpdate();
-        message.setOspfVer(2);
-        message.setOspftype(5);
-        message.setOspfPacLength(172);
-        message.setRouterId(Ip4Address.valueOf("192.168.170.3"));
-        message.setAreaId(Ip4Address.valueOf("0.0.0.1"));
-        message.setChecksum(37537);
-        message.setAuthType(0);
-        message.setAuthentication(0);
-        validate = checksumCalculator.isValidOspfCheckSum(message, ospfChecksumPos1, ospfChecksumPos2);
-        assertThat(validate, is(true));
-        message1 = new DdPacket();
-        message1.setOspfVer(2);
-        message1.setOspftype(5);
-        message1.setOspfPacLength(172);
-        message1.setRouterId(Ip4Address.valueOf("192.168.170.3"));
-        message1.setAreaId(Ip4Address.valueOf("0.0.0.1"));
-        message1.setChecksum(37537);
-        message1.setAuthType(0);
-        message1.setAuthentication(0);
-        validate = checksumCalculator.isValidOspfCheckSum(message1, ospfChecksumPos1, ospfChecksumPos2);
-        assertThat(validate, is(true));
-        message2 = new LsRequest();
-        message2.setOspfVer(2);
-        message2.setOspftype(5);
-        message2.setOspfPacLength(172);
-        message2.setRouterId(Ip4Address.valueOf("192.168.170.3"));
-        message2.setAreaId(Ip4Address.valueOf("0.0.0.1"));
-        message2.setChecksum(37537);
-        message2.setAuthType(0);
-        message2.setAuthentication(0);
-        validate = checksumCalculator.isValidOspfCheckSum(message2, ospfChecksumPos1, ospfChecksumPos2);
-        assertThat(validate, is(true));
-    }
-
-    /**
-     * Tests isValidLsaCheckSum() method.
-     */
-    @Test
-    public void testIsValidLsaCheckSum() throws Exception {
-        router = new RouterLsa();
-        router.setAge(1);
-        router.setOptions(2);
-        router.setLsType(1);
-        router.setLinkStateId("192.168.170.3");
-        router.setAdvertisingRouter(Ip4Address.valueOf("192.168.170.3"));
-        router.setLsSequenceNo(2147483649L);
-        router.setLsCheckSum(49499);
-        router.setLsPacketLen(48);
-        validate = checksumCalculator.isValidLsaCheckSum(router, router.lsType(), lsaChecksumPos1, lsaChecksumPos2);
-        assertThat(validate, is(true));
-
-    }
-
-    /**
-     * Tests isValidLsaCheckSum() method.
-     */
-    @Test
-    public void testIsValidLsaCheckSum4() throws Exception {
-        external = new ExternalLsa(new LsaHeader());
-        external.setAge(2);
-        external.setOptions(2);
-        external.setLsType(5);
-        external.setLinkStateId("80.212.16.0");
-        external.setAdvertisingRouter(Ip4Address.valueOf("192.168.170.2"));
-        external.setLsSequenceNo(2147483649L);
-        external.setLsCheckSum(25125);
-        external.setLsPacketLen(36);
-        validate = checksumCalculator.isValidLsaCheckSum(external, external.lsType(), lsaChecksumPos1, lsaChecksumPos2);
-        assertThat(validate, is(false));
-    }
-
-    /**
-     * Tests isValidLsaCheckSum() method.
-     */
-    @Test(expected = Exception.class)
-    public void testIsValidLsaCheckSum5() throws Exception {
-        external1 = new NetworkLsa();
-        external1.setAge(2);
-        external1.setOptions(2);
-        external1.setLsType(2);
-        external1.setLinkStateId("80.212.16.0");
-        external1.setAdvertisingRouter(Ip4Address.valueOf("192.168.170.2"));
-        external1.setLsSequenceNo(2147483649L);
-        external1.setLsCheckSum(25125);
-        external1.setLsPacketLen(36);
-        validate = checksumCalculator.isValidLsaCheckSum(external1, external1.lsType(),
-                                                         lsaChecksumPos1, lsaChecksumPos2);
-        assertThat(validate, is(false));
-    }
-
-    /**
-     * Tests isValidLsaCheckSum() method.
-     */
-    @Test
-    public void testIsValidLsaCheckSum6() throws Exception {
-
-        external2 = new SummaryLsa(new LsaHeader());
-        external2.setAge(2);
-        external2.setOptions(2);
-        external2.setLsType(3);
-        external2.setLinkStateId("80.212.16.0");
-        external2.setAdvertisingRouter(Ip4Address.valueOf("192.168.170.2"));
-        external2.setLsSequenceNo(2147483649L);
-        external2.setLsCheckSum(25125);
-        external2.setLsPacketLen(36);
-        validate = checksumCalculator.isValidLsaCheckSum(external2, external2.lsType(),
-                                                         lsaChecksumPos1, lsaChecksumPos2);
-        assertThat(validate, is(false));
-    }
-
-    /**
-     * Tests isValidLsaCheckSum() method.
-     */
-    @Test(expected = Exception.class)
-    public void testIsValidLsaCheckSum7() throws Exception {
-        external3 = new AsbrSummaryLsa(new LsaHeader());
-        external3.setAge(2);
-        external3.setOptions(2);
-        external3.setLsType(4);
-        external3.setLinkStateId("80.212.16.0");
-        external3.setAdvertisingRouter(Ip4Address.valueOf("192.168.170.2"));
-        external3.setLsSequenceNo(2147483649L);
-        external3.setLsCheckSum(25125);
-        external3.setLsPacketLen(36);
-        validate = checksumCalculator.isValidLsaCheckSum(external3, external3.lsType(),
-                                                         lsaChecksumPos1, lsaChecksumPos2);
-        assertThat(validate, is(false));
-    }
-
-    /**
-     * Tests isValidLsaCheckSum() method.
-     */
-    @Test(expected = Exception.class)
-    public void testIsValidLsaCheckSum1() throws Exception {
-        external4 = new OpaqueLsa9(new OpaqueLsaHeader());
-        external4.setAge(2);
-        external4.setOptions(2);
-        external4.setLsType(9);
-        external4.setLinkStateId("80.212.16.0");
-        external4.setAdvertisingRouter(Ip4Address.valueOf("192.168.170.2"));
-        external4.setLsSequenceNo(2147483649L);
-        external4.setLsCheckSum(25125);
-        external4.setLsPacketLen(36);
-        validate = checksumCalculator.isValidLsaCheckSum(external4, external4.lsType(),
-                                                         lsaChecksumPos1, lsaChecksumPos2);
-        assertThat(validate, is(false));
-    }
-
-    /**
-     * Tests isValidLsaCheckSum() method.
-     */
-    @Test(expected = Exception.class)
-    public void testIsValidLsaCheckSum2() throws Exception {
-        external5 = new OpaqueLsa10(new OpaqueLsaHeader());
-        external5.setAge(2);
-        external5.setOptions(2);
-        external5.setLsType(10);
-        external5.setLinkStateId("80.212.16.0");
-        external5.setAdvertisingRouter(Ip4Address.valueOf("192.168.170.2"));
-        external5.setLsSequenceNo(2147483649L);
-        external5.setLsCheckSum(25125);
-        external5.setLsPacketLen(36);
-        validate = checksumCalculator.isValidLsaCheckSum(external5, external5.lsType(),
-                                                         lsaChecksumPos1, lsaChecksumPos2);
-
-        assertThat(validate, is(false));
-    }
-
-    /**
-     * Tests isValidLsaCheckSum() method.
-     */
-    @Test(expected = Exception.class)
-    public void testIsValidLsaCheckSum3() throws Exception {
-        external6 = new OpaqueLsa11(new OpaqueLsaHeader());
-        external6.setAge(2);
-        external6.setOptions(2);
-        external6.setLsType(10);
-        external6.setLinkStateId("80.212.16.0");
-        external6.setAdvertisingRouter(Ip4Address.valueOf("192.168.170.2"));
-        external6.setLsSequenceNo(2147483649L);
-        external6.setLsCheckSum(25125);
-        external6.setLsPacketLen(36);
-        validate = checksumCalculator.isValidLsaCheckSum(external6, external6.lsType(),
-                                                         lsaChecksumPos1, lsaChecksumPos2);
-        assertThat(validate, is(false));
-    }
-
-    /**
-     * Tests validateLsaCheckSum() method.
-     */
-    @Test
-    public void testValidateLsaCheckSum() throws Exception {
-        assertThat(checksumCalculator.validateLsaCheckSum(rlsa, lsaChecksumPos1,
-                                                          lsaChecksumPos2), is(true));
-
-    }
-
-    /**
-     * Tests validateOspfCheckSum() method.
-     */
-    @Test
-    public void testValidateOspfCheckSum() throws Exception {
-        assertThat(checksumCalculator.validateOspfCheckSum(helloPacket, ospfChecksumPos1,
-                                                           ospfChecksumPos2), is(true));
-    }
-
-    /**
-     * Tests calculateLsaChecksum() method.
-     */
-    @Test
-    public void testCalculateLsaChecksum() throws Exception {
-        result = checksumCalculator.calculateLsaChecksum(rlsa, lsaChecksumPos1, lsaChecksumPos2);
-        assertThat(result, is(notNullValue()));
-    }
-
-    /**
-     * Tests calculateOspfCheckSum() method.
-     */
-    @Test
-    public void testCalculateOspfCheckSum() throws Exception {
-        result = checksumCalculator.calculateOspfCheckSum(helloPacket, ospfChecksumPos1,
-                                                          ospfChecksumPos2);
-        assertThat(result, is(notNullValue()));
-        result = checksumCalculator.calculateOspfCheckSum(updatePacket, ospfChecksumPos1,
-                                                          ospfChecksumPos2);
-        assertThat(result, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/OspfUtilTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/OspfUtilTest.java
deleted file mode 100644
index 4c192a3..0000000
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/OspfUtilTest.java
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.ospf.protocol.util;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit test class for OspfUtil.
- */
-public class OspfUtilTest {
-
-    private final int ospfChecksumPos1 = 12;
-    private final int ospfChecksumPos2 = 13;
-    private final int lsaChecksumPos1 = 16;
-    private final int lsaChecksumPos2 = 17;
-    private final int ospfLengthPos1 = 2;
-    private final int ospfLengthPos2 = 3;
-    private final int lsaLengthPos1 = 18;
-    private final int lsaLengthPos2 = 19;
-    private final byte[] input = {0, 2};
-    private final byte[] packet = {2, 1, 0, 52, -64, -88, 56, 1, -64, -88, 56, 1, 0, 100, 0, 100, 0, 0, 0, 0, 0, 0,
-            0, 0, -64, -88, 56, 1, 0, 10, 1, 1, 0, 0, 0, 40, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, 1, -64,
-            -88, 56, 1};
-    private final byte[] rLsa = {14, 16, 2, 1, -64, -88, -86, 2, -64, -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48, 2,
-            0, 0, 2, -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10, -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10};
-    private final byte[] opaqueheader = {14, 16, 2, 1, -64, -88, -86, 2, -64, -88, -86, 2, -128, 0, 0, 1, 74, -114,
-            0, 48};
-    private int num;
-    private int result;
-    private int input2;
-    private long input4;
-    private ChannelBuffer channelBuffer;
-    private byte[] result1;
-    private LsaHeader lsaHeader;
-    private boolean result2;
-    private long result3;
-
-
-    @Before
-    public void setUp() throws Exception {
-
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        channelBuffer = null;
-        result1 = null;
-        lsaHeader = null;
-    }
-
-
-    /**
-     * Tests byteToInteger() method.
-     */
-    @Test
-    public void testByteToInteger() throws Exception {
-        result = OspfUtil.byteToInteger(input);
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(2));
-
-    }
-
-    /**
-     * Tests byteToLong() method.
-     */
-    @Test
-    public void testByteToLong() throws Exception {
-        result3 = OspfUtil.byteToLong(input);
-        assertThat(result3, is(notNullValue()));
-        assertThat(result3, is(2L));
-    }
-
-    /**
-     * Tests byteToInteger() method.
-     */
-    @Test
-    public void testByteToLong1() throws Exception {
-        result3 = OspfUtil.byteToLong(input);
-        assertThat(result3, is(notNullValue()));
-        assertThat(result3, is(2L));
-    }
-
-    /**
-     * Tests byteToInteger() method.
-     */
-    @Test
-    public void testByteToInteger1() throws Exception {
-        result = OspfUtil.byteToInteger(input);
-        assertThat(result, is(notNullValue()));
-        assertThat(result, is(2));
-    }
-
-    /**
-     * Tests to createRandomNumber() method.
-     */
-    @Test
-    public void testCreateRandomNumber() throws Exception {
-        num = OspfUtil.createRandomNumber();
-        assertThat(num, is(notNullValue()));
-    }
-
-    /**
-     * Tests readLsaHeader() method.
-     */
-    @Test
-    public void testReadLsaHeader2() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(packet);
-        lsaHeader = OspfUtil.readLsaHeader(channelBuffer);
-        assertThat(lsaHeader, is(notNullValue()));
-    }
-
-    /**
-     * Tests to readLsaHeader method.
-     */
-    @Test
-    public void testReadLsaHeader1() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(opaqueheader);
-        lsaHeader = OspfUtil.readLsaHeader(channelBuffer);
-        assertThat(lsaHeader, is(notNullValue()));
-    }
-
-    /**
-     * Tests convertToTwoBytes() method.
-     */
-    @Test
-    public void testConvertToTwoBytes() throws Exception {
-        input2 = 4;
-        result1 = OspfUtil.convertToTwoBytes(input2);
-        assertThat(result1.length, is(2));
-        input2 = 1000;
-        result1 = OspfUtil.convertToTwoBytes(input2);
-        assertThat(result1.length, is(2));
-    }
-
-    /**
-     * Tests convertToThreeBytes() method.
-     */
-    @Test
-    public void testConvertToThreeBytes() throws Exception {
-        input2 = 1000000;
-        result1 = OspfUtil.convertToThreeBytes(input2);
-        assertThat(result1.length, is(3));
-        input2 = 1000;
-        result1 = OspfUtil.convertToThreeBytes(input2);
-        assertThat(result1.length, is(3));
-        input2 = 1;
-        result1 = OspfUtil.convertToThreeBytes(input2);
-        assertThat(result1.length, is(3));
-    }
-
-    /**
-     * Tests convertToFourBytes() method.
-     */
-    @Test
-    public void testConvertToFourBytes() throws Exception {
-        input4 = 214748364110L;
-        result1 = OspfUtil.convertToFourBytes(input4);
-        assertThat(result1.length, is(4));
-        input4 = 1000000;
-        result1 = OspfUtil.convertToFourBytes(input4);
-        assertThat(result1.length, is(4));
-        input4 = 10000;
-        result1 = OspfUtil.convertToFourBytes(input4);
-        assertThat(result1.length, is(4));
-        input4 = 1;
-        result1 = OspfUtil.convertToFourBytes(input4);
-        assertThat(result1.length, is(4));
-
-    }
-
-    /**
-     * Tests convertToFourBytes() method.
-     */
-    @Test
-    public void testConvertToFourBytes1() throws Exception {
-        input4 = 2147483635;
-        result1 = OspfUtil.convertToFourBytes(this.input4);
-        assertThat(result1.length, is(4));
-        this.input4 = 1000000;
-        result1 = OspfUtil.convertToFourBytes(this.input4);
-        assertThat(result1.length, is(4));
-        this.input4 = 10000;
-        result1 = OspfUtil.convertToFourBytes(this.input4);
-        assertThat(result1.length, is(4));
-        this.input4 = 1;
-        result1 = OspfUtil.convertToFourBytes(this.input4);
-        assertThat(result1.length, is(4));
-
-    }
-
-    /**
-     * Tests addLengthAndCheckSum() method.
-     */
-    @Test
-    public void testAddLengthAndCheckSum() throws Exception {
-        result1 = OspfUtil.addLengthAndCheckSum(packet, ospfLengthPos1, ospfLengthPos2,
-                                                ospfChecksumPos1, ospfChecksumPos2);
-        assertThat(result1[ospfChecksumPos1], is(packet[ospfChecksumPos1]));
-        assertThat(result1[ospfChecksumPos2], is(packet[ospfChecksumPos2]));
-        assertThat(result1[ospfLengthPos1], is(packet[ospfLengthPos1]));
-        assertThat(result1[ospfLengthPos2], is(packet[ospfLengthPos2]));
-    }
-
-    /**
-     * Tests addMetadata() method.
-     */
-    @Test
-    public void testAddMetadata() throws Exception {
-        result1 = OspfUtil.addMetadata(2, packet, 1, Ip4Address.valueOf("1.1.1.1"));
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests addLengthAndCheckSum() method.
-     */
-    @Test
-    public void testAddLsaLengthAndCheckSum() throws Exception {
-        result1 = OspfUtil.addLengthAndCheckSum(rLsa, lsaLengthPos1, lsaLengthPos2,
-                                                lsaChecksumPos1, lsaChecksumPos2);
-        assertThat(result1[lsaLengthPos1], is(rLsa[lsaLengthPos1]));
-        assertThat(result1[lsaLengthPos2], is(rLsa[lsaLengthPos2]));
-        assertThat(result1[lsaChecksumPos1], is(rLsa[lsaChecksumPos1]));
-        assertThat(result1[lsaChecksumPos2], is(rLsa[lsaChecksumPos2]));
-    }
-
-    /**
-     * Tests addMetadata() method.
-     */
-    @Test
-    public void testAddMetaData() throws Exception {
-        result1 = OspfUtil.addMetadata(2, packet, 1, Ip4Address.valueOf("2.2.2.2"));
-        assertThat(result1, is(notNullValue()));
-    }
-
-    /**
-     * Tests sameNetwork() method.
-     */
-    @Test
-    public void testSameNetwork() throws Exception {
-        result2 = OspfUtil.sameNetwork(Ip4Address.valueOf("10.10.10.10"), Ip4Address.valueOf("10.10.10.11"),
-                                       Ip4Address.valueOf("255.255.255.255"));
-        assertThat(result2, is(false));
-        result2 = OspfUtil.sameNetwork(Ip4Address.valueOf("10.10.10.10"), Ip4Address.valueOf("10.10.10.10"),
-                                       Ip4Address.valueOf("255.255.255.255"));
-        assertThat(result2, is(true));
-    }
-
-    /**
-     * Tests isOpaqueEnabled() method.
-     */
-    @Test
-    public void testIsOpaqueEnabled() throws Exception {
-        result2 = OspfUtil.isOpaqueEnabled(2);
-        assertThat(result2, is(false));
-    }
-
-    /**
-     * Tests sameNetwork() method.
-     */
-    @Test
-    public void testisIsOpaqueEnabled() throws Exception {
-        result2 = OspfUtil.isOpaqueEnabled(2);
-        assertThat(result2, is(false));
-    }
-
-    /**
-     * Tests readLsaHeader() method.
-     */
-    @Test
-    public void testReadLsaHeader() throws Exception {
-        byte[] header = {0, 10, 2, 1, 7, 7, 7, 7, 7, 7, 7, 7, -128, 0, 0, 2, 46, -126, 0,
-                48, 0, 0, 0, 2, 1, 1, 1, 1, 10, 10, 10, 7, 1, 0, 0, 10, 10, 10, 10, 0, -1, -1, -1,
-                0, 3, 0, 0, 10, 0, 10, 66, 10, 1, 0, 0, 1, 7, 7, 7, 7, -128, 0, 0, 1, -64, 79, 0,
-                116, 0, 1, 0, 4, 0, 0, 0, 0, 0, 2, 0, 84, 0, 1, 0, 1, 1, 0, 0, 0, 0, 2, 0, 4, 10,
-                10, 10, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 6, 0, 4, 73, -104, -106, -128, 0, 7, 0, 4, 73,
-                -104, -106, -128, 0, 8, 0, 32, 73, -104, -106, -128, 73, -104, -106, -128, 73, -104, -106,
-                -128, 73, -104, -106, -128, 73, -104, -106, -128, 73, -104, -106, -128, 73, -104, -106, -128,
-                73, -104, -106, -128, 0, 9, 0, 4, 0, 0, 0, 0};
-        channelBuffer = ChannelBuffers.copiedBuffer(header);
-        lsaHeader = OspfUtil.readLsaHeader(channelBuffer);
-        assertThat(lsaHeader, is(notNullValue()));
-    }
-
-    /**
-     * Tests readLsaHeader() method.
-     */
-    @Test
-    public void testReadreadLsaHeader() throws Exception {
-        byte[] header = {0, 2, 2, 1, -64, -88, -86, 3, -64, -88, -86, 3, -128, 0, 0, 1, 58, -100, 0, 48};
-        channelBuffer = ChannelBuffers.copiedBuffer(header);
-        lsaHeader = OspfUtil.readLsaHeader(channelBuffer);
-        assertThat(lsaHeader, is(notNullValue()));
-    }
-}
\ No newline at end of file
diff --git a/protocols/pcep/pcepio/BUILD b/protocols/pcep/pcepio/BUILD
deleted file mode 100644
index cfea318..0000000
--- a/protocols/pcep/pcepio/BUILD
+++ /dev/null
@@ -1,8 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + NETTY + JACKSON + [
-    "@org_apache_karaf_shell_console//jar",
-    "@io_netty_netty//jar",
-]
-
-osgi_jar_with_tests(
-    deps = COMPILE_DEPS,
-)
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepOutOfBoundMessageException.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepOutOfBoundMessageException.java
deleted file mode 100644
index 27d5502..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepOutOfBoundMessageException.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.exceptions;
-
-/**
- * Custom exception for message out-of-bound.
- */
-public class PcepOutOfBoundMessageException extends Exception {
-
-    private static final long serialVersionUID = 3L;
-
-    /**
-     * Default constructor to create a new exception.
-     */
-    public PcepOutOfBoundMessageException() {
-        super();
-    }
-
-    /**
-     * Constructor to create exception from message and cause.
-     *
-     * @param message the detail of exception in string
-     * @param cause underlying cause of the error
-     */
-    public PcepOutOfBoundMessageException(final String message, final Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Constructor to create exception from message.
-     *
-     * @param message the detail of exception in string
-     */
-    public PcepOutOfBoundMessageException(final String message) {
-        super(message);
-    }
-
-    /**
-     * Constructor to create exception from cause.
-     *
-     * @param cause underlying cause of the error
-     */
-    public PcepOutOfBoundMessageException(final Throwable cause) {
-        super(cause);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepParseException.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepParseException.java
deleted file mode 100644
index e1798a3..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepParseException.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.exceptions;
-
-/**
- * Custom Exception for PCEP IO.
- */
-public class PcepParseException extends Exception {
-
-    private static final long serialVersionUID = 1L;
-    private byte errType = 0;
-    private byte errValue = 0;
-
-    /**
-     * Default constructor to create a new exception.
-     */
-    public PcepParseException() {
-        super();
-    }
-
-    /**
-     * Constructor to create exception from message and cause.
-     *
-     * @param message the detail of exception in string
-     * @param cause underlying cause of the error
-     */
-    public PcepParseException(final String message, final Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Constructor to create exception from message.
-     *
-     * @param message the detail of exception in string
-     */
-    public PcepParseException(final String message) {
-        super(message);
-    }
-
-    /**
-     * Constructor to create exception from error type and error value.
-     *
-     * @param errType error type of pcep
-     * @param errValue error value of pcep
-     */
-    public PcepParseException(final byte errType, final byte errValue) {
-        super();
-        this.errType = errType;
-        this.errValue = errValue;
-    }
-
-    /**
-     * Constructor to create exception from cause.
-     *
-     * @param cause underlying cause of the error
-     */
-    public PcepParseException(final Throwable cause) {
-        super(cause);
-    }
-
-    /**
-     * Returns error type for this exception.
-     *
-     * @return ErrorType
-     */
-    public byte getErrorType() {
-        return this.errType;
-    }
-
-    /**
-     * Returns error value for this exception.
-     *
-     * @return ErrorValue
-     */
-    public byte getErrorValue() {
-        return this.errValue;
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepTunnelAttributeException.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepTunnelAttributeException.java
deleted file mode 100644
index d573109..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepTunnelAttributeException.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.exceptions;
-
-/**
- * Custom exception for Tunnel Attributes.
- */
-public class PcepTunnelAttributeException extends Exception {
-
-    private static final long serialVersionUID = 2L;
-
-    /**
-     * Default constructor to create a new exception.
-     */
-    public PcepTunnelAttributeException() {
-        super();
-    }
-
-    /**
-     * Constructor to create exception from message and cause.
-     *
-     * @param message the detail of exception in string
-     * @param cause underlying cause of the error
-     */
-    public PcepTunnelAttributeException(final String message, final Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Constructor to create exception from message.
-     *
-     * @param message the detail of exception in string
-     */
-    public PcepTunnelAttributeException(final String message) {
-        super(message);
-    }
-
-    /**
-     * Constructor to create exception from cause.
-     *
-     * @param cause underlying cause of the error
-     */
-    public PcepTunnelAttributeException(final Throwable cause) {
-        super(cause);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/package-info.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/package-info.java
deleted file mode 100644
index b3d452e..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * PCEP custom exceptions.
- */
-package org.onosproject.pcepio.exceptions;
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcInitiatedLspRequest.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcInitiatedLspRequest.java
deleted file mode 100644
index 4905665..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcInitiatedLspRequest.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity Provides PcInitiatedLspRequest for PCEP Initiate message.
- * Reference : PCE initiated tunnel setup draft-ietf-pce-pce-initiated-lsp-03.
- */
-public interface PcInitiatedLspRequest {
-
-    /**
-     * Returns object of PcepSrpObject.
-     *
-     * @return srpObject PCEP SRP object
-     */
-    PcepSrpObject getSrpObject();
-
-    /**
-     * Returns object of PcepLspObject.
-     *
-     * @return lspObject PCEP LSP object
-     */
-    PcepLspObject getLspObject();
-
-    /**
-     * Returns object of PcepEndPointsObject.
-     *
-     * @return endPointsObject PCEP EndPoints object
-     */
-    PcepEndPointsObject getEndPointsObject();
-
-    /**
-     * Returns object of PcepEroObject.
-     *
-     * @return eroObject PCEP ERO object
-     */
-    PcepEroObject getEroObject();
-
-    /**
-     * Returns object of PcepAttribute.
-     *
-     * @return pcepAttribute PCEP Attributes
-     */
-    PcepAttribute getPcepAttribute();
-
-    /**
-     * Sets PcepSrpObject.
-     *
-     * @param srpobj PCEP SRP object
-     */
-    void setSrpObject(PcepSrpObject srpobj);
-
-    /**
-     * Sets PcepLspObject.
-     *
-     * @param lspObject PCEP LSP object
-     */
-    void setLspObject(PcepLspObject lspObject);
-
-    /**
-     * Sets PcepEndPointsObject.
-     *
-     * @param endPointsObject PCEP EndPoints object
-     */
-    void setEndPointsObject(PcepEndPointsObject endPointsObject);
-
-    /**
-     * Sets PcepEroObject.
-     *
-     * @param eroObject PCEP ERO object
-     */
-    void setEroObject(PcepEroObject eroObject);
-
-    /**
-     * Sets PcepAttribute.
-     *
-     * @param pcepAttribute PCEP Attributes
-     */
-    void setPcepAttribute(PcepAttribute pcepAttribute);
-
-    /**
-     * Builder interface with get and set functions to build PcInitiatedLspRequest.
-     */
-    interface Builder {
-
-        /**
-         * Builds PcInitiatedLspRequest.
-         *
-         * @return PcInitiatedLspRequest
-         * @throws PcepParseException when mandatory object is not set
-         */
-        PcInitiatedLspRequest build() throws PcepParseException;
-
-        /**
-         * Returns object of PcepSrpObject.
-         *
-         * @return srpObject
-         */
-        PcepSrpObject getSrpObject();
-
-        /**
-         * Returns object of PcepLspObject.
-         *
-         * @return lspObject
-         */
-        PcepLspObject getLspObject();
-
-        /**
-         * Returns object of PcepEndPointsObject.
-         *
-         * @return endPointsObject
-         */
-        PcepEndPointsObject getEndPointsObject();
-
-        /**
-         * Returns object of PcepEroObject.
-         *
-         * @return eroObject
-         */
-        PcepEroObject getEroObject();
-
-        /**
-         * Returns object of PcepAttribute.
-         *
-         * @return pcepAttribute
-         */
-        PcepAttribute getPcepAttribute();
-
-        /**
-         * Sets PcepSrpObject.
-         *
-         * @param srpobj PCEP SRP Object
-         * @return builder by setting PcepSrpObject
-         */
-        Builder setSrpObject(PcepSrpObject srpobj);
-
-        /**
-         * Sets PcepLspObject.
-         *
-         * @param lspObject PCEP LSP Object
-         * @return builder by setting PcepLspObject
-         */
-        Builder setLspObject(PcepLspObject lspObject);
-
-        /**
-         * Sets PcepEndPointsObject.
-         *
-         * @param endPointsObject EndPoints Object
-         * @return builder by setting PcepEndPointsObject
-         */
-        Builder setEndPointsObject(PcepEndPointsObject endPointsObject);
-
-        /**
-         * Sets PcepEroObject.
-         *
-         * @param eroObject PCEP ERO Object
-         * @return builder by setting PcepEroObject
-         */
-        Builder setEroObject(PcepEroObject eroObject);
-
-        /**
-         * Sets PcepAttribute.
-         *
-         * @param pcepAttribute PCEP Attributes
-         * @return builder by setting PcepAttribute
-         */
-        Builder setPcepAttribute(PcepAttribute pcepAttribute);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepAttribute.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepAttribute.java
deleted file mode 100644
index 0c51002..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepAttribute.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity which Provides List of PCEP Attributes.
- */
-public interface PcepAttribute {
-
-    /**
-     * writes lspa , bandwidth , Metriclist and Iro objects to the channel.
-     *
-     * @param bb of type channel buffer.
-     * @return object length index.
-     * @throws PcepParseException while writing objects to channel buffer
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Returns PcepLspaObject.
-     *
-     * @return LspaObject
-     */
-    PcepLspaObject getLspaObject();
-
-    /**
-     * Returns PcepBandwidthObject.
-     *
-     * @return BandwidthObject
-     */
-    PcepBandwidthObject getBandwidthObject();
-
-    /**
-     * Returns PcepIroObject.
-     *
-     * @return iroObject
-     */
-    PcepIroObject getIroObject();
-
-    /**
-     * Sets the PcepBandwidthObject.
-     *
-     * @param bandwidthObject bandwidth object
-     */
-    void setBandwidthObject(PcepBandwidthObject bandwidthObject);
-
-    /**
-     * Sets the PcepLspaObject.
-     *
-     * @param lspaObject lspa object
-     */
-    void setLspaObject(PcepLspaObject lspaObject);
-
-    /**
-     * Sets the PcepIroObject.
-     *
-     * @param iroObject iro object
-     */
-    void setIroObject(PcepIroObject iroObject);
-
-    /**
-     * Returns PcepMetricObject List.
-     *
-     * @return list of metric objects
-     */
-    LinkedList<PcepMetricObject> getMetricObjectList();
-
-    /**
-     * Sets PcepMetricObject List.
-     *
-     * @param llMetricList list of metric objects
-     */
-    void setMetricObjectList(LinkedList<PcepMetricObject> llMetricList);
-
-    /**
-     * Builder interface with get and set functions to build PcepAttribute.
-     */
-    interface Builder {
-
-        /**
-         * Builds PcepAttribute.
-         *
-         * @return PcepAttribute
-         */
-        PcepAttribute build();
-
-        /**
-         * Returns PcepLspaObject.
-         *
-         * @return LspaObject
-         */
-        PcepLspaObject getLspaObject();
-
-        /**
-         * Returns PcepBandwidthObject.
-         *
-         * @return BandwidthObject
-         */
-        PcepBandwidthObject getBandwidthObject();
-
-        /**
-         * Returns PcepIroObject.
-         *
-         * @return iroObject
-         */
-        PcepIroObject getIroObject();
-
-        /**
-         * Sets the PcepBandwidthObject.
-         *
-         * @param bandwidthObject bandwidth object
-         * @return Builder object for PcepAttrubute
-         */
-        Builder setBandwidthObject(PcepBandwidthObject bandwidthObject);
-
-        /**
-         * Sets the PcepLspaObject.
-         *
-         * @param lspaObject lspa object
-         * @return Builder object for PcepAttrubute
-         */
-        Builder setLspaObject(PcepLspaObject lspaObject);
-
-        /**
-         * Sets the PcepIroObject.
-         *
-         * @param iroObject iro object
-         * @return Builder object for PcepAttrubute
-         */
-        Builder setIroObject(PcepIroObject iroObject);
-
-        /**
-         * Returns PcepMetricObject List.
-         *
-         * @return list of metric objects
-         */
-        LinkedList<PcepMetricObject> getMetricObjectList();
-
-        /**
-         * Sets PcepMetricObject List.
-         *
-         * @param llMetricList list of metric objects
-         * @return Builder object for PcepAttrubute
-         */
-        Builder setMetricObjectList(LinkedList<PcepMetricObject> llMetricList);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepBandwidthObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepBandwidthObject.java
deleted file mode 100644
index 03b84b4..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepBandwidthObject.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-
-/**
- * Abstraction of an entity providing PCEP Bandwidth Object.
- */
-public interface PcepBandwidthObject {
-
-    /**
-     * Returns bandwidth value.
-     *
-     * @return bandwidth value
-     */
-    float getBandwidth();
-
-    /**
-     * Sets bandwidth with specified value.
-     *
-     * @param iBandwidth Bandwidth's value
-     */
-    void setBandwidth(float iBandwidth);
-
-    /**
-     * Writes the BandwidthObject into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException if bandwidth object header fails to write in channel buffer
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build bandwidth object.
-     */
-    interface Builder {
-
-        /**
-         * Builds BandwidthObject.
-         *
-         * @return BandwidthObject
-         * @throws PcepParseException if build fails while creating PcepBandwidthObject
-         */
-        PcepBandwidthObject build() throws PcepParseException;
-
-        /**
-         * Returns bandwidth object header.
-         *
-         * @return bandwidth object header
-         */
-        PcepObjectHeader getBandwidthObjHeader();
-
-        /**
-         * Sets bandwidth object header and returns its builder.
-         *
-         * @param obj Bandwidth object header
-         * @return Builder by setting Bandwidth object header
-         */
-        Builder setBandwidthObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns bandwidth value.
-         *
-         * @return bandwidth
-         */
-        float getBandwidth();
-
-        /**
-         * Sets bandwidth value and return its builder.
-         *
-         * @param iBandwidth bandwidth value
-         * @return Builder by setting bandwidth
-         */
-        Builder setBandwidth(float iBandwidth);
-
-        /**
-         * Sets P flag in Bandwidth object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in Bandwidth object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepCloseMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepCloseMsg.java
deleted file mode 100644
index 72d94d9..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepCloseMsg.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-
-/**
- * Abstraction of an entity providing PCEP Close Message.
- */
-public interface PcepCloseMsg extends PcepObject, PcepMessage {
-
-    @Override
-    PcepVersion getVersion();
-
-    @Override
-    PcepType getType();
-
-    /**
-     * Returns reason field in Close message.
-     *
-     * @return reason field
-     */
-    byte getReason();
-
-    /**
-     * Sets reason field in Close message with specified value.
-     *
-     * @param value of Reason field
-     */
-    void setReason(byte value);
-
-    /**
-     * Returns LinkedList of Optional Tlv in Close Message.
-     *
-     * @return list of optional tlv
-     */
-    LinkedList<PcepValueType> getOptionalTlv();
-
-    /**
-     * Sets LinkedList of Optional Tlvs in Close Message.
-     *
-     * @param llOptionalTlv LinkedList of type PcepValueType
-     */
-    void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
-
-    @Override
-    void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build Close message.
-     */
-    interface Builder extends PcepMessage.Builder {
-
-        @Override
-        PcepCloseMsg build();
-
-        @Override
-        PcepVersion getVersion();
-
-        @Override
-        PcepType getType();
-
-        /**
-         * Returns Close Object header.
-         *
-         * @return Close Object header
-         */
-        PcepObjectHeader getCloseObjHeader();
-
-        /**
-         * Sets close object header and returns its builder.
-         *
-         * @param obj close object header
-         * @return Builder by setting Close object header
-         */
-        Builder setCloseObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns reason field in Close message.
-         *
-         * @return reason field in Close message
-         */
-        byte getReason();
-
-        /**
-         * Sets reason field and return its builder.
-         *
-         * @param value of Reason field
-         * @return builder by setting reason field
-         */
-        Builder setReason(byte value);
-
-        /**
-         * Returns LinkedList of Optional Tlvs.
-         *
-         * @return list of optional tlv
-         */
-        LinkedList<PcepValueType> getOptionalTlv();
-
-        /**
-         * Sets LinkedList of Optional Tlvs in Close Message.
-         *
-         * @param llOptionalTlv list of optional tlv
-         * @return Builder by setting Optional Tlvs
-         */
-        Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
-
-        /**
-         * Sets P flag in Close object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in Close object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEndPointsObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEndPointsObject.java
deleted file mode 100644
index 1a41129..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEndPointsObject.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-
-/**
- * Abstraction of an entity providing PCEP End Points Object.
- */
-public interface PcepEndPointsObject {
-
-    /**
-     * Returns Source IpAddress from End Points Object.
-     *
-     * @return Source IpAddress from End Points Object
-     */
-    int getSourceIpAddress();
-
-    /**
-     * Sets Source IpAddress in End Points Object.
-     *
-     * @param sourceIpAddress Source IP Address
-     */
-    void setSourceIpAddress(int sourceIpAddress);
-
-    /**
-     * Returns Destination IpAddress from End Points Object.
-     *
-     * @return Destination IpAddress from End Points Object
-     */
-    int getDestIpAddress();
-
-    /**
-     * Sets Destination IpAddress in End Points Object.
-     *
-     * @param destIpAddress Destination IP Address
-     */
-    void setDestIpAddress(int destIpAddress);
-
-    /**
-     * Writes the EndPointsObject into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException while writing EndPointObject into ChannelBuffer
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build EndPoints object.
-     */
-    interface Builder {
-
-        /**
-         * Builds End Points Object.
-         *
-         * @return End Points Object
-         * @throws PcepParseException while building EndPointObject
-         */
-        PcepEndPointsObject build() throws PcepParseException;
-
-        /**
-         * Returns End Points Object header.
-         *
-         * @return End Points Object header
-         */
-        PcepObjectHeader getEndPointsObjHeader();
-
-        /**
-         * Sets End Points Object header and returns its builder.
-         *
-         * @param obj End Points Object header
-         * @return Builder by setting End Points Object header
-         */
-        Builder setEndPointsObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns Source IpAddress from End Points Object.
-         *
-         * @return Source IpAddress from End Points Object
-         */
-        int getSourceIpAddress();
-
-        /**
-         * Sets Source IpAddress in End Points Object and returns builder.
-         *
-         * @param sourceIpAddress Source IP Address
-         * @return Builder by setting Source IpAddress in End Points Object
-         */
-        Builder setSourceIpAddress(int sourceIpAddress);
-
-        /**
-         * Returns Destination IpAddress from End Points Object.
-         *
-         * @return Destination IpAddress from End Points Object
-         */
-        int getDestIpAddress();
-
-        /**
-         * Sets Destination IpAddress in End Points Object.
-         *
-         * @param destIpAddress Destination IP Address
-         * @return Builder by setting Destination IpAddress in End Points Object
-         */
-        Builder setDestIpAddress(int destIpAddress);
-
-        /**
-         * Sets P flag in Bandwidth object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in Bandwidth object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEroObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEroObject.java
deleted file mode 100644
index 69b7271..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEroObject.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-
-/**
- * Abstraction of an entity providing PCEP ERO Object.
- */
-public interface PcepEroObject {
-
-    /**
-     * Return LinkedList of SubObjects of ERO Object.
-     *
-     * @return list of subobjects
-     */
-    LinkedList<PcepValueType> getSubObjects();
-
-    /**
-     * Sets LinkedList of SubObjects in ERO Object.
-     *
-     * @param llSubObjects list of subobjects
-     */
-    void setSubObjects(LinkedList<PcepValueType> llSubObjects);
-
-    /**
-     * Writes the ERO Object into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException while writing ERO Object into ChannelBuffer
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build ERO object.
-     */
-    interface Builder {
-
-        /**
-         * Builds ERO Object.
-         *
-         * @return ERO Object
-         */
-        PcepEroObject build();
-
-        /**
-         * Returns ERO Object Header.
-         *
-         * @return ERO Object Header
-         */
-        PcepObjectHeader getEroObjHeader();
-
-        /**
-         * Sets ERO Object header and returns its builder.
-         *
-         * @param obj ERO Object header
-         * @return Builder by setting ERO Object header
-         */
-        Builder setEroObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns LinkedList of SubObjects in ERO Objects.
-         *
-         * @return list of subobjects
-         */
-        LinkedList<PcepValueType> getSubObjects();
-
-        /**
-         * Sets LinkedList of SubObjects and returns its builder.
-         *
-         * @param llSubObjects list of SubObjects
-         * @return Builder by setting list of SubObjects
-         */
-        Builder setSubObjects(LinkedList<PcepValueType> llSubObjects);
-
-        /**
-         * Sets P flag in ERO object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in ERO object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepError.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepError.java
deleted file mode 100644
index 86220aa..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepError.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.List;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity which provides PCEP error for PCEP error message.
- */
-public interface PcepError {
-
-    /**
-     * Returns the PcepRPObject List.
-     *
-     * @return list of type PcepRPObject
-     */
-    List<PcepRPObject> getRPObjList();
-
-    /**
-     * Sets the RP Objects lists.
-     *
-     * @param rpObjList list of type PcepRPObject
-     */
-    void setRPObjList(List<PcepRPObject> rpObjList);
-
-    /**
-     * Returns the PcepLSObject List.
-     *
-     * @return list of type PcepLSObject
-     */
-    List<PcepLSObject> getLSObjList();
-
-    /**
-     * Sets the LS Objects lists.
-     *
-     * @param lsObjList list of type PcepLSObject
-     */
-    void setLSObjList(List<PcepLSObject> lsObjList);
-
-    /**
-     * Returns the PcepErrorObject.
-     *
-     * @return list of type PcepErrorObject
-     */
-    List<PcepErrorObject> getErrorObjList();
-
-    /**
-     * Sets the Error Objects lists.
-     *
-     * @param errorObjList list of type PcepErrorObject
-     */
-    void setErrorObjList(List<PcepErrorObject> errorObjList);
-
-    /**
-     * Writes the byte stream of PCEP error to the channel buffer.
-     *
-     * @param bb of type channel buffer
-     * @return object length index
-     * @throws PcepParseException while writing Error part into ChannelBuffer
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build PcepError.
-     */
-    interface Builder {
-
-        /**
-         * Builds PcepError Object.
-         *
-         * @return PcepError Object
-         */
-        PcepError build();
-
-        /**
-         * Returns the PcepRPObject.
-         *
-         * @return list of type PcepRPObject
-         */
-        List<PcepRPObject> getRPObjList();
-
-        /**
-         * Sets RP Object lists and returns its builder.
-         *
-         * @param rpObjList list of type PcepRpObject
-         * @return builder by setting Linked list of RP Object
-         */
-        Builder setRPObjList(List<PcepRPObject> rpObjList);
-
-        /**
-         * Returns the PcepLSObject.
-         *
-         * @return lsObjList of type PcepLSObject
-         */
-        List<PcepLSObject> getLSObjList();
-
-        /**
-         * Sets LS Object lists and returns its builder.
-         *
-         * @param lsObjList list of type PcepLSObject
-         * @return builder by setting list of type PcepLSObject
-         */
-        Builder setLSObjList(List<PcepLSObject> lsObjList);
-
-        /**
-         * Returns the PcepErrorObject.
-         *
-         * @return list of type PcepErrorObject
-         */
-        List<PcepErrorObject> getErrorObjList();
-
-        /**
-         * Sets Error Object lists and returns its builder.
-         *
-         * @param errorObjList list of type PcepErrorObject
-         * @return builder by setting list of type PcepErrorObject
-         */
-        Builder setErrorObjList(List<PcepErrorObject> errorObjList);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorInfo.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorInfo.java
deleted file mode 100644
index 3f2cdaf..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorInfo.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.List;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity which provides PCEP Error Info.
- * Reference :PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02.
- */
-public interface PcepErrorInfo {
-
-    /**
-     * Returns whether error info list is present or not.
-     *
-     * @return true if error info present, false otherwise
-     */
-    boolean isErrorInfoPresent();
-
-    /**
-     * Reads from channel buffer for TE and RP objects.
-     *
-     * @param bb of channel buffer
-     * @throws PcepParseException while parsing Error info part.
-     */
-    void read(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Writes byte stream of PCEP error info to channel buffer.
-     *
-     * @param bb of type channel buffer
-     * @throws PcepParseException while writing Error info part into Channel Buffer.
-     */
-    void write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Returns Error Value in PCEP-ERROR Object.
-     *
-     * @return list of Error Value in PCEP-ERROR Object
-     */
-    List<Integer> getErrorValue();
-
-    /**
-     * Returns Error Type in PCEP-ERROR Object.
-     *
-     * @return list of Error Type in PCEP-ERROR Object
-     */
-    List<Integer> getErrorType();
-
-    /**
-     * Builder interface with get and set functions to build ErrorInfo.
-     */
-    interface Builder {
-
-        /**
-         * Builds ErrorInfo Object.
-         *
-         * @return ErrorInfo Object.
-         */
-        PcepErrorInfo build();
-
-        /**
-         * Returns list of PcepError.
-         *
-         * @return list of PcepError
-         */
-        List<PcepError> getPcepErrorList();
-
-        /**
-         * Sets PcepError lists and returns its builder.
-         *
-         * @param llPcepErrorList list of PcepError
-         * @return builder by setting list of PcepError.
-         */
-        Builder setPcepErrorList(List<PcepError> llPcepErrorList);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorMsg.java
deleted file mode 100644
index 15c5163..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorMsg.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.ErrorObjListWithOpen;
-
-/**
- * Abstraction of an entity providing PCEP Error Message.
- */
-public interface PcepErrorMsg extends PcepMessage {
-
-    @Override
-    PcepVersion getVersion();
-
-    @Override
-    PcepType getType();
-
-    /**
-     * Returns Object of ErrorObjListWithOpen.
-     *
-     * @return Object of ErrorObjListWithOpen
-     */
-    ErrorObjListWithOpen getErrorObjListWithOpen();
-
-    /**
-     * Sets errObjListWithOpen object.
-     *
-     * @param errObjListWithOpen error object List with open object
-     */
-    void setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen);
-
-    /**
-     * Returns Object of PcepErrorInfo.
-     *
-     * @return Object of PcepErrorInfo
-     */
-    PcepErrorInfo getPcepErrorInfo();
-
-    /**
-     * Sets errInfo Object.
-     *
-     * @param errInfo error information
-     */
-    void setPcepErrorInfo(PcepErrorInfo errInfo);
-
-    @Override
-    void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build PCEP Error message.
-     */
-    interface Builder extends PcepMessage.Builder {
-
-        @Override
-        PcepErrorMsg build();
-
-        @Override
-        PcepVersion getVersion();
-
-        @Override
-        PcepType getType();
-
-        /**
-         * Returns Object of ErrorObjListWithOpen.
-         *
-         * @return Object of ErrorObjListWithOpen
-         */
-        ErrorObjListWithOpen getErrorObjListWithOpen();
-
-        /**
-         * Sets errObjListWithOpen object.
-         *
-         * @param errObjListWithOpen error object with open object
-         * @return builder by setting Object of ErrorObjListWithOpen
-         */
-        Builder setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen);
-
-        /**
-         * Returns Object of PcepErrorInfo.
-         *
-         * @return Object of PcepErrorInfo
-         */
-        PcepErrorInfo getPcepErrorInfo();
-
-        /**
-         * Sets errInfo Object.
-         *
-         * @param errInfo error information
-         * @return builder by getting Object of PcepErrorInfo
-         */
-        Builder setPcepErrorInfo(PcepErrorInfo errInfo);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorObject.java
deleted file mode 100644
index 3dc7ceb..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorObject.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-
-/**
- * Abstraction of an entity providing PCEP Error Object.
- */
-public interface PcepErrorObject {
-
-    /**
-     * Returns Error Type in Error Object.
-     *
-     * @return Error Type in Error Object
-     */
-    int getErrorType();
-
-    /**
-     * Sets Error Type in Error Object.
-     *
-     * @param value Error Type
-     */
-    void setErrorType(byte value);
-
-    /**
-     * Returns Error Value in Error Object.
-     *
-     * @return Error Value
-     */
-    byte getErrorValue();
-
-    /**
-     * Sets Error Value in Error Object.
-     *
-     * @param value Error Value
-     */
-    void setErrorValue(byte value);
-
-    /**
-     * Returns Optional Tlvs in Error Object.
-     *
-     * @return list of Optional Tlvs in Error Object
-     */
-    LinkedList<PcepValueType> getOptionalTlv();
-
-    /**
-     * Sets Optional Tlvs in Error Object.
-     *
-     * @param llOptionalTlv list of Optional Tlvs
-     */
-    void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
-
-    /**
-     * Writes the Error Object into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException while writing Error Object into ChannelBuffer
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build Error object.
-     */
-    interface Builder {
-
-        /**
-         * Builds Error Object.
-         *
-         * @return Error Object.
-         */
-        PcepErrorObject build();
-
-        /**
-         * Returns Error Object header.
-         *
-         * @return Error Object header
-         */
-        PcepObjectHeader getErrorObjHeader();
-
-        /**
-         * Sets Error Object header and returns its Builder.
-         *
-         * @param obj Error Object header
-         * @return Builder by setting Error Object header
-         */
-        Builder setErrorObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns Error Type in Error Object.
-         *
-         * @return Error Type in Error Object
-         */
-        int getErrorType();
-
-        /**
-         * Sets Error Type and returns its builder.
-         *
-         * @param value of Error-Type field
-         * @return builder by setting Error Type field.
-         */
-        Builder setErrorType(byte value);
-
-        /**
-         * Returns Error Value in Error Object.
-         *
-         * @return Error Value
-         */
-        byte getErrorValue();
-
-        /**
-         * Sets Error Value and returns its builder.
-         *
-         * @param value of Error-Value field
-         * @return Builder by setting Error Value field.
-         */
-        Builder setErrorValue(byte value);
-
-        /**
-         * Returns list of Optional Tlvs of Error Object.
-         *
-         * @return list of Optional Tlvs of Error Object
-         */
-        LinkedList<PcepValueType> getOptionalTlv();
-
-        /**
-         * Sets Optional Tlvs of Error Object and returns its Builder.
-         *
-         * @param llOptionalTlv Optional Tlvs of Error Object
-         * @return Builder by setting Optional Tlvs.
-         */
-        Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
-
-        /**
-         * Sets P flag in Error object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in Error object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactories.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactories.java
deleted file mode 100644
index 4f6f24e..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactories.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.ver1.PcepFactoryVer1;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Abstraction to provide the version for PCEP.
- */
-public final class PcepFactories {
-
-    private static final Logger log = LoggerFactory.getLogger(PcepFactories.class);
-
-    private static final GenericReader GENERIC_READER = new GenericReader();
-
-    public static final byte SHIFT_FLAG = 5;
-
-    private PcepFactories() {
-    }
-
-    /**
-     * Returns the instance of PCEP Version.
-     *
-     * @param version PCEP version
-     * @return PCEP version
-     */
-    public static PcepFactory getFactory(PcepVersion version) {
-        switch (version) {
-        case PCEP_1:
-            return PcepFactoryVer1.INSTANCE;
-        default:
-            throw new IllegalArgumentException("Unknown version: " + version);
-        }
-    }
-
-    private static class GenericReader implements PcepMessageReader<PcepMessage> {
-
-        @Override
-        public PcepMessage readFrom(ChannelBuffer bb) throws PcepParseException, PcepOutOfBoundMessageException {
-
-            if (!bb.readable()) {
-                throw new PcepParseException("Empty message received");
-            }
-
-            /*
-             * 0                   1                   2                   3
-             * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-             * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-             * | Ver |  Flags  |                                               |
-             * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-             *
-             * Currently Version 1 is supported
-             * Currently no flags are used, it is all ignored
-             */
-
-            byte packetVersion = bb.getByte(bb.readerIndex());
-            packetVersion = (byte) (packetVersion >> SHIFT_FLAG);
-            PcepFactory factory;
-
-            switch (packetVersion) {
-
-            case 1:
-                factory = org.onosproject.pcepio.protocol.ver1.PcepFactoryVer1.INSTANCE;
-                break;
-            default:
-                throw new PcepParseException("Unknown Packet version: " + packetVersion);
-            }
-            return factory.getReader().readFrom(bb);
-        }
-    }
-
-    /**
-     * Returns GENERIC_READER.
-     *
-     * @return GENERIC_READER
-     */
-    public static PcepMessageReader<PcepMessage> getGenericReader() {
-        return GENERIC_READER;
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java
deleted file mode 100644
index 3f7bd85..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-/**
- * Abstraction of an Message factory providing Builder functions to PCEP Messages and Objects.
- */
-public interface PcepFactory {
-
-    /**
-     * Returns Builder Object for Open Message.
-     *
-     * @return Builder Object for Open Message
-     */
-    PcepOpenMsg.Builder buildOpenMsg();
-
-    /**
-     * Returns Builder Object for Open Object.
-     *
-     * @return Builder Object for Open Object
-     */
-    PcepOpenObject.Builder buildOpenObject();
-
-    /**
-     * Returns Builder Object for Keepalive Message.
-     *
-     * @return Builder Object for Keepalive Message
-     */
-    PcepKeepaliveMsg.Builder buildKeepaliveMsg();
-
-    /**
-     * Returns Builder Object for Close Message.
-     *
-     * @return Builder Object for Close Message
-     */
-    PcepCloseMsg.Builder buildCloseMsg();
-
-    /**
-     * Returns Builder Object for Report Message.
-     *
-     * @return Builder Object for Report Message
-     */
-    PcepReportMsg.Builder buildReportMsg();
-
-    /**
-     * Returns Builder Object for Update Message.
-     *
-     * @return Builder Object for Update Message
-     */
-    PcepUpdateMsg.Builder buildUpdateMsg();
-
-    /**
-     * Returns Builder Object for Initiate Message.
-     *
-     * @return Builder Object for Initiate Message
-     */
-    PcepInitiateMsg.Builder buildPcepInitiateMsg();
-
-    /**
-     * Returns Builder Object for LSP Object.
-     *
-     * @return Builder Object for LSP Object
-     */
-    PcepLspObject.Builder buildLspObject();
-
-    /**
-     * Returns Builder Object for SRP Object.
-     *
-     * @return Builder Object for SRP Object
-     */
-    PcepSrpObject.Builder buildSrpObject();
-
-    /**
-     * Returns Builder Object for EndPoints Object.
-     *
-     * @return Builder Object for EndPoints Object
-     */
-    PcepEndPointsObject.Builder buildEndPointsObject();
-
-    /**
-     * Returns Builder Object for ERO Object.
-     *
-     * @return Builder Object for ERO Object
-     */
-    PcepEroObject.Builder buildEroObject();
-
-    /**
-     * Returns Builder Object for RRO Object.
-     *
-     * @return Builder Object for RRO Object
-     */
-    PcepRroObject.Builder buildRroObject();
-
-    /**
-     * Returns Builder Object for LSPA Object.
-     *
-     * @return Builder Object for LSPA Object
-     */
-    PcepLspaObject.Builder buildLspaObject();
-
-    /**
-     * Returns Builder Object for IRO Object.
-     *
-     * @return Builder Object for IRO Object
-     */
-    PcepIroObject.Builder buildIroObject();
-
-    /**
-     * Returns Builder Object for METRIC Object.
-     *
-     * @return Builder Object for METRIC Object
-     */
-    PcepMetricObject.Builder buildMetricObject();
-
-    /**
-     * Returns Builder Object for Bandwidth Object.
-     *
-     * @return Builder Object for Bandwidth Object
-     */
-    PcepBandwidthObject.Builder buildBandwidthObject();
-
-    /**
-     * Returns PCEP Message Reader.
-     *
-     * @return PCEP Message Reader
-     */
-    PcepMessageReader<PcepMessage> getReader();
-
-    /**
-     * Returns PCEP version.
-     *
-     * @return PCEP version
-     */
-    PcepVersion getVersion();
-
-    /**
-     * Returns PcepStateReport.
-     *
-     * @return PcepStateReport
-     */
-    PcepStateReport.Builder buildPcepStateReport();
-
-    /**
-     * Returns PcepUpdateRequest.
-     *
-     * @return PcepUpdateRequest
-     */
-    PcepUpdateRequest.Builder buildPcepUpdateRequest();
-
-    /**
-     * Returns PcInitiatedLspRequest.
-     *
-     * @return PcInitiatedLspRequest
-     */
-    PcInitiatedLspRequest.Builder buildPcInitiatedLspRequest();
-
-    /**
-     * Returns PcepMsgPath.
-     *
-     * @return PcepMsgPath
-     */
-    PcepMsgPath.Builder buildPcepMsgPath();
-
-    /**
-     * Return PcepAttribute list.
-     *
-     * @return PcepAttribute
-     */
-    PcepAttribute.Builder buildPcepAttribute();
-
-    /**
-     * Returns Builder Object for LabelUpdate message.
-     *
-     * @return Builder Object for LabelUpdate message
-     */
-    PcepLabelUpdateMsg.Builder buildPcepLabelUpdateMsg();
-
-    /**
-     * Returns Builder Object for PcepLabelUpdate Object.
-     *
-     * @return Builder Object for PcepLabelUpdate Object
-     */
-    PcepLabelUpdate.Builder buildPcepLabelUpdateObject();
-
-    /**
-     * Returns Builder Object for PcepLabel Object.
-     *
-     * @return Builder Object for PcepLabel Object
-     */
-    PcepLabelObject.Builder buildLabelObject();
-
-    /**
-     * Returns Builder Object for Error Message.
-     *
-     * @return Builder Object for Error Message
-     */
-    PcepErrorMsg.Builder buildPcepErrorMsg();
-
-    /**
-     * Returns Builder Object for Error Object.
-     *
-     * @return Builder Object for Error Object
-     */
-    PcepErrorObject.Builder buildPcepErrorObject();
-
-    /**
-     * Returns Builder Object for FecIpv4Adjacency.
-     *
-     * @return Builder Object for FecIpv4Adjacency
-     */
-    PcepFecObjectIPv4Adjacency.Builder buildFecIpv4Adjacency();
-
-    /**
-     * Returns Builder Object for FecObjectIPv4.
-     *
-     * @return Builder Object for FecObjectIPv4
-     */
-    PcepFecObjectIPv4.Builder buildFecObjectIpv4();
-
-    /**
-     * Returns Builder Object for ErrorInfo.
-     *
-     * @return Builder Object for ErrorInfo
-     */
-    PcepErrorInfo.Builder buildPcepErrorInfo();
-
-    /**
-     * Returns Builder Object for PcepError.
-     *
-     * @return Builder Object for PcepError
-     */
-    PcepError.Builder buildPcepError();
-
-    /**
-     * Returns Builder Object for PcepLabelRangeObject.
-     *
-     * @return Builder Object for PcepLabelRangeObject
-     */
-    PcepLabelRangeObject.Builder buildPcepLabelRangeObject();
-
-    /**
-     * Returns Builder Object for PcepLabelRangeResvMsg.
-     *
-     * @return Builder Object for PcepLabelRangeResvMsg
-     */
-    PcepLabelRangeResvMsg.Builder buildPcepLabelRangeResvMsg();
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObject.java
deleted file mode 100644
index 71cf87a..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObject.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity providing PCEP FEC Object.
- */
-public interface PcepFecObject {
-
-    /**
-     * Returns PCEP Version of FEC Object.
-     *
-     * @return PCEP Version of FEC Object
-     */
-    PcepVersion getVersion();
-
-    /**
-     * Returns FEC Object type.
-     *
-     * @return FEC Object type
-     */
-    int getType();
-
-    /**
-     * Writes the FEC into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException while writing FEC Object into Channel Buffer.
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4.java
deleted file mode 100644
index b15b039..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-
-/**
- * Abstraction of an entity providing PCEP FEC Object of Type 1 IPv4 Node ID.
- */
-public interface PcepFecObjectIPv4 extends PcepFecObject {
-
-    /**
-     * Returns NodeID of FEC Object.
-     *
-     * @return NodeID of FEC Object
-     */
-    int getNodeID();
-
-    /**
-     * Sets NodeID with specified value.
-     *
-     * @param value node id
-     */
-    void setNodeID(int value);
-
-    @Override
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build FEC object.
-     */
-    interface Builder {
-
-        /**
-         * Builds FEC Object IPv4.
-         *
-         * @return FEC Object IPv4
-         * @throws PcepParseException while creating FEC IPv4 Object.
-         */
-        PcepFecObjectIPv4 build() throws PcepParseException;
-
-        /**
-         * Returns FEC Object IPv4 header.
-         *
-         * @return FEC Object IPv4 header
-         */
-        PcepObjectHeader getFecIpv4ObjHeader();
-
-        /**
-         * Sets FEC Object IPv4 header and returns its builder.
-         *
-         * @param obj FEC Object IPv4 header
-         * @return Builder by setting FEC Object IPv4 header
-         */
-        Builder setFecIpv4ObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns NodeID of FEC Object.
-         *
-         * @return NodeID of FEC Object
-         */
-        int getNodeID();
-
-        /**
-         * Sets NodeID and returns its builder.
-         *
-         * @param value node id
-         * @return builder by setting NodeID
-         */
-        Builder setNodeID(int value);
-
-        /**
-         * Sets P flag in FEC object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in FEC object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4Adjacency.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4Adjacency.java
deleted file mode 100644
index b1ed6a3..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4Adjacency.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-
-/**
- * Abstraction of an entity providing FEC Object of Type 3 IPv4 Adjacency.
- */
-public interface PcepFecObjectIPv4Adjacency extends PcepFecObject {
-
-    /**
-     * Returns Local IPv4Address of FEC Object.
-     *
-     * @return Local IPv4Address of FEC Object
-     */
-    int getLocalIPv4Address();
-
-    /**
-     * Sets Local IPv4Address with specified value.
-     *
-     * @param value Local IPv4Address
-     */
-    void seLocalIPv4Address(int value);
-
-    /**
-     * Returns Remote IPv4Address of FEC Object.
-     *
-     * @return Remote IPv4Address of FEC Object
-     */
-    int getRemoteIPv4Address();
-
-    /**
-     * Sets Remote IPv4Address with specified value.
-     *
-     * @param value Remote IPv4Address
-     */
-    void seRemoteIPv4Address(int value);
-
-    @Override
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build FEC object.
-     */
-    interface Builder {
-
-        /**
-         * Builds FEC Object IPv4 Adjacency.
-         *
-         * @return FEC Object IPv4 Adjacency
-         * @throws PcepParseException while building FEC IPv4 Adjacency object.
-         */
-        PcepFecObjectIPv4Adjacency build() throws PcepParseException;
-
-        /**
-         * Returns FEC Object IPv4 Adjacency header.
-         *
-         * @return FEC Object IPv4 Adjacency header
-         */
-        PcepObjectHeader getFecIpv4AdjacencyObjHeader();
-
-        /**
-         * Sets FEC Object IPv4 Adjacency header and returns its builder.
-         *
-         * @param obj FEC Object IPv4 Adjacency header
-         * @return Builder by setting FEC Object IPv4 header
-         */
-        Builder setFecIpv4AdjacencyObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns Local IPv4Address of FEC Object.
-         *
-         * @return Local IPv4Address of FEC Object
-         */
-        int getLocalIPv4Address();
-
-        /**
-         * Sets Local IPv4Address and returns its builder.
-         *
-         * @param value Local IPv4Address
-         * @return Builder by setting Local IPv4Address
-         */
-        Builder seLocalIPv4Address(int value);
-
-        /**
-         * Sets Remote IPv4Address with specified value.
-         *
-         * @return Remote IPv4 Address
-         */
-        int getRemoteIPv4Address();
-
-        /**
-         * Sets Remote IPv4Address and returns its builder.
-         *
-         * @param value Remote IPv4Address
-         * @return Builder by setting Remote IPv4Address
-         */
-        Builder seRemoteIPv4Address(int value);
-
-        /**
-         * Sets P flag in FEC object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in FEC object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4UnnumberedAdjacency.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4UnnumberedAdjacency.java
deleted file mode 100644
index 2de5550..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4UnnumberedAdjacency.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-
-/**
- * Abstraction of an entity providing PCEP FEC Object of Type is 5 Unnumbered Adjacency with IPv4 NodeIDs.
- */
-public interface PcepFecObjectIPv4UnnumberedAdjacency extends PcepFecObject {
-
-    /**
-     * Returns Local NodeID of FEC Object.
-     *
-     * @return Local NodeID of FEC Object
-     */
-    int getLocalNodeID();
-
-    /**
-     * Sets Local NodeID with specified value.
-     *
-     * @param value Local NodeID
-     */
-    void setLocalNodeID(int value);
-
-    /**
-     * Returns Local InterfaceID of FEC Object.
-     *
-     * @return Local InterfaceID of FEC Object
-     */
-    int getLocalInterfaceID();
-
-    /**
-     * Sets Local InterfaceID with specified value.
-     *
-     * @param value Local InterfaceID
-     */
-    void setLocalInterfaceID(int value);
-
-    /**
-     * Returns Remote NodeID of FEC Object.
-     *
-     * @return Remote NodeID of FEC Object
-     */
-    int getRemoteNodeID();
-
-    /**
-     * Sets Remote NodeID with specified value.
-     *
-     * @param value Remote NodeID
-     */
-    void setRemoteNodeID(int value);
-
-    /**
-     * Returns Remote InterfaceID of FEC Object.
-     *
-     * @return Remote InterfaceID of FEC Object
-     */
-    int getRemoteInterfaceID();
-
-    /**
-     * Sets Remote InterfaceID with specified value.
-     *
-     * @param value Remote InterfaceID
-     */
-    void setRemoteInterfaceID(int value);
-
-    @Override
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build bandwidth object.
-     */
-    interface Builder {
-
-        /**
-         * Builds FEC Unnumbered Adjacency with IPv4 Object.
-         *
-         * @return FEC Unnumbered Adjacency with IPv4 Object
-         * @throws PcepParseException when building FEC IPv4 Unnumbered Adjacency object.
-         */
-        PcepFecObjectIPv4UnnumberedAdjacency build() throws PcepParseException;
-
-        /**
-         * Returns FEC Unnumbered Adjacency with IPv4 header.
-         *
-         * @return FEC Unnumbered Adjacency with IPv4 header
-         */
-        PcepObjectHeader getFecIpv4UnnumberedAdjacencyObjHeader();
-
-        /**
-         * Sets FEC Unnumbered Adjacency with IPv4 header and returns its builder.
-         *
-         * @param obj FEC Unnumbered Adjacency with IPv4 header
-         * @return Builder by setting FEC Unnumbered Adjacency with IPv4 header
-         */
-        Builder setFecIpv4UnnumberedAdjacencyObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns Local NodeID of FEC Object.
-         *
-         * @return Local NodeID of FEC Object
-         */
-        int getLocalNodeID();
-
-        /**
-         * Sets Local NodeID and returns its builder.
-         *
-         * @param value Local NodeID
-         * @return Builder by setting Local NodeID
-         */
-        Builder setLocalNodeID(int value);
-
-        /**
-         * Returns Local InterfaceID of FEC Object.
-         *
-         * @return Local InterfaceID of FEC Object
-         */
-        int getLocalInterfaceID();
-
-        /**
-         * Sets Local InterfaceID and returns its builder.
-         *
-         * @param value Local InterfaceID
-         * @return Builder by setting Local InterfaceID
-         */
-        Builder setLocalInterfaceID(int value);
-
-        /**
-         * Returns Remote NodeID of FEC Object.
-         *
-         * @return Remote NodeID of FEC Object
-         */
-        int getRemoteNodeID();
-
-        /**
-         * Sets Remote NodeID and returns its builder.
-         *
-         * @param value Remote NodeID
-         * @return Builder by setting Remote NodeID
-         */
-        Builder setRemoteNodeID(int value);
-
-        /**
-         * Returns Remote InterfaceID of FEC Object.
-         *
-         * @return Remote InterfaceID of FEC Object
-         */
-        int getRemoteInterfaceID();
-
-        /**
-         * Sets Remote InterfaceID and returns its builder.
-         *
-         * @param value Remote InterfaceID
-         * @return Builder by setting Remote InterfaceID
-         */
-        Builder setRemoteInterfaceID(int value);
-
-        /**
-         * Sets P flag in FEC object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in FEC object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6.java
deleted file mode 100644
index 5e97a8d..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-
-/**
- * Abstraction of an entity providing FEC Object of Type is 2 IPv6 Node ID.
- */
-public interface PcepFecObjectIPv6 extends PcepFecObject {
-
-    /**
-     * Returns NodeID of FEC Object.
-     *
-     * @return NodeID of FEC Object
-     */
-    byte[] getNodeID();
-
-    /**
-     * Sets NodeID with specified value.
-     *
-     * @param value node id
-     */
-    void setNodeID(byte[] value);
-
-    @Override
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build FEC object.
-     */
-    interface Builder {
-
-        /**
-         * Builds FEC Object IPv6.
-         *
-         * @return FEC Object IPv6
-         * @throws PcepParseException while building FEC IPv6 Object.
-         */
-        PcepFecObjectIPv6 build() throws PcepParseException;
-
-        /**
-         * Returns FEC Object IPv6 header.
-         *
-         * @return FEC Object IPv6 header
-         */
-        PcepObjectHeader getFecIpv6ObjHeader();
-
-        /**
-         * Sets FEC Object IPv6 header and returns its builder.
-         *
-         * @param obj FEC Object IPv6 header
-         * @return Builder by setting FEC Object IPv6 header
-         */
-        Builder setFecIpv6ObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns NodeID of FEC Object.
-         *
-         * @return NodeID of FEC Object
-         */
-        byte[] getNodeID();
-
-        /**
-         * Sets NodeID and returns its builder.
-         *
-         * @param value node id
-         * @return Builder by setting NodeID
-         */
-        Builder setNodeID(byte[] value);
-
-        /**
-         * Sets P flag in FEC object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in FEC object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6Adjacency.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6Adjacency.java
deleted file mode 100644
index 57338ea..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6Adjacency.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-
-/**
- * Abstraction of an entity providing FEC Object of Type is 4 IPv6 Adjacency.
- */
-public interface PcepFecObjectIPv6Adjacency extends PcepFecObject {
-
-    /**
-     * Returns Local IPv6Address of FEC Object.
-     *
-     * @return Local IPv6Address of FEC Object
-     */
-    byte[] getLocalIPv6Address();
-
-    /**
-     * Sets Local IPv6Address with specified value.
-     *
-     * @param value Local IPv6Address
-     */
-    void seLocalIPv6Address(byte[] value);
-
-    /**
-     * Returns Remote IPv6Address of FEC Object.
-     *
-     * @return Remote IPv6Address of FEC Object
-     */
-    byte[] getRemoteIPv6Address();
-
-    /**
-     * Sets Remote IPv6Address with specified value.
-     *
-     * @param value Remote IPv6Address
-     */
-    void seRemoteIPv6Address(byte[] value);
-
-    @Override
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build FEC object.
-     */
-    interface Builder {
-
-        /**
-         * Builds FEC Object IPv6 Adjacency.
-         *
-         * @return FEC Object IPv6 Adjacency
-         * @throws PcepParseException while building FEC IPv6 Adjacency object.
-         */
-        PcepFecObjectIPv6Adjacency build() throws PcepParseException;
-
-        /**
-         * Returns FEC Object IPv6 Adjacency header.
-         *
-         * @return FEC Object IPv6 Adjacency header
-         */
-        PcepObjectHeader getFecIpv6AdjacencyObjHeader();
-
-        /**
-         * Sets FEC Object IPv6 Adjacency header and returns its builder.
-         *
-         * @param obj FEC Object IPv6 Adjacency header
-         * @return Builder by setting FEC Object IPv6 Adjacency header
-         */
-        Builder setFecIpv6AdjacencyObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns Local IPv6Address of FEC Object.
-         *
-         * @return Local IPv6Address of FEC Object
-         */
-        byte[] getLocalIPv6Address();
-
-        /**
-         * Sets Local IPv6Address and returns its builder.
-         *
-         * @param value Local IPv6Address
-         * @return Builder by setting Local IPv6Address
-         */
-        Builder setLocalIPv6Address(byte[] value);
-
-        /**
-         * Returns Remote IPv6Address of FEC Object.
-         *
-         * @return Remote IPv6Address of FEC Object
-         */
-        byte[] getRemoteIPv6Address();
-
-        /**
-         * Sets Remote IPv6Address and returns its builder.
-         *
-         * @param value Remote IPv6Address
-         * @return Builder by setting Remote IPv6Address
-         */
-        Builder setRemoteIPv6Address(byte[] value);
-
-        /**
-         * Sets P flag in FEC object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in FEC object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInitiateMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInitiateMsg.java
deleted file mode 100644
index 082b13a..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInitiateMsg.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity providing PCEP Initiate Message.
- */
-public interface PcepInitiateMsg extends PcepObject, PcepMessage {
-
-    @Override
-    PcepVersion getVersion();
-
-    @Override
-    PcepType getType();
-
-    /**
-     * Returns list of PcInitiatedLspRequestList.
-     *
-     * @return list of PcInitiatedLspRequestList
-     */
-    LinkedList<PcInitiatedLspRequest> getPcInitiatedLspRequestList();
-
-    /**
-     * Sets list of PcInitiatedLspRequestList.
-     *
-     * @param llPcInitiatedLspRequestList list of PcInitiatedLspRequestList
-     */
-    void setPcInitiatedLspRequestList(LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList);
-
-    @Override
-    void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build Initiate message.
-     */
-    interface Builder extends PcepMessage.Builder {
-
-        @Override
-        PcepInitiateMsg build();
-
-        @Override
-        PcepVersion getVersion();
-
-        @Override
-        PcepType getType();
-
-        /**
-         * Returns list of PcInitiatedLspRequestList.
-         *
-         * @return list of PcInitiatedLspRequestList
-         */
-        LinkedList<PcInitiatedLspRequest> getPcInitiatedLspRequestList();
-
-        /**
-         * Sets PcInitiatedLspRequestList.
-         *
-         * @param llPcInitiatedLspRequestList list of PcInitiatedLspRequestList
-         * @return builder by setting list of PcInitiatedLspRequestList
-         */
-        Builder setPcInitiatedLspRequestList(LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInterLayerObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInterLayerObject.java
deleted file mode 100644
index 9794ffe..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInterLayerObject.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-
-/**
- * Abstraction of an entity providing PCEP INTER Layer Object.
- */
-public interface PcepInterLayerObject {
-
-    /**
-     * Returns N Flag in INTER Layer Object.
-     *
-     * @return N Flag in INTER Layer Object
-     */
-    boolean getbNFlag();
-
-    /**
-     * Sets N Flag in INTER Layer Object with specified value.
-     *
-     * @param value N Flag
-     */
-    void setbNFlag(boolean value);
-
-    /**
-     * Returns I Flag in INTER Layer Object.
-     *
-     * @return I Flag in INTER Layer Object
-     */
-    boolean getbIFlag();
-
-    /**
-     * Sets I Flag in INTER Layer Object with specified value.
-     *
-     * @param value I Flag
-     */
-    void setbIFlag(boolean value);
-
-    /**
-     * Writes the INTER Layer Object into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException while writing Inter Layer Object.
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build INTER Layer object.
-     */
-    interface Builder {
-
-        /**
-         * Builds INTER Layer object.
-         *
-         * @return INTER Layer object
-         */
-        PcepInterLayerObject build();
-
-        /**
-         * Returns INTER Layer object header.
-         *
-         * @return INTER Layer object header
-         */
-        PcepObjectHeader getInterLayerObjHeader();
-
-        /**
-         * Sets INTER Layer object header and returns its builder.
-         *
-         * @param obj INTER Layer object header
-         * @return Builder by setting INTER Layer object header
-         */
-        Builder setInterLayerObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns N Flag in INTER Layer Object.
-         *
-         * @return N Flag in INTER Layer Object
-         */
-        boolean getbNFlag();
-
-        /**
-         * Sets N flag and return its builder.
-         *
-         * @param value N flag
-         * @return Builder by setting N flag
-         */
-        Builder setbNFlag(boolean value);
-
-        /**
-         * Returns I Flag in INTER Layer Object.
-         *
-         * @return I Flag in INTER Layer Object
-         */
-        boolean getbIFlag();
-
-        /**
-         * Sets I flag and return its builder.
-         *
-         * @param value I flag
-         * @return Builder by setting N flag
-         */
-        Builder setbIFlag(boolean value);
-
-        /**
-         * Sets P flag in INTER Layer object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in INTER Layer object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepIroObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepIroObject.java
deleted file mode 100644
index 105c545..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepIroObject.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-
-/**
- * Abstraction of an entity providing PCEP IRO Object.
- */
-public interface PcepIroObject {
-
-    /**
-     * Returns list of  SubObjects.
-     *
-     * @return list of  SubObjects
-     */
-    LinkedList<PcepValueType> getSubObjects();
-
-    /**
-     * Sets list of SubObjects.
-     *
-     * @param llSubObjects list of SubObjects
-     */
-    void setSubObjects(LinkedList<PcepValueType> llSubObjects);
-
-    /**
-     * Writes the IRO into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException while writing IRO object.
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build IRO object.
-     */
-    interface Builder {
-
-        /**
-         * Builds IRO Object.
-         *
-         * @return IRO Object
-         */
-        PcepIroObject build();
-
-        /**
-         * Returns IRO object header.
-         *
-         * @return IRO object header
-         */
-        PcepObjectHeader getIroObjHeader();
-
-        /**
-         * Sets IRO object header and returns its builder.
-         *
-         * @param obj IRO object header
-         * @return Builder by setting IRO object header
-         */
-        Builder setIroObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns list of SubObjects.
-         *
-         * @return list of SubObjects
-         */
-        LinkedList<PcepValueType> getSubObjects();
-
-        /**
-         * Sets list of SubObjects in IRO Object and returns its builder.
-         *
-         * @param llSubObjects list of  SubObjects
-         * @return Builder by setting list of  SubObjects
-         */
-        Builder setSubObjects(LinkedList<PcepValueType> llSubObjects);
-
-        /**
-         * Sets P flag in IRO object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in IRO object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsg.java
deleted file mode 100644
index 9c7c4f1..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsg.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-/**
- * Abstraction of an entity providing PCEP Keepalive Message.
- */
-public interface PcepKeepaliveMsg extends PcepObject, PcepMessage {
-
-    @Override
-    PcepVersion getVersion();
-
-    @Override
-    PcepType getType();
-
-    @Override
-    void writeTo(ChannelBuffer channelBuffer);
-
-    /**
-     * Builder interface with get and set functions to build Keepalive message.
-     */
-    interface Builder extends PcepMessage.Builder {
-
-        @Override
-        PcepKeepaliveMsg build();
-
-        @Override
-        PcepVersion getVersion();
-
-        @Override
-        PcepType getType();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLSObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLSObject.java
deleted file mode 100644
index 520246e..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLSObject.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.List;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-
-/**
- * Abstraction of an entity providing PCEP LS Object.
- */
-public interface PcepLSObject {
-
-    /**
-     * Returns LS object header.
-     *
-     * @return LS object header
-     */
-    PcepObjectHeader getLSObjHeader();
-
-    /**
-     * Sets LS Object header.
-     *
-     * @param obj LS Object header
-     */
-    void setLSObjHeader(PcepObjectHeader obj);
-
-    /**
-     * Returns ProtocolId in LS Object.
-     *
-     * @return ProtocolId in LS Object
-     */
-    byte getProtocolId();
-
-    /**
-     * Sets ProtocolId in LS Object.
-     *
-     * @param protId ProtocolId in LS Object
-     */
-    void setProtocolId(byte protId);
-
-    /**
-     * Returns R flag in LS Object.
-     *
-     * @return R flag in LS Object
-     */
-    boolean getRemoveFlag();
-
-    /**
-     * Sets R flag in LS Object.
-     *
-     * @param removeFlag R flag in LS Object
-     */
-    void setRemoveFlag(boolean removeFlag);
-
-    /**
-     * Returns sync flag in LS Object.
-     *
-     * @return sync flag in LS Object
-     */
-    boolean getSyncFlag();
-
-    /**
-     * Sets sync flag in LS Object.
-     *
-     * @param syncFlag sync flag in LS Object
-     */
-    void setSyncFlag(boolean syncFlag);
-
-    /**
-     * Returns LS ID in LS Object.
-     *
-     * @return LS ID in LS Object
-     */
-    long getLSId();
-
-    /**
-     * Sets LS ID in LS Object.
-     *
-     * @param lsId LS ID in LS Object
-     */
-    void setLSId(long lsId);
-
-    /**
-     * Returns list of Optional Tlvs in LS Object.
-     *
-     * @return list of Optional Tlvs
-     */
-    List<PcepValueType> getOptionalTlv();
-
-    /**
-     * Sets list of Optional Tlvs in LS Object.
-     *
-     * @param optionalTlvList list of Optional Tlvs
-     */
-    void setOptionalTlv(List<PcepValueType> optionalTlvList);
-
-    /**
-     * Writes the LS Object into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException when object header is not written to channel buffer
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build LS object.
-     */
-    interface Builder {
-
-        /**
-         * Builds LS Object.
-         *
-         * @return LS Object
-         */
-        PcepLSObject build();
-
-        /**
-         * Returns LS object header.
-         *
-         * @return LS object header
-         */
-        PcepObjectHeader getLSObjHeader();
-
-        /**
-         * Sets LS object header and returns its builder.
-         *
-         * @param obj LS object header
-         * @return Builder by setting LS object header
-         */
-        Builder setLSObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns ProtocolId in LS Object.
-         *
-         * @return ProtocolId in LS Object
-         */
-        byte getProtocolId();
-
-        /**
-         * Sets ProtocolId in LS Object and returns its builder.
-         *
-         * @param protId ProtocolId in LS Object
-         * @return Builder by setting ProtocolId
-         */
-        Builder setProtocolId(byte protId);
-
-        /**
-         * Returns R flag in LS Object.
-         *
-         * @return R flag in LS Object
-         */
-        boolean getRemoveFlag();
-
-        /**
-         * Sets R flag in LS Object and returns its builder.
-         *
-         * @param removeFlag R flag in LS Object
-         * @return Builder by setting R flag
-         */
-        Builder setRemoveFlag(boolean removeFlag);
-
-        /**
-         * Returns sync flag in LS Object.
-         *
-         * @return sync flag in LS Object
-         */
-        boolean getSyncFlag();
-
-        /**
-         * Sets sync flag in LS Object and returns its builder.
-         *
-         * @param syncFlag sync flag in LS Object
-         * @return Builder by setting sync flag
-         */
-        Builder setSyncFlag(boolean syncFlag);
-
-        /**
-         * Returns LS ID in LS Object.
-         *
-         * @return LS ID in LS Object
-         */
-        long getLSId();
-
-        /**
-         * Sets LS ID in LS Object and returns its builder.
-         *
-         * @param lsId LS ID in LS Object
-         * @return Builder by setting LS ID
-         */
-        Builder setLSId(long lsId);
-
-        /**
-         * Returns list of Optional Tlvs in LS Object.
-         *
-         * @return list of Optional Tlvs
-         */
-        List<PcepValueType> getOptionalTlv();
-
-        /**
-         * Sets list of Optional Tlvs in LS Object and returns its builder.
-         *
-         * @param optionalTlvList list of Optional Tlvs
-         * @return Builder by setting list of Optional Tlvs
-         */
-        Builder setOptionalTlv(List<PcepValueType> optionalTlvList);
-
-        /**
-         * Sets Processing rule flag in LS object header and returns its builder.
-         *
-         * @param value boolean value to set Processing rule flag
-         * @return Builder by setting Processing rule flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets Ignore flag in LS object header and returns its builder.
-         *
-         * @param value boolean value to set Ignore flag
-         * @return Builder by setting Ignore flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLSReportMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLSReportMsg.java
deleted file mode 100644
index e257613..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLSReportMsg.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.List;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity providing PCEP LS-Report Message.
- */
-public interface PcepLSReportMsg extends PcepObject, PcepMessage {
-
-    @Override
-    PcepVersion getVersion();
-
-    @Override
-    PcepType getType();
-
-    /**
-     * Returns list of PCEP LS Objects.
-     *
-     * @return list of PCEP LS Objects
-     */
-    List<PcepLSObject> getLSReportList();
-
-    /**
-     * Sets list of Optional Tlvs in LS-Report Message.
-     *
-     * @param lsReportList list of optional Tlvs
-     */
-    void setLSReportList(List<PcepLSObject> lsReportList);
-
-    @Override
-    void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build LS-Report message.
-     */
-    interface Builder extends PcepMessage.Builder {
-
-        @Override
-        PcepLSReportMsg build();
-
-        @Override
-        PcepVersion getVersion();
-
-        @Override
-        PcepType getType();
-
-        /**
-         * Returns list of LS Object in LS Report Message.
-         *
-         * @return list of LS Objects
-         */
-        List<PcepLSObject> getLSReportList();
-
-        /**
-         * Sets list of LS Objects and returns its builder.
-         *
-         * @param lsReportList list of LS Objects
-         * @return Builder object for LS-Report message
-         */
-        Builder setLSReportList(List<PcepLSObject> lsReportList);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelObject.java
deleted file mode 100644
index 70dad22..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelObject.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-
-/**
- * Abstraction of an entity providing PCEP Label Object.
- */
-public interface PcepLabelObject {
-
-    /**
-     * Returns O flag in Label Object.
-     *
-     * @return Boolean value
-     */
-    boolean getOFlag();
-
-    /**
-     * Sets O flag in Label Object with specified value.
-     *
-     * @param value O flag
-     */
-    void setOFlag(boolean value);
-
-    /**
-     * Returns Label from Label Object.
-     *
-     * @return Label value
-     */
-    int getLabel();
-
-    /**
-     * Sets Label field in Label Object with specified value.
-     *
-     * @param value Label
-     */
-    void setLabel(int value);
-
-    /**
-     * Returns list of Optional Tlvs.
-     *
-     * @return list of Optional Tlvs
-     */
-    LinkedList<PcepValueType> getOptionalTlv();
-
-    /**
-     * Sets Optional Tlvs in Label Object.
-     *
-     * @param llOptionalTlv list of Optional Tlvs
-     */
-    void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
-
-    /**
-     * Writes the Label Object into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException while writing LABEL object into Channel Buffer.
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build Label object.
-     */
-    interface Builder {
-
-        /**
-         * Builds Label Object.
-         *
-         * @return Label Object
-         * @throws PcepParseException while building LABEL object.
-         */
-        PcepLabelObject build() throws PcepParseException;
-
-        /**
-         * Returns Label object header.
-         *
-         * @return Label object header
-         */
-        PcepObjectHeader getLabelObjHeader();
-
-        /**
-         * Sets Label object header and returns its builder.
-         *
-         * @param obj Label object header
-         * @return Builder by setting Label object header
-         */
-        Builder setLabelObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns O flag in Label Object.
-         *
-         * @return Label value
-         */
-        boolean getOFlag();
-
-        /**
-         * Sets O flag and return its builder.
-         *
-         * @param value O flag
-         * @return Builder by setting O flag
-         */
-        Builder setOFlag(boolean value);
-
-        /**
-         * Returns Label from Label Object.
-         *
-         * @return Label value
-         */
-        int getLabel();
-
-        /**
-         * Sets Label field and return its builder.
-         *
-         * @param value Label field
-         * @return Builder by setting Label field
-         */
-        Builder setLabel(int value);
-
-        /**
-         * Returns list of Optional Tlvs.
-         *
-         * @return list of Optional Tlvs
-         */
-        LinkedList<PcepValueType> getOptionalTlv();
-
-        /**
-         * Sets list of Optional Tlvs and return its builder.
-         *
-         * @param llOptionalTlv list of Optional Tlvs
-         * @return Builder by setting list of Optional Tlvs
-         */
-        Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
-
-        /**
-         * Sets P flag in Label object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in Label object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRange.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRange.java
deleted file mode 100644
index 49aa14a..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRange.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity providing PCEP Label Range.
- */
-public interface PcepLabelRange {
-
-    /**
-     * Returns object of PCEP SRP Object.
-     *
-     * @return srpObject
-     */
-    PcepSrpObject getSrpObject();
-
-    /**
-     * Sets PCEP SRP Object.
-     *
-     * @param srpObject SRP object.
-     */
-    void setSrpObject(PcepSrpObject srpObject);
-
-    /**
-     * Returns list of PcepLabelRangeObject.
-     *
-     * @return Label Range List
-     */
-    LinkedList<PcepLabelRangeObject> getLabelRangeList();
-
-    /**
-     * Sets list of PcepLabelRangeObject.
-     *
-     * @param llLabelRangeList Label Range List
-     */
-    void setLabelRangeList(LinkedList<PcepLabelRangeObject> llLabelRangeList);
-
-    /**
-     * Write the byte stream of PcepLabelRange to channel buffer.
-     *
-     * @param bb of type channel buffer
-     * @return object length index
-     * @throws PcepParseException while writing LABEL RANGE into Channel Buffer.
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeObject.java
deleted file mode 100644
index 74e9eba..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeObject.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-
-/**
- * Abstraction of an entity providing PCEP LabelRange Object.
- */
-public interface PcepLabelRangeObject {
-
-    /**
-     * Sets LabelRange Object header.
-     *
-     * @param obj LabelRange Object header
-     */
-    void setLabelRangeObjHeader(PcepObjectHeader obj);
-
-    /**
-     * Sets LabelType in LabelRange Object.
-     *
-     * @param labelType label type value
-     */
-    void setLabelType(byte labelType);
-
-    /**
-     * Sets RangeSize in LabelRange Object.
-     *
-     * @param rangeSize range size value
-     */
-    void setRangeSize(int rangeSize);
-
-    /**
-     * Sets LabelBase in LabelRange Object.
-     *
-     * @param labelBase label base value
-     */
-    void setLabelBase(int labelBase);
-
-    /**
-     * Returns LabelRange object header.
-     *
-     * @return LabelRange object header
-     */
-    PcepObjectHeader getLabelRangeObjHeader();
-
-    /**
-     * Returns LabelType field in LabelRange object.
-     *
-     * @return LabelType field in LabelRange object
-     */
-    byte getLabelType();
-
-    /**
-     * Returns RangeSize field in LabelRange object.
-     *
-     * @return RangeSize field in LabelRange object
-     */
-    int getRangeSize();
-
-    /**
-     * Returns LabelBase field in LabelRange object.
-     *
-     * @return LabelBase field in LabelRange object
-     */
-    int getLabelBase();
-
-    /**
-     * Writes the LabelRange Object into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException while writing LABEL RANGE object into Channel Buffer.
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build LabelRange object.
-     */
-    interface Builder {
-
-        /**
-         * Builds LabelRange Object.
-         *
-         * @return LabelRange Object
-         * @throws PcepParseException while building LABEL RANGE object.
-         */
-        PcepLabelRangeObject build() throws PcepParseException;
-
-        /**
-         * Returns LabelRange object header.
-         *
-         * @return LabelRange object header
-         */
-        PcepObjectHeader getLabelRangeObjHeader();
-
-        /**
-         * Sets LabelRange object header and returns its builder.
-         *
-         * @param obj LabelRange object header
-         * @return Builder by setting LabelRange object header
-         */
-        Builder setLabelRangeObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns LabelType field in LabelRange object.
-         *
-         * @return LabelType field in LabelRange object
-         */
-        byte getLabelType();
-
-        /**
-         * Sets LabelType field and returns its builder.
-         *
-         * @param labelType LabelType field
-         * @return Builder by setting LabelType field
-         */
-        Builder setLabelType(byte labelType);
-
-        /**
-         * Returns RangeSize field in LabelRange object.
-         *
-         * @return RangeSize field in LabelRange object
-         */
-        int getRangeSize();
-
-        /**
-         * Sets RangeSize field and returns its builder.
-         *
-         * @param rangeSize RangeSize field
-         * @return Builder by setting RangeSize field
-         */
-        Builder setRangeSize(int rangeSize);
-
-        /**
-         * Returns LabelBase field in LabelRange object.
-         *
-         * @return LabelBase field in LabelRange object
-         */
-        int getLabelBase();
-
-        /**
-         * Sets LabelBase field and returns its builder.
-         *
-         * @param labelBase LabelBase field
-         * @return Builder by setting LabelBase field
-         */
-        Builder setLabelBase(int labelBase);
-
-        /**
-         * Sets P flag in TE object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in TE object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeResvMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeResvMsg.java
deleted file mode 100644
index f4ef81f..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeResvMsg.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity providing PCEP Label Range Reservation Message.
- */
-public interface PcepLabelRangeResvMsg extends PcepObject, PcepMessage {
-
-    @Override
-    PcepVersion getVersion();
-
-    @Override
-    PcepType getType();
-
-    /**
-     * Returns LabelRange field in Label Range Reservation message.
-     *
-     * @return LabelRange field
-     */
-    PcepLabelRange getLabelRange();
-
-    /**
-     * Sets LabelRange field in Label Range Reservation message with specified value.
-     *
-     * @param lR label range object
-     */
-    void setLabelRange(PcepLabelRange lR);
-
-    @Override
-    void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build Label Range Reservation message.
-     */
-    interface Builder extends PcepMessage.Builder {
-
-        @Override
-        PcepLabelRangeResvMsg build();
-
-        @Override
-        PcepVersion getVersion();
-
-        @Override
-        PcepType getType();
-
-        /**
-         * Returns LabelRange field in Label Range Reservation message.
-         *
-         * @return LabelRange object
-         */
-        PcepLabelRange getLabelRange();
-
-        /**
-         * Sets LabelRange field and returns its Builder.
-         *
-         * @param lR label range object
-         * @return builder by setting LabelRange field
-         */
-        Builder setLabelRange(PcepLabelRange lR);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdate.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdate.java
deleted file mode 100644
index 3e3b40e..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdate.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepLabelDownload;
-import org.onosproject.pcepio.types.PcepLabelMap;
-
-/***
- * Abstraction to provide PCEP Label Updates.
- */
-public interface PcepLabelUpdate {
-
-    /**
-     * Writes the byte stream of PcepLabelUpdate into channel buffer.
-     *
-     * @param bb of type channel buffer
-     * @throws PcepParseException while writing LABEL UPDATE.
-     */
-    void write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Sets the Label Download object.
-     *
-     * @param labelDownload PCEP Label Download object
-     */
-    void setLabelDownload(PcepLabelDownload labelDownload);
-
-    /**
-     * Returns the PcepLabelDownload object.
-     *
-     * @return labelDownload PCEP Label Download
-     */
-    PcepLabelDownload getLabelDownload();
-
-    /**
-     * Sets the Label map object.
-     *
-     * @param labelMap PCEP Label Map object
-     */
-    void setLabelMap(PcepLabelMap labelMap);
-
-    /**
-     * Returns the PcepLabelMap object.
-     *
-     * @return labelMap PCEP Label Map
-     */
-    PcepLabelMap getLabelMap();
-
-    /**
-     * Builder interface with get and set functions to build Label Update message.
-     */
-    interface Builder {
-
-        /**
-         * Builds PcepLableUpdate Object.
-         *
-         * @return PcepLableUpdate Object
-         * @throws PcepParseException while building LABEL-UPDATE.
-         */
-        PcepLabelUpdate build() throws PcepParseException;
-
-        /**
-         * Sets the Label Download object.
-         *
-         * @param labelDownload PCEP Label Download object
-         * @return Builder by setting labelDownload object
-         */
-        Builder setLabelDownload(PcepLabelDownload labelDownload);
-
-        /**
-         * Returns the PcepLabelDownload object.
-         *
-         * @return labelDownload PCEP Label Download
-         */
-        PcepLabelDownload getLabelDownload();
-
-        /**
-         * Sets the Label map object.
-         *
-         * @param labelMap PCEP Label Map object
-         * @return Builder by setting PcepLabelMap object
-         */
-        Builder setLabelMap(PcepLabelMap labelMap);
-
-        /**
-         * Returns the PcepLabelMap object.
-         *
-         * @return labelMap PCEP Label Map
-         */
-        PcepLabelMap getLabelMap();
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsg.java
deleted file mode 100644
index 3aa94b7..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsg.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity providing PCEP Label Update Message.
- */
-public interface PcepLabelUpdateMsg extends PcepObject, PcepMessage {
-
-    @Override
-    PcepVersion getVersion();
-
-    @Override
-    PcepType getType();
-
-    /**
-     * Returns list of PcLabelUpdateList.
-     *
-     * @return list of PcLabelUpdateList.
-     */
-    LinkedList<PcepLabelUpdate> getPcLabelUpdateList();
-
-    /**
-     * Sets list of PcLabelUpdateList.
-     *
-     * @param llPcLabelUpdateList list of PcLabelUpdateList
-     */
-    void setPcLabelUpdateList(LinkedList<PcepLabelUpdate> llPcLabelUpdateList);
-
-    @Override
-    void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build Label Update message.
-     */
-    interface Builder extends PcepMessage.Builder {
-
-        @Override
-        PcepLabelUpdateMsg build();
-
-        @Override
-        PcepVersion getVersion();
-
-        @Override
-        PcepType getType();
-
-        /**
-         * Returns list of PcLabelUpdateList.
-         *
-         * @return list of PcLabelUpdateList.
-         */
-        LinkedList<PcepLabelUpdate> getPcLabelUpdateList();
-
-        /**
-         * Sets list of PcLabelUpdateList.
-         *
-         * @param llPcLabelUpdateList list of PcLabelUpdateList.
-         * @return Builder by setting list of PcLabelUpdateList.
-         */
-        Builder setPcLabelUpdateList(LinkedList<PcepLabelUpdate> llPcLabelUpdateList);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java
deleted file mode 100644
index 52ff95f..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-
-/**
- * Abstraction of an entity providing PCEP LSP Object.
- */
-public interface PcepLspObject {
-
-    /**
-     * Returns PlspId of LSP Object.
-     *
-     * @return PlspId of LSP Object
-     */
-    int getPlspId();
-
-    /**
-     * Sets PlspId with specified value.
-     *
-     * @param value PlspId
-     */
-    void setPlspId(int value);
-
-    /**
-     * Returns O flag in LSP Object.
-     *
-     * @return O flag in LSP Object
-     */
-    byte getOFlag();
-
-    /**
-     * Sets O flag with specified value.
-     *
-     * @param value O flag
-     */
-    void setOFlag(byte value);
-
-    /**
-     * Returns C flag in LSP Object.
-     *
-     * @return C flag in LSP Object
-     */
-    boolean getCFlag();
-
-    /**
-     * Sets C flag with specified value.
-     *
-     * @param value C flag
-     */
-    void setCFlag(boolean value);
-
-    /**
-     * Returns A flag in LSP Object.
-     *
-     * @return A flag in LSP Object
-     */
-    boolean getAFlag();
-
-    /**
-     * Sets A flag with specified value.
-     *
-     * @param value A flag
-     */
-    void setAFlag(boolean value);
-
-    /**
-     * Returns R flag in LSP Object.
-     *
-     * @return R flag in LSP Object
-     */
-    boolean getRFlag();
-
-    /**
-     * Sets R flag with specified value.
-     *
-     * @param value R flag
-     */
-    void setRFlag(boolean value);
-
-    /**
-     * Returns S flag in LSP Object.
-     *
-     * @return S flag in LSP Object
-     */
-    boolean getSFlag();
-
-    /**
-     * Sets S flag with specified value.
-     *
-     * @param value S flag
-     */
-    void setSFlag(boolean value);
-
-    /**
-     * Returns D flag in LSP Object.
-     *
-     * @return D flag in LSP Object
-     */
-    boolean getDFlag();
-
-    /**
-     * Sets D flag with specified value.
-     *
-     * @param value D flag
-     */
-    void setDFlag(boolean value);
-
-    /**
-     * Returns list of Optional Tlvs in LSP Object.
-     *
-     * @return list of Optional Tlvs
-     */
-    LinkedList<PcepValueType> getOptionalTlv();
-
-    /**
-     * Sets list of Optional Tlvs in LSP Object.
-     *
-     * @param llOptionalTlv list of Optional Tlvs
-     */
-    void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
-
-    /**
-     * Writes the LSP Object into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException while writing LSP object into Channel Buffer.
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build LSP object.
-     */
-    interface Builder {
-
-        /**
-         * Builds LSP Object.
-         *
-         * @return LSP Object
-         */
-        PcepLspObject build();
-
-        /**
-         * Returns LSP object header.
-         *
-         * @return LSP object header
-         */
-        PcepObjectHeader getLspObjHeader();
-
-        /**
-         * Sets LSP object header and returns its builder.
-         *
-         * @param obj LSP object header
-         * @return Builder by setting LSP object header
-         */
-        Builder setLspObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns PlspId of LSP Object.
-         *
-         * @return PlspId of LSP Object
-         */
-        int getPlspId();
-
-        /**
-         * Sets PlspId with specific value and return its builder.
-         *
-         * @param value PlspId
-         * @return Builder by setting PlspId
-         */
-        Builder setPlspId(int value);
-
-        /**
-         * Returns C flag in LSP Object.
-         *
-         * @return C flag in LSP Object
-         */
-        boolean getCFlag();
-
-        /**
-         * Sets C flag with specific value and return its builder.
-         *
-         * @param value C flag
-         * @return Builder by setting C flag
-         */
-        Builder setCFlag(boolean value);
-
-        /**
-         * Returns O flag in LSP Object.
-         *
-         * @return O flag in LSP Object
-         */
-        byte getOFlag();
-
-        /**
-         * Sets O flag with specific value and return its builder.
-         *
-         * @param value O flag
-         * @return Builder by setting O flag
-         */
-        Builder setOFlag(byte value);
-
-        /**
-         * Returns A flag in LSP Object.
-         *
-         * @return A flag in LSP Object
-         */
-        boolean getAFlag();
-
-        /**
-         * Sets A flag with specific value and return its builder.
-         *
-         * @param value A flag
-         * @return Builder by setting A flag
-         */
-        Builder setAFlag(boolean value);
-
-        /**
-         * Returns A flag in LSP Object.
-         *
-         * @return A flag in LSP Object
-         */
-        boolean getRFlag();
-
-        /**
-         * Sets R flag with specific value and return its builder.
-         *
-         * @param value r flag
-         * @return Builder by setting r flag
-         */
-        Builder setRFlag(boolean value);
-
-        /**
-         * Returns S flag in LSP Object.
-         *
-         * @return S flag in LSP Object
-         */
-        boolean getSFlag();
-
-        /**
-         * Sets S flag with specific value and return its builder.
-         *
-         * @param value s flag
-         * @return Builder by setting S flag
-         */
-        Builder setSFlag(boolean value);
-
-        /**
-         * Returns D flag in LSP Object.
-         *
-         * @return D flag in LSP Object
-         */
-        boolean getDFlag();
-
-        /**
-         * Sets D flag with specific value and return its builder.
-         *
-         * @param value D flag
-         * @return Builder by setting D flag
-         */
-        Builder setDFlag(boolean value);
-
-        /**
-         * Returns list of Optional Tlvs in LSP Object.
-         *
-         * @return list of Optional Tlvs in LSP Object
-         */
-        LinkedList<PcepValueType> getOptionalTlv();
-
-        /**
-         * Sets list of Optional Tlvs and return its builder.
-         *
-         * @param llOptionalTlv list of Optional Tlvs
-         * @return Builder by setting list of Optional Tlvs
-         */
-        Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
-
-        /**
-         * Sets P flag in LSP object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in LSP object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspaObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspaObject.java
deleted file mode 100644
index 9314bb7..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspaObject.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-
-/**
- * Abstraction of an entity providing PCEP LSPA Object.
- */
-public interface PcepLspaObject {
-
-    /**
-     * Returns L flag in LSPA Object.
-     *
-     * @return L flag in LSPA Object
-     */
-    boolean getLFlag();
-
-    /**
-     * Sets L flag in LSPA Object.
-     *
-     * @param value L flag
-     */
-    void setLFlag(boolean value);
-
-    /**
-     * Returns Exclude Any field in LSPA Object.
-     *
-     * @return Exclude Any field in LSPA Object
-     */
-    int getExcludeAny();
-
-    /**
-     * Sets Exclude Any field in LSPA Object.
-     *
-     * @param value Exclude Any field
-     */
-    void setExcludeAny(int value);
-
-    /**
-     * Returns Include Any field in LSPA Object.
-     *
-     * @return Include Any field in LSPA Object
-     */
-    int getIncludeAny();
-
-    /**
-     * Sets Include Any field in LSPA Object.
-     *
-     * @param value Include Any field
-     */
-    void setIncludeAny(int value);
-
-    /**
-     * Returns Include All field in LSPA Object.
-     *
-     * @return Include All field in LSPA Object
-     */
-    int getIncludeAll();
-
-    /**
-     * Sets Include All field in LSPA Object.
-     *
-     * @param value Include All field
-     */
-    void setIncludeAll(int value);
-
-    /**
-     * Returns Setup Priority field in LSPA Object.
-     *
-     * @return Setup Priority field in LSPA Object
-     */
-    byte getSetupPriority();
-
-    /**
-     * Sets Setup Priority field in LSPA Object.
-     *
-     * @param value Setup Priority field
-     */
-    void setSetupPriority(byte value);
-
-    /**
-     * Returns Hold Priority field in LSPA Object.
-     *
-     * @return Hold Priority field in LSPA Object
-     */
-    byte getHoldPriority();
-
-    /**
-     * Sets Hold Priority field in LSPA Object.
-     *
-     * @param value Hold Priority field
-     */
-    void setHoldPriority(byte value);
-
-    /**
-     * Returns list of Optional Tlvs in LSPA Object.
-     *
-     * @return list of Optional Tlvs in LSPA Object
-     */
-    LinkedList<PcepValueType> getOptionalTlv();
-
-    /**
-     * Sets Optional Tlvs in LSPA Object.
-     *
-     * @param llOptionalTlv Optional Tlvs in LSPA Object
-     */
-    void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
-
-    /**
-     * Writes the LSPA Object into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException while writing LSPA object into Channel Buffer.
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build bandwidth object.
-     */
-    interface Builder {
-
-        /**
-         * Builds LSPA Object.
-         *
-         * @return LSPA Object
-         * @throws PcepParseException while building LSPA object.
-         */
-        PcepLspaObject build() throws PcepParseException;
-
-        /**
-         * Returns LSPA object header.
-         *
-         * @return LSPA object header
-         */
-        PcepObjectHeader getLspaObjHeader();
-
-        /**
-         * Sets LSPA object header and returns its builder.
-         *
-         * @param obj LSPA object header
-         * @return Builder by setting LSPA object header
-         */
-        Builder setLspaObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns L flag in LSPA Object.
-         *
-         * @return L flag in LSPA Object
-         */
-        boolean getLFlag();
-
-        /**
-         * Sets L flag in LSPA Object and return its builder.
-         *
-         * @param value L flag in LSPA Object
-         * @return Builder by setting L flag
-         */
-        Builder setLFlag(boolean value);
-
-        /**
-         * Returns Exclude Any field in LSPA Object.
-         *
-         * @return Exclude Any field in LSPA Object
-         */
-        int getExcludeAny();
-
-        /**
-         * Sets Exclude Any field in LSPA Object and return its builder.
-         *
-         * @param value Exclude Any field in LSPA Object
-         * @return Builder by setting Exclude Any field
-         */
-        Builder setExcludeAny(int value);
-
-        /**
-         * Returns Include Any field in LSPA Object.
-         *
-         * @return Include Any field in LSPA Object
-         */
-        int getIncludeAny();
-
-        /**
-         * Sets Include Any field in LSPA Object and return its builder.
-         *
-         * @param value Include Any field in LSPA Object
-         * @return Builder by setting Include Any field
-         */
-        Builder setIncludeAny(int value);
-
-        /**
-         * Returns Include All field in LSPA Object.
-         *
-         * @return Include All field in LSPA Object
-         */
-        int getIncludeAll();
-
-        /**
-         * Sets Include All field in LSPA Object and return its builder.
-         *
-         * @param value Include All field in LSPA Object
-         * @return Builder by setting Include All field
-         */
-        Builder setIncludeAll(int value);
-
-        /**
-         * Returns Setup Priority field in LSPA Object.
-         *
-         * @return Setup Priority field in LSPA Object
-         */
-        byte getSetupPriority();
-
-        /**
-         * Sets Setup Priority field in LSPA Object and return its builder.
-         *
-         * @param value Setup Priority field in LSPA Object
-         * @return Builder by setting Setup Priority field
-         */
-        Builder setSetupPriority(byte value);
-
-        /**
-         * Returns Hold Priority field in LSPA Object.
-         *
-         * @return Hold Priority field in LSPA Object
-         */
-        byte getHoldPriority();
-
-        /**
-         * Sets Hold Priority field in LSPA Object and return its builder.
-         *
-         * @param value Hold Priority field in LSPA Object
-         * @return Builder by setting Hold Priority field
-         */
-        Builder setHoldPriority(byte value);
-
-        /**
-         * Returns list of Optional Tlvs in LSPA Object.
-         *
-         * @return list of Optional Tlvs in LSPA Object
-         */
-        LinkedList<PcepValueType> getOptionalTlv();
-
-        /**
-         * Sets list of Optional Tlvs in LSPA Object.
-         *
-         * @param llOptionalTlv list of Optional Tlvs
-         * @return builder by setting list of Optional Tlvs
-         */
-        Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
-
-        /**
-         * Sets P flag in LSPA object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in LSPA object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessage.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessage.java
deleted file mode 100644
index 3b0c729..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessage.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity providing PCEP Messages.
- */
-public interface PcepMessage extends PcepObject {
-
-    @Override
-    PcepVersion getVersion();
-
-    /**
-     * Returns Type of PCEP Message.
-     *
-     * @return Type of PCEP Message
-     */
-    PcepType getType();
-
-    @Override
-    void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build PCEP Message.
-     */
-    interface Builder {
-
-        /**
-         * Builds PCEP Message.
-         *
-         * @return PCEP Message
-         * @throws PcepParseException when build fails to create PCEP message
-         */
-        PcepMessage build() throws PcepParseException;
-
-        /**
-         * Returns Version of PCEP Message.
-         *
-         * @return Version of PCEP Message
-         */
-        PcepVersion getVersion();
-
-        /**
-         * Returns Type of PCEP Message.
-         *
-         * @return Type of PCEP Message
-         */
-        PcepType getType();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageReader.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageReader.java
deleted file mode 100644
index 30196ac..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageReader.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity providing PCEP Message Reader.
- */
-public interface PcepMessageReader<T> {
-
-    /**
-     * Reads the Objects in the PCEP Message and Returns PCEP Message.
-     *
-     * @param bb Channel Buffer
-     * @return PCEP Message
-     * @throws PcepParseException while parsing PCEP message
-     * @throws PcepOutOfBoundMessageException if out-of-bound message is received
-     */
-    T readFrom(ChannelBuffer bb) throws PcepParseException, PcepOutOfBoundMessageException;
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageWriter.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageWriter.java
deleted file mode 100644
index b10951b..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageWriter.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity providing PCEP Message Writer.
- */
-public interface PcepMessageWriter<T> {
-
-    /**
-     * Writes the Objects of the PCEP Message into Channel Buffer.
-     *
-     * @param bb Channel Buffer
-     * @param message PCEP Message
-     * @throws PcepParseException while writing PCEP message.
-     */
-    void write(ChannelBuffer bb, T message) throws PcepParseException;
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMetricObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMetricObject.java
deleted file mode 100644
index 54fffe2..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMetricObject.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-
-/**
- * Abstraction of an entity providing PCEP Metric Object.
- */
-public interface PcepMetricObject {
-
-    /**
-     * Returns Metric value in Metric Object.
-     *
-     * @return Metric value
-     */
-    int getMetricVal();
-
-    /**
-     * Sets Metric value in Metric Object with specified value.
-     *
-     * @param value Metric value
-     */
-    void setMetricVal(int value);
-
-    /**
-     * Returns Y flag in Metric Object.
-     *
-     * @return Y flag in Metric Object
-     */
-    byte getYFlag();
-
-    /**
-     * Sets Y flag in Metric Object with specified value.
-     *
-     * @param value Y flag
-     */
-    void setYFlag(byte value);
-
-    /**
-     * Returns C flag in Metric Object.
-     *
-     * @return C flag in Metric Object
-     */
-    boolean getCFlag();
-
-    /**
-     * Sets C flag in Metric Object with specified value.
-     *
-     * @param value C flag
-     */
-    void setCFlag(boolean value);
-
-    /**
-     * Returns B flag in Metric Object.
-     *
-     * @return B flag in Metric Object
-     */
-    boolean getBFlag();
-
-    /**
-     * Sets B flag in Metric Object with specified value.
-     *
-     * @param value B flag
-     */
-    void setBFlag(boolean value);
-
-    /**
-     * Returns BType field in Metric Object.
-     *
-     * @return BType field in Metric Object
-     */
-    byte getBType();
-
-    /**
-     * Sets BType field in Metric Object with specified value.
-     *
-     * @param value BType field
-     */
-    void setBType(byte value);
-
-    /**
-     * Writes the Metric Object into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException while writing METRIC object into Channel Buffer.
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build Metric object.
-     */
-    interface Builder {
-
-        /**
-         * Builds Metric Object.
-         *
-         * @return Metric Object
-         * @throws PcepParseException when mandatory object is not set
-         */
-        PcepMetricObject build() throws PcepParseException;
-
-        /**
-         * Returns Metric object header.
-         *
-         * @return Metric object header
-         */
-        PcepObjectHeader getMetricObjHeader();
-
-        /**
-         * Sets Metric object header and returns its builder.
-         *
-         * @param obj Metric object header
-         * @return Builder by setting Metric object header
-         */
-        Builder setMetricObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns Metric value in Metric Object.
-         *
-         * @return Metric value
-         */
-        int getMetricVal();
-
-        /**
-         * Sets Metric Value in Metric Object and returns its builder.
-         *
-         * @param value Metric Value
-         * @return Builder by setting Metric Value
-         */
-        Builder setMetricVal(int value);
-
-        /**
-         * Returns Flags in Metric Object.
-         *
-         * @return Flags in Metric Object
-         */
-        byte getYFlag();
-
-        /**
-         * Sets Flags in Metric Object and returns its builder.
-         *
-         * @param value Flags
-         * @return Builder by setting Flags
-         */
-        Builder setYFlag(byte value);
-
-        /**
-         * Returns C flag in Metric Object.
-         *
-         * @return C flag in Metric Object
-         */
-        boolean getCFlag();
-
-        /**
-         * Sets C flag in Metric Object and returns its builder.
-         *
-         * @param value C flag
-         * @return Builder by setting C flag
-         */
-        Builder setCFlag(boolean value);
-
-        /**
-         * Returns B flag in Metric Object.
-         *
-         * @return B flag in Metric Object
-         */
-        boolean getBFlag();
-
-        /**
-         * Sets B flag in Metric Object and returns its builder.
-         *
-         * @param value B flag
-         * @return Builder by setting B flag
-         */
-        Builder setBFlag(boolean value);
-
-        /**
-         * Returns BType field in Metric Object.
-         *
-         * @return BType field in Metric Object
-         */
-        byte getBType();
-
-        /**
-         * Sets B Type field in Metric Object and returns its builder.
-         *
-         * @param value B Type field
-         * @return Builder by setting B Type field
-         */
-        Builder setBType(byte value);
-
-        /**
-         * Sets P flag in Metric object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in Metric object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMsgPath.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMsgPath.java
deleted file mode 100644
index 97091e0..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMsgPath.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity Provides PCEP Message PAth for update message.
- * Reference :PCE extensions for stateful draft-ietf-pce-stateful-pce-10.
- */
-public interface PcepMsgPath {
-
-    /**
-     * Returns object of PcepEroObject.
-     *
-     * @return eroObject
-     */
-    PcepEroObject getEroObject();
-
-    /**
-     * Returns object of PcepAttribute.
-     *
-     * @return pcepAttribute
-     */
-    PcepAttribute getPcepAttribute();
-
-    /**
-     * Sets PcepEroObject.
-     *
-     * @param eroObject PCEP ERO Object.
-     */
-    void setEroObject(PcepEroObject eroObject);
-
-    /**
-     * Sets PcepAttribute.
-     *
-     * @param pcepAttribute PCEP-Attribute.
-     */
-    void setPcepAttribute(PcepAttribute pcepAttribute);
-
-    /**
-     * reads ERO object and attribute list.
-     *
-     * @param bb of type channel buffer
-     * @return PcepMsgPath
-     * @throws PcepParseException while parsing Message Path from Channel Buffer.
-     */
-    PcepMsgPath read(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * writes ERO object and attribute list to channel.
-     *
-     * @param bb of type channel buffer
-     * @return object length index
-     * @throws PcepParseException while writing Message Path into Channel Buffer.
-     */
-
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build PcepMsgPath.
-     */
-    interface Builder {
-
-        /**
-         * Builds PcepMsgPath.
-         *
-         * @return PcepMsgPath
-         * @throws PcepParseException when mandatory object is not set
-         */
-        PcepMsgPath build() throws PcepParseException;
-
-        /**
-         * Returns object of PcepEroObject.
-         *
-         * @return PcepEroObject
-         */
-        PcepEroObject getEroObject();
-
-        /**
-         * Returns object of PcepAttribute.
-         *
-         * @return pcepAttribute
-         */
-        PcepAttribute getPcepAttribute();
-
-        /**
-         * Sets PcepEroObject.
-         *
-         * @param eroObject PcepEroObject
-         * @return Builder by setting ERO object.
-         */
-        Builder setEroObject(PcepEroObject eroObject);
-
-        /**
-         * Sets PcepAttribute.
-         *
-         * @param pcepAttribute PCEP-Attribute
-         * @return Builder by setting PCEP-Attribute.
-         */
-        Builder setPcepAttribute(PcepAttribute pcepAttribute);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepNai.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepNai.java
deleted file mode 100644
index ab33547..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepNai.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-/**
- * Abstraction of an entity provides NAI information in SR ERO Object.
- */
-public interface PcepNai {
-
-    /**
-     *  To get the ST type of the NAI information.
-     *
-     *  @return type of ST info
-     */
-    byte getType();
-
-    /**
-     *  To write the object information to channelBuffer.
-     *
-     *  @param cb of type channel buffer
-     *  @return length of written bytes.
-     */
-    int write(ChannelBuffer cb);
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepObject.java
deleted file mode 100644
index 09ffdc3..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepObject.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-/**
- * Abstraction of an entity providing PCEP Object.
- */
-public interface PcepObject extends Writeable {
-
-    /**
-     * Returns Version of PCEP Object.
-     *
-     * @return Version of PCEP Object
-     */
-    PcepVersion getVersion();
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenMsg.java
deleted file mode 100644
index d3ea78b..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenMsg.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity providing PCEP Open Message.
- */
-public interface PcepOpenMsg extends PcepObject, PcepMessage {
-
-    @Override
-    PcepVersion getVersion();
-
-    @Override
-    PcepType getType();
-
-    /**
-     * Sets OpenObject in Open Message with Specified Obj.
-     *
-     * @param obj OpenObject
-     */
-    void setPcepOpenObject(PcepOpenObject obj);
-
-    /**
-     * Returns OpenObject in Open Message.
-     *
-     * @return OpenObject in Open Message
-     */
-    PcepOpenObject getPcepOpenObject();
-
-    @Override
-    void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build Open message.
-     */
-    interface Builder extends PcepMessage.Builder {
-
-        @Override
-        PcepOpenMsg build() throws PcepParseException;
-
-        /**
-         * Sets Open Object in Open Message and return its builder.
-         *
-         * @param obj Open Object
-         * @return builder by setting Open Object
-         */
-        Builder setPcepOpenObj(PcepOpenObject obj);
-
-        /**
-         * Returns OpenObject in Open Message.
-         *
-         * @return OpenObject in Open Message
-         */
-        PcepOpenObject getPcepOpenObj();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenObject.java
deleted file mode 100644
index 73228f0..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenObject.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-
-/**
- * Abstraction of an entity providing PCEP Open Object.
- */
-public interface PcepOpenObject {
-
-    /**
-     * Returns Open object header.
-     *
-     * @return Open object header
-     */
-    PcepObjectHeader getOpenObjHeader();
-
-    /**
-     * Sets Open object header in Open Object.
-     *
-     * @param obj Open object header
-     */
-    void setOpenObjHeader(PcepObjectHeader obj);
-
-    /**
-     * Returns version of Open Object.
-     *
-     * @return Version of Open Object
-     */
-    PcepVersion getVersion();
-
-    /**
-     * Returns KeepAlive Time in Open Object.
-     *
-     * @return KeepAlive Time in Open Object
-     */
-    byte getKeepAliveTime();
-
-    /**
-     * Sets KeepAlive Time in Open Object with specified value.
-     *
-     * @param value KeepAlive Time
-     */
-    void setKeepAliveTime(byte value);
-
-    /**
-     * Returns Dead Time in Open Object.
-     *
-     * @return Dead Time in Open Object
-     */
-    byte getDeadTime();
-
-    /**
-     * Sets Dead Time in Open Object with specified value.
-     *
-     * @param value Dead Time
-     */
-    void setDeadTime(byte value);
-
-    /**
-     * Returns SessionId in Open Object.
-     *
-     * @return SessionId in Open Object
-     */
-    byte getSessionId();
-
-    /**
-     * Sets SessionId in Open Object with specified value.
-     *
-     * @param value SessionId
-     */
-    void setSessionId(byte value);
-
-    /**
-     * Returns list of Optional Tlvs in Open Object.
-     *
-     * @return list of Optional Tlvs
-     */
-    LinkedList<PcepValueType> getOptionalTlv();
-
-    /**
-     * Sets list of Optional Tlvs in Open Object.
-     *
-     * @param llOptionalTlv list of Optional Tlvs
-     */
-    void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
-
-    /**
-     * Writes the Open into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException while writing Open Object into Channel Buffer.
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build Open object.
-     */
-    interface Builder {
-
-        /**
-         * Builds Open Object.
-         *
-         * @return Open Object
-         * @throws PcepParseException while building PCEP-Open object
-         */
-        PcepOpenObject build() throws PcepParseException;
-
-        /**
-         * Returns Open object header.
-         *
-         * @return Open object header
-         */
-        PcepObjectHeader getOpenObjHeader();
-
-        /**
-         * Sets Open object header and returns its builder.
-         *
-         * @param obj Open object header
-         * @return Builder by setting Open object header
-         */
-        Builder setOpenObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns KeepAlive Time in Open Object.
-         *
-         * @return KeepAlive Time in Open Object
-         */
-        byte getKeepAliveTime();
-
-        /**
-         * Sets KeepAlive Time and returns its builder.
-         *
-         * @param value KeepAlive Time
-         * @return Builder by setting KeepAlive Time
-         */
-        Builder setKeepAliveTime(byte value);
-
-        /**
-         * Returns Dead Time in Open Object.
-         *
-         * @return Dead Time in Open Object
-         */
-        byte getDeadTime();
-
-        /**
-         * Sets Dead Time and returns its builder.
-         *
-         * @param value Dead Time
-         * @return Builder by setting Dead Time
-         */
-        Builder setDeadTime(byte value);
-
-        /**
-         * Returns SessionId in Open Object.
-         *
-         * @return SessionId in Open Object
-         */
-        byte getSessionId();
-
-        /**
-         * Sets SessionId and returns its builder.
-         *
-         * @param value SessionId
-         * @return Builder by setting SessionId
-         */
-        Builder setSessionId(byte value);
-
-        /**
-         * Returns list of Optional Tlvs in Open Object.
-         *
-         * @return list of Optional Tlvs in Open Object
-         */
-        LinkedList<PcepValueType> getOptionalTlv();
-
-        /**
-         * Sets list of Optional Tlvs and return its Builder.
-         *
-         * @param llOptionalTlv list of Optional Tlvs
-         * @return builder by setting list of Optional Tlvs
-         */
-        Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
-
-        /**
-         * Sets P flag in Open object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in Open object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRPObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRPObject.java
deleted file mode 100644
index 932a225..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRPObject.java
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-
-/**
- * Abstraction of an entity providing PCEP RP Object.
- */
-public interface PcepRPObject {
-
-    /**
-     * Returns RequestId Number in RP Object.
-     *
-     * @return RequestId Number in RP Object
-     */
-    int getRequestIdNum();
-
-    /**
-     * Sets RequestId Number with specified value.
-     *
-     * @param value RequestId Number
-     */
-    void setRequestIdNum(int value);
-
-    /**
-     * Returns O flag in RP Object.
-     *
-     * @return O flag in RP Object
-     */
-    boolean getOFlag();
-
-    /**
-     * Sets O flag with specified value.
-     *
-     * @param value O flag
-     */
-    void setOFlag(boolean value);
-
-    /**
-     * Returns B flag in RP Object.
-     *
-     * @return B flag in RP Object
-     */
-    boolean getBFlag();
-
-    /**
-     * Sets B flag with specified value.
-     *
-     * @param value B flag
-     */
-    void setBFlag(boolean value);
-
-    /**
-     * Returns R flag in RP Object.
-     *
-     * @return R flag in RP Object
-     */
-    boolean getRFlag();
-
-    /**
-     * Sets R flag with specified value.
-     *
-     * @param value R flag
-     */
-    void setRFlag(boolean value);
-
-    /**
-     * Returns Priority Flag in RP Object.
-     *
-     * @return Priority Flag in RP Object
-     */
-    byte getPriFlag();
-
-    /**
-     * Sets Priority Flag with specified value.
-     *
-     * @param value Priority Flag
-     */
-    void setPriFlag(byte value);
-
-    /**
-     * Returns list of Optional Tlvs in RP Object.
-     *
-     * @return list of Optional Tlvs in RP Object
-     */
-    LinkedList<PcepValueType> getOptionalTlv();
-
-    /**
-     * Sets list of Optional Tlvs in RP Object and returns its builder.
-     *
-     * @param llOptionalTlv list of Optional Tlvs
-     */
-    void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
-
-    /**
-     * Writes the RP Object into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException while writing RP object into Channel Buffer.
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build bandwidth object.
-     */
-    interface Builder {
-
-        /**
-         * Builds RP Object.
-         *
-         * @return RP Object
-         */
-        PcepRPObject build();
-
-        /**
-         * Returns RP object header.
-         *
-         * @return RP object header
-         */
-        PcepObjectHeader getRPObjHeader();
-
-        /**
-         * Sets RP object header and returns its builder.
-         *
-         * @param obj RP object header
-         * @return Builder by setting RP object header
-         */
-        Builder setRPObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns Request Id Number in RP Object.
-         *
-         * @return Request Id Number in RP Object
-         */
-        int getRequestIdNum();
-
-        /**
-         * Sets Request Id Number and returns its builder.
-         *
-         * @param value Request Id Number
-         * @return Builder by setting Request Id Number
-         */
-        Builder setRequestIdNum(int value);
-
-        /**
-         * Returns O flag in RP Object.
-         *
-         * @return O flag in RP Object
-         */
-        boolean getOFlag();
-
-        /**
-         * Sets O flag and returns its builder.
-         *
-         * @param value O flag
-         * @return Builder by setting O flag
-         */
-        Builder setOFlag(boolean value);
-
-        /**
-         * Returns B flag in RP Object.
-         *
-         * @return B flag in RP Object
-         */
-        boolean getBFlag();
-
-        /**
-         * Sets B flag and returns its builder.
-         *
-         * @param value B flag
-         * @return Builder by setting B flag
-         */
-        Builder setBFlag(boolean value);
-
-        /**
-         * Returns R flag in RP Object.
-         *
-         * @return R flag in RP Object
-         */
-        boolean getRFlag();
-
-        /**
-         * Sets R flag and returns its builder.
-         *
-         * @param value R flag
-         * @return Builder by setting R flag
-         */
-        Builder setRFlag(boolean value);
-
-        /**
-         * Returns Priority Flag in RP Object.
-         *
-         * @return Priority Flag in RP Object
-         */
-        byte getPriFlag();
-
-        /**
-         * Sets Priority Flag and returns its builder.
-         *
-         * @param value Priority Flag
-         * @return Builder by setting Priority Flag
-         */
-        Builder setPriFlag(byte value);
-
-        /**
-         * Returns list of Optional Tlvs in RP Object.
-         *
-         * @return list of Optional Tlvs
-         */
-        LinkedList<PcepValueType> getOptionalTlv();
-
-        /**
-         * Sets list of Optional Tlvs and returns its builder.
-         *
-         * @param llOptionalTlv list of Optional Tlvs
-         * @return Builder by setting list of Optional Tlvs
-         */
-        Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
-
-        /**
-         * Sets P flag in RP object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in RP object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepReportMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepReportMsg.java
deleted file mode 100644
index f4d8bf6..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepReportMsg.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity providing PCEP Report Message.
- */
-public interface PcepReportMsg extends PcepObject, PcepMessage {
-
-    @Override
-    PcepVersion getVersion();
-
-    @Override
-    PcepType getType();
-
-    /**
-     * Returns PcepStateReport list.
-     *
-     * @return list of PcepStateReport
-     */
-    LinkedList<PcepStateReport> getStateReportList();
-
-    /**
-     * Sets StateReportList.
-     *
-     * @param llStateReportList list of PcepStateReport.
-     */
-    void setStateReportList(LinkedList<PcepStateReport> llStateReportList);
-
-    @Override
-    void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build Report message.
-     */
-    interface Builder extends PcepMessage.Builder {
-
-        @Override
-        PcepReportMsg build();
-
-        @Override
-        PcepVersion getVersion();
-
-        @Override
-        PcepType getType();
-
-        /**
-         * Returns StateReportList.
-         *
-         * @return StateReportList.
-         */
-        LinkedList<PcepStateReport> getStateReportList();
-
-        /**
-         * Sets list of PcepStateReport and returns builder.
-         *
-         * @param llStateReportList list of PcepStateReport.
-         * @return Builder by setting list of PcepStateReport.
-         */
-        Builder setStateReportList(LinkedList<PcepStateReport> llStateReportList);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRroObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRroObject.java
deleted file mode 100644
index a93a1b7..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRroObject.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-
-/**
- * Abstraction of an entity providing PCEP RRO Object.
- */
-public interface PcepRroObject {
-
-    /**
-     * Returns list of SubObjects.
-     *
-     * @return list of SubObjects
-     */
-    LinkedList<PcepValueType> getSubObjects();
-
-    /**
-     * Sets list of SubObjects and return its builder.
-     *
-     * @param llSubObjects list of SubObjects
-     */
-    void setSubObjects(LinkedList<PcepValueType> llSubObjects);
-
-    /**
-     * Writes the RRO Object into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException when object header failed to write in channel buffer
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build RRO object.
-     */
-    interface Builder {
-
-        /**
-         * Builds RRO Object.
-         *
-         * @return RRO Object
-         */
-        PcepRroObject build();
-
-        /**
-         * Returns RRO object header.
-         *
-         * @return RRO object header
-         */
-        PcepObjectHeader getRroObjHeader();
-
-        /**
-         * Sets RRO object header and returns its builder.
-         *
-         * @param obj RRO object header
-         * @return Builder by setting RRO object header
-         */
-        Builder setRroObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns list of SubObjects.
-         *
-         * @return list of SubObjects
-         */
-        LinkedList<PcepValueType> getSubObjects();
-
-        /**
-         * Sets list of SubObjects in RRO Object and returns its builder.
-         *
-         * @param llSubObjects list of SubObjects
-         * @return Builder by setting list of SubObjects
-         */
-        Builder setSubObjects(LinkedList<PcepValueType> llSubObjects);
-
-        /**
-         * Sets P flag in RRO object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in RRO object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepSrpObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepSrpObject.java
deleted file mode 100644
index b3ba03f..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepSrpObject.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-
-/**
- * Abstraction of an entity providing PCEP SRP Object.
- */
-public interface PcepSrpObject {
-
-    /**
-     * Returns SRP ID of SRP Object.
-     *
-     * @return SRP ID of SRP Object
-     */
-    int getSrpID();
-
-    /**
-     * Sets SRP ID with specified value.
-     *
-     * @param srpID SRP ID of SRP Object
-     */
-    void setSrpID(int srpID);
-
-    /**
-     * Returns R flag of SRP Object.
-     *
-     * @return R flag of SRP Object
-     */
-    boolean getRFlag();
-
-    /**
-     * Sets R flag with specified value.
-     *
-     * @param bRFlag R Flag of SRP Object
-     */
-    void setRFlag(boolean bRFlag);
-
-    /**
-     * Returns S flag of SRP Object.
-     *
-     * @return S flag of SRP Object
-     */
-    boolean getSFlag();
-
-    /**
-     * Sets S(sync) flag with specified value.
-     *
-     * @param bSFlag S Flag of SRP Object
-     */
-    void setSFlag(boolean bSFlag);
-
-    /**
-     * sets the optional TLvs.
-     *
-     * @param llOptionalTlv list of optional tlvs
-     */
-    void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
-
-    /**
-     * Returns list of optional tlvs.
-     *
-     * @return llOptionalTlv list of optional tlvs
-     */
-    LinkedList<PcepValueType> getOptionalTlv();
-
-    /**
-     * Writes the SRP Object into channel buffer.
-     *
-     * @param bb channel buffer
-     * @return Returns the writerIndex of this buffer
-     * @throws PcepParseException when tlv is null
-     */
-    int write(ChannelBuffer bb) throws PcepParseException;
-
-    /**
-     * Builder interface with get and set functions to build SRP object.
-     */
-    interface Builder {
-
-        /**
-         * Builds SRP Object.
-         *
-         * @return SRP Object
-         * @throws PcepParseException when mandatory object is not set
-         */
-        PcepSrpObject build() throws PcepParseException;
-
-        /**
-         * Returns SRP object header.
-         *
-         * @return SRP object header
-         */
-        PcepObjectHeader getSrpObjHeader();
-
-        /**
-         * Sets SRP object header and returns its builder.
-         *
-         * @param obj SRP object header
-         * @return Builder by setting SRP object header
-         */
-        Builder setSrpObjHeader(PcepObjectHeader obj);
-
-        /**
-         * Returns SRP ID of SRP Object.
-         *
-         * @return SRP ID of SRP Object
-         */
-        int getSrpID();
-
-        /**
-         * Sets SRP ID and returns its builder.
-         *
-         * @param srpID SRP ID
-         * @return Builder by setting SRP ID
-         */
-        Builder setSrpID(int srpID);
-
-        /**
-         * Returns R flag of SRP Object.
-         *
-         * @return R flag of SRP Object
-         */
-        boolean getRFlag();
-
-        /**
-         * Returns S(sync) flag of SRP Object.
-         *
-         * @return S flag of SRP Object
-         */
-        boolean getSFlag();
-
-        /**
-         * Sets R flag and returns its builder.
-         *
-         * @param bRFlag R flag
-         * @return Builder by setting R flag
-         */
-        Builder setRFlag(boolean bRFlag);
-
-        /**
-         * Sets S flag and returns its builder.
-         *
-         * @param bSFlag S flag
-         * @return Builder by setting S flag
-         */
-        Builder setSFlag(boolean bSFlag);
-
-        /**
-         * Returns list of optional tlvs.
-         *
-         * @return llOptionalTlv list of optional tlvs
-         */
-        LinkedList<PcepValueType> getOptionalTlv();
-
-        /**
-         * sets the optional TLvs.
-         *
-         * @param llOptionalTlv List of optional tlv
-         * @return builder by setting list of optional tlv.
-         */
-        Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
-
-        /**
-         * Sets P flag in SRP object header and returns its builder.
-         *
-         * @param value boolean value to set P flag
-         * @return Builder by setting P flag
-         */
-        Builder setPFlag(boolean value);
-
-        /**
-         * Sets I flag in SRP object header and returns its builder.
-         *
-         * @param value boolean value to set I flag
-         * @return Builder by setting I flag
-         */
-        Builder setIFlag(boolean value);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepStateReport.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepStateReport.java
deleted file mode 100644
index 555fe07..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepStateReport.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity provides State Report for PCEP Report Message.
- */
-public interface PcepStateReport {
-
-    /**
-     * Provides PCEP Message path for report message.
-     */
-    interface PcepMsgPath {
-
-        /**
-         * Returns PcepEroObject.
-         *
-         * @return eroObj
-         */
-        PcepEroObject getEroObject();
-
-        /**
-         * Sets PcepEroObject.
-         *
-         * @param eroObject Ero Object
-         */
-        void setEroObject(PcepEroObject eroObject);
-
-        /**
-         * Returns PcepAttribute.
-         *
-         * @return attrList
-         */
-        PcepAttribute getPcepAttribute();
-
-        /**
-         * Sets PcepAttribute.
-         *
-         * @param pcepAttribute Pcep Attribute object
-         */
-        void setPcepAttribute(PcepAttribute pcepAttribute);
-
-        /**
-         * Returns PcepRroObject.
-         *
-         * @return rroObj
-         */
-        PcepRroObject getRroObject();
-
-        /**
-         * Sets PcepRroObject.
-         *
-         * @param rroObject Rro object
-         */
-        void setRroObject(PcepRroObject rroObject);
-
-        /**
-         * Returns PcepBandwidthObject.
-         *
-         * @return bandwidth object
-         */
-        PcepBandwidthObject getBandwidthObject();
-
-        /**
-         * Sets PcepBandwidthObject.
-         *
-         * @param bandwidth bandwidth object
-         */
-        void setBandwidthObject(PcepBandwidthObject bandwidth);
-
-        /**
-         * Reads all the Objects for PCEP Message Path.
-         *
-         * @param bb of type channel buffer
-         * @return PCEP Message path
-         * @throws PcepParseException when invalid buffer received
-         */
-        PcepMsgPath read(ChannelBuffer bb) throws PcepParseException;
-
-        /**
-         * Writes all the objects for pcep message path.
-         *
-         * @param bb of type channel buffer.
-         * @return object length index
-         * @throws PcepParseException when mandatory object is not set
-         */
-        int write(ChannelBuffer bb) throws PcepParseException;
-    }
-
-    /**
-     * Returns PcepSrpObject.
-     *
-     * @return srpObject
-     */
-    PcepSrpObject getSrpObject();
-
-    /**
-     * Returns PcepLspObject.
-     *
-     * @return lspObject
-     */
-    PcepLspObject getLspObject();
-
-    /**
-     * Returns PcepMsgPath.
-     *
-     * @return msgPath
-     */
-    PcepMsgPath getMsgPath();
-
-    /**
-     * Sets the SRP Object.
-     *
-     * @param srpObj Pcep Srp Object
-     */
-    void setSrpObject(PcepSrpObject srpObj);
-
-    /**
-     * Sets the LSP Object.
-     *
-     * @param lspObject Pcep Lsp Object
-     */
-    void setLspObject(PcepLspObject lspObject);
-
-    /**
-     * Sets the Path Object.
-     *
-     * @param msgPath Pcep MsgPath object
-     */
-    void setMsgPath(PcepMsgPath msgPath);
-
-    /**
-     * Builder interface with get and set functions to build PcepStateReport.
-     */
-    interface Builder {
-
-        /**
-         * Builds PcepStateReport.
-         *
-         * @return PcepStateReport
-         * @throws PcepParseException when mandatory object is not set
-         */
-        PcepStateReport build() throws PcepParseException;
-
-        /**
-         * Returns PcepSrpObject.
-         *
-         * @return srpObject
-         */
-        PcepSrpObject getSrpObject();
-
-        /**
-         * Returns PcepLspObject.
-         *
-         * @return lspObject
-         */
-        PcepLspObject getLspObject();
-
-        /**
-         * Returns PcepMsgPath.
-         *
-         * @return msgPath
-         */
-        PcepMsgPath getMsgPath();
-
-        /**
-         * Sets the SRP Object.
-         *
-         * @param srpObj Pcep Srp Object
-         * @return builder by setting PcepSrpObject
-         */
-        Builder setSrpObject(PcepSrpObject srpObj);
-
-        /**
-         * Sets the LSP Object.
-         *
-         * @param lspObject Pcep Lsp Object
-         * @return builder by setting PcepLspObject
-         */
-        Builder setLspObject(PcepLspObject lspObject);
-
-        /**
-         * Sets the Path Object.
-         *
-         * @param msgPath Pcep MsgPath object
-         * @return builder by setting PcepMsgPath
-         */
-        Builder setMsgPath(PcepMsgPath msgPath);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepType.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepType.java
deleted file mode 100644
index 1cf6b11..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepType.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-/**
- * Enum to Provide the Different types of PCEP messages.
- */
-public enum PcepType {
-
-    NONE(0), OPEN(1), KEEP_ALIVE(2), PATH_COMPUTATION_REQUEST(3), PATH_COMPUTATION_REPLY(4),
-    NOTIFICATION(5), ERROR(6), CLOSE(7), REPORT(10), UPDATE(11), INITIATE(12),
-    LS_REPORT(224), LABEL_RANGE_RESERV(225), LABEL_UPDATE(226), MAX(227), END(228);
-
-    int iValue;
-
-    /**
-     * Assign iValue with the value iVal as the types of PCEP message.
-     *
-     * @param iVal type of pcep message
-     */
-    PcepType(int iVal) {
-
-        iValue = iVal;
-    }
-
-    /**
-     * Returns iValue as type of PCEP message.
-     *
-     * @return iValue type of pcep message
-     */
-    public byte getType() {
-
-        return (byte) iValue;
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateMsg.java
deleted file mode 100644
index 59d0076..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateMsg.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import java.util.LinkedList;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity providing PCEP Update Message.
- */
-public interface PcepUpdateMsg extends PcepObject, PcepMessage {
-
-    @Override
-    PcepVersion getVersion();
-
-    @Override
-    PcepType getType();
-
-    /**
-     * Returns the update request list for PCEP Update Message.
-     *
-     * @return list of Update Requests
-     */
-    LinkedList<PcepUpdateRequest> getUpdateRequestList();
-
-    /**
-     * Sets the update request list for PCEP update message.
-     *
-     * @param llUpdateRequestList is a list of PCEP Update Requests
-     */
-    void setUpdateRequestList(LinkedList<PcepUpdateRequest> llUpdateRequestList);
-
-    @Override
-    void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
-
-    /**
-     * Builder interface with Get and Set Functions to build the PCEP update Message.
-     */
-    interface Builder extends PcepMessage.Builder {
-
-        @Override
-        PcepUpdateMsg build();
-
-        @Override
-        PcepVersion getVersion();
-
-        @Override
-        PcepType getType();
-
-        /**
-         * Returns the update request list for the PCEP update message.
-         *
-         * @return list of Update Requests
-         */
-        LinkedList<PcepUpdateRequest> getUpdateRequestList();
-
-        /**
-         * Sets the  update request list for the PCEP update message.
-         *
-         * @param llUpdateRequestList list of Update requests
-         * @return builder by setting list llUpdateRequestList of PcepUpdateRequest.
-         */
-        Builder setUpdateRequestList(LinkedList<PcepUpdateRequest> llUpdateRequestList);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateRequest.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateRequest.java
deleted file mode 100644
index fbed59b..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateRequest.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity providing PCEP Update Request List.
- */
-public interface PcepUpdateRequest {
-
-    /**
-     * Returns object of PCEP SRP Object.
-     *
-     * @return srpObject of type PCEP SRP Object
-     */
-    PcepSrpObject getSrpObject();
-
-    /**
-     * Returns object of PCEP LSP Object.
-     *
-     * @return lspObject of type PCEP LSP Object
-     */
-    PcepLspObject getLspObject();
-
-    /**
-     * Returns object of PCEP MSG PATH.
-     *
-     * @return msgPath of type PCEP MSG PATH
-     */
-    PcepMsgPath getMsgPath();
-
-    /**
-     * Sets the PCEP SRP Object.
-     *
-     * @param srpObject object of type PCEP SRP Object
-     */
-    void setSrpObject(PcepSrpObject srpObject);
-
-    /**
-     * Sets the PCEP LSP Object.
-     *
-     * @param lspObject object of type PCEP LSP Object
-     */
-    void setLspObject(PcepLspObject lspObject);
-
-    /**
-     * sets the PCEP MSG PATH.
-     *
-     * @param msgPath object of type PCEP MSG PATH
-     */
-    void setMsgPath(PcepMsgPath msgPath);
-
-    /**
-     * Builder interface with get and set functions to build PcepUpdateRequest.
-     */
-    interface Builder {
-
-        /**
-         * Builds PcepUpdateRequest.
-         *
-         * @return PcepUpdateRequest
-         * @throws PcepParseException if mandatory object is not set
-         */
-        PcepUpdateRequest build() throws PcepParseException;
-
-        /**
-         * Returns PcepSrpObject.
-         *
-         * @return srpObject
-         */
-        PcepSrpObject getSrpObject();
-
-        /**
-         * Returns PcepLspObject.
-         *
-         * @return lspObject
-         */
-        PcepLspObject getLspObject();
-
-        /**
-         * Returns PcepMsgPath.
-         *
-         * @return msgPath
-         */
-        PcepMsgPath getMsgPath();
-
-        /**
-         * Sets the SRP Object.
-         *
-         * @param srpObj of type PcepSrpObject
-         * @return builder by setting PcepSrpObject
-         */
-        Builder setSrpObject(PcepSrpObject srpObj);
-
-        /**
-         * Sets the LSP Object.
-         *
-         * @param lspObject of type PcepLspObject
-         * @return builder by setting PcepLspObject
-         */
-        Builder setLspObject(PcepLspObject lspObject);
-
-        /**
-         * Sets the Path Object.
-         *
-         * @param msgPath of type PcepMsgPath
-         * @return builder by setting PcepMsgPath
-         */
-        Builder setMsgPath(PcepMsgPath msgPath);
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepVersion.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepVersion.java
deleted file mode 100644
index 691847a..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepVersion.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-/**
- * Enum to provide PCEP Message Version.
- */
-public enum PcepVersion {
-
-    PCEP_1(1);
-
-    public final int packetVersion;
-
-    /**
-     * Assign PCEP PacketVersion with WireVersion.
-     *
-     * @param wireVersion version of pcep
-     */
-    PcepVersion(final int wireVersion) {
-
-        this.packetVersion = wireVersion;
-    }
-
-    /**
-     * Returns Wire version of PCEP Message.
-     *
-     * @return packetVersion
-     */
-    public int getWireVersion() {
-        return packetVersion;
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/Writeable.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/Writeable.java
deleted file mode 100644
index a589f9b..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/Writeable.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-/**
- * Abstraction of an entity providing functionality to write byte streams of
- * Messages to channel buffer.
- */
-public interface Writeable {
-
-    /**
-     * Writes byte streams of messages to channel buffer.
-     *
-     * @param bb parameter of type channel buffer
-     * @throws PcepParseException when error occurs while writing pcep message to channel buffer
-     */
-    void writeTo(ChannelBuffer bb) throws PcepParseException;
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/package-info.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/package-info.java
deleted file mode 100644
index 5d0c6aa..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Abstraction of an entity providing PCEP messages.
- */
-package org.onosproject.pcepio.protocol;
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcInitiatedLspRequestVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcInitiatedLspRequestVer1.java
deleted file mode 100644
index 11d6ffb..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcInitiatedLspRequestVer1.java
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcInitiatedLspRequest;
-import org.onosproject.pcepio.protocol.PcepAttribute;
-import org.onosproject.pcepio.protocol.PcepEndPointsObject;
-import org.onosproject.pcepio.protocol.PcepEroObject;
-import org.onosproject.pcepio.protocol.PcepLspObject;
-import org.onosproject.pcepio.protocol.PcepSrpObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PcInitiatedLspRequest for PCEP Initiate message.
- * Reference : PCE initiated tunnel setup draft-ietf-pce-pce-initiated-lsp-03.
- */
-public class PcInitiatedLspRequestVer1 implements PcInitiatedLspRequest {
-
-    /*
-     * <PCE-initiated-lsp-request>       ::= (<PCE-initiated-lsp-instantiation>|<PCE-initiated-lsp-deletion>)
-       <PCE-initiated-lsp-instantiation> ::= <SRP>
-                                             <LSP>
-                                             <END-POINTS>
-                                             <ERO>
-                                             [<attribute-list>]
-            <PCE-initiated-lsp-deletion> ::= <SRP>
-                                             <LSP>
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcInitiatedLspRequestVer1.class);
-
-    //PCEP SRP Object
-    private PcepSrpObject srpObject;
-    //PCEP LSP Object
-    private PcepLspObject lspObject;
-    //PCEP End Point Object
-    private PcepEndPointsObject endPointsObject;
-    //PCEP ERO Object
-    private PcepEroObject eroObject;
-    //PCEP Attribute list
-    private PcepAttribute pcepAttribute;
-
-    /**
-     * Default constructor.
-     */
-    public PcInitiatedLspRequestVer1() {
-        srpObject = null;
-        lspObject = null;
-        endPointsObject = null;
-        eroObject = null;
-        pcepAttribute = null;
-
-    }
-
-    /**
-     * Constructor to initialize all parameters of PC initiated lsp request.
-     *
-     * @param srpObject PCEP srp Object
-     * @param lspObject PCEP lsp object
-     * @param endPointsObject PCPE endpoints object
-     * @param eroObject PCEP ero object
-     * @param pcepAttribute PCEP attribute
-     */
-    public PcInitiatedLspRequestVer1(PcepSrpObject srpObject, PcepLspObject lspObject,
-            PcepEndPointsObject endPointsObject, PcepEroObject eroObject, PcepAttribute pcepAttribute) {
-        this.srpObject = srpObject;
-        this.lspObject = lspObject;
-        this.endPointsObject = endPointsObject;
-        this.eroObject = eroObject;
-        this.pcepAttribute = pcepAttribute;
-
-    }
-
-    @Override
-    public PcepSrpObject getSrpObject() {
-        return srpObject;
-    }
-
-    @Override
-    public PcepLspObject getLspObject() {
-        return lspObject;
-    }
-
-    @Override
-    public PcepEndPointsObject getEndPointsObject() {
-        return endPointsObject;
-    }
-
-    @Override
-    public PcepEroObject getEroObject() {
-        return eroObject;
-    }
-
-    @Override
-    public PcepAttribute getPcepAttribute() {
-        return pcepAttribute;
-    }
-
-    @Override
-    public void setSrpObject(PcepSrpObject srpobj) {
-        this.srpObject = srpobj;
-
-    }
-
-    @Override
-    public void setLspObject(PcepLspObject lspObject) {
-        this.lspObject = lspObject;
-    }
-
-    @Override
-    public void setEndPointsObject(PcepEndPointsObject endPointsObject) {
-        this.endPointsObject = endPointsObject;
-    }
-
-    @Override
-    public void setEroObject(PcepEroObject eroObject) {
-        this.eroObject = eroObject;
-    }
-
-    @Override
-    public void setPcepAttribute(PcepAttribute pcepAttribute) {
-        this.pcepAttribute = pcepAttribute;
-    }
-
-    /**
-     * Builder class for PC initiated lsp reuqest.
-     */
-    public static class Builder implements PcInitiatedLspRequest.Builder {
-
-        private boolean bIsSrpObjectSet = false;
-        private boolean bIsLspObjectSet = false;
-        private boolean bIsEndPointsObjectSet = false;
-        private boolean bIsEroObjectSet = false;
-        private boolean bIsPcepAttributeSet = false;
-        private boolean bIsbRFlagSet = false;
-
-        //PCEP SRP Object
-        private PcepSrpObject srpObject;
-        //PCEP LSP Object
-        private PcepLspObject lspObject;
-        //PCEP End Point Object
-        private PcepEndPointsObject endPointsObject;
-        //PCEP ERO Object
-        private PcepEroObject eroObject;
-        //PCEP Attribute list
-        private PcepAttribute pcepAttribute;
-
-        @Override
-        public PcInitiatedLspRequest build() throws PcepParseException {
-
-            //PCEP SRP Object
-            PcepSrpObject srpObject = null;
-            //PCEP LSP Object
-            PcepLspObject lspObject = null;
-            //PCEP End Point Object
-            PcepEndPointsObject endPointsObject = null;
-            //PCEP ERO Object
-            PcepEroObject eroObject = null;
-            //PCEP Attribute list
-            PcepAttribute pcepAttribute = null;
-            boolean bRFlag = false;
-
-            if (!this.bIsSrpObjectSet) {
-                throw new PcepParseException("Srp object NOT Set while building PcInitiatedLspRequest");
-            } else {
-                srpObject = this.srpObject;
-                bRFlag = srpObject.getRFlag();
-            }
-
-            if (bRFlag) {
-                this.bIsbRFlagSet = true;
-            } else {
-                this.bIsbRFlagSet = false;
-            }
-
-            if (!this.bIsLspObjectSet) {
-                throw new PcepParseException("LSP Object NOT Set while building PcInitiatedLspRequest");
-            } else {
-                lspObject = this.lspObject;
-            }
-            if (!this.bIsbRFlagSet) {
-
-                if (!this.bIsEndPointsObjectSet) {
-                    throw new PcepParseException("EndPoints Object NOT Set while building PcInitiatedLspRequest");
-                } else {
-                    endPointsObject = this.endPointsObject;
-                }
-                if (!this.bIsEroObjectSet) {
-                    throw new PcepParseException("ERO Object NOT Set while building PcInitiatedLspRequest");
-                } else {
-                    eroObject = this.eroObject;
-                }
-                if (bIsPcepAttributeSet) {
-                    pcepAttribute = this.pcepAttribute;
-                }
-            }
-            return new PcInitiatedLspRequestVer1(srpObject, lspObject, endPointsObject, eroObject, pcepAttribute);
-        }
-
-        @Override
-        public PcepSrpObject getSrpObject() {
-            return this.srpObject;
-        }
-
-        @Override
-        public PcepLspObject getLspObject() {
-            return this.lspObject;
-        }
-
-        @Override
-        public PcepEndPointsObject getEndPointsObject() {
-            return this.endPointsObject;
-        }
-
-        @Override
-        public PcepEroObject getEroObject() {
-            return this.eroObject;
-        }
-
-        @Override
-        public PcepAttribute getPcepAttribute() {
-            return this.pcepAttribute;
-        }
-
-        @Override
-        public Builder setSrpObject(PcepSrpObject srpobj) {
-            this.srpObject = srpobj;
-            this.bIsSrpObjectSet = true;
-            return this;
-
-        }
-
-        @Override
-        public Builder setLspObject(PcepLspObject lspObject) {
-            this.lspObject = lspObject;
-            this.bIsLspObjectSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setEndPointsObject(PcepEndPointsObject endPointsObject) {
-            this.endPointsObject = endPointsObject;
-            this.bIsEndPointsObjectSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setEroObject(PcepEroObject eroObject) {
-            this.eroObject = eroObject;
-            this.bIsEroObjectSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setPcepAttribute(PcepAttribute pcepAttribute) {
-            this.pcepAttribute = pcepAttribute;
-            this.bIsPcepAttributeSet = true;
-            return this;
-        }
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("SrpObject", srpObject)
-                .add("LspObject", lspObject)
-                .add("EndPointObject", endPointsObject)
-                .add("EroObject", eroObject)
-                .add("PcepAttribute", pcepAttribute)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepAttributeVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepAttributeVer1.java
deleted file mode 100644
index cb07001..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepAttributeVer1.java
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepAttribute;
-import org.onosproject.pcepio.protocol.PcepBandwidthObject;
-import org.onosproject.pcepio.protocol.PcepIroObject;
-import org.onosproject.pcepio.protocol.PcepLspaObject;
-import org.onosproject.pcepio.protocol.PcepMetricObject;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP Attribute List.
- */
-public class PcepAttributeVer1 implements PcepAttribute {
-
-    /* Reference : RFC5440
-     *  where:
-     *      <attribute-list>                  ::=[<LSPA>]
-     *                                           [<BANDWIDTH>]
-     *                                           [<metric-list>]
-     *                                           [<IRO>]
-     *
-     *      <metric-list>                     ::=<METRIC>[<metric-list>]
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepAttributeVer1.class);
-
-    public static final int OBJECT_HEADER_LENGTH = 4;
-
-    //PCEP LSPA Object
-    private PcepLspaObject lspaObject;
-    private boolean isLspaObjectSet;
-
-    //PCEP Bandwidth Object
-    private PcepBandwidthObject bandwidthObject;
-    private boolean isBandwidthObjectSet;
-
-    //PCEP Metric list
-    private LinkedList<PcepMetricObject> llMetricList;
-    private boolean isMetricListSet;
-
-    //PCEP IRO object
-    private PcepIroObject iroObject;
-    private boolean isIroObjectSet;
-
-    /**
-     * Default constructor to initialize member variables.
-     */
-    public PcepAttributeVer1() {
-
-        lspaObject = null;
-        bandwidthObject = null;
-        llMetricList = null;
-        iroObject = null;
-        this.isLspaObjectSet = false;
-        this.isBandwidthObjectSet = false;
-        this.isMetricListSet = false;
-        this.isIroObjectSet = false;
-    }
-
-    /**
-     * Constructor to initialize all parameters for PCEP attribute.
-     *
-     * @param lspaObject         PCEP lspa Object.
-     * @param bandwidthObject    PCEP bandwidth object.
-     * @param llMetricList       list of PCEP metric objects.
-     * @param iroObject          PCEP iro object.
-     */
-    public PcepAttributeVer1(PcepLspaObject lspaObject, PcepBandwidthObject bandwidthObject,
-            LinkedList<PcepMetricObject> llMetricList, PcepIroObject iroObject) {
-
-        this.lspaObject = lspaObject;
-        this.bandwidthObject = bandwidthObject;
-        this.llMetricList = llMetricList;
-        this.iroObject = iroObject;
-        if (lspaObject == null) {
-            this.isLspaObjectSet = false;
-        } else {
-            this.isLspaObjectSet = true;
-        }
-        if (bandwidthObject == null) {
-            this.isBandwidthObjectSet = false;
-        } else {
-            this.isBandwidthObjectSet = true;
-        }
-        if (llMetricList == null) {
-            this.isMetricListSet = false;
-        } else {
-            this.isMetricListSet = true;
-        }
-        if (iroObject == null) {
-            this.isIroObjectSet = false;
-        } else {
-            this.isIroObjectSet = true;
-        }
-    }
-
-    /**
-     * constructor to initialize bandwidthObject.
-     *
-     * @param bandwidthObject bandwidth object
-     */
-    public PcepAttributeVer1(PcepBandwidthObject bandwidthObject) {
-        this.isLspaObjectSet = false;
-
-        this.bandwidthObject = bandwidthObject;
-        this.isBandwidthObjectSet = true;
-
-        this.isMetricListSet = false;
-
-        this.isIroObjectSet = false;
-    }
-
-    /**
-     * Parse list for MeticObject.
-     *
-     * @param cb of type channel buffer
-     * @return true if parsing metric list is success
-     * @throws PcepParseException when a non metric object is received
-     */
-    public boolean parseMetricList(ChannelBuffer cb) throws PcepParseException {
-
-        if (llMetricList == null) {
-            llMetricList = new LinkedList<>();
-        }
-
-        PcepMetricObject metriclist;
-
-        //caller should verify for metric object
-        byte yObjClass = PcepMetricObjectVer1.METRIC_OBJ_CLASS;
-        byte yObjType = PcepMetricObjectVer1.METRIC_OBJ_TYPE;
-
-        while ((yObjClass == PcepMetricObjectVer1.METRIC_OBJ_CLASS)
-                && (yObjType == PcepMetricObjectVer1.METRIC_OBJ_TYPE)) {
-
-            metriclist = PcepMetricObjectVer1.read(cb);
-            llMetricList.add(metriclist);
-            yObjClass = 0;
-            yObjType = 0;
-
-            if (cb.readableBytes() > OBJECT_HEADER_LENGTH) {
-                cb.markReaderIndex();
-                PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb);
-                cb.resetReaderIndex();
-                yObjClass = tempObjHeader.getObjClass();
-                yObjType = tempObjHeader.getObjType();
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Reads lspa , bandwidth , Metriclist and Iro objects and sets the objects.
-     *
-     * @param cb of type channel buffer
-     * @return instance of Pcep Attribute
-     * @throws PcepParseException while parsing Pcep Attributes from channel buffer
-     */
-
-    public static PcepAttribute read(ChannelBuffer cb) throws PcepParseException {
-        if (cb.readableBytes() < OBJECT_HEADER_LENGTH) {
-            return null;
-        }
-        //check whether any pcep attribute is present
-        cb.markReaderIndex();
-        PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb);
-        cb.resetReaderIndex();
-        byte yObjClass = tempObjHeader.getObjClass();
-
-        if (PcepLspaObjectVer1.LSPA_OBJ_CLASS != yObjClass && PcepBandwidthObjectVer1.BANDWIDTH_OBJ_CLASS != yObjClass
-                && PcepMetricObjectVer1.METRIC_OBJ_CLASS != yObjClass && PcepIroObjectVer1.IRO_OBJ_CLASS != yObjClass) {
-            //No PCEP attribute is present
-            return null;
-        }
-
-        PcepAttributeVer1 pcepAttribute = new PcepAttributeVer1();
-
-        //If LSPA present then store it.LSPA is optional
-        if (yObjClass == PcepLspaObjectVer1.LSPA_OBJ_CLASS) {
-            pcepAttribute.setLspaObject(PcepLspaObjectVer1.read(cb));
-            yObjClass = checkNextObject(cb);
-        }
-
-        //If BANDWIDTH present then store it.BANDWIDTH is optional
-        if (yObjClass == PcepBandwidthObjectVer1.BANDWIDTH_OBJ_CLASS) {
-            pcepAttribute.setBandwidthObject(PcepBandwidthObjectVer1.read(cb));
-            yObjClass = checkNextObject(cb);
-        }
-
-        //If Metric list present then store it.MetricList is optional
-        if (yObjClass == PcepMetricObjectVer1.METRIC_OBJ_CLASS) {
-            pcepAttribute.parseMetricList(cb);
-            yObjClass = checkNextObject(cb);
-        }
-
-        //If IRO present then store it.IRO is optional
-        if (yObjClass == PcepIroObjectVer1.IRO_OBJ_CLASS) {
-            pcepAttribute.setIroObject(PcepIroObjectVer1.read(cb));
-        }
-
-        PcepLspaObject lspaObject = pcepAttribute.getLspaObject();
-        PcepBandwidthObject bandwidthObject = pcepAttribute.getBandwidthObject();
-        LinkedList<PcepMetricObject> metriclist = pcepAttribute.llMetricList;
-        PcepIroObject iroObject = pcepAttribute.getIroObject();
-
-        return new PcepAttributeVer1(lspaObject, bandwidthObject, metriclist, iroObject);
-    }
-
-    /**
-     * Checks whether there is a more object or not.
-     *
-     * @param cb of type channel buffer
-     * @return instance of object header
-     */
-    private static byte checkNextObject(ChannelBuffer cb) {
-        if (cb.readableBytes() < OBJECT_HEADER_LENGTH) {
-            return 0;
-        }
-        cb.markReaderIndex();
-        PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb);
-        cb.resetReaderIndex();
-        return tempObjHeader.getObjClass();
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-        int iLenStartIndex = cb.writerIndex();
-        //PCEP LSPA object is optional
-        if (this.isLspaObjectSet) {
-            this.lspaObject.write(cb);
-        }
-
-        //PCEP BANDWIDTH object is optional
-        if (this.isBandwidthObjectSet) {
-            this.bandwidthObject.write(cb);
-        }
-
-        //PCEP Metric list is optional
-        if (this.isMetricListSet) {
-            ListIterator<PcepMetricObject> listIterator = this.llMetricList.listIterator();
-            while (listIterator.hasNext()) {
-                listIterator.next().write(cb);
-            }
-        }
-
-        //PCEP  IRO object is optional
-        if (this.isIroObjectSet) {
-            this.iroObject.write(cb);
-        }
-        return cb.writerIndex() - iLenStartIndex;
-    }
-
-    @Override
-    public PcepLspaObject getLspaObject() {
-        return lspaObject;
-    }
-
-    @Override
-    public PcepBandwidthObject getBandwidthObject() {
-        return bandwidthObject;
-    }
-
-    @Override
-    public LinkedList<PcepMetricObject> getMetricObjectList() {
-        return llMetricList;
-    }
-
-    @Override
-    public PcepIroObject getIroObject() {
-        return iroObject;
-    }
-
-    @Override
-    public void setBandwidthObject(PcepBandwidthObject bandwidthObject) {
-        this.isBandwidthObjectSet = true;
-        this.bandwidthObject = bandwidthObject;
-    }
-
-    @Override
-    public void setMetricObjectList(LinkedList<PcepMetricObject> llMetricList) {
-        this.isMetricListSet = true;
-        this.llMetricList = llMetricList;
-
-    }
-
-    @Override
-    public void setLspaObject(PcepLspaObject lspaObject) {
-        this.isLspaObjectSet = true;
-        this.lspaObject = lspaObject;
-    }
-
-    @Override
-    public void setIroObject(PcepIroObject iroObject) {
-        this.isIroObjectSet = true;
-        this.iroObject = iroObject;
-    }
-
-    /**
-     * Builder class for PCEP attributes.
-     */
-    public static class Builder implements PcepAttribute.Builder {
-
-        //PCEP LSPA Object
-        private PcepLspaObject lspaObject;
-        private boolean isLspaObjectSet;
-
-        //PCEP BANDWIDTH Object
-        private PcepBandwidthObject bandwidthObject;
-        private boolean isBandwidthObjectSet;
-
-        //PCEP Metric list
-        private LinkedList<PcepMetricObject> llMetricList;
-        private boolean isMetricListSet;
-
-        //PCEP IRO object
-        private PcepIroObject iroObject;
-        private boolean isIroObjectSet;
-
-        @Override
-        public PcepAttribute build() {
-
-            //PCEP LSPA Object
-            PcepLspaObject lspaObject = null;
-
-            //PCEP BANDWIDTH Object
-            PcepBandwidthObject bandwidthObject = null;
-
-            //PCEP Metric list
-            LinkedList<PcepMetricObject> llMetricList = null;
-
-            //PCEP IRO object
-            PcepIroObject iroObject = null;
-
-            if (this.isLspaObjectSet) {
-                lspaObject = this.lspaObject;
-            }
-            if (this.isBandwidthObjectSet) {
-                bandwidthObject = this.bandwidthObject;
-            }
-            if (this.isMetricListSet) {
-                llMetricList = this.llMetricList;
-            }
-            if (this.isIroObjectSet) {
-                iroObject = this.iroObject;
-            }
-            return new PcepAttributeVer1(lspaObject, bandwidthObject, llMetricList, iroObject);
-        }
-
-        @Override
-        public PcepLspaObject getLspaObject() {
-            return this.lspaObject;
-        }
-
-        @Override
-        public PcepBandwidthObject getBandwidthObject() {
-            return this.bandwidthObject;
-        }
-
-        @Override
-        public LinkedList<PcepMetricObject> getMetricObjectList() {
-            return this.llMetricList;
-        }
-
-        @Override
-        public PcepIroObject getIroObject() {
-            return this.iroObject;
-        }
-
-        @Override
-        public Builder setBandwidthObject(PcepBandwidthObject bandwidthObject) {
-            this.isBandwidthObjectSet = true;
-            this.bandwidthObject = bandwidthObject;
-            return this;
-        }
-
-        @Override
-        public Builder setMetricObjectList(LinkedList<PcepMetricObject> llMetricList) {
-            this.isMetricListSet = true;
-            this.llMetricList = llMetricList;
-            return this;
-        }
-
-        @Override
-        public Builder setLspaObject(PcepLspaObject lspaObject) {
-            this.isLspaObjectSet = true;
-            this.lspaObject = lspaObject;
-            return this;
-        }
-
-        @Override
-        public Builder setIroObject(PcepIroObject iroObject) {
-            this.isIroObjectSet = true;
-            this.iroObject = iroObject;
-            return this;
-        }
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("lspaObject", lspaObject)
-                .add("bandwidthObject", bandwidthObject)
-                .add("MetricObjectList", llMetricList)
-                .add("IroObject", iroObject)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepBandwidthObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepBandwidthObjectVer1.java
deleted file mode 100644
index 090c96f..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepBandwidthObjectVer1.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepBandwidthObject;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PcepBandwidthObject.
- */
-public class PcepBandwidthObjectVer1 implements PcepBandwidthObject {
-
-    /*
-     *    RFC : 5440 , section : 7.7.
-          0                   1                   2                   3
-          0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-          |                         Bandwidth                             |
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-                         The BANDWIDTH Object format
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepBandwidthObjectVer1.class);
-    /*
-     *  Requested bandwidth: BANDWIDTH Object-Type is 1.
-        Bandwidth of an existing TE LSP for which a re-optimization is
-        requested. BANDWIDTH Object-Type is 2.
-     */
-    //Right now handling type 1
-    public static final byte BANDWIDTH_OBJ_TYPE = 1;
-    public static final byte BANDWIDTH_OBJ_CLASS = 5;
-    public static final byte BANDWIDTH_OBJECT_VERSION = 1;
-    public static final int NO_OF_BITS = 8;
-    public static final short BANDWIDTH_OBJ_MINIMUM_LENGTH = 8;
-
-    static final PcepObjectHeader DEFAULT_BANDWIDTH_OBJECT_HEADER = new PcepObjectHeader(BANDWIDTH_OBJ_CLASS,
-            BANDWIDTH_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED,
-            BANDWIDTH_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader bandwidthObjHeader;
-    private float iBandwidth;
-
-    /**
-     * Constructor to bandwidth object header and bandwidth.
-     *
-     * @param bandwidthObjHeader bandwidth object header
-     * @param iBandwidth bandwidth value
-     */
-    public PcepBandwidthObjectVer1(PcepObjectHeader bandwidthObjHeader, float iBandwidth) {
-        this.bandwidthObjHeader = bandwidthObjHeader;
-        this.iBandwidth = iBandwidth;
-    }
-
-    /**
-     * Constructor to initialize bandwidth.
-     *
-     * @param iBandwidth bandwidth value
-     */
-    public PcepBandwidthObjectVer1(float iBandwidth) {
-        this.bandwidthObjHeader = DEFAULT_BANDWIDTH_OBJECT_HEADER;
-        this.iBandwidth = iBandwidth;
-    }
-
-    /**
-     * Returns Object Header.
-     *
-     * @return bandwidthObjHeader
-     */
-    public PcepObjectHeader getBandwidthObjHeader() {
-        return this.bandwidthObjHeader;
-    }
-
-    /**
-     * Sets Object Header.
-     *
-     * @param obj bandwidth object header
-     */
-    public void setBandwidthObjHeader(PcepObjectHeader obj) {
-        this.bandwidthObjHeader = obj;
-    }
-
-    @Override
-    public float getBandwidth() {
-        return this.iBandwidth;
-    }
-
-    @Override
-    public void setBandwidth(float iBandwidth) {
-        this.iBandwidth = iBandwidth;
-    }
-
-    /**
-     * Reads from channel buffer and returns object of PcepBandwidthObject.
-     *
-     * @param cb channel buffer to parse
-     * @return object of PcepBandwidthObject
-     * @throws PcepParseException while parsing channel buffer
-     */
-    public static PcepBandwidthObject read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepObjectHeader bandwidthObjHeader;
-        float bandwidth;
-
-        bandwidthObjHeader = PcepObjectHeader.read(cb);
-        bandwidth = ieeeToFloatRead(cb.readInt()) * NO_OF_BITS;
-
-        return new PcepBandwidthObjectVer1(bandwidthObjHeader, bandwidth);
-    }
-
-    /**
-     * Parse the IEEE floating point notation and returns it in normal float.
-     *
-     * @param iVal IEEE floating point number
-     * @return normal float
-     */
-    public static float ieeeToFloatRead(int iVal) {
-
-        return Float.intBitsToFloat(iVal);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        //write Object header
-        int objStartIndex = cb.writerIndex();
-        int objLenIndex = bandwidthObjHeader.write(cb);
-
-        if (objLenIndex <= 0) {
-            throw new PcepParseException("Failed to write bandwidth object header. Index " + objLenIndex);
-        }
-
-        //Convert to bytes per second
-        float bwBytes = iBandwidth / 8.0f;
-        //Bytes/sec to IEEE floating format
-        int bandwidth = Float.floatToIntBits(bwBytes);
-
-        cb.writeByte(bandwidth >>> 24);
-        cb.writeByte(bandwidth >> 16 & 0xff);
-        cb.writeByte(bandwidth >> 8 & 0xff);
-        cb.writeByte(bandwidth & 0xff);
-
-        short hLength = (short) (cb.writerIndex() - objStartIndex);
-        cb.setShort(objLenIndex, hLength);
-        //will be helpful during print().
-        bandwidthObjHeader.setObjLen(hLength);
-
-        return cb.writerIndex() - objStartIndex;
-    }
-
-    /**
-     * builder class for PCEP bandwidth object.
-     */
-    public static class Builder implements PcepBandwidthObject.Builder {
-
-        private PcepObjectHeader bandwidthObjHeader;
-        private boolean bIsHeaderSet = false;
-
-        private float iBandwidth;
-        private boolean bIsBandwidthSet = false;
-
-        private boolean bPFlag;
-        private boolean bIsPFlagSet = false;
-
-        private boolean bIFlag;
-        private boolean bIsIFlagSet = false;
-
-        @Override
-        public PcepBandwidthObject build() throws PcepParseException {
-
-            PcepObjectHeader bandwidthObjHeader = this.bIsHeaderSet ? this.bandwidthObjHeader
-                    : DEFAULT_BANDWIDTH_OBJECT_HEADER;
-
-            if (bIsPFlagSet) {
-                bandwidthObjHeader.setPFlag(bPFlag);
-            }
-
-            if (bIsIFlagSet) {
-                bandwidthObjHeader.setIFlag(bIFlag);
-            }
-
-            if (!this.bIsBandwidthSet) {
-                throw new PcepParseException("bandwidth not Set while building Bandwidth Object.");
-            }
-
-            return new PcepBandwidthObjectVer1(bandwidthObjHeader, iBandwidth);
-        }
-
-        @Override
-        public float getBandwidth() {
-            return this.iBandwidth;
-        }
-
-        @Override
-        public PcepObjectHeader getBandwidthObjHeader() {
-            return this.bandwidthObjHeader;
-        }
-
-        @Override
-        public Builder setBandwidthObjHeader(PcepObjectHeader obj) {
-            this.bandwidthObjHeader = obj;
-            return this;
-        }
-
-        @Override
-        public Builder setBandwidth(float iBandwidth) {
-            this.iBandwidth = iBandwidth;
-            this.bIsBandwidthSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("BandwidthObjectHeader", bandwidthObjHeader)
-                .add("Bandwidth", iBandwidth).toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepCloseMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepCloseMsgVer1.java
deleted file mode 100644
index fcf3421..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepCloseMsgVer1.java
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepCloseMsg;
-import org.onosproject.pcepio.protocol.PcepMessageReader;
-import org.onosproject.pcepio.protocol.PcepMessageWriter;
-import org.onosproject.pcepio.protocol.PcepType;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP Close Message.
- */
-class PcepCloseMsgVer1 implements PcepCloseMsg {
-
-    /*
-     * RFC : 5440 , section : 6.8
-     * <Close Message>           ::= <Common Header> <CLOSE>
-     *
-         0                   1                   2                   3
-         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        | Ver |  Flags  |  Message-Type |       Message-Length          |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        | Object-Class  |   OT  |Res|P|I|   Object Length (bytes)       |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |          Reserved             |      Flags    |    Reason     |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                                                               |
-        //                         Optional TLVs                       //
-        |                                                               |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepCloseMsgVer1.class);
-
-    // Pcep version: 1
-    public static final byte PACKET_VERSION = 1;
-    public static final int PACKET_MINIMUM_LENGTH = 12;
-    public static final PcepType MSG_TYPE = PcepType.CLOSE;
-    public static final byte CLOSE_OBJ_TYPE = 1;
-    public static final byte CLOSE_OBJ_CLASS = 15;
-    public static final byte CLOSE_OBJECT_VERSION = 1;
-    public static final byte DEFAULT_REASON = 1; // Default reason to close
-    public static final short CLOSE_OBJ_MINIMUM_LENGTH = 8;
-    public static final int SHIFT_FLAG = 5;
-    static final PcepObjectHeader DEFAULT_CLOSE_HEADER = new PcepObjectHeader(CLOSE_OBJ_CLASS, CLOSE_OBJ_TYPE,
-            PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, CLOSE_OBJ_MINIMUM_LENGTH);
-
-    private final PcepObjectHeader closeObjHeader;
-    private byte yReason;
-    private LinkedList<PcepValueType> llOptionalTlv;
-
-    public static final PcepCloseMsgVer1.Reader READER = new Reader();
-
-    /**
-     * Reader class for reading close message for channel buffer.
-     */
-    static class Reader implements PcepMessageReader<PcepCloseMsg> {
-        PcepObjectHeader closeObjHeader;
-        byte yReason;
-        // Optional TLV
-        private LinkedList<PcepValueType> llOptionalTlv;
-
-        @Override
-        public PcepCloseMsg readFrom(ChannelBuffer cb) throws PcepParseException {
-
-            if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException("Packet size is less than the minimum length.");
-            }
-            // fixed value property version == 1
-            byte version = cb.readByte();
-            version = (byte) (version >> SHIFT_FLAG);
-            if (version != PACKET_VERSION) {
-                throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), got=" + version);
-            }
-            // fixed value property type == 7
-            byte type = cb.readByte();
-            if (type != MSG_TYPE.getType()) {
-                throw new PcepParseException("Wrong type. Expected=PcepType.CLOSE(7), got=" + type);
-            }
-            short length = cb.readShort();
-            if (length < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException("Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: "
-                        + length);
-            }
-            closeObjHeader = PcepObjectHeader.read(cb);
-            // Reserved
-            cb.readShort();
-            // Flags
-            cb.readByte();
-            // Reason
-            yReason = cb.readByte();
-            // parse optional TLV
-            llOptionalTlv = parseOptionalTlv(cb);
-            return new PcepCloseMsgVer1(closeObjHeader, yReason, llOptionalTlv);
-        }
-    }
-
-    /**
-     * Parse the list of Optional Tlvs.
-     *
-     * @param cb channel buffer
-     * @return list of Optional Tlvs
-     * @throws PcepParseException when fails to parse optional tlvs
-     */
-    public static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException {
-
-        LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>();
-        /*
-         rfc 5440:
-         Optional TLVs may be included within the CLOSE object body. The
-         specification of such TLVs is outside the scope of this document.
-         */
-        return llOptionalTlv;
-    }
-
-    /**
-     * constructor to initialize PCEP close Message with all the parameters.
-     *
-     * @param closeObjHeader object header for close message
-     * @param yReason reason for closing the channel
-     * @param llOptionalTlv list of optional tlvs
-     */
-    PcepCloseMsgVer1(PcepObjectHeader closeObjHeader, byte yReason, LinkedList<PcepValueType> llOptionalTlv) {
-
-        this.closeObjHeader = closeObjHeader;
-        this.yReason = yReason;
-        this.llOptionalTlv = llOptionalTlv;
-    }
-
-    /**
-     * Builder class for PCEP close message.
-     */
-    static class Builder implements PcepCloseMsg.Builder {
-
-        // PCEP Close message fields
-        private boolean bIsHeaderSet = false;
-        private PcepObjectHeader closeObjHeader;
-        private boolean bIsReasonSet = false;
-        private byte yReason;
-        private LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>();
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        @Override
-        public PcepVersion getVersion() {
-            return PcepVersion.PCEP_1;
-        }
-
-        @Override
-        public PcepType getType() {
-            return PcepType.CLOSE;
-        }
-
-        @Override
-        public PcepCloseMsg build() {
-
-            PcepObjectHeader closeObjHeader = this.bIsHeaderSet ? this.closeObjHeader : DEFAULT_CLOSE_HEADER;
-            byte yReason = this.bIsReasonSet ? this.yReason : DEFAULT_REASON;
-
-            if (bIsPFlagSet) {
-                closeObjHeader.setPFlag(bPFlag);
-            }
-
-            if (bIsIFlagSet) {
-                closeObjHeader.setIFlag(bIFlag);
-            }
-            return new PcepCloseMsgVer1(closeObjHeader, yReason, this.llOptionalTlv);
-        }
-
-        @Override
-        public PcepObjectHeader getCloseObjHeader() {
-            return this.closeObjHeader;
-        }
-
-        @Override
-        public Builder setCloseObjHeader(PcepObjectHeader obj) {
-            this.closeObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public byte getReason() {
-            return this.yReason;
-        }
-
-        @Override
-        public Builder setReason(byte value) {
-            this.yReason = value;
-            this.bIsReasonSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) {
-            this.llOptionalTlv = llOptionalTlv;
-            return this;
-        }
-
-        @Override
-        public LinkedList<PcepValueType> getOptionalTlv() {
-            return this.llOptionalTlv;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-    }
-
-    @Override
-    public void writeTo(ChannelBuffer cb) throws PcepParseException {
-        WRITER.write(cb, this);
-    }
-
-    static final Writer WRITER = new Writer();
-
-    /**
-     * Writer class for writing close message to channel buffer.
-     */
-    static class Writer implements PcepMessageWriter<PcepCloseMsgVer1> {
-
-        @Override
-        public void write(ChannelBuffer cb, PcepCloseMsgVer1 message) throws PcepParseException {
-            int startIndex = cb.writerIndex();
-            // first 3 bits set to version
-            cb.writeByte((byte) (PACKET_VERSION << SHIFT_FLAG));
-            // message type
-            cb.writeByte(MSG_TYPE.getType());
-            // length is length of variable message, will be updated at the end
-            // Store the position of message
-            // length in buffer
-            int msgLenIndex = cb.writerIndex();
-            cb.writeShort((short) 0);
-            int objStartIndex = cb.writerIndex();
-            int objLenIndex = message.closeObjHeader.write(cb);
-            if (objLenIndex <= 0) {
-                throw new PcepParseException("Failed to write Close object header.");
-            }
-            // first 3 bits set to version
-            cb.writeShort(0); // Reserved
-            cb.writeByte(0); // Flags
-            cb.writeByte(message.yReason);
-            // Pack optional TLV
-            packOptionalTlv(cb, message);
-            int length = cb.writerIndex() - objStartIndex;
-            cb.setShort(objLenIndex, (short) length);
-            // will be helpful during print().
-            message.closeObjHeader.setObjLen((short) length);
-            // As per RFC the length of object should be
-            // multiples of 4
-            int pad = length % 4;
-            if (pad != 0) {
-                pad = 4 - pad;
-                for (int i = 0; i < pad; i++) {
-                    cb.writeByte((byte) 0);
-                }
-                length = length + pad;
-            }
-            // update message length field
-            length = cb.writerIndex() - startIndex;
-            cb.setShort(msgLenIndex, (short) length);
-        }
-
-        public void packOptionalTlv(ChannelBuffer cb, PcepCloseMsgVer1 message) {
-
-            LinkedList<PcepValueType> llOptionalTlv = message.llOptionalTlv;
-            ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator();
-            while (listIterator.hasNext()) {
-                listIterator.next().write(cb);
-            }
-        }
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public PcepType getType() {
-        return MSG_TYPE;
-    }
-
-    @Override
-    public byte getReason() {
-        return this.yReason;
-    }
-
-    @Override
-    public void setReason(byte value) {
-        this.yReason = value;
-    }
-
-    @Override
-    public LinkedList<PcepValueType> getOptionalTlv() {
-        return this.llOptionalTlv;
-    }
-
-    @Override
-    public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) {
-        this.llOptionalTlv = llOptionalTlv;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("closeObjectHeader", closeObjHeader).add("Reason", yReason)
-                .add("OptionalTlvlist", llOptionalTlv).toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEndPointsObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEndPointsObjectVer1.java
deleted file mode 100644
index 4690626..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEndPointsObjectVer1.java
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepEndPointsObject;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP Endpoints Object.
- */
-public class PcepEndPointsObjectVer1 implements PcepEndPointsObject {
-
-    /*
-     * RFC : 5440 , section : 7.6
-     * An End point is defined as follows:
-    END-POINTS Object-Class is 4.
-
-    END-POINTS Object-Type is 1 for IPv4 and 2 for IPv6.
-    0                   1                   2                   3
-       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      | Object-Class  |   OT  |Res|P|I|   Object Length (bytes)       |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |                     Source IPv4 address                       |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |                  Destination IPv4 address                     |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepEndPointsObjectVer1.class);
-
-    static final byte END_POINTS_OBJ_TYPE = 1;
-    static final byte END_POINTS_OBJ_CLASS = 4;
-    static final byte END_POINTS_OBJECT_VERSION = 1;
-    static final short END_POINTS_OBJ_MINIMUM_LENGTH = 12;
-    static byte endPointObjType;
-
-    static final PcepObjectHeader DEFAULT_END_POINTS_OBJECT_HEADER = new PcepObjectHeader(END_POINTS_OBJ_CLASS,
-            END_POINTS_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED,
-            END_POINTS_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader endPointsObjHeader;
-    int sourceIpAddress;
-    int destIpAddress;
-
-    /**
-     * Constructor to initialize all variables.
-     *
-     * @param endPointsObjHeader end points object header
-     * @param sourceIpAddress source IP address
-     * @param destIpAddress destination IP address
-     */
-    public PcepEndPointsObjectVer1(PcepObjectHeader endPointsObjHeader, int sourceIpAddress, int destIpAddress) {
-
-        this.endPointsObjHeader = endPointsObjHeader;
-        this.sourceIpAddress = sourceIpAddress;
-        this.destIpAddress = destIpAddress;
-    }
-
-    /**
-     * Sets End Points Object Header.
-     *
-     * @param obj of PcepObjectHeader
-     */
-    public void setEndPointsObjHeader(PcepObjectHeader obj) {
-        this.endPointsObjHeader = obj;
-    }
-
-    @Override
-    public void setSourceIpAddress(int sourceIpAddress) {
-        this.sourceIpAddress = sourceIpAddress;
-    }
-
-    @Override
-    public void setDestIpAddress(int destIpAddress) {
-        this.destIpAddress = destIpAddress;
-    }
-
-    @Override
-    public int getSourceIpAddress() {
-        return this.sourceIpAddress;
-    }
-
-    @Override
-    public int getDestIpAddress() {
-        return this.destIpAddress;
-    }
-
-    /**
-     * Reads from channel buffer and returns object of PcepEndPointsObject.
-     *
-     * @param cb of channel buffer
-     * @return object of PcepEndPointsObject
-     * @throws PcepParseException while parsing channel buffer
-     */
-    public static PcepEndPointsObject read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepObjectHeader endPointsObjHeader;
-        int sourceIpAddress;
-        int destIpAddress;
-
-        endPointsObjHeader = PcepObjectHeader.read(cb);
-        if (endPointsObjHeader.getObjType() == END_POINTS_OBJ_TYPE
-                && endPointsObjHeader.getObjClass() == END_POINTS_OBJ_CLASS) {
-            sourceIpAddress = cb.readInt();
-            destIpAddress = cb.readInt();
-        } else {
-            throw new PcepParseException("Expected PcepEndPointsObject.");
-        }
-        return new PcepEndPointsObjectVer1(endPointsObjHeader, sourceIpAddress, destIpAddress);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        int objStartIndex = cb.writerIndex();
-        //write common header
-        int objLenIndex = endPointsObjHeader.write(cb);
-
-        //write source IPv4 IP
-        cb.writeInt(sourceIpAddress);
-        //write destination IPv4 IP
-        cb.writeInt(destIpAddress);
-
-        int length = cb.writerIndex() - objStartIndex;
-        //now write EndPoints Object Length
-        cb.setShort(objLenIndex, (short) length);
-        //will be helpful during print().
-        endPointsObjHeader.setObjLen((short) length);
-
-        return cb.writerIndex();
-
-    }
-
-    /**
-     * Builder class for PCEP end points objects.
-     */
-    public static class Builder implements PcepEndPointsObject.Builder {
-
-        private boolean bIsHeaderSet = false;
-        private boolean bIsSourceIpAddressset = false;
-        private boolean bIsDestIpAddressset = false;
-        private PcepObjectHeader endpointsObjHeader;
-        private int sourceIpAddress;
-        private int destIpAddress;
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        @Override
-        public PcepEndPointsObject build() throws PcepParseException {
-
-            PcepObjectHeader endpointsObjHeader = this.bIsHeaderSet ? this.endpointsObjHeader
-                    : DEFAULT_END_POINTS_OBJECT_HEADER;
-
-            if (bIsPFlagSet) {
-                endpointsObjHeader.setPFlag(bPFlag);
-            }
-
-            if (bIsIFlagSet) {
-                endpointsObjHeader.setIFlag(bIFlag);
-            }
-
-            if (!this.bIsSourceIpAddressset) {
-                throw new PcepParseException("SourceIpAddress not set while building EndPoints object");
-            }
-
-            if (!this.bIsDestIpAddressset) {
-                throw new PcepParseException("DestIpAddress not set while building EndPoints object");
-            }
-
-            return new PcepEndPointsObjectVer1(endpointsObjHeader, this.sourceIpAddress, this.destIpAddress);
-        }
-
-        @Override
-        public PcepObjectHeader getEndPointsObjHeader() {
-            return this.endpointsObjHeader;
-        }
-
-        @Override
-        public Builder setEndPointsObjHeader(PcepObjectHeader obj) {
-            this.endpointsObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public int getSourceIpAddress() {
-            return this.sourceIpAddress;
-        }
-
-        @Override
-        public Builder setSourceIpAddress(int sourceIpAddress) {
-            this.sourceIpAddress = sourceIpAddress;
-            this.bIsSourceIpAddressset = true;
-            return this;
-        }
-
-        @Override
-        public int getDestIpAddress() {
-            return this.destIpAddress;
-        }
-
-        @Override
-        public Builder setDestIpAddress(int destIpAddress) {
-            this.destIpAddress = destIpAddress;
-            this.bIsDestIpAddressset = true;
-            return this;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("sourceIpAddress", sourceIpAddress)
-                .add("destIpAddress", destIpAddress).toString();
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEroObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEroObjectVer1.java
deleted file mode 100644
index 76dc1fa..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEroObjectVer1.java
+++ /dev/null
@@ -1,447 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.ListIterator;
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepEroObject;
-import org.onosproject.pcepio.types.AutonomousSystemNumberSubObject;
-import org.onosproject.pcepio.types.IPv4SubObject;
-import org.onosproject.pcepio.types.IPv6SubObject;
-import org.onosproject.pcepio.types.PathKeySubObject;
-import org.onosproject.pcepio.types.PcepErrorDetailInfo;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.onosproject.pcepio.types.SrEroSubObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP Ero Object.
- */
-public class PcepEroObjectVer1 implements PcepEroObject {
-    /*
-     * rfc3209
-      0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     | Object-Class  |   OT  |Res|P|I|   Object Length (bytes)       |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                                                               |
-     //                        (Subobjects)                          //
-     |                                                               |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     If a Path message contains multiple EXPLICIT_ROUTE objects, only the
-     first object is meaningful.  Subsequent EXPLICIT_ROUTE objects MAY be
-     ignored and SHOULD NOT be propagated.
-
-     In current implementation, only strict hops are supported. So,
-     empty ERO with no sub-objects is considered illegal.
-
-     Subobjects:
-      0                   1
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-------------//----------------+
-     |L|    Type     |     Length    | (Subobject contents)          |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-------------//----------------+
-
-      L
-
-         The L bit is an attribute of the subobject.  The L bit is set
-         if the subobject represents a loose hop in the explicit route.
-         If the bit is not set, the subobject represents a strict hop in
-         the explicit route.
-
-      Type
-
-         The Type indicates the type of contents of the subobject.
-
-
-      Subobject 1: IPv4 address
-
-      0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |L|    Type     |     Length    | IPv4 address (4 bytes)        |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     | IPv4 address (continued)      | Prefix Length |      Resvd    |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     Subobject 2:  IPv6 Prefix
-
-      0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |L|    Type     |     Length    | IPv6 address (16 bytes)       |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     | IPv6 address (continued)                                      |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     | IPv6 address (continued)                                      |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     | IPv6 address (continued)                                      |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     | IPv6 address (continued)      | Prefix Length |      Resvd    |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     Subobject 3:  Autonomous System Number
-
-     The contents of an Autonomous System (AS) number subobject are a 2-
-     octet AS number.  The abstract node represented by this subobject is
-     the set of nodes belonging to the autonomous system.
-
-     The length of the AS number subobject is 4 octets.
-
-     Subobject 4: PATH_KEY_32_BIT_SUB_OBJ_TYPE:
-
-      Pathkey subobject(RFC 5520):
-      0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |L|    Type     |     Length    |           Path-Key            |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                         PCE ID (4 bytes)                      |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     Subobject 5: SR_ERO_SUB_OBJ_TYPE:
-
-       SR-ERO subobject: (draft-ietf-pce-segment-routing-00)
-      0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |L|    Type     |     Length    |  ST   |     Flags     |F|S|C|M|
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                              SID                              |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     //                        NAI (variable)                       //
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepEroObjectVer1.class);
-
-    public static final byte ERO_OBJ_TYPE = 1;
-    public static final byte ERO_OBJ_CLASS = 7;
-    public static final byte ERO_OBJECT_VERSION = 1;
-    public static final short ERO_OBJ_MINIMUM_LENGTH = 12;
-    public static final byte IPV4_TYPE = 1;
-    public static final byte PATH_KEY_32_BIT_SUB_OBJ_TYPE = 64;
-    public static final int LABEL_SUB_OBJ_TYPE = 3;
-    public static final int SR_ERO_SUB_OBJ_TYPE = 96;
-    public static final int OBJECT_HEADER_LENGTH = 4;
-    public static final int TYPE_SHIFT_VALUE = 0x7F;
-
-    public static final PcepObjectHeader DEFAULT_ERO_OBJECT_HEADER = new PcepObjectHeader(ERO_OBJ_CLASS, ERO_OBJ_TYPE,
-            PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, ERO_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader eroObjHeader;
-    private LinkedList<PcepValueType> subObjectList = new LinkedList<>();
-
-    /**
-     * reset variables.
-     */
-    public PcepEroObjectVer1() {
-        this.eroObjHeader = null;
-        this.subObjectList = null;
-    }
-
-    /**
-     * Constructor to initialize parameters of ERO object.
-     *
-     * @param eroObjHeader ERO object header
-     * @param subObjectList list of sub objects.
-     */
-    public PcepEroObjectVer1(PcepObjectHeader eroObjHeader, LinkedList<PcepValueType> subObjectList) {
-
-        this.eroObjHeader = eroObjHeader;
-        this.subObjectList = subObjectList;
-    }
-
-    /**
-     * Returns ERO object header.
-     *
-     * @return eroObjHeader ERO object header
-     */
-    public PcepObjectHeader getEroObjHeader() {
-        return this.eroObjHeader;
-    }
-
-    /**
-     * Sets Object Header.
-     *
-     * @param obj ERO object header
-     */
-    public void setEroObjHeader(PcepObjectHeader obj) {
-        this.eroObjHeader = obj;
-    }
-
-    @Override
-    public LinkedList<PcepValueType> getSubObjects() {
-        return this.subObjectList;
-    }
-
-    @Override
-    public void setSubObjects(LinkedList<PcepValueType> subObjectList) {
-        this.subObjectList = subObjectList;
-    }
-
-    /**
-     * Reads from channel buffer and returns object of PcepEroObject.
-     *
-     * @param cb channel buffer.
-     * @return  object of PcepEroObject
-     * @throws PcepParseException when ERO object is not present in channel buffer
-     */
-    public static PcepEroObject read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepObjectHeader eroObjHeader;
-        LinkedList<PcepValueType> subObjectList = new LinkedList<>();
-
-        eroObjHeader = PcepObjectHeader.read(cb);
-
-        if (eroObjHeader.getObjClass() != PcepEroObjectVer1.ERO_OBJ_CLASS) {
-            log.debug("ErrorType:" + PcepErrorDetailInfo.ERROR_TYPE_6 + " ErrorValue:"
-                    + PcepErrorDetailInfo.ERROR_VALUE_9);
-            throw new PcepParseException(PcepErrorDetailInfo.ERROR_TYPE_6, PcepErrorDetailInfo.ERROR_VALUE_9);
-        }
-
-        if (eroObjHeader.getObjLen() > OBJECT_HEADER_LENGTH) {
-            ChannelBuffer tempCb = cb.readBytes(eroObjHeader.getObjLen() - OBJECT_HEADER_LENGTH);
-            subObjectList = parseSubObjects(tempCb);
-        }
-        return new PcepEroObjectVer1(eroObjHeader, subObjectList);
-    }
-
-    /**
-     * Parse list of Sub Objects.
-     *
-     * @param cb channel buffer
-     * @return list of Sub Objects
-     * @throws PcepParseException when fails to parse sub object list
-     */
-    protected static LinkedList<PcepValueType> parseSubObjects(ChannelBuffer cb) throws PcepParseException {
-
-        LinkedList<PcepValueType> subObjectList = new LinkedList<>();
-
-        while (0 < cb.readableBytes()) {
-
-            //check the Type of the TLV
-            short type = cb.readByte();
-            type = (short) (type & (TYPE_SHIFT_VALUE));
-            byte hLength = cb.readByte();
-
-            PcepValueType subObj;
-
-            switch (type) {
-
-            case IPv4SubObject.TYPE:
-                subObj = IPv4SubObject.read(cb);
-                break;
-            case IPv6SubObject.TYPE:
-                byte[] ipv6Value = new byte[IPv6SubObject.VALUE_LENGTH];
-                cb.readBytes(ipv6Value, 0, IPv6SubObject.VALUE_LENGTH);
-                subObj = new IPv6SubObject(ipv6Value);
-                break;
-            case AutonomousSystemNumberSubObject.TYPE:
-                subObj = AutonomousSystemNumberSubObject.read(cb);
-                break;
-            case PathKeySubObject.TYPE:
-                subObj = PathKeySubObject.read(cb);
-                break;
-            case SrEroSubObject.TYPE:
-                subObj = SrEroSubObject.read(cb);
-                break;
-            default:
-                throw new PcepParseException("Unexpected sub object. Type: " + (int) type);
-            }
-            // Check for the padding
-            int pad = hLength % 4;
-            if (0 < pad) {
-                pad = 4 - pad;
-                if (pad <= cb.readableBytes()) {
-                    cb.skipBytes(pad);
-                }
-            }
-
-            subObjectList.add(subObj);
-        }
-        if (0 < cb.readableBytes()) {
-            throw new PcepParseException("Subobject parsing error. Extra bytes received.");
-        }
-        return subObjectList;
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        //write Object header
-        int objStartIndex = cb.writerIndex();
-
-        int objLenIndex = eroObjHeader.write(cb);
-
-        if (objLenIndex <= 0) {
-            throw new PcepParseException("Failed to write ERO object header. Index " + objLenIndex);
-        }
-
-        ListIterator<PcepValueType> listIterator = subObjectList.listIterator();
-
-        while (listIterator.hasNext()) {
-            listIterator.next().write(cb);
-        }
-
-        //Update object length now
-        int length = cb.writerIndex() - objStartIndex;
-        cb.setShort(objLenIndex, (short) length);
-        //will be helpful during print().
-        eroObjHeader.setObjLen((short) length);
-
-        //As per RFC the length of object should be multiples of 4
-        int pad = length % 4;
-
-        if (pad != 0) {
-            pad = 4 - pad;
-            for (int i = 0; i < pad; i++) {
-                cb.writeByte((byte) 0);
-            }
-            length = length + pad;
-        }
-
-        objLenIndex = cb.writerIndex();
-        return objLenIndex;
-    }
-
-    /**
-     * Builder class for PCEP ERO object.
-     */
-    public static class Builder implements PcepEroObject.Builder {
-
-        private boolean bIsHeaderSet = false;
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        private PcepObjectHeader eroObjHeader;
-        LinkedList<PcepValueType> subObjectList = new LinkedList<>();
-
-        @Override
-        public PcepEroObject build() {
-
-            PcepObjectHeader eroObjHeader = this.bIsHeaderSet ? this.eroObjHeader : DEFAULT_ERO_OBJECT_HEADER;
-
-            if (bIsPFlagSet) {
-                eroObjHeader.setPFlag(bPFlag);
-            }
-
-            if (bIsIFlagSet) {
-                eroObjHeader.setIFlag(bIFlag);
-            }
-
-            return new PcepEroObjectVer1(eroObjHeader, this.subObjectList);
-        }
-
-        @Override
-        public PcepObjectHeader getEroObjHeader() {
-            return this.eroObjHeader;
-        }
-
-        @Override
-        public Builder setEroObjHeader(PcepObjectHeader obj) {
-            this.eroObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public LinkedList<PcepValueType> getSubObjects() {
-            return this.subObjectList;
-        }
-
-        @Override
-        public Builder setSubObjects(LinkedList<PcepValueType> subObjectList) {
-            this.subObjectList = subObjectList;
-            return this;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(eroObjHeader, subObjectList);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass()).omitNullValues()
-                .add("EroObjHeader", eroObjHeader)
-                .add("SubObjects", subObjectList)
-                .toString();
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj instanceof PcepEroObjectVer1) {
-            int countObjSubTlv = 0;
-            int countOtherSubTlv = 0;
-            boolean isCommonSubTlv = true;
-            PcepEroObjectVer1 other = (PcepEroObjectVer1) obj;
-            Iterator<PcepValueType> objListIterator = other.subObjectList.iterator();
-            countOtherSubTlv = other.subObjectList.size();
-            countObjSubTlv = subObjectList.size();
-            if (countObjSubTlv != countOtherSubTlv) {
-                return false;
-            } else {
-                while (objListIterator.hasNext() && isCommonSubTlv) {
-                    PcepValueType subTlv = objListIterator.next();
-                    if (subObjectList.contains(subTlv)) {
-                        isCommonSubTlv = Objects.equals(subObjectList.get(subObjectList.indexOf(subTlv)),
-                                         other.subObjectList.get(other.subObjectList.indexOf(subTlv)));
-                    } else {
-                        isCommonSubTlv = false;
-                    }
-                }
-                return isCommonSubTlv && Objects.equals(eroObjHeader, other.eroObjHeader);
-            }
-        }
-        return false;
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorInfoVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorInfoVer1.java
deleted file mode 100644
index 43c9f3c..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorInfoVer1.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepError;
-import org.onosproject.pcepio.protocol.PcepErrorInfo;
-import org.onosproject.pcepio.protocol.PcepErrorObject;
-import org.onosproject.pcepio.protocol.PcepRPObject;
-import org.onosproject.pcepio.protocol.PcepLSObject;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP Error Info.
- * Reference : draft-dhodylee-pce-pcep-ls-01, section 8.2.
- */
-public class PcepErrorInfoVer1 implements PcepErrorInfo {
-
-    private static final Logger log = LoggerFactory.getLogger(PcepErrorInfoVer1.class);
-    //Error list is optional
-    private List<PcepError> errList;
-
-    /**
-     * Constructor to add PCEP error object to the list.
-     *
-     * @param llRPObjList list of PCEP RP object
-     * @param llLSObjList list of PCEP LS object
-     * @param llErrObjList list of PCEP error object
-     */
-    public PcepErrorInfoVer1(List<PcepRPObject> llRPObjList, List<PcepLSObject> llLSObjList,
-            List<PcepErrorObject> llErrObjList) {
-        this.errList = new LinkedList<>();
-        if ((llErrObjList != null) && (!llErrObjList.isEmpty())) {
-            this.errList.add(new PcepErrorVer1(llRPObjList, llLSObjList, llErrObjList));
-        }
-    }
-
-    /**
-     * Constructor to initialize error info.
-     *
-     * @param errll linked list or pcep error
-     */
-    public PcepErrorInfoVer1(List<PcepError> errll) {
-        this.errList = errll;
-    }
-
-    @Override
-    public boolean isErrorInfoPresent() {
-        return !this.errList.isEmpty();
-    }
-
-    @Override
-    public void read(ChannelBuffer cb) throws PcepParseException {
-        PcepObjectHeader tempObjHeader;
-
-        while (0 < cb.readableBytes()) {
-            cb.markReaderIndex();
-            tempObjHeader = PcepObjectHeader.read(cb);
-            cb.resetReaderIndex();
-            byte yObjClass = tempObjHeader.getObjClass();
-            if ((yObjClass != PcepRPObjectVer1.RP_OBJ_CLASS) && (yObjClass != PcepLSObjectVer1.LS_OBJ_CLASS)
-                    && (yObjClass != PcepErrorObjectVer1.ERROR_OBJ_CLASS)) {
-                throw new PcepParseException("Unknown Object is present in PCEP-ERROR. Object Class: " + yObjClass);
-            }
-
-            this.errList.add(PcepErrorVer1.read(cb));
-        }
-    }
-
-    @Override
-    public void write(ChannelBuffer cb) throws PcepParseException {
-        //write <error>
-        ListIterator<PcepError> listIterator = errList.listIterator();
-        while (listIterator.hasNext()) {
-            PcepError pcepError = listIterator.next();
-
-            //RP Object list is optional
-            List<PcepRPObject> llRPObjList = pcepError.getRPObjList();
-            if (llRPObjList != null) {
-                ListIterator<PcepRPObject> rpListIterator = llRPObjList.listIterator();
-                while (rpListIterator.hasNext()) {
-                    rpListIterator.next().write(cb);
-                }
-            }
-
-            //LS Object list is optional
-            List<PcepLSObject> llLSObjList = pcepError.getLSObjList();
-            if (llLSObjList != null) {
-                ListIterator<PcepLSObject> teListIterator = llLSObjList.listIterator();
-                while (teListIterator.hasNext()) {
-                    teListIterator.next().write(cb);
-                }
-            }
-
-            // <error-obj-list> is mandatory
-            boolean bIsErrorObjListFound = false;
-
-            List<PcepErrorObject> llErrObjList = pcepError.getErrorObjList();
-            if (llErrObjList != null) {
-                ListIterator<PcepErrorObject> errObjListIterator = llErrObjList.listIterator();
-                while (errObjListIterator.hasNext()) {
-                    errObjListIterator.next().write(cb);
-                    bIsErrorObjListFound = true;
-                }
-            }
-
-            if (!bIsErrorObjListFound) {
-                throw new PcepParseException("<error-obj-list> is mandatory.");
-            }
-        }
-    }
-
-    @Override
-    public List<Integer> getErrorType() {
-        List<Integer> errorType = new LinkedList<>();
-        ListIterator<PcepError> listIterator = errList.listIterator();
-        PcepErrorObject errObj;
-        int error;
-        while (listIterator.hasNext()) {
-            PcepError pcepError = listIterator.next();
-            List<PcepErrorObject> llErrObjList = pcepError.getErrorObjList();
-            if (llErrObjList != null) {
-                ListIterator<PcepErrorObject> errObjListIterator = llErrObjList.listIterator();
-                while (errObjListIterator.hasNext()) {
-                    errObj = errObjListIterator.next();
-                    error = errObj.getErrorType();
-                    errorType.add(error);
-                }
-            }
-        }
-        return errorType;
-    }
-
-    @Override
-    public List<Integer> getErrorValue() {
-        List<Integer> errorValue = new LinkedList<>();
-        ListIterator<PcepError> listIterator = errList.listIterator();
-        PcepErrorObject errObj;
-        int error;
-        while (listIterator.hasNext()) {
-            PcepError pcepError = listIterator.next();
-            List<PcepErrorObject> llErrObjList = pcepError.getErrorObjList();
-            if (llErrObjList != null) {
-                ListIterator<PcepErrorObject> errObjListIterator = llErrObjList.listIterator();
-                while (errObjListIterator.hasNext()) {
-                    errObj = errObjListIterator.next();
-                    error = errObj.getErrorValue();
-                    errorValue.add(error);
-                }
-            }
-        }
-        return errorValue;
-    }
-
-    /**
-     * Builder class for PCEP error info.
-     */
-    public static class Builder implements PcepErrorInfo.Builder {
-        private List<PcepError> errll;
-
-        @Override
-        public PcepErrorInfo build() {
-            return new PcepErrorInfoVer1(errll);
-        }
-
-        @Override
-        public List<PcepError> getPcepErrorList() {
-            return this.errll;
-        }
-
-        @Override
-        public Builder setPcepErrorList(List<PcepError> errll) {
-            this.errll = errll;
-            return this;
-        }
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("ErrorList", errList).toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorMsgVer1.java
deleted file mode 100644
index 036f1f4..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorMsgVer1.java
+++ /dev/null
@@ -1,385 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepErrorInfo;
-import org.onosproject.pcepio.protocol.PcepErrorMsg;
-import org.onosproject.pcepio.protocol.PcepErrorObject;
-import org.onosproject.pcepio.protocol.PcepMessageReader;
-import org.onosproject.pcepio.protocol.PcepMessageWriter;
-import org.onosproject.pcepio.protocol.PcepOpenObject;
-import org.onosproject.pcepio.protocol.PcepType;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.onosproject.pcepio.types.ErrorObjListWithOpen;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-
-/**
- * Provides PCEP Error Message.
- */
-public class PcepErrorMsgVer1 implements PcepErrorMsg {
-
-    /*
-     * PCE Error message format.
-       Reference: draft-dhodylee-pce-pcep-ls-01, section 8.2.
-
-       <PCErr Message>                ::= <Common Header>
-                                        ( <error-obj-list> [<Open>] ) | <error>
-                                          [<error-list>]
-
-       <error-obj-list>               ::=<PCEP-ERROR>[<error-obj-list>]
-
-       <error>                        ::=[<request-id-list> | <ls-id-list>]
-                                           <error-obj-list>
-
-       <request-id-list>              ::=<RP>[<request-id-list>]
-
-       <ls-id-list>                   ::=<LS>[<ls-id-list>]
-
-       <error-list>                   ::=<error>[<error-list>]
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepOpenMsgVer1.class);
-    public static final byte PACKET_VERSION = 1;
-    public static final int PACKET_MINIMUM_LENGTH = 12;
-    public static final PcepType MSG_TYPE = PcepType.ERROR;
-
-    //Below either one should be present.
-    private ErrorObjListWithOpen errObjListWithOpen; //optional   ( <error-obj-list> [<Open>] )
-    private PcepErrorInfo errInfo; //optional     <error> [<error-list>]
-
-    public static final PcepErrorMsgVer1.Reader READER = new Reader();
-
-    /**
-     * Constructor to initialize variables.
-     */
-    public PcepErrorMsgVer1() {
-        errObjListWithOpen = null;
-        errInfo = null;
-    }
-
-    /**
-     * Constructor to initialize variables.
-     *
-     * @param errObjListWithOpen error-object-list with open object
-     * @param errInfo error information
-     */
-    public PcepErrorMsgVer1(ErrorObjListWithOpen errObjListWithOpen, PcepErrorInfo errInfo) {
-        this.errObjListWithOpen = errObjListWithOpen;
-        this.errInfo = errInfo;
-    }
-
-    /**
-     * Reader class for reading PCEP error Message from channel buffer.
-     */
-    public static class Reader implements PcepMessageReader<PcepErrorMsg> {
-
-        ErrorObjListWithOpen errObjListWithOpen;
-        PcepErrorInfo errInfo;
-        PcepObjectHeader tempObjHeader;
-
-        @Override
-        public PcepErrorMsg readFrom(ChannelBuffer cb) throws PcepParseException {
-
-            errObjListWithOpen = null;
-            errInfo = null;
-            tempObjHeader = null;
-
-            if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException("Packet size is less than the minimum length.");
-            }
-
-            byte version = cb.readByte();
-            version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG);
-            if (version != PACKET_VERSION) {
-                throw new PcepParseException("Wrong version: Expected=PcepVersion.PCEP_1(1), got=" + version);
-            }
-            // fixed value property type == 1
-            byte type = cb.readByte();
-            if (type != MSG_TYPE.getType()) {
-                throw new PcepParseException("Wrong type: Expected=PcepType.ERROR(6), got=" + type);
-            }
-            int length = cb.readShort();
-            if (length < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException(
-                        "Wrong length: Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " + length);
-            }
-
-            //parse <PCErr Message>
-            parsePCErrMsg(cb);
-
-            // If other than RP or LS or PCEP-ERROR present then it is error.
-            if (0 < cb.readableBytes()) {
-                PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb);
-                throw new PcepParseException("Unexpected Object found. Object Class : " + tempObjHeader.getObjClass());
-            }
-
-            return new PcepErrorMsgVer1(errObjListWithOpen, errInfo);
-        }
-
-        /**
-         * Parsing PCErr Message.
-         *
-         * @param cb channel buffer.
-         * @throws PcepParseException if mandatory fields are missing
-         * output: this.errObjListWithOpen, this.errInfo
-         */
-        public void parsePCErrMsg(ChannelBuffer cb) throws PcepParseException {
-            //If PCEP-ERROR list is followed by OPEN Object then store into ErrorObjListWithOpen.
-            //     ( <error-obj-list> [<Open>]
-            //If PCEP-ERROR list is followed by RP or LS Object then store into errInfo. <error> [<error-list>]
-            //If only PCEP-ERROR list is present then store into ErrorObjListWithOpen.
-            PcepObjectHeader tempObjHeader;
-            List<PcepErrorObject> llErrObjList;
-
-            if (0 >= cb.readableBytes()) {
-                throw new PcepParseException("PCEP-ERROR message came with empty objects.");
-            }
-
-            //parse PCEP-ERROR list
-            llErrObjList = new LinkedList<>();
-            tempObjHeader = parseErrorObjectList(llErrObjList, cb);
-
-            //check whether OPEN-OBJECT is present.
-            if ((tempObjHeader != null)
-                    && (tempObjHeader.getObjClass() == PcepOpenObjectVer1.OPEN_OBJ_CLASS)) {
-
-                if (llErrObjList.isEmpty()) {
-                    throw new PcepParseException("<error-obj-list> should be present if OPEN-OBJECT exists");
-                }
-
-                PcepOpenObject pcepOpenObj = PcepOpenObjectVer1.read(cb);
-                this.errObjListWithOpen = new ErrorObjListWithOpen(llErrObjList, pcepOpenObj);
-
-            } else if ((tempObjHeader != null) //check whether RP or LS Object is present.
-                    && ((tempObjHeader.getObjClass() == PcepRPObjectVer1.RP_OBJ_CLASS)
-                            || (tempObjHeader.getObjClass() == PcepLSObjectVer1.LS_OBJ_CLASS))) {
-
-                this.errInfo = new PcepErrorInfoVer1(null, null, llErrObjList);
-                this.errInfo.read(cb);
-
-            } else if (!llErrObjList.isEmpty()) {
-                //If only PCEP-ERROR list is present then store it in errObjListWithOpen.
-                this.errObjListWithOpen = new ErrorObjListWithOpen(llErrObjList);
-            } else {
-                throw new PcepParseException("Empty PCEP-ERROR message.");
-            }
-        }
-
-        /**
-         * Parse error-obj-list.
-         *
-         * @param llErrObjList error object list output
-         * @param cb channel buffer input
-         * @throws PcepParseException if mandatory fields are missing
-         * @return error object header
-         */
-        public PcepObjectHeader parseErrorObjectList(List<PcepErrorObject> llErrObjList, ChannelBuffer cb)
-                throws PcepParseException {
-            PcepObjectHeader tempObjHeader = null;
-
-            while (0 < cb.readableBytes()) {
-                cb.markReaderIndex();
-                tempObjHeader = PcepObjectHeader.read(cb);
-                cb.resetReaderIndex();
-                if (tempObjHeader.getObjClass() == PcepErrorObjectVer1.ERROR_OBJ_CLASS) {
-                    llErrObjList.add(PcepErrorObjectVer1.read(cb));
-                } else {
-                    break;
-                }
-            }
-            return tempObjHeader;
-        }
-    }
-
-    /**
-     * Builder class for PCEP error message.
-     */
-    public static class Builder implements PcepErrorMsg.Builder {
-        // Pcep error message fields
-
-        private ErrorObjListWithOpen errObjListWithOpen = null; //optional   ( <error-obj-list> [<Open>] )
-        private PcepErrorInfo errInfo = null; //optional     <error> [<error-list>]
-
-        @Override
-        public PcepVersion getVersion() {
-            return PcepVersion.PCEP_1;
-        }
-
-        @Override
-        public PcepType getType() {
-            return PcepType.ERROR;
-        }
-
-        @Override
-        public PcepErrorMsg build() {
-            return new PcepErrorMsgVer1(this.errObjListWithOpen, this.errInfo);
-        }
-
-        @Override
-        public ErrorObjListWithOpen getErrorObjListWithOpen() {
-            return this.errObjListWithOpen;
-        }
-
-        @Override
-        public Builder setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen) {
-            this.errObjListWithOpen = errObjListWithOpen;
-            return this;
-        }
-
-        @Override
-        public PcepErrorInfo getPcepErrorInfo() {
-            return this.errInfo;
-        }
-
-        @Override
-        public Builder setPcepErrorInfo(PcepErrorInfo errInfo) {
-            this.errInfo = errInfo;
-            return this;
-        }
-    }
-
-    @Override
-    public void writeTo(ChannelBuffer cb) throws PcepParseException {
-        WRITER.write(cb, this);
-    }
-
-    public static final Writer WRITER = new Writer();
-
-    /**
-     * Writer class for writing PCEP error Message to channel buffer.
-     */
-    static class Writer implements PcepMessageWriter<PcepErrorMsgVer1> {
-        @Override
-        public void write(ChannelBuffer cb, PcepErrorMsgVer1 message) throws PcepParseException {
-            int startIndex = cb.writerIndex();
-            // first 3 bits set to version
-            cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG));
-            // message type 0xC
-            cb.writeByte(MSG_TYPE.getType());
-            // length is length of variable message, will be updated at the end
-            // Store the position of message
-            // length in buffer
-            int msgLenIndex = cb.writerIndex();
-            cb.writeShort(0);
-            ErrorObjListWithOpen errObjListWithOpen = message.getErrorObjListWithOpen();
-            PcepErrorInfo errInfo = message.getPcepErrorInfo();
-
-            // write ( <error-obj-list> [<Open>] ) if exists.
-            // otherwise write <error> [<error-list>]
-
-            if ((errObjListWithOpen != null)
-                    && (errObjListWithOpen.isErrorObjListWithOpenPresent())) {
-                errObjListWithOpen.write(cb);
-            } else if ((errInfo != null) && (errInfo.isErrorInfoPresent())) {
-                errInfo.write(cb);
-            } else {
-                throw new PcepParseException("Empty PCEP-ERROR message.");
-            }
-            // PcepErrorMessage message length field
-            int length = cb.writerIndex() - startIndex;
-            cb.setShort(msgLenIndex, (short) length);
-        }
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public PcepType getType() {
-        return MSG_TYPE;
-    }
-
-    @Override
-    public ErrorObjListWithOpen getErrorObjListWithOpen() {
-        return this.errObjListWithOpen;
-    }
-
-    @Override
-    public void setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen) {
-        this.errObjListWithOpen = errObjListWithOpen;
-    }
-
-    @Override
-    public PcepErrorInfo getPcepErrorInfo() {
-        return this.errInfo;
-    }
-
-    @Override
-    public void setPcepErrorInfo(PcepErrorInfo errInfo) {
-        this.errInfo = errInfo;
-    }
-
-    /**
-     * Return list of Error types.
-     *
-     * @return error types list
-     */
-    public List<Integer> getErrorType() {
-        List<Integer> llErrorType = new LinkedList<>();
-        if ((errObjListWithOpen != null)
-                && (errObjListWithOpen.isErrorObjListWithOpenPresent())) {
-            llErrorType = errObjListWithOpen.getErrorType();
-        } else if ((errInfo != null) && (errInfo.isErrorInfoPresent())) {
-            llErrorType = errInfo.getErrorType();
-        }
-
-        return llErrorType;
-    }
-
-    /**
-     * Return list of Error values.
-     *
-     * @return error value list
-     */
-    public List<Integer> getErrorValue() {
-        List<Integer> llErrorValue = new LinkedList<>();
-        if ((errObjListWithOpen != null)
-                && (errObjListWithOpen.isErrorObjListWithOpenPresent())) {
-            llErrorValue = errObjListWithOpen.getErrorValue();
-        } else if ((errInfo != null) && (errInfo.isErrorInfoPresent())) {
-            llErrorValue = errInfo.getErrorValue();
-        }
-
-        return llErrorValue;
-    }
-
-    @Override
-    public String toString() {
-        ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()).omitNullValues();
-
-        if ((errObjListWithOpen != null)
-                && (errObjListWithOpen.isErrorObjListWithOpenPresent())) {
-            toStrHelper.add("ErrorObjectListWithOpen", errObjListWithOpen);
-        }
-        if ((errInfo != null) && (errInfo.isErrorInfoPresent())) {
-            toStrHelper.add("ErrorInfo", errInfo);
-        }
-
-        return toStrHelper.toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorObjectVer1.java
deleted file mode 100644
index b6b0a42..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorObjectVer1.java
+++ /dev/null
@@ -1,341 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepErrorObject;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP Error Object.
- */
-public class PcepErrorObjectVer1 implements PcepErrorObject {
-
-    /*
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    | Object-Class  |   OT  |Res|P|I|   Object Length (bytes)       |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |   Reserved    |      Flags    |   Error-Type  |  Error-value  |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                                                               |
-    //                         Optional TLVs                       //
-    |                                                               |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepErrorObjectVer1.class);
-
-    public static final byte ERROR_OBJ_TYPE = 1;
-    public static final byte ERROR_OBJ_CLASS = 13;
-    public static final byte ERROR_OBJECT_VERSION = 1;
-    //ERROR_OBJ_MINIMUM_LENGTH = CommonHeaderLen(4)+ErrorObjectHeaderLen(4)
-    public static final short ERROR_OBJ_MINIMUM_LENGTH = 8;
-    public static final int OBJECT_HEADER_LENGTH = 4;
-
-    public static final PcepObjectHeader DEFAULT_ERROR_OBJECT_HEADER = new PcepObjectHeader(ERROR_OBJ_CLASS,
-            ERROR_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED,
-            ERROR_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader errorObjHeader;
-    private byte errorType;
-    private byte errorValue;
-    private LinkedList<PcepValueType> optionalTlv; // Optional TLV
-
-    /**
-     * Constructor to initialize variables.
-     *
-     * @param errorObjHeader ERROR Object header
-     * @param errorType Error Type
-     * @param errorValue Error Value
-     * @param optionalTlv list of optional TLV
-     */
-
-    public PcepErrorObjectVer1(PcepObjectHeader errorObjHeader, byte errorType, byte errorValue,
-            LinkedList<PcepValueType> optionalTlv) {
-        this.errorObjHeader = errorObjHeader;
-        this.errorType = errorType;
-        this.errorValue = errorValue;
-        this.optionalTlv = optionalTlv;
-    }
-
-    /**
-     * sets Object Header.
-     *
-     * @param obj Error-Object header
-     */
-    public void setLspObjHeader(PcepObjectHeader obj) {
-        this.errorObjHeader = obj;
-    }
-
-    @Override
-    public void setErrorType(byte errorType) {
-        this.errorType = errorType;
-    }
-
-    @Override
-    public void setErrorValue(byte errorValue) {
-        this.errorValue = errorValue;
-    }
-
-    /**
-     * returns object header.
-     *
-     * @return errorObjHeader Error-Object header
-     */
-    public PcepObjectHeader getErrorObjHeader() {
-        return this.errorObjHeader;
-    }
-
-    @Override
-    public int getErrorType() {
-        return this.errorType;
-    }
-
-    @Override
-    public byte getErrorValue() {
-        return this.errorValue;
-    }
-
-    @Override
-    public LinkedList<PcepValueType> getOptionalTlv() {
-        return this.optionalTlv;
-    }
-
-    @Override
-    public void setOptionalTlv(LinkedList<PcepValueType> optionalTlv) {
-        this.optionalTlv = optionalTlv;
-    }
-
-    /**
-     * Reads from channel buffer and returns object of PcepErrorObject.
-     *
-     * @param cb of channel buffer.
-     * @return object of PCEP-ERROR-OBJECT
-     */
-    public static PcepErrorObject read(ChannelBuffer cb) {
-
-        PcepObjectHeader errorObjHeader;
-        byte errorType;
-        byte errorValue;
-        LinkedList<PcepValueType> optionalTlv;
-
-        errorObjHeader = PcepObjectHeader.read(cb);
-
-        //take only ErrorObject buffer.
-        ChannelBuffer tempCb = cb.readBytes(errorObjHeader.getObjLen() - OBJECT_HEADER_LENGTH);
-        tempCb.readByte(); //ignore Reserved
-        tempCb.readByte(); //ignore Flags
-        errorType = tempCb.readByte();
-        errorValue = tempCb.readByte();
-
-        optionalTlv = parseOptionalTlv(tempCb);
-
-        return new PcepErrorObjectVer1(errorObjHeader, errorType, errorValue, optionalTlv);
-    }
-
-    /**
-     * returns Linked list of optional tlvs.
-     *
-     * @param cb channel buffer.
-     * @return Linked list of optional tlvs
-     */
-    protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) {
-
-        LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>();
-
-        byte[] yTemp = new byte[cb.readableBytes()];
-        cb.readBytes(yTemp);
-
-        return llOutOptionalTlv;
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        //write Object header
-        int objStartIndex = cb.writerIndex();
-
-        int objLenIndex = errorObjHeader.write(cb);
-
-        if (objLenIndex <= 0) {
-            throw new PcepParseException("While writing Error Object Header.");
-        }
-
-        //write Reserved
-        cb.writeByte(0);
-        //write Flags
-        cb.writeByte(0);
-        //write ErrorType and ErrorValue
-        cb.writeByte(this.errorType);
-        cb.writeByte(this.errorValue);
-
-        // Add optional TLV
-        packOptionalTlv(cb);
-
-        //Update object length now
-        int length = cb.writerIndex() - objStartIndex;
-        //will be helpful during print().
-        errorObjHeader.setObjLen((short) length);
-        // As per RFC the length of object should be
-        // multiples of 4
-        int pad = length % 4;
-        if (pad != 0) {
-            pad = 4 - pad;
-            for (int i = 0; i < pad; i++) {
-                cb.writeByte((byte) 0);
-            }
-            length = length + pad;
-        }
-
-        cb.setShort(objLenIndex, (short) length);
-        return length;
-    }
-
-    /**
-     * Pack the Optional tlvs.
-     *
-     * @param cb channel buffer.
-     * @return writer index.
-     */
-    protected int packOptionalTlv(ChannelBuffer cb) {
-
-        ListIterator<PcepValueType> listIterator = optionalTlv.listIterator();
-        int startIndex = cb.writerIndex();
-        while (listIterator.hasNext()) {
-            PcepValueType tlv = listIterator.next();
-
-            if (tlv == null) {
-                log.debug("TLV is null from OptionalTlv list");
-                continue;
-            }
-            tlv.write(cb);
-        }
-
-        return cb.writerIndex() - startIndex;
-    }
-
-    /**
-     * Builder class for PCEP error object.
-     */
-    public static class Builder implements PcepErrorObject.Builder {
-
-        private boolean bIsHeaderSet = false;
-
-        private PcepObjectHeader errorObjHeader;
-        private byte errorType;
-        private byte errorValue;
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        private LinkedList<PcepValueType> optionalTlv = new LinkedList<>();
-
-        @Override
-        public PcepErrorObject build() {
-
-            PcepObjectHeader errorObjHeader = this.bIsHeaderSet ? this.errorObjHeader : DEFAULT_ERROR_OBJECT_HEADER;
-
-            if (bIsPFlagSet) {
-                errorObjHeader.setPFlag(bPFlag);
-            }
-
-            if (bIsIFlagSet) {
-                errorObjHeader.setIFlag(bIFlag);
-            }
-
-            return new PcepErrorObjectVer1(errorObjHeader, errorType, errorValue, optionalTlv);
-        }
-
-        @Override
-        public PcepObjectHeader getErrorObjHeader() {
-            return this.errorObjHeader;
-        }
-
-        @Override
-        public Builder setErrorObjHeader(PcepObjectHeader obj) {
-            this.errorObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public int getErrorType() {
-            return this.errorType;
-        }
-
-        @Override
-        public Builder setErrorType(byte value) {
-            this.errorType = value;
-            return this;
-        }
-
-        @Override
-        public byte getErrorValue() {
-            return this.errorValue;
-        }
-
-        @Override
-        public Builder setErrorValue(byte value) {
-            this.errorValue = value;
-            return this;
-        }
-
-        @Override
-        public Builder setOptionalTlv(LinkedList<PcepValueType> optionalTlv) {
-            this.optionalTlv = optionalTlv;
-            return this;
-        }
-
-        @Override
-        public LinkedList<PcepValueType> getOptionalTlv() {
-            return this.optionalTlv;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("ObjectHeader", errorObjHeader).add("ErrorType", errorType)
-                .add("ErrorValue", errorValue).add("OptionalTlv", optionalTlv).toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorVer1.java
deleted file mode 100644
index 7eb711c..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorVer1.java
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepError;
-import org.onosproject.pcepio.protocol.PcepErrorObject;
-import org.onosproject.pcepio.protocol.PcepRPObject;
-import org.onosproject.pcepio.protocol.PcepLSObject;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PcepError list which contains RP or LS objects.
- * Reference: draft-dhodylee-pce-pcep-ls-01, section 8.2.
- */
-public class PcepErrorVer1 implements PcepError {
-
-    /*
-           <error>::=[<request-id-list> | <ls-id-list>]
-                      <error-obj-list>
-
-           <request-id-list>::=<RP>[<request-id-list>]
-
-           <ls-id-list>::=<LS>[<ls-id-list>]
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepErrorVer1.class);
-
-    private boolean isErroInfoSet;
-    //PcepErrorObject list
-    private List<PcepErrorObject> errObjList;
-    //PcepRPObject list
-    private List<PcepRPObject> rpObjList;
-    //PcepLSObject list
-    private List<PcepLSObject> lsObjList;
-    private boolean isLSObjListSet;
-
-    public static final int OBJECT_HEADER_LENGTH = 4;
-
-    /**
-     * Constructor to initialize variable.
-     */
-    public PcepErrorVer1() {
-        this.rpObjList = null;
-        this.lsObjList = null;
-        this.errObjList = null;
-    }
-
-    /**
-     * Constructor to initialize variable.
-     *
-     * @param rpObjList list of PcepRPObject
-     * @param lsObjList list of PcepLSObject
-     * @param errObjListObjList list of PcepErrorObject
-     */
-    public PcepErrorVer1(List<PcepRPObject> rpObjList, List<PcepLSObject> lsObjList,
-            List<PcepErrorObject> errObjListObjList) {
-        this.rpObjList = rpObjList;
-        this.lsObjList = lsObjList;
-        this.errObjList = errObjListObjList;
-    }
-
-    /**
-     * Constructor to initialize PcepError.
-     *
-     * @param errObjList list of PcepErrorObject
-     */
-    public PcepErrorVer1(List<PcepErrorObject> errObjList) {
-        this.rpObjList = null;
-        this.lsObjList = null;
-        this.errObjList = errObjList;
-    }
-
-    @Override
-    public List<PcepRPObject> getRPObjList() {
-        return this.rpObjList;
-    }
-
-    @Override
-    public List<PcepLSObject> getLSObjList() {
-        return this.lsObjList;
-    }
-
-    @Override
-    public List<PcepErrorObject> getErrorObjList() {
-        return this.errObjList;
-    }
-
-    /**
-     * Parse RP List from the channel buffer.
-     *
-     * @param cb of type channel buffer
-     * @throws PcepParseException if mandatory fields are missing
-     */
-    public void parseRPList(ChannelBuffer cb) throws PcepParseException {
-        byte yObjClass;
-        byte yObjType;
-
-        rpObjList = new LinkedList<>();
-
-        // caller should verify for RP object
-        if (cb.readableBytes() < OBJECT_HEADER_LENGTH) {
-            log.debug("Unable to find RP Object");
-            return;
-        }
-
-        cb.markReaderIndex();
-        PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb);
-        cb.resetReaderIndex();
-        yObjClass = tempObjHeader.getObjClass();
-        yObjType = tempObjHeader.getObjType();
-        PcepRPObject rpObj;
-        while ((yObjClass == PcepRPObjectVer1.RP_OBJ_CLASS) && (yObjType == PcepRPObjectVer1.RP_OBJ_TYPE)) {
-            rpObj = PcepRPObjectVer1.read(cb);
-            rpObjList.add(rpObj);
-
-            if (cb.readableBytes() > OBJECT_HEADER_LENGTH) {
-                cb.markReaderIndex();
-                tempObjHeader = PcepObjectHeader.read(cb);
-                cb.resetReaderIndex();
-                yObjClass = tempObjHeader.getObjClass();
-                yObjType = tempObjHeader.getObjType();
-            } else {
-                break;
-            }
-        }
-    }
-
-    /**
-     * Parse LS List from the channel buffer.
-     *
-     * @param cb of type channel buffer
-     * @throws PcepParseException if mandatory fields are missing
-     */
-    public void parseLSList(ChannelBuffer cb) throws PcepParseException {
-        byte yObjClass;
-        byte yObjType;
-
-        lsObjList = new LinkedList<>();
-
-        // caller should verify for LS object
-        if (cb.readableBytes() < OBJECT_HEADER_LENGTH) {
-            log.debug("Unable to find LS Object");
-            return;
-        }
-
-        cb.markReaderIndex();
-        PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb);
-        cb.resetReaderIndex();
-        yObjClass = tempObjHeader.getObjClass();
-        yObjType = tempObjHeader.getObjType();
-        PcepLSObject lsObj;
-        while ((yObjClass == PcepLSObjectVer1.LS_OBJ_CLASS) && ((yObjType == PcepLSObjectVer1.LS_OBJ_TYPE_NODE_VALUE)
-                || (yObjType == PcepLSObjectVer1.LS_OBJ_TYPE_LINK_VALUE))) {
-            lsObj = PcepLSObjectVer1.read(cb);
-            lsObjList.add(lsObj);
-
-            if (cb.readableBytes() > OBJECT_HEADER_LENGTH) {
-                cb.markReaderIndex();
-                tempObjHeader = PcepObjectHeader.read(cb);
-                cb.resetReaderIndex();
-                yObjClass = tempObjHeader.getObjClass();
-                yObjType = tempObjHeader.getObjType();
-            } else {
-                break;
-            }
-        }
-    }
-
-    /**
-     * parseErrObjList from the channel buffer.
-     *
-     * @param cb of type channel buffer
-     * @throws PcepParseException if mandatory fields are missing
-     */
-    public void parseErrObjList(ChannelBuffer cb) throws PcepParseException {
-        byte yObjClass;
-        byte yObjType;
-        boolean bIsErrorObjFound = false;
-
-        errObjList = new LinkedList<>();
-
-        // caller should verify for RP object
-        if (cb.readableBytes() < OBJECT_HEADER_LENGTH) {
-            throw new PcepParseException("Unable to find PCEP-ERROR Object");
-        }
-
-        cb.markReaderIndex();
-        PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb);
-        cb.resetReaderIndex();
-        yObjClass = tempObjHeader.getObjClass();
-        yObjType = tempObjHeader.getObjType();
-        PcepErrorObject errorObject;
-        while ((yObjClass == PcepErrorObjectVer1.ERROR_OBJ_CLASS) && (yObjType == PcepErrorObjectVer1.ERROR_OBJ_TYPE)) {
-            errorObject = PcepErrorObjectVer1.read(cb);
-            errObjList.add(errorObject);
-            bIsErrorObjFound = true;
-
-            if (cb.readableBytes() > OBJECT_HEADER_LENGTH) {
-                cb.markReaderIndex();
-                tempObjHeader = PcepObjectHeader.read(cb);
-                cb.resetReaderIndex();
-                yObjClass = tempObjHeader.getObjClass();
-                yObjType = tempObjHeader.getObjType();
-            } else {
-                break;
-            }
-        }
-
-        if (!bIsErrorObjFound) {
-            throw new PcepParseException("At least one PCEP-ERROR Object should be present.");
-        }
-    }
-
-    /**
-     * Reads the byte stream of PcepError from channel buffer.
-     *
-     * @param cb of type channel buffer
-     * @return PcepError error part of PCEP-ERROR
-     * @throws PcepParseException if mandatory fields are missing
-     */
-    public static PcepErrorVer1 read(ChannelBuffer cb) throws PcepParseException {
-        if (cb.readableBytes() < OBJECT_HEADER_LENGTH) {
-            throw new PcepParseException("Unknown Object");
-        }
-
-        PcepErrorVer1 pcepError = new PcepErrorVer1();
-        // check whether any PCEP Error Info is present
-        cb.markReaderIndex();
-        PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb);
-        cb.resetReaderIndex();
-        byte yObjClass = tempObjHeader.getObjClass();
-
-        //If RPlist present then store it.RPList and LSList are optional
-        if (yObjClass == PcepRPObjectVer1.RP_OBJ_CLASS) {
-            log.debug("RP_LIST");
-            pcepError.parseRPList(cb);
-            yObjClass = checkNextObject(cb);
-        } else if (yObjClass == PcepLSObjectVer1.LS_OBJ_CLASS) {
-            log.debug("LS_LIST");
-            pcepError.parseLSList(cb);
-            yObjClass = checkNextObject(cb);
-        }
-
-        if (yObjClass == PcepErrorObjectVer1.ERROR_OBJ_CLASS) {
-            log.debug("PCEP-ERROR obj list");
-            pcepError.parseErrObjList(cb);
-            yObjClass = checkNextObject(cb);
-        }
-
-        return pcepError;
-    }
-
-    /**
-     * Checks Next Object.
-     *
-     * @param cb of type channel buffer.
-     * @return object type class.
-     */
-    private static byte checkNextObject(ChannelBuffer cb) {
-        if (cb.readableBytes() < OBJECT_HEADER_LENGTH) {
-            return 0;
-        }
-        cb.markReaderIndex();
-        PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb);
-        cb.resetReaderIndex();
-        return tempObjHeader.getObjClass();
-    }
-
-    /**
-     * Writes the byte stream of PCEP error to the channel buffer.
-     *
-     * @param cb of type channel buffer
-     * @return object length index
-     * @throws PcepParseException if mandatory fields are missing
-     */
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-        int iLenStartIndex = cb.writerIndex();
-
-        // RPlist is optional
-        if (this.isErroInfoSet) {
-            ListIterator<PcepRPObject> rpObjlistIterator = this.rpObjList.listIterator();
-            while (rpObjlistIterator.hasNext()) {
-                rpObjlistIterator.next().write(cb);
-            }
-        }
-
-        // LSlist is optional
-        if (this.isLSObjListSet) {
-            ListIterator<PcepLSObject> teObjlistIterator = this.lsObjList.listIterator();
-            while (teObjlistIterator.hasNext()) {
-                teObjlistIterator.next().write(cb);
-            }
-        }
-        //ErrList is mandatory
-        ListIterator<PcepErrorObject> errlistIterator = this.errObjList.listIterator();
-        while (errlistIterator.hasNext()) {
-            errlistIterator.next().write(cb);
-        }
-
-        return cb.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Builder for error part of PCEP-ERROR.
-     */
-    public static class Builder implements PcepError.Builder {
-
-        private List<PcepRPObject> rpObjList;
-        private List<PcepLSObject> lsObjList;
-        private List<PcepErrorObject> errObjList;
-
-        @Override
-        public PcepError build() {
-            return new PcepErrorVer1(rpObjList, lsObjList, errObjList);
-        }
-
-        @Override
-        public List<PcepRPObject> getRPObjList() {
-            return this.rpObjList;
-        }
-
-        @Override
-        public Builder setRPObjList(List<PcepRPObject> rpObjList) {
-            this.rpObjList = rpObjList;
-            return this;
-        }
-
-        @Override
-        public List<PcepLSObject> getLSObjList() {
-            return this.lsObjList;
-        }
-
-        @Override
-        public Builder setLSObjList(List<PcepLSObject> lsObjList) {
-            this.lsObjList = lsObjList;
-            return this;
-        }
-
-        @Override
-        public List<PcepErrorObject> getErrorObjList() {
-            return this.errObjList;
-        }
-
-        @Override
-        public Builder setErrorObjList(List<PcepErrorObject> errObjList) {
-            this.errObjList = errObjList;
-            return this;
-        }
-
-    }
-
-    @Override
-    public void setRPObjList(List<PcepRPObject> rpObjList) {
-        this.rpObjList = rpObjList;
-    }
-
-    @Override
-    public void setLSObjList(List<PcepLSObject> lsObjList) {
-        this.lsObjList = lsObjList;
-    }
-
-    @Override
-    public void setErrorObjList(List<PcepErrorObject> errObjList) {
-        this.errObjList = errObjList;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("RpObjectList", rpObjList)
-                .add("LsObjectList", lsObjList)
-                .add("ErrorObjectList", errObjList)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFactoryVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFactoryVer1.java
deleted file mode 100644
index ff3d1f3..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFactoryVer1.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.onosproject.pcepio.protocol.PcInitiatedLspRequest;
-import org.onosproject.pcepio.protocol.PcepAttribute;
-import org.onosproject.pcepio.protocol.PcepBandwidthObject;
-import org.onosproject.pcepio.protocol.PcepCloseMsg;
-import org.onosproject.pcepio.protocol.PcepEndPointsObject;
-import org.onosproject.pcepio.protocol.PcepEroObject;
-import org.onosproject.pcepio.protocol.PcepErrorInfo;
-import org.onosproject.pcepio.protocol.PcepError;
-import org.onosproject.pcepio.protocol.PcepErrorMsg;
-import org.onosproject.pcepio.protocol.PcepErrorObject;
-import org.onosproject.pcepio.protocol.PcepFactory;
-import org.onosproject.pcepio.protocol.PcepFecObjectIPv4.Builder;
-import org.onosproject.pcepio.protocol.PcepFecObjectIPv4Adjacency;
-import org.onosproject.pcepio.protocol.PcepInitiateMsg;
-import org.onosproject.pcepio.protocol.PcepIroObject;
-import org.onosproject.pcepio.protocol.PcepKeepaliveMsg;
-import org.onosproject.pcepio.protocol.PcepLabelObject;
-import org.onosproject.pcepio.protocol.PcepLabelRangeObject;
-import org.onosproject.pcepio.protocol.PcepLabelRangeResvMsg;
-import org.onosproject.pcepio.protocol.PcepLabelUpdate;
-import org.onosproject.pcepio.protocol.PcepLabelUpdateMsg;
-import org.onosproject.pcepio.protocol.PcepLspObject;
-import org.onosproject.pcepio.protocol.PcepLspaObject;
-import org.onosproject.pcepio.protocol.PcepMessage;
-import org.onosproject.pcepio.protocol.PcepMessageReader;
-import org.onosproject.pcepio.protocol.PcepMetricObject;
-import org.onosproject.pcepio.protocol.PcepMsgPath;
-import org.onosproject.pcepio.protocol.PcepOpenMsg;
-import org.onosproject.pcepio.protocol.PcepOpenObject;
-import org.onosproject.pcepio.protocol.PcepReportMsg;
-import org.onosproject.pcepio.protocol.PcepRroObject;
-import org.onosproject.pcepio.protocol.PcepSrpObject;
-import org.onosproject.pcepio.protocol.PcepStateReport;
-import org.onosproject.pcepio.protocol.PcepUpdateMsg;
-import org.onosproject.pcepio.protocol.PcepUpdateRequest;
-import org.onosproject.pcepio.protocol.PcepVersion;
-
-/**
- * Provides PCEP Factory and returns builder classes for all objects and messages.
- */
-public class PcepFactoryVer1 implements PcepFactory {
-
-    public static final PcepFactoryVer1 INSTANCE = new PcepFactoryVer1();
-
-    @Override
-    public PcepOpenMsg.Builder buildOpenMsg() {
-        return new PcepOpenMsgVer1.Builder();
-    }
-
-    @Override
-    public PcepOpenObject.Builder buildOpenObject() {
-        return new PcepOpenObjectVer1.Builder();
-    }
-
-    @Override
-    public PcepKeepaliveMsg.Builder buildKeepaliveMsg() {
-        return new PcepKeepaliveMsgVer1.Builder();
-    }
-
-    @Override
-    public PcepCloseMsg.Builder buildCloseMsg() {
-        return new PcepCloseMsgVer1.Builder();
-    }
-
-    @Override
-    public PcepUpdateMsg.Builder buildUpdateMsg() {
-        return new PcepUpdateMsgVer1.Builder();
-    }
-
-    @Override
-    public PcepReportMsg.Builder buildReportMsg() {
-        return new PcepReportMsgVer1.Builder();
-    }
-
-    @Override
-    public PcepInitiateMsg.Builder buildPcepInitiateMsg() {
-        return new PcepInitiateMsgVer1.Builder();
-    }
-
-    @Override
-    public PcepLspObject.Builder buildLspObject() {
-        return new PcepLspObjectVer1.Builder();
-    }
-
-    @Override
-    public PcepMessageReader<PcepMessage> getReader() {
-        return PcepMessageVer1.READER;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public PcepSrpObject.Builder buildSrpObject() {
-        return new PcepSrpObjectVer1.Builder();
-    }
-
-    @Override
-    public PcepEndPointsObject.Builder buildEndPointsObject() {
-        return new PcepEndPointsObjectVer1.Builder();
-    }
-
-    @Override
-    public PcepEroObject.Builder buildEroObject() {
-        return new PcepEroObjectVer1.Builder();
-    }
-
-    @Override
-    public PcepRroObject.Builder buildRroObject() {
-        return new PcepRroObjectVer1.Builder();
-    }
-
-    @Override
-    public PcepLspaObject.Builder buildLspaObject() {
-        return new PcepLspaObjectVer1.Builder();
-    }
-
-    @Override
-    public PcepIroObject.Builder buildIroObject() {
-        return new PcepIroObjectVer1.Builder();
-    }
-
-    @Override
-    public PcepMetricObject.Builder buildMetricObject() {
-        return new PcepMetricObjectVer1.Builder();
-    }
-
-    @Override
-    public PcepBandwidthObject.Builder buildBandwidthObject() {
-        return new PcepBandwidthObjectVer1.Builder();
-    }
-
-    @Override
-    public PcepMsgPath.Builder buildPcepMsgPath() {
-        return new PcepMsgPathVer1.Builder();
-    }
-
-    @Override
-    public PcepStateReport.Builder buildPcepStateReport() {
-        return new PcepStateReportVer1.Builder();
-    }
-
-    @Override
-    public PcepUpdateRequest.Builder buildPcepUpdateRequest() {
-        return new PcepUpdateRequestVer1.Builder();
-    }
-
-    @Override
-    public PcInitiatedLspRequest.Builder buildPcInitiatedLspRequest() {
-        return new PcInitiatedLspRequestVer1.Builder();
-    }
-
-    @Override
-    public PcepAttribute.Builder buildPcepAttribute() {
-        return new PcepAttributeVer1.Builder();
-    }
-
-    @Override
-    public PcepLabelUpdateMsg.Builder buildPcepLabelUpdateMsg() {
-        return new PcepLabelUpdateMsgVer1.Builder();
-    }
-
-    @Override
-    public PcepLabelUpdate.Builder buildPcepLabelUpdateObject() {
-        return new PcepLabelUpdateVer1.Builder();
-    }
-
-    @Override
-    public PcepLabelObject.Builder buildLabelObject() {
-        return new PcepLabelObjectVer1.Builder();
-    }
-
-    @Override
-    public PcepErrorMsg.Builder buildPcepErrorMsg() {
-        return new PcepErrorMsgVer1.Builder();
-    }
-
-    @Override
-    public PcepErrorObject.Builder buildPcepErrorObject() {
-        return new PcepErrorObjectVer1.Builder();
-    }
-
-    @Override
-    public PcepFecObjectIPv4Adjacency.Builder buildFecIpv4Adjacency() {
-        return new PcepFecObjectIPv4AdjacencyVer1.Builder();
-    }
-
-    @Override
-    public PcepErrorInfo.Builder buildPcepErrorInfo() {
-        return new PcepErrorInfoVer1.Builder();
-    }
-
-    @Override
-    public PcepError.Builder buildPcepError() {
-        return new PcepErrorVer1.Builder();
-    }
-
-    @Override
-    public PcepLabelRangeObject.Builder buildPcepLabelRangeObject() {
-        return new PcepLabelRangeObjectVer1.Builder();
-    }
-
-    @Override
-    public PcepLabelRangeResvMsg.Builder buildPcepLabelRangeResvMsg() {
-        return new PcepLabelRangeResvMsgVer1.Builder();
-    }
-
-    @Override
-    public Builder buildFecObjectIpv4() {
-        return new PcepFecObjectIPv4Ver1.Builder();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4AdjacencyVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4AdjacencyVer1.java
deleted file mode 100644
index bde6596..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4AdjacencyVer1.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepFecObjectIPv4Adjacency;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP fec Object IPv4 Adjacency object.
- */
-public class PcepFecObjectIPv4AdjacencyVer1 implements PcepFecObjectIPv4Adjacency {
-
-    /*
-     * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5
-     *
-            0                   1                   2                   3
-            0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           |                    Local IPv4 address                         |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           |                    Remote IPv4 address                        |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-                      FEC Object-Type is 3 IPv4 Adjacency
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv4AdjacencyVer1.class);
-
-    public static final byte FEC_OBJ_TYPE = 3;
-    public static final byte FEC_OBJ_CLASS = (byte) 226;
-    public static final byte FEC_OBJECT_VERSION = 1;
-    public static final short FEC_OBJ_MINIMUM_LENGTH = 12;
-    public static final int MINIMUM_COMMON_HEADER_LENGTH = 4;
-
-    public static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE,
-            PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader fecObjHeader;
-    private int localIPv4Address;
-    private int remoteIPv4Address;
-
-    /**
-     * Constructor to initialize parameters for PCEP fec object .
-     *
-     * @param fecObjHeader FEC Object header
-     * @param localIPv4Address Local IPv4 Address
-     * @param remoteIPv4Address Remote IPv4 Address
-     */
-    public PcepFecObjectIPv4AdjacencyVer1(PcepObjectHeader fecObjHeader, int localIPv4Address, int remoteIPv4Address) {
-        this.fecObjHeader = fecObjHeader;
-        this.localIPv4Address = localIPv4Address;
-        this.remoteIPv4Address = remoteIPv4Address;
-    }
-
-    /**
-     * Sets Object header.
-     *
-     * @param obj Pcep fec Object Header
-     */
-    public void setFecIpv4ObjHeader(PcepObjectHeader obj) {
-        this.fecObjHeader = obj;
-    }
-
-    @Override
-    public int getLocalIPv4Address() {
-        return this.localIPv4Address;
-    }
-
-    @Override
-    public void seLocalIPv4Address(int value) {
-        this.localIPv4Address = value;
-    }
-
-    @Override
-    public int getRemoteIPv4Address() {
-        return this.remoteIPv4Address;
-    }
-
-    @Override
-    public void seRemoteIPv4Address(int value) {
-        this.remoteIPv4Address = value;
-    }
-
-    /**
-     * Reads from channel buffer and Returns object of PcepFecObjectIPv4Adjacency.
-     *
-     * @param cb of channel buffer.
-     * @return object of PcepFecObjectIPv4Adjacency
-     * @throws PcepParseException when fails to read from channel buffer
-     */
-    public static PcepFecObjectIPv4Adjacency read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepObjectHeader fecObjHeader;
-        int localIPv4Address;
-        int remoteIPv4Address;
-
-        fecObjHeader = PcepObjectHeader.read(cb);
-
-        //take only FEC IPv4 Adjacency Object buffer.
-        ChannelBuffer tempCb = cb.readBytes(fecObjHeader.getObjLen() - MINIMUM_COMMON_HEADER_LENGTH);
-        localIPv4Address = tempCb.readInt();
-        remoteIPv4Address = tempCb.readInt();
-
-        return new PcepFecObjectIPv4AdjacencyVer1(fecObjHeader, localIPv4Address, remoteIPv4Address);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        int objStartIndex = cb.writerIndex();
-
-        //Write common header
-        int objLenIndex = fecObjHeader.write(cb);
-        cb.writeInt(localIPv4Address);
-        cb.writeInt(remoteIPv4Address);
-
-        //Now write FEC IPv4 Adjacency Object Length
-        cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex));
-        return cb.writerIndex();
-    }
-
-    /**
-     * Builder class for PCEP fec object IPv4 Adjacency.
-     */
-    public static class Builder implements PcepFecObjectIPv4Adjacency.Builder {
-        private boolean bIsHeaderSet = false;
-        private boolean bIsLocalIPv4Addressset = false;
-        private boolean bIsRemoteIPv4Addressset = false;
-
-        private PcepObjectHeader fecObjHeader;
-        int localIPv4Address;
-        int remoteIPv4Address;
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        @Override
-        public PcepFecObjectIPv4Adjacency build() throws PcepParseException {
-            PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER;
-
-            if (!this.bIsLocalIPv4Addressset) {
-                throw new PcepParseException(
-                        "Local IPv4 Address not set while building PcepFecObjectIPv4Adjacency object.");
-            }
-
-            if (!this.bIsRemoteIPv4Addressset) {
-                throw new PcepParseException(
-                        " Remote IPv4 Address not set while building PcepFecObjectIPv4Adjacency object.");
-            }
-
-            if (bIsPFlagSet) {
-                fecObjHeader.setPFlag(bPFlag);
-            }
-
-            if (bIsIFlagSet) {
-                fecObjHeader.setIFlag(bIFlag);
-            }
-            return new PcepFecObjectIPv4AdjacencyVer1(fecObjHeader, this.localIPv4Address, this.remoteIPv4Address);
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public PcepObjectHeader getFecIpv4AdjacencyObjHeader() {
-            return this.fecObjHeader;
-        }
-
-        @Override
-        public Builder setFecIpv4AdjacencyObjHeader(PcepObjectHeader obj) {
-            this.fecObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public int getLocalIPv4Address() {
-            return this.localIPv4Address;
-        }
-
-        @Override
-        public Builder seLocalIPv4Address(int value) {
-            this.localIPv4Address = value;
-            this.bIsLocalIPv4Addressset = true;
-            return this;
-        }
-
-        @Override
-        public int getRemoteIPv4Address() {
-            return this.remoteIPv4Address;
-        }
-
-        @Override
-        public Builder seRemoteIPv4Address(int value) {
-            this.remoteIPv4Address = value;
-            this.bIsRemoteIPv4Addressset = true;
-            return this;
-        }
-
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public int getType() {
-        return FEC_OBJ_TYPE;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("fecObjHeader", fecObjHeader)
-                .add("localIPv4Address", localIPv4Address)
-                .add("remoteIPv4Address", remoteIPv4Address).toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4UnnumberedAdjacencyVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4UnnumberedAdjacencyVer1.java
deleted file mode 100644
index e66b2fd..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4UnnumberedAdjacencyVer1.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepFecObjectIPv4UnnumberedAdjacency;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Pcep Fec Object IPv4 Unnumbered Adjacency object.
- */
-public class PcepFecObjectIPv4UnnumberedAdjacencyVer1 implements PcepFecObjectIPv4UnnumberedAdjacency {
-
-    /*
-     * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5
-     *
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                       Local Node-ID                           |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                       Local Interface ID                      |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                       Remote Node-ID                          |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                       Remote Interface ID                     |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-             FEC Object-Type is 5, Unnumbered Adjacency with IPv4 NodeIDs
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv4UnnumberedAdjacencyVer1.class);
-
-    public static final byte FEC_OBJ_TYPE = 5;
-    public static final byte FEC_OBJ_CLASS = (byte) 226;
-    public static final byte FEC_OBJECT_VERSION = 1;
-    public static final short FEC_OBJ_MINIMUM_LENGTH = 20;
-    public static final int MINIMUM_COMMON_HEADER_LENGTH = 4;
-
-    static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE,
-            PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader fecObjHeader;
-    private int localNodeID;
-    private int localInterfaceID;
-    private int remoteNodeID;
-    private int remoteInterfaceID;
-
-    /**
-     * Constructor to initialize parameter for PCEP fec object.
-     *
-     * @param fecObjHeader fec object header
-     * @param localNodeID local node ID
-     * @param localInterfaceID local interface ID
-     * @param remoteNodeID remote node ID
-     * @param remoteInterfaceID remote interface ID
-     */
-    public PcepFecObjectIPv4UnnumberedAdjacencyVer1(PcepObjectHeader fecObjHeader, int localNodeID,
-            int localInterfaceID, int remoteNodeID, int remoteInterfaceID) {
-        this.fecObjHeader = fecObjHeader;
-        this.localNodeID = localNodeID;
-        this.localInterfaceID = localInterfaceID;
-        this.remoteNodeID = remoteNodeID;
-        this.remoteInterfaceID = remoteInterfaceID;
-    }
-
-    /**
-     * Sets Object Header.
-     *
-     * @param obj object header
-     */
-    public void setFecIpv4UnnumberedAdjacencyObjHeader(PcepObjectHeader obj) {
-        this.fecObjHeader = obj;
-    }
-
-    @Override
-    public void setLocalNodeID(int localNodeID) {
-        this.localNodeID = localNodeID;
-    }
-
-    /**
-     * Returns Object Header.
-     *
-     * @return fecObjHeader fec object header
-     */
-    public PcepObjectHeader getFecIpv4UnnumberedAdjacencyObjHeader() {
-        return this.fecObjHeader;
-    }
-
-    @Override
-    public int getLocalNodeID() {
-        return this.localNodeID;
-    }
-
-    @Override
-    public int getLocalInterfaceID() {
-        return this.localInterfaceID;
-    }
-
-    @Override
-    public void setLocalInterfaceID(int localInterfaceID) {
-        this.localInterfaceID = localInterfaceID;
-    }
-
-    @Override
-    public int getRemoteNodeID() {
-        return this.remoteNodeID;
-    }
-
-    @Override
-    public void setRemoteNodeID(int remoteNodeID) {
-        this.remoteNodeID = remoteNodeID;
-    }
-
-    @Override
-    public int getRemoteInterfaceID() {
-        return this.remoteInterfaceID;
-    }
-
-    @Override
-    public void setRemoteInterfaceID(int remoteInterfaceID) {
-        this.remoteInterfaceID = remoteInterfaceID;
-    }
-
-    /**
-     * Reads from channel buffer and returns object of PcepFecObjectIPv4UnnumberedAdjacency.
-     *
-     * @param cb of channel buffer
-     * @return object of PcepFecObjectIPv4UnnumberedAdjacency
-     * @throws PcepParseException when fails to read from channel buffer
-     */
-    public static PcepFecObjectIPv4UnnumberedAdjacency read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepObjectHeader fecObjHeader;
-        int localNodeID;
-        int localInterfaceID;
-        int remoteNodeID;
-        int remoteInterfaceID;
-
-        fecObjHeader = PcepObjectHeader.read(cb);
-
-        //take only FEC IPv4 Unnumbered Adjacency Object buffer.
-        ChannelBuffer tempCb = cb.readBytes(fecObjHeader.getObjLen() - MINIMUM_COMMON_HEADER_LENGTH);
-        localNodeID = tempCb.readInt();
-        localInterfaceID = tempCb.readInt();
-        remoteNodeID = tempCb.readInt();
-        remoteInterfaceID = tempCb.readInt();
-
-        return new PcepFecObjectIPv4UnnumberedAdjacencyVer1(fecObjHeader, localNodeID, localInterfaceID, remoteNodeID,
-                remoteInterfaceID);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        int objStartIndex = cb.writerIndex();
-
-        //Write common header
-        int objLenIndex = fecObjHeader.write(cb);
-        cb.writeInt(localNodeID);
-        cb.writeInt(localInterfaceID);
-        cb.writeInt(remoteNodeID);
-        cb.writeInt(remoteInterfaceID);
-
-        //Now write FEC IPv4 Unnumbered Adjacency Object Length
-        cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex));
-
-        return cb.writerIndex();
-    }
-
-    /**
-     * Builder class for PCEP Fec object IPv4 unnumbered Adjacency.
-     */
-    public static class Builder implements PcepFecObjectIPv4UnnumberedAdjacency.Builder {
-        private boolean bIsHeaderSet = false;
-        private boolean bIsLocalNodeIDset = false;
-        private boolean bIsLocalInterfaceIDset = false;
-        private boolean bIsRemoteNodeIDset = false;
-        private boolean bIsRemoteInterfaceIDset = false;
-
-        private PcepObjectHeader fecObjHeader;
-        private int localNodeID;
-        private int localInterfaceID;
-        private int remoteNodeID;
-        private int remoteInterfaceID;
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        @Override
-        public PcepFecObjectIPv4UnnumberedAdjacency build() throws PcepParseException {
-            PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER;
-
-            if (!this.bIsLocalNodeIDset) {
-                throw new PcepParseException(
-                        " Local Node ID not set while building PcepFecObjectIPv4UnnumberedAdjacency object.");
-            }
-            if (!this.bIsLocalInterfaceIDset) {
-                throw new PcepParseException(
-                        " Local Interface ID not set while building PcepFecObjectIPv4UnnumberedAdjacency object.");
-            }
-            if (!this.bIsRemoteNodeIDset) {
-                throw new PcepParseException(
-                        " Remote Node ID not set while building PcepFecObjectIPv4UnnumberedAdjacency object.");
-            }
-            if (!this.bIsRemoteInterfaceIDset) {
-                throw new PcepParseException(
-                        " Remote Interface ID not set while building PcepFecObjectIPv4UnnumberedAdjacency object.");
-            }
-            if (bIsPFlagSet) {
-                fecObjHeader.setPFlag(bPFlag);
-            }
-            if (bIsIFlagSet) {
-                fecObjHeader.setIFlag(bIFlag);
-            }
-            return new PcepFecObjectIPv4UnnumberedAdjacencyVer1(fecObjHeader, this.localNodeID, this.localInterfaceID,
-                    this.remoteNodeID, this.remoteInterfaceID);
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public PcepObjectHeader getFecIpv4UnnumberedAdjacencyObjHeader() {
-            return this.fecObjHeader;
-        }
-
-        @Override
-        public Builder setFecIpv4UnnumberedAdjacencyObjHeader(PcepObjectHeader obj) {
-            this.fecObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public int getLocalNodeID() {
-            return this.localNodeID;
-        }
-
-        @Override
-        public Builder setLocalNodeID(int value) {
-            this.localNodeID = value;
-            this.bIsLocalNodeIDset = true;
-            return this;
-        }
-
-        @Override
-        public int getLocalInterfaceID() {
-            return this.localInterfaceID;
-        }
-
-        @Override
-        public Builder setLocalInterfaceID(int value) {
-            this.localInterfaceID = value;
-            this.bIsLocalInterfaceIDset = true;
-            return this;
-        }
-
-        @Override
-        public int getRemoteNodeID() {
-            return this.remoteNodeID;
-        }
-
-        @Override
-        public Builder setRemoteNodeID(int value) {
-            this.remoteNodeID = value;
-            this.bIsRemoteNodeIDset = true;
-            return this;
-        }
-
-        @Override
-        public int getRemoteInterfaceID() {
-            return this.remoteInterfaceID;
-        }
-
-        @Override
-        public Builder setRemoteInterfaceID(int value) {
-            this.remoteInterfaceID = value;
-            this.bIsRemoteInterfaceIDset = true;
-            return this;
-        }
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public int getType() {
-        return FEC_OBJ_TYPE;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("LocalNodeID: ", localNodeID)
-                .add("LocalInterfaceID: ", localInterfaceID).add("RemoteNodeID: ", remoteNodeID)
-                .add("RemoteInterfaceID: ", remoteInterfaceID).toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4Ver1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4Ver1.java
deleted file mode 100644
index 63265f6..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4Ver1.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepFecObjectIPv4;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Pcep Fec Object IPv4 object.
- */
-public class PcepFecObjectIPv4Ver1 implements PcepFecObjectIPv4 {
-
-    /*
-     * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5
-     *
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                        IPv4 Node ID                           |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-                       FEC Object-Type is 1 IPv4 Node ID
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv4Ver1.class);
-
-    public static final byte FEC_OBJ_TYPE = 1;
-    public static final byte FEC_OBJ_CLASS = (byte) 226;
-    public static final byte FEC_OBJECT_VERSION = 1;
-    public static final short FEC_OBJ_MINIMUM_LENGTH = 8;
-    public static final int MINIMUM_COMMON_HEADER_LENGTH = 4;
-
-    static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE,
-            PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader fecObjHeader;
-    private int nodeID;
-
-    /**
-     * Constructor to initialize parameters for PCEP fec object.
-     *
-     * @param fecObjHeader fec object header
-     * @param nodeID node id
-     */
-    public PcepFecObjectIPv4Ver1(PcepObjectHeader fecObjHeader, int nodeID) {
-        this.fecObjHeader = fecObjHeader;
-        this.nodeID = nodeID;
-    }
-
-    /**
-     * Sets the Object Header.
-     *
-     * @param obj object header
-     */
-    public void setFecIpv4ObjHeader(PcepObjectHeader obj) {
-        this.fecObjHeader = obj;
-    }
-
-    @Override
-    public void setNodeID(int nodeID) {
-        this.nodeID = nodeID;
-    }
-
-    /**
-     * Returns Object Header.
-     *
-     * @return fecObjHeader fec object header
-     */
-    public PcepObjectHeader getFecIpv4ObjHeader() {
-        return this.fecObjHeader;
-    }
-
-    @Override
-    public int getNodeID() {
-        return this.nodeID;
-    }
-
-    /**
-     * Reads from channel buffer and returns object of PcepFecObjectIPv4.
-     *
-     * @param cb of channel buffer
-     * @return object of PcepFecObjectIPv4
-     * @throws PcepParseException when fails to read from channel buffer
-     */
-    public static PcepFecObjectIPv4 read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepObjectHeader fecObjHeader;
-        int nodeID;
-        fecObjHeader = PcepObjectHeader.read(cb);
-        nodeID = cb.readInt();
-        return new PcepFecObjectIPv4Ver1(fecObjHeader, nodeID);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        int objStartIndex = cb.writerIndex();
-
-        //write common header
-        int objLenIndex = fecObjHeader.write(cb);
-        cb.writeInt(nodeID);
-
-        //now write FEC IPv4 Object Length
-        cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex));
-        return cb.writerIndex();
-    }
-
-    /**
-     * Builder class for PCEP fec pobject IPv4.
-     */
-    public static class Builder implements PcepFecObjectIPv4.Builder {
-        private boolean bIsHeaderSet = false;
-        private boolean bIsNodeIdset = false;
-
-        private PcepObjectHeader fecObjHeader;
-        private int nodeID;
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        @Override
-        public PcepFecObjectIPv4 build() throws PcepParseException {
-            PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER;
-
-            if (!this.bIsNodeIdset) {
-                throw new PcepParseException("NodeID not set while building PcepFecObjectIPv4 object.");
-            }
-            if (bIsPFlagSet) {
-                fecObjHeader.setPFlag(bPFlag);
-            }
-            if (bIsIFlagSet) {
-                fecObjHeader.setIFlag(bIFlag);
-            }
-            return new PcepFecObjectIPv4Ver1(fecObjHeader, this.nodeID);
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public PcepObjectHeader getFecIpv4ObjHeader() {
-            return this.fecObjHeader;
-        }
-
-        @Override
-        public Builder setFecIpv4ObjHeader(PcepObjectHeader obj) {
-            this.fecObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public int getNodeID() {
-            return this.nodeID;
-        }
-
-        @Override
-        public Builder setNodeID(int value) {
-            this.nodeID = value;
-            this.bIsNodeIdset = true;
-            return this;
-        }
-
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public int getType() {
-        return FEC_OBJ_TYPE;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("fecObjHeader", fecObjHeader)
-                .add("nodeID: ", nodeID)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6AdjacencyVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6AdjacencyVer1.java
deleted file mode 100644
index cd60d92..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6AdjacencyVer1.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepFecObjectIPv6Adjacency;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Pcep Fec Object IPv6 Adjacency object.
- */
-public class PcepFecObjectIPv6AdjacencyVer1 implements PcepFecObjectIPv6Adjacency {
-
-    /*
-     * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5
-     *
-            0                   1                   2                   3
-            0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           |                                                               |
-           //              Local IPv6 address (16 bytes)                   //
-           |                                                               |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           |                                                               |
-           //              Remote IPv6 address (16 bytes)                  //
-           |                                                               |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-                      FEC Object-Type is 4 IPv6 Adjacency
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv6AdjacencyVer1.class);
-
-    public static final byte FEC_OBJ_TYPE = 4;
-    public static final byte FEC_OBJ_CLASS = (byte) 226;
-    public static final byte FEC_OBJECT_VERSION = 1;
-    public static final short FEC_OBJ_MINIMUM_LENGTH = 36;
-    public static final int MINIMUM_COMMON_HEADER_LENGTH = 4;
-    public static final int IPV6_ADDRESS_LENGTH = 16;
-
-    static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE,
-            PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader fecObjHeader;
-    private byte[] localIPv6Address = new byte[IPV6_ADDRESS_LENGTH];
-    private byte[] remoteIPv6Address = new byte[IPV6_ADDRESS_LENGTH];
-
-    /**
-     * Constructor to initialize parameters for PCEP fec object.
-     *
-     * @param fecObjHeader fec object header
-     * @param localIPv6Address local IPv6 address
-     * @param remoteIPv6Address remote IPv6 address
-     */
-    public PcepFecObjectIPv6AdjacencyVer1(PcepObjectHeader fecObjHeader, byte[] localIPv6Address,
-            byte[] remoteIPv6Address) {
-        this.fecObjHeader = fecObjHeader;
-        this.localIPv6Address = localIPv6Address;
-        this.remoteIPv6Address = remoteIPv6Address;
-    }
-
-    /**
-     * Sets Object Header.
-     *
-     * @param obj object header
-     */
-    public void setFecIpv4ObjHeader(PcepObjectHeader obj) {
-        this.fecObjHeader = obj;
-    }
-
-    @Override
-    public byte[] getLocalIPv6Address() {
-        return this.localIPv6Address;
-    }
-
-    @Override
-    public void seLocalIPv6Address(byte[] value) {
-        this.localIPv6Address = value;
-    }
-
-    @Override
-    public byte[] getRemoteIPv6Address() {
-        return this.remoteIPv6Address;
-    }
-
-    @Override
-    public void seRemoteIPv6Address(byte[] value) {
-        this.remoteIPv6Address = value;
-    }
-
-    /**
-     * Reads channel buffer and Returns object of PcepFecObjectIPv6Adjacency.
-     *
-     * @param cb of channel buffer
-     * @return object of PcepFecObjectIPv6Adjacency
-     * @throws PcepParseException when fails tp read from channel buffer
-     */
-    public static PcepFecObjectIPv6Adjacency read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepObjectHeader fecObjHeader;
-        byte[] localIPv6Address = new byte[IPV6_ADDRESS_LENGTH];
-        byte[] remoteIPv6Address = new byte[IPV6_ADDRESS_LENGTH];
-        fecObjHeader = PcepObjectHeader.read(cb);
-        cb.readBytes(localIPv6Address, 0, IPV6_ADDRESS_LENGTH);
-        cb.readBytes(remoteIPv6Address, 0, IPV6_ADDRESS_LENGTH);
-        return new PcepFecObjectIPv6AdjacencyVer1(fecObjHeader, localIPv6Address, remoteIPv6Address);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        int objStartIndex = cb.writerIndex();
-
-        //write common header
-        int objLenIndex = fecObjHeader.write(cb);
-        cb.writeBytes(localIPv6Address);
-        cb.writeBytes(remoteIPv6Address);
-        //now write FEC IPv6 Adjacency Object Length
-        cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex));
-        return cb.writerIndex();
-    }
-
-    /**
-     * Builder class for PCEP fec object IPv6 Adjacency.
-     */
-    public static class Builder implements PcepFecObjectIPv6Adjacency.Builder {
-        private boolean bIsHeaderSet = false;
-        private boolean bIsLocalIPv6Addressset = false;
-        private boolean bIsRemoteIPv6Addressset = false;
-
-        private PcepObjectHeader fecObjHeader;
-        byte[] localIPv6Address = new byte[IPV6_ADDRESS_LENGTH];
-        byte[] remoteIPv6Address = new byte[IPV6_ADDRESS_LENGTH];
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        @Override
-        public PcepFecObjectIPv6Adjacency build() throws PcepParseException {
-            PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER;
-
-            if (!this.bIsLocalIPv6Addressset) {
-                throw new PcepParseException(
-                        "Local IPv6 Address not set while building PcepFecObjectIPv6Adjacency object.");
-            }
-            if (!this.bIsRemoteIPv6Addressset) {
-                throw new PcepParseException(
-                        "Remote IPv6 Address not set while building PcepFecObjectIPv6Adjacency object.");
-            }
-            if (bIsPFlagSet) {
-                fecObjHeader.setPFlag(bPFlag);
-            }
-            if (bIsIFlagSet) {
-                fecObjHeader.setIFlag(bIFlag);
-            }
-            return new PcepFecObjectIPv6AdjacencyVer1(fecObjHeader, this.localIPv6Address, this.remoteIPv6Address);
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public PcepObjectHeader getFecIpv6AdjacencyObjHeader() {
-            return this.fecObjHeader;
-        }
-
-        @Override
-        public Builder setFecIpv6AdjacencyObjHeader(PcepObjectHeader obj) {
-            this.fecObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public byte[] getLocalIPv6Address() {
-            return this.localIPv6Address;
-        }
-
-        @Override
-        public Builder setLocalIPv6Address(byte[] value) {
-            this.localIPv6Address = value;
-            this.bIsLocalIPv6Addressset = true;
-            return this;
-        }
-
-        @Override
-        public byte[] getRemoteIPv6Address() {
-            return this.remoteIPv6Address;
-        }
-
-        @Override
-        public Builder setRemoteIPv6Address(byte[] value) {
-            this.remoteIPv6Address = value;
-            this.bIsRemoteIPv6Addressset = true;
-            return this;
-        }
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public int getType() {
-        return FEC_OBJ_TYPE;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("localIPv6Address", localIPv6Address)
-                .add("remoteIPv6Address: ", remoteIPv6Address)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6Ver1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6Ver1.java
deleted file mode 100644
index 1975b04..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6Ver1.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepFecObjectIPv6;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Pcep Fec Object IPv6 object.
- */
-public class PcepFecObjectIPv6Ver1 implements PcepFecObjectIPv6 {
-
-    /*
-     * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5
-     *
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                                                               |
-       //                     IPv6 Node ID (16 bytes)                  //
-       |                                                               |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-                       FEC Object-Type is 2 IPv6 Node ID
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv6Ver1.class);
-
-    public static final byte FEC_OBJ_TYPE = 2;
-    public static final byte FEC_OBJ_CLASS = (byte) 226;
-    public static final byte FEC_OBJECT_VERSION = 1;
-    public static final short FEC_OBJ_MINIMUM_LENGTH = 20;
-    public static final int MINIMUM_COMMON_HEADER_LENGTH = 4;
-    public static final int IPV6_ADDRESS_LENGTH = 16;
-
-    static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE,
-            PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader fecObjHeader;
-    private byte[] nodeID = new byte[IPV6_ADDRESS_LENGTH];
-
-    /**
-     * Constructor to initialize parameters for PCEP fec object.
-     *
-     * @param fecObjHeader Fec object header
-     * @param nodeID node ID
-     */
-    public PcepFecObjectIPv6Ver1(PcepObjectHeader fecObjHeader, byte[] nodeID) {
-        this.fecObjHeader = fecObjHeader;
-        this.nodeID = nodeID;
-    }
-
-    /**
-     * Sets the Object header.
-     *
-     * @param obj object header
-     */
-    public void setFecIpv6ObjHeader(PcepObjectHeader obj) {
-        this.fecObjHeader = obj;
-    }
-
-    @Override
-    public void setNodeID(byte[] nodeID) {
-        this.nodeID = nodeID;
-    }
-
-    /**
-     * Returns object header.
-     *
-     * @return fec Object Header
-     */
-    public PcepObjectHeader getFecIpv6ObjHeader() {
-        return this.fecObjHeader;
-    }
-
-    @Override
-    public byte[] getNodeID() {
-        return this.nodeID;
-    }
-
-    /**
-     * reads the channel buffer and returns object of PcepFecObjectIPv6.
-     *
-     * @param cb of channel buffer.
-     * @return object of PcepFecObjectIPv6
-     * @throws PcepParseException when fails to read from channel buffer
-     */
-    public static PcepFecObjectIPv6 read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepObjectHeader fecObjHeader;
-        byte[] nodeID = new byte[IPV6_ADDRESS_LENGTH];
-        fecObjHeader = PcepObjectHeader.read(cb);
-        cb.readBytes(nodeID, 0, IPV6_ADDRESS_LENGTH);
-        return new PcepFecObjectIPv6Ver1(fecObjHeader, nodeID);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        int objStartIndex = cb.writerIndex();
-
-        //write common header
-        int objLenIndex = fecObjHeader.write(cb);
-        cb.writeBytes(nodeID);
-
-        //now write FEC IPv4 Object Length
-        cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex));
-        return cb.writerIndex();
-    }
-
-    /**
-     * Builder class for PCEP fec object IPv6.
-     */
-    public static class Builder implements PcepFecObjectIPv6.Builder {
-        private boolean bIsHeaderSet = false;
-        private boolean bIsNodeIdset = false;
-
-        private PcepObjectHeader fecObjHeader;
-        private byte[] nodeID = new byte[IPV6_ADDRESS_LENGTH];
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        @Override
-        public PcepFecObjectIPv6 build() throws PcepParseException {
-            PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER;
-
-            if (!this.bIsNodeIdset) {
-                throw new PcepParseException(" NodeID not set while building PcepFecObjectIPv6 object.");
-            }
-            if (bIsPFlagSet) {
-                fecObjHeader.setPFlag(bPFlag);
-            }
-            if (bIsIFlagSet) {
-                fecObjHeader.setIFlag(bIFlag);
-            }
-            return new PcepFecObjectIPv6Ver1(fecObjHeader, this.nodeID);
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public PcepObjectHeader getFecIpv6ObjHeader() {
-            return this.fecObjHeader;
-        }
-
-        @Override
-        public Builder setFecIpv6ObjHeader(PcepObjectHeader obj) {
-            this.fecObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public byte[] getNodeID() {
-            return this.nodeID;
-        }
-
-        @Override
-        public Builder setNodeID(byte[] value) {
-            this.nodeID = value;
-            this.bIsNodeIdset = true;
-            return this;
-        }
-
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public int getType() {
-        return FEC_OBJ_TYPE;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("fecObjHeader", fecObjHeader)
-                .add("NodeID: ", nodeID)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInitiateMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInitiateMsgVer1.java
deleted file mode 100644
index f50a8d4..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInitiateMsgVer1.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcInitiatedLspRequest;
-import org.onosproject.pcepio.protocol.PcepAttribute;
-import org.onosproject.pcepio.protocol.PcepEndPointsObject;
-import org.onosproject.pcepio.protocol.PcepEroObject;
-import org.onosproject.pcepio.protocol.PcepInitiateMsg;
-import org.onosproject.pcepio.protocol.PcepLspObject;
-import org.onosproject.pcepio.protocol.PcepMessageReader;
-import org.onosproject.pcepio.protocol.PcepMessageWriter;
-import org.onosproject.pcepio.protocol.PcepSrpObject;
-import org.onosproject.pcepio.protocol.PcepType;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP initiate message.
- */
-class PcepInitiateMsgVer1 implements PcepInitiateMsg {
-
-    private static final Logger log = LoggerFactory.getLogger(PcepInitiateMsgVer1.class);
-
-    // Ref : PCE initiated tunnel setup draft-ietf-pce-pce-initiated-lsp-03, section 5.1
-    /*      <PCInitiate Message>             ::= <Common Header>
-     *                                           <PCE-initiated-lsp-list>
-     *    Where:
-     *      <PCE-initiated-lsp-list>          ::= <PCE-initiated-lsp-request>[<PCE-initiated-lsp-list>]
-     *      <PCE-initiated-lsp-request>       ::= (<PCE-initiated-lsp-instantiation>|<PCE-initiated-lsp-deletion>)
-     *      <PCE-initiated-lsp-instantiation> ::= <SRP>
-     *                                            <LSP>
-     *                                            <END-POINTS>
-     *                                            <ERO>
-     *                                            [<attribute-list>]
-     *     <PCE-initiated-lsp-deletion>      ::= <SRP>
-     *                                           <LSP>
-     */
-
-    static final byte PACKET_VERSION = 1;
-    /* considering LspDelete Request PcInitiate msg will contain
-     * common header
-     * srp object
-     * lsp object
-     * so min length for this can be
-     * PACKET_MINIMUM_LENGTH = CommonHeaderLen(4)+SrpObjectMinLen(12)+LspObjectMinLen(8)
-     */
-    public static final short PACKET_MINIMUM_LENGTH = 24;
-    public static final short MINIMUM_COMMON_HEADER_LENGTH = 4;
-    public static final PcepType MSG_TYPE = PcepType.INITIATE;
-    private LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList;
-    public static final PcepInitiateMsgVer1.Reader READER = new Reader();
-
-    /**
-     * Reader class for reading of Pcep initiate message from channel buffer.
-     */
-    static class Reader implements PcepMessageReader<PcepInitiateMsg> {
-
-        LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList;
-
-        @Override
-        public PcepInitiateMsg readFrom(ChannelBuffer cb) throws PcepParseException {
-
-            if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) {
-                return null;
-            }
-
-            llPcInitiatedLspRequestList = new LinkedList<>();
-
-            byte version = cb.readByte();
-            version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG);
-            if (version != PACKET_VERSION) {
-                throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), received=" + version);
-            }
-            byte type = cb.readByte();
-            if (type != MSG_TYPE.getType()) {
-                throw new PcepParseException("Wrong type. Expected=PcepType.INITIATE(12), recived=" + type);
-            }
-            short length = cb.readShort();
-
-            if (length < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException("Wrong length. Initiate message length expected to be >= "
-                        + PACKET_MINIMUM_LENGTH + ", but received=" + length);
-            }
-
-            log.debug("reading PcInitiate message of length " + length);
-
-            // parse Start initiate/deletion list
-            if (!parsePcInitiatedLspRequestList(cb)) {
-                throw new PcepParseException("Parsing PCE-initiated-lsp-Request-list failed");
-            }
-
-            return new PcepInitiateMsgVer1(llPcInitiatedLspRequestList);
-        }
-
-        /**
-         * To parse PcInitiatedLspRequestList from PcInitiate Message.
-         *
-         * @param cb of type channel buffer
-         * @return true if parsing PcInitiatedLspRequestList is success, false otherwise
-         * @throws PcepParseException while parsing from channel buffer
-         */
-        public boolean parsePcInitiatedLspRequestList(ChannelBuffer cb) throws PcepParseException {
-
-            boolean isDelLspRequest = false;
-
-            if (cb == null) {
-                throw new PcepParseException("Channel buffer is empty");
-            }
-
-            while (0 < cb.readableBytes()) {
-                PcInitiatedLspRequest pceInitLspReq = new PcInitiatedLspRequestVer1();
-
-                //store SRP object
-                PcepSrpObject srpObj;
-                srpObj = PcepSrpObjectVer1.read(cb);
-                pceInitLspReq.setSrpObject(srpObj);
-                isDelLspRequest = srpObj.getRFlag();
-
-                //store LSP object
-                PcepLspObject lspObj;
-                lspObj = PcepLspObjectVer1.read(cb);
-                pceInitLspReq.setLspObject(lspObj);
-
-                /* if R bit will be set then pcInitiate msg will contain only LSp and SRP objects
-                 * so if R bit is not set then we should read for Ero and EndPoint objects also.
-                 */
-                if (!isDelLspRequest) {
-
-                    //store EndPoint object
-                    PcepEndPointsObject endPointObj;
-                    endPointObj = PcepEndPointsObjectVer1.read(cb);
-                    pceInitLspReq.setEndPointsObject(endPointObj);
-
-                    //store ERO object
-                    PcepEroObject eroObj;
-                    eroObj = PcepEroObjectVer1.read(cb);
-                    pceInitLspReq.setEroObject(eroObj);
-
-                    if (cb.readableBytes() > MINIMUM_COMMON_HEADER_LENGTH) {
-                        pceInitLspReq.setPcepAttribute(PcepAttributeVer1.read(cb));
-                    }
-                }
-                llPcInitiatedLspRequestList.add(pceInitLspReq);
-            }
-            return true;
-        }
-    }
-
-    /**
-     * Constructor to initialize PcInitiatedLspRequest.
-     *
-     * @param llPcInitiatedLspRequestList list of PcInitiatedLspRequest
-     */
-    PcepInitiateMsgVer1(LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList) {
-
-        if (llPcInitiatedLspRequestList == null) {
-            throw new NullPointerException("PcInitiatedLspRequestList cannot be null.");
-        }
-        this.llPcInitiatedLspRequestList = llPcInitiatedLspRequestList;
-    }
-
-    /**
-     * Builder class for PCEP initiate message.
-     */
-    static class Builder implements PcepInitiateMsg.Builder {
-
-        // Pcep initiate message fields
-        LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList;
-
-        @Override
-        public PcepVersion getVersion() {
-            return PcepVersion.PCEP_1;
-        }
-
-        @Override
-        public PcepType getType() {
-            return PcepType.INITIATE;
-        }
-
-        @Override
-        public PcepInitiateMsg build() {
-            return new PcepInitiateMsgVer1(this.llPcInitiatedLspRequestList);
-        }
-
-        @Override
-        public LinkedList<PcInitiatedLspRequest> getPcInitiatedLspRequestList() {
-            return this.llPcInitiatedLspRequestList;
-        }
-
-        @Override
-        public Builder setPcInitiatedLspRequestList(LinkedList<PcInitiatedLspRequest> ll) {
-            this.llPcInitiatedLspRequestList = ll;
-            return this;
-        }
-    }
-
-    @Override
-    public void writeTo(ChannelBuffer cb) throws PcepParseException {
-        WRITER.write(cb, this);
-    }
-
-    static final Writer WRITER = new Writer();
-
-    /**
-     * Writer class for writing pcep initiate message to channel buffer.
-     */
-    static class Writer implements PcepMessageWriter<PcepInitiateMsgVer1> {
-
-        @Override
-        public void write(ChannelBuffer cb, PcepInitiateMsgVer1 message) throws PcepParseException {
-
-            boolean isDelLspRequest = false;
-            int startIndex = cb.writerIndex();
-            // first 3 bits set to version
-            cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG));
-            // message type 0xC
-            cb.writeByte(MSG_TYPE.getType());
-            // length is length of variable message, will be updated at the end
-            // Store the position of message
-            // length in buffer
-            int msgLenIndex = cb.writerIndex();
-            cb.writeShort(0);
-
-            ListIterator<PcInitiatedLspRequest> listIterator = message.llPcInitiatedLspRequestList.listIterator();
-
-            while (listIterator.hasNext()) {
-
-                PcInitiatedLspRequest listReq = listIterator.next();
-
-                //Srp Object is mandatory
-                PcepSrpObject srpObj = listReq.getSrpObject();
-                if (srpObj != null) {
-                    isDelLspRequest = srpObj.getRFlag();
-                    srpObj.write(cb);
-                } else {
-                    throw new PcepParseException("SRP Object is mandatory for PcInitiate message.");
-                }
-
-                //LSP Object is mandatory
-                PcepLspObject lspObj = listReq.getLspObject();
-                if (lspObj != null) {
-                    lspObj.write(cb);
-                } else {
-                    throw new PcepParseException("LSP Object is mandatory for PcInitiate message.");
-                }
-
-                /* if R bit will be set then pcInitiate msg will contain only LSp and SRP objects
-                 * so if R bit is not set then we should read for Ero and EndPoint objects also.
-                 */
-
-                if (!isDelLspRequest) {
-
-                    //EndPoints object is mandatory
-                    PcepEndPointsObject endPointObj = listReq.getEndPointsObject();
-                    if (endPointObj != null) {
-                        endPointObj.write(cb);
-                    } else {
-                        throw new PcepParseException("End points Object is mandatory for PcInitiate message.");
-                    }
-
-                    //Ero object is mandatory
-                    PcepEroObject eroObj = listReq.getEroObject();
-                    if (eroObj != null) {
-                        eroObj.write(cb);
-                    } else {
-                        throw new PcepParseException("ERO Object is mandatory for PcInitiate message.");
-                    }
-
-                    //PcepAttribute is optional
-                    PcepAttribute pcepAttribute = listReq.getPcepAttribute();
-                    if (pcepAttribute != null) {
-                        pcepAttribute.write(cb);
-                    }
-                }
-            }
-
-            // PCInitiate message length field
-            int length = cb.writerIndex() - startIndex;
-            cb.setShort(msgLenIndex, (short) length);
-        }
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public PcepType getType() {
-        return MSG_TYPE;
-    }
-
-    @Override
-    public LinkedList<PcInitiatedLspRequest> getPcInitiatedLspRequestList() {
-        return this.llPcInitiatedLspRequestList;
-    }
-
-    @Override
-    public void setPcInitiatedLspRequestList(LinkedList<PcInitiatedLspRequest> ll) {
-        this.llPcInitiatedLspRequestList = ll;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("PcInitiaitedLspRequestList", llPcInitiatedLspRequestList)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInterLayerObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInterLayerObjectVer1.java
deleted file mode 100644
index f88fa14..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInterLayerObjectVer1.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepInterLayerObject;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP inter layer object.
- */
-public class PcepInterLayerObjectVer1 implements PcepInterLayerObject {
-
-    /*
-     *      0                   1                   2                   3
-         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |    Reserved                                               |N|I|
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepInterLayerObjectVer1.class);
-
-    public static final byte INTER_LAYER_OBJ_TYPE = 1;
-    public static final byte INTER_LAYER_OBJ_CLASS = 18;
-    public static final byte INTER_LAYER_OBJECT_VERSION = 1;
-    public static final short INTER_LAYER_OBJ_MINIMUM_LENGTH = 8;
-    public static final boolean DEFAULT_IFLAG = false;
-    public static final boolean DEFAULT_NFLAG = false;
-    public static final int OBJECT_HEADER_LENGTH = 4;
-    public static final int NFLAG_SHIFT_VALUE = 0x02;
-    public static final int IFLAG_SHIFT_VALUE = 0x01;
-
-    static final PcepObjectHeader DEFAULT_INTER_LAYER_OBJECT_HEADER = new PcepObjectHeader(INTER_LAYER_OBJ_CLASS,
-            INTER_LAYER_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED,
-            INTER_LAYER_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader interLayerObjHeader;
-    private boolean bNFlag;
-    private boolean bIFlag;
-
-    /**
-     * Constructor to initialize all parameters for Pcep Inter Layer Object.
-     *
-     * @param interLayerObjHeader inter layer object header
-     * @param bNFlag N flag
-     * @param bIFlag I flag
-     */
-    public PcepInterLayerObjectVer1(PcepObjectHeader interLayerObjHeader, boolean bNFlag, boolean bIFlag) {
-
-        this.interLayerObjHeader = interLayerObjHeader;
-        this.bNFlag = bNFlag;
-        this.bIFlag = bIFlag;
-    }
-
-    /**
-     * Sets Object Header.
-     *
-     * @param obj object header
-     */
-    public void setInterLayerObjHeader(PcepObjectHeader obj) {
-        this.interLayerObjHeader = obj;
-    }
-
-    @Override
-    public void setbNFlag(boolean bNFlag) {
-        this.bNFlag = bNFlag;
-    }
-
-    @Override
-    public void setbIFlag(boolean bIFlag) {
-        this.bIFlag = bIFlag;
-    }
-
-    /**
-     * Returns object header.
-     *
-     * @return inter Layer Object Header
-     */
-    public PcepObjectHeader getInterLayerObjHeader() {
-        return this.interLayerObjHeader;
-    }
-
-    @Override
-    public boolean getbNFlag() {
-        return this.bNFlag;
-    }
-
-    @Override
-    public boolean getbIFlag() {
-        return this.bIFlag;
-    }
-
-    /**
-     * Reads channel buffer and returns object of PcepInterLayerObject.
-     *
-     * @param cb of type channel buffer
-     * @return object of PcepInterLayerObject
-     * @throws PcepParseException when fails to read from channel buffer
-     */
-    public static PcepInterLayerObject read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepObjectHeader interLayerObjHeader;
-        boolean bNFlag;
-        boolean bIFlag;
-
-        interLayerObjHeader = PcepObjectHeader.read(cb);
-
-        //take only InterLayerObject buffer.
-        ChannelBuffer tempCb = cb.readBytes(interLayerObjHeader.getObjLen() - OBJECT_HEADER_LENGTH);
-
-        int iTemp = tempCb.readInt();
-        bIFlag = ((iTemp & (byte) IFLAG_SHIFT_VALUE) == IFLAG_SHIFT_VALUE);
-        bNFlag = ((iTemp & (byte) NFLAG_SHIFT_VALUE) == NFLAG_SHIFT_VALUE);
-
-        return new PcepInterLayerObjectVer1(interLayerObjHeader, bNFlag, bIFlag);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        //write Object header
-        int objStartIndex = cb.writerIndex();
-
-        int objLenIndex = interLayerObjHeader.write(cb);
-
-        if (objLenIndex <= 0) {
-            throw new PcepParseException(" ObjectLength Index is " + objLenIndex);
-        }
-
-        int iTemp = 0;
-
-        if (bIFlag) {
-            iTemp = iTemp | (byte) IFLAG_SHIFT_VALUE;
-        }
-        if (bNFlag) {
-            iTemp = iTemp | (byte) NFLAG_SHIFT_VALUE;
-        }
-
-        cb.writeInt(iTemp);
-
-        //Update object length now
-        int length = cb.writerIndex() - objStartIndex;
-        //will be helpful during print().
-        interLayerObjHeader.setObjLen((short) length);
-        cb.setShort(objLenIndex, (short) length);
-
-        objLenIndex = cb.writerIndex();
-        return objLenIndex;
-    }
-
-    /**
-     * Builder class for PCEP inter layer object.
-     */
-    public static class Builder implements PcepInterLayerObject.Builder {
-
-        private boolean bIsHeaderSet = false;
-        private boolean bIsNFlagset = false;
-        private boolean bIsIFlagset = false;
-
-        private PcepObjectHeader interLayerObjHeader;
-        private boolean bNFlag;
-        private boolean bIFlag;
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFalg;
-
-        private boolean bIsIFlagSet = false;
-        private boolean iFlag;
-
-        @Override
-        public PcepInterLayerObject build() {
-            PcepObjectHeader interLayerObjHeader = this.bIsHeaderSet ? this.interLayerObjHeader
-                    : DEFAULT_INTER_LAYER_OBJECT_HEADER;
-
-            boolean bNFlag = this.bIsNFlagset ? this.bNFlag : DEFAULT_NFLAG;
-            boolean bIFlag = this.bIsIFlagset ? this.bIFlag : DEFAULT_IFLAG;
-
-            if (bIsPFlagSet) {
-                interLayerObjHeader.setPFlag(bPFalg);
-            }
-
-            if (bIsIFlagSet) {
-                interLayerObjHeader.setIFlag(iFlag);
-            }
-            return new PcepInterLayerObjectVer1(interLayerObjHeader, bNFlag, bIFlag);
-        }
-
-        @Override
-        public PcepObjectHeader getInterLayerObjHeader() {
-            return this.interLayerObjHeader;
-        }
-
-        @Override
-        public Builder setInterLayerObjHeader(PcepObjectHeader obj) {
-            this.interLayerObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public boolean getbNFlag() {
-            return this.bNFlag;
-        }
-
-        @Override
-        public Builder setbNFlag(boolean value) {
-            this.bNFlag = value;
-            this.bIsNFlagset = true;
-            return this;
-        }
-
-        @Override
-        public boolean getbIFlag() {
-            return this.bIFlag;
-        }
-
-        @Override
-        public Builder setbIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagset = true;
-            return this;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFalg = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.iFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("IFlag", bIFlag)
-                .add("NFlag", bNFlag).toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepIroObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepIroObjectVer1.java
deleted file mode 100644
index 78df1a9..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepIroObjectVer1.java
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepIroObject;
-import org.onosproject.pcepio.types.IPv4SubObject;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP iro object.
- */
-public class PcepIroObjectVer1 implements PcepIroObject {
-
-    /*
-      0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |                                                               |
-      //                      (Sub-objects)                           //
-      |                                                               |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-                     The IRO Object format
-
-        Each IPV4 suboject
-
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |L|    Type     |     Length    | IPv4 address (4 bytes)        |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        | IPv4 address (continued)      | Prefix Length |      Resvd    |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepIroObjectVer1.class);
-
-    public static final byte IRO_OBJ_TYPE = 1;
-    public static final byte IRO_OBJ_CLASS = 10;
-    public static final byte IRO_OBJECT_VERSION = 1;
-    public static final short IRO_OBJ_MINIMUM_LENGTH = 12;
-    public static final int OBJECT_HEADER_LENGTH = 4;
-    public static final int YTYPE_SHIFT_VALUE = 0x7F;
-
-    public static final PcepObjectHeader DEFAULT_IRO_OBJECT_HEADER = new PcepObjectHeader(IRO_OBJ_CLASS, IRO_OBJ_TYPE,
-            PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, IRO_OBJ_MINIMUM_LENGTH);
-
-    private short iroObjType = 0;
-    private byte yLength;
-    private byte yPrefixLength;
-    private byte yResvd;
-    private PcepObjectHeader iroObjHeader;
-    private LinkedList<PcepValueType> llSubObjects = new LinkedList<>();
-
-    /**
-     * Default constructor.
-     */
-    public PcepIroObjectVer1() {
-        this.iroObjHeader = null;
-        this.iroObjType = 0;
-        this.yLength = 0;
-    }
-
-    /**
-     * Constructor to initialize member variables.
-     *
-     * @param iroObjHeader IRO object header
-     * @param llSubObjects list of sub-objects
-     */
-    public PcepIroObjectVer1(PcepObjectHeader iroObjHeader, LinkedList<PcepValueType> llSubObjects) {
-        this.iroObjHeader = iroObjHeader;
-        this.llSubObjects = llSubObjects;
-    }
-
-    /**
-     * Returns object header.
-     *
-     * @return iroObjHeader IRO object header
-     */
-    public PcepObjectHeader getIroObjHeader() {
-        return this.iroObjHeader;
-    }
-
-    /**
-     * Sets IRO Object Header.
-     *
-     * @param obj IRO object header
-     */
-    public void setIroObjHeader(PcepObjectHeader obj) {
-        this.iroObjHeader = obj;
-    }
-
-    @Override
-    public LinkedList<PcepValueType> getSubObjects() {
-        return this.llSubObjects;
-    }
-
-    @Override
-    public void setSubObjects(LinkedList<PcepValueType> llSubObjects) {
-        this.llSubObjects = llSubObjects;
-    }
-
-    /**
-     * Reads from channel buffer and return object of PcepIroObject.
-     *
-     * @param cb of type channel buffer
-     * @return object of PcepIroObject
-     * @throws PcepParseException while parsing from channel buffer
-     */
-    public static PcepIroObject read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepObjectHeader iroObjHeader;
-        LinkedList<PcepValueType> llSubObjects;
-
-        iroObjHeader = PcepObjectHeader.read(cb);
-
-        //take only IroObject buffer.
-        ChannelBuffer tempCb = cb.readBytes(iroObjHeader.getObjLen() - OBJECT_HEADER_LENGTH);
-        llSubObjects = parseSubObjects(tempCb);
-        return new PcepIroObjectVer1(iroObjHeader, llSubObjects);
-    }
-
-    /**
-     * Returns linked list of sub objects.
-     *
-     * @param cb of type channel buffer
-     * @return linked list of sub objects
-     * @throws PcepParseException while parsing subobjects from channel buffer
-     */
-    protected static LinkedList<PcepValueType> parseSubObjects(ChannelBuffer cb) throws PcepParseException {
-
-        LinkedList<PcepValueType> llSubObjects = new LinkedList<>();
-
-        while (0 < cb.readableBytes()) {
-
-            //check the Type of the Subobjects.
-            byte yType = cb.readByte();
-            yType = (byte) (yType & (YTYPE_SHIFT_VALUE));
-            byte hLength = cb.readByte();
-
-            PcepValueType subObj;
-            switch (yType) {
-
-            case IPv4SubObject.TYPE:
-                subObj = IPv4SubObject.read(cb);
-                break;
-
-            default:
-                throw new PcepParseException("Invalid sub object. Type: " + (int) yType);
-            }
-
-            // Check for the padding
-            int pad = hLength % 4;
-            if (0 < pad) {
-                pad = 4 - pad;
-                if (pad <= cb.readableBytes()) {
-                    cb.skipBytes(pad);
-                }
-            }
-            llSubObjects.add(subObj);
-        }
-        return llSubObjects;
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-        //write Object header
-        int objStartIndex = cb.writerIndex();
-
-        int objLenIndex = iroObjHeader.write(cb);
-
-        if (objLenIndex <= 0) {
-            throw new PcepParseException(" ObjectLength is " + objLenIndex);
-        }
-
-        ListIterator<PcepValueType> listIterator = llSubObjects.listIterator();
-        while (listIterator.hasNext()) {
-            listIterator.next().write(cb);
-        }
-
-        //Update object length now
-        int length = cb.writerIndex() - objStartIndex;
-        //will be helpful during print().
-        iroObjHeader.setObjLen((short) length);
-        // As per RFC the length of object should be
-        // multiples of 4
-        int pad = length % 4;
-        if (pad != 0) {
-            pad = 4 - pad;
-            for (int i = 0; i < pad; i++) {
-                cb.writeByte((byte) 0);
-            }
-            length = length + pad;
-        }
-        cb.setShort(objLenIndex, (short) length);
-        objLenIndex = cb.writerIndex();
-        return objLenIndex;
-    }
-
-    /**
-     * Builder class for PCEP iro object.
-     */
-    public static class Builder implements PcepIroObject.Builder {
-
-        private boolean bIsHeaderSet = false;
-
-        private PcepObjectHeader iroObjHeader;
-        LinkedList<PcepValueType> llSubObjects = new LinkedList<>();
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        @Override
-        public PcepIroObject build() {
-
-            PcepObjectHeader iroObjHeader = this.bIsHeaderSet ? this.iroObjHeader : DEFAULT_IRO_OBJECT_HEADER;
-
-            if (bIsPFlagSet) {
-                iroObjHeader.setPFlag(bPFlag);
-            }
-
-            if (bIsIFlagSet) {
-                iroObjHeader.setIFlag(bIFlag);
-            }
-
-            return new PcepIroObjectVer1(iroObjHeader, this.llSubObjects);
-        }
-
-        @Override
-        public PcepObjectHeader getIroObjHeader() {
-            return this.iroObjHeader;
-        }
-
-        @Override
-        public Builder setIroObjHeader(PcepObjectHeader obj) {
-            this.iroObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public LinkedList<PcepValueType> getSubObjects() {
-            return this.llSubObjects;
-        }
-
-        @Override
-        public Builder setSubObjects(LinkedList<PcepValueType> llSubObjects) {
-            this.llSubObjects = llSubObjects;
-            return this;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("IroObjectHeader", iroObjHeader)
-                .add("SubObjects", llSubObjects).toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepKeepaliveMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepKeepaliveMsgVer1.java
deleted file mode 100644
index ff930a4..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepKeepaliveMsgVer1.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepKeepaliveMsg;
-import org.onosproject.pcepio.protocol.PcepMessageReader;
-import org.onosproject.pcepio.protocol.PcepMessageWriter;
-import org.onosproject.pcepio.protocol.PcepType;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP keep alive message.
- */
-class PcepKeepaliveMsgVer1 implements PcepKeepaliveMsg {
-
-    /*
-    <Keepalive Message>::= <Common Header>
-
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    | Ver |  Flags  |  Message-Type |       Message-Length          |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepKeepaliveMsgVer1.class);
-    // Pcep version: 1
-    public static final byte PACKET_VERSION = 1;
-    public static final int PACKET_MINIMUM_LENGTH = 4;
-    public static final PcepType MSG_TYPE = PcepType.KEEP_ALIVE;
-
-    public static final PcepKeepaliveMsgVer1.Reader READER = new Reader();
-
-    /**
-     * Reader class for reading PCEP keepalive message from channel buffer.
-     */
-    static class Reader implements PcepMessageReader<PcepKeepaliveMsg> {
-
-        @Override
-        public PcepKeepaliveMsg readFrom(ChannelBuffer cb) throws PcepParseException {
-
-            if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException("Packet size is less than the minimum required length.");
-            }
-            // fixed value property version == 1
-            byte version = cb.readByte();
-            version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG);
-            if (version != PACKET_VERSION) {
-                throw new PcepParseException("Wrong version: Expected=PcepVersion.KEEP_ALIVE_1(2), got=" + version);
-            }
-            // fixed value property type == 2
-            byte type = cb.readByte();
-            if (type != MSG_TYPE.getType()) {
-                throw new PcepParseException("Wrong type: Expected=PcepType.KEEP_ALIVE_1(2), got=" + type);
-            }
-            short length = cb.readShort();
-            if (length < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException("Wrong length: Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: "
-                        + length);
-            }
-            return new PcepKeepaliveMsgVer1();
-        }
-    }
-
-    /**
-     * Default constructor.
-     */
-    PcepKeepaliveMsgVer1() {
-    }
-
-    /**
-     * Builder class for PCEP keepalive message.
-     */
-    static class Builder implements PcepKeepaliveMsg.Builder {
-        @Override
-        public PcepVersion getVersion() {
-            return PcepVersion.PCEP_1;
-        }
-
-        @Override
-        public PcepType getType() {
-            return PcepType.KEEP_ALIVE;
-        }
-
-        @Override
-        public PcepKeepaliveMsg build() {
-            return new PcepKeepaliveMsgVer1();
-        }
-    }
-
-    @Override
-    public void writeTo(ChannelBuffer cb) {
-        WRITER.write(cb, this);
-    }
-
-    static final Writer WRITER = new Writer();
-
-    /**
-     * Writer class for writing the PCEP keepalive message to channel buffer.
-     */
-    static class Writer implements PcepMessageWriter<PcepKeepaliveMsgVer1> {
-
-        @Override
-        public void write(ChannelBuffer cb, PcepKeepaliveMsgVer1 message) {
-            int startIndex = cb.writerIndex();
-            // first 3 bits set to version
-            cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG));
-            // message type
-            cb.writeByte(MSG_TYPE.getType());
-            // length is length of variable message, will be updated at the end
-            // Store the position of message
-            // length in buffer
-            int msgLenIndex = cb.writerIndex();
-            cb.writeShort((short) 0);
-            // update message length field
-            int length = cb.writerIndex() - startIndex;
-            cb.setShort(msgLenIndex, (short) length);
-        }
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public PcepType getType() {
-        return MSG_TYPE;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass()).toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLSObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLSObjectVer1.java
deleted file mode 100644
index f902cc6..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLSObjectVer1.java
+++ /dev/null
@@ -1,510 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.List;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepLSObject;
-import org.onosproject.pcepio.types.LocalNodeDescriptorsTlv;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.onosproject.pcepio.types.RemoteNodeDescriptorsTlv;
-import org.onosproject.pcepio.types.RoutingUniverseTlv;
-import org.onosproject.pcepio.types.LinkAttributesTlv;
-import org.onosproject.pcepio.types.LinkDescriptorsTlv;
-import org.onosproject.pcepio.types.NodeAttributesTlv;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP LS (link-state) object.
- */
-public class PcepLSObjectVer1 implements PcepLSObject {
-    /*
-     *
-    reference: draft-dhodylee-pce-pcep-ls-01, section 9.2.
-
-    Two Object-Type values are defined for the LS object:
-
-    o  LS Node: LS Object-Type is 1.
-
-    o  LS Link: LS Object-Type is 2.
-
-    o  LS IPv4 Topology Prefix: LS Object-Type is 3.
-
-    o  LS IPv6 Topology Prefix: LS Object-Type is 4.
-
-    The format of the LS object body is as follows:
-
-       0                   1                   2                   3
-       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |  Protocol-ID  |          Flag                             |R|S|
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |                          LS-ID                                |
-      |                                                               |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      //                         TLVs                                //
-      |                                                               |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepLSObjectVer1.class);
-
-    public static final byte LS_OBJ_TYPE_NODE_VALUE = 1;
-    public static final byte LS_OBJ_TYPE_LINK_VALUE = 2;
-
-    public static final byte LS_OBJ_CLASS = (byte) 224;
-    public static final byte LS_OBJECT_VERSION = 1;
-
-    // LS_OBJ_MINIMUM_LENGTH = LSObjectHeaderLen(4) + LSObjectLen(8)
-    public static final short LS_OBJ_MINIMUM_LENGTH = 12;
-
-    // Signaled, all default values to be checked.
-    public static final byte DEFAULT_PROTOCOL_ID = 1; //IS-IS Level 1
-    public static final boolean DEFAULT_R_FLAG = false;
-    public static final boolean DEFAULT_S_FLAG = false;
-    public static final int DEFAULT_LS_ID = 0;
-
-    public static final int OBJECT_HEADER_LENGTH = 4;
-    public static final int RIGHT_SHIFT_ONE = 1;
-    public static final int RIGHT_FIRST_FLAG = 0x1;
-    public static final int FLAG_SET_R_FLAG = 0x2;
-    public static final int FLAG_SET_S_FLAG = 0x1;
-    public static final int MINIMUM_COMMON_HEADER_LENGTH = 4;
-    public static final int MINIMUM_TLV_HEADER_LENGTH = 4;
-
-    public static final PcepObjectHeader DEFAULT_LS_OBJECT_HEADER = new PcepObjectHeader(LS_OBJ_CLASS,
-            LS_OBJ_TYPE_NODE_VALUE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED,
-            LS_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader lsObjHeader;
-    private byte protocolId;
-    // 2-flags
-    private boolean removeFlag;
-    private boolean syncFlag;
-    private long lsId; //link-state identifier
-    // Optional TLV
-    private List<PcepValueType> optionalTlvList;
-
-    /**
-     * Constructor to initialize variables.
-     *
-     * @param lsObjHeader LS Object header
-     * @param protocolId Protocol-ID
-     * @param removeFlag R-flag
-     * @param syncFlag S-flag
-     * @param lsId LS-ID
-     * @param optionalTlvList linked list of Optional TLV
-     */
-    public PcepLSObjectVer1(PcepObjectHeader lsObjHeader, byte protocolId, boolean removeFlag,
-            boolean syncFlag, long lsId, List<PcepValueType> optionalTlvList) {
-
-        this.lsObjHeader = lsObjHeader;
-        this.protocolId = protocolId;
-        this.removeFlag = removeFlag;
-        this.syncFlag = syncFlag;
-        this.lsId = lsId;
-        this.optionalTlvList = optionalTlvList;
-    }
-
-    @Override
-    public PcepObjectHeader getLSObjHeader() {
-        return this.lsObjHeader;
-    }
-
-    @Override
-    public void setLSObjHeader(PcepObjectHeader obj) {
-        this.lsObjHeader = obj;
-    }
-
-    @Override
-    public byte getProtocolId() {
-        return this.protocolId;
-    }
-
-    @Override
-    public void setProtocolId(byte protId) {
-        this.protocolId = protId;
-    }
-
-    @Override
-    public boolean getRemoveFlag() {
-        return this.removeFlag;
-    }
-
-    @Override
-    public void setRemoveFlag(boolean removeFlag) {
-        this.removeFlag = removeFlag;
-    }
-
-    @Override
-    public boolean getSyncFlag() {
-        return this.syncFlag;
-    }
-
-    @Override
-    public void setSyncFlag(boolean syncFlag) {
-        this.syncFlag = syncFlag;
-    }
-
-    @Override
-    public long getLSId() {
-        return this.lsId;
-    }
-
-    @Override
-    public void setLSId(long lsId) {
-        this.lsId = lsId;
-    }
-
-    @Override
-    public List<PcepValueType> getOptionalTlv() {
-        return this.optionalTlvList;
-    }
-
-    @Override
-    public void setOptionalTlv(List<PcepValueType> optionalTlvList) {
-        this.optionalTlvList = optionalTlvList;
-    }
-
-    /**
-     * Reads from the channel buffer and returns Object of PcepLSObject.
-     *
-     * @param cb of type channel buffer
-     * @return Object of PcepLSObject
-     * @throws PcepParseException if mandatory fields are missing
-     */
-    public static PcepLSObject read(ChannelBuffer cb) throws PcepParseException {
-        log.debug("read");
-
-        PcepObjectHeader lsObjHeader;
-        byte protocolId;
-        // 2-flags
-        boolean removeFlag;
-        boolean syncFlag;
-        long lsId;
-        List<PcepValueType> optionalTlvList;
-
-        lsObjHeader = PcepObjectHeader.read(cb);
-
-        //take only LSObject buffer.
-        ChannelBuffer tempCb = cb.readBytes(lsObjHeader.getObjLen() - OBJECT_HEADER_LENGTH);
-
-        protocolId = tempCb.readByte();
-        //ignore first two bytes of Flags
-        tempCb.readShort();
-
-        Integer iTemp = (int) tempCb.readByte(); //read 3rd byte Flag
-        syncFlag = (iTemp & FLAG_SET_S_FLAG) == FLAG_SET_S_FLAG;
-        removeFlag = (iTemp & FLAG_SET_R_FLAG) == FLAG_SET_R_FLAG;
-
-        lsId = tempCb.readLong();
-
-        // parse optional TLV
-        optionalTlvList = parseOptionalTlv(tempCb);
-
-        return new PcepLSObjectVer1(lsObjHeader, protocolId, removeFlag, syncFlag, lsId, optionalTlvList);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        //write Object header
-        int objStartIndex = cb.writerIndex();
-        int objLenIndex = lsObjHeader.write(cb);
-
-        if (objLenIndex <= 0) {
-            throw new PcepParseException("ObjectLength Index is " + objLenIndex);
-        }
-
-        //write Protocol ID
-        cb.writeByte(this.protocolId);
-
-        //write Flag
-        cb.writeShort(0);
-
-        byte bTemp = 0;
-        if (syncFlag) {
-            bTemp = FLAG_SET_S_FLAG;
-        }
-
-        if (removeFlag) {
-            bTemp = (byte) (bTemp | FLAG_SET_R_FLAG);
-        }
-        cb.writeByte(bTemp);
-
-        //write LSId
-        cb.writeLong(lsId);
-
-        // Add optional TLV
-        packOptionalTlv(cb);
-
-        //Update object length now
-        int length = cb.writerIndex() - objStartIndex;
-
-        //will be helpful during print().
-        lsObjHeader.setObjLen((short) length);
-
-        cb.setShort(objLenIndex, (short) length);
-
-        return cb.writerIndex();
-    }
-
-    /**
-     * Returns Linked list of PCEP Value Type.
-     *
-     * @param cb of channel buffer
-     * @return Linked list of PCEP Value Type
-     * @throws PcepParseException if mandatory fields are missing
-     */
-    protected static List<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException {
-
-        List<PcepValueType> llOutOptionalTlv;
-
-        llOutOptionalTlv = new LinkedList<>();
-
-        while (MINIMUM_TLV_HEADER_LENGTH <= cb.readableBytes()) {
-
-            PcepValueType tlv;
-            short hType = cb.readShort();
-            short hLength = cb.readShort();
-            long lValue = 0;
-
-            switch (hType) {
-
-            case RoutingUniverseTlv.TYPE:
-                lValue = cb.readLong();
-                tlv = new RoutingUniverseTlv(lValue);
-                break;
-            case LocalNodeDescriptorsTlv.TYPE:
-                tlv = LocalNodeDescriptorsTlv.read(cb, hLength);
-                break;
-            case RemoteNodeDescriptorsTlv.TYPE:
-                tlv = RemoteNodeDescriptorsTlv.read(cb, hLength);
-                break;
-            case LinkDescriptorsTlv.TYPE:
-                tlv = LinkDescriptorsTlv.read(cb, hLength);
-                break;
-            case NodeAttributesTlv.TYPE:
-                tlv = NodeAttributesTlv.read(cb, hLength);
-                break;
-            case LinkAttributesTlv.TYPE:
-                tlv = LinkAttributesTlv.read(cb, hLength);
-                break;
-            default:
-                throw new PcepParseException("Unsupported TLV type :" + hType);
-            }
-
-            // Check for the padding
-            int pad = hLength % 4;
-            if (0 < pad) {
-                pad = 4 - pad;
-                if (pad <= cb.readableBytes()) {
-                    cb.skipBytes(pad);
-                }
-            }
-
-            llOutOptionalTlv.add(tlv);
-        }
-
-        if (0 < cb.readableBytes()) {
-
-            throw new PcepParseException("Optional Tlv parsing error. Extra bytes received.");
-        }
-        return llOutOptionalTlv;
-    }
-
-    /**
-     * Returns the writer index.
-     *
-     * @param cb of type channel buffer
-     * @return the writer index.
-     */
-    protected int packOptionalTlv(ChannelBuffer cb) {
-
-        ListIterator<PcepValueType> listIterator = optionalTlvList.listIterator();
-
-        while (listIterator.hasNext()) {
-            PcepValueType tlv = listIterator.next();
-
-            if (tlv == null) {
-                log.debug("TLV is null from OptionalTlv list");
-                continue;
-            }
-            tlv.write(cb);
-
-            // need to take care of padding
-            int pad = tlv.getLength() % 4;
-
-            if (0 != pad) {
-                pad = 4 - pad;
-                for (int i = 0; i < pad; ++i) {
-                    cb.writeByte((byte) 0);
-                }
-            }
-        }
-        return cb.writerIndex();
-    }
-
-    /**
-     * Builder class for PCEP LS (link-state) object.
-     */
-    public static class Builder implements PcepLSObject.Builder {
-        private boolean isHeaderSet = false;
-        private boolean isProtocolIdSet = false;
-        private boolean isRemoveFlagSet = false;
-        private boolean isSyncFlagSet = false;
-        private boolean isLSIdSet = false;
-
-        private PcepObjectHeader lsObjHeader;
-        private byte protocolId;
-        private boolean removeFlag;
-        private boolean syncFlag;
-        private long lsId;
-        private List<PcepValueType> optionalTlvList = new LinkedList<>();
-
-        private boolean isProcRuleFlagSet = false;
-        private boolean procRuleFlag; //Processing rule flag
-
-        private boolean isIgnoreFlagSet = false;
-        private boolean ignoreFlag;
-
-        @Override
-        public PcepLSObject build() {
-            PcepObjectHeader lsObjHeader = this.isHeaderSet ? this.lsObjHeader : DEFAULT_LS_OBJECT_HEADER;
-
-            byte protocolId = this.isProtocolIdSet ? this.protocolId : DEFAULT_PROTOCOL_ID;
-            boolean removeFlag = this.isRemoveFlagSet ? this.removeFlag : DEFAULT_R_FLAG;
-            boolean syncFlag = this.isSyncFlagSet ? this.syncFlag : DEFAULT_S_FLAG;
-            long lsId = this.isLSIdSet ? this.lsId : DEFAULT_LS_ID;
-
-            if (isProcRuleFlagSet) {
-                lsObjHeader.setPFlag(procRuleFlag);
-            }
-
-            if (isIgnoreFlagSet) {
-                lsObjHeader.setIFlag(ignoreFlag);
-            }
-
-            return new PcepLSObjectVer1(lsObjHeader, protocolId, removeFlag, syncFlag, lsId, optionalTlvList);
-
-        }
-
-        @Override
-        public PcepObjectHeader getLSObjHeader() {
-            return this.lsObjHeader;
-        }
-
-        @Override
-        public Builder setLSObjHeader(PcepObjectHeader obj) {
-            this.lsObjHeader = obj;
-            this.isHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public byte getProtocolId() {
-            return this.protocolId;
-        }
-
-        @Override
-        public Builder setProtocolId(byte protId) {
-            this.protocolId = protId;
-            this.isProtocolIdSet = true;
-            return this;
-        }
-
-        @Override
-        public boolean getRemoveFlag() {
-            return this.removeFlag;
-        }
-
-        @Override
-        public Builder setRemoveFlag(boolean removeFlag) {
-            this.removeFlag = removeFlag;
-            this.isRemoveFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public boolean getSyncFlag() {
-            return this.syncFlag;
-        }
-
-        @Override
-        public Builder setSyncFlag(boolean syncFlag) {
-            this.syncFlag = syncFlag;
-            this.isSyncFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public long getLSId() {
-            return this.lsId;
-        }
-
-        @Override
-        public Builder setLSId(long lsId) {
-            this.lsId = lsId;
-            this.isLSIdSet = true;
-            return this;
-        }
-
-        @Override
-        public List<PcepValueType> getOptionalTlv() {
-            return this.optionalTlvList;
-        }
-
-        @Override
-        public Builder setOptionalTlv(List<PcepValueType> optionalTlvList) {
-            this.optionalTlvList = optionalTlvList;
-            return this;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.procRuleFlag = value;
-            this.isProcRuleFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.ignoreFlag = value;
-            this.isIgnoreFlagSet = true;
-            return this;
-        }
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass()).omitNullValues()
-                .add("ObjectHeader", lsObjHeader)
-                .add("ProtocolId", protocolId)
-                .add("RFlag", (removeFlag) ? 1 : 0)
-                .add("SFlag", (syncFlag) ? 1 : 0)
-                .add("LsId", lsId)
-                .add("OptionalTlv", optionalTlvList).toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLSReportMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLSReportMsgVer1.java
deleted file mode 100644
index c466e59..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLSReportMsgVer1.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.List;
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepMessageReader;
-import org.onosproject.pcepio.protocol.PcepMessageWriter;
-import org.onosproject.pcepio.protocol.PcepLSObject;
-import org.onosproject.pcepio.protocol.PcepLSReportMsg;
-import org.onosproject.pcepio.protocol.PcepType;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides  PCEP LS (link-state) Report Message.
- */
-class PcepLSReportMsgVer1 implements PcepLSReportMsg {
-
-    /*
-     * Ref : draft-dhodylee-pce-pcep-ls-01, section 8.1
-
-        <LSRpt Message>  ::=  <Common Header>
-                              <ls-report-list>
-    Where:
-        <ls-report-list> ::=  <LS>[<ls-report-list>]
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepLSReportMsgVer1.class);
-    //PACKET_MINIMUM_LENGTH = CommonHeaderLen(4)+LSObjMinLen(12)
-    public static final int PACKET_MINIMUM_LENGTH = 16;
-    public static final PcepType MSG_TYPE = PcepType.LS_REPORT;
-    // <ls-report-list>
-    private List<PcepLSObject> lsReportList;
-
-    public static final PcepLSReportMsgVer1.Reader READER = new Reader();
-
-    /**
-     * Reader class for reading PCEP LS-Report message form channel buffer.
-     */
-    static class Reader implements PcepMessageReader<PcepLSReportMsg> {
-
-        List<PcepLSObject> lsReportList;
-
-        @Override
-        public PcepLSReportMsg readFrom(ChannelBuffer cb) throws PcepParseException {
-
-            if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) {
-                return null;
-            }
-
-            lsReportList = new LinkedList<>();
-
-            byte version = cb.readByte();
-            version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG);
-            if (version != PcepMessageVer1.PACKET_VERSION) {
-                throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), got=" + version);
-            }
-
-            byte type = cb.readByte();
-            if (type != MSG_TYPE.getType()) {
-                throw new PcepParseException("Wrong type. Expected=PcepType.LS_REPORT(224), got=" + type);
-            }
-
-            short length = cb.readShort();
-            if (length < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException(
-                        "Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", is: " + length);
-            }
-
-            // Parse <ls-report-list>
-            parseLSReportList(cb);
-
-            return new PcepLSReportMsgVer1(lsReportList);
-        }
-
-        /**
-         * Parse ls-report-list.
-         *
-         * @param cb input Channel Buffer
-         * @throws PcepParseException when fails to parse LS-Report list.
-         */
-        public void parseLSReportList(ChannelBuffer cb) throws PcepParseException {
-            // <ls-report-list> ::= <LS>[<ls-report-list>]
-
-            while (0 < cb.readableBytes()) {
-                //store LS objects
-                if (!lsReportList.add(PcepLSObjectVer1.read(cb))) {
-                    throw new PcepParseException("Failed to add LS object to LS-Report list");
-                }
-            }
-        }
-    }
-
-    /**
-     * Constructor to initialize LS-Report list.
-     *
-     * @param lsReportList list of PCEP LS Object
-     */
-    PcepLSReportMsgVer1(List<PcepLSObject> lsReportList) {
-        this.lsReportList = lsReportList;
-    }
-
-    /**
-     * Builder class for PCEP LS-Report message.
-     */
-    static class Builder implements PcepLSReportMsg.Builder {
-        // PCEP LS Report message fields
-        List<PcepLSObject> lsReportList;
-
-        @Override
-        public PcepVersion getVersion() {
-            return PcepVersion.PCEP_1;
-        }
-
-        @Override
-        public PcepType getType() {
-            return PcepType.LS_REPORT;
-        }
-
-        @Override
-        public PcepLSReportMsg build() {
-            return new PcepLSReportMsgVer1(this.lsReportList);
-        }
-
-        @Override
-        public List<PcepLSObject> getLSReportList() {
-            return this.lsReportList;
-        }
-
-        @Override
-        public Builder setLSReportList(List<PcepLSObject> ll) {
-            this.lsReportList = ll;
-            return this;
-        }
-    }
-
-    @Override
-    public void writeTo(ChannelBuffer bb) throws PcepParseException {
-        WRITER.write(bb, this);
-    }
-
-    static final Writer WRITER = new Writer();
-
-    /**
-     * Writer class for writing PCEP LS-Report message to channel buffer.
-     */
-    static class Writer implements PcepMessageWriter<PcepLSReportMsgVer1> {
-
-        @Override
-        public void write(ChannelBuffer bb, PcepLSReportMsgVer1 message) throws PcepParseException {
-
-            int startIndex = bb.writerIndex();
-
-            // first 3 bits set to version
-            bb.writeByte((byte) (PcepMessageVer1.PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG));
-
-            // message type
-            bb.writeByte(MSG_TYPE.getType());
-
-            // Length of the message will be updated at the end
-            // First write with 0s
-            int msgLenIndex = bb.writerIndex();
-            bb.writeShort((short) 0);
-
-            ListIterator<PcepLSObject> listIterator = message.lsReportList.listIterator();
-
-            while (listIterator.hasNext()) {
-                PcepLSObject lsObj = listIterator.next();
-                lsObj.write(bb);
-            }
-
-            // update message length field
-            int length = bb.writerIndex() - startIndex;
-            bb.setShort(msgLenIndex, (short) length);
-        }
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public PcepType getType() {
-        return MSG_TYPE;
-    }
-
-    @Override
-    public List<PcepLSObject> getLSReportList() {
-        return this.lsReportList;
-    }
-
-    @Override
-    public void setLSReportList(List<PcepLSObject> ll) {
-        this.lsReportList = ll;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("LSReportList", lsReportList)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelObjectVer1.java
deleted file mode 100644
index 7e3e554..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelObjectVer1.java
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepLabelObject;
-import org.onosproject.pcepio.types.NexthopIPv4addressTlv;
-import org.onosproject.pcepio.types.NexthopIPv6addressTlv;
-import org.onosproject.pcepio.types.NexthopUnnumberedIPv4IDTlv;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP label object.
- */
-public class PcepLabelObjectVer1 implements PcepLabelObject {
-
-    /*
-     *   ref : draft-zhao-pce-pcep-extension-for-pce-controller-03, section : 7.3.
-
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-   |          Reserved            |              Flags           |O|
-   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-   |                 Label                 |     Reserved          |
-   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-   |                                                               |
-   //                        Optional TLV                         //
-   |                                                               |
-   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-                     The LABEL Object format
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepLspObjectVer1.class);
-
-    public static final byte LABEL_OBJ_TYPE = 1;
-    public static final byte LABEL_OBJ_CLASS = (byte) 225;
-    public static final byte LABEL_OBJECT_VERSION = 1;
-    public static final byte OBJECT_HEADER_LENGTH = 4;
-    public static final boolean DEFAULT_OFLAG = false;
-
-    // LSP_OBJ_MINIMUM_LENGTH = CommonHeaderLen(4)+ LspObjectHeaderLen(8)
-    public static final short LABEL_OBJ_MINIMUM_LENGTH = 12;
-
-    public static final int OFLAG_SET = 1;
-    public static final int SHIFT_LABEL = 12;
-    public static final int OFLAG_RESET = 0;
-    public static final int MINIMUM_COMMON_HEADER_LENGTH = 4;
-
-    static final PcepObjectHeader DEFAULT_LABEL_OBJECT_HEADER = new PcepObjectHeader(LABEL_OBJ_CLASS, LABEL_OBJ_TYPE,
-            PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, LABEL_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader labelObjHeader;
-    private boolean oBit;
-    private int label;
-    // Optional TLV
-    private LinkedList<PcepValueType> optionalTlv;
-
-    /**
-     * Constructor to initialize parameters for PCEP label object.
-     *
-     * @param labelObjHeader label object header
-     * @param oBit O flag
-     * @param label label
-     * @param optionalTlv list of optional tlvs
-     */
-    public PcepLabelObjectVer1(PcepObjectHeader labelObjHeader, boolean oBit, int label,
-            LinkedList<PcepValueType> optionalTlv) {
-        this.labelObjHeader = labelObjHeader;
-        this.oBit = oBit;
-        this.label = label;
-        this.optionalTlv = optionalTlv;
-    }
-
-    @Override
-    public LinkedList<PcepValueType> getOptionalTlv() {
-        return this.optionalTlv;
-    }
-
-    @Override
-    public void setOptionalTlv(LinkedList<PcepValueType> optionalTlv) {
-        this.optionalTlv = optionalTlv;
-    }
-
-    @Override
-    public boolean getOFlag() {
-        return this.oBit;
-    }
-
-    @Override
-    public void setOFlag(boolean value) {
-        this.oBit = value;
-    }
-
-    @Override
-    public int getLabel() {
-        return this.label;
-    }
-
-    @Override
-    public void setLabel(int value) {
-        this.label = value;
-    }
-
-    /**
-     * Reads form channel buffer and returns objects of PcepLabelObject.
-     *
-     * @param cb of type channel buffer
-     * @return objects of PcepLabelObject
-     * @throws PcepParseException when fails to read from channel buffer
-     */
-    public static PcepLabelObject read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepObjectHeader labelObjHeader;
-
-        boolean oBit;
-        int label;
-
-        // Optional TLV
-        LinkedList<PcepValueType> optionalTlv = new LinkedList<>();
-        labelObjHeader = PcepObjectHeader.read(cb);
-
-        //take only LspObject buffer.
-        ChannelBuffer tempCb = cb.readBytes(labelObjHeader.getObjLen() - OBJECT_HEADER_LENGTH);
-
-        int iTemp = tempCb.readInt();
-        oBit = (iTemp & (byte) OFLAG_SET) == OFLAG_SET;
-        iTemp = tempCb.readInt();
-        label = (int) iTemp >> SHIFT_LABEL;
-
-        // parse optional TLV
-        optionalTlv = parseOptionalTlv(tempCb);
-        return new PcepLabelObjectVer1(labelObjHeader, oBit, label, optionalTlv);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        //write Object header
-        int objStartIndex = cb.writerIndex();
-        int objLenIndex = labelObjHeader.write(cb);
-
-        if (objLenIndex <= 0) {
-            throw new PcepParseException(" ObjectLength Index is " + objLenIndex);
-        }
-
-        byte oFlag;
-
-        oFlag = (byte) ((oBit) ? OFLAG_SET : OFLAG_RESET);
-        cb.writeInt(oFlag);
-        int temp = label;
-        temp = (int) label << SHIFT_LABEL;
-        cb.writeInt(temp);
-
-        // Add optional TLV
-        packOptionalTlv(cb);
-
-        //Update object length now
-        int length = cb.writerIndex() - objStartIndex;
-
-        //will be helpful during print().
-        labelObjHeader.setObjLen((short) length);
-        cb.setShort(objLenIndex, (short) length);
-        return cb.writerIndex();
-    }
-
-    /**
-     * Returns list of optional tlvs.
-     *
-     * @param cb of type channel buffer
-     * @return list of optional tlvs.
-     * @throws PcepParseException when fails to parse list of optional tlvs
-     */
-    protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException {
-
-        LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>();
-
-        while (MINIMUM_COMMON_HEADER_LENGTH <= cb.readableBytes()) {
-
-            PcepValueType tlv;
-            short hType = cb.readShort();
-            short hLength = cb.readShort();
-            int iValue = 0;
-
-            switch (hType) {
-
-            case NexthopIPv4addressTlv.TYPE:
-                iValue = cb.readInt();
-                tlv = new NexthopIPv4addressTlv(iValue);
-                break;
-            case NexthopIPv6addressTlv.TYPE:
-                byte[] ipv6Value = new byte[NexthopIPv6addressTlv.VALUE_LENGTH];
-                cb.readBytes(ipv6Value, 0, NexthopIPv6addressTlv.VALUE_LENGTH);
-                tlv = new NexthopIPv6addressTlv(ipv6Value);
-                break;
-            case NexthopUnnumberedIPv4IDTlv.TYPE:
-                tlv = NexthopUnnumberedIPv4IDTlv.read(cb);
-                break;
-            default:
-                throw new PcepParseException("Unsupported TLV type :" + hType);
-            }
-
-            // Check for the padding
-            int pad = hLength % 4;
-            if (0 < pad) {
-                pad = 4 - pad;
-                if (pad <= cb.readableBytes()) {
-                    cb.skipBytes(pad);
-                }
-            }
-
-            llOutOptionalTlv.add(tlv);
-        }
-
-        if (0 < cb.readableBytes()) {
-
-            throw new PcepParseException("Optional Tlv parsing error. Extra bytes received.");
-        }
-        return llOutOptionalTlv;
-    }
-
-    /**
-     * Returns the writer index.
-     *
-     * @param cb of channel buffer.
-     * @return writer index
-     */
-    protected int packOptionalTlv(ChannelBuffer cb) {
-
-        ListIterator<PcepValueType> listIterator = optionalTlv.listIterator();
-
-        while (listIterator.hasNext()) {
-            PcepValueType tlv = listIterator.next();
-
-            if (tlv == null) {
-                log.debug("tlv is null from OptionalTlv list");
-                continue;
-            }
-            tlv.write(cb);
-        }
-        return cb.writerIndex();
-    }
-
-    /**
-     * Builder class for PCEP label object.
-     */
-    public static class Builder implements PcepLabelObject.Builder {
-
-        private boolean bIsHeaderSet = false;
-        private boolean bIsOFlagSet = false;
-        private boolean bIsLabelSet = false;
-
-        private PcepObjectHeader labelObjHeader;
-        private boolean oBit;
-        private int label;
-
-        LinkedList<PcepValueType> optionalTlv = new LinkedList<>();
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        @Override
-        public PcepLabelObject build() throws PcepParseException {
-            PcepObjectHeader labelObjHeader = this.bIsHeaderSet ? this.labelObjHeader : DEFAULT_LABEL_OBJECT_HEADER;
-            boolean oBit = this.bIsOFlagSet ? this.oBit : DEFAULT_OFLAG;
-
-            if (!this.bIsLabelSet) {
-                throw new PcepParseException(" Label NOT Set while building PcepLabelObject.");
-            }
-            if (bIsPFlagSet) {
-                labelObjHeader.setPFlag(bPFlag);
-            }
-            if (bIsIFlagSet) {
-                labelObjHeader.setIFlag(bIFlag);
-            }
-            return new PcepLabelObjectVer1(labelObjHeader, oBit, this.label, this.optionalTlv);
-        }
-
-        @Override
-        public PcepObjectHeader getLabelObjHeader() {
-            return this.labelObjHeader;
-        }
-
-        @Override
-        public Builder setLabelObjHeader(PcepObjectHeader obj) {
-            this.labelObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public boolean getOFlag() {
-            return this.oBit;
-        }
-
-        @Override
-        public Builder setOFlag(boolean value) {
-            this.oBit = value;
-            this.bIsOFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public int getLabel() {
-            return this.label;
-        }
-
-        @Override
-        public Builder setLabel(int value) {
-            this.label = value;
-            this.bIsLabelSet = true;
-            return this;
-        }
-
-        @Override
-        public LinkedList<PcepValueType> getOptionalTlv() {
-            return this.optionalTlv;
-        }
-
-        @Override
-        public Builder setOptionalTlv(LinkedList<PcepValueType> optionalTlv) {
-            this.optionalTlv = optionalTlv;
-            return this;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("oBit", oBit)
-                .add("label", label)
-                .add("optionalTlv", optionalTlv)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeObjectVer1.java
deleted file mode 100644
index ea62367..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeObjectVer1.java
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepLabelRangeObject;
-import org.onosproject.pcepio.types.PathSetupTypeTlv;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP label range object.
- */
-public class PcepLabelRangeObjectVer1 implements PcepLabelRangeObject {
-
-    /*
-     * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01, section : 7.2
-            0                   1                   2                     3
-            0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           | label type    | range size                                    |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           |                        label base                             |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           |                                                               |
-           //                      Optional TLVs                           //
-           |                                                               |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-                               LABEL-RANGE Object
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepLabelRangeObjectVer1.class);
-
-    public static final byte LABEL_RANGE_OBJ_TYPE = 1;
-    public static final byte LABEL_RANGE_OBJ_CLASS = 60; //to be defined
-    public static final byte LABEL_RANGE_OBJECT_VERSION = 1;
-    public static final short LABEL_RANGE_OBJ_MINIMUM_LENGTH = 12;
-    public static final int MINIMUM_COMMON_HEADER_LENGTH = 4;
-    //P flag and I flag must be set to 0
-    static final PcepObjectHeader DEFAULT_LABELRANGE_OBJECT_HEADER = new PcepObjectHeader(LABEL_RANGE_OBJ_CLASS,
-            LABEL_RANGE_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED,
-            LABEL_RANGE_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader labelRangeObjHeader;
-    private byte labelType;
-    private int rangeSize;
-    private int labelBase;
-    //Optional TLV
-    private LinkedList<PcepValueType> llOptionalTlv;
-
-    /**
-     * Constructor to initialize parameters for PCEP label range object.
-     *
-     * @param labelRangeObjHeader label range object header
-     * @param labelType label type
-     * @param rangeSize range size
-     * @param labelBase label base
-     * @param llOptionalTlv list of optional tlvs
-     */
-    public PcepLabelRangeObjectVer1(PcepObjectHeader labelRangeObjHeader, byte labelType, int rangeSize, int labelBase,
-            LinkedList<PcepValueType> llOptionalTlv) {
-        this.labelRangeObjHeader = labelRangeObjHeader;
-        this.labelType = labelType;
-        this.rangeSize = rangeSize;
-        this.llOptionalTlv = llOptionalTlv;
-        this.labelBase = labelBase;
-    }
-
-    @Override
-    public void setLabelRangeObjHeader(PcepObjectHeader obj) {
-        this.labelRangeObjHeader = obj;
-    }
-
-    @Override
-    public void setLabelType(byte labelType) {
-        this.labelType = labelType;
-    }
-
-    @Override
-    public void setRangeSize(int rangeSize) {
-        this.rangeSize = rangeSize;
-    }
-
-    @Override
-    public void setLabelBase(int labelBase) {
-        this.labelBase = labelBase;
-    }
-
-    @Override
-    public PcepObjectHeader getLabelRangeObjHeader() {
-        return this.labelRangeObjHeader;
-    }
-
-    @Override
-    public byte getLabelType() {
-        return this.labelType;
-    }
-
-    @Override
-    public int getRangeSize() {
-        return this.rangeSize;
-    }
-
-    @Override
-    public int getLabelBase() {
-        return this.labelBase;
-    }
-
-    /**
-     * Reads from the channel buffer and returns object of  PcepLabelRangeObject.
-     *
-     * @param cb of type channel buffer
-     * @return object of  PcepLabelRangeObject
-     * @throws PcepParseException when fails to read from channel buffer
-     */
-    public static PcepLabelRangeObject read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepObjectHeader labelRangeObjHeader;
-        byte labelType;
-        int rangeSize;
-        int labelBase;
-
-        LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>();
-
-        labelRangeObjHeader = PcepObjectHeader.read(cb);
-
-        //take only LabelRangeObject buffer.
-        ChannelBuffer tempCb = cb.readBytes(labelRangeObjHeader.getObjLen() - MINIMUM_COMMON_HEADER_LENGTH);
-        int temp = 0;
-        temp = tempCb.readInt();
-        rangeSize = temp & 0x00FFFFFF;
-        labelType = (byte) (temp >> 24);
-        labelBase = tempCb.readInt();
-        llOptionalTlv = parseOptionalTlv(tempCb);
-        return new PcepLabelRangeObjectVer1(labelRangeObjHeader, labelType, rangeSize, labelBase, llOptionalTlv);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        int objStartIndex = cb.writerIndex();
-
-        //write common header
-        int objLenIndex = labelRangeObjHeader.write(cb);
-        int temp = 0;
-        temp = labelType;
-        temp = temp << 24;
-        temp = temp | rangeSize;
-        cb.writeInt(temp);
-
-        // Add optional TLV
-        if (!packOptionalTlv(cb)) {
-            throw new PcepParseException("Error while writing Optional tlv.");
-        }
-
-        //now write LabelRange Object Length
-        cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex));
-        return cb.writerIndex() - objStartIndex;
-    }
-
-    /**
-     * Returns list of optional tlvs.
-     *
-     * @param cb of type channle buffer
-     * @return list of optional tlvs
-     * @throws PcepParseException whne fails to parse list of optional tlvs
-     */
-    public static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException {
-
-        LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>();
-
-        while (MINIMUM_COMMON_HEADER_LENGTH <= cb.readableBytes()) {
-
-            PcepValueType tlv;
-            int iValue;
-            short hType = cb.readShort();
-            short hLength = cb.readShort();
-
-            switch (hType) {
-
-            case PathSetupTypeTlv.TYPE:
-                iValue = cb.readInt();
-                tlv = new PathSetupTypeTlv(iValue);
-                break;
-
-            default:
-                throw new PcepParseException("Unsupported TLV in LabelRange Object.");
-            }
-
-            // Check for the padding
-            int pad = hLength % 4;
-            if (0 < pad) {
-                pad = 4 - pad;
-                if (pad <= cb.readableBytes()) {
-                    cb.skipBytes(pad);
-                }
-            }
-            llOutOptionalTlv.add(tlv);
-        }
-        return llOutOptionalTlv;
-    }
-
-    /**
-     * Pack optional tlvs.
-     *
-     * @param cb of channel buffer
-     * @return true
-     */
-    protected boolean packOptionalTlv(ChannelBuffer cb) {
-
-        ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator();
-
-        while (listIterator.hasNext()) {
-            PcepValueType tlv = listIterator.next();
-
-            if (tlv == null) {
-                log.debug("tlv is null from OptionalTlv list");
-                continue;
-            }
-            tlv.write(cb);
-
-            // need to take care of padding
-            int pad = tlv.getLength() % 4;
-            if (0 != pad) {
-                pad = 4 - pad;
-                for (int i = 0; i < pad; ++i) {
-                    cb.writeByte((byte) 0);
-                }
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Builder class for PCEP label range object.
-     */
-    public static class Builder implements PcepLabelRangeObject.Builder {
-        private boolean bIsHeaderSet = false;
-        private boolean bIsLabelType = false;
-        private boolean bIsRangeSize = false;
-        private boolean bIsLabelBase = false;
-
-        byte labelType;
-        int rangeSize;
-        int labelBase;
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-        private PcepObjectHeader labelRangeObjHeader;
-
-        LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>();
-
-        @Override
-        public PcepLabelRangeObject build() throws PcepParseException {
-            PcepObjectHeader labelRangeObjHeader = this.bIsHeaderSet ? this.labelRangeObjHeader
-                    : DEFAULT_LABELRANGE_OBJECT_HEADER;
-
-            if (!this.bIsLabelType) {
-                throw new PcepParseException("LabelType NOT Set while building label range object.");
-            }
-
-            if (!this.bIsRangeSize) {
-                throw new PcepParseException("RangeSize NOT Set while building label range object.");
-            }
-
-            if (!this.bIsLabelBase) {
-                throw new PcepParseException("LabelBase NOT Set while building label range object.");
-            }
-
-            if (bIsPFlagSet) {
-                labelRangeObjHeader.setPFlag(bPFlag);
-            }
-
-            if (bIsIFlagSet) {
-                labelRangeObjHeader.setIFlag(bIFlag);
-            }
-            return new PcepLabelRangeObjectVer1(labelRangeObjHeader, this.labelType, this.rangeSize, this.labelBase,
-                    this.llOptionalTlv);
-        }
-
-        @Override
-        public PcepObjectHeader getLabelRangeObjHeader() {
-            return this.labelRangeObjHeader;
-        }
-
-        @Override
-        public Builder setLabelRangeObjHeader(PcepObjectHeader obj) {
-            this.labelRangeObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public byte getLabelType() {
-            return this.labelType;
-        }
-
-        @Override
-        public Builder setLabelType(byte labelType) {
-            this.labelType = labelType;
-            this.bIsLabelType = true;
-            return this;
-        }
-
-        @Override
-        public int getRangeSize() {
-            return this.rangeSize;
-        }
-
-        @Override
-        public Builder setRangeSize(int rangeSize) {
-            this.rangeSize = rangeSize;
-            this.bIsRangeSize = true;
-            return this;
-        }
-
-        @Override
-        public int getLabelBase() {
-            return this.labelBase;
-        }
-
-        @Override
-        public Builder setLabelBase(int labelBase) {
-            this.labelBase = labelBase;
-            this.bIsLabelBase = true;
-            return this;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("LabelType", labelType)
-                .add("rangeSize", rangeSize)
-                .add("labelBase", labelBase)
-                .add("optionalTlvList", llOptionalTlv)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeResvMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeResvMsgVer1.java
deleted file mode 100644
index b5789be..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeResvMsgVer1.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepLabelRange;
-import org.onosproject.pcepio.protocol.PcepLabelRangeResvMsg;
-import org.onosproject.pcepio.protocol.PcepMessageReader;
-import org.onosproject.pcepio.protocol.PcepMessageWriter;
-import org.onosproject.pcepio.protocol.PcepType;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP label range reserve message.
- */
-class PcepLabelRangeResvMsgVer1 implements PcepLabelRangeResvMsg {
-
-    // Pcep version: 1
-
-    /*
-       The format of a PCLRResv message is as follows:
-
-               PCLRResv Message>::= <Common Header>
-                                    <label-range>
-          Where:
-
-               <label-range> ::= <SRP>
-                                 <labelrange-list>
-
-          Where
-               <labelrange-list>::=<LABEL-RANGE>[<labelrange-list>]
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepLabelRangeResvMsgVer1.class);
-
-    public static final byte PACKET_VERSION = 1;
-    // LabelRangeResvMsgMinLength = COMMON-HEADER(4)+SrpObjMinLentgh(12)+LABEL-RANGE-MIN-LENGTH(12)
-    public static final int PACKET_MINIMUM_LENGTH = 28;
-    public static final PcepType MSG_TYPE = PcepType.LABEL_RANGE_RESERV;
-    //<label-range>
-    PcepLabelRange labelRange;
-
-    public static final PcepLabelRangeResvMsgVer1.Reader READER = new Reader();
-
-    /**
-     * Reader reads LabelRangeResv Message from the channel.
-     */
-    static class Reader implements PcepMessageReader<PcepLabelRangeResvMsg> {
-
-        @Override
-        public PcepLabelRangeResvMsg readFrom(ChannelBuffer cb) throws PcepParseException {
-
-            if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException("Channel buffer has less readable bytes than Packet minimum length.");
-            }
-            // fixed value property version == 1
-            byte version = cb.readByte();
-            version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG);
-            if (version != PACKET_VERSION) {
-                throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), got=" + version);
-            }
-            // fixed value property type == 15
-            byte type = cb.readByte();
-            if (type != MSG_TYPE.getType()) {
-                throw new PcepParseException("Wrong type. Expected=PcepType.LABEL_RANGE_RESERV(15), got=" + type);
-            }
-            short length = cb.readShort();
-            if (length < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException("Wrong length.Expected to be >= " + PACKET_MINIMUM_LENGTH + ", is: "
-                        + length);
-            }
-            // parse <label-range>
-            PcepLabelRange labelRange = PcepLabelRangeVer1.read(cb);
-            return new PcepLabelRangeResvMsgVer1(labelRange);
-        }
-    }
-
-    /**
-     * Constructor to initialize PCEP label range.
-     *
-     * @param labelRange PCEP label range
-     */
-    PcepLabelRangeResvMsgVer1(PcepLabelRange labelRange) {
-        this.labelRange = labelRange;
-    }
-
-    /**
-     * Builder class for PCEP label range reserve message.
-     */
-    static class Builder implements PcepLabelRangeResvMsg.Builder {
-
-        PcepLabelRange labelRange = new PcepLabelRangeVer1();
-
-        @Override
-        public PcepVersion getVersion() {
-            return PcepVersion.PCEP_1;
-        }
-
-        @Override
-        public PcepType getType() {
-            return PcepType.LABEL_RANGE_RESERV;
-        }
-
-        @Override
-        public PcepLabelRangeResvMsg build() {
-            return new PcepLabelRangeResvMsgVer1(this.labelRange);
-        }
-
-        @Override
-        public PcepLabelRange getLabelRange() {
-            return this.labelRange;
-        }
-
-        @Override
-        public Builder setLabelRange(PcepLabelRange labelRange) {
-            this.labelRange = labelRange;
-            return this;
-        }
-    }
-
-    @Override
-    public void writeTo(ChannelBuffer cb) throws PcepParseException {
-        WRITER.write(cb, this);
-    }
-
-    static final Writer WRITER = new Writer();
-
-    /**
-     * Writer writes LabelRangeResv Message to the channel.
-     */
-    static class Writer implements PcepMessageWriter<PcepLabelRangeResvMsgVer1> {
-
-        @Override
-        public void write(ChannelBuffer cb, PcepLabelRangeResvMsgVer1 message) throws PcepParseException {
-
-            int startIndex = cb.writerIndex();
-            // first 3 bits set to version
-            cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG));
-            // message type
-            cb.writeByte(MSG_TYPE.getType());
-            // Length will be set after calculating length, but currently set it as 0.
-            int msgLenIndex = cb.writerIndex();
-
-            cb.writeShort((short) 0);
-            //write Label Range
-            message.labelRange.write(cb);
-
-            // update message length field
-            int length = cb.writerIndex() - startIndex;
-            cb.setShort(msgLenIndex, (short) length);
-        }
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public PcepType getType() {
-        return MSG_TYPE;
-    }
-
-    @Override
-    public PcepLabelRange getLabelRange() {
-        return this.labelRange;
-    }
-
-    @Override
-    public void setLabelRange(PcepLabelRange lr) {
-        this.labelRange = lr;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("labelRange", labelRange)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeVer1.java
deleted file mode 100644
index 83ec8aa..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeVer1.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepLabelRange;
-import org.onosproject.pcepio.protocol.PcepLabelRangeObject;
-import org.onosproject.pcepio.protocol.PcepSrpObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP Label Range.
- */
-public class PcepLabelRangeVer1 implements PcepLabelRange {
-
-    private static final Logger log = LoggerFactory.getLogger(PcepLabelRangeVer1.class);
-
-    /*
-        <label-range> ::= <SRP>
-                          <labelrange-list>
-        Where
-                <labelrange-list>::=<LABEL-RANGE>[<labelrange-list>]
-     */
-
-    // PCEP SRP Object
-    private PcepSrpObject srpObject;
-    //<labelrange-list> of type PcepLabelRangeObject.
-    private LinkedList<PcepLabelRangeObject> llLabelRangeList;
-
-    /**
-     * Default Constructor.
-     */
-    public PcepLabelRangeVer1() {
-        srpObject = null;
-        llLabelRangeList = null;
-    }
-
-    /**
-     * Constructor to initialize objects.
-     *
-     * @param srpObj PCEP Srp object.
-     * @param llLabelRangeList list of PcepLabelRangeObject.
-     */
-    PcepLabelRangeVer1(PcepSrpObject srpObj, LinkedList<PcepLabelRangeObject> llLabelRangeList) {
-        this.srpObject = srpObj;
-        this.llLabelRangeList = llLabelRangeList;
-    }
-
-    @Override
-    public PcepSrpObject getSrpObject() {
-        return srpObject;
-    }
-
-    @Override
-    public void setSrpObject(PcepSrpObject srpObject) {
-        this.srpObject = srpObject;
-
-    }
-
-    @Override
-    public LinkedList<PcepLabelRangeObject> getLabelRangeList() {
-        return llLabelRangeList;
-    }
-
-    @Override
-    public void setLabelRangeList(LinkedList<PcepLabelRangeObject> ll) {
-        this.llLabelRangeList = ll;
-    }
-
-    /**
-     * Reads channel buffer and returns object of PcepLabelRange.
-     *
-     * @param cb of type channel buffer.
-     * @return object of PcepLabelRange
-     * @throws PcepParseException when fails to read from channel buffer
-     */
-    public static PcepLabelRange read(ChannelBuffer cb) throws PcepParseException {
-
-        //parse and store SRP mandatory object
-        PcepSrpObject srpObj = null;
-        srpObj = PcepSrpObjectVer1.read(cb);
-        if (srpObj == null) {
-            throw new PcepParseException("Exception while parsing srp object");
-        }
-
-        LinkedList<PcepLabelRangeObject> llLabelRangeList = new LinkedList<>();
-        boolean bFoundLabelRangeObj = false;
-        while (0 < cb.readableBytes()) {
-            //parse and store <labelrange-list>
-            PcepLabelRangeObject lrObj;
-            lrObj = PcepLabelRangeObjectVer1.read(cb);
-            if (lrObj == null) {
-                throw new PcepParseException("Exception while parsing label range object");
-            } else {
-                llLabelRangeList.add(lrObj);
-                bFoundLabelRangeObj = true;
-            }
-        }
-
-        if (!bFoundLabelRangeObj) {
-            throw new PcepParseException("At least one LABEL-RANGE MUST be present.");
-        }
-        return new PcepLabelRangeVer1(srpObj, llLabelRangeList);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-        //write Object header
-        int objStartIndex = cb.writerIndex();
-
-        //write <SRP>
-        int objLenIndex = srpObject.write(cb);
-
-        if (objLenIndex <= 0) {
-            throw new PcepParseException("bjectLength is " + objLenIndex);
-        }
-
-        //write <labelrange-list>
-        ListIterator<PcepLabelRangeObject> listIterator = llLabelRangeList.listIterator();
-        while (listIterator.hasNext()) {
-            listIterator.next().write(cb);
-        }
-
-        //Update object length now
-        int length = cb.writerIndex() - objStartIndex;
-        // As per RFC the length of object should be
-        // multiples of 4
-        int pad = length % 4;
-        if (pad != 0) {
-            pad = 4 - pad;
-            for (int i = 0; i < pad; i++) {
-                cb.writeByte((byte) 0);
-            }
-            length = length + pad;
-        }
-        cb.setShort(objLenIndex, (short) length);
-        return length;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("srpObject", srpObject)
-                .add("LabelRangeList", llLabelRangeList)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateMsgVer1.java
deleted file mode 100644
index 0651c0b..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateMsgVer1.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepLabelUpdate;
-import org.onosproject.pcepio.protocol.PcepLabelUpdateMsg;
-import org.onosproject.pcepio.protocol.PcepMessageReader;
-import org.onosproject.pcepio.protocol.PcepMessageWriter;
-import org.onosproject.pcepio.protocol.PcepType;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP lable update message.
- */
-class PcepLabelUpdateMsgVer1 implements PcepLabelUpdateMsg {
-
-    // Pcep version: 1
-
-    /*
-      The format of the PCLabelUpd message:
-
-                  <PCLabelUpd Message>         ::=     <Common Header>
-                                                       <pce-label-update-list>
-                Where:
-
-                <pce-label-update-list>        ::=     <pce-label-update>
-                                                       [<pce-label-update-list>]
-                <pce-label-update>             ::=     (<pce-label-download>|<pce-label-map>)
-
-                Where:
-                <pce-label-download>           ::=      <SRP>
-                                                        <LSP>
-                                                        <label-list>
-
-                <pce-label-map>                 ::=     <SRP>
-                                                        <LABEL>
-                                                        <FEC>
-
-                <label-list >                   ::=     <LABEL>
-                                                        [<label-list>]
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepLabelUpdateMsgVer1.class);
-
-    public static final byte PACKET_VERSION = 1;
-
-    //LabelUpdateMsgMinLength = COMMON-HEADER(4)+SrpObjMinLentgh(12)+LabelObjectMinLength(12)+FECType1Object(8)
-    public static final int PACKET_MINIMUM_LENGTH = 36;
-    public static final PcepType MSG_TYPE = PcepType.LABEL_UPDATE;
-    //pce-label-update-list
-    private LinkedList<PcepLabelUpdate> llPcLabelUpdateList;
-
-    static final PcepLabelUpdateMsgVer1.Reader READER = new Reader();
-
-    /**
-     * Reader reads LabelUpdate Message from the channel.
-     */
-    static class Reader implements PcepMessageReader<PcepLabelUpdateMsg> {
-
-        @Override
-        public PcepLabelUpdateMsg readFrom(ChannelBuffer cb) throws PcepParseException {
-
-            if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException("Readable bytes are less than Packet minimum length.");
-            }
-
-            // fixed value property version == 1
-            byte version = cb.readByte();
-            version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG);
-            if (version != PACKET_VERSION) {
-                throw new PcepParseException("Wrong version.Expected=PcepVersion.PCEP_1(1), got=" + version);
-            }
-            // fixed value property type == 13
-            byte type = cb.readByte();
-            if (type != MSG_TYPE.getType()) {
-                throw new PcepParseException("Wrong type. Expected=PcepType.LABEL_UPDATE(13), got=" + type);
-            }
-            short length = cb.readShort();
-            if (length < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException("Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", is: "
-                        + length);
-            }
-            // parse <pce-label-download> / <pce-label-map>
-            LinkedList<PcepLabelUpdate> llPcLabelUpdateList = parsePcLabelUpdateList(cb);
-            return new PcepLabelUpdateMsgVer1(llPcLabelUpdateList);
-        }
-
-        /**
-         * Returns list of PCEP Label Update object.
-         *
-         * @param cb of type channel buffer
-         * @return llPcLabelUpdateList list of PCEP label update object
-         * @throws PcepParseException when fails to parse list of PCEP label update object
-         */
-        public LinkedList<PcepLabelUpdate> parsePcLabelUpdateList(ChannelBuffer cb) throws PcepParseException {
-
-            LinkedList<PcepLabelUpdate> llPcLabelUpdateList;
-            llPcLabelUpdateList = new LinkedList<>();
-
-            while (0 < cb.readableBytes()) {
-                llPcLabelUpdateList.add(PcepLabelUpdateVer1.read(cb));
-            }
-            return llPcLabelUpdateList;
-        }
-    }
-
-    /**
-     * Constructor to initialize PCEP Label Update List.
-     *
-     * @param llPcLabelUpdateList list of PCEP Label Update object
-     */
-    PcepLabelUpdateMsgVer1(LinkedList<PcepLabelUpdate> llPcLabelUpdateList) {
-        this.llPcLabelUpdateList = llPcLabelUpdateList;
-    }
-
-    /**
-     * Builder class for PCEP label update message.
-     */
-    static class Builder implements PcepLabelUpdateMsg.Builder {
-
-        LinkedList<PcepLabelUpdate> llPcLabelUpdateList;
-
-        @Override
-        public PcepVersion getVersion() {
-            return PcepVersion.PCEP_1;
-        }
-
-        @Override
-        public PcepType getType() {
-            return PcepType.LABEL_UPDATE;
-        }
-
-        @Override
-        public PcepLabelUpdateMsg build() {
-            return new PcepLabelUpdateMsgVer1(this.llPcLabelUpdateList);
-        }
-
-        @Override
-        public LinkedList<PcepLabelUpdate> getPcLabelUpdateList() {
-            return this.llPcLabelUpdateList;
-        }
-
-        @Override
-        public Builder setPcLabelUpdateList(LinkedList<PcepLabelUpdate> ll) {
-            this.llPcLabelUpdateList = ll;
-            return this;
-        }
-    }
-
-    @Override
-    public void writeTo(ChannelBuffer cb) throws PcepParseException {
-        WRITER.write(cb, this);
-    }
-
-    static final Writer WRITER = new Writer();
-
-    /**
-     * Writer writes LabelUpdate Message to the channel.
-     */
-    static class Writer implements PcepMessageWriter<PcepLabelUpdateMsgVer1> {
-
-        @Override
-        public void write(ChannelBuffer cb, PcepLabelUpdateMsgVer1 message) throws PcepParseException {
-
-            int startIndex = cb.writerIndex();
-
-            // first 3 bits set to version
-            cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG));
-
-            // message type
-            cb.writeByte(MSG_TYPE.getType());
-
-            // Length will be set after calculating length, but currently set it as 0.
-            int msgLenIndex = cb.writerIndex();
-
-            cb.writeShort((short) 0);
-            ListIterator<PcepLabelUpdate> listIterator = message.llPcLabelUpdateList.listIterator();
-
-            while (listIterator.hasNext()) {
-                PcepLabelUpdate labelUpdate = listIterator.next();
-                labelUpdate.write(cb);
-            }
-
-            // update message length field
-            int length = cb.writerIndex() - startIndex;
-            cb.setShort(msgLenIndex, (short) length);
-        }
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public PcepType getType() {
-        return MSG_TYPE;
-    }
-
-    @Override
-    public LinkedList<PcepLabelUpdate> getPcLabelUpdateList() {
-        return this.llPcLabelUpdateList;
-    }
-
-    @Override
-    public void setPcLabelUpdateList(LinkedList<PcepLabelUpdate> ll) {
-        this.llPcLabelUpdateList = ll;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("PcLabelUpdateList", llPcLabelUpdateList)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateVer1.java
deleted file mode 100644
index a6aa667..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateVer1.java
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepFecObject;
-import org.onosproject.pcepio.protocol.PcepLabelObject;
-import org.onosproject.pcepio.protocol.PcepLabelUpdate;
-import org.onosproject.pcepio.protocol.PcepLspObject;
-import org.onosproject.pcepio.protocol.PcepSrpObject;
-import org.onosproject.pcepio.types.PcepLabelDownload;
-import org.onosproject.pcepio.types.PcepLabelMap;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP LABEL update .
- * Reference :draft-zhao-pce-pcep-extension-for-pce-controller-01.
- */
-public class PcepLabelUpdateVer1 implements PcepLabelUpdate {
-
-    /*
-     *       <pce-label-update>      ::= (<pce-label-download>|<pce-label-map>)
-
-            Where:
-             <pce-label-download>    ::= <SRP>
-                                         <LSP>
-                                         <label-list>
-
-             <pce-label-map>         ::= <SRP>
-                                         <LABEL>
-                                         <FEC>
-
-             <label-list >           ::= <LABEL>
-                                         [<label-list>]
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepLabelUpdateVer1.class);
-
-    //Either PceLabelDownload or PceLabelMap is mandatory.
-    //label Download
-    private PcepLabelDownload labelDownload;
-    private boolean isLabelDownloadSet;
-    //label Map
-    private PcepLabelMap labelMap;
-    private boolean isLabelMapSet;
-
-    /**
-     * Constructor to reset parameters.
-     */
-    public PcepLabelUpdateVer1() {
-        this.labelDownload = null;
-        this.isLabelDownloadSet = false;
-        this.labelMap = null;
-        this.isLabelMapSet = false;
-    }
-
-    /**
-     * Constructor to initialize PCEP label download.
-     *
-     * @param labelDownload PCEP label download
-     */
-    public PcepLabelUpdateVer1(PcepLabelDownload labelDownload) {
-        this.labelDownload = labelDownload;
-        this.isLabelDownloadSet = true;
-        this.labelMap = null;
-        this.isLabelMapSet = false;
-    }
-
-    /**
-     * Constructor to initialize PCEP label map.
-     *
-     * @param labelMap PCEP label map
-     */
-    public PcepLabelUpdateVer1(PcepLabelMap labelMap) {
-        this.labelDownload = null;
-        this.isLabelDownloadSet = false;
-        this.labelMap = labelMap;
-        this.isLabelMapSet = true;
-    }
-
-    /**
-     * builder class for PCEP label update.
-     */
-    static class Builder implements PcepLabelUpdate.Builder {
-
-        private PcepLabelDownload labelDownload;
-        private boolean isLabelDownloadSet;
-        private PcepLabelMap labelMap;
-        private boolean isLabelMapSet;
-
-        @Override
-        public PcepLabelUpdate build() throws PcepParseException {
-
-            if (isLabelDownloadSet) {
-                return new PcepLabelUpdateVer1(labelDownload);
-            }
-            if (isLabelMapSet) {
-                return new PcepLabelUpdateVer1(labelMap);
-            }
-
-            return new PcepLabelUpdateVer1();
-        }
-
-        @Override
-        public Builder setLabelDownload(PcepLabelDownload labelDownload) {
-            this.labelDownload = labelDownload;
-            this.isLabelDownloadSet = true;
-            return this;
-        }
-
-        @Override
-        public PcepLabelDownload getLabelDownload() {
-            return labelDownload;
-        }
-
-        @Override
-        public Builder setLabelMap(PcepLabelMap labelMap) {
-            this.labelMap = labelMap;
-            this.isLabelMapSet = true;
-            return this;
-        }
-
-        @Override
-        public PcepLabelMap getLabelMap() {
-            return labelMap;
-        }
-    }
-
-    /**
-     * Reads PcepLabels from the byte stream received from channel buffer.
-     *
-     * @param cb of type channel buffer.
-     * @return PcepLabelUpdate object.
-     * @throws PcepParseException when fails to read from channel buffer
-     */
-    public static PcepLabelUpdate read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepLabelUpdateVer1 pceLabelUpdate = new PcepLabelUpdateVer1();
-
-        PcepSrpObject srpObject;
-        PcepObjectHeader tempObjHeader;
-
-        //read SRP mandatory Object
-        srpObject = PcepSrpObjectVer1.read(cb);
-
-        //checking next object
-        cb.markReaderIndex();
-
-        tempObjHeader = PcepObjectHeader.read(cb);
-        cb.resetReaderIndex();
-
-        if (tempObjHeader.getObjClass() == PcepLspObjectVer1.LSP_OBJ_CLASS) {
-
-            //now it is belong to <pce-label-download>
-            PcepLabelDownload labelDownload = new PcepLabelDownload();
-
-            //set SRP
-            labelDownload.setSrpObject(srpObject);
-
-            //read and set LSP
-            labelDownload.setLspObject(PcepLspObjectVer1.read(cb));
-
-            //<label-list>
-            LinkedList<PcepLabelObject> llLabelList = new LinkedList<>();
-            PcepLabelObject labelObject;
-
-            while (0 < cb.readableBytes()) {
-
-                cb.markReaderIndex();
-                tempObjHeader = PcepObjectHeader.read(cb);
-                cb.resetReaderIndex();
-
-                if (tempObjHeader.getObjClass() != PcepLabelObjectVer1.LABEL_OBJ_CLASS) {
-                    break;
-                }
-                labelObject = PcepLabelObjectVer1.read(cb);
-                llLabelList.add(labelObject);
-            }
-            labelDownload.setLabelList(llLabelList);
-            pceLabelUpdate.setLabelDownload(labelDownload);
-        } else if (tempObjHeader.getObjClass() == PcepLabelObjectVer1.LABEL_OBJ_CLASS) {
-            //belong to <pce-label-map>
-            PcepLabelMap labelMap = new PcepLabelMap();
-
-            //set SRP Object
-            labelMap.setSrpObject(srpObject);
-
-            //read and set Label Object
-            labelMap.setLabelObject(PcepLabelObjectVer1.read(cb));
-
-            cb.markReaderIndex();
-            tempObjHeader = PcepObjectHeader.read(cb);
-            cb.resetReaderIndex();
-
-            PcepFecObject fecObject = null;
-            switch (tempObjHeader.getObjType()) {
-            case PcepFecObjectIPv4Ver1.FEC_OBJ_TYPE:
-                fecObject = PcepFecObjectIPv4Ver1.read(cb);
-                break;
-            case PcepFecObjectIPv6Ver1.FEC_OBJ_TYPE:
-                fecObject = PcepFecObjectIPv6Ver1.read(cb);
-                break;
-            case PcepFecObjectIPv4AdjacencyVer1.FEC_OBJ_TYPE:
-                fecObject = PcepFecObjectIPv4AdjacencyVer1.read(cb);
-                break;
-            case PcepFecObjectIPv6AdjacencyVer1.FEC_OBJ_TYPE:
-                fecObject = PcepFecObjectIPv6AdjacencyVer1.read(cb);
-                break;
-            case PcepFecObjectIPv4UnnumberedAdjacencyVer1.FEC_OBJ_TYPE:
-                fecObject = PcepFecObjectIPv4UnnumberedAdjacencyVer1.read(cb);
-                break;
-            default:
-                throw new PcepParseException("Unkown FEC object type " + tempObjHeader.getObjType());
-            }
-            labelMap.setFecObject(fecObject);
-            pceLabelUpdate.setLabelMap(labelMap);
-        } else {
-            throw new PcepParseException(
-                    "Either <pce-label-download> or <pce-label-map> should be present. Received Class: "
-                            + tempObjHeader.getObjClass());
-        }
-        return pceLabelUpdate;
-    }
-
-    @Override
-    public void write(ChannelBuffer cb) throws PcepParseException {
-
-        if ((labelDownload != null) && (labelMap != null)) {
-            throw new PcepParseException("Label Download and Label Map both can't be present.");
-        }
-
-        if ((labelDownload == null) && (labelMap == null)) {
-            throw new PcepParseException("Either Label Download or Label Map should be present.");
-        }
-
-        if (labelDownload != null) {
-
-            PcepLspObject lspObject;
-            PcepSrpObject srpObject;
-            PcepLabelObject labelObject;
-            LinkedList<PcepLabelObject> llLabelList;
-
-            srpObject = labelDownload.getSrpObject();
-            if (srpObject == null) {
-                throw new PcepParseException("SRP Object is mandatory object for Label Download.");
-            } else {
-                srpObject.write(cb);
-            }
-
-            lspObject = labelDownload.getLspObject();
-            if (lspObject == null) {
-                throw new PcepParseException("LSP Object is mandatory object for Label Download.");
-            } else {
-                lspObject.write(cb);
-            }
-
-            llLabelList = labelDownload.getLabelList();
-            if (llLabelList == null || llLabelList.isEmpty()) {
-                throw new PcepParseException("Label list is mandatory object for Label Download.");
-            } else {
-                ListIterator<PcepLabelObject> listIterator = llLabelList.listIterator();
-                while (listIterator.hasNext()) {
-                    labelObject = listIterator.next();
-                    labelObject.write(cb);
-                }
-            }
-        }
-
-        if (labelMap != null) {
-
-            PcepSrpObject srpObject;
-            PcepLabelObject labelObject;
-            PcepFecObject fecObject;
-
-            srpObject = labelMap.getSrpObject();
-            if (srpObject == null) {
-                throw new PcepParseException("SRP Object is mandatory object for Label map.");
-            } else {
-                srpObject.write(cb);
-            }
-            labelObject = labelMap.getLabelObject();
-            if (labelObject == null) {
-                throw new PcepParseException("label Object is mandatory object for Label map.");
-            } else {
-                labelObject.write(cb);
-            }
-            fecObject = labelMap.getFecObject();
-            if (fecObject == null) {
-                throw new PcepParseException("fec Object is mandatory object for Label map.");
-            } else {
-                fecObject.write(cb);
-            }
-        }
-    }
-
-    @Override
-    public void setLabelDownload(PcepLabelDownload labelDownload) {
-        if (this.isLabelMapSet) {
-            return;
-        }
-        this.labelDownload = labelDownload;
-        this.isLabelDownloadSet = true;
-    }
-
-    @Override
-    public PcepLabelDownload getLabelDownload() {
-        return this.labelDownload;
-    }
-
-    @Override
-    public void setLabelMap(PcepLabelMap labelMap) {
-        if (this.isLabelDownloadSet) {
-            return;
-        }
-        this.labelMap = labelMap;
-        this.isLabelMapSet = true;
-    }
-
-    @Override
-    public PcepLabelMap getLabelMap() {
-        return this.labelMap;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("LabelDownload", labelDownload)
-                .add("LabelMap", labelMap)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspObjectVer1.java
deleted file mode 100644
index 2cf184d..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspObjectVer1.java
+++ /dev/null
@@ -1,618 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepLspObject;
-import org.onosproject.pcepio.types.PcepErrorDetailInfo;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.onosproject.pcepio.types.StatefulIPv4LspIdentifiersTlv;
-import org.onosproject.pcepio.types.StatefulLspDbVerTlv;
-import org.onosproject.pcepio.types.StatefulLspErrorCodeTlv;
-import org.onosproject.pcepio.types.StatefulRsvpErrorSpecTlv;
-import org.onosproject.pcepio.types.SymbolicPathNameTlv;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP lsp object.
- */
-public class PcepLspObjectVer1 implements PcepLspObject {
-
-    /*
-     message format.
-     Reference : draft-ietf-pce-stateful-pce-11, section 7.3.
-      0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     | Object-Class  |   OT  |Res|P|I|   Object Length (bytes)       |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                PLSP-ID                |  Flag |C|    O|A|R|S|D|
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     //                        TLVs                                 //
-     |                                                               |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-                     The LSP Object format
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepLspObjectVer1.class);
-
-    public static final byte LSP_OBJ_TYPE = 1;
-    public static final byte LSP_OBJ_CLASS = 32;
-    public static final byte LSP_OBJECT_VERSION = 1;
-
-    // LSP_OBJ_MINIMUM_LENGTH = CommonHeaderLen(4)+ LspObjectHeaderLen(4)+TlvAssumedMinLength(8)
-    public static final short LSP_OBJ_MINIMUM_LENGTH = 16;
-
-    public static final int DEFAULT_PLSPID = 0;
-    public static final byte DEFAULT_OFLAG = 1;
-    public static final boolean DEFAULT_AFLAG = false;
-    public static final boolean DEFAULT_RFLAG = false;
-    public static final boolean DEFAULT_SFLAG = false;
-    public static final boolean DEFAULT_DFLAG = false;
-    public static final boolean DEFAULT_CFLAG = false;
-    public static final int OBJECT_HEADER_LENGTH = 4;
-    public static final int PLSPID_SHIFT_VALUE = 12;
-    public static final int CFLAG_SHIFT_VALUE = 7;
-    public static final int OFLAG_SHIFT_VALUE = 4;
-    public static final int AFLAG_SHIFT_VALUE = 3;
-    public static final int RFLAG_SHIFT_VALUE = 2;
-    public static final int SFLAG_SHIFT_VALUE = 1;
-    public static final int PLSPID_TEMP_SHIFT_VALUE = 0xFFFFF000;
-    public static final int CFLAG_TEMP_SHIFT_VALUE = 0x80;
-    public static final int OFLAG_TEMP_SHIFT_VALUE = 0x70;
-    public static final int AFLAG_TEMP_SHIFT_VALUE = 0x08;
-    public static final int RFLAG_TEMP_SHIFT_VALUE = 0x04;
-    public static final int SFLAG_TEMP_SHIFT_VALUE = 0x02;
-    public static final int DFLAG_TEMP_SHIFT_VALUE = 0x01;
-    public static final int BIT_SET = 1;
-    public static final int BIT_RESET = 0;
-    public static final int MINIMUM_COMMON_HEADER_LENGTH = 4;
-
-    static final PcepObjectHeader DEFAULT_LSP_OBJECT_HEADER = new PcepObjectHeader(LSP_OBJ_CLASS, LSP_OBJ_TYPE,
-            PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, LSP_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader lspObjHeader;
-    private int iPlspId;
-    // 3-bits
-    private byte yOFlag;
-    private boolean bAFlag;
-    private boolean bRFlag;
-    private boolean bSFlag;
-    private boolean bDFlag;
-    private boolean bCFlag;
-
-    // Optional TLV
-    private LinkedList<PcepValueType> llOptionalTlv;
-
-    /**
-     * Constructor to initialize all the member variables.
-     *
-     * @param lspObjHeader lsp object header
-     * @param iPlspId plsp id
-     * @param yOFlag O flag
-     * @param bAFlag A flag
-     * @param bRFlag R flag
-     * @param bSFlag S flag
-     * @param bDFlag D flag
-     * @param bCFlag C flag
-     * @param llOptionalTlv list of optional tlv
-     */
-    public PcepLspObjectVer1(PcepObjectHeader lspObjHeader, int iPlspId, byte yOFlag, boolean bAFlag, boolean bRFlag,
-            boolean bSFlag, boolean bDFlag, boolean bCFlag, LinkedList<PcepValueType> llOptionalTlv) {
-
-        this.lspObjHeader = lspObjHeader;
-        this.iPlspId = iPlspId;
-        this.yOFlag = yOFlag;
-        this.bAFlag = bAFlag;
-        this.bRFlag = bRFlag;
-        this.bSFlag = bSFlag;
-        this.bDFlag = bDFlag;
-        this.bCFlag = bCFlag;
-        this.llOptionalTlv = llOptionalTlv;
-    }
-
-    /**
-     * Sets lsp Object Header.
-     *
-     * @param obj lsp object header
-     */
-    public void setLspObjHeader(PcepObjectHeader obj) {
-        this.lspObjHeader = obj;
-    }
-
-    @Override
-    public void setPlspId(int iPlspId) {
-        this.iPlspId = iPlspId;
-    }
-
-    @Override
-    public void setCFlag(boolean bCFlag) {
-        this.bCFlag = bCFlag;
-    }
-
-    @Override
-    public void setOFlag(byte yOFlag) {
-        this.yOFlag = yOFlag;
-    }
-
-    @Override
-    public void setAFlag(boolean bAFlag) {
-        this.bAFlag = bAFlag;
-    }
-
-    @Override
-    public void setRFlag(boolean bRFlag) {
-        this.bRFlag = bRFlag;
-    }
-
-    @Override
-    public void setSFlag(boolean bSFlag) {
-        this.bSFlag = bSFlag;
-    }
-
-    @Override
-    public void setDFlag(boolean bDFlag) {
-        this.bDFlag = bDFlag;
-    }
-
-    /**
-     * Returns lsp object header.
-     *
-     * @return lspObjHeader
-     */
-    public PcepObjectHeader getLspObjHeader() {
-        return this.lspObjHeader;
-    }
-
-    @Override
-    public int getPlspId() {
-        return this.iPlspId;
-    }
-
-    @Override
-    public boolean getCFlag() {
-        return this.bCFlag;
-    }
-
-    @Override
-    public byte getOFlag() {
-        return this.yOFlag;
-    }
-
-    @Override
-    public boolean getAFlag() {
-        return this.bAFlag;
-    }
-
-    @Override
-    public boolean getRFlag() {
-        return this.bRFlag;
-    }
-
-    @Override
-    public boolean getSFlag() {
-        return this.bSFlag;
-    }
-
-    @Override
-    public boolean getDFlag() {
-        return this.bDFlag;
-    }
-
-    @Override
-    public LinkedList<PcepValueType> getOptionalTlv() {
-        return this.llOptionalTlv;
-    }
-
-    @Override
-    public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) {
-        this.llOptionalTlv = llOptionalTlv;
-    }
-
-    /**
-     * Parse channel buffer and returns object of PcepLspObject.
-     *
-     * @param cb of type channel buffer
-     * @return object of  PcepLspObject
-     * @throws PcepParseException when lsp object is not present in channel buffer
-     */
-    public static PcepLspObject read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepObjectHeader lspObjHeader;
-        int iPlspId;
-        // 3-bits
-        byte yOFlag;
-        boolean bAFlag;
-        boolean bRFlag;
-        boolean bSFlag;
-        boolean bDFlag;
-        boolean bCFlag;
-
-        // Optional TLV
-        LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>();
-
-        lspObjHeader = PcepObjectHeader.read(cb);
-
-        if (lspObjHeader.getObjClass() != PcepLspObjectVer1.LSP_OBJ_CLASS) {
-            throw new PcepParseException(PcepErrorDetailInfo.ERROR_TYPE_6, PcepErrorDetailInfo.ERROR_VALUE_8);
-        }
-        //take only LspObject buffer.
-        ChannelBuffer tempCb = cb.readBytes(lspObjHeader.getObjLen() - OBJECT_HEADER_LENGTH);
-
-        Integer iTemp = tempCb.readInt();
-        iPlspId = (iTemp & PLSPID_TEMP_SHIFT_VALUE) >> PLSPID_SHIFT_VALUE;
-        bCFlag = ((iTemp & CFLAG_TEMP_SHIFT_VALUE) >> CFLAG_SHIFT_VALUE) > 0;
-        Integer iX = (iTemp & OFLAG_TEMP_SHIFT_VALUE) >> OFLAG_SHIFT_VALUE;
-        yOFlag = iX.byteValue();
-        iX = (iTemp & AFLAG_TEMP_SHIFT_VALUE) >> AFLAG_SHIFT_VALUE;
-        bAFlag = iX > 0;
-        iX = (iTemp & RFLAG_TEMP_SHIFT_VALUE) >> RFLAG_SHIFT_VALUE;
-        bRFlag = iX > 0;
-        iX = (iTemp & SFLAG_TEMP_SHIFT_VALUE) >> SFLAG_SHIFT_VALUE;
-        bSFlag = iX > 0;
-        iX = iTemp & DFLAG_TEMP_SHIFT_VALUE;
-        bDFlag = iX > 0;
-
-        // parse optional TLV
-        llOptionalTlv = parseOptionalTlv(tempCb);
-
-        return new PcepLspObjectVer1(lspObjHeader, iPlspId, yOFlag, bAFlag, bRFlag, bSFlag, bDFlag, bCFlag,
-                                     llOptionalTlv);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        //write Object header
-        int objStartIndex = cb.writerIndex();
-
-        int objLenIndex = lspObjHeader.write(cb);
-
-        if (objLenIndex <= 0) {
-            throw new PcepParseException("Failed to write lsp object header. Index " + objLenIndex);
-        }
-
-        int iTemp = iPlspId << PLSPID_SHIFT_VALUE;
-
-        iTemp = iTemp | (((bCFlag) ? BIT_SET : BIT_RESET) << CFLAG_SHIFT_VALUE);
-
-        iTemp = iTemp | (yOFlag << OFLAG_SHIFT_VALUE);
-        byte bFlag;
-        iTemp = bAFlag ? (iTemp | AFLAG_TEMP_SHIFT_VALUE) : iTemp;
-
-        bFlag = (bRFlag) ? (byte) BIT_SET : BIT_RESET;
-        iTemp = iTemp | (bFlag << RFLAG_SHIFT_VALUE);
-        bFlag = (bSFlag) ? (byte) BIT_SET : BIT_RESET;
-        iTemp = iTemp | (bFlag << SFLAG_SHIFT_VALUE);
-        bFlag = (bDFlag) ? (byte) BIT_SET : BIT_RESET;
-        iTemp = iTemp | bFlag;
-        cb.writeInt(iTemp);
-
-        // Add optional TLV
-        packOptionalTlv(cb);
-
-        //Update object length now
-        int length = cb.writerIndex() - objStartIndex;
-        //will be helpful during print().
-        lspObjHeader.setObjLen((short) length);
-        // As per RFC the length of object should be
-        // multiples of 4
-
-        cb.setShort(objLenIndex, (short) length);
-
-        return length;
-    }
-
-    /**
-     * Returns Linked list of optional tlvs.
-     *
-     * @param cb of channel buffer.
-     * @return list of optional tlvs
-     * @throws PcepParseException when unsupported tlv is received
-     */
-    protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException {
-
-        LinkedList<PcepValueType> llOutOptionalTlv;
-
-        llOutOptionalTlv = new LinkedList<>();
-
-        while (MINIMUM_COMMON_HEADER_LENGTH <= cb.readableBytes()) {
-
-            PcepValueType tlv = null;
-            short hType = cb.readShort();
-            short hLength = cb.readShort();
-            int iValue = 0;
-
-            switch (hType) {
-
-            case StatefulIPv4LspIdentifiersTlv.TYPE:
-                tlv = StatefulIPv4LspIdentifiersTlv.read(cb);
-                break;
-            case StatefulLspErrorCodeTlv.TYPE:
-                iValue = cb.readInt();
-                tlv = new StatefulLspErrorCodeTlv(iValue);
-                break;
-            case StatefulRsvpErrorSpecTlv.TYPE:
-                tlv = StatefulRsvpErrorSpecTlv.read(cb);
-                break;
-            case SymbolicPathNameTlv.TYPE:
-                tlv = SymbolicPathNameTlv.read(cb, hLength);
-                break;
-            case StatefulLspDbVerTlv.TYPE:
-                tlv = StatefulLspDbVerTlv.read(cb);
-                break;
-            default:
-                // Skip the unknown TLV.
-                cb.skipBytes(hLength);
-                log.info("Received unsupported TLV type :" + hType + " in LSP object.");
-            }
-            // Check for the padding
-            int pad = hLength % 4;
-            if (0 < pad) {
-                pad = 4 - pad;
-                if (pad <= cb.readableBytes()) {
-                    cb.skipBytes(pad);
-                }
-            }
-
-            if (tlv != null) {
-                llOutOptionalTlv.add(tlv);
-            }
-        }
-
-        if (0 < cb.readableBytes()) {
-
-            throw new PcepParseException("Optional Tlv parsing error. Extra bytes received.");
-        }
-        return llOutOptionalTlv;
-    }
-
-    /**
-     * returns writer index.
-     *
-     * @param cb of type channel buffer
-     * @return length of bytes written to channel buffer
-     */
-    protected int packOptionalTlv(ChannelBuffer cb) {
-
-        ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator();
-        int startIndex = cb.writerIndex();
-
-        while (listIterator.hasNext()) {
-            PcepValueType tlv = listIterator.next();
-
-            if (tlv == null) {
-                log.debug("tlv is null from OptionalTlv list");
-                continue;
-            }
-
-            tlv.write(cb);
-
-            // need to take care of padding
-            int pad = tlv.getLength() % 4;
-
-            if (0 != pad) {
-                pad = 4 - pad;
-                for (int i = 0; i < pad; ++i) {
-                    cb.writeByte((byte) 0);
-                }
-            }
-        }
-
-        return cb.writerIndex() - startIndex;
-    }
-
-    /**
-     * Builder class for PCEP lsp Object.
-     */
-    public static class Builder implements PcepLspObject.Builder {
-
-        private boolean bIsHeaderSet = false;
-        private boolean bIsPlspIdSet = false;
-        private boolean bIsOFlagSet = false;
-        private boolean bIsRFlagSet = false;
-        private boolean bIsAFlagSet = false;
-        private boolean bIsDFlagSet = false;
-        private boolean bIsSFlagSet = false;
-        private boolean bIsCFlagSet = false;
-
-        private PcepObjectHeader lspObjHeader;
-        private byte yOFlag;
-        private boolean bAFlag;
-        private boolean bDFlag;
-        private boolean bSFlag;
-        private boolean bRFlag;
-        private boolean bCFlag;
-        LinkedList<PcepValueType> llOptionalTlv = null;
-
-        private int plspId;
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        @Override
-        public PcepLspObject build() {
-            PcepObjectHeader lspObjHeader = this.bIsHeaderSet ? this.lspObjHeader : DEFAULT_LSP_OBJECT_HEADER;
-
-            int plspId = this.bIsPlspIdSet ? this.plspId : DEFAULT_PLSPID;
-            byte yOFlag = this.bIsOFlagSet ? this.yOFlag : DEFAULT_OFLAG;
-            boolean bAFlag = this.bIsAFlagSet ? this.bAFlag : DEFAULT_AFLAG;
-            boolean bRFlag = this.bIsRFlagSet ? this.bRFlag : DEFAULT_RFLAG;
-            boolean bSFlag = this.bIsSFlagSet ? this.bSFlag : DEFAULT_SFLAG;
-            boolean bDFlag = this.bIsDFlagSet ? this.bDFlag : DEFAULT_DFLAG;
-            boolean bCFlag = this.bIsCFlagSet ? this.bCFlag : DEFAULT_CFLAG;
-
-            if (bIsPFlagSet) {
-                lspObjHeader.setPFlag(bPFlag);
-            }
-
-            if (bIsIFlagSet) {
-                lspObjHeader.setIFlag(bIFlag);
-            }
-
-            return new PcepLspObjectVer1(lspObjHeader, plspId, yOFlag, bAFlag, bRFlag, bSFlag, bDFlag, bCFlag,
-                                         llOptionalTlv);
-        }
-
-        @Override
-        public PcepObjectHeader getLspObjHeader() {
-            return this.lspObjHeader;
-        }
-
-        @Override
-        public Builder setLspObjHeader(PcepObjectHeader obj) {
-            this.lspObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public int getPlspId() {
-            return this.plspId;
-        }
-
-        @Override
-        public Builder setPlspId(int value) {
-            this.plspId = value;
-            this.bIsPlspIdSet = true;
-            return this;
-        }
-
-        @Override
-        public boolean getCFlag() {
-            return this.bCFlag;
-        }
-
-        @Override
-        public Builder setCFlag(boolean value) {
-            this.bCFlag = value;
-            this.bIsCFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public byte getOFlag() {
-            return this.yOFlag;
-        }
-
-        @Override
-        public Builder setOFlag(byte value) {
-            this.yOFlag = value;
-            this.bIsOFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public boolean getAFlag() {
-            return this.bAFlag;
-        }
-
-        @Override
-        public Builder setAFlag(boolean value) {
-            this.bAFlag = value;
-            this.bIsAFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public boolean getRFlag() {
-            return this.bRFlag;
-        }
-
-        @Override
-        public Builder setRFlag(boolean value) {
-            this.bRFlag = value;
-            this.bIsRFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public boolean getSFlag() {
-            return this.bSFlag;
-        }
-
-        @Override
-        public Builder setSFlag(boolean value) {
-            this.bSFlag = value;
-            this.bIsSFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public boolean getDFlag() {
-            return this.bDFlag;
-        }
-
-        @Override
-        public Builder setDFlag(boolean value) {
-            this.bDFlag = value;
-            this.bIsDFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) {
-            this.llOptionalTlv = llOptionalTlv;
-            return this;
-        }
-
-        @Override
-        public LinkedList<PcepValueType> getOptionalTlv() {
-            return this.llOptionalTlv;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("PlspIDValue", iPlspId)
-                .add("CFlag", bCFlag)
-                .add("OFlag", yOFlag)
-                .add("AFlag", bAFlag)
-                .add("RFlag", bRFlag)
-                .add("SFlag", bSFlag)
-                .add("DFlag", bDFlag)
-                .add("OptionalTlvList", llOptionalTlv)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspaObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspaObjectVer1.java
deleted file mode 100644
index 67e0942..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspaObjectVer1.java
+++ /dev/null
@@ -1,529 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepLspaObject;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP label Object .
- */
-public class PcepLspaObjectVer1 implements PcepLspaObject {
-
-    /* LSPA Object Body Format
-
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                       Exclude-any                             |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                       Include-any                             |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                       Include-all                             |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |  Setup Prio   |  Holding Prio |     Flags   |L|   Reserved    |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                                                               |
-    |                      Optional TLVs                            |
-    |                                                               |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepLspaObjectVer1.class);
-
-    public static final byte LSPA_OBJ_TYPE = 1;
-    public static final byte LSPA_OBJ_CLASS = 9;
-    public static final byte LSPA_OBJECT_VERSION = 1;
-    public static final short LSPA_OBJ_MINIMUM_LENGTH = 20;
-    public static final int OBJECT_HEADER_LENGTH = 4;
-
-    static final PcepObjectHeader DEFAULT_LSPA_OBJECT_HEADER = new PcepObjectHeader(LSPA_OBJ_CLASS, LSPA_OBJ_TYPE,
-            PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, LSPA_OBJ_MINIMUM_LENGTH);
-
-    public static final int SETUP_PRIORITY_SHIFT_VALUE = 24;
-    public static final int HOLD_PRIORITY_SHIFT_VALUE = 16;
-    public static final int BFLAG_SHIFT_VALUE = 8;
-    public static final int LFLAG_SET = 1;
-    public static final int LFLAG_RESET = 0;
-    private PcepObjectHeader lspaObjHeader;
-    private int iExcludeAny;
-    private int iIncludeAny;
-    private int iIncludeAll;
-    private byte cSetupPriority;
-    private byte cHoldPriority;
-    private boolean bLFlag;
-    private LinkedList<PcepValueType> llOptionalTlv; //Optional TLV
-
-    /**
-     * Constructor to initialize member variables.
-     *
-     * @param lspaObjHeader lspa object header
-     * @param bLFlag b l flag
-     * @param iExcludeAny excludeAny value
-     * @param iIncludeAny includeAny value
-     * @param iIncludeAll includeAll value
-     * @param cSetupPriority setup priority value
-     * @param cHoldPriority hold priority value
-     * @param llOptionalTlv list of optional tlv
-     */
-    public PcepLspaObjectVer1(PcepObjectHeader lspaObjHeader, boolean bLFlag, int iExcludeAny, int iIncludeAny,
-            int iIncludeAll, byte cSetupPriority, byte cHoldPriority, LinkedList<PcepValueType> llOptionalTlv) {
-
-        this.lspaObjHeader = lspaObjHeader;
-        this.bLFlag = bLFlag;
-        this.iExcludeAny = iExcludeAny;
-        this.iIncludeAny = iIncludeAny;
-        this.iIncludeAll = iIncludeAll;
-        this.cSetupPriority = cSetupPriority;
-        this.cHoldPriority = cHoldPriority;
-        this.llOptionalTlv = llOptionalTlv;
-    }
-
-    /**
-     * Sets Object Header.
-     *
-     * @param obj lspa object header
-     */
-    public void setLspaObjHeader(PcepObjectHeader obj) {
-        this.lspaObjHeader = obj;
-    }
-
-    @Override
-    public void setExcludeAny(int iExcludeAny) {
-        this.iExcludeAny = iExcludeAny;
-    }
-
-    @Override
-    public void setIncludeAny(int iIncludeAny) {
-        this.iIncludeAny = iIncludeAny;
-    }
-
-    @Override
-    public void setSetupPriority(byte cSetupPriority) {
-        this.cSetupPriority = cSetupPriority;
-    }
-
-    @Override
-    public void setHoldPriority(byte cHoldPriority) {
-        this.cHoldPriority = cHoldPriority;
-    }
-
-    @Override
-    public void setLFlag(boolean bLFlag) {
-        this.bLFlag = bLFlag;
-    }
-
-    /**
-     * Returns lspa Object Header.
-     *
-     * @return lspa Object Header
-     */
-    public PcepObjectHeader getLspaObjHeader() {
-        return this.lspaObjHeader;
-    }
-
-    @Override
-    public int getExcludeAny() {
-        return this.iExcludeAny;
-    }
-
-    @Override
-    public int getIncludeAny() {
-        return this.iIncludeAny;
-    }
-
-    @Override
-    public int getIncludeAll() {
-        return this.iIncludeAll;
-    }
-
-    @Override
-    public byte getSetupPriority() {
-        return this.cSetupPriority;
-    }
-
-    @Override
-    public byte getHoldPriority() {
-        return this.cHoldPriority;
-    }
-
-    @Override
-    public boolean getLFlag() {
-        return this.bLFlag;
-    }
-
-    @Override
-    public void setIncludeAll(int value) {
-        this.iIncludeAll = value;
-
-    }
-
-    @Override
-    public LinkedList<PcepValueType> getOptionalTlv() {
-        return this.llOptionalTlv;
-    }
-
-    @Override
-    public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) {
-        this.llOptionalTlv = llOptionalTlv;
-
-    }
-
-    /**
-     * Reads channel buffer and returns object of PcepLspaObject.
-     *
-     * @param cb of type channel buffer.
-     * @return object of PcepLspaObject
-     * @throws PcepParseException while parsing lspa object from channel buffer
-     */
-    public static PcepLspaObject read(ChannelBuffer cb) throws PcepParseException {
-
-        log.debug("LspaObject::read");
-        PcepObjectHeader lspaObjHeader;
-        int iExcludeAny;
-        int iIncludeAny;
-        int iIncludeAll;
-        byte cSetupPriority;
-        byte cHoldPriority;
-        boolean bLFlag;
-        byte flags;
-
-        // Optional TLV
-        LinkedList<PcepValueType> llOptionalTlv;
-
-        lspaObjHeader = PcepObjectHeader.read(cb);
-
-        //take only Lspa Object buffer.
-        ChannelBuffer tempCb = cb.readBytes(lspaObjHeader.getObjLen() - OBJECT_HEADER_LENGTH);
-        iExcludeAny = tempCb.readInt();
-        iIncludeAny = tempCb.readInt();
-        iIncludeAll = tempCb.readInt();
-        cSetupPriority = tempCb.readByte();
-        cHoldPriority = tempCb.readByte();
-        flags = tempCb.readByte();
-        tempCb.readByte();
-
-        bLFlag = (flags & (byte) LFLAG_SET) == LFLAG_SET;
-
-        llOptionalTlv = parseOptionalTlv(tempCb);
-
-        return new PcepLspaObjectVer1(lspaObjHeader, bLFlag, iExcludeAny, iIncludeAny, iIncludeAll, cSetupPriority,
-                cHoldPriority, llOptionalTlv);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        //write Object header
-        int objStartIndex = cb.writerIndex();
-
-        int objLenIndex = lspaObjHeader.write(cb);
-
-        if (objLenIndex <= 0) {
-            throw new PcepParseException("Failed to write lspa object header. Index " + objLenIndex);
-        }
-
-        cb.writeInt(iExcludeAny);
-        cb.writeInt(iIncludeAny);
-        cb.writeInt(iIncludeAll);
-
-        int iTemp = cSetupPriority << SETUP_PRIORITY_SHIFT_VALUE;
-        iTemp = iTemp | (cHoldPriority << HOLD_PRIORITY_SHIFT_VALUE);
-        byte bFlag;
-        bFlag = (bLFlag) ? (byte) LFLAG_SET : LFLAG_RESET;
-        iTemp = iTemp | (bFlag << BFLAG_SHIFT_VALUE);
-        cb.writeInt(iTemp);
-
-        // Add optional TLV
-        if (!packOptionalTlv(cb)) {
-            throw new PcepParseException("Faild to write lspa objects tlv to channel buffer");
-        }
-
-        short length = (short) (cb.writerIndex() - objStartIndex);
-
-        lspaObjHeader.setObjLen(length); //will be helpful during print().
-
-        //As per RFC the length of object should be multiples of 4
-        short pad = (short) (length % 4);
-
-        if (pad != 0) {
-            pad = (short) (4 - pad);
-            for (int i = 0; i < pad; i++) {
-                cb.writeByte((byte) 0);
-            }
-            length = (short) (length + pad);
-        }
-        cb.setShort(objLenIndex, length);
-        return cb.writerIndex();
-    }
-
-    /**
-     * Parse list of optional tlvs.
-     *
-     * @param cb channel buffer
-     * @return list of optional tlvs.
-     * @throws PcepParseException when fails to parse optional tlv list.
-     */
-    public static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException {
-
-        LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>();
-
-        return llOutOptionalTlv;
-    }
-
-    /**
-     * Writes optional tlvs to channel buffer.
-     *
-     * @param cb channel buffer
-     * @return true
-     */
-    protected boolean packOptionalTlv(ChannelBuffer cb) {
-        int hTlvType;
-        int hTlvLength;
-
-        ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator();
-        while (listIterator.hasNext()) {
-            PcepValueType tlv = listIterator.next();
-            if (tlv == null) {
-                log.debug("Warning: tlv is null from OptionalTlv list");
-                continue;
-            }
-            hTlvType = tlv.getType();
-            hTlvLength = tlv.getLength();
-            if (0 == hTlvLength) {
-                log.debug("Warning: invalid length in tlv of OptionalTlv list");
-                continue;
-            }
-
-            cb.writeShort(hTlvType);
-            cb.writeShort(hTlvLength);
-
-            switch (hTlvType) {
-            //TODO: optional TLV for LSPA to be added
-
-            default:
-                log.debug("Warning: PcepLspaObject: unknown tlv");
-            }
-
-            // As per RFC the length of object should
-            // be multiples of 4
-            int pad = hTlvLength % 4;
-
-            if (0 < pad) {
-                pad = 4 - pad;
-                if (pad <= cb.readableBytes()) {
-                    cb.skipBytes(pad);
-                }
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Builder class for PCEP lspa object.
-     */
-    public static class Builder implements PcepLspaObject.Builder {
-        private boolean bIsHeaderSet = false;
-
-        private PcepObjectHeader lspaObjHeader;
-
-        private boolean bLFlag;
-        private int iExcludeAny;
-        private boolean bIsExcludeAnySet = false;
-        private int iIncludeAny;
-        private boolean bIsIncludeAnySet = false;
-        private int iIncludeAll;
-        private boolean bIsIncludeAllSet = false;
-        private byte cSetupPriority;
-        private boolean bIsSetupPrioritySet = false;
-        private byte cHoldPriority;
-        private boolean bIsHoldPrioritySet = false;
-        private LinkedList<PcepValueType> llOptionalTlv;
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        @Override
-        public PcepLspaObject build() throws PcepParseException {
-
-            PcepObjectHeader lspaObjHeader = this.bIsHeaderSet ? this.lspaObjHeader : DEFAULT_LSPA_OBJECT_HEADER;
-
-            if (!this.bIsExcludeAnySet) {
-                throw new PcepParseException("ExcludeAny NOT Set while building PcepLspaObject.");
-            }
-            if (!this.bIsIncludeAnySet) {
-                throw new PcepParseException("IncludeAny NOT Set while building PcepLspaObject.");
-            }
-            if (!this.bIsIncludeAllSet) {
-                throw new PcepParseException("IncludeAll NOT Set while building PcepLspaObject.");
-            }
-            if (!this.bIsSetupPrioritySet) {
-                throw new PcepParseException("Setup Priority NOT Set while building PcepLspaObject.");
-            }
-            if (!this.bIsHoldPrioritySet) {
-                throw new PcepParseException("Hold Priority NOT Set while building PcepLspaObject.");
-            }
-
-            if (bIsPFlagSet) {
-                lspaObjHeader.setPFlag(bPFlag);
-            }
-
-            if (bIsIFlagSet) {
-                lspaObjHeader.setIFlag(bIFlag);
-            }
-
-            return new PcepLspaObjectVer1(lspaObjHeader, bLFlag, iExcludeAny, iIncludeAny, iIncludeAll, cSetupPriority,
-                    cHoldPriority, llOptionalTlv);
-        }
-
-        @Override
-        public PcepObjectHeader getLspaObjHeader() {
-            return this.lspaObjHeader;
-        }
-
-        @Override
-        public Builder setLspaObjHeader(PcepObjectHeader obj) {
-            this.lspaObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public boolean getLFlag() {
-            return this.bLFlag;
-        }
-
-        @Override
-        public Builder setLFlag(boolean value) {
-            this.bLFlag = value;
-            return this;
-        }
-
-        @Override
-        public int getExcludeAny() {
-            return this.iExcludeAny;
-        }
-
-        @Override
-        public Builder setExcludeAny(int value) {
-            this.iExcludeAny = value;
-            this.bIsExcludeAnySet = true;
-            return this;
-        }
-
-        @Override
-        public int getIncludeAny() {
-            return this.iIncludeAny;
-        }
-
-        @Override
-        public Builder setIncludeAny(int value) {
-            this.iIncludeAny = value;
-            this.bIsIncludeAnySet = true;
-            return this;
-        }
-
-        @Override
-        public int getIncludeAll() {
-            return this.iIncludeAll;
-        }
-
-        @Override
-        public Builder setIncludeAll(int value) {
-            this.iIncludeAll = value;
-            this.bIsIncludeAllSet = true;
-            return this;
-        }
-
-        @Override
-        public byte getSetupPriority() {
-            return this.cSetupPriority;
-        }
-
-        @Override
-        public Builder setSetupPriority(byte value) {
-            this.cSetupPriority = value;
-            this.bIsSetupPrioritySet = true;
-            return this;
-        }
-
-        @Override
-        public byte getHoldPriority() {
-            return this.cHoldPriority;
-        }
-
-        @Override
-        public Builder setHoldPriority(byte value) {
-            this.cHoldPriority = value;
-            this.bIsHoldPrioritySet = true;
-            return this;
-        }
-
-        @Override
-        public LinkedList<PcepValueType> getOptionalTlv() {
-            return this.llOptionalTlv;
-        }
-
-        @Override
-        public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) {
-            this.llOptionalTlv = llOptionalTlv;
-
-            return this;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("LFlag", bLFlag)
-                .add("SetupPriority", cSetupPriority)
-                .add("HoldPriority", cHoldPriority)
-                .add("IncludeAll", iIncludeAll)
-                .add("IncludeAny", iIncludeAny)
-                .add("ExcludeAny", iExcludeAny)
-                .add("OptionalTlvList", llOptionalTlv)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMessageVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMessageVer1.java
deleted file mode 100644
index c2be8e5..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMessageVer1.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepFactories;
-import org.onosproject.pcepio.protocol.PcepMessage;
-import org.onosproject.pcepio.protocol.PcepMessageReader;
-import org.onosproject.pcepio.protocol.PcepType;
-import org.onosproject.pcepio.types.PcepErrorDetailInfo;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Provides PCEP messages.
- */
-public abstract class PcepMessageVer1 {
-
-    private static final Logger log = LoggerFactory.getLogger(PcepFactories.class);
-
-    // version: 1.0
-    public static final byte WIRE_VERSION = 1;
-    public static final int MINIMUM_LENGTH = 4;
-    public static final int PACKET_VERSION = 1;
-    public static final int SHIFT_FLAG = 5;
-    public static final int MINIMUM_COMMON_HEADER_LENGTH = 4;
-
-    public static final PcepMessageVer1.Reader READER = new Reader();
-
-    /**
-     * Reader class for reading PCEP messages from channel buffer.
-     */
-    static class Reader implements PcepMessageReader<PcepMessage> {
-        @Override
-        public PcepMessage readFrom(ChannelBuffer cb) throws PcepParseException, PcepOutOfBoundMessageException {
-
-            if (cb.readableBytes() < MINIMUM_LENGTH) {
-                throw new PcepParseException("Packet should have minimum length: " + MINIMUM_LENGTH);
-            }
-
-            try {
-                int start = cb.readerIndex();
-                // fixed value property version == 1
-                byte version = cb.readByte();
-                version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG);
-                if (version != (byte) PACKET_VERSION) {
-                    throw new PcepParseException("Wrong version. Expected=PcepVersion.Message_1(1), got=" + version);
-                }
-
-                byte type = cb.readByte();
-                short length = cb.readShort();
-                cb.readerIndex(start);
-
-                // Check the out-of-bound message.
-                // If the message is out-of-bound then throw PcepOutOfBoundException.
-                if ((length - MINIMUM_COMMON_HEADER_LENGTH) > cb.readableBytes()) {
-                    throw new PcepOutOfBoundMessageException("Message is out-of-bound.");
-                }
-
-                if (type == (byte) PcepType.OPEN.getType()) {
-                    log.debug("OPEN MESSAGE is received");
-                    return PcepOpenMsgVer1.READER.readFrom(cb.readBytes(length));
-                } else if (type == (byte) PcepType.KEEP_ALIVE.getType()) {
-                    log.debug("KEEPALIVE MESSAGE is received");
-                    return PcepKeepaliveMsgVer1.READER.readFrom(cb.readBytes(length));
-                } else if (type == (byte) PcepType.ERROR.getType()) {
-                    log.debug("ERROR MESSAGE is received");
-                    return PcepErrorMsgVer1.READER.readFrom(cb.readBytes(length));
-                } else if (type == (byte) PcepType.CLOSE.getType()) {
-                    log.debug("CLOSE MESSAGE is received");
-                    return PcepCloseMsgVer1.READER.readFrom(cb.readBytes(length));
-                } else if (type == (byte) PcepType.REPORT.getType()) {
-                    log.debug("REPORT MESSAGE is received");
-                    return PcepReportMsgVer1.READER.readFrom(cb.readBytes(length));
-                } else if (type == (byte) PcepType.UPDATE.getType()) {
-                    log.debug("UPDATE MESSAGE is received");
-                    return PcepUpdateMsgVer1.READER.readFrom(cb.readBytes(length));
-                } else if (type == (byte) PcepType.INITIATE.getType()) {
-                    log.debug("INITIATE MESSAGE is received");
-                    return PcepInitiateMsgVer1.READER.readFrom(cb.readBytes(length));
-                } else if (type == (byte) PcepType.LS_REPORT.getType()) {
-                    log.debug("LS REPORT MESSAGE is received");
-                    return PcepLSReportMsgVer1.READER.readFrom(cb.readBytes(length));
-                } else if (type == (byte) PcepType.LABEL_RANGE_RESERV.getType()) {
-                    log.debug("LABEL RANGE RESERVE MESSAGE is received");
-                    return PcepLabelRangeResvMsgVer1.READER.readFrom(cb.readBytes(length));
-                } else if (type == (byte) PcepType.LABEL_UPDATE.getType()) {
-                    log.debug("LABEL UPDATE MESSAGE is received");
-                    return PcepLabelUpdateMsgVer1.READER.readFrom(cb.readBytes(length));
-                } else {
-                    throw new PcepParseException("ERROR: UNKNOWN MESSAGE is received. Msg Type: " + type);
-                }
-            } catch (IndexOutOfBoundsException e) {
-                throw new PcepParseException(PcepErrorDetailInfo.ERROR_TYPE_1, PcepErrorDetailInfo.ERROR_VALUE_1);
-            }
-        }
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMetricObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMetricObjectVer1.java
deleted file mode 100644
index d149189..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMetricObjectVer1.java
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepMetricObject;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP metric object.
- */
-public class PcepMetricObjectVer1 implements PcepMetricObject {
-
-    /*
-     METRIC Object Body Format.
-
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |          Reserved             |    Flags  |C|B|       T       |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                          metric-value                         |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepMetricObjectVer1.class);
-
-    public static final byte METRIC_OBJ_TYPE = 1;
-    public static final byte METRIC_OBJ_CLASS = 6;
-    public static final byte METRIC_OBJECT_VERSION = 1;
-    public static final short METRIC_OBJ_MINIMUM_LENGTH = 12;
-    public static final int OBJECT_HEADER_LENGTH = 4;
-    public static final int IFLAG_SHIFT_VALUE = 9;
-    public static final int BTYPE_SHIFT_VALUE = 8;
-    public static final int CFLAG_SET = 1;
-    public static final int CFLAG_RESET = 0;
-    public static final int BFLAG_SET = 1;
-    public static final int BFLAG_RESET = 0;
-    public static final byte CFLAG_CHECK = 0x02;
-
-    public static final byte IGP_METRIC = 0x01;
-    public static final byte TE_METRIC = 0x02;
-    public static final byte HOP_COUNT_METRIC = 0x03;
-
-    static final PcepObjectHeader DEFAULT_METRIC_OBJECT_HEADER = new PcepObjectHeader(METRIC_OBJ_CLASS,
-            METRIC_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED,
-            METRIC_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader metricObjHeader;
-    private int iMetricVal;
-    private byte yFlag; // 6-flags
-    private boolean bCFlag;
-    private boolean bBFlag;
-    private byte bType;
-
-    /**
-     * Default constructor.
-     */
-    public PcepMetricObjectVer1() {
-        this.metricObjHeader = null;
-        this.iMetricVal = 0;
-        this.yFlag = 0;
-        this.bCFlag = false;
-        this.bBFlag = false;
-        this.bType = 0;
-
-    }
-
-    /**
-     * Constructor to initialize all member variables.
-     *
-     * @param metricObjHeader metric object header
-     * @param iMetricVal metric value
-     * @param yFlag Y flag
-     * @param bCFlag C flag
-     * @param bBFlag B flag
-     * @param bType Type value
-     */
-    public PcepMetricObjectVer1(PcepObjectHeader metricObjHeader, int iMetricVal, byte yFlag, boolean bCFlag,
-            boolean bBFlag, byte bType) {
-
-        this.metricObjHeader = metricObjHeader;
-        this.iMetricVal = iMetricVal;
-        this.yFlag = yFlag;
-        this.bCFlag = bCFlag;
-        this.bBFlag = bBFlag;
-        this.bType = bType;
-
-    }
-
-    @Override
-    public void setMetricVal(int value) {
-        this.iMetricVal = value;
-
-    }
-
-    @Override
-    public int getMetricVal() {
-        return this.iMetricVal;
-    }
-
-    @Override
-    public byte getYFlag() {
-        return this.yFlag;
-    }
-
-    @Override
-    public void setYFlag(byte value) {
-        this.yFlag = value;
-    }
-
-    @Override
-    public boolean getCFlag() {
-        return this.bCFlag;
-    }
-
-    @Override
-    public void setCFlag(boolean value) {
-        this.bCFlag = value;
-    }
-
-    @Override
-    public boolean getBFlag() {
-        return this.bBFlag;
-    }
-
-    @Override
-    public void setBFlag(boolean value) {
-        this.bBFlag = value;
-    }
-
-    @Override
-    public byte getBType() {
-        return this.bType;
-    }
-
-    @Override
-    public void setBType(byte value) {
-        this.bType = value;
-    }
-
-    /**
-     * Sets metric Object Header.
-     *
-     * @param obj metric object header
-     */
-    public void setMetricObjHeader(PcepObjectHeader obj) {
-        this.metricObjHeader = obj;
-    }
-
-    /**
-     * Returns metric Object Header.
-     *
-     * @return metricObjHeader
-     */
-    public PcepObjectHeader getMetricObjHeader() {
-        return this.metricObjHeader;
-    }
-
-    /**
-     * Reads from channel buffer and returns object of PcepMetricObject.
-     *
-     * @param cb of channel buffer.
-     * @return object of PcepMetricObject
-     * @throws PcepParseException when metric object is not present in channel buffer
-     */
-    public static PcepMetricObject read(ChannelBuffer cb) throws PcepParseException {
-
-        log.debug("MetricObject::read");
-        PcepObjectHeader metricObjHeader;
-        int iMetricVal;
-        byte yFlag; // 6-flags
-        boolean bCFlag;
-        boolean bBFlag;
-        byte bType;
-
-        metricObjHeader = PcepObjectHeader.read(cb);
-
-        if (metricObjHeader.getObjClass() != METRIC_OBJ_CLASS) {
-            throw new PcepParseException("This object is not a Metric Object. Object Class: "
-                    + metricObjHeader.getObjClass());
-        }
-
-        //take only metric buffer.
-        ChannelBuffer tempCb = cb.readBytes(metricObjHeader.getObjLen() - OBJECT_HEADER_LENGTH);
-
-        tempCb.readShort();
-        yFlag = tempCb.readByte();
-        bType = tempCb.readByte();
-        bCFlag = (yFlag & CFLAG_CHECK) == CFLAG_CHECK;
-        bBFlag = (yFlag & BFLAG_SET) == BFLAG_SET;
-        iMetricVal = tempCb.readInt();
-
-        return new PcepMetricObjectVer1(metricObjHeader, iMetricVal, yFlag, bCFlag, bBFlag, bType);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-        //write Object header
-        int objStartIndex = cb.writerIndex();
-
-        int objLenIndex = metricObjHeader.write(cb);
-
-        if (objLenIndex <= 0) {
-            throw new PcepParseException("Error: ObjectLength is " + objLenIndex);
-        }
-
-        int iFlag = (bCFlag) ? CFLAG_SET : CFLAG_RESET;
-        int iTemp = iFlag << IFLAG_SHIFT_VALUE;
-        iFlag = (bBFlag) ? BFLAG_SET : BFLAG_RESET;
-        iTemp = iTemp | (iFlag << BTYPE_SHIFT_VALUE);
-        iTemp = iTemp | bType;
-        cb.writeInt(iTemp);
-        cb.writeInt(iMetricVal);
-
-        short hLength = (short) (cb.writerIndex() - objStartIndex);
-        cb.setShort(objLenIndex, hLength);
-        //will be helpful during print().
-        metricObjHeader.setObjLen(hLength);
-        return hLength;
-    }
-
-    /**
-     * Builder class for PCEP metric object.
-     */
-    public static class Builder implements PcepMetricObject.Builder {
-
-        private boolean bIsHeaderSet = false;
-        private PcepObjectHeader metricObjHeader;
-        private int iMetricVal;
-        private boolean bIsMetricValSet = false;
-        private byte yFlag; // 6-flags
-        private boolean bCFlag;
-        private boolean bBFlag;
-        private byte bType;
-        private boolean bIsbTypeSet = false;
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        @Override
-        public PcepMetricObject build() throws PcepParseException {
-
-            PcepObjectHeader metricObjHeader = this.bIsHeaderSet ? this.metricObjHeader : DEFAULT_METRIC_OBJECT_HEADER;
-
-            if (!this.bIsMetricValSet) {
-                throw new PcepParseException(" Metric Value NOT Set while building PcepMetricObject.");
-            }
-            if (!this.bIsbTypeSet) {
-                throw new PcepParseException(" Type NOT Set while building PcepMetricObject.");
-            }
-
-            if (bIsPFlagSet) {
-                metricObjHeader.setPFlag(bPFlag);
-            }
-
-            if (bIsIFlagSet) {
-                metricObjHeader.setIFlag(bIFlag);
-            }
-
-            return new PcepMetricObjectVer1(metricObjHeader, iMetricVal, yFlag, bCFlag, bBFlag, bType);
-        }
-
-        @Override
-        public PcepObjectHeader getMetricObjHeader() {
-            return this.metricObjHeader;
-        }
-
-        @Override
-        public Builder setMetricObjHeader(PcepObjectHeader obj) {
-            this.metricObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public int getMetricVal() {
-            return this.iMetricVal;
-        }
-
-        @Override
-        public Builder setMetricVal(int value) {
-            this.iMetricVal = value;
-            this.bIsMetricValSet = true;
-            return this;
-        }
-
-        @Override
-        public byte getYFlag() {
-            return this.yFlag;
-        }
-
-        @Override
-        public Builder setYFlag(byte value) {
-            this.yFlag = value;
-            return this;
-        }
-
-        @Override
-        public boolean getCFlag() {
-            return this.bCFlag;
-        }
-
-        @Override
-        public Builder setCFlag(boolean value) {
-            this.bCFlag = value;
-            return this;
-        }
-
-        @Override
-        public boolean getBFlag() {
-            return this.bBFlag;
-        }
-
-        @Override
-        public Builder setBFlag(boolean value) {
-            this.bBFlag = value;
-            return this;
-        }
-
-        @Override
-        public byte getBType() {
-            return this.bType;
-        }
-
-        @Override
-        public Builder setBType(byte value) {
-            this.bType = value;
-            this.bIsbTypeSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("MetricValue", iMetricVal)
-                .add("BFlag", bBFlag)
-                .add("CFlag", bCFlag)
-                .add("BType", bType)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMsgPathVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMsgPathVer1.java
deleted file mode 100644
index 9b2f5aa..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMsgPathVer1.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepAttribute;
-import org.onosproject.pcepio.protocol.PcepEroObject;
-import org.onosproject.pcepio.protocol.PcepMsgPath;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP Message PAth for update message.
- * Reference :PCE extensions for stateful draft-ietf-pce-stateful-pce-10.
- */
-public class PcepMsgPathVer1 implements PcepMsgPath {
-
-    /*
-     *  <path>         ::= <ERO><attribute-list>
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepMsgPathVer1.class);
-    //PcepEroObject
-    private PcepEroObject eroObj;
-    private boolean isEroObjectSet;
-    // PcepAttribute
-    private PcepAttribute attrList;
-    private boolean isAttributeListSet;
-
-    /**
-     * constructor to initialize objects.
-     */
-    public PcepMsgPathVer1() {
-        eroObj = null;
-        attrList = null;
-        isEroObjectSet = false;
-        isAttributeListSet = false;
-    }
-
-    @Override
-    public PcepEroObject getEroObject() {
-        return eroObj;
-    }
-
-    @Override
-    public PcepAttribute getPcepAttribute() {
-        return attrList;
-    }
-
-    @Override
-    public void setEroObject(PcepEroObject eroObj) {
-        this.eroObj = eroObj;
-    }
-
-    @Override
-    public void setPcepAttribute(PcepAttribute attrList) {
-        this.attrList = attrList;
-    }
-
-    /**
-     * constructor to initialize member variables.
-     *
-     * @param eroObj pcep ero object
-     * @param attrList pcep attribute
-     */
-    public PcepMsgPathVer1(PcepEroObject eroObj, PcepAttribute attrList) {
-        this.eroObj = eroObj;
-        isEroObjectSet = true;
-        this.attrList = attrList;
-        if (attrList == null) {
-            isAttributeListSet = false;
-        } else {
-            isAttributeListSet = true;
-        }
-    }
-
-    @Override
-    public PcepMsgPath read(ChannelBuffer cb) throws PcepParseException {
-        PcepEroObject eroObj;
-        PcepAttribute attrList;
-
-        eroObj = PcepEroObjectVer1.read(cb);
-        attrList = PcepAttributeVer1.read(cb);
-
-        return new PcepMsgPathVer1(eroObj, attrList);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-        int iLenStartIndex = cb.writerIndex();
-
-        //write Object header
-        if (this.isEroObjectSet) {
-            this.eroObj.write(cb);
-        }
-        if (this.isAttributeListSet) {
-            attrList.write(cb);
-        }
-
-        return cb.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Builder class for PCEP Message path.
-     */
-    public static class Builder implements PcepMsgPath.Builder {
-
-        private boolean bIsEroObjectSet = false;
-        private boolean bIsPcepAttributeSet = false;
-
-        //PCEP ERO Object
-        private PcepEroObject eroObject;
-        //PCEP Attribute list
-        private PcepAttribute pcepAttribute;
-
-        @Override
-        public PcepMsgPath build() throws PcepParseException {
-
-            //PCEP ERO Object
-            PcepEroObject eroObject = null;
-            //PCEP Attribute list
-            PcepAttribute pcepAttribute = null;
-
-            if (!this.bIsEroObjectSet) {
-                throw new PcepParseException("ERO Object NOT Set while building PcepMsgPath.");
-            } else {
-                eroObject = this.eroObject;
-            }
-            if (!this.bIsPcepAttributeSet) {
-                throw new PcepParseException("Pcep Attributes NOT Set while building PcepMsgPath.");
-            } else {
-                pcepAttribute = this.pcepAttribute;
-            }
-
-            return new PcepMsgPathVer1(eroObject, pcepAttribute);
-        }
-
-        @Override
-        public PcepEroObject getEroObject() {
-            return this.eroObject;
-        }
-
-        @Override
-        public PcepAttribute getPcepAttribute() {
-            return this.pcepAttribute;
-        }
-
-        @Override
-        public Builder setEroObject(PcepEroObject eroObject) {
-            this.eroObject = eroObject;
-            this.bIsEroObjectSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setPcepAttribute(PcepAttribute pcepAttribute) {
-            this.pcepAttribute = pcepAttribute;
-            this.bIsPcepAttributeSet = true;
-            return this;
-        }
-
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("EroObject", eroObj)
-                .add("AttributeList", attrList)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenMsgVer1.java
deleted file mode 100644
index 0d5dc11..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenMsgVer1.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepMessageReader;
-import org.onosproject.pcepio.protocol.PcepMessageWriter;
-import org.onosproject.pcepio.protocol.PcepOpenMsg;
-import org.onosproject.pcepio.protocol.PcepOpenObject;
-import org.onosproject.pcepio.protocol.PcepType;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.onosproject.pcepio.types.PcepErrorDetailInfo;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP open message.
- */
-public class PcepOpenMsgVer1 implements PcepOpenMsg {
-
-    /*
-     * <Open Message>::= <Common Header> <OPEN>
-     0                   1                   2                   3
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    | Ver |  Flags  |  Message-Type |       Message-Length          |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    | Object-Class  |   OT  |Res|P|I|   Object Length (bytes)       |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    | Ver |   Flags |   Keepalive   |  DeadTimer    |      SID      |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                                                               |
-    //                       Optional TLVs                         //
-    |                                                               |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepOpenMsgVer1.class);
-
-    public static final byte PACKET_VERSION = 1;
-    public static final int PACKET_MINIMUM_LENGTH = 12;
-    public static final PcepType MSG_TYPE = PcepType.OPEN;
-    private PcepOpenObject pcepOpenObj;
-
-    public static final PcepOpenMsgVer1.Reader READER = new Reader();
-
-    /**
-     * Constructor to initialize PcepOpenObject.
-     *
-     * @param pcepOpenObj PCEP-OPEN-OBJECT
-     */
-    public PcepOpenMsgVer1(PcepOpenObject pcepOpenObj) {
-        this.pcepOpenObj = pcepOpenObj;
-    }
-
-    @Override
-    public PcepOpenObject getPcepOpenObject() {
-        return this.pcepOpenObj;
-    }
-
-    @Override
-    public void setPcepOpenObject(PcepOpenObject pcepOpenObj) {
-        this.pcepOpenObj = pcepOpenObj;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public PcepType getType() {
-        return MSG_TYPE;
-    }
-
-    /**
-     * Reader class for reading PCEP open message from channel buffer.
-     */
-    public static class Reader implements PcepMessageReader<PcepOpenMsg> {
-
-        @Override
-        public PcepOpenMsg readFrom(ChannelBuffer cb) throws PcepParseException {
-
-            if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException("Packet size is less than the minimum length.");
-            }
-
-            byte version = cb.readByte();
-            version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG);
-            if (version != PACKET_VERSION) {
-                log.error("[readFrom] Invalid version: " + version);
-                throw new PcepParseException(PcepErrorDetailInfo.ERROR_TYPE_1, PcepErrorDetailInfo.ERROR_VALUE_1);
-            }
-            // fixed value property type == 1
-            byte type = cb.readByte();
-
-            if (type != MSG_TYPE.getType()) {
-                log.error("[readFrom] Unexpected type: " + type);
-                throw new PcepParseException(PcepErrorDetailInfo.ERROR_TYPE_1, PcepErrorDetailInfo.ERROR_VALUE_1);
-            }
-            int length = cb.readShort();
-            if (length < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException(
-                        "Wrong length: Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " + length);
-            }
-            return new PcepOpenMsgVer1(PcepOpenObjectVer1.read(cb));
-        }
-    }
-
-    /**
-     * Builder class for PCEP open message.
-     */
-    static class Builder implements PcepOpenMsg.Builder {
-
-        private PcepOpenObject pcepOpenObj;
-
-        @Override
-        public PcepOpenMsg build() throws PcepParseException {
-            if (!(pcepOpenObj instanceof PcepOpenObjectVer1)) {
-                throw new NullPointerException("PcepOpenObject is null.");
-            }
-            return new PcepOpenMsgVer1(pcepOpenObj);
-        }
-
-        @Override
-        public PcepVersion getVersion() {
-            return PcepVersion.PCEP_1;
-        }
-
-        @Override
-        public PcepType getType() {
-            return PcepType.OPEN;
-        }
-
-        @Override
-        public PcepOpenObject getPcepOpenObj() {
-            return this.pcepOpenObj;
-        }
-
-        @Override
-        public Builder setPcepOpenObj(PcepOpenObject obj) {
-            this.pcepOpenObj = obj;
-            return this;
-        }
-    }
-
-    @Override
-    public void writeTo(ChannelBuffer cb) throws PcepParseException {
-        WRITER.write(cb, this);
-    }
-
-    public static final Writer WRITER = new Writer();
-
-    /**
-     * Writer class for writing PCEP opne message to channel buffer.
-     */
-    public static class Writer implements PcepMessageWriter<PcepOpenMsgVer1> {
-
-        @Override
-        public void write(ChannelBuffer cb, PcepOpenMsgVer1 message) throws PcepParseException {
-            int startIndex = cb.writerIndex();
-            // first 3 bits set to version
-            cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG));
-            // message type
-            cb.writeByte(MSG_TYPE.getType());
-            // length is length of variable message, will be updated at the end
-            // Store the position of message
-            // length in buffer
-
-            int msgLenIndex = cb.writerIndex();
-            cb.writeShort(0);
-
-            message.getPcepOpenObject().write(cb);
-
-            // update message length field
-            int iLength = cb.writerIndex() - startIndex;
-            cb.setShort(msgLenIndex, (short) iLength);
-        }
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("OpenObject", pcepOpenObj)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenObjectVer1.java
deleted file mode 100644
index 51a8eaf..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenObjectVer1.java
+++ /dev/null
@@ -1,518 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepOpenObject;
-import org.onosproject.pcepio.protocol.PcepType;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.onosproject.pcepio.types.GmplsCapabilityTlv;
-import org.onosproject.pcepio.types.NodeAttributesTlv;
-import org.onosproject.pcepio.types.PceccCapabilityTlv;
-import org.onosproject.pcepio.types.PcepLabelDbVerTlv;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.onosproject.pcepio.types.SrPceCapabilityTlv;
-import org.onosproject.pcepio.types.StatefulLspDbVerTlv;
-import org.onosproject.pcepio.types.StatefulPceCapabilityTlv;
-import org.onosproject.pcepio.types.LsCapabilityTlv;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP open object.
- */
-public class PcepOpenObjectVer1 implements PcepOpenObject {
-
-    /*
-     message format.
-      0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    | Object-Class  |   OT  |Res|P|I|   Object Length (bytes)       |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    | Ver |   Flags |   Keepalive   |  DeadTimer    |      SID      |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                                                               |
-    //                       Optional TLVs                         //
-    |                                                               |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-                     The OPEN Object format
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepOpenObjectVer1.class);
-
-    public static final PcepType MSG_TYPE = PcepType.OPEN;
-    public static final byte OPEN_OBJECT_VERSION = 1;
-    public static final byte OPEN_OBJ_TYPE = 1;
-    public static final byte OPEN_OBJ_CLASS = 1;
-    public static final byte DEFAULT_KEEPALIVE_TIME = 30;
-    public static final byte DEFAULT_DEAD_TIME = 120;
-    public static final short OPEN_OBJ_MINIMUM_LENGTH = 8;
-    public static final int DEFAULT_GMPLS_CAPABILITY_TLV_IVALUE = 0X0;
-    public static final int DEFAULT_STATEFUL_PCE_CAPABILITY_TLV_IVALUE = 0xf;
-    public static final int DEFAULT_PCECC_CAPABILITY_TLV_IVALUE = 0x7;
-    public static final int DEFAULT_PCEP_LABEL_DB_VER_TLV_IVALUE = 0X0;
-
-    public static final PcepObjectHeader DEFAULT_OPEN_HEADER = new PcepObjectHeader(OPEN_OBJ_CLASS, OPEN_OBJ_TYPE,
-            PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, OPEN_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader openObjHeader;
-    private byte keepAliveTime;
-    private byte deadTime;
-    private byte sessionId;
-    private LinkedList<PcepValueType> llOptionalTlv;
-
-    /**
-     * Default constructor.
-     */
-    public PcepOpenObjectVer1() {
-        this.openObjHeader = null;
-        this.keepAliveTime = 0;
-        this.deadTime = 0;
-        this.sessionId = 0;
-        this.llOptionalTlv = null;
-    }
-
-    /**
-     * Constructor to initialize all member variables.
-     *
-     * @param openObjHeader Open Object Header
-     * @param keepAliveTime Keepalive timer value
-     * @param deadTime      Dead timer value
-     * @param sessionID     session id
-     * @param llOptionalTlv Optional TLV
-     */
-    public PcepOpenObjectVer1(PcepObjectHeader openObjHeader, byte keepAliveTime, byte deadTime, byte sessionID,
-            LinkedList<PcepValueType> llOptionalTlv) {
-        this.openObjHeader = openObjHeader;
-        this.keepAliveTime = keepAliveTime;
-        this.deadTime = deadTime;
-        this.sessionId = sessionID;
-        this.llOptionalTlv = llOptionalTlv;
-    }
-
-    @Override
-    public PcepObjectHeader getOpenObjHeader() {
-        return this.openObjHeader;
-    }
-
-    @Override
-    public void setOpenObjHeader(PcepObjectHeader obj) {
-        this.openObjHeader = obj;
-    }
-
-    @Override
-    public byte getKeepAliveTime() {
-        return this.keepAliveTime;
-    }
-
-    @Override
-    public void setKeepAliveTime(byte value) {
-        this.keepAliveTime = value;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public byte getDeadTime() {
-        return this.deadTime;
-    }
-
-    @Override
-    public void setDeadTime(byte value) {
-        this.deadTime = value;
-    }
-
-    @Override
-    public byte getSessionId() {
-        return this.sessionId;
-    }
-
-    @Override
-    public void setSessionId(byte value) {
-        this.sessionId = value;
-    }
-
-    @Override
-    public LinkedList<PcepValueType> getOptionalTlv() {
-        return this.llOptionalTlv;
-    }
-
-    @Override
-    public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) {
-        this.llOptionalTlv = llOptionalTlv;
-    }
-
-    /**
-     * Reads from channel buffer and returns object of PcepOpenObject.
-     *
-     * @param cb of type channel buffer
-     * @return object of PcepOpenObject
-     * @throws PcepParseException if mandatory fields are missing
-     */
-    public static PcepOpenObject read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepObjectHeader openObjHeader;
-        byte version;
-        byte keepAliveTime;
-        byte deadTime;
-        byte sessionID;
-        LinkedList<PcepValueType> llOptionalTlv;
-
-        openObjHeader = PcepObjectHeader.read(cb);
-        version = cb.readByte();
-        version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG);
-        if (version != OPEN_OBJECT_VERSION) {
-            throw new PcepParseException("Wrong version: Expected=PcepVersion.PCEP_1(1), got=" + version);
-        }
-        /* Keepalive */
-        keepAliveTime = cb.readByte();
-
-        /* DeadTimer */
-        deadTime = cb.readByte();
-
-        /* SID */
-        sessionID = cb.readByte();
-
-        // Optional TLV
-        llOptionalTlv = parseOptionalTlv(cb);
-
-        return new PcepOpenObjectVer1(openObjHeader, keepAliveTime, deadTime, sessionID, llOptionalTlv);
-    }
-
-    /**
-     * Returns linkedlist of optional tlvs.
-     *
-     * @param cb of type channel buffer
-     * @return llOptionalTlv Optional TLV
-     * @throws PcepParseException if mandatory fields are missing
-     */
-    protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException {
-
-        LinkedList<PcepValueType> llOptionalTlv;
-
-        llOptionalTlv = new LinkedList<>();
-
-        while (4 <= cb.readableBytes()) {
-            PcepValueType tlv;
-            short hType = cb.readShort();
-            short hLength = cb.readShort();
-
-            switch (hType) {
-            case GmplsCapabilityTlv.TYPE:
-                log.debug("GmplsCapabilityTlv");
-                if (GmplsCapabilityTlv.LENGTH != hLength) {
-                    throw new PcepParseException("Invalid length received for Gmpls_Capability_Tlv.");
-                }
-                int iValue = cb.readInt();
-                tlv = new GmplsCapabilityTlv(iValue);
-                break;
-            case StatefulPceCapabilityTlv.TYPE:
-                log.debug("StatefulPceCapabilityTlv");
-                if (StatefulPceCapabilityTlv.LENGTH != hLength) {
-                    throw new PcepParseException("Invalid length received for StatefulPceCapabilityTlv.");
-                }
-                tlv = StatefulPceCapabilityTlv.read(cb);
-                break;
-            case PceccCapabilityTlv.TYPE:
-                log.debug("PceccCapabilityTlv");
-                if (PceccCapabilityTlv.LENGTH != hLength) {
-                    throw new PcepParseException("Invalid length for PceccCapabilityTlv.");
-                }
-                iValue = cb.readInt();
-                tlv = new PceccCapabilityTlv(iValue);
-                break;
-            case StatefulLspDbVerTlv.TYPE:
-                log.debug("StatefulLspDbVerTlv");
-                if (StatefulLspDbVerTlv.LENGTH != hLength) {
-                    throw new PcepParseException("Invalid length received for StatefulLspDbVerTlv.");
-                }
-                long lValue = cb.readLong();
-                tlv = new StatefulLspDbVerTlv(lValue);
-                break;
-            case LsCapabilityTlv.TYPE:
-                log.debug("LsCapabilityTlv");
-                if (LsCapabilityTlv.LENGTH != hLength) {
-                    throw new PcepParseException("Invalid length received for LsCapabilityTlv.");
-                }
-                iValue = cb.readInt();
-                tlv = new LsCapabilityTlv(iValue);
-                break;
-            case PcepLabelDbVerTlv.TYPE:
-                log.debug("PcepLabelDbVerTlv");
-                if (PcepLabelDbVerTlv.LENGTH != hLength) {
-                    throw new PcepParseException("Invalid length received for PcepLabelDbVerTlv.");
-                }
-                lValue = cb.readLong();
-                tlv = new PcepLabelDbVerTlv(lValue);
-                break;
-            case NodeAttributesTlv.TYPE:
-                log.debug("NodeAttributesTlv");
-                if (cb.readableBytes() < hLength) {
-                    throw new PcepParseException("Invalid length for NodeAttributesTlv.");
-                }
-                tlv = NodeAttributesTlv.read(cb.readBytes(hLength), hLength);
-                break;
-            case SrPceCapabilityTlv.TYPE:
-                log.debug("SrPceCapabilityTlv");
-                if (SrPceCapabilityTlv.LENGTH != hLength) {
-                    throw new PcepParseException("Invalid length received for SrPceCapabilityTlv.");
-                }
-                tlv = SrPceCapabilityTlv.read(cb);
-                break;
-            default:
-                log.debug("Unsupported TLV: " + hType);
-                cb.skipBytes(hLength);
-                tlv = null;
-            }
-
-            // Check for the padding
-            int pad = hLength % 4;
-            if (0 < pad) {
-                pad = 4 - pad;
-                if (pad <= cb.readableBytes()) {
-                    cb.skipBytes(pad);
-                }
-            }
-
-            if (tlv != null) {
-                llOptionalTlv.add(tlv);
-            }
-        }
-
-        if (0 < cb.readableBytes()) {
-            throw new PcepParseException("Optional Tlv parsing error. Extra bytes received.");
-        }
-
-        return llOptionalTlv;
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        int objStartIndex = cb.writerIndex();
-
-        //write common header
-        int objLenIndex = openObjHeader.write(cb);
-
-        if (objLenIndex <= 0) {
-            throw new PcepParseException("Unable to write Open object header.");
-        }
-
-        cb.writeByte((byte) (OPEN_OBJECT_VERSION << PcepMessageVer1.SHIFT_FLAG));
-        cb.writeByte(this.keepAliveTime);
-        cb.writeByte(this.deadTime);
-        cb.writeByte(this.sessionId);
-
-        //Pack optional TLV
-        packOptionalTlv(cb);
-
-        //now write OPEN Object Length
-        int length = cb.writerIndex() - objStartIndex;
-        cb.setShort(objLenIndex, (short) length);
-        //will be helpful during print().
-        this.openObjHeader.setObjLen((short) length);
-
-        return length;
-    }
-
-    /**
-     * Returns writer index.
-     *
-     * @param cb of type channel buffer.
-     * @return writer index
-     */
-    protected int packOptionalTlv(ChannelBuffer cb) {
-        int startIndex = cb.writerIndex();
-
-        LinkedList<PcepValueType> llOptionalTlv = this.llOptionalTlv;
-        ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator();
-        while (listIterator.hasNext()) {
-            PcepValueType tlv = listIterator.next();
-            if (tlv == null) {
-                log.debug("TLV is null from OptionalTlv list");
-                continue;
-            }
-
-            tlv.write(cb);
-
-            // need to take care of padding
-            int pad = tlv.getLength() % 4;
-
-            if (0 != pad) {
-                pad = 4 - pad;
-                for (int i = 0; i < pad; ++i) {
-                    cb.writeByte((byte) 0);
-                }
-            }
-        }
-        return cb.writerIndex() - startIndex;
-    }
-
-    /**
-     * Builder class for PCPE open object.
-     */
-    public static class Builder implements PcepOpenObject.Builder {
-        // Pcep open message fields
-        private boolean bIsHeaderSet = false;
-        private PcepObjectHeader openObjHeader;
-        private boolean bIsKeepAliveTimeSet = false;
-        private byte keepAliveTime;
-        private boolean bIsDeadTimeSet = false;
-        private byte deadTime;
-        private boolean bIsSessionIDSet = false;
-        private byte sessionID;
-        private boolean bIsOptionalTlvSet = false;
-        private LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>();
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        @Override
-        public PcepOpenObject build() throws PcepParseException {
-            PcepObjectHeader openObjHeader = this.bIsHeaderSet ? this.openObjHeader : DEFAULT_OPEN_HEADER;
-            byte keepAliveTime = this.bIsKeepAliveTimeSet ? this.keepAliveTime : DEFAULT_KEEPALIVE_TIME;
-            byte deadTime = this.bIsDeadTimeSet ? this.deadTime : DEFAULT_DEAD_TIME;
-
-            if (!this.bIsSessionIDSet) {
-                throw new PcepParseException("SessionID is not set (mandatory)");
-            }
-            if (!this.bIsOptionalTlvSet) {
-                //Add tlv to list
-                //Add GmplsCapabilityTlv
-                PcepValueType tlv;
-                int iValue = DEFAULT_GMPLS_CAPABILITY_TLV_IVALUE;
-                tlv = new GmplsCapabilityTlv(iValue);
-                this.llOptionalTlv.add(tlv);
-
-                //Add StatefulPceCapabilityTlv
-                iValue = DEFAULT_STATEFUL_PCE_CAPABILITY_TLV_IVALUE;
-                tlv = new StatefulPceCapabilityTlv(iValue);
-                this.llOptionalTlv.add(tlv);
-
-            }
-
-            if (bIsPFlagSet) {
-                openObjHeader.setPFlag(bPFlag);
-            }
-
-            if (bIsIFlagSet) {
-                openObjHeader.setIFlag(bIFlag);
-            }
-
-            return new PcepOpenObjectVer1(openObjHeader, keepAliveTime, deadTime, this.sessionID, this.llOptionalTlv);
-        }
-
-        @Override
-        public PcepObjectHeader getOpenObjHeader() {
-            return this.openObjHeader;
-        }
-
-        @Override
-        public Builder setOpenObjHeader(PcepObjectHeader obj) {
-            this.openObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public byte getKeepAliveTime() {
-            return this.keepAliveTime;
-        }
-
-        @Override
-        public Builder setKeepAliveTime(byte value) {
-            this.keepAliveTime = value;
-            this.bIsKeepAliveTimeSet = true;
-            return this;
-        }
-
-        @Override
-        public byte getDeadTime() {
-            return this.deadTime;
-        }
-
-        @Override
-        public Builder setDeadTime(byte value) {
-            this.deadTime = value;
-            this.bIsDeadTimeSet = true;
-            return this;
-        }
-
-        @Override
-        public byte getSessionId() {
-            return this.sessionID;
-        }
-
-        @Override
-        public Builder setSessionId(byte value) {
-            this.sessionID = value;
-            this.bIsSessionIDSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) {
-            this.llOptionalTlv = llOptionalTlv;
-            this.bIsOptionalTlvSet = true;
-            return this;
-        }
-
-        @Override
-        public LinkedList<PcepValueType> getOptionalTlv() {
-            return this.llOptionalTlv;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("ObjectHeader", openObjHeader)
-                .add("Keepalive", keepAliveTime)
-                .add("DeadTimer", deadTime)
-                .add("SessionId", sessionId)
-                .add("OptionalTlv", llOptionalTlv)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRPObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRPObjectVer1.java
deleted file mode 100644
index 0106299..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRPObjectVer1.java
+++ /dev/null
@@ -1,445 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepRPObject;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP RP object.
- */
-public class PcepRPObjectVer1 implements PcepRPObject {
-
-    /*
-     *  RP Object.
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                          Flags                    |O|B|R| Pri |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                        Request-ID-number                      |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                                                               |
-    //                      Optional TLVs                          //
-    |                                                               |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepRPObjectVer1.class);
-
-    public static final byte RP_OBJ_TYPE = 1;
-    public static final byte RP_OBJ_CLASS = 2;
-    public static final byte RP_OBJECT_VERSION = 1;
-    public static final short RP_OBJ_MINIMUM_LENGTH = 12;
-
-    public static final int DEFAULT_REQUEST_ID_NUM = 0;
-    //Signalled , all default values to be checked.
-    public static final boolean DEFAULT_OFLAG = false;
-    public static final boolean DEFAULT_BFLAG = false;
-    public static final boolean DEFAULT_RFLAG = false;
-    public static final byte DEFAULT_PRIFLAG = 0;
-    public static final int OBJECT_HEADER_LENGTH = 4;
-    public static final int OFLAG_SHIFT_VALUE = 5;
-    public static final int BFLAG_SHIFT_VALUE = 4;
-    public static final int RFLAG_SHIFT_VALUE = 3;
-    public static final int OFLAG_TEMP_SHIFT_VALUE = 0x20;
-    public static final int BFLAG_TEMP_SHIFT_VALUE = 0x10;
-    public static final int RFLAG_TEMP_SHIFT_VALUE = 0x08;
-    public static final int PRIFLAG_TEMP_SHIFT_VALUE = 0x07;
-    public static final int BIT_SET = 1;
-    public static final int BIT_RESET = 0;
-    public static final int MINIMUM_COMMON_HEADER_LENGTH = 4;
-
-    public static final PcepObjectHeader DEFAULT_RP_OBJECT_HEADER = new PcepObjectHeader(RP_OBJ_CLASS, RP_OBJ_TYPE,
-            PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, RP_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader rpObjHeader;
-    private int iRequestIdNum;
-    private boolean bOFlag;
-    private boolean bBFlag;
-    private boolean bRFlag;
-    private byte yPriFlag; // 3bytes
-    private LinkedList<PcepValueType> llOptionalTlv;
-
-    /**
-     * Constructor to initialize variables.
-     *
-     * @param rpObjHeader RP-OBJECT header
-     * @param iRequestIdNum Request-ID-number
-     * @param bOFlag O-flag
-     * @param bBFlag B-flag
-     * @param bRFlag R-flag
-     * @param yPriFlag Pri-flag
-     * @param llOptionalTlv linked list of Optional TLV
-     */
-    public PcepRPObjectVer1(PcepObjectHeader rpObjHeader, int iRequestIdNum, boolean bOFlag, boolean bBFlag,
-            boolean bRFlag, byte yPriFlag, LinkedList<PcepValueType> llOptionalTlv) {
-        this.rpObjHeader = rpObjHeader;
-        this.iRequestIdNum = iRequestIdNum;
-        this.bOFlag = bOFlag;
-        this.bBFlag = bBFlag;
-        this.bRFlag = bRFlag;
-        this.yPriFlag = yPriFlag;
-        this.llOptionalTlv = llOptionalTlv;
-    }
-
-    /**
-     * Sets RP Object header.
-     *
-     * @param obj RP Object header
-     */
-    public void setRPObjHeader(PcepObjectHeader obj) {
-        this.rpObjHeader = obj;
-    }
-
-    @Override
-    public void setRequestIdNum(int iRequestIdNum) {
-        this.iRequestIdNum = iRequestIdNum;
-    }
-
-    @Override
-    public void setOFlag(boolean bOFlag) {
-        this.bOFlag = bOFlag;
-    }
-
-    @Override
-    public void setBFlag(boolean bBFlag) {
-        this.bBFlag = bBFlag;
-    }
-
-    @Override
-    public void setRFlag(boolean bRFlag) {
-        this.bRFlag = bRFlag;
-    }
-
-    @Override
-    public void setPriFlag(byte yPriFlag) {
-        this.yPriFlag = yPriFlag;
-    }
-
-    /**
-     * Returns RP Object header.
-     *
-     * @return rpObjHeader
-     */
-    public PcepObjectHeader getRPObjHeader() {
-        return this.rpObjHeader;
-    }
-
-    @Override
-    public int getRequestIdNum() {
-        return this.iRequestIdNum;
-    }
-
-    @Override
-    public boolean getOFlag() {
-        return this.bOFlag;
-    }
-
-    @Override
-    public boolean getBFlag() {
-        return this.bBFlag;
-    }
-
-    @Override
-    public boolean getRFlag() {
-        return this.bRFlag;
-    }
-
-    @Override
-    public byte getPriFlag() {
-        return this.yPriFlag;
-    }
-
-    /**
-     * Reads the channel buffer and returns the object of PcepRPObject.
-     *
-     * @param cb of type channel buffer
-     * @return the object of PcepRPObject
-     * @throws PcepParseException if mandatory fields are missing
-     */
-    public static PcepRPObject read(ChannelBuffer cb) throws PcepParseException {
-        log.debug("read");
-        PcepObjectHeader rpObjHeader;
-        int iRequestIdNum;
-        boolean bOFlag;
-        boolean bBFlag;
-        boolean bRFlag;
-        byte yPriFlag; // 3bytes
-        LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>();
-
-        rpObjHeader = PcepObjectHeader.read(cb);
-
-        //take only LspObject buffer.
-        ChannelBuffer tempCb = cb.readBytes(rpObjHeader.getObjLen() - OBJECT_HEADER_LENGTH);
-
-        int iTemp = tempCb.readInt();
-        yPriFlag = (byte) (iTemp & PRIFLAG_TEMP_SHIFT_VALUE);
-        bOFlag = (iTemp & OFLAG_TEMP_SHIFT_VALUE) == OFLAG_TEMP_SHIFT_VALUE;
-        bBFlag = (iTemp & BFLAG_TEMP_SHIFT_VALUE) == BFLAG_TEMP_SHIFT_VALUE;
-        bRFlag = (iTemp & RFLAG_TEMP_SHIFT_VALUE) == RFLAG_TEMP_SHIFT_VALUE;
-
-        iRequestIdNum = tempCb.readInt();
-
-        // parse optional TLV
-        llOptionalTlv = parseOptionalTlv(tempCb);
-
-        return new PcepRPObjectVer1(rpObjHeader, iRequestIdNum, bOFlag, bBFlag, bRFlag, yPriFlag, llOptionalTlv);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        //write Object header
-        int objStartIndex = cb.writerIndex();
-
-        int objLenIndex = rpObjHeader.write(cb);
-
-        if (objLenIndex <= 0) {
-            throw new PcepParseException("ObjectLength Index is " + objLenIndex);
-        }
-        int iTemp;
-        iTemp = (yPriFlag);
-
-        iTemp = (bOFlag) ? (iTemp | OFLAG_SHIFT_VALUE) : iTemp;
-        iTemp = (bBFlag) ? (iTemp | BFLAG_SHIFT_VALUE) : iTemp;
-        iTemp = (bRFlag) ? (iTemp | RFLAG_SHIFT_VALUE) : iTemp;
-
-        cb.writeInt(iTemp);
-        cb.writeInt(iRequestIdNum);
-
-        // Add optional TLV
-        packOptionalTlv(cb);
-
-        //Update object length now
-        int length = cb.writerIndex() - objStartIndex;
-
-        //will be helpful during print().
-        rpObjHeader.setObjLen((short) length);
-
-        cb.setShort(objLenIndex, (short) length);
-        return cb.writerIndex();
-    }
-
-    /**
-     * Returns list of optional tlvs.
-     *
-     * @param cb of type channel buffer.
-     * @return llOutOptionalTlv linked list of Optional TLV
-     * @throws PcepParseException if mandatory fields are missing
-     */
-    protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException {
-
-        LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>();
-        //Currently no optional TLvs, will be added based on requirements.
-        return llOutOptionalTlv;
-    }
-
-    /**
-     * Returns optional tlvs.
-     *
-     * @param cb of type channel buffer
-     * @return llOptionalTlv linked list of Optional TLV
-     */
-    protected int packOptionalTlv(ChannelBuffer cb) {
-
-        ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator();
-        while (listIterator.hasNext()) {
-            listIterator.next().write(cb);
-        }
-
-        return cb.writerIndex();
-    }
-
-    /**
-     * Builder class for PCEP rp object.
-     */
-    public static class Builder implements PcepRPObject.Builder {
-
-        private boolean bIsHeaderSet = false;
-        private boolean bIsRequestIdNumSet = false;
-        private boolean bIsOFlagSet = false;
-        private boolean bIsRFlagset = false;
-        private boolean bIsBFlagSet = false;
-        private boolean bIsPriFlagSet = false;
-
-        private PcepObjectHeader rpObjHeader;
-        private int requestIdNum;
-        private boolean bOFlag;
-        private boolean bBFlag;
-        private boolean bRFlag;
-        private byte yPriFlag;
-        private LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>();
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        @Override
-        public PcepRPObject build() {
-            PcepObjectHeader lspObjHeader = this.bIsHeaderSet ? this.rpObjHeader : DEFAULT_RP_OBJECT_HEADER;
-
-            int requestIdNum = this.bIsRequestIdNumSet ? this.requestIdNum : DEFAULT_REQUEST_ID_NUM;
-            boolean bOFlag = this.bIsOFlagSet ? this.bOFlag : DEFAULT_OFLAG;
-            boolean bBFlag = this.bIsBFlagSet ? this.bBFlag : DEFAULT_BFLAG;
-            boolean bRFlag = this.bIsRFlagset ? this.bRFlag : DEFAULT_RFLAG;
-            byte yPriFlag = this.bIsPriFlagSet ? this.yPriFlag : DEFAULT_PRIFLAG;
-
-            if (bIsPFlagSet) {
-                lspObjHeader.setPFlag(bPFlag);
-            }
-
-            if (bIsIFlagSet) {
-                lspObjHeader.setIFlag(bIFlag);
-            }
-
-            return new PcepRPObjectVer1(lspObjHeader, requestIdNum, bOFlag, bBFlag, bRFlag, yPriFlag, llOptionalTlv);
-        }
-
-        @Override
-        public PcepObjectHeader getRPObjHeader() {
-            return this.rpObjHeader;
-        }
-
-        @Override
-        public Builder setRPObjHeader(PcepObjectHeader obj) {
-            this.rpObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public int getRequestIdNum() {
-            return this.requestIdNum;
-        }
-
-        @Override
-        public Builder setRequestIdNum(int value) {
-            this.requestIdNum = value;
-            this.bIsRequestIdNumSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setOFlag(boolean value) {
-            this.bOFlag = value;
-            this.bIsOFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public boolean getBFlag() {
-            return this.bBFlag;
-        }
-
-        @Override
-        public Builder setBFlag(boolean value) {
-            this.bBFlag = value;
-            this.bIsBFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public boolean getRFlag() {
-            return this.bRFlag;
-        }
-
-        @Override
-        public Builder setRFlag(boolean value) {
-            this.bRFlag = value;
-            this.bIsRFlagset = true;
-            return this;
-        }
-
-        @Override
-        public byte getPriFlag() {
-            return this.yPriFlag;
-        }
-
-        @Override
-        public Builder setPriFlag(byte value) {
-            this.yPriFlag = value;
-            this.bIsPriFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) {
-            this.llOptionalTlv = llOptionalTlv;
-            return this;
-        }
-
-        @Override
-        public LinkedList<PcepValueType> getOptionalTlv() {
-            return this.llOptionalTlv;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public boolean getOFlag() {
-            return this.bOFlag;
-        }
-
-    }
-
-    @Override
-    public LinkedList<PcepValueType> getOptionalTlv() {
-        return this.llOptionalTlv;
-    }
-
-    @Override
-    public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) {
-        this.llOptionalTlv = llOptionalTlv;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("ObjectHeader", rpObjHeader)
-                .add("OFlag", (bOFlag) ? 1 : 0)
-                .add("BFlag", (bBFlag) ? 1 : 0)
-                .add("RFlag", (bRFlag) ? 1 : 0)
-                .add("PriFlag", yPriFlag)
-                .add("RequestIdNumber", iRequestIdNum)
-                .add("OptionalTlv", llOptionalTlv)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepReportMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepReportMsgVer1.java
deleted file mode 100644
index ad2cc47..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepReportMsgVer1.java
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepLspObject;
-import org.onosproject.pcepio.protocol.PcepMessageReader;
-import org.onosproject.pcepio.protocol.PcepMessageWriter;
-import org.onosproject.pcepio.protocol.PcepReportMsg;
-import org.onosproject.pcepio.protocol.PcepSrpObject;
-import org.onosproject.pcepio.protocol.PcepStateReport;
-import org.onosproject.pcepio.protocol.PcepType;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP report message.
- */
-class PcepReportMsgVer1 implements PcepReportMsg {
-
-    // Pcep version: 1
-
-    /*
-     * The format of the PCRpt message is as follows:
-     *   <PCRpt Message>        ::= <Common Header>
-     *                              <state-report-list>
-     *Where:
-     *   <state-report-list>    ::= <state-report>[<state-report-list>]
-     *   <state-report>         ::= [<SRP>]
-     *                              <LSP>
-     *                              <path>
-     * Where:
-     *   <path>                 ::= <ERO><attribute-list>[<RRO>]
-     *   Where:
-     *   <attribute-list> is defined in [RFC5440] and extended by PCEP extensions.
-     *    where:
-     *    <attribute-list>      ::=[<LSPA>]
-     *                             [<BANDWIDTH>]
-     *                             [<metric-list>]
-     *                             [<IRO>]
-     *    <metric-list>       ::=<METRIC>[<metric-list>]
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepReportMsgVer1.class);
-
-    public static final byte PACKET_VERSION = 1;
-    //PACKET_MINIMUM_LENGTH = CommonHeaderLen(4)+LspObjMinLen(8)
-    public static final int PACKET_MINIMUM_LENGTH = 12;
-    public static final PcepType MSG_TYPE = PcepType.REPORT;
-    public static final byte REPORT_OBJ_TYPE = 1;
-    //Optional TLV
-    private LinkedList<PcepStateReport> llStateReportList;
-
-    public static final PcepReportMsgVer1.Reader READER = new Reader();
-
-    /**
-     * Reader class for reading PCEP report message from channel buffer.
-     */
-    static class Reader implements PcepMessageReader<PcepReportMsg> {
-
-        LinkedList<PcepStateReport> llStateReportList;
-
-        @Override
-        public PcepReportMsg readFrom(ChannelBuffer cb) throws PcepParseException {
-
-            if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException("Received packet size " + cb.readableBytes()
-                        + " is less than the expected size: " + PACKET_MINIMUM_LENGTH);
-            }
-            llStateReportList = new LinkedList<>();
-            byte version = cb.readByte();
-            version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG);
-
-            if (version != PACKET_VERSION) {
-                throw new PcepParseException(" Invalid version: " + version);
-            }
-
-            byte type = cb.readByte();
-
-            if (type != MSG_TYPE.getType()) {
-                throw new PcepParseException("Unexpected type: " + type);
-            }
-
-            short length = cb.readShort();
-
-            if (length < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException("Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: "
-                        + length);
-            }
-            // parse state report list
-            parseStateReportList(cb);
-            return new PcepReportMsgVer1(llStateReportList);
-        }
-
-        // Parse State Report list
-        public void parseStateReportList(ChannelBuffer cb) throws PcepParseException {
-
-            /*
-                                <state-report-list>
-            Where:
-                    <state-report-list>     ::= <state-report>[<state-report-list>]
-                    <state-report>          ::=  [<SRP>]
-                                                  <LSP>
-                                                  <path>
-            Where:
-                    <path>                  ::= <ERO><attribute-list>[<RRO>]
-            Where:
-                    <attribute-list> is defined in [RFC5440] and extended by PCEP extensions.
-
-             */
-
-            while (0 < cb.readableBytes()) {
-
-                PcepStateReport pcestateReq = new PcepStateReportVer1();
-
-                /*
-                 * SRP is optional
-                 * Check whether SRP Object is available, if yes store it.
-                 * First read common object header and check the Object Class whether it is SRP or LSP
-                 * If it is LSP then store only LSP. So, SRP is optional. then read path and store.
-                 * If it is SRP then store SRP and then read LSP, path and store them.
-                 */
-
-                //mark the reader index to reset
-                cb.markReaderIndex();
-                PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb);
-
-                byte yObjectClass = tempObjHeader.getObjClass();
-                byte yObjectType = tempObjHeader.getObjType();
-
-                //reset reader index
-                cb.resetReaderIndex();
-                //If SRP present then store it.
-                if ((PcepSrpObjectVer1.SRP_OBJ_CLASS == yObjectClass)
-                        && (PcepSrpObjectVer1.SRP_OBJ_TYPE == yObjectType)) {
-                    PcepSrpObject srpObj;
-                    srpObj = PcepSrpObjectVer1.read(cb);
-                    pcestateReq.setSrpObject(srpObj);
-                }
-
-                //store LSP object
-                PcepLspObject lspObj;
-                lspObj = PcepLspObjectVer1.read(cb);
-                pcestateReq.setLspObject(lspObj);
-
-                if (cb.readableBytes() > 0) {
-
-                    //mark the reader index to reset
-                    cb.markReaderIndex();
-                    tempObjHeader = PcepObjectHeader.read(cb);
-
-                    yObjectClass = tempObjHeader.getObjClass();
-                    yObjectType = tempObjHeader.getObjType();
-
-                    //reset reader index
-                    cb.resetReaderIndex();
-
-                    if ((PcepEroObjectVer1.ERO_OBJ_CLASS == yObjectClass)
-                            && (PcepEroObjectVer1.ERO_OBJ_TYPE == yObjectType)) {
-                        // store path
-                        PcepStateReport.PcepMsgPath msgPath = new PcepStateReportVer1().new PcepMsgPath().read(cb);
-                        pcestateReq.setMsgPath(msgPath);
-                    }
-                }
-
-                llStateReportList.add(pcestateReq);
-            }
-        }
-    }
-
-    /**
-     * Constructor to initialize State Report List.
-     *
-     * @param llStateReportList list of type Pcep state report
-     */
-    PcepReportMsgVer1(LinkedList<PcepStateReport> llStateReportList) {
-        this.llStateReportList = llStateReportList;
-    }
-
-    /**
-     * Builder class for PCEP Report message.
-     */
-    static class Builder implements PcepReportMsg.Builder {
-        // Pcep report message fields
-        LinkedList<PcepStateReport> llStateReportList;
-
-        @Override
-        public PcepVersion getVersion() {
-            return PcepVersion.PCEP_1;
-        }
-
-        @Override
-        public PcepType getType() {
-            return PcepType.REPORT;
-        }
-
-        @Override
-        public PcepReportMsg build() {
-            return new PcepReportMsgVer1(this.llStateReportList);
-        }
-
-        @Override
-        public LinkedList<PcepStateReport> getStateReportList() {
-            return this.llStateReportList;
-        }
-
-        @Override
-        public Builder setStateReportList(LinkedList<PcepStateReport> ll) {
-            this.llStateReportList = ll;
-            return this;
-        }
-    }
-
-    @Override
-    public void writeTo(ChannelBuffer cb) throws PcepParseException {
-        WRITER.write(cb, this);
-    }
-
-    static final Writer WRITER = new Writer();
-
-    /**
-     * Writer class for writing PCEP report message to channel buffer.
-     */
-    static class Writer implements PcepMessageWriter<PcepReportMsgVer1> {
-
-        @Override
-        public void write(ChannelBuffer cb, PcepReportMsgVer1 message) throws PcepParseException {
-
-            int startIndex = cb.writerIndex();
-
-            // first 3 bits set to version
-            cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG));
-
-            // message type
-            cb.writeByte(MSG_TYPE.getType());
-
-            // length is length of variable message, will be updated at the end
-            // Store the position of message
-            // length in buffer
-            int msgLenIndex = cb.writerIndex();
-
-            cb.writeShort((short) 0);
-            ListIterator<PcepStateReport> listIterator = message.llStateReportList.listIterator();
-
-            while (listIterator.hasNext()) {
-
-                PcepStateReport stateRpt = listIterator.next();
-                PcepSrpObject srpObj = stateRpt.getSrpObject();
-
-                //SRP object is optional
-                if (srpObj != null) {
-                    srpObj.write(cb);
-                }
-
-                //LSP object is mandatory
-                PcepLspObject lspObj = stateRpt.getLspObject();
-                if (lspObj == null) {
-                    throw new PcepParseException("LSP Object is mandatory object for PcRpt message.");
-                } else {
-                    lspObj.write(cb);
-                }
-
-                //path is mandatory
-                PcepStateReport.PcepMsgPath msgPath = stateRpt.getMsgPath();
-                if (msgPath == null) {
-                    throw new PcepParseException("Message path is mandatory object for PcRpt message.");
-                } else {
-                    msgPath.write(cb);
-                }
-            }
-
-            // update message length field
-            int length = cb.writerIndex() - startIndex;
-            cb.setShort(msgLenIndex, (short) length);
-        }
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public PcepType getType() {
-        return MSG_TYPE;
-    }
-
-    @Override
-    public LinkedList<PcepStateReport> getStateReportList() {
-        return this.llStateReportList;
-    }
-
-    @Override
-    public void setStateReportList(LinkedList<PcepStateReport> ll) {
-        this.llStateReportList = ll;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("StateReportList", llStateReportList)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRroObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRroObjectVer1.java
deleted file mode 100644
index ae8ec34..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRroObjectVer1.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepRroObject;
-import org.onosproject.pcepio.types.IPv4SubObject;
-import org.onosproject.pcepio.types.IPv6SubObject;
-import org.onosproject.pcepio.types.LabelSubObject;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP RRO object.
- */
-public class PcepRroObjectVer1 implements PcepRroObject {
-
-    /*
-     * rfc3209
-          0                   1                   2                   3
-          0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-         | Object-Class  |   OT  |Res|P|I|   Object Length (bytes)       |
-         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-         |                                                               |
-         //                        (Subobjects)                          //
-         |                                                               |
-         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-            Each subobject has its own Length
-            field.  The length contains the total length of the subobject in
-            bytes, including the Type and Length fields.  The length MUST always
-            be a multiple of 4, and at least 4.
-
-            An empty RRO with no subobjects is considered illegal.
-            Three kinds of subobjects are currently defined.
-
-           Subobject 1: IPv4 address
-
-            0                   1                   2                   3
-            0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           |      Type     |     Length    | IPv4 address (4 bytes)        |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           | IPv4 address (continued)      | Prefix Length |      Flags    |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-           Subobject 2: IPv6 address
-
-            0                   1                   2                   3
-            0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           |      Type     |     Length    | IPv6 address (16 bytes)       |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           | IPv6 address (continued)                                      |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           | IPv6 address (continued)                                      |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           | IPv6 address (continued)                                      |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           | IPv6 address (continued)      | Prefix Length |      Flags    |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-           Subobject 3, Label
-
-            0                   1                   2                   3
-            0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           |     Type      |     Length    |    Flags      |   C-Type      |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           |       Contents of Label Object                                |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepRroObjectVer1.class);
-
-    public static final byte RRO_OBJ_TYPE = 1;
-    public static final byte RRO_OBJ_CLASS = 8;
-    public static final byte RRO_OBJECT_VERSION = 1;
-    public static final short RRO_OBJ_MINIMUM_LENGTH = 12;
-    public static final int OBJECT_HEADER_LENGTH = 4;
-    public static final int YTYPE_SHIFT_VALUE = 0x7F;
-
-    static final PcepObjectHeader DEFAULT_RRO_OBJECT_HEADER = new PcepObjectHeader(RRO_OBJ_CLASS, RRO_OBJ_TYPE,
-            PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, RRO_OBJ_MINIMUM_LENGTH);
-
-    private short rroObjType = 0;
-    private byte length;
-    private byte prefixLength;
-    private byte resvd;
-    PcepObjectHeader rroObjHeader;
-    private LinkedList<PcepValueType> llSubObjects = new LinkedList<>();
-
-    /**
-     * Reset variables.
-     */
-    public PcepRroObjectVer1() {
-        this.rroObjHeader = null;
-        this.rroObjType = 0;
-        this.length = 0;
-    }
-
-    /**
-     * constructor to initialize parameters for RRO object.
-     *
-     * @param rroObjHeader RRO object header
-     * @param llSubObjects list of sub objects
-     */
-    public PcepRroObjectVer1(PcepObjectHeader rroObjHeader, LinkedList<PcepValueType> llSubObjects) {
-        this.rroObjHeader = rroObjHeader;
-        this.llSubObjects = llSubObjects;
-    }
-
-    /**
-     * Returns PCEP RRO Object Header.
-     *
-     * @return rroObjHeader RRO Object header
-     */
-    public PcepObjectHeader getRroObjHeader() {
-        return this.rroObjHeader;
-    }
-
-    /**
-     * Sets PCEP RRO Object Header.
-     *
-     * @param obj Object header
-     */
-    public void setRroObjHeader(PcepObjectHeader obj) {
-        this.rroObjHeader = obj;
-    }
-
-    @Override
-    public LinkedList<PcepValueType> getSubObjects() {
-        return this.llSubObjects;
-    }
-
-    @Override
-    public void setSubObjects(LinkedList<PcepValueType> llSubObjects) {
-        this.llSubObjects = llSubObjects;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of PcepRroObject.
-     *
-     * @param cb of type channel buffer
-     * @return object of PcepRroObject
-     * @throws PcepParseException when fails to read from channel buffer
-     */
-    public static PcepRroObject read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepObjectHeader rroObjHeader;
-        LinkedList<PcepValueType> llSubObjects;
-        rroObjHeader = PcepObjectHeader.read(cb);
-
-        //take only RroObject buffer.
-        ChannelBuffer tempCb = cb.readBytes(rroObjHeader.getObjLen() - OBJECT_HEADER_LENGTH);
-        llSubObjects = parseSubObjects(tempCb);
-
-        return new PcepRroObjectVer1(rroObjHeader, llSubObjects);
-    }
-
-    /**
-     * Returns list of sub objects.
-     *
-     * @param cb of type channel buffer
-     * @return list of sub objects
-     * @throws PcepParseException when fails to parse list of sub objects
-     */
-    protected static LinkedList<PcepValueType> parseSubObjects(ChannelBuffer cb) throws PcepParseException {
-
-        LinkedList<PcepValueType> llSubObjects = new LinkedList<>();
-
-        while (0 < cb.readableBytes()) {
-
-            //check the Type of the Sub objects
-            byte yType = cb.readByte();
-            yType = (byte) (yType & (YTYPE_SHIFT_VALUE));
-            byte hLength = cb.readByte();
-
-            PcepValueType subObj;
-
-            switch (yType) {
-
-            case IPv4SubObject.TYPE:
-                subObj = IPv4SubObject.read(cb);
-                break;
-            case IPv6SubObject.TYPE:
-                byte[] ipv6Value = new byte[IPv6SubObject.VALUE_LENGTH];
-                cb.readBytes(ipv6Value, 0, IPv6SubObject.VALUE_LENGTH);
-                subObj = new IPv6SubObject(ipv6Value);
-                break;
-            case LabelSubObject.TYPE:
-                subObj = LabelSubObject.read(cb);
-                break;
-            default:
-                throw new PcepParseException(" Unexpected sub object. Type: " + (int) yType);
-            }
-            // Check for the padding
-            int pad = hLength % 4;
-            if (0 < pad) {
-                pad = 4 - pad;
-                if (pad <= cb.readableBytes()) {
-                    cb.skipBytes(pad);
-                }
-            }
-            llSubObjects.add(subObj);
-        }
-
-        return llSubObjects;
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-        //write Object header
-        int objStartIndex = cb.writerIndex();
-
-        int objLenIndex = rroObjHeader.write(cb);
-
-        if (objLenIndex <= 0) {
-            throw new PcepParseException(" object Length Index" + objLenIndex);
-        }
-
-        ListIterator<PcepValueType> listIterator = llSubObjects.listIterator();
-
-        while (listIterator.hasNext()) {
-            listIterator.next().write(cb);
-        }
-
-        //Update object length now
-        int length = cb.writerIndex() - objStartIndex;
-        cb.setShort(objLenIndex, (short) length);
-        //will be helpful during print().
-        rroObjHeader.setObjLen((short) length);
-
-        //As per RFC the length of object should be multiples of 4
-        int pad = length % 4;
-
-        if (0 != pad) {
-            pad = 4 - pad;
-            for (int i = 0; i < pad; i++) {
-                cb.writeByte((byte) 0);
-            }
-        }
-        objLenIndex = cb.writerIndex();
-        return objLenIndex;
-    }
-
-    /**
-     * Builder class for PCEP RRO object.
-     */
-    public static class Builder implements PcepRroObject.Builder {
-        private boolean bIsHeaderSet = false;
-
-        private PcepObjectHeader rroObjHeader;
-        LinkedList<PcepValueType> llSubObjects = new LinkedList<>();
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        @Override
-        public PcepRroObject build() {
-
-            PcepObjectHeader rroObjHeader = this.bIsHeaderSet ? this.rroObjHeader : DEFAULT_RRO_OBJECT_HEADER;
-
-            if (bIsPFlagSet) {
-                rroObjHeader.setPFlag(bPFlag);
-            }
-
-            if (bIsIFlagSet) {
-                rroObjHeader.setIFlag(bIFlag);
-            }
-            return new PcepRroObjectVer1(rroObjHeader, this.llSubObjects);
-        }
-
-        @Override
-        public PcepObjectHeader getRroObjHeader() {
-            return this.rroObjHeader;
-        }
-
-        @Override
-        public Builder setRroObjHeader(PcepObjectHeader obj) {
-            this.rroObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public LinkedList<PcepValueType> getSubObjects() {
-            return this.llSubObjects;
-        }
-
-        @Override
-        public Builder setSubObjects(LinkedList<PcepValueType> llSubObjects) {
-            this.llSubObjects = llSubObjects;
-            return this;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("SubObjects", llSubObjects)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepSrpObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepSrpObjectVer1.java
deleted file mode 100644
index ca0a317..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepSrpObjectVer1.java
+++ /dev/null
@@ -1,437 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepSrpObject;
-import org.onosproject.pcepio.types.PathSetupTypeTlv;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.onosproject.pcepio.types.SymbolicPathNameTlv;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP SRP obejct.
- */
-public class PcepSrpObjectVer1 implements PcepSrpObject {
-
-    /*
-     * ref : draft-ietf-pce-stateful-pce-10, section : 7.2
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    | Object-Class  |   OT  |Res|P|I|   Object Length (bytes)       |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                          Flags                            |S|R|
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                        SRP-ID-number                          |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                                                               |
-    //                      Optional TLVs                          //
-    |                                                               |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepSrpObjectVer1.class);
-
-    public static final byte SRP_OBJ_TYPE = 1;
-    public static final byte SRP_OBJ_CLASS = 33;
-    public static final byte SRP_OBJECT_VERSION = 1;
-    public static final short SRP_OBJ_MINIMUM_LENGTH = 12;
-    public static final int MINIMUM_COMMON_HEADER_LENGTH = 4;
-    public static final boolean FLAG_DEFAULT_VALUE = false;
-
-    static final PcepObjectHeader DEFAULT_SRP_OBJECT_HEADER = new PcepObjectHeader(SRP_OBJ_CLASS, SRP_OBJ_TYPE,
-            PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, SRP_OBJ_MINIMUM_LENGTH);
-
-    private PcepObjectHeader srpObjHeader;
-    private static int flags;
-    private boolean bRFlag;
-    private boolean bSFlag;
-    private int srpId;
-
-    //Optional TLV
-    private LinkedList<PcepValueType> llOptionalTlv;
-    public static final byte BBIT_SET = 1;
-    public static final byte BBIT_RESET = 0;
-
-    /**
-     * Constructor to initialize member variables.
-     *
-     * @param srpObjHeader srp object header
-     * @param bRFlag R flag
-     * @param bSFlag S (sync) flag
-     * @param srpID srp Id
-     * @param llOptionalTlv list of optional tlv
-     */
-    public PcepSrpObjectVer1(PcepObjectHeader srpObjHeader, boolean bRFlag, boolean bSFlag, int srpID,
-            LinkedList<PcepValueType> llOptionalTlv) {
-
-        this.srpObjHeader = srpObjHeader;
-        this.bRFlag = bRFlag;
-        this.bSFlag = bSFlag;
-        this.srpId = srpID;
-        this.llOptionalTlv = llOptionalTlv;
-    }
-
-    /**
-     * sets the SRP object header.
-     *
-     * @param obj srp object header
-     */
-    public void setSrpObjHeader(PcepObjectHeader obj) {
-        this.srpObjHeader = obj;
-    }
-
-    @Override
-    public void setSrpID(int srpID) {
-        this.srpId = srpID;
-    }
-
-    @Override
-    public void setRFlag(boolean bRFlag) {
-        this.bRFlag = bRFlag;
-    }
-
-    @Override
-    public void setSFlag(boolean bSFlag) {
-        this.bSFlag = bSFlag;
-    }
-
-    /**
-     * Returns SRP object header.
-     *
-     * @return srpObjHeader
-     */
-    public PcepObjectHeader getSrpObjHeader() {
-        return this.srpObjHeader;
-    }
-
-    @Override
-    public int getSrpID() {
-        return this.srpId;
-    }
-
-    @Override
-    public boolean getRFlag() {
-        return this.bRFlag;
-    }
-
-    @Override
-    public boolean getSFlag() {
-        return this.bSFlag;
-    }
-
-    @Override
-    public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) {
-        this.llOptionalTlv = llOptionalTlv;
-
-    }
-
-    @Override
-    public LinkedList<PcepValueType> getOptionalTlv() {
-        return this.llOptionalTlv;
-    }
-
-    /**
-     * Reads from channel buffer and returns instance of PCEP SRP object.
-     *
-     * @param cb of channel buffer.
-     * @return PCEP SRP object
-     * @throws PcepParseException when srp object is not received in channel buffer
-     */
-    public static PcepSrpObject read(ChannelBuffer cb) throws PcepParseException {
-
-        log.debug("SrpObject::read");
-        PcepObjectHeader srpObjHeader;
-        boolean bRFlag;
-        boolean bSFlag;
-
-        int srpID;
-        int flags;
-        LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>();
-
-        srpObjHeader = PcepObjectHeader.read(cb);
-
-        if (srpObjHeader.getObjClass() != SRP_OBJ_CLASS) {
-            throw new PcepParseException("SRP object expected. But received " + srpObjHeader.getObjClass());
-        }
-
-        //take only SrpObject buffer.
-        ChannelBuffer tempCb = cb.readBytes(srpObjHeader.getObjLen() - MINIMUM_COMMON_HEADER_LENGTH);
-        flags = tempCb.readInt();
-        bRFlag = 0 < (flags & 0x1);
-        bSFlag = 0 < ((flags >> 1) & 0x1);
-        srpID = tempCb.readInt();
-
-        llOptionalTlv = parseOptionalTlv(tempCb);
-
-        return new PcepSrpObjectVer1(srpObjHeader, bRFlag, bSFlag, srpID, llOptionalTlv);
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) throws PcepParseException {
-
-        int objStartIndex = cb.writerIndex();
-
-        //write common header
-        int objLenIndex = srpObjHeader.write(cb);
-
-        //write Flags
-        byte bFlag;
-
-        bFlag = (bRFlag) ? BBIT_SET : BBIT_RESET;
-        bFlag |= (((bSFlag) ? BBIT_SET : BBIT_RESET) << 1);
-
-        cb.writeInt(bFlag);
-
-        //write SrpId
-        cb.writeInt(srpId);
-
-        // Add optional TLV
-        if (!packOptionalTlv(cb)) {
-            throw new PcepParseException("Failed to write srp tlv to channel buffer.");
-        }
-
-        //now write SRP Object Length
-        cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex));
-
-        return cb.writerIndex();
-    }
-
-    /**
-     * Parse Optional TLvs from the channel buffer.
-     *
-     * @param cb of type channel buffer
-     * @return list of optional tlvs
-     * @throws PcepParseException when unsupported tlv is received in srp object
-     */
-    public static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException {
-
-        LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>();
-
-        while (MINIMUM_COMMON_HEADER_LENGTH <= cb.readableBytes()) {
-
-            PcepValueType tlv;
-            short hType = cb.readShort();
-            short hLength = cb.readShort();
-
-            switch (hType) {
-            case SymbolicPathNameTlv.TYPE:
-                if (cb.readableBytes() < hLength) {
-                    throw new PcepParseException("Length is not valid in SymbolicPathNameTlv");
-                }
-                tlv = SymbolicPathNameTlv.read(cb, hLength);
-                break;
-            case PathSetupTypeTlv.TYPE:
-                if (cb.readableBytes() != PathSetupTypeTlv.LENGTH) {
-                    throw new PcepParseException("Length is not valid in PathSetupTypeTlv");
-                }
-                tlv = PathSetupTypeTlv.of(cb.readInt());
-                break;
-            default:
-                // Skip the unknown TLV.
-                cb.skipBytes(hLength);
-                tlv = null;
-                log.info("Received unsupported TLV type :" + hType + " in SRP object.");
-            }
-
-            // Check for the padding
-            int pad = hLength % 4;
-            if (0 < pad) {
-                pad = 4 - pad;
-                if (pad <= cb.readableBytes()) {
-                    cb.skipBytes(pad);
-                }
-            }
-
-            if (tlv != null) {
-                llOutOptionalTlv.add(tlv);
-            }
-        }
-
-        return llOutOptionalTlv;
-    }
-
-    /**
-     * Writes optional tlvs to channel buffer.
-     *
-     * @param cb of type channel buffer
-     * @return true if writing optional tlv to channel buffer is success.
-     */
-    protected boolean packOptionalTlv(ChannelBuffer cb) {
-
-        ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator();
-
-        while (listIterator.hasNext()) {
-            PcepValueType tlv = listIterator.next();
-
-            if (tlv == null) {
-                log.debug("tlv is null from OptionalTlv list");
-                continue;
-            }
-            tlv.write(cb);
-
-            // need to take care of padding
-            int pad = tlv.getLength() % 4;
-
-            if (0 != pad) {
-                pad = 4 - pad;
-                for (int i = 0; i < pad; ++i) {
-                    cb.writeByte((byte) 0);
-                }
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Builder class for PCEP srp Object.
-     */
-    public static class Builder implements PcepSrpObject.Builder {
-        private boolean bIsHeaderSet = false;
-        private boolean bIsSrpIdset = false;
-        private boolean bIsRFlagSet = false;
-        private boolean bIsSFlagSet = false;
-
-        private PcepObjectHeader srpObjHeader;
-        private int srpId;
-        private boolean bRFlag;
-        private boolean bSFlag;
-        LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>();
-
-        private boolean bIsPFlagSet = false;
-        private boolean bPFlag;
-
-        private boolean bIsIFlagSet = false;
-        private boolean bIFlag;
-
-        @Override
-        public PcepSrpObject build() throws PcepParseException {
-            PcepObjectHeader srpObjHeader = this.bIsHeaderSet ? this.srpObjHeader : DEFAULT_SRP_OBJECT_HEADER;
-
-            boolean bRFlag = this.bIsRFlagSet ? this.bRFlag : FLAG_DEFAULT_VALUE;
-            boolean bSFlag = this.bIsSFlagSet ? this.bSFlag : FLAG_DEFAULT_VALUE;
-
-            if (!this.bIsSrpIdset) {
-                throw new PcepParseException("SrpID not set while building SRP Object.");
-            }
-
-            if (bIsPFlagSet) {
-                srpObjHeader.setPFlag(bPFlag);
-            }
-
-            if (bIsIFlagSet) {
-                srpObjHeader.setIFlag(bIFlag);
-            }
-
-            return new PcepSrpObjectVer1(srpObjHeader, bRFlag, bSFlag, this.srpId, this.llOptionalTlv);
-        }
-
-        @Override
-        public PcepObjectHeader getSrpObjHeader() {
-            return this.srpObjHeader;
-        }
-
-        @Override
-        public Builder setSrpObjHeader(PcepObjectHeader obj) {
-            this.srpObjHeader = obj;
-            this.bIsHeaderSet = true;
-            return this;
-        }
-
-        @Override
-        public int getSrpID() {
-            return this.srpId;
-        }
-
-        @Override
-        public Builder setSrpID(int srpID) {
-            this.srpId = srpID;
-            this.bIsSrpIdset = true;
-            return this;
-        }
-
-        @Override
-        public boolean getRFlag() {
-            return this.bRFlag;
-        }
-
-        @Override
-        public Builder setRFlag(boolean bRFlag) {
-            this.bRFlag = bRFlag;
-            this.bIsRFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public boolean getSFlag() {
-            return this.bSFlag;
-        }
-
-        @Override
-        public Builder setSFlag(boolean bSFlag) {
-            this.bSFlag = bSFlag;
-            this.bIsSFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) {
-            this.llOptionalTlv = llOptionalTlv;
-            return this;
-        }
-
-        @Override
-        public LinkedList<PcepValueType> getOptionalTlv() {
-            return this.llOptionalTlv;
-        }
-
-        @Override
-        public Builder setPFlag(boolean value) {
-            this.bPFlag = value;
-            this.bIsPFlagSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setIFlag(boolean value) {
-            this.bIFlag = value;
-            this.bIsIFlagSet = true;
-            return this;
-        }
-
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("RFlag", bRFlag)
-                .add("SFlag", bSFlag)
-                .add("SRPID", srpId)
-                .add("OptionalTlvList", llOptionalTlv)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepStateReportVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepStateReportVer1.java
deleted file mode 100644
index 4ebe8a8..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepStateReportVer1.java
+++ /dev/null
@@ -1,421 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepAttribute;
-import org.onosproject.pcepio.protocol.PcepBandwidthObject;
-import org.onosproject.pcepio.protocol.PcepEroObject;
-import org.onosproject.pcepio.protocol.PcepLspObject;
-import org.onosproject.pcepio.protocol.PcepRroObject;
-import org.onosproject.pcepio.protocol.PcepSrpObject;
-import org.onosproject.pcepio.protocol.PcepStateReport;
-import org.onosproject.pcepio.types.PcepObjectHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-
-/**
- * Provide the State Report for the Pcep Report Message.
- * Reference :PCE extensions for stateful draft-ietf-pce-stateful-pce-10.
- */
-public class PcepStateReportVer1 implements PcepStateReport {
-    /*
-     * <state-report>     ::= [<SRP>]
-                               <LSP>
-                               <path>
-       Where:
-               <path>     ::= <ERO><attribute-list>[<RRO>]
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepStateReport.class);
-
-    public static final int OBJECT_HEADER_LENGTH = 4;
-
-    /**
-     * Provides PCEP Message path for report message.
-     */
-    public class PcepMsgPath implements PcepStateReport.PcepMsgPath {
-
-        /*
-         * <path>                  ::= <ERO><attribute-list>[<RRO>]
-         */
-
-        //PcepEroObject
-        private PcepEroObject eroObj;
-        private boolean isEroObjectSet;
-        //PcepAttribute List
-        private PcepAttribute attrList;
-        private boolean isAttributeListSet;
-        //PcepRroObject
-        private PcepRroObject rroObj;
-        private boolean isRroObjectSet;
-        private PcepBandwidthObject bandwidth;
-        private boolean isBandwidthObjectSet;
-
-        /**
-         * Constructor to reset the parameters.
-         */
-        public PcepMsgPath() {
-            eroObj = null;
-            attrList = null;
-            rroObj = null;
-            this.isEroObjectSet = false;
-            this.isAttributeListSet = false;
-            this.isRroObjectSet = false;
-            this.isBandwidthObjectSet = false;
-        }
-
-        /**
-         * Constructor to initialize the parameters from PCEP Message path.
-         *
-         * @param eroObj PCEP ERO Object
-         * @param attrList PCEP Attribute
-         * @param rroObj PCEP Rro Object
-         * @param bandwidth PCEP bandwidth object
-         */
-        public PcepMsgPath(PcepEroObject eroObj, PcepAttribute attrList, PcepRroObject rroObj,
-                           PcepBandwidthObject bandwidth) {
-
-            this.eroObj = eroObj;
-            this.attrList = attrList;
-            this.rroObj = rroObj;
-            this.bandwidth = bandwidth;
-            if (rroObj == null) {
-                this.isRroObjectSet = false;
-            } else {
-                this.isRroObjectSet = true;
-            }
-            if (eroObj == null) {
-                this.isEroObjectSet = false;
-            } else {
-                this.isEroObjectSet = true;
-            }
-            if (attrList == null) {
-                this.isAttributeListSet = false;
-            } else {
-                this.isAttributeListSet = true;
-            }
-            if (bandwidth == null) {
-                this.isBandwidthObjectSet = false;
-            } else {
-                this.isBandwidthObjectSet = true;
-            }
-        }
-
-        /**
-         * Returns PcepEroObject.
-         *
-         * @return eroObj PCEP ERO Object
-         */
-        @Override
-        public PcepEroObject getEroObject() {
-            return this.eroObj;
-        }
-
-        /**
-         * Returns PCEP Attribute.
-         *
-         * @return attrList Attribute list
-         */
-        @Override
-        public PcepAttribute getPcepAttribute() {
-            return this.attrList;
-        }
-
-        /**
-         * Returns PcepRroObject.
-         *
-         * @return rroObj PCEP RRO Object
-         */
-        @Override
-        public PcepRroObject getRroObject() {
-            return this.rroObj;
-        }
-
-        @Override
-        public PcepBandwidthObject getBandwidthObject() {
-            return this.bandwidth;
-        }
-
-        @Override
-        public void setEroObject(PcepEroObject eroObj) {
-            this.eroObj = eroObj;
-        }
-
-        @Override
-        public void setPcepAttribute(PcepAttribute attrList) {
-            this.attrList = attrList;
-        }
-
-        @Override
-        public void setRroObject(PcepRroObject rroObj) {
-            this.rroObj = rroObj;
-        }
-
-        @Override
-        public void setBandwidthObject(PcepBandwidthObject bandwidth) {
-            this.bandwidth = bandwidth;
-        }
-
-        /**
-         * Reads all the Objects for PCEP Message Path.
-         *
-         * @param bb of type channel buffer
-         * @return PCEP Message path
-         * @throws PcepParseException when fails to read pcep message path
-         */
-        @Override
-        public PcepMsgPath read(ChannelBuffer bb) throws PcepParseException {
-
-            PcepEroObject eroObj;
-            PcepAttribute attrList;
-            PcepRroObject rroObj = null;
-            PcepBandwidthObject bandwidth = null;
-
-            eroObj = PcepEroObjectVer1.read(bb);
-            attrList = PcepAttributeVer1.read(bb);
-
-            boolean bBreakWhile = false;
-            while (0 < bb.readableBytes()) {
-
-                if (bb.readableBytes() < OBJECT_HEADER_LENGTH) {
-                    break;
-                }
-                bb.markReaderIndex();
-                PcepObjectHeader tempObjHeader = PcepObjectHeader.read(bb);
-                bb.resetReaderIndex();
-                byte yObjClass = tempObjHeader.getObjClass();
-
-                switch (yObjClass) {
-                case PcepRroObjectVer1.RRO_OBJ_CLASS:
-                    rroObj = PcepRroObjectVer1.read(bb);
-                    break;
-                case PcepInterLayerObjectVer1.INTER_LAYER_OBJ_CLASS:
-                    bb.skipBytes(tempObjHeader.getObjLen());
-                    break;
-                case PcepBandwidthObjectVer1.BANDWIDTH_OBJ_CLASS:
-                    bandwidth = PcepBandwidthObjectVer1.read(bb);
-                    break;
-                default:
-                    //Otherthan above objects handle those objects in caller.
-                    bBreakWhile = true;
-                    break;
-                }
-                if (bBreakWhile) {
-                    break;
-                }
-            }
-            return new PcepMsgPath(eroObj, attrList, rroObj, bandwidth);
-        }
-
-        /**
-         * Writes all the objects for PCEP message path.
-         *
-         * @param bb of type channel buffer.
-         * @return object length index
-         * @throws PcepParseException when fails to write to channel buffer
-         */
-        @Override
-        public int write(ChannelBuffer bb) throws PcepParseException {
-            int iLenStartIndex = bb.writerIndex();
-
-            //write Object header
-            if (this.isEroObjectSet) {
-                this.eroObj.write(bb);
-            } else {
-                throw new PcepParseException("Ero object is not set in path");
-            }
-
-            if (this.isAttributeListSet) {
-                this.attrList.write(bb);
-            }
-
-            // RRO is optional check and read
-            if (this.isRroObjectSet) {
-                this.rroObj.write(bb);
-                // bandwidth should come along with RRO.
-                if (this.isBandwidthObjectSet) {
-                    this.bandwidth.write(bb);
-                }
-            }
-            return bb.writerIndex() - iLenStartIndex;
-        }
-
-        @Override
-        public String toString() {
-            ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass());
-
-            if (attrList != null) {
-                toStrHelper.add("AttributeList", attrList);
-            }
-            if (rroObj instanceof PcepRroObjectVer1) {
-                toStrHelper.add("RroObject", rroObj);
-            }
-            if (bandwidth instanceof PcepBandwidthObjectVer1) {
-                toStrHelper.add("bandwidthObject", bandwidth);
-            }
-            return toStrHelper.toString();
-        }
-    }
-
-    //SRP Object
-    private PcepSrpObject srpObject;
-    //LSP Object
-    private PcepLspObject lspObject;
-    //PcepMsgPath
-    private PcepStateReport.PcepMsgPath msgPath;
-
-    /**
-     * Constructor to reset objects.
-     */
-    public PcepStateReportVer1() {
-        this.srpObject = null;
-        this.lspObject = null;
-        this.msgPath = null;
-    }
-
-    public PcepStateReportVer1(PcepSrpObject srpObject, PcepLspObject lspObject, PcepStateReport.PcepMsgPath msgPath) {
-        this.srpObject = srpObject;
-        this.lspObject = lspObject;
-        this.msgPath = msgPath;
-    }
-
-    @Override
-    public PcepSrpObject getSrpObject() {
-        return srpObject;
-    }
-
-    @Override
-    public PcepLspObject getLspObject() {
-        return lspObject;
-    }
-
-    @Override
-    public PcepStateReport.PcepMsgPath getMsgPath() {
-        return msgPath;
-    }
-
-    @Override
-    public void setSrpObject(PcepSrpObject srpObj) {
-        this.srpObject = srpObj;
-    }
-
-    @Override
-    public void setLspObject(PcepLspObject lspObject) {
-        this.lspObject = lspObject;
-    }
-
-    @Override
-    public void setMsgPath(PcepStateReport.PcepMsgPath msgPath) {
-        this.msgPath = msgPath;
-    }
-
-    /**
-     * Builder class for PCEP state report.
-     */
-    public static class Builder implements PcepStateReport.Builder {
-
-        private boolean bIsSrpObjectSet = false;
-        private boolean bIsLspObjectSet = false;
-        private boolean bIsPcepMsgPathSet = false;
-
-        //PCEP SRP Object
-        private PcepSrpObject srpObject;
-        //PCEP LSP Object
-        private PcepLspObject lspObject;
-        //PCEP Attribute list
-        private PcepStateReport.PcepMsgPath msgPath;
-
-        @Override
-        public PcepStateReport build() throws PcepParseException {
-
-            //PCEP SRP Object
-            PcepSrpObject srpObject = null;
-            //PCEP LSP Object
-            PcepLspObject lspObject = null;
-            //PCEP Attribute list
-            PcepStateReport.PcepMsgPath msgPath = null;
-
-            if (this.bIsSrpObjectSet) {
-                srpObject = this.srpObject;
-            }
-
-            if (!this.bIsLspObjectSet) {
-                throw new PcepParseException(" LSP Object NOT Set while building PcepStateReport.");
-            } else {
-                lspObject = this.lspObject;
-            }
-            if (!this.bIsPcepMsgPathSet) {
-                throw new PcepParseException(" Message Path NOT Set while building PcepStateReport.");
-            } else {
-                msgPath = this.msgPath;
-            }
-
-            return new PcepStateReportVer1(srpObject, lspObject, msgPath);
-        }
-
-        @Override
-        public PcepSrpObject getSrpObject() {
-            return this.srpObject;
-        }
-
-        @Override
-        public PcepLspObject getLspObject() {
-            return this.lspObject;
-        }
-
-        @Override
-        public PcepStateReport.PcepMsgPath getMsgPath() {
-            return this.msgPath;
-        }
-
-        @Override
-        public Builder setSrpObject(PcepSrpObject srpobj) {
-            this.srpObject = srpobj;
-            this.bIsSrpObjectSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setLspObject(PcepLspObject lspObject) {
-            this.lspObject = lspObject;
-            this.bIsLspObjectSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setMsgPath(PcepStateReport.PcepMsgPath msgPath) {
-            this.msgPath = msgPath;
-            this.bIsPcepMsgPathSet = true;
-            return this;
-        }
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("SrpObject", srpObject)
-                .add("LspObject", lspObject)
-                .add("MsgPath", msgPath)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateMsgVer1.java
deleted file mode 100644
index fdc6e1f..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateMsgVer1.java
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepLspObject;
-import org.onosproject.pcepio.protocol.PcepMessageReader;
-import org.onosproject.pcepio.protocol.PcepMessageWriter;
-import org.onosproject.pcepio.protocol.PcepMsgPath;
-import org.onosproject.pcepio.protocol.PcepSrpObject;
-import org.onosproject.pcepio.protocol.PcepType;
-import org.onosproject.pcepio.protocol.PcepUpdateMsg;
-import org.onosproject.pcepio.protocol.PcepUpdateRequest;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP update message.
- */
-
-class PcepUpdateMsgVer1 implements PcepUpdateMsg {
-
-    // Pcep version: 1
-
-    /*    The format of the PCUpd message is as follows:
-     *      <PCUpd Message>             ::= <Common Header>
-     *                                       <update-request-list>
-     *      Where:
-     *        <update-request-list>     ::= <update-request>[<update-request-list>]
-     *        <update-request>          ::= <SRP>
-     *                                      <LSP>
-     *                                      <path>
-     *      Where:
-     *        <path>                     ::= <ERO><attribute-list>
-     *       Where:
-     *        <attribute-list> is defined in [RFC5440] and extended by PCEP extensions.
-     *       where:
-     *        <attribute-list>            ::=[<LSPA>]
-     *                                      [<BANDWIDTH>]
-     *                                      [<metric-list>]
-     *                                      [<IRO>]
-     *        <metric-list>               ::=<METRIC>[<metric-list>]
-     *
-     *            0                   1                   2                   3
-     *           0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     *          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     *          | Ver |  Flags  |  Message-Type |       Message-Length          |
-     *          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     *          |                                                               |
-     *          //                  UPDATE REQUEST LIST                        //
-     *          |                                                               |
-     *          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     *
-     *          Reference:Internet-Draft-PCEP Extensions-for-Stateful-PCE-10
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepUpdateMsgVer1.class);
-
-    public static final byte PACKET_VERSION = 1;
-    // UpdateMsgMinLength = SrpObjMinLentgh(12)+LspObjMinLength(8)+EroObjMinLength(12)+ CommonHeaderLength(4)
-    public static final short PACKET_MINIMUM_LENGTH = 36;
-    public static final PcepType MSG_TYPE = PcepType.UPDATE;
-    //Update Request List
-    private LinkedList<PcepUpdateRequest> llUpdateRequestList;
-
-    public static final PcepUpdateMsgVer1.Reader READER = new Reader();
-
-    /**
-     * Reader reads UpdateMessage from the channel.
-     */
-    static class Reader implements PcepMessageReader<PcepUpdateMsg> {
-
-        LinkedList<PcepUpdateRequest> llUpdateRequestList;
-
-        @Override
-        public PcepUpdateMsg readFrom(ChannelBuffer cb) throws PcepParseException {
-
-            if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException("Readable bytes is less than update message minimum length");
-            }
-
-            llUpdateRequestList = new LinkedList<>();
-
-            // fixed value property version == 1
-            byte version = cb.readByte();
-            version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG);
-            if (version != PACKET_VERSION) {
-                throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), got=" + version);
-            }
-            // fixed value property type == 11
-            byte type = cb.readByte();
-            if (type != MSG_TYPE.getType()) {
-                throw new PcepParseException("Wrong type. Expected=PcepType.UPDATE(11), got=" + type);
-            }
-            short length = cb.readShort();
-            if (length < PACKET_MINIMUM_LENGTH) {
-                throw new PcepParseException("Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: "
-                        + length);
-            }
-
-            log.debug("reading update message of length " + length);
-
-            // parse Update Request list
-            if (!parseUpdateRequestList(cb)) {
-                throw new PcepParseException("parsing Update Request List Failed.");
-            }
-
-            return new PcepUpdateMsgVer1(llUpdateRequestList);
-        }
-
-        /**
-         * Parse update request list.
-         *
-         * @param cb of type channel buffer
-         * @return true after parsing Update Request List
-         * @throws PcepParseException while parsing update request list from channel buffer
-         */
-        public boolean parseUpdateRequestList(ChannelBuffer cb) throws PcepParseException {
-
-            /*                     <update-request-list>
-             * Where:
-             *   <update-request-list>     ::= <update-request>[<update-request-list>]
-             *   <update-request>          ::= <SRP>
-             *                                 <LSP>
-             *                                 <path>
-             * Where:
-             *   <path>                     ::= <ERO><attribute-list>
-             * Where:
-             * <attribute-list> is defined in [RFC5440] and extended by PCEP extensions.
-             */
-
-            while (0 < cb.readableBytes()) {
-
-                PcepUpdateRequest pceUpdateReq = new PcepUpdateRequestVer1();
-
-                //Read SRP Object and Store it.
-                PcepSrpObject srpObj;
-                srpObj = PcepSrpObjectVer1.read(cb);
-                pceUpdateReq.setSrpObject(srpObj);
-
-                //Read LSP object and Store it.
-                PcepLspObject lspObj;
-                lspObj = PcepLspObjectVer1.read(cb);
-                pceUpdateReq.setLspObject(lspObj);
-
-                // Read Msg Path and store it.
-                PcepMsgPath msgPath = new PcepMsgPathVer1().read(cb);
-                pceUpdateReq.setMsgPath(msgPath);
-
-                llUpdateRequestList.add(pceUpdateReq);
-            }
-            return true;
-        }
-    }
-
-    /**
-     * Constructor to initialize llUpdateRequestList.
-     *
-     * @param llUpdateRequestList list of PcepUpdateRequest.
-     */
-    PcepUpdateMsgVer1(LinkedList<PcepUpdateRequest> llUpdateRequestList) {
-        this.llUpdateRequestList = llUpdateRequestList;
-    }
-
-    /**
-     * Builder class for PCPE update message.
-     */
-    static class Builder implements PcepUpdateMsg.Builder {
-
-        // PCEP report message fields
-        LinkedList<PcepUpdateRequest> llUpdateRequestList;
-
-        @Override
-        public PcepVersion getVersion() {
-            return PcepVersion.PCEP_1;
-        }
-
-        @Override
-        public PcepType getType() {
-            return PcepType.UPDATE;
-        }
-
-        @Override
-        public PcepUpdateMsg build() {
-            return new PcepUpdateMsgVer1(this.llUpdateRequestList);
-        }
-
-        @Override
-        public LinkedList<PcepUpdateRequest> getUpdateRequestList() {
-            return this.llUpdateRequestList;
-        }
-
-        @Override
-        public Builder setUpdateRequestList(LinkedList<PcepUpdateRequest> llUpdateRequestList) {
-            this.llUpdateRequestList = llUpdateRequestList;
-            return this;
-        }
-
-    }
-
-    @Override
-    public void writeTo(ChannelBuffer cb) throws PcepParseException {
-        WRITER.write(cb, this);
-    }
-
-    static final Writer WRITER = new Writer();
-
-    /**
-     * Writer writes UpdateMessage to the channel buffer.
-     */
-    static class Writer implements PcepMessageWriter<PcepUpdateMsgVer1> {
-
-        @Override
-        public void write(ChannelBuffer cb, PcepUpdateMsgVer1 message) throws PcepParseException {
-
-            int startIndex = cb.writerIndex();
-            // first 3 bits set to version
-            cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG));
-            // message type
-            cb.writeByte(MSG_TYPE.getType());
-            /* length is length of variable message, will be updated at the end
-             * Store the position of message
-             * length in buffer
-             */
-            int msgLenIndex = cb.writerIndex();
-
-            cb.writeShort((short) 0);
-            ListIterator<PcepUpdateRequest> listIterator = message.llUpdateRequestList.listIterator();
-
-            while (listIterator.hasNext()) {
-
-                PcepUpdateRequest updateReq = listIterator.next();
-
-                //SRP object is mandatory
-                PcepSrpObject srpObj = updateReq.getSrpObject();
-                srpObj.write(cb);
-
-                //LSP object is mandatory
-                PcepLspObject lspObj = updateReq.getLspObject();
-                lspObj.write(cb);
-
-                //PATH object is mandatory
-                PcepMsgPath msgPath = updateReq.getMsgPath();
-                msgPath.write(cb);
-            }
-
-            // update message length field
-            int length = cb.writerIndex() - startIndex;
-            cb.setShort(msgLenIndex, (short) length);
-        }
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public PcepType getType() {
-        return MSG_TYPE;
-    }
-
-    @Override
-    public LinkedList<PcepUpdateRequest> getUpdateRequestList() {
-        return this.llUpdateRequestList;
-    }
-
-    @Override
-    public void setUpdateRequestList(LinkedList<PcepUpdateRequest> llUpdateRequestList) {
-        this.llUpdateRequestList = llUpdateRequestList;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("UpdateRequestList", llUpdateRequestList)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateRequestVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateRequestVer1.java
deleted file mode 100644
index 836b47d..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateRequestVer1.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol.ver1;
-
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepLspObject;
-import org.onosproject.pcepio.protocol.PcepMsgPath;
-import org.onosproject.pcepio.protocol.PcepSrpObject;
-import org.onosproject.pcepio.protocol.PcepUpdateRequest;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP Update Request List.
- */
-public class PcepUpdateRequestVer1 implements PcepUpdateRequest {
-
-    /*                     <update-request-list>
-     * Where:
-     *   <update-request-list>     ::= <update-request>[<update-request-list>]
-     *   <update-request>          ::= <SRP>
-     *                                 <LSP>
-     *                                 <path>
-     * Where:
-     *   <path>                     ::= <ERO><attribute-list>
-     * Where:
-     * <attribute-list> is defined in [RFC5440] and extended by PCEP extensions.
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepUpdateRequestVer1.class);
-
-    //PCEP SRP Object
-    private PcepSrpObject srpObject;
-    //PCEP LSP Object
-    private PcepLspObject lspObject;
-    //PCEP Message path
-    private PcepMsgPath msgPath;
-
-    /**
-     * Default constructor.
-     */
-    public PcepUpdateRequestVer1() {
-        srpObject = null;
-        lspObject = null;
-        msgPath = null;
-    }
-
-    /**
-     * Constructor to initialize all member variables.
-     *
-     * @param srpObject srp object
-     * @param lspObject lsp object
-     * @param msgPath message path object
-     */
-    public PcepUpdateRequestVer1(PcepSrpObject srpObject, PcepLspObject lspObject, PcepMsgPath msgPath) {
-        this.srpObject = srpObject;
-        this.lspObject = lspObject;
-        this.msgPath = msgPath;
-    }
-
-    @Override
-    public PcepSrpObject getSrpObject() {
-        return srpObject;
-    }
-
-    @Override
-    public PcepLspObject getLspObject() {
-        return lspObject;
-    }
-
-    @Override
-    public PcepMsgPath getMsgPath() {
-        return msgPath;
-    }
-
-    @Override
-    public void setSrpObject(PcepSrpObject srpObject) {
-        this.srpObject = srpObject;
-
-    }
-
-    @Override
-    public void setLspObject(PcepLspObject lspObject) {
-        this.lspObject = lspObject;
-    }
-
-    @Override
-    public void setMsgPath(PcepMsgPath msgPath) {
-        this.msgPath = msgPath;
-    }
-
-    /**
-     * Builder class for PCEP update request.
-     */
-    public static class Builder implements PcepUpdateRequest.Builder {
-
-        private boolean bIsSrpObjectSet = false;
-        private boolean bIsLspObjectSet = false;
-        private boolean bIsPcepMsgPathSet = false;
-
-        //PCEP SRP Object
-        private PcepSrpObject srpObject;
-        //PCEP LSP Object
-        private PcepLspObject lspObject;
-        //PCEP Attribute list
-        private PcepMsgPath msgPath;
-
-        @Override
-        public PcepUpdateRequest build() throws PcepParseException {
-
-            //PCEP SRP Object
-            PcepSrpObject srpObject = null;
-            //PCEP LSP Object
-            PcepLspObject lspObject = null;
-            //PCEP Attribute list
-            PcepMsgPath msgPath = null;
-
-            if (!this.bIsSrpObjectSet) {
-                throw new PcepParseException(" SRP Object NOT Set while building PcepUpdateRequest.");
-            } else {
-                srpObject = this.srpObject;
-            }
-            if (!this.bIsLspObjectSet) {
-                throw new PcepParseException(" LSP Object NOT Set while building PcepUpdateRequest.");
-            } else {
-                lspObject = this.lspObject;
-            }
-            if (!this.bIsPcepMsgPathSet) {
-                throw new PcepParseException(" Msg Path NOT Set while building PcepUpdateRequest.");
-            } else {
-                msgPath = this.msgPath;
-            }
-
-            return new PcepUpdateRequestVer1(srpObject, lspObject, msgPath);
-        }
-
-        @Override
-        public PcepSrpObject getSrpObject() {
-            return this.srpObject;
-        }
-
-        @Override
-        public PcepLspObject getLspObject() {
-            return this.lspObject;
-        }
-
-        @Override
-        public PcepMsgPath getMsgPath() {
-            return this.msgPath;
-        }
-
-        @Override
-        public Builder setSrpObject(PcepSrpObject srpobj) {
-            this.srpObject = srpobj;
-            this.bIsSrpObjectSet = true;
-            return this;
-
-        }
-
-        @Override
-        public Builder setLspObject(PcepLspObject lspObject) {
-            this.lspObject = lspObject;
-            this.bIsLspObjectSet = true;
-            return this;
-        }
-
-        @Override
-        public Builder setMsgPath(PcepMsgPath msgPath) {
-            this.msgPath = msgPath;
-            this.bIsPcepMsgPathSet = true;
-            return this;
-        }
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("SrpObject", srpObject)
-                .add("LspObject", lspObject)
-                .add("MsgPath", msgPath)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/package-info.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/package-info.java
deleted file mode 100644
index b5bea04..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of PCEP messages.
- */
-package org.onosproject.pcepio.protocol.ver1;
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AdministrativeGroupSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AdministrativeGroupSubTlv.java
deleted file mode 100644
index 373e5db..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AdministrativeGroupSubTlv.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Administrative Group Tlv which contains value (32 Bit ).
- */
-public class AdministrativeGroupSubTlv implements PcepValueType {
-
-    /* REFERENCE :[RFC5305]/3.1
-     *  0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |           Type=[TDB33]         |             Length=4         |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                     value (32 Bit )                           |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(AdministrativeGroupSubTlv.class);
-
-    public static final short TYPE = 22;
-    public static final short LENGTH = 4;
-
-    private final int rawValue;
-
-    /**
-     * Constructor to initialize rawValue.
-     *
-     * @param rawValue of Administrative-Group-Tlv.
-     */
-    public AdministrativeGroupSubTlv(int rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created AdministrativeGroupTlv object.
-     *
-     * @param raw value.
-     * @return object of Administrative-Group-Tlv
-     */
-    public static AdministrativeGroupSubTlv of(final int raw) {
-        return new AdministrativeGroupSubTlv(raw);
-    }
-
-    /**
-     * Returns raw value.
-     *
-     * @return rawValue raw value
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof AdministrativeGroupSubTlv) {
-            AdministrativeGroupSubTlv other = (AdministrativeGroupSubTlv) obj;
-            return Objects.equals(rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of Administrative-Group-Tlv.
-     *
-     * @param c input channel buffer
-     * @return object of Administrative-Group-Tlv
-     */
-    public static AdministrativeGroupSubTlv read(ChannelBuffer c) {
-        return AdministrativeGroupSubTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AutonomousSystemNumberSubObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AutonomousSystemNumberSubObject.java
deleted file mode 100644
index 9bf392d..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AutonomousSystemNumberSubObject.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * @author b00295750
- *
- */
-package org.onosproject.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Autonomous system number sub object.
- */
-public class AutonomousSystemNumberSubObject implements PcepValueType {
-
-    /*Reference : RFC 3209 : 4.3.3.4
-     *  0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |L|    Type     |     Length    |      AS number (2-octet)      |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-    private static final Logger log = LoggerFactory.getLogger(AutonomousSystemNumberSubObject.class);
-
-    public static final byte TYPE = (byte) 0x32;
-    public static final byte LENGTH = 4;
-    public static final byte VALUE_LENGTH = 2;
-    public static final byte OBJ_LENGTH = 4;
-    public static final byte LBIT = 0;
-    public static final int SHIFT_LBIT_POSITION = 7;
-    private short asNumber;
-
-    /**
-     * Constructor to initialize AS number.
-     *
-     * @param asNumber AS number
-     */
-    public AutonomousSystemNumberSubObject(short asNumber) {
-        this.asNumber = asNumber;
-    }
-
-    /**
-     * Returns a new instance of AutonomousSystemNumberSubObject.
-     *
-     * @param asNumber AS number
-     * @return object of AutonomousSystemNumberSubObject
-     */
-    public static AutonomousSystemNumberSubObject of(short asNumber) {
-        return new AutonomousSystemNumberSubObject(asNumber);
-    }
-
-    /**
-     * Returns value of AS number.
-     *
-     * @return value of AS number
-     */
-    public short getAsNumber() {
-        return asNumber;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(asNumber);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof AutonomousSystemNumberSubObject) {
-            AutonomousSystemNumberSubObject other = (AutonomousSystemNumberSubObject) obj;
-            return Objects.equals(this.asNumber, other.asNumber);
-        }
-        return false;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of AutonomousSystemNumberSubObject.
-     *
-     * @param c type of channel buffer
-     * @return object of AutonomousSystemNumberSubObject
-     */
-    public static PcepValueType read(ChannelBuffer c) {
-        short asNumber = c.readShort();
-        return new AutonomousSystemNumberSubObject(asNumber);
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        byte bValue = LBIT;
-        bValue = (byte) (bValue << SHIFT_LBIT_POSITION);
-        bValue = (byte) (bValue | TYPE);
-        c.writeByte(bValue);
-        c.writeByte(OBJ_LENGTH);
-        c.writeShort(asNumber);
-
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("AsNumber", asNumber)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AutonomousSystemSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AutonomousSystemSubTlv.java
deleted file mode 100644
index 7d50842..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AutonomousSystemSubTlv.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Autonomous-System-Tlv which contains opaque value (32 Bit AS Number).
- */
-public class AutonomousSystemSubTlv implements PcepValueType {
-
-    /* Reference :RFC3209
-     *  0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |           Type=[TBD10]         |             Length=4         |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                    opaque value (32 Bit AS Number)            |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(AutonomousSystemSubTlv.class);
-
-    public static final short TYPE = 1;
-    public static final short LENGTH = 4;
-
-    private final int rawValue;
-
-    /**
-     * Constructor to initialize rawValue.
-     *
-     * @param rawValue Autonomous-System-Tlv
-     */
-    public AutonomousSystemSubTlv(int rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created AutonomousSystemTlv object.
-     *
-     * @param raw value of opaque.
-     * @return object of Autonomous-System-Tlv
-     */
-    public static AutonomousSystemSubTlv of(final int raw) {
-        return new AutonomousSystemSubTlv(raw);
-    }
-
-    /**
-     * Returns opaque value.
-     *
-     * @return rawValue opaque value.
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof AutonomousSystemSubTlv) {
-            AutonomousSystemSubTlv other = (AutonomousSystemSubTlv) obj;
-            return Objects.equals(rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of AutonomousSystemTlv.
-     *
-     * @param c input channel buffer
-     * @return object of Autonomous-System-Tlv
-     */
-    public static AutonomousSystemSubTlv read(ChannelBuffer c) {
-        return AutonomousSystemSubTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("TYPE", TYPE)
-                .add("Length", LENGTH)
-                .add("value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/BgpLsIdentifierSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/BgpLsIdentifierSubTlv.java
deleted file mode 100644
index a36e846..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/BgpLsIdentifierSubTlv.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides BGP LS identifier which contains opaque value (32 Bit ID).
- */
-public class BgpLsIdentifierSubTlv implements PcepValueType {
-
-    /* Reference :draft-ietf-idr-ls-distribution-10
-     *  0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |           Type=[TBD11]         |             Length=4         |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                    opaque value (32 Bit ID).                  |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(BgpLsIdentifierSubTlv.class);
-
-    public static final short TYPE = 2;
-    public static final short LENGTH = 4;
-
-    private final int rawValue;
-
-    /**
-     * constructor to initialize rawValue.
-     *
-     * @param rawValue BGP LS identifier Tlv
-     */
-    public BgpLsIdentifierSubTlv(int rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created BGPLSidentifierTlv object.
-     *
-     * @param raw value
-     * @return object of BGPLSidentifierTlv
-     */
-    public static BgpLsIdentifierSubTlv of(final int raw) {
-        return new BgpLsIdentifierSubTlv(raw);
-    }
-
-    /**
-     * Returns opaque value.
-     *
-     * @return rawValue opaque value
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof BgpLsIdentifierSubTlv) {
-            BgpLsIdentifierSubTlv other = (BgpLsIdentifierSubTlv) obj;
-            return Objects.equals(rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of BGPLSidentifierTlv.
-     *
-     * @param c input channel buffer
-     * @return object of BGP LS identifier Tlv
-     */
-    public static BgpLsIdentifierSubTlv read(ChannelBuffer c) {
-        return BgpLsIdentifierSubTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ErrorObjListWithOpen.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ErrorObjListWithOpen.java
deleted file mode 100644
index 1876215..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ErrorObjListWithOpen.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepErrorObject;
-import org.onosproject.pcepio.protocol.PcepOpenObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provide the error object list with open object.
- */
-public class ErrorObjListWithOpen {
-    //errorObjList is mandatory
-    private List<PcepErrorObject> llerrorObjList;
-    // openObject is optional
-    private PcepOpenObject openObject;
-    // flag to check if open object is set or not
-    private boolean isOpenObjectSet;
-    private static final Logger log = LoggerFactory.getLogger(ErrorObjListWithOpen.class);
-
-    /**
-     * Constructor to initialize Error and OPEN object.
-     *
-     * @param errObj ERROR object list
-     * @param openObj OPEN object
-     */
-    public ErrorObjListWithOpen(List<PcepErrorObject> errObj, PcepOpenObject openObj) {
-        this.llerrorObjList = errObj;
-        this.openObject = openObj;
-        if (openObj != null) {
-            isOpenObjectSet = true;
-        } else {
-            isOpenObjectSet = false;
-        }
-    }
-
-    /**
-     * Constructor to initialize ERROR Object.
-     *
-     * @param errObj ERROR Object list
-     */
-    public ErrorObjListWithOpen(List<PcepErrorObject> errObj) {
-        this.llerrorObjList = errObj;
-        this.openObject = null;
-        isOpenObjectSet = false;
-    }
-
-    /**
-     * Return list of Error Types.
-     *
-     * @return error types list
-     */
-    public List<Integer> getErrorType() {
-        List<Integer> errorType = new LinkedList<>();
-        if (llerrorObjList != null) {
-            ListIterator<PcepErrorObject> errObjListIterator = llerrorObjList.listIterator();
-            int error;
-            PcepErrorObject errorObj;
-            while (errObjListIterator.hasNext()) {
-                errorObj = errObjListIterator.next();
-                error = errorObj.getErrorType();
-                errorType.add(error);
-            }
-        }
-        return errorType;
-    }
-
-    /**
-     * Return list of Error Values.
-     *
-     * @return error values list
-     */
-    public List<Integer> getErrorValue() {
-        List<Integer> errorValue = new LinkedList<>();
-        if (llerrorObjList != null) {
-            ListIterator<PcepErrorObject> errObjListIterator = llerrorObjList.listIterator();
-            int error;
-            PcepErrorObject errorObj;
-            while (errObjListIterator.hasNext()) {
-                errorObj = errObjListIterator.next();
-                error = errorObj.getErrorValue();
-                errorValue.add(error);
-            }
-        }
-        return errorValue;
-    }
-
-    /**
-     * Checks whether ERROR Object list is empty or not.
-     *
-     * @return true if ERROR Object list is empty otherwise false
-     */
-    public boolean isErrorObjListWithOpenPresent() {
-        // ( <error-obj-list> [<Open>]
-        // At least in this case <error-obj-list> should be present.
-        return !this.llerrorObjList.isEmpty();
-    }
-
-    /**
-     * Write Error Object List and Open Object to channel buffer.
-     *
-     * @param cb output channel buffer
-     * @return length of written Error object list with open
-     * @throws PcepParseException when mandatory fields are not set
-     */
-    public int write(ChannelBuffer cb) throws PcepParseException {
-        int iLenStartIndex = cb.writerIndex();
-        boolean bIsErrObjListFound = false;
-
-        //<error-obj-list> is mandatory , if not present throw exception.
-        if (llerrorObjList != null) {
-            ListIterator<PcepErrorObject> errObjListIterator = llerrorObjList.listIterator();
-            while (errObjListIterator.hasNext()) {
-                errObjListIterator.next().write(cb);
-                bIsErrObjListFound = true;
-            }
-        }
-
-        if (!bIsErrObjListFound) {
-            throw new PcepParseException("<error-obj-list> is mandatory.");
-        }
-
-        //Open Object is optional , if present write.
-        if (openObject != null) {
-            openObject.write(cb);
-        }
-
-        return cb.writerIndex() - iLenStartIndex;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("ErrorObjList", llerrorObjList)
-                .add("Open", openObject)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/GmplsCapabilityTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/GmplsCapabilityTlv.java
deleted file mode 100644
index 2125185..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/GmplsCapabilityTlv.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides GMPLS Capability Tlv.
- */
-public class GmplsCapabilityTlv implements PcepValueType {
-
-    /*
-     * GMPLS-CAPABILITY TLV format
-     * reference :draft-ietf-pce-gmpls-pcep-extensions -2.1.1
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |               Type=14       |             Length              |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                             Flags                             |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-    private static final Logger log = LoggerFactory.getLogger(GmplsCapabilityTlv.class);
-
-    public static final short TYPE = 14;
-    public static final short LENGTH = 4;
-
-    private final int rawValue;
-
-    /**
-     * Constructor to initialize raw value.
-     *
-     * @param rawValue of Gmpls-Capability-Tlv
-     */
-    public GmplsCapabilityTlv(int rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created GmplsCapabilityTlv object.
-     *
-     * @param raw Flags value
-     * @return object of Gmpls-Capability-Tlv
-     */
-    public static GmplsCapabilityTlv of(final int raw) {
-        return new GmplsCapabilityTlv(raw);
-    }
-
-    /**
-     * Returns value of Flags.
-     *
-     * @return rawValue Flags
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof GmplsCapabilityTlv) {
-            GmplsCapabilityTlv other = (GmplsCapabilityTlv) obj;
-            return Objects.equals(rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of Gmpls-Capability-Tlv.
-     *
-     * @param c input channel buffer
-     * @return object of Gmpls-Capability-Tlv
-     */
-    public static GmplsCapabilityTlv read(ChannelBuffer c) {
-        return GmplsCapabilityTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4InterfaceAddressSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4InterfaceAddressSubTlv.java
deleted file mode 100644
index 3821daa..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4InterfaceAddressSubTlv.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides IPv4 Interface Address .
- */
-public class IPv4InterfaceAddressSubTlv implements PcepValueType {
-
-    /*
-     * reference :[RFC5305]/3.2
-      0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |           Type=6              |             Length=4          |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                IPv4 Interface Address                         |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(IPv4InterfaceAddressSubTlv.class);
-
-    public static final short TYPE = 7;
-    public static final short LENGTH = 4;
-
-    private final int rawValue;
-
-    /**
-     * Constructor to initialize rawValue.
-     *
-     * @param rawValue of IPv4-Interface-Address.
-     */
-    public IPv4InterfaceAddressSubTlv(int rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created IPv4InterfaceAddressTlv object.
-     *
-     * @param raw value of IPv4-Interface-Address
-     * @return object of IPv4-Interface-Address-Tlv
-     */
-    public static IPv4InterfaceAddressSubTlv of(final int raw) {
-        return new IPv4InterfaceAddressSubTlv(raw);
-    }
-
-    /**
-     * Returns value of IPv4 Interface Address.
-     *
-     * @return rawValue IPv4 Interface Address
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof IPv4InterfaceAddressSubTlv) {
-            IPv4InterfaceAddressSubTlv other = (IPv4InterfaceAddressSubTlv) obj;
-            return Objects.equals(rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of IPv4InterfaceAddressTlv.
-     *
-     * @param c input channel buffer
-     * @return object of IPv4-Interface-Address-Tlv
-     */
-    public static IPv4InterfaceAddressSubTlv read(ChannelBuffer c) {
-        return IPv4InterfaceAddressSubTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4NeighborAddressSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4NeighborAddressSubTlv.java
deleted file mode 100644
index 1142209..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4NeighborAddressSubTlv.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides IPv4 Neighbor Address .
- */
-public class IPv4NeighborAddressSubTlv implements PcepValueType {
-
-    /* Reference :[RFC5305]/3.3
-      0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |           Type=8              |             Length=4          |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                   IPv4 Neighbor Address                       |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(IPv4NeighborAddressSubTlv.class);
-
-    public static final short TYPE = 8;
-    public static final short LENGTH = 4;
-
-    private final int rawValue;
-
-    /**
-     * Constructor to initialize rawValue.
-     *
-     * @param rawValue IPv4-Neighbor-Address-Tlv
-     */
-    public IPv4NeighborAddressSubTlv(int rawValue) {
-        log.debug("IPv4NeighborAddressTlv");
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created IPv4NeighborAddressTlv object.
-     *
-     * @param raw value of IPv4-Neighbor-Address
-     * @return object of IPv4NeighborAddressTlv
-     */
-    public static IPv4NeighborAddressSubTlv of(final int raw) {
-        return new IPv4NeighborAddressSubTlv(raw);
-    }
-
-    /**
-     * Returns value of IPv4 Neighbor Address.
-     *
-     * @return rawValue IPv4 Neighbor Address
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof IPv4NeighborAddressSubTlv) {
-            IPv4NeighborAddressSubTlv other = (IPv4NeighborAddressSubTlv) obj;
-            return Objects.equals(rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of IPv4-Neighbor-Address-Tlv.
-     *
-     * @param c input channel buffer
-     * @return object of IPv4-Neighbor-Address-Tlv
-     */
-    public static IPv4NeighborAddressSubTlv read(ChannelBuffer c) {
-        return IPv4NeighborAddressSubTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4RouterIdOfLocalNodeSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4RouterIdOfLocalNodeSubTlv.java
deleted file mode 100644
index 81b48d0..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4RouterIdOfLocalNodeSubTlv.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides IPv4 Router Id Of Local Node.
- */
-public class IPv4RouterIdOfLocalNodeSubTlv implements PcepValueType {
-
-    /* Reference:[RFC5305]/4.3
-     * 0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |              Type=[TDB25]      |             Length=4         |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |               IPv4 Router Id Of Local Node                |
-     +-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(IPv4RouterIdOfLocalNodeSubTlv.class);
-
-    public static final short TYPE = 17;
-    public static final short LENGTH = 4;
-
-    private final int rawValue;
-
-    /**
-     * Constructor to initialize rawValue.
-     *
-     * @param rawValue IPv4-RouterId-Of-Local-Node-Tlv
-     */
-    public IPv4RouterIdOfLocalNodeSubTlv(int rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created IPv4RouterIdOfLocalNodeTlv object.
-     *
-     * @param raw value of IPv4-RouterId-Of-Local-Node
-     * @return object of IPv4RouterIdOfLocalNodeTlv
-     */
-    public static IPv4RouterIdOfLocalNodeSubTlv of(final int raw) {
-        return new IPv4RouterIdOfLocalNodeSubTlv(raw);
-    }
-
-    /**
-     * Returns value of IPv4 Router Id Of Local Node.
-     *
-     * @return rawValue IPv4 Router Id Of Local Node
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof IPv4RouterIdOfLocalNodeSubTlv) {
-            IPv4RouterIdOfLocalNodeSubTlv other = (IPv4RouterIdOfLocalNodeSubTlv) obj;
-            return Objects.equals(rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of IPv4RouterIdOfLocalNodeTlv.
-     *
-     * @param c input channel buffer
-     * @return object of IPv4RouterIdOfLocalNodeTlv
-     */
-    public static IPv4RouterIdOfLocalNodeSubTlv read(ChannelBuffer c) {
-        return IPv4RouterIdOfLocalNodeSubTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4RouterIdOfRemoteNodeSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4RouterIdOfRemoteNodeSubTlv.java
deleted file mode 100644
index f5b6daa..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4RouterIdOfRemoteNodeSubTlv.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides IPv4 Router Id Of Remote Node.
- */
-public class IPv4RouterIdOfRemoteNodeSubTlv implements PcepValueType {
-
-    /* Reference :[RFC5305]/4.3
-     * 0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |              Type=[TDB28]      |             Length=4         |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |               IPv4 Router Id Of Remote Node                |
-     +-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(IPv4RouterIdOfRemoteNodeSubTlv.class);
-
-    public static final short TYPE = 19;
-    public static final short LENGTH = 4;
-
-    private final int rawValue;
-
-    /**
-     * Constructor to initialize rawValue.
-     *
-     * @param rawValue IPv4 RouterId Of Remote Node Tlv
-     */
-    public IPv4RouterIdOfRemoteNodeSubTlv(int rawValue) {
-        log.debug("IPv4RouterIdOfRemoteNodeTlv");
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created IPv4RouterIdOfRemoteNodeTlv object.
-     *
-     * @param raw IPv4 RouterId Of Remote Node
-     * @return object of IPv4RouterIdOfRemoteNodeTlv
-     */
-    public static IPv4RouterIdOfRemoteNodeSubTlv of(final int raw) {
-        return new IPv4RouterIdOfRemoteNodeSubTlv(raw);
-    }
-
-    /**
-     * Returns value of IPv4 Router Id Of Remote Node.
-     *
-     * @return rawValue IPv4 Router Id Of Remote Node
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof IPv4RouterIdOfRemoteNodeSubTlv) {
-            IPv4RouterIdOfRemoteNodeSubTlv other = (IPv4RouterIdOfRemoteNodeSubTlv) obj;
-            return Objects.equals(rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of IPv4RouterIdOfRemoteNodeTlv.
-     *
-     * @param c input channel buffer
-     * @return object of IPv4RouterIdOfRemoteNodeTlv
-     */
-    public static IPv4RouterIdOfRemoteNodeSubTlv read(ChannelBuffer c) {
-        return IPv4RouterIdOfRemoteNodeSubTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4SubObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4SubObject.java
deleted file mode 100644
index 45fa2b3..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4SubObject.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * @author b00295750
- *
- */
-package org.onosproject.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides IPv4 Sub Object.
- */
-public class IPv4SubObject implements PcepValueType {
-
-    /*Reference : RFC 4874:3.1.1
-     *  0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |L|    Type     |     Length    | IPv4 address (4 bytes)        |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    | IPv4 address (continued)      | Prefix Length |      Resvd    |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-    private static final Logger log = LoggerFactory.getLogger(IPv4SubObject.class);
-
-    public static final byte TYPE = 0x01;
-    public static final byte LENGTH = 8;
-    public static final byte VALUE_LENGTH = 6;
-    public static final byte OBJ_LENGTH = 8;
-    public static final byte LBIT = 0;
-    public static final int SHIFT_LBIT_POSITION = 7;
-    private int ipAddress;
-    private byte prefixLen;
-    private byte resvd;
-
-    /**
-     * Constructor to initialize ipv4 address.
-     *
-     * @param ipAddr ipv4 address
-     */
-    public IPv4SubObject(int ipAddr) {
-        this.ipAddress = ipAddr;
-    }
-
-    /**
-     * constructor to initialize ipAddress, prefixLen and resvd.
-     *
-     * @param ipAddress ipv4 address
-     * @param prefixLen prefix length
-     * @param resvd reserved flags value
-     */
-    public IPv4SubObject(int ipAddress, byte prefixLen, byte resvd) {
-        this.ipAddress = ipAddress;
-        this.prefixLen = prefixLen;
-        this.resvd = resvd;
-    }
-
-    /**
-     * Returns a new instance of IPv4SubObject.
-     *
-     * @param ipAddress ipv4 address
-     * @param prefixLen prefix length
-     * @param resvd reserved flags value
-     * @return object of IPv4SubObject
-     */
-    public static IPv4SubObject of(int ipAddress, byte prefixLen, byte resvd) {
-        return new IPv4SubObject(ipAddress, prefixLen, resvd);
-    }
-
-    /**
-     * Returns prefixLen of IPv4 IP address.
-     *
-     * @return byte  value of rawValue
-     */
-    public byte getPrefixLen() {
-        return prefixLen;
-    }
-
-    /**
-     * Returns value of IPv4 IP address.
-     *
-     * @return int value of ipv4 address
-     */
-    public int getIpAddress() {
-        return ipAddress;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(ipAddress, prefixLen, resvd);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof IPv4SubObject) {
-            IPv4SubObject other = (IPv4SubObject) obj;
-            return Objects.equals(this.ipAddress, other.ipAddress) && Objects.equals(this.prefixLen, other.prefixLen)
-                    && Objects.equals(this.resvd, other.resvd);
-        }
-        return false;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of IPv4SubObject.
-     *
-     * @param c type of channel buffer
-     * @return object of IPv4SubObject
-     */
-    public static PcepValueType read(ChannelBuffer c) {
-        int ipAddess = c.readInt();
-        byte prefixLen = c.readByte();
-        byte resvd = c.readByte();
-        return new IPv4SubObject(ipAddess, prefixLen, resvd);
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        byte bValue = LBIT;
-        bValue = (byte) (bValue << SHIFT_LBIT_POSITION);
-        bValue = (byte) (bValue | TYPE);
-        c.writeByte(bValue);
-        c.writeByte(OBJ_LENGTH);
-        c.writeInt(ipAddress);
-        c.writeByte(prefixLen);
-        c.writeByte(resvd);
-
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("IPv4Address", ipAddress)
-                .add("PrefixLength", prefixLen)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6InterfaceAddressSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6InterfaceAddressSubTlv.java
deleted file mode 100644
index d318ca3..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6InterfaceAddressSubTlv.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-
-/**
- * Provides IPv6 Interface Address. REFERENCE :[RFC6119]/4.2.
- */
-public class IPv6InterfaceAddressSubTlv implements PcepValueType {
-
-    private static final Logger log = LoggerFactory.getLogger(IPv6InterfaceAddressSubTlv.class);
-
-    public static final short TYPE = 9;
-    public static final short LENGTH = 20;
-    public static final byte VALUE_LENGTH = 18;
-
-    private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-    public static final IPv6InterfaceAddressSubTlv NONE = new IPv6InterfaceAddressSubTlv(NONE_VAL);
-
-    private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
-            (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
-            (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF};
-    public static final IPv6InterfaceAddressSubTlv NO_MASK = new IPv6InterfaceAddressSubTlv(NO_MASK_VAL);
-    public static final IPv6InterfaceAddressSubTlv FULL_MASK = NONE;
-
-    private final byte[] rawValue;
-
-    /**
-     * Constructor to initialize rawValue.
-     *
-     * @param rawValue IPv6 Interface Address Tlv
-     */
-    public IPv6InterfaceAddressSubTlv(byte[] rawValue) {
-        log.debug("IPv6InterfaceAddressTlv");
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created IPv6InterfaceAddressTlv object.
-     *
-     * @param raw IPv6 Interface Address
-     * @return object of IPv6InterfaceAddressTlv
-     */
-    public static IPv6InterfaceAddressSubTlv of(final byte[] raw) {
-        //check NONE_VAL
-        boolean bFoundNone = true;
-        //value starts from 3rd byte.
-        for (int i = 2; i < 20; ++i) {
-            if (NONE_VAL[i] != raw[i]) {
-                bFoundNone = false;
-            }
-        }
-
-        if (bFoundNone) {
-            return NONE;
-        }
-
-        //check NO_MASK_VAL
-        boolean bFoundNoMask = true;
-        //value starts from 3rd byte.
-        for (int i = 2; i < 20; ++i) {
-            if ((byte) 0xFF != raw[i]) {
-                bFoundNoMask = false;
-            }
-        }
-        if (bFoundNoMask) {
-            return NO_MASK;
-        }
-
-        return new IPv6InterfaceAddressSubTlv(raw);
-    }
-
-    /**
-     * Returns value of IPv6 Interface Address.
-     *
-     * @return rawValue raw value
-     */
-    public byte[] getBytes() {
-        return rawValue;
-    }
-
-    /**
-     * Returns value of IPv6 Interface Address.
-     *
-     * @return rawValue raw value
-     */
-    public byte[] getValue() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Arrays.hashCode(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof IPv6InterfaceAddressSubTlv) {
-            IPv6InterfaceAddressSubTlv other = (IPv6InterfaceAddressSubTlv) obj;
-            return Arrays.equals(rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeBytes(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of IPv6InterfaceAddressTlv.
-     *
-     * @param c input channel buffer
-     * @return object of IPv6InterfaceAddressTlv
-     */
-    public static IPv6InterfaceAddressSubTlv read20Bytes(ChannelBuffer c) {
-        byte[] yTemp = new byte[20];
-        c.readBytes(yTemp, 0, 20);
-        return IPv6InterfaceAddressSubTlv.of(yTemp);
-    }
-
-    @Override
-    public String toString() {
-        ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass());
-
-        toStrHelper.add("Type", TYPE);
-        toStrHelper.add("Length", LENGTH);
-
-        StringBuffer result = new StringBuffer();
-        for (byte b : rawValue) {
-            result.append(String.format("%02X ", b));
-        }
-        toStrHelper.add("Value", result);
-
-        return toStrHelper.toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6NeighborAddressSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6NeighborAddressSubTlv.java
deleted file mode 100644
index 7b2f5e5..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6NeighborAddressSubTlv.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-
-/**
- * Provides IPv6 Neighbor Address. Reference :[RFC6119]/4.3.
- */
-public class IPv6NeighborAddressSubTlv implements PcepValueType {
-    private static final Logger log = LoggerFactory.getLogger(IPv6NeighborAddressSubTlv.class);
-
-    public static final short TYPE = 10;
-    public static final short LENGTH = 20;
-    public static final byte VALUE_LENGTH = 18;
-
-    private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-    public static final IPv6NeighborAddressSubTlv NONE = new IPv6NeighborAddressSubTlv(NONE_VAL);
-
-    private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
-            (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
-            (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF};
-    public static final IPv6NeighborAddressSubTlv NO_MASK = new IPv6NeighborAddressSubTlv(NO_MASK_VAL);
-    public static final IPv6NeighborAddressSubTlv FULL_MASK = NONE;
-
-    private final byte[] rawValue;
-
-    /**
-     * Constructor to initialize rawValue.
-     *
-     * @param rawValue IPv6 Neighbor Address Tlv
-     */
-    public IPv6NeighborAddressSubTlv(byte[] rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created IPv6NeighborAddressTlv object.
-     *
-     * @param raw IPv6 Neighbor Address
-     * @return object of IPv6 Neighbor Address Tlv
-     */
-    public static IPv6NeighborAddressSubTlv of(final byte[] raw) {
-        //check NONE_VAL
-        boolean bFoundNone = true;
-        //value starts from 3rd byte.
-        for (int i = 2; i < 20; ++i) {
-            if (NONE_VAL[i] != raw[i]) {
-                bFoundNone = false;
-            }
-        }
-
-        if (bFoundNone) {
-            return NONE;
-        }
-
-        //check NO_MASK_VAL
-        boolean bFoundNoMask = true;
-        //value starts from 3rd byte.
-        for (int i = 2; i < 20; ++i) {
-            if ((byte) 0xFF != raw[i]) {
-                bFoundNoMask = false;
-            }
-        }
-        if (bFoundNoMask) {
-            return NO_MASK;
-        }
-
-        return new IPv6NeighborAddressSubTlv(raw);
-    }
-
-    /**
-     * Returns value of IPv6 Neighbor Address.
-     *
-     * @return rawValue raw value
-     */
-    public byte[] getBytes() {
-        return rawValue;
-    }
-
-    /**
-     * Returns value of IPv6 Neighbor Address.
-     *
-     * @return rawValue raw value
-     */
-    public byte[] getValue() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Arrays.hashCode(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof IPv6NeighborAddressSubTlv) {
-            IPv6NeighborAddressSubTlv other = (IPv6NeighborAddressSubTlv) obj;
-            return Arrays.equals(rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeBytes(rawValue);
-        return c.writerIndex() - iStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of IPv6NeighborAddressTlv.
-     *
-     * @param c input channel buffer
-     * @return object of IPv6NeighborAddressTlv
-     */
-    public static IPv6NeighborAddressSubTlv read20Bytes(ChannelBuffer c) {
-        byte[] yTemp = new byte[20];
-        c.readBytes(yTemp, 0, 20);
-        return IPv6NeighborAddressSubTlv.of(yTemp);
-    }
-
-    @Override
-    public String toString() {
-        ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass());
-
-        toStrHelper.add("Type", TYPE);
-        toStrHelper.add("Length", LENGTH);
-
-        StringBuffer result = new StringBuffer();
-        for (byte b : rawValue) {
-            result.append(String.format("%02X ", b));
-        }
-        toStrHelper.add("Value", result);
-
-        return toStrHelper.toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6RouterIdofLocalNodeSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6RouterIdofLocalNodeSubTlv.java
deleted file mode 100644
index 186f56d..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6RouterIdofLocalNodeSubTlv.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-
-/**
- * Provides IPv6 TE Router Id of Local Node. Reference :[RFC6119]/4.1.
- */
-public class IPv6RouterIdofLocalNodeSubTlv implements PcepValueType {
-    private static final Logger log = LoggerFactory.getLogger(IPv6RouterIdofLocalNodeSubTlv.class);
-
-    public static final short TYPE = 18;
-    public static final short LENGTH = 20;
-    public static final byte VALUE_LENGTH = 18;
-
-    private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-    public static final IPv6RouterIdofLocalNodeSubTlv NONE = new IPv6RouterIdofLocalNodeSubTlv(NONE_VAL);
-
-    private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
-            (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
-            (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF };
-    public static final IPv6RouterIdofLocalNodeSubTlv NO_MASK = new IPv6RouterIdofLocalNodeSubTlv(NO_MASK_VAL);
-    public static final IPv6RouterIdofLocalNodeSubTlv FULL_MASK = NONE;
-
-    private final byte[] rawValue;
-
-    /**
-     * Constructor to initialize rawValue.
-     *
-     * @param rawValue IPv6RouterIdofLocalNodeTlv
-     */
-    public IPv6RouterIdofLocalNodeSubTlv(byte[] rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created IPv6RouterIdofLocalNodeTlv object.
-     *
-     * @param raw IPv6 TE Router Id of Local Node
-     * @return object of IPv6RouterIdofLocalNodeTlv
-     */
-    public static IPv6RouterIdofLocalNodeSubTlv of(final byte[] raw) {
-        //check NONE_VAL
-        boolean bFoundNone = true;
-        //value starts from 3rd byte.
-        for (int i = 2; i < 20; ++i) {
-            if (NONE_VAL[i] != raw[i]) {
-                bFoundNone = false;
-            }
-        }
-
-        if (bFoundNone) {
-            return NONE;
-        }
-
-        //check NO_MASK_VAL
-        boolean bFoundNoMask = true;
-        //value starts from 3rd byte.
-        for (int i = 2; i < 20; ++i) {
-            if ((byte) 0xFF != raw[i]) {
-                bFoundNoMask = false;
-            }
-        }
-        if (bFoundNoMask) {
-            return NO_MASK;
-        }
-
-        return new IPv6RouterIdofLocalNodeSubTlv(raw);
-    }
-
-    /**
-     * Returns value of IPv6 TE Router Id of Local Node.
-     *
-     * @return byte array value of rawValue
-     */
-    public byte[] getBytes() {
-        return rawValue;
-    }
-
-    /**
-     * Returns value of IPv6 TE Router Id of Local Node.
-     *
-     * @return byte array value of rawValue
-     */
-    public byte[] getValue() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Arrays.hashCode(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof IPv6RouterIdofLocalNodeSubTlv) {
-            IPv6RouterIdofLocalNodeSubTlv other = (IPv6RouterIdofLocalNodeSubTlv) obj;
-            return Arrays.equals(rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeBytes(rawValue);
-        return c.writerIndex() - iStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of IPv6RouterIdofLocalNodeTlv.
-     *
-     * @param c input channel buffer
-     * @return object of IPv6RouterIdofLocalNodeTlv
-     */
-    public static IPv6RouterIdofLocalNodeSubTlv read20Bytes(ChannelBuffer c) {
-        byte[] yTemp = new byte[20];
-        c.readBytes(yTemp, 0, 20);
-        return IPv6RouterIdofLocalNodeSubTlv.of(yTemp);
-    }
-
-    @Override
-    public String toString() {
-        ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass());
-
-        toStrHelper.add("Type", TYPE);
-        toStrHelper.add("Length", LENGTH);
-
-        StringBuffer result = new StringBuffer();
-        for (byte b : rawValue) {
-            result.append(String.format("%02X ", b));
-        }
-        toStrHelper.add("Value", result);
-
-        return toStrHelper.toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6RouterIdofRemoteNodeSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6RouterIdofRemoteNodeSubTlv.java
deleted file mode 100644
index 021da71..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6RouterIdofRemoteNodeSubTlv.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-
-/**
- * Provides IPv6 TE Router Id of Remote Node.  Reference :[RFC6119]/4.1.
- */
-public class IPv6RouterIdofRemoteNodeSubTlv implements PcepValueType {
-    private static final Logger log = LoggerFactory.getLogger(IPv6RouterIdofRemoteNodeSubTlv.class);
-
-    public static final short TYPE = 20;
-    public static final short LENGTH = 20;
-    public static final byte VALUE_LENGTH = 18;
-
-    private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-    public static final IPv6RouterIdofRemoteNodeSubTlv NONE = new IPv6RouterIdofRemoteNodeSubTlv(NONE_VAL);
-
-    private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
-            (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
-            (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF};
-    public static final IPv6RouterIdofRemoteNodeSubTlv NO_MASK = new IPv6RouterIdofRemoteNodeSubTlv(NO_MASK_VAL);
-    public static final IPv6RouterIdofRemoteNodeSubTlv FULL_MASK = NONE;
-
-    private final byte[] rawValue;
-
-    /**
-     * constructor to initialize rawValue.
-     *
-     * @param rawValue IPv6RouterIdofRemoteNodeTlv
-     */
-    public IPv6RouterIdofRemoteNodeSubTlv(byte[] rawValue) {
-        log.debug("IPv6RouterIdofRemoteNodeTlv");
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created IPv6RouterIdofRemoteNodeTlv object.
-     *
-     * @param raw IPv6 TE Router Id of RemoteNode
-     * @return object of IPv6RouterIdofRemoteNodeTlv
-     */
-    public static IPv6RouterIdofRemoteNodeSubTlv of(final byte[] raw) {
-        //check NONE_VAL
-        boolean bFoundNone = true;
-        //value starts from 3rd byte.
-        for (int i = 2; i < 20; ++i) {
-            if (NONE_VAL[i] != raw[i]) {
-                bFoundNone = false;
-            }
-        }
-
-        if (bFoundNone) {
-            return NONE;
-        }
-
-        //check NO_MASK_VAL
-        boolean bFoundNoMask = true;
-        //value starts from 3rd byte.
-        for (int i = 2; i < 20; ++i) {
-            if ((byte) 0xFF != raw[i]) {
-                bFoundNoMask = false;
-            }
-        }
-        if (bFoundNoMask) {
-            return NO_MASK;
-        }
-
-        return new IPv6RouterIdofRemoteNodeSubTlv(raw);
-    }
-
-    /**
-     * Returns value of IPv6 TE Router Id of Remote Node.
-     *
-     * @return byte array value of rawValue
-     */
-    public byte[] getBytes() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Arrays.hashCode(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof IPv6RouterIdofRemoteNodeSubTlv) {
-            IPv6RouterIdofRemoteNodeSubTlv other = (IPv6RouterIdofRemoteNodeSubTlv) obj;
-            return Arrays.equals(rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeBytes(rawValue);
-        return c.writerIndex() - iStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of IPv6RouterIdofRemoteNodeTlv.
-     *
-     * @param c input channel buffer
-     * @return object of IPv6RouterIdofRemoteNodeTlv
-     */
-    public static IPv6RouterIdofRemoteNodeSubTlv read20Bytes(ChannelBuffer c) {
-        byte[] yTemp = new byte[20];
-        c.readBytes(yTemp, 0, 20);
-        return IPv6RouterIdofRemoteNodeSubTlv.of(yTemp);
-    }
-
-    @Override
-    public String toString() {
-        ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass());
-
-        toStrHelper.add("Type", TYPE);
-        toStrHelper.add("Length", LENGTH);
-
-        StringBuffer result = new StringBuffer();
-        for (byte b : rawValue) {
-            result.append(String.format("%02X ", b));
-        }
-        toStrHelper.add("Value", result);
-
-        return toStrHelper.toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6SubObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6SubObject.java
deleted file mode 100644
index 808b1e8..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6SubObject.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-
-/**
- * Provides IPv6 Sub Object.
- */
-public class IPv6SubObject implements PcepValueType {
-
-    /* reference :RFC 4874.
-    Subobject : IPv6 address
-
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |      Type     |     Length    | IPv6 address (16 bytes)       |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    | IPv6 address (continued)                                      |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    | IPv6 address (continued)                                      |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    | IPv6 address (continued)                                      |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    | IPv6 address (continued)      | Prefix Length |      Flags    |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-      Type
-
-         0x02  IPv6 address
-
-      Length
-
-         The Length contains the total length of the subobject in bytes,
-         including the Type and Length fields.  The Length is always 20.
-
-      IPv6 address
-
-         A 128-bit unicast host address.
-
-      Prefix length
-
-         128
-
-      Flags
-
-         0x01  Local protection available
-
-               Indicates that the link downstream of this node is
-               protected via a local repair mechanism.  This flag can
-               only be set if the Local protection flag was set in the
-               SESSION_ATTRIBUTE object of the corresponding Path
-               message.
-
-         0x02  Local protection in use
-
-               Indicates that a local repair mechanism is in use to
-               maintain this tunnel (usually in the face of an outage
-               of the link it was previously routed over).
-     */
-    private static final Logger log = LoggerFactory.getLogger(IPv6SubObject.class);
-
-    public static final short TYPE = 0x02;
-    public static final short LENGTH = 20;
-    public static final byte VALUE_LENGTH = 18;
-
-    private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-    public static final IPv6SubObject NONE = new IPv6SubObject(NONE_VAL);
-
-    private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
-        (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
-        (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF };
-    public static final IPv6SubObject NO_MASK = new IPv6SubObject(NO_MASK_VAL);
-    public static final IPv6SubObject FULL_MASK = NONE;
-
-    private final byte[] rawValue;
-
-    /**
-     * constructor to initialize rawValue with ipv6 address.
-     *
-     * @param rawValue ipv6 address
-     */
-    public IPv6SubObject(byte[] rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * To create instance of IPv6SubObject.
-     *
-     * @param raw byte array of ipv6 address
-     * @return object of IPv6SubObject
-     */
-    public static IPv6SubObject of(final byte[] raw) {
-        //check NONE_VAL
-        boolean bFoundNone = true;
-        //value starts from 3rd byte.
-        for (int i = 2; i < 20; ++i) {
-            if (NONE_VAL[i] != raw[i]) {
-                bFoundNone = false;
-            }
-        }
-
-        if (bFoundNone) {
-            return NONE;
-        }
-
-        //check NO_MASK_VAL
-        boolean bFoundNoMask = true;
-        //value starts from 3rd byte.
-        for (int i = 2; i < 20; ++i) {
-            if ((byte) 0xFF != raw[i]) {
-                bFoundNoMask = false;
-            }
-        }
-        if (bFoundNoMask) {
-            return NO_MASK;
-        }
-
-        return new IPv6SubObject(raw);
-    }
-
-    /**
-     * Returns value of IPv6 Sub Object.
-     *
-     * @return byte array of ipv6 address
-     */
-    public byte[] getValue() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Arrays.hashCode(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof IPv6SubObject) {
-            IPv6SubObject other = (IPv6SubObject) obj;
-            return Arrays.equals(rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeBytes(rawValue);
-        return c.writerIndex() - iStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of IPv6SubObject.
-     *
-     * @param c type of channel buffer
-     * @return object of IPv6SubObject
-     */
-    public static IPv6SubObject read20Bytes(ChannelBuffer c) {
-        byte[] yTemp = new byte[20];
-        c.readBytes(yTemp, 0, 20);
-        return IPv6SubObject.of(yTemp);
-    }
-
-    @Override
-    public String toString() {
-        ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass());
-
-        toStrHelper.add("Type", TYPE);
-        toStrHelper.add("Length", LENGTH);
-
-        StringBuffer result = new StringBuffer();
-        for (byte b : rawValue) {
-            result.append(String.format("%02X ", b));
-        }
-        toStrHelper.add("Value", result);
-
-        return toStrHelper.toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IgpMetricSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IgpMetricSubTlv.java
deleted file mode 100644
index 93199c5..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IgpMetricSubTlv.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-
-/**
- * Provides IGP Link Metric .
- */
-public class IgpMetricSubTlv implements PcepValueType {
-
-    /* Reference :[I-D.ietf-idr-ls-distribution] /3.3.2.4
-     *  0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |              Type=TDB40             |             Length      |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     //      IGP Link Metric (variable length)      //
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(IgpMetricSubTlv.class);
-
-    public static final short TYPE = 29;
-    private short hLength;
-
-    private final byte[] rawValue;
-
-    /**
-     * Constructor to initialize raw value.
-     *
-     * @param rawValue IGP Link Metric
-     * @param hLength length
-     */
-    public IgpMetricSubTlv(byte[] rawValue, short hLength) {
-        this.rawValue = rawValue;
-        this.hLength = hLength;
-    }
-
-    /**
-     * Returns newly created IGPMetricTlv object.
-     *
-     * @param raw value of IGP Link Metric
-     * @param hLength length
-     * @return object of IGPMetricTlv
-     */
-    public static IgpMetricSubTlv of(final byte[] raw, short hLength) {
-        return new IgpMetricSubTlv(raw, hLength);
-    }
-
-    /**
-     * Returns value of IGP Link Metric.
-     *
-     * @return rawValue of IGP Link Metric
-     */
-    public byte[] getValue() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return hLength;
-    }
-
-    @Override
-    public int hashCode() {
-        return  Arrays.hashCode(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof IgpMetricSubTlv) {
-            IgpMetricSubTlv other = (IgpMetricSubTlv) obj;
-            return Arrays.equals(rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(hLength);
-        c.writeBytes(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of IGPMetricTlv.
-     *
-     * @param c input channel buffer
-     * @param hLength length
-     * @return object of IGPMetricTlv
-     */
-    public static PcepValueType read(ChannelBuffer c, short hLength) {
-        byte[] iIgpMetric = new byte[hLength];
-        c.readBytes(iIgpMetric, 0, hLength);
-        return new IgpMetricSubTlv(iIgpMetric, hLength);
-    }
-
-    @Override
-    public String toString() {
-        ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass());
-
-        toStrHelper.add("Type", TYPE);
-        toStrHelper.add("Length", hLength);
-
-        StringBuffer result = new StringBuffer();
-        for (byte b : rawValue) {
-            result.append(String.format("%02X ", b));
-        }
-        toStrHelper.add("Value", result);
-
-        return toStrHelper.toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IgpRouterIdSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IgpRouterIdSubTlv.java
deleted file mode 100644
index f57dafb..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IgpRouterIdSubTlv.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Arrays;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-
-/**
- * Provides router id.
- */
-public class IgpRouterIdSubTlv implements PcepValueType {
-
-    /* reference :I-D.ietf-idr-ls-distribution.
-     *  0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |           Type=[TBD13]         |             Length           |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                    opaque value                               |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(IgpRouterIdSubTlv.class);
-
-    public static final short TYPE = 4;
-    private final short hLength;
-
-    private final byte[] rawValue;
-
-    /**
-     * constructor to initialize rawValue.
-     *
-     * @param rawValue raw value
-     * @param hLength length
-     */
-    public IgpRouterIdSubTlv(byte[] rawValue, short hLength) {
-        this.rawValue = rawValue;
-        if (0 == hLength) {
-            this.hLength = (short) rawValue.length;
-        } else {
-            this.hLength = hLength;
-        }
-    }
-
-    /**
-     * Returns object of Router ID Sub Tlv.
-     *
-     * @param raw value
-     * @param hLength length
-     * @return object of Router ID Sub Tlv
-     */
-    public static IgpRouterIdSubTlv of(final byte[] raw, short hLength) {
-        return new IgpRouterIdSubTlv(raw, hLength);
-    }
-
-    /**
-     * Returns raw value.
-     *
-     * @return rawValue value
-     */
-    public byte[] getValue() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return hLength;
-    }
-
-    @Override
-    public int hashCode() {
-        return  Arrays.hashCode(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof IgpRouterIdSubTlv) {
-            IgpRouterIdSubTlv other = (IgpRouterIdSubTlv) obj;
-            return   Arrays.equals(this.rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(hLength);
-        c.writeBytes(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads channel buffer and returns object of IgpRouterIDTlv.
-     *
-     * @param c input channel buffer
-     * @param hLength length
-     * @return object of IgpRouterIDTlv
-     */
-    public static PcepValueType read(ChannelBuffer c, short hLength) {
-        byte[] iOpaqueValue = new byte[hLength];
-        c.readBytes(iOpaqueValue, 0, hLength);
-        return new IgpRouterIdSubTlv(iOpaqueValue, hLength);
-    }
-
-    @Override
-    public String toString() {
-        ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass());
-
-        toStrHelper.add("Type", TYPE);
-        toStrHelper.add("Length", hLength);
-
-        StringBuffer result = new StringBuffer();
-        for (byte b : rawValue) {
-            result.append(String.format("%02X ", b));
-        }
-        toStrHelper.add("Value", result);
-
-        return toStrHelper.toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IsisAreaIdentifierSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IsisAreaIdentifierSubTlv.java
deleted file mode 100644
index b9256cc..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IsisAreaIdentifierSubTlv.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-import java.util.Objects;
-
-/**
- * Provides ISIS Area Identifier.
- */
-public class IsisAreaIdentifierSubTlv implements PcepValueType {
-
-    /* Reference :[I-D.ietf-idr- ls-distribution]/3.3.1.2
-     * 0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |              Type=[TBD24]    |             Length            |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     //                 Area Identifier (variable)                  //
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(IsisAreaIdentifierSubTlv.class);
-
-    public static final short TYPE = 16;
-    private short hLength;
-
-    private final byte[] rawValue;
-
-    /**
-     * Constructor to initialize rawValue.
-     *
-     * @param rawValue ISIS-Area-Identifier
-     * @param hLength length
-     */
-    public IsisAreaIdentifierSubTlv(byte[] rawValue, short hLength) {
-        log.debug("ISISAreaIdentifierTlv");
-        this.rawValue = rawValue;
-        if (0 == hLength) {
-            this.hLength = (short) rawValue.length;
-        } else {
-            this.hLength = hLength;
-        }
-    }
-
-    /**
-     * Returns newly created ISISAreaIdentifierTlv object.
-     *
-     * @param raw ISIS-Area-Identifier
-     * @param hLength length
-     * @return object of ISISAreaIdentifierTlv
-     */
-    public static IsisAreaIdentifierSubTlv of(final byte[] raw, short hLength) {
-        return new IsisAreaIdentifierSubTlv(raw, hLength);
-    }
-
-    /**
-     * Returns value of ISIS-Area-Identifier.
-     *
-     * @return byte array of rawValue
-     */
-    public byte[] getValue() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return hLength;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(Arrays.hashCode(rawValue), rawValue.length);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof IsisAreaIdentifierSubTlv) {
-            IsisAreaIdentifierSubTlv other = (IsisAreaIdentifierSubTlv) obj;
-            return Objects.equals(hLength, other.hLength) && Arrays.equals(rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(hLength);
-        c.writeBytes(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of ISISAreaIdentifierTlv.
-     *
-     * @param c input channel buffer
-     * @param hLength length
-     * @return object of ISISAreaIdentifierTlv
-     */
-    public static PcepValueType read(ChannelBuffer c, short hLength) {
-        byte[] iIsisAreaIdentifier = new byte[hLength];
-        c.readBytes(iIsisAreaIdentifier, 0, hLength);
-        return new IsisAreaIdentifierSubTlv(iIsisAreaIdentifier, hLength);
-    }
-
-    @Override
-    public String toString() {
-        ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass());
-
-        toStrHelper.add("Type", TYPE);
-        toStrHelper.add("Length", hLength);
-
-        StringBuffer result = new StringBuffer();
-        for (byte b : rawValue) {
-            result.append(String.format("%02X ", b));
-        }
-        toStrHelper.add("Value", result);
-
-        return toStrHelper.toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LabelSubObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LabelSubObject.java
deleted file mode 100644
index aadb4be..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LabelSubObject.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * LabelSubObject: Provides a LabelSubObject.
- */
-public class LabelSubObject implements PcepValueType {
-
-    /* Reference : RFC 3209
-     * LABEL Sub Object
-     *
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |     Type      |     Length    |    Flags      |   C-Type      |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |       Contents of Label Object                                |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-    private static final Logger log = LoggerFactory.getLogger(LabelSubObject.class);
-
-    public static final short TYPE = 0x03;
-    public static final short LENGTH = 8;
-    private final byte flags;
-    private final byte cType;
-    private final int contents;
-
-    /**
-     * constructor to initialize parameters for LabelSubObject.
-     *
-     * @param flags flags
-     * @param cType C-Type
-     * @param contents Contents of label object
-     */
-    public LabelSubObject(byte flags, byte cType, int contents) {
-        this.flags = flags;
-        this.cType = cType;
-        this.contents = contents;
-    }
-
-    /**
-     * Return an object of LabelSubObject.
-     *
-     * @param flags flags
-     * @param cType C-type
-     * @param contents contents of label objects
-     * @return object of LabelSubObject
-     */
-    public static LabelSubObject of(byte flags, byte cType, int contents) {
-        return new LabelSubObject(flags, cType, contents);
-    }
-
-    /**
-     * Returns Flags.
-     *
-     * @return flags
-     */
-    public byte getFlags() {
-        return flags;
-    }
-
-    /**
-     * Returns cType.
-     *
-     * @return cType
-     */
-    public byte getCtype() {
-        return cType;
-    }
-
-    /**
-     * Returns contents.
-     *
-     * @return contents
-     */
-    public int getContents() {
-        return contents;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(flags, cType, contents);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof LabelSubObject) {
-            LabelSubObject other = (LabelSubObject) obj;
-            return Objects.equals(this.flags, other.flags) && Objects.equals(this.cType, other.cType)
-                    && Objects.equals(this.contents, other.contents);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeByte(flags);
-        c.writeByte(cType);
-        c.writeByte(contents);
-        return c.writerIndex() - iStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of LabelSubObject.
-     *
-     * @param c type of channel buffer
-     * @return object of LabelSubObject
-     */
-    public static PcepValueType read(ChannelBuffer c) {
-        byte flags = c.readByte();
-        byte cType = c.readByte();
-        int contents = c.readInt();
-        return new LabelSubObject(flags, cType, contents);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("type", TYPE)
-                .add("Length", LENGTH)
-                .add("flags", flags)
-                .add("C-type", cType)
-                .add("contents", contents)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkAttributesTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkAttributesTlv.java
deleted file mode 100644
index 2c172f9..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkAttributesTlv.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides LinkAttributesTlv.
- */
-public class LinkAttributesTlv implements PcepValueType {
-
-    /*
-     * Reference :draft-dhodylee-pce-pcep-ls-01, section 9.2.8.2.
-     *  0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |           Type=[TBD27]        |             Length            |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                                                               |
-     //              Link Attributes Sub-TLVs (variable)            //
-     |                                                               |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(LinkAttributesTlv.class);
-
-    public static final short TYPE = (short) 65286;
-    short hLength;
-
-    public static final int TLV_HEADER_LENGTH = 4;
-
-    // LinkDescriptors Sub-TLVs (variable)
-    private List<PcepValueType> llLinkAttributesSubTLVs;
-
-    /**
-     * Constructor to initialize Link Attributes Sub TLVs.
-     *
-     * @param llLinkAttributesSubTLVs linked list of PcepValueType
-     */
-    public LinkAttributesTlv(List<PcepValueType> llLinkAttributesSubTLVs) {
-        this.llLinkAttributesSubTLVs = llLinkAttributesSubTLVs;
-    }
-
-    /**
-     * Returns object of TE Link Attributes TLV.
-     *
-     * @param llLinkAttributesSubTLVs linked list of Link Attribute of Sub TLV
-     * @return object of LinkAttributesTlv
-     */
-    public static LinkAttributesTlv of(final List<PcepValueType> llLinkAttributesSubTLVs) {
-        return new LinkAttributesTlv(llLinkAttributesSubTLVs);
-    }
-
-    /**
-     * Returns linked list of Link Attribute of Sub TLV.
-     *
-     * @return llLinkAttributesSubTLVs linked list of Link Attribute of Sub TLV
-     */
-    public List<PcepValueType> getllLinkAttributesSubTLVs() {
-        return llLinkAttributesSubTLVs;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return hLength;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(llLinkAttributesSubTLVs.hashCode());
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        /*
-         * Here we have a list of Tlv so to compare each sub tlv between the object
-         * we have to take a list iterator so one by one we can get each sub tlv object
-         * and can compare them.
-         * it may be possible that the size of 2 lists is not equal so we have to first check
-         * the size, if both are same then we should check for the subtlv objects otherwise
-         * we should return false.
-         */
-        if (obj instanceof LinkAttributesTlv) {
-            int countObjSubTlv = 0;
-            int countOtherSubTlv = 0;
-            boolean isCommonSubTlv = true;
-            LinkAttributesTlv other = (LinkAttributesTlv) obj;
-            Iterator<PcepValueType> objListIterator = ((LinkAttributesTlv) obj).llLinkAttributesSubTLVs.iterator();
-            countObjSubTlv = ((LinkAttributesTlv) obj).llLinkAttributesSubTLVs.size();
-            countOtherSubTlv = other.llLinkAttributesSubTLVs.size();
-            if (countObjSubTlv != countOtherSubTlv) {
-                return false;
-            } else {
-                while (objListIterator.hasNext() && isCommonSubTlv) {
-                    PcepValueType subTlv = objListIterator.next();
-                    isCommonSubTlv = Objects.equals(llLinkAttributesSubTLVs.contains(subTlv),
-                            other.llLinkAttributesSubTLVs.contains(subTlv));
-                }
-                return isCommonSubTlv;
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int tlvStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        int tlvLenIndex = c.writerIndex();
-        hLength = 0;
-        c.writeShort(hLength);
-
-        ListIterator<PcepValueType> listIterator = llLinkAttributesSubTLVs.listIterator();
-
-        while (listIterator.hasNext()) {
-            PcepValueType tlv = listIterator.next();
-
-            if (tlv == null) {
-                log.debug("TLV is null from subTlv list");
-                continue;
-            }
-            tlv.write(c);
-
-            // need to take care of padding
-            int pad = tlv.getLength() % 4;
-
-            if (0 != pad) {
-                pad = 4 - pad;
-                for (int i = 0; i < pad; ++i) {
-                    c.writeByte((byte) 0);
-                }
-            }
-        }
-
-        hLength = (short) (c.writerIndex() - tlvStartIndex);
-        c.setShort(tlvLenIndex, (hLength - TLV_HEADER_LENGTH));
-
-        return c.writerIndex() - tlvStartIndex;
-    }
-
-    /**
-     * Reads channel buffer and returns object of TE Link Attributes TLV.
-     *
-     * @param c input channel buffer
-     * @param hLength length
-     * @return object of LinkAttributesTlv
-     * @throws PcepParseException if mandatory fields are missing
-     */
-    public static PcepValueType read(ChannelBuffer c, short hLength) throws PcepParseException {
-
-        // Node Descriptor Sub-TLVs (variable)
-        List<PcepValueType> llLinkAttributesSubTLVs = new LinkedList<>();
-
-        ChannelBuffer tempCb = c.readBytes(hLength);
-
-        while (TLV_HEADER_LENGTH <= tempCb.readableBytes()) {
-
-            PcepValueType tlv;
-            short hType = tempCb.readShort();
-            int iValue = 0;
-            short length = tempCb.readShort();
-            switch (hType) {
-
-            case IPv4RouterIdOfLocalNodeSubTlv.TYPE:
-                iValue = tempCb.readInt();
-                tlv = new IPv4RouterIdOfLocalNodeSubTlv(iValue);
-                break;
-            case IPv6RouterIdofLocalNodeSubTlv.TYPE:
-                byte[] ipv6LValue = new byte[IPv6RouterIdofLocalNodeSubTlv.VALUE_LENGTH];
-                tempCb.readBytes(ipv6LValue, 0, IPv6RouterIdofLocalNodeSubTlv.VALUE_LENGTH);
-                tlv = new IPv6RouterIdofLocalNodeSubTlv(ipv6LValue);
-                break;
-            case IPv4RouterIdOfRemoteNodeSubTlv.TYPE:
-                iValue = tempCb.readInt();
-                tlv = new IPv4RouterIdOfRemoteNodeSubTlv(iValue);
-                break;
-            case IPv6RouterIdofRemoteNodeSubTlv.TYPE:
-                byte[] ipv6RValue = new byte[IPv6RouterIdofRemoteNodeSubTlv.VALUE_LENGTH];
-                tempCb.readBytes(ipv6RValue, 0, IPv6RouterIdofRemoteNodeSubTlv.VALUE_LENGTH);
-                tlv = new IPv6RouterIdofRemoteNodeSubTlv(ipv6RValue);
-                break;
-            case LinkLocalRemoteIdentifiersSubTlv.TYPE:
-                tlv = LinkLocalRemoteIdentifiersSubTlv.read(tempCb);
-                break;
-            case AdministrativeGroupSubTlv.TYPE:
-                iValue = tempCb.readInt();
-                tlv = new AdministrativeGroupSubTlv(iValue);
-                break;
-            case MaximumLinkBandwidthSubTlv.TYPE:
-                iValue = tempCb.readInt();
-                tlv = new MaximumLinkBandwidthSubTlv(iValue);
-                break;
-            case MaximumReservableLinkBandwidthSubTlv.TYPE:
-                iValue = tempCb.readInt();
-                tlv = new MaximumReservableLinkBandwidthSubTlv(iValue);
-                break;
-            case UnreservedBandwidthSubTlv.TYPE:
-                iValue = tempCb.readInt();
-                tlv = new UnreservedBandwidthSubTlv(iValue);
-                break;
-            case TEDefaultMetricSubTlv.TYPE:
-                iValue = tempCb.readInt();
-                tlv = new TEDefaultMetricSubTlv(iValue);
-                break;
-            case LinkProtectionTypeSubTlv.TYPE:
-                tlv = LinkProtectionTypeSubTlv.read(tempCb);
-                break;
-            case MplsProtocolMaskSubTlv.TYPE:
-                byte cValue = tempCb.readByte();
-                tlv = new MplsProtocolMaskSubTlv(cValue);
-                break;
-            case IgpMetricSubTlv.TYPE:
-                tlv = IgpMetricSubTlv.read(tempCb, length);
-                break;
-            case SharedRiskLinkGroupSubTlv.TYPE:
-                tlv = SharedRiskLinkGroupSubTlv.read(tempCb, length);
-                break;
-            case OpaqueLinkAttributeSubTlv.TYPE:
-                tlv = OpaqueLinkAttributeSubTlv.read(tempCb, length);
-                break;
-            case LinkNameAttributeSubTlv.TYPE:
-                tlv = LinkNameAttributeSubTlv.read(tempCb, length);
-                break;
-            default:
-                throw new PcepParseException("Unsupported Sub TLV type :" + hType);
-            }
-
-            // Check for the padding
-            int pad = length % 4;
-            if (0 < pad) {
-                pad = 4 - pad;
-                if (pad <= tempCb.readableBytes()) {
-                    tempCb.skipBytes(pad);
-                }
-            }
-            llLinkAttributesSubTLVs.add(tlv);
-        }
-
-        if (0 < tempCb.readableBytes()) {
-
-            throw new PcepParseException("Sub Tlv parsing error. Extra bytes received.");
-        }
-
-        return new LinkAttributesTlv(llLinkAttributesSubTLVs);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", hLength)
-                .add("LinkAttributesSubTLVs", llLinkAttributesSubTLVs)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkDescriptorsTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkDescriptorsTlv.java
deleted file mode 100644
index 1505a42..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkDescriptorsTlv.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides TE Link Descriptors TLV.
- */
-public class LinkDescriptorsTlv implements PcepValueType {
-
-    /*
-     * Reference: draft-dhodylee-pce-pcep-ls-01, section 9.2.6.
-     *   0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |           Type=[TBD14]        |             Length            |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                                                               |
-     //              Link Descriptor Sub-TLVs (variable)            //
-     |                                                               |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(LinkDescriptorsTlv.class);
-
-    public static final short TYPE = (short) 65284;
-    public short hLength;
-
-    public static final int TLV_HEADER_LENGTH = 4;
-
-    // LinkDescriptors Sub-TLVs (variable)
-    private List<PcepValueType> llLinkDescriptorsSubTLVs;
-
-    /**
-     * Constructor to initialize llLinkDescriptorsSubTLVs.
-     *
-     * @param llLinkDescriptorsSubTLVs of PcepValueType
-     */
-    public LinkDescriptorsTlv(List<PcepValueType> llLinkDescriptorsSubTLVs) {
-        this.llLinkDescriptorsSubTLVs = llLinkDescriptorsSubTLVs;
-    }
-
-    /**
-     * Returns object of LinkDescriptorsTlv.
-     *
-     * @param llLinkDescriptorsSubTLVs of PcepValueType
-     * @return object of LinkDescriptorsTlv
-     */
-    public static LinkDescriptorsTlv of(final List<PcepValueType> llLinkDescriptorsSubTLVs) {
-        return new LinkDescriptorsTlv(llLinkDescriptorsSubTLVs);
-    }
-
-    /**
-     * Returns linked list of Link Attribute of Sub TLV.
-     *
-     * @return llLinkDescriptorsSubTLVs linked list of Link Attribute of Sub TLV
-     */
-    public List<PcepValueType> getllLinkDescriptorsSubTLVs() {
-        return llLinkDescriptorsSubTLVs;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return hLength;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(llLinkDescriptorsSubTLVs.hashCode());
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        /*
-         * Here we have a list of Tlv so to compare each sub tlv between the object
-         * we have to take a list iterator so one by one we can get each sub tlv object
-         * and can compare them.
-         * it may be possible that the size of 2 lists is not equal so we have to first check
-         * the size, if both are same then we should check for the subtlv objects otherwise
-         * we should return false.
-         */
-        if (obj instanceof LinkDescriptorsTlv) {
-            int countObjSubTlv = 0;
-            int countOtherSubTlv = 0;
-            boolean isCommonSubTlv = true;
-            LinkDescriptorsTlv other = (LinkDescriptorsTlv) obj;
-            Iterator<PcepValueType> objListIterator = ((LinkDescriptorsTlv) obj).llLinkDescriptorsSubTLVs.iterator();
-            countObjSubTlv = ((LinkDescriptorsTlv) obj).llLinkDescriptorsSubTLVs.size();
-            countOtherSubTlv = other.llLinkDescriptorsSubTLVs.size();
-            if (countObjSubTlv != countOtherSubTlv) {
-                return false;
-            } else {
-                while (objListIterator.hasNext() && isCommonSubTlv) {
-                    PcepValueType subTlv = objListIterator.next();
-                    isCommonSubTlv = Objects.equals(llLinkDescriptorsSubTLVs.contains(subTlv),
-                            other.llLinkDescriptorsSubTLVs.contains(subTlv));
-                }
-                return isCommonSubTlv;
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int tlvStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        int tlvLenIndex = c.writerIndex();
-        hLength = 0;
-        c.writeShort(hLength);
-
-        ListIterator<PcepValueType> listIterator = llLinkDescriptorsSubTLVs.listIterator();
-
-        while (listIterator.hasNext()) {
-            PcepValueType tlv = listIterator.next();
-
-            tlv.write(c);
-
-            // need to take care of padding
-            int pad = tlv.getLength() % 4;
-
-            if (0 != pad) {
-                pad = 4 - pad;
-                for (int i = 0; i < pad; ++i) {
-                    c.writeByte((byte) 0);
-                }
-            }
-        }
-
-        hLength = (short) (c.writerIndex() - tlvStartIndex);
-        c.setShort(tlvLenIndex, (hLength - TLV_HEADER_LENGTH));
-
-        return c.writerIndex() - tlvStartIndex;
-    }
-
-    /**
-     * Reads channel buffer and returns object of LinkDescriptorsTlv.
-     *
-     * @param c input channel buffer
-     * @param length length
-     * @return object of LinkDescriptorsTlv
-     * @throws PcepParseException if mandatory fields are missing
-     */
-    public static PcepValueType read(ChannelBuffer c, short length) throws PcepParseException {
-
-        // Node Descriptor Sub-TLVs (variable)
-        List<PcepValueType> llLinkDescriptorsSubTLVs = new LinkedList<>();
-
-        ChannelBuffer tempCb = c.readBytes(length);
-
-        while (TLV_HEADER_LENGTH <= tempCb.readableBytes()) {
-
-            PcepValueType tlv;
-            short hType = tempCb.readShort();
-            int iValue = 0;
-            short hLength = tempCb.readShort();
-            log.debug("sub Tlv Length" + hLength);
-            switch (hType) {
-
-            case LinkLocalRemoteIdentifiersSubTlv.TYPE:
-                tlv = LinkLocalRemoteIdentifiersSubTlv.read(tempCb);
-                break;
-            case IPv4InterfaceAddressSubTlv.TYPE:
-                iValue = tempCb.readInt();
-                tlv = new IPv4InterfaceAddressSubTlv(iValue);
-                break;
-            case IPv4NeighborAddressSubTlv.TYPE:
-                iValue = tempCb.readInt();
-                tlv = new IPv4NeighborAddressSubTlv(iValue);
-                break;
-            case IPv6InterfaceAddressSubTlv.TYPE:
-                byte[] ipv6Value = new byte[IPv6InterfaceAddressSubTlv.VALUE_LENGTH];
-                tempCb.readBytes(ipv6Value, 0, IPv6InterfaceAddressSubTlv.VALUE_LENGTH);
-                tlv = new IPv6InterfaceAddressSubTlv(ipv6Value);
-                break;
-            case IPv6NeighborAddressSubTlv.TYPE:
-                byte[] ipv6NeighborAdd = new byte[IPv6NeighborAddressSubTlv.VALUE_LENGTH];
-                tempCb.readBytes(ipv6NeighborAdd, 0, IPv6NeighborAddressSubTlv.VALUE_LENGTH);
-                tlv = new IPv6NeighborAddressSubTlv(ipv6NeighborAdd);
-                break;
-            default:
-                throw new PcepParseException("Unsupported Sub TLV type:" + hType);
-            }
-
-            // Check for the padding
-            int pad = hLength % 4;
-            if (0 < pad) {
-                pad = 4 - pad;
-                if (pad <= tempCb.readableBytes()) {
-                    tempCb.skipBytes(pad);
-                }
-            }
-            llLinkDescriptorsSubTLVs.add(tlv);
-
-        }
-
-        if (0 < tempCb.readableBytes()) {
-
-            throw new PcepParseException("Sub Tlv parsing error. Extra bytes received.");
-        }
-        return new LinkDescriptorsTlv(llLinkDescriptorsSubTLVs);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", hLength)
-                .add("LinkDescriptorsSubTLVs", llLinkDescriptorsSubTLVs)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersSubTlv.java
deleted file mode 100644
index bf55f44..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersSubTlv.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Local and remote Link Identifiers.
- */
-public class LinkLocalRemoteIdentifiersSubTlv implements PcepValueType {
-
-    /* Reference :RFC5307
-     * 0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |              Type=4      |             Length=8               |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |               Link Local Identifier                           |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |               Link Remote Identifier                          |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(LinkLocalRemoteIdentifiersSubTlv.class);
-
-    public static final short TYPE = 6;
-    public static final short LENGTH = 8;
-    private final int iLinkLocalIdentifier;
-    private final int iLinkRemoteIdentifier;
-
-    /**
-     * Constructor to initialize iLinkLocalIdentifier , iLinkRemoteIdentifier.
-     *
-     * @param iLinkLocalIdentifier Link Local identifier
-     * @param iLinkRemoteIdentifier Link Remote identifier
-     */
-    public LinkLocalRemoteIdentifiersSubTlv(int iLinkLocalIdentifier, int iLinkRemoteIdentifier) {
-        this.iLinkLocalIdentifier = iLinkLocalIdentifier;
-        this.iLinkRemoteIdentifier = iLinkRemoteIdentifier;
-    }
-
-    /**
-     * Retruns an object of Link Local Remote Identifiers Tlv.
-     *
-     * @param iLinkLocalIdentifier Link Local identifier
-     * @param iLinkRemoteIdentifier Link Remote identifier
-     * @return object of LinkLocalRemoteIdentifiersTlv
-     */
-    public static LinkLocalRemoteIdentifiersSubTlv of(int iLinkLocalIdentifier, int iLinkRemoteIdentifier) {
-        return new LinkLocalRemoteIdentifiersSubTlv(iLinkLocalIdentifier, iLinkRemoteIdentifier);
-    }
-
-    /**
-     * Returns Link-Local-Identifier.
-     *
-     * @return iLinkLocalIdentifier Link Local Identifier
-     */
-    public int getLinkLocalIdentifier() {
-        return iLinkLocalIdentifier;
-    }
-
-    /**
-     * Returns Link-Remote-Identifier.
-     *
-     * @return iLinkRemoteIdentifier Link Remote Identifier.
-     */
-    public int getLinkRemoteIdentifier() {
-        return iLinkRemoteIdentifier;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(iLinkLocalIdentifier, iLinkRemoteIdentifier);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof LinkLocalRemoteIdentifiersSubTlv) {
-            LinkLocalRemoteIdentifiersSubTlv other = (LinkLocalRemoteIdentifiersSubTlv) obj;
-            return Objects.equals(iLinkLocalIdentifier, other.iLinkLocalIdentifier)
-                    && Objects.equals(iLinkRemoteIdentifier, other.iLinkRemoteIdentifier);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(iLinkLocalIdentifier);
-        c.writeInt(iLinkRemoteIdentifier);
-        return c.writerIndex() - iStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of LinkLocalRemoteIdentifiersTlv.
-     *
-     * @param c input channel buffer
-     * @return object of LinkLocalRemoteIdentifiersTlv
-     */
-    public static PcepValueType read(ChannelBuffer c) {
-        int iLinkLocalIdentifier = c.readInt();
-        int iLinkRemoteIdentifier = c.readInt();
-        return new LinkLocalRemoteIdentifiersSubTlv(iLinkLocalIdentifier, iLinkRemoteIdentifier);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("LinkLocalIdentifier", iLinkLocalIdentifier)
-                .add("LinkRemoteIdentifier", iLinkRemoteIdentifier)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkNameAttributeSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkNameAttributeSubTlv.java
deleted file mode 100644
index ce3902f..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkNameAttributeSubTlv.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Arrays;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-
-/**
- * Provides the Link Name.
- */
-public class LinkNameAttributeSubTlv implements PcepValueType {
-
-    /* Reference :[I-D.ietf-idr- ls-distribution] /3.3.2.7
-     * Link name tlv format.
-      0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |              Type=TDB43       |             Length            |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     //                     Link Name (variable)                    //
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(LinkNameAttributeSubTlv.class);
-
-    public static final short TYPE = 32;
-    private short hLength;
-
-    private final byte[] rawValue;
-
-    /**
-     * Constructor to initialize rawValue.
-     *
-     * @param rawValue Link-Name
-     * @param hLength length
-     */
-    public LinkNameAttributeSubTlv(byte[] rawValue, short hLength) {
-        this.rawValue = rawValue;
-        if (0 == hLength) {
-            this.hLength = (short) rawValue.length;
-        } else {
-            this.hLength = hLength;
-        }
-    }
-
-    /**
-     * Returns newly created LinkNameTlv object.
-     *
-     * @param raw Link-Name
-     * @param hLength length
-     * @return object of LinkNameTlv
-     */
-    public static LinkNameAttributeSubTlv of(final byte[] raw, short hLength) {
-        return new LinkNameAttributeSubTlv(raw, hLength);
-    }
-
-    /**
-     * Returns value of Link-Name.
-     *
-     * @return raw value
-     */
-    public byte[] getValue() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return hLength;
-    }
-
-    @Override
-    public int hashCode() {
-        return Arrays.hashCode(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof LinkNameAttributeSubTlv) {
-            LinkNameAttributeSubTlv other = (LinkNameAttributeSubTlv) obj;
-            return Arrays.equals(this.rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(hLength);
-        c.writeBytes(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of LinkNameTlv.
-     *
-     * @param c input channel buffer
-     * @param hLength length
-     * @return object of LinkNameTlv
-     */
-    public static PcepValueType read(ChannelBuffer c, short hLength) {
-        byte[] linkName = new byte[hLength];
-        c.readBytes(linkName, 0, hLength);
-        return new LinkNameAttributeSubTlv(linkName, hLength);
-    }
-
-    @Override
-    public String toString() {
-        ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass());
-
-        toStrHelper.add("Type", TYPE);
-        toStrHelper.add("Length", hLength);
-
-        StringBuffer result = new StringBuffer();
-        for (byte b : rawValue) {
-            result.append(String.format("%02X ", b));
-        }
-        toStrHelper.add("Value", result);
-
-        return toStrHelper.toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkProtectionTypeSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkProtectionTypeSubTlv.java
deleted file mode 100644
index 3f992c4..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkProtectionTypeSubTlv.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provide Link Protection Type.
- */
-
-public class LinkProtectionTypeSubTlv implements PcepValueType {
-
-    /* Reference  :[RFC5307]/1.2
-     * 0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |              Type=[TDB38]      |             Length=2         |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |Protection Cap | Reserved      |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-    private static final Logger log = LoggerFactory.getLogger(LinkProtectionTypeSubTlv.class);
-
-    public static final short TYPE = 27;
-    public static final short LENGTH = 2;
-    private final byte protectionCap;
-    private final byte reserved;
-
-    /**
-     * Constructor to initialize protectionCap.
-     *
-     * @param protectionCap Protection Cap
-     */
-    public LinkProtectionTypeSubTlv(byte protectionCap) {
-        this.protectionCap = protectionCap;
-        this.reserved = 0;
-    }
-
-    /**
-     * Constructor to initialize protectionCap, reserved.
-     *
-     * @param protectionCap Protection Cap
-     * @param reserved Reserved value
-     */
-    public LinkProtectionTypeSubTlv(byte protectionCap, byte reserved) {
-        this.protectionCap = protectionCap;
-        this.reserved = reserved;
-    }
-
-    /**
-     * Returns Protection Cap.
-     *
-     * @return protectionCap Protection Cap
-     */
-    public byte getProtectionCap() {
-        return protectionCap;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(protectionCap, reserved);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof LinkProtectionTypeSubTlv) {
-            LinkProtectionTypeSubTlv other = (LinkProtectionTypeSubTlv) obj;
-            return Objects.equals(protectionCap, other.protectionCap) && Objects.equals(reserved, other.reserved);
-        }
-
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeByte(protectionCap);
-        c.writeByte(reserved);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of LinkProtectionTypeTlv.
-     *
-     * @param c input channel buffer
-     * @return object of LinkProtectionTypeTlv
-     */
-    public static PcepValueType read(ChannelBuffer c) {
-        byte protectionCap = c.readByte();
-        byte reserved = c.readByte();
-        return new LinkProtectionTypeSubTlv(protectionCap, reserved);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("ProtectionCap", protectionCap)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LocalNodeDescriptorsTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LocalNodeDescriptorsTlv.java
deleted file mode 100644
index ea7f277..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LocalNodeDescriptorsTlv.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Local TE Node Descriptors TLV which contains Node Descriptor Sub-TLVs.
- */
-public class LocalNodeDescriptorsTlv implements PcepValueType {
-
-    /* REFERENCE :draft-dhodylee-pce-pcep-ls-01, section 9.2.2
-     *  0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |           Type=[TBD8]         |             Length            |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                                                               |
-     //              Node Descriptor Sub-TLVs (variable)            //
-     |                                                               |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     Note: Length is including header here. Refer Routing Universe TLV.
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(LocalNodeDescriptorsTlv.class);
-
-    public static final short TYPE = (short) 65282;
-    short hLength;
-
-    public static final int TLV_HEADER_LENGTH = 4;
-    // Node Descriptor Sub-TLVs (variable)
-    private List<PcepValueType> llNodeDescriptorSubTLVs;
-
-    /**
-     * Constructor to initialize llNodeDescriptorSubTLVs.
-     *
-     * @param llNodeDescriptorSubTLVs List of PcepValueType
-     */
-    public LocalNodeDescriptorsTlv(List<PcepValueType> llNodeDescriptorSubTLVs) {
-        this.llNodeDescriptorSubTLVs = llNodeDescriptorSubTLVs;
-    }
-
-    /**
-     * Returns a new object of LocalNodeDescriptorsTLV.
-     *
-     * @param llNodeDescriptorSubTLVs linked list of Node Descriptor Sub TLVs
-     * @return object of LocalNodeDescriptorsTLV
-     */
-    public static LocalNodeDescriptorsTlv of(final List<PcepValueType> llNodeDescriptorSubTLVs) {
-        return new LocalNodeDescriptorsTlv(llNodeDescriptorSubTLVs);
-    }
-
-    /**
-     * Returns Linked List of tlvs.
-     *
-     * @return llNodeDescriptorSubTLVs linked list of Node Descriptor Sub TLV
-     */
-    public List<PcepValueType> getllNodeDescriptorSubTLVs() {
-        return llNodeDescriptorSubTLVs;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return hLength;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(llNodeDescriptorSubTLVs.hashCode());
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        /*
-         * Here we have a list of Tlv so to compare each sub tlv between the object
-         * we have to take a list iterator so one by one we can get each sub tlv object
-         * and can compare them.
-         * it may be possible that the size of 2 lists is not equal so we have to first check
-         * the size, if both are same then we should check for the subtlv objects otherwise
-         * we should return false.
-         */
-        if (obj instanceof LocalNodeDescriptorsTlv) {
-            int countObjSubTlv = 0;
-            int countOtherSubTlv = 0;
-            boolean isCommonSubTlv = true;
-            LocalNodeDescriptorsTlv other = (LocalNodeDescriptorsTlv) obj;
-            Iterator<PcepValueType> objListIterator = ((LocalNodeDescriptorsTlv) obj).llNodeDescriptorSubTLVs
-                    .iterator();
-            countObjSubTlv = ((LocalNodeDescriptorsTlv) obj).llNodeDescriptorSubTLVs.size();
-            countOtherSubTlv = other.llNodeDescriptorSubTLVs.size();
-            if (countObjSubTlv != countOtherSubTlv) {
-                return false;
-            } else {
-                while (objListIterator.hasNext() && isCommonSubTlv) {
-                    PcepValueType subTlv = objListIterator.next();
-                    isCommonSubTlv = Objects.equals(llNodeDescriptorSubTLVs.contains(subTlv),
-                            other.llNodeDescriptorSubTLVs.contains(subTlv));
-                }
-                return isCommonSubTlv;
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int tlvStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        int tlvLenIndex = c.writerIndex();
-        hLength = 0;
-        c.writeShort(0);
-
-        ListIterator<PcepValueType> listIterator = llNodeDescriptorSubTLVs.listIterator();
-
-        while (listIterator.hasNext()) {
-            PcepValueType tlv = listIterator.next();
-            if (tlv == null) {
-                log.debug("TLV is null from subTlv list");
-                continue;
-            }
-            tlv.write(c);
-
-            // need to take care of padding
-            int pad = tlv.getLength() % 4;
-
-            if (0 != pad) {
-                pad = 4 - pad;
-                for (int i = 0; i < pad; ++i) {
-                    c.writeByte((byte) 0);
-                }
-            }
-        }
-        hLength = (short) (c.writerIndex() - tlvStartIndex);
-        c.setShort(tlvLenIndex, (hLength - TLV_HEADER_LENGTH));
-        return c.writerIndex() - tlvStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of AutonomousSystemTlv.
-     *
-     * @param c input channel buffer
-     * @param hLength length of subtlvs.
-     * @return object of AutonomousSystemTlv
-     * @throws PcepParseException if mandatory fields are missing
-     */
-    public static PcepValueType read(ChannelBuffer c, short hLength) throws PcepParseException {
-
-        // Node Descriptor Sub-TLVs (variable)
-        List<PcepValueType> llNodeDescriptorSubTLVs = new LinkedList<>();
-
-        ChannelBuffer tempCb = c.readBytes(hLength);
-
-        while (TLV_HEADER_LENGTH <= tempCb.readableBytes()) {
-
-            PcepValueType tlv;
-            short hType = tempCb.readShort();
-            int iValue = 0;
-            short length = tempCb.readShort();
-
-            switch (hType) {
-
-            case AutonomousSystemSubTlv.TYPE:
-                iValue = tempCb.readInt();
-                tlv = new AutonomousSystemSubTlv(iValue);
-                break;
-            case BgpLsIdentifierSubTlv.TYPE:
-                iValue = tempCb.readInt();
-                tlv = new BgpLsIdentifierSubTlv(iValue);
-                break;
-            case OspfAreaIdSubTlv.TYPE:
-                iValue = tempCb.readInt();
-                tlv = new OspfAreaIdSubTlv(iValue);
-                break;
-            case IgpRouterIdSubTlv.TYPE:
-                tlv = IgpRouterIdSubTlv.read(tempCb, length);
-                break;
-
-            default:
-                throw new PcepParseException("Unsupported Sub TLV type :" + hType);
-            }
-
-            // Check for the padding
-            int pad = length % 4;
-            if (0 < pad) {
-                pad = 4 - pad;
-                if (pad <= tempCb.readableBytes()) {
-                    tempCb.skipBytes(pad);
-                }
-            }
-
-            llNodeDescriptorSubTLVs.add(tlv);
-        }
-
-        if (0 < tempCb.readableBytes()) {
-            throw new PcepParseException("Sub Tlv parsing error. Extra bytes received.");
-        }
-        return new LocalNodeDescriptorsTlv(llNodeDescriptorSubTLVs);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", hLength)
-                .add("NodeDescriptorSubTLVs", llNodeDescriptorSubTLVs)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LsCapabilityTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LsCapabilityTlv.java
deleted file mode 100644
index 566717d..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LsCapabilityTlv.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides TED Capability Tlv.
- */
-public class LsCapabilityTlv implements PcepValueType {
-
-    /*
-     * Reference :draft-dhodylee-pce-pcep-ls-01, section 9.1.1.
-     *  0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |               Type=[TBD5]     |            Length=4           |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                             Flags                           |R|
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(LsCapabilityTlv.class);
-
-    public static final short TYPE = (short) 65280;
-    public static final short LENGTH = 4;
-    public static final int SET = 1;
-    public static final byte RFLAG_CHECK = 0x01;
-
-    private final boolean rFlag;
-    private final int rawValue;
-    private final boolean isRawValueSet;
-
-    /**
-     * Constructor to initialize raw Value.
-     *
-     * @param rawValue Flags
-     */
-    public LsCapabilityTlv(final int rawValue) {
-        this.rawValue = rawValue;
-        this.isRawValueSet = true;
-        int temp = rawValue;
-        temp = temp & RFLAG_CHECK;
-        if (temp == SET) {
-            this.rFlag = true;
-        } else {
-            this.rFlag = false;
-        }
-
-    }
-
-    /**
-     * Constructor to initialize rFlag.
-     *
-     * @param rFlag R-flag
-     */
-    public LsCapabilityTlv(boolean rFlag) {
-        this.rFlag = rFlag;
-        this.rawValue = 0;
-        this.isRawValueSet = false;
-    }
-
-    /**
-     * Returns R-flag.
-     *
-     * @return rFlag
-     */
-    public boolean getrFlag() {
-        return rFlag;
-    }
-
-    /**
-     * Returns an object of LsCapabilityTlv.
-     *
-     * @param raw value Flags
-     * @return object of LsCapabilityTlv
-     */
-    public static LsCapabilityTlv of(final int raw) {
-        return new LsCapabilityTlv(raw);
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        if (isRawValueSet) {
-            return Objects.hash(rawValue);
-        } else {
-            return Objects.hash(rFlag);
-        }
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof LsCapabilityTlv) {
-            LsCapabilityTlv other = (LsCapabilityTlv) obj;
-            if (isRawValueSet) {
-                return Objects.equals(this.rawValue, other.rawValue);
-            } else {
-                return Objects.equals(this.rFlag, other.rFlag);
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iStartIndex = c.writerIndex();
-        int temp = 0;
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        if (isRawValueSet) {
-            c.writeInt(rawValue);
-        } else {
-            if (rFlag) {
-                temp = temp | RFLAG_CHECK;
-            }
-            c.writeInt(temp);
-        }
-        return c.writerIndex() - iStartIndex;
-    }
-
-    /**
-     * Reads channel buffer and returns object of LsCapabilityTlv.
-     *
-     * @param c input channel buffer
-     * @return object of LsCapabilityTlv
-     */
-    public static LsCapabilityTlv read(ChannelBuffer c) {
-        return LsCapabilityTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumLinkBandwidthSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumLinkBandwidthSubTlv.java
deleted file mode 100644
index 288ab4d..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumLinkBandwidthSubTlv.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provide the Maximum Link Bandwidth.
- */
-public class MaximumLinkBandwidthSubTlv implements PcepValueType {
-
-    /* Reference :[RFC5305]/3.3.
-     * 0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |              Type=[TDB34]      |             Length=4         |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |               Maximum  Link Bandwidth                         |
-     +-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(MaximumLinkBandwidthSubTlv.class);
-
-    public static final short TYPE = 23;
-    public static final short LENGTH = 4;
-
-    private final int rawValue;
-
-    /**
-     * Constructor to initialize rawValue.
-     *
-     * @param rawValue Maximum-Link-Bandwidth
-     */
-
-    public MaximumLinkBandwidthSubTlv(int rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created MaximumLinkBandwidthTlv object.
-     *
-     * @param raw value of Maximum-Link-Bandwidth
-     * @return object of MaximumLinkBandwidthTlv
-     */
-    public static MaximumLinkBandwidthSubTlv of(final int raw) {
-        return new MaximumLinkBandwidthSubTlv(raw);
-    }
-
-    /**
-     * Returns value of Maximum  Link Bandwidth.
-     *
-     * @return rawValue Maximum  Link Bandwidth
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof MaximumLinkBandwidthSubTlv) {
-            MaximumLinkBandwidthSubTlv other = (MaximumLinkBandwidthSubTlv) obj;
-            return Objects.equals(rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of MaximumLinkBandwidthTlv.
-     *
-     * @param c input channel buffer
-     * @return object of MaximumLinkBandwidthTlv
-     */
-    public static MaximumLinkBandwidthSubTlv read(ChannelBuffer c) {
-        return MaximumLinkBandwidthSubTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthSubTlv.java
deleted file mode 100644
index 1a74340..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthSubTlv.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provide the Maximum Reservable Link Bandwidth.
- */
-public class MaximumReservableLinkBandwidthSubTlv implements PcepValueType {
-
-    /* Reference :[RFC5305]/3.5.
-     * 0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |              Type=[TDB35]      |             Length=4         |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |               Maximum Reservable Link Bandwidth               |
-     +-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(MaximumReservableLinkBandwidthSubTlv.class);
-
-    public static final short TYPE = 24;
-    public static final short LENGTH = 4;
-
-    private final int rawValue;
-
-    /**
-     * constructor to initialize rawValue.
-     *
-     * @param rawValue MaximumReservableLinkBandwidth
-     */
-    public MaximumReservableLinkBandwidthSubTlv(int rawValue) {
-        log.debug("MaximumReservableLinkBandwidthTlv");
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created MaximumReservableLinkBandwidth object.
-     *
-     * @param raw MaximumReservableLinkBandwidth
-     * @return object of MaximumReservableLinkBandwidthTlv
-     */
-    public static MaximumReservableLinkBandwidthSubTlv of(final int raw) {
-        return new MaximumReservableLinkBandwidthSubTlv(raw);
-    }
-
-    /**
-     * Returns value of Maximum Reservable Link Bandwidth.
-     * @return rawValue Maximum Reservable Link Bandwidth
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof MaximumReservableLinkBandwidthSubTlv) {
-            MaximumReservableLinkBandwidthSubTlv other = (MaximumReservableLinkBandwidthSubTlv) obj;
-            return Objects.equals(this.rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of MaximumReservableLinkBandwidthTlv.
-     *
-     * @param c input channel buffer
-     * @return object of MaximumReservableLinkBandwidthTlv
-     */
-    public static MaximumReservableLinkBandwidthSubTlv read(ChannelBuffer c) {
-        return MaximumReservableLinkBandwidthSubTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MplsProtocolMaskSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MplsProtocolMaskSubTlv.java
deleted file mode 100644
index 0ca4fed..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MplsProtocolMaskSubTlv.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides MPLS Protocol Mask.
- */
-public class MplsProtocolMaskSubTlv implements PcepValueType {
-
-    /* Reference :[I-D.ietf-idr-ls-distribution]/3.3.2.2
-     *  0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |              Type=TDB39       |             Length =1         |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |L|R|  Reserved |
-     +-+-+-+-+-+-+-+-+
-     */
-    private static final Logger log = LoggerFactory.getLogger(MplsProtocolMaskSubTlv.class);
-
-    public static final short TYPE = 28;
-    public static final short LENGTH = 1;
-    public static final byte LFLAG_SET = (byte) 0x80;
-    public static final byte RFLAG_SET = 0x40;
-
-    private final byte rawValue;
-    private final boolean bLFlag;
-    private final boolean bRFlag;
-    private final boolean isRawValueSet;
-
-    /**
-     * constructor to initialize rawValue.
-     *
-     * @param rawValue MPLS Protocol Mask Flag Bits
-     */
-    public MplsProtocolMaskSubTlv(byte rawValue) {
-        this.rawValue = rawValue;
-        this.isRawValueSet = true;
-        this.bLFlag = (rawValue & LFLAG_SET) == LFLAG_SET;
-        this.bRFlag = (rawValue & RFLAG_SET) == RFLAG_SET;
-    }
-
-    /**
-     * constructor to initialize different Flags.
-     *
-     * @param bLFlag L-flag
-     * @param bRFlag R-flag
-     */
-    public MplsProtocolMaskSubTlv(boolean bLFlag, boolean bRFlag) {
-        this.bLFlag = bLFlag;
-        this.bRFlag = bRFlag;
-        this.rawValue = 0;
-        isRawValueSet = false;
-    }
-
-    /**
-     * Returns newly created MPLSProtocolMaskTlv object.
-     *
-     * @param raw MPLS Protocol Mask Tlv
-     * @return new object of MPLS Protocol Mask Tlv
-     */
-    public static MplsProtocolMaskSubTlv of(final byte raw) {
-        return new MplsProtocolMaskSubTlv(raw);
-    }
-
-    /**
-     * Returns L-flag.
-     *
-     * @return bLFlag L-flag
-     */
-    public boolean getbLFlag() {
-        return bLFlag;
-    }
-
-    /**
-     * Returns R-flag.
-     *
-     * @return bRFlag R-flag
-     */
-    public boolean getbRFlag() {
-        return bRFlag;
-    }
-
-    /**
-     * Returns raw value.
-     *
-     * @return rawValue raw value
-     */
-    public byte getByte() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        if (isRawValueSet) {
-            return Objects.hash(rawValue);
-        } else {
-            return Objects.hash(bLFlag, bRFlag);
-        }
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof MplsProtocolMaskSubTlv) {
-            MplsProtocolMaskSubTlv other = (MplsProtocolMaskSubTlv) obj;
-            if (isRawValueSet) {
-                return Objects.equals(this.rawValue, other.rawValue);
-            } else {
-                return Objects.equals(this.bLFlag, other.bLFlag) && Objects.equals(this.bRFlag, other.bRFlag);
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        if (isRawValueSet) {
-            c.writeByte(rawValue);
-        } else {
-            byte temp = 0;
-            if (bLFlag) {
-                temp = (byte) (temp | LFLAG_SET);
-            }
-            if (bRFlag) {
-                temp = (byte) (temp | RFLAG_SET);
-            }
-            c.writeByte(temp);
-        }
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of MPLS Protocol Mask Tlv.
-     *
-     * @param c input channel buffer
-     * @return object of MPLS Protocol Mask Tlv
-     */
-    public static PcepValueType read(ChannelBuffer c) {
-        byte temp = c.readByte();
-        boolean bLFlag;
-        boolean bRFlag;
-
-        bLFlag = (temp & LFLAG_SET) == LFLAG_SET;
-        bRFlag = (temp & RFLAG_SET) == RFLAG_SET;
-
-        return new MplsProtocolMaskSubTlv(bLFlag, bRFlag);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv4addressTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv4addressTlv.java
deleted file mode 100644
index 1848bf5..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv4addressTlv.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * NexthopIPv6addressTlv provides Ipv4 address of next hop.
- */
-public class NexthopIPv4addressTlv implements PcepValueType {
-
-    /*
-        Reference :draft-zhao-pce-pcep-extension-for-pce-controller-01
-
-        0                   1                   2                     3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       | Type=TBD                      |          Length = 4           |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                     nexthop IPv4 address                      |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-                      NEXTHOP-IPV4-ADDRESS TLV
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(NexthopIPv4addressTlv.class);
-
-    public static final short TYPE = (short) 65289; //to be defined
-    //Length is header + value
-    public static final short LENGTH = 8;
-    public static final short VALUE_LENGTH = 4;
-
-    private final int rawValue;
-
-    /**
-     * Constructor to initialize next hop IPv4 address.
-     *
-     * @param rawValue next hop IPv4 address
-     */
-    public NexthopIPv4addressTlv(int rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Return next hop IPv4 address tlv.
-     *
-     * @param raw of next hop IPv4 address
-     * @return object of NexthopIPv4addressTlv
-     */
-    public static NexthopIPv4addressTlv of(final int raw) {
-        return new NexthopIPv4addressTlv(raw);
-    }
-
-    /**
-     * Returns next hop IPv4 address.
-     *
-     * @return next hop IPv4 address
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return VALUE_LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof NexthopIPv4addressTlv) {
-            NexthopIPv4addressTlv other = (NexthopIPv4addressTlv) obj;
-            return Objects.equals(this.rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(VALUE_LENGTH);
-        c.writeInt(rawValue);
-        return c.writerIndex() - iStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of NexthopIPv4addressTlv.
-     *
-     * @param c type of channel buffer
-     * @return object of NexthopIPv4addressTlv
-     */
-    public static NexthopIPv4addressTlv read(ChannelBuffer c) {
-        return NexthopIPv4addressTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", VALUE_LENGTH)
-                .add("Ipv4Address ", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv6addressTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv6addressTlv.java
deleted file mode 100644
index 2c031ab..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv6addressTlv.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-
-/**
- * NexthopIPv6addressTlv provides Ipv6  address of next hop.
- */
-public class NexthopIPv6addressTlv implements PcepValueType {
-
-    /*
-       Reference: draft-zhao-pce-pcep-extension-for-pce-controller-01.
-
-        0                   1                   2                     3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       | Type=TBD                      | Length = 20                   |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                                                               |
-       //               nexthop IPv6 address (16 bytes)                //
-       |                                                               |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-                     NEXTHOP-IPV6-ADDRESS TLV:
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(NexthopIPv6addressTlv.class);
-
-    public static final short TYPE = 100; //to be defined
-    //Length is header + value
-    public static final short LENGTH = 20;
-    public static final short VALUE_LENGTH = 16;
-
-    private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-    public static final NexthopIPv6addressTlv NONE = new NexthopIPv6addressTlv(NONE_VAL);
-
-    private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
-        (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
-        (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF };
-    public static final NexthopIPv6addressTlv NO_MASK = new NexthopIPv6addressTlv(NO_MASK_VAL);
-    public static final NexthopIPv6addressTlv FULL_MASK = NONE;
-
-    private final byte[] rawValue;
-
-    /**
-     * Constructor to initialize IP address for next hop IPv6 address tlv.
-     *
-     * @param rawValue value of Next hop ipAddress
-     */
-    public NexthopIPv6addressTlv(byte[] rawValue) {
-        log.debug("NexthopIPv6addressTlv");
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Creates next hop IPv6 address tlv.
-     *
-     * @param raw value of Next hop ipAddress
-     * @return object of NexthopIPv6addressTlv
-     */
-    //logic to be checked
-    public static NexthopIPv6addressTlv of(final byte[] raw) {
-        //check NONE_VAL
-        boolean bFoundNone = true;
-        //value starts from 3rd byte.
-        for (int i = 5; i < 20; ++i) {
-            if (NONE_VAL[i] != raw[i]) {
-                bFoundNone = false;
-            }
-        }
-
-        if (bFoundNone) {
-            return NONE;
-        }
-
-        //check NO_MASK_VAL
-        boolean bFoundNoMask = true;
-        //value starts from 3rd byte.
-        for (int i = 5; i < 20; ++i) {
-            if ((byte) 0xFF != raw[i]) {
-                bFoundNoMask = false;
-            }
-        }
-        if (bFoundNoMask) {
-            return NO_MASK;
-        }
-        return new NexthopIPv6addressTlv(raw);
-    }
-
-    /**
-     * Returns next hop IPv6 address.
-     *
-     * @return next hop IPv6 address
-     */
-    public byte[] getBytes() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Arrays.hashCode(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof NexthopIPv6addressTlv) {
-            NexthopIPv6addressTlv other = (NexthopIPv6addressTlv) obj;
-            return Arrays.equals(this.rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeBytes(rawValue);
-        return c.writerIndex() - iStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of NexthopIPv6addressTlv.
-     *
-     * @param c type of channel buffer
-     * @return object of NexthopIPv6addressTlv
-     */
-    public static NexthopIPv6addressTlv read(ChannelBuffer c) {
-        byte[] yTemp = new byte[20];
-        c.readBytes(yTemp, 0, 20);
-        return NexthopIPv6addressTlv.of(yTemp);
-    }
-
-    @Override
-    public String toString() {
-        ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass());
-
-        toStrHelper.add("Type", TYPE);
-        toStrHelper.add("Length", LENGTH);
-
-        StringBuffer result = new StringBuffer();
-        for (byte b : rawValue) {
-            result.append(String.format("%02X ", b));
-        }
-        toStrHelper.add("IpAddress", result);
-
-        return toStrHelper.toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlv.java
deleted file mode 100644
index 8f03277..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlv.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * NexthopUnnumberedIPv4IDTlv provides the next node's ID and Interface ID.
- */
-public class NexthopUnnumberedIPv4IDTlv implements PcepValueType {
-
-    /*
-        Reference : draft-zhao-pce-pcep-extension-for-pce-controller-01.
-
-        0 1 2 3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       | Type=TBD                      | Length = 12                   |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                          Node-ID                              |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                          Interface ID                         |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-                      NEXTHOP-UNNUMBERED-IPV4-ID TLV
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(NexthopUnnumberedIPv4IDTlv.class);
-
-    public static final short TYPE = 1; //to be defined
-    //Length is header + value
-    public static final short LENGTH = 12;
-
-    private final int nodeID;
-    private final int interfaceID;
-
-    /**
-     * constructor to initialize nodeID and interfaceID.
-     *
-     * @param nodeID node ID
-     * @param interfaceID interface ID
-     */
-    public NexthopUnnumberedIPv4IDTlv(int nodeID, int interfaceID) {
-        this.nodeID = nodeID;
-        this.interfaceID = interfaceID;
-    }
-
-    /**
-     * Returns new object of NexthopUnnumberedIPv4IDTlv.
-     *
-     * @param nodeID node ID
-     * @param interfaceID interface ID
-     * @return NexthopUnnumberedIPv4IDTlv
-     */
-    public static NexthopUnnumberedIPv4IDTlv of(int nodeID, int interfaceID) {
-        return new NexthopUnnumberedIPv4IDTlv(nodeID, interfaceID);
-    }
-
-    /**
-     * Returns Node Id.
-     *
-     * @return node ID
-     */
-    public int getNodeID() {
-        return nodeID;
-    }
-
-    /**
-     * Returns Interface Id.
-     *
-     * @return interface ID
-     */
-    public int getInterfaceID() {
-        return interfaceID;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(nodeID, interfaceID);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof NexthopUnnumberedIPv4IDTlv) {
-            NexthopUnnumberedIPv4IDTlv other = (NexthopUnnumberedIPv4IDTlv) obj;
-            return Objects.equals(this.nodeID, other.nodeID) && Objects.equals(this.interfaceID, other.interfaceID);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-
-        c.writeInt(nodeID);
-        c.writeInt(interfaceID);
-
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of NexthopUnnumberedIPv4IDTlv.
-     *
-     * @param cb type of channel buffer
-     * @return object of NexthopUnnumberedIPv4IDTlv
-     */
-    public static NexthopUnnumberedIPv4IDTlv read(ChannelBuffer cb) {
-        int nodeID = cb.readInt();
-        int interfaceID = cb.readInt();
-        return new NexthopUnnumberedIPv4IDTlv(nodeID, interfaceID);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("NodeId", nodeID)
-                .add("InterfaceId", interfaceID)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeAttributesTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeAttributesTlv.java
deleted file mode 100644
index 633c46d..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeAttributesTlv.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides TE Node Attributes Tlv.
- */
-public class NodeAttributesTlv implements PcepValueType {
-    /*
-     * Reference :PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02
-     *
-      0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |           Type=[TBD20]        |             Length            |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                                                               |
-     //              Node Attributes Sub-TLVs (variable)            //
-     |                                                               |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(NodeAttributesTlv.class);
-
-    public static final short TYPE = (short) 65285;
-    short hLength;
-
-    public static final int TLV_HEADER_LENGTH = 4;
-    // LinkDescriptors Sub-TLVs (variable)
-    private List<PcepValueType> llNodeAttributesSubTLVs;
-
-    /**
-     * Constructor to initialize llNodeAttributesSubTLVs.
-     *
-     * @param llNodeAttributesSubTLVs linked list of Node Attributes Sub-TLVs
-     */
-    public NodeAttributesTlv(List<PcepValueType> llNodeAttributesSubTLVs) {
-        this.llNodeAttributesSubTLVs = llNodeAttributesSubTLVs;
-    }
-
-    /**
-     * Returns object of NodeAttributesTlv.
-     *
-     * @param llNodeAttributesSubTLVs List of PcepValueType
-     * @return object of NodeAttributesTlv
-     */
-    public static NodeAttributesTlv of(List<PcepValueType> llNodeAttributesSubTLVs) {
-        return new NodeAttributesTlv(llNodeAttributesSubTLVs);
-    }
-
-    /**
-     * Returns Node Attributes Sub-TLVs.
-     *
-     * @return llNodeAttributesSubTLVs linked list of Node Attributes Sub-TLVs
-     */
-    public List<PcepValueType> getllNodeAttributesSubTLVs() {
-        return llNodeAttributesSubTLVs;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return hLength;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(llNodeAttributesSubTLVs.hashCode());
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        /*
-         * Here we have a list of Tlv so to compare each sub tlv between the object
-         * we have to take a list iterator so one by one we can get each sub tlv object
-         * and can compare them.
-         * it may be possible that the size of 2 lists is not equal so we have to first check
-         * the size, if both are same then we should check for the subtlv objects otherwise
-         * we should return false.
-         */
-        if (obj instanceof NodeAttributesTlv) {
-            int countObjSubTlv = 0;
-            int countOtherSubTlv = 0;
-            boolean isCommonSubTlv = true;
-            NodeAttributesTlv other = (NodeAttributesTlv) obj;
-            Iterator<PcepValueType> objListIterator = ((NodeAttributesTlv) obj).llNodeAttributesSubTLVs.iterator();
-            countObjSubTlv = ((NodeAttributesTlv) obj).llNodeAttributesSubTLVs.size();
-            countOtherSubTlv = other.llNodeAttributesSubTLVs.size();
-            if (countObjSubTlv != countOtherSubTlv) {
-                return false;
-            } else {
-                while (objListIterator.hasNext() && isCommonSubTlv) {
-                    PcepValueType subTlv = objListIterator.next();
-                    isCommonSubTlv = Objects.equals(llNodeAttributesSubTLVs.contains(subTlv),
-                            other.llNodeAttributesSubTLVs.contains(subTlv));
-                }
-                return isCommonSubTlv;
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int tlvStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        int tlvLenIndex = c.writerIndex();
-        hLength = 0;
-        c.writeShort(hLength);
-
-        ListIterator<PcepValueType> listIterator = llNodeAttributesSubTLVs.listIterator();
-
-        while (listIterator.hasNext()) {
-            PcepValueType tlv = listIterator.next();
-
-            tlv.write(c);
-
-            // need to take care of padding
-            int pad = tlv.getLength() % 4;
-
-            if (0 != pad) {
-                pad = 4 - pad;
-                for (int i = 0; i < pad; ++i) {
-                    c.writeByte((byte) 0);
-                }
-            }
-        }
-
-        hLength = (short) (c.writerIndex() - tlvStartIndex);
-        c.setShort(tlvLenIndex, (hLength - TLV_HEADER_LENGTH));
-
-        return c.writerIndex() - tlvStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of NodeAttributesTlv.
-     *
-     * @param c input channel buffer
-     * @param hLength length
-     * @return object of NodeAttributesTlv
-     * @throws PcepParseException if mandatory fields are missing
-     */
-    public static PcepValueType read(ChannelBuffer c, short hLength) throws PcepParseException {
-
-        // Node Descriptor Sub-TLVs (variable)
-        List<PcepValueType> llNodeAttributesSubTLVs = new LinkedList<>();
-
-        ChannelBuffer tempCb = c.readBytes(hLength);
-
-        while (TLV_HEADER_LENGTH <= tempCb.readableBytes()) {
-            PcepValueType tlv;
-            short hType = tempCb.readShort();
-            int iValue = 0;
-            short length = tempCb.readShort();
-            switch (hType) {
-
-            case NodeFlagBitsSubTlv.TYPE:
-                byte cValue = tempCb.readByte();
-                tlv = new NodeFlagBitsSubTlv(cValue);
-                break;
-            case OpaqueNodePropertiesSubTlv.TYPE:
-                tlv = OpaqueNodePropertiesSubTlv.read(tempCb, length);
-                break;
-            case NodeNameSubTlv.TYPE:
-                tlv = NodeNameSubTlv.read(tempCb, length);
-                break;
-            case IsisAreaIdentifierSubTlv.TYPE:
-                tlv = IsisAreaIdentifierSubTlv.read(tempCb, length);
-                break;
-            case IPv4RouterIdOfLocalNodeSubTlv.TYPE:
-                iValue = tempCb.readInt();
-                tlv = new IPv4RouterIdOfLocalNodeSubTlv(iValue);
-                break;
-            case IPv6RouterIdofLocalNodeSubTlv.TYPE:
-                byte[] ipv6Value = new byte[IPv6RouterIdofLocalNodeSubTlv.VALUE_LENGTH];
-                tempCb.readBytes(ipv6Value, 0, IPv6RouterIdofLocalNodeSubTlv.VALUE_LENGTH);
-                tlv = new IPv6RouterIdofLocalNodeSubTlv(ipv6Value);
-                break;
-            default:
-                throw new PcepParseException("Unsupported Sub TLV type :" + hType);
-            }
-
-            // Check for the padding
-            int pad = length % 4;
-            if (0 < pad) {
-                pad = 4 - pad;
-                if (pad <= tempCb.readableBytes()) {
-                    tempCb.skipBytes(pad);
-                }
-            }
-
-            llNodeAttributesSubTLVs.add(tlv);
-        }
-
-        if (0 < tempCb.readableBytes()) {
-
-            throw new PcepParseException("Sub Tlv parsing error. Extra bytes received.");
-        }
-        return new NodeAttributesTlv(llNodeAttributesSubTLVs);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", hLength)
-                .add("NodeAttributesSubTLVs", llNodeAttributesSubTLVs)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeFlagBitsSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeFlagBitsSubTlv.java
deleted file mode 100644
index 5b0cc78..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeFlagBitsSubTlv.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provide node Flags bits.
- */
-public class NodeFlagBitsSubTlv implements PcepValueType {
-
-    /* Reference :[I-D.ietf-idr- ls-distribution] /3.3.1.1
-     * 0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |              Type=[TBD21]      |             Length=1         |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |O|T|E|B| Reserved|
-     +-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(NodeFlagBitsSubTlv.class);
-
-    public static final short TYPE = 13;
-    public static final short LENGTH = 1;
-    public static final int SET = 1;
-    public static final byte OFLAG_SET = (byte) 0x80;
-    public static final byte TFLAG_SET = 0x40;
-    public static final byte EFLAG_SET = 0x20;
-    public static final byte BFLAG_SET = 0x10;
-
-    private final byte rawValue;
-    private final boolean bOFlag;
-    private final boolean bTFlag;
-    private final boolean bEFlag;
-    private final boolean bBFlag;
-    private final boolean isRawValueSet;
-
-    /**
-     * constructor to initialize rawValue.
-     *
-     * @param rawValue of Node Flag Bits TLV
-     */
-    public NodeFlagBitsSubTlv(byte rawValue) {
-        this.rawValue = rawValue;
-        isRawValueSet = true;
-        this.bOFlag = (rawValue & OFLAG_SET) == OFLAG_SET;
-        this.bTFlag = (rawValue & TFLAG_SET) == TFLAG_SET;
-        this.bEFlag = (rawValue & EFLAG_SET) == EFLAG_SET;
-        this.bBFlag = (rawValue & BFLAG_SET) == BFLAG_SET;
-    }
-
-    /**
-     * constructor to initialize different Flags.
-     *
-     * @param bOFlag O-flag
-     * @param bTFlag T-flag
-     * @param bEFlag E-flag
-     * @param bBFlag B-flag
-     */
-    public NodeFlagBitsSubTlv(boolean bOFlag, boolean bTFlag, boolean bEFlag, boolean bBFlag) {
-        this.bOFlag = bOFlag;
-        this.bTFlag = bTFlag;
-        this.bEFlag = bEFlag;
-        this.bBFlag = bBFlag;
-        this.rawValue = 0;
-        this.isRawValueSet = false;
-    }
-
-    /**
-     * Returns newly created NodeFlagBitsTlv object.
-     *
-     * @param raw of Node Flag Bits TLV
-     * @return new object of NodeFlagBitsTlv
-     */
-    public static NodeFlagBitsSubTlv of(final byte raw) {
-        return new NodeFlagBitsSubTlv(raw);
-    }
-
-    /**
-     * Returns raw value of NodeFlagBitsTlv.
-     *
-     * @return rawValue raw value
-     */
-    public byte getbyte() {
-        return rawValue;
-    }
-
-    /**
-     * Returns O-flag.
-     *
-     * @return bOFlag O-flag
-     */
-    public boolean getOFlag() {
-        return bOFlag;
-    }
-
-    /**
-     * Returns T-flag.
-     *
-     * @return bTFlag T-flag
-     */
-    public boolean getTFlag() {
-        return bTFlag;
-    }
-
-    /**
-     * Returns E-flag.
-     *
-     * @return bEFlag E-flag
-     */
-    public boolean getEFlag() {
-        return bEFlag;
-    }
-
-    /**
-     * Returns B-flag.
-     *
-     * @return bBFlag B-flag
-     */
-    public boolean getBFlag() {
-        return bBFlag;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        if (isRawValueSet) {
-            return Objects.hash(rawValue);
-        } else {
-            return Objects.hash(bOFlag, bTFlag, bEFlag, bBFlag);
-        }
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof NodeFlagBitsSubTlv) {
-            NodeFlagBitsSubTlv other = (NodeFlagBitsSubTlv) obj;
-            if (isRawValueSet) {
-                return Objects.equals(this.rawValue, other.rawValue);
-            } else {
-                return Objects.equals(this.bOFlag, other.bOFlag) && Objects.equals(this.bTFlag, other.bTFlag)
-                        && Objects.equals(this.bEFlag, other.bEFlag) && Objects.equals(this.bBFlag, other.bBFlag);
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        if (isRawValueSet) {
-            c.writeByte(rawValue);
-        } else {
-            byte temp = 0;
-            if (bOFlag) {
-                temp = (byte) (temp | OFLAG_SET);
-            }
-            if (bTFlag) {
-                temp = (byte) (temp | TFLAG_SET);
-            }
-            if (bEFlag) {
-                temp = (byte) (temp | EFLAG_SET);
-            }
-            if (bBFlag) {
-                temp = (byte) (temp | BFLAG_SET);
-            }
-            c.writeByte(temp);
-        }
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of NodeFlagBitsTlv.
-     *
-     * @param c input channel buffer
-     * @return object of NodeFlagBitsTlv
-     */
-    public static PcepValueType read(ChannelBuffer c) {
-
-        return NodeFlagBitsSubTlv.of(c.readByte());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("OFlag", (bOFlag) ? 1 : 0)
-                .add("TFlag", (bTFlag) ? 1 : 0)
-                .add("EFlag", (bEFlag) ? 1 : 0)
-                .add("BFlag", (bBFlag) ? 1 : 0)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeNameSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeNameSubTlv.java
deleted file mode 100644
index fc7648c..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeNameSubTlv.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Arrays;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-
-/**
- * Provide the name for the node.
- */
-public class NodeNameSubTlv implements PcepValueType {
-
-    /* reference :[I-D.ietf-idr-ls-distribution]/3.3.1.3
-     *  0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |              Type=[TBD23]     |             Length            |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     //                     Node Name (variable)                    //
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(NodeNameSubTlv.class);
-
-    public static final short TYPE = 15;
-    public final short hLength;
-
-    private final byte[] rawValue;
-
-    /**
-     * constructor to initialize rawValue.
-     *
-     * @param rawValue of Node Name
-     * @param hLength length
-     */
-    public NodeNameSubTlv(byte[] rawValue, short hLength) {
-        log.debug("NodeNameTlv");
-        this.rawValue = rawValue;
-        if (0 == hLength) {
-            this.hLength = (short) rawValue.length;
-        } else {
-            this.hLength = hLength;
-        }
-    }
-
-    /**
-     * Returns newly created NodeNameTlv object.
-     *
-     * @param raw of NodeName
-     * @param hLength length
-     * @return new object of Node Name Tlv
-     */
-    public static NodeNameSubTlv of(final byte[] raw, short hLength) {
-        return new NodeNameSubTlv(raw, hLength);
-    }
-
-    /**
-     * Returns RawValue for NodeName.
-     *
-     * @return rawValue raw value
-     */
-    public byte[] getValue() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return hLength;
-    }
-
-    @Override
-    public int hashCode() {
-        return Arrays.hashCode(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof NodeNameSubTlv) {
-            NodeNameSubTlv other = (NodeNameSubTlv) obj;
-            return Arrays.equals(this.rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(hLength);
-        c.writeBytes(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of NodeNameTlv.
-     *
-     * @param c input channel buffer
-     * @param hLength length
-     * @return object of Node Name TLV
-     */
-    public static PcepValueType read(ChannelBuffer c, short hLength) {
-        byte[] iNodeName = new byte[hLength];
-        c.readBytes(iNodeName, 0, hLength);
-        return new NodeNameSubTlv(iNodeName, hLength);
-    }
-
-    @Override
-    public String toString() {
-        ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass());
-
-        toStrHelper.add("Type", TYPE);
-        toStrHelper.add("Length", hLength);
-
-        StringBuffer result = new StringBuffer();
-        for (byte b : rawValue) {
-            result.append(String.format("%02X ", b));
-        }
-        toStrHelper.add("Value", result);
-
-        return toStrHelper.toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueLinkAttributeSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueLinkAttributeSubTlv.java
deleted file mode 100644
index cec7292..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueLinkAttributeSubTlv.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Arrays;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-
-/**
- * Provides Opaque Link Attribute.
- */
-public class OpaqueLinkAttributeSubTlv implements PcepValueType {
-
-    /*
-     * TLV format.
-     * Reference :[I-D.ietf-idr-attributesls-distribution] /3.3.2.6
-      0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |              Type=TBD42       |             Length            |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     //                Opaque link attributes (variable)            //
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(OpaqueLinkAttributeSubTlv.class);
-
-    public static final short TYPE = 31;
-    private final short hLength;
-
-    private final byte[] rawValue;
-
-    /**
-     * constructor to initialize rawValue.
-     *
-     * @param rawValue of Opaque Link Attribute
-     * @param hLength length
-     */
-    public OpaqueLinkAttributeSubTlv(byte[] rawValue, short hLength) {
-        log.debug("OpaqueLinkAttributeTlv");
-        this.rawValue = rawValue;
-        if (0 == hLength) {
-            this.hLength = (short) rawValue.length;
-        } else {
-            this.hLength = hLength;
-        }
-    }
-
-    /**
-     * Returns newly created OpaqueLinkAttributeTlv object.
-     *
-     * @param raw of Opaque Link Attribute
-     * @param hLength length
-     * @return new object of OpaqueLinkAttributeTlv
-     */
-    public static OpaqueLinkAttributeSubTlv of(final byte[] raw, short hLength) {
-        return new OpaqueLinkAttributeSubTlv(raw, hLength);
-    }
-
-    /**
-     * Returns raw value of Opaque Link Attribute Tlv.
-     * @return rawValue raw value
-     */
-    public byte[] getValue() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return hLength;
-    }
-
-    @Override
-    public int hashCode() {
-        return Arrays.hashCode(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof OpaqueLinkAttributeSubTlv) {
-            OpaqueLinkAttributeSubTlv other = (OpaqueLinkAttributeSubTlv) obj;
-            return Arrays.equals(this.rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(hLength);
-        c.writeBytes(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of OpaqueLinkAttributeTlv.
-     *
-     * @param c input channel buffer
-     * @param hLength length
-     * @return object of Opaque Link Attribute Tlv
-     */
-    public static PcepValueType read(ChannelBuffer c, short hLength) {
-        byte[] iOpaqueValue = new byte[hLength];
-        c.readBytes(iOpaqueValue, 0, hLength);
-        return new OpaqueLinkAttributeSubTlv(iOpaqueValue, hLength);
-    }
-
-    @Override
-    public String toString() {
-        ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass());
-
-        toStrHelper.add("Type", TYPE);
-        toStrHelper.add("Length", hLength);
-
-        StringBuffer result = new StringBuffer();
-        for (byte b : rawValue) {
-            result.append(String.format("%02X ", b));
-        }
-        toStrHelper.add("Value", result);
-
-        return toStrHelper.toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueNodePropertiesSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueNodePropertiesSubTlv.java
deleted file mode 100644
index a03e3de..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueNodePropertiesSubTlv.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Arrays;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-
-/**
- * Provides Opaque node attributes.
- */
-public class OpaqueNodePropertiesSubTlv implements PcepValueType {
-    /*
-     * Reference [I-D.ietf-idr-Properties ls-distribution] /3.3.1.5
-     * 0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |              Type=[TBD22]     |             Length            |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     //               Opaque node attributes (variable)             //
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(OpaqueNodePropertiesSubTlv.class);
-
-    public static final short TYPE = 14;
-    private final short hLength;
-
-    private final byte[] rawValue;
-
-    /**
-     * constructor to initialize rawValue.
-     *
-     * @param rawValue Opaque Node Attribute
-     * @param hLength length
-     */
-    public OpaqueNodePropertiesSubTlv(byte[] rawValue, short hLength) {
-
-        this.rawValue = rawValue;
-        if (0 == hLength) {
-            this.hLength = (short) rawValue.length;
-        } else {
-            this.hLength = hLength;
-        }
-    }
-
-    /**
-     * Returns newly created OpaqueNodeAttributeTlv object.
-     *
-     * @param raw value of Opaque Node Attribute
-     * @param hLength length
-     * @return new object of Opaque Node Attribute Tlv
-     */
-    public static OpaqueNodePropertiesSubTlv of(final byte[] raw, short hLength) {
-        return new OpaqueNodePropertiesSubTlv(raw, hLength);
-    }
-
-    /**
-     * Returns raw value of Opaque Node Attribute Tlv.
-     *
-     * @return rawValue of Opaque Node Attribute
-     */
-    public byte[] getValue() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return hLength;
-    }
-
-    @Override
-    public int hashCode() {
-        return Arrays.hashCode(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof OpaqueNodePropertiesSubTlv) {
-            OpaqueNodePropertiesSubTlv other = (OpaqueNodePropertiesSubTlv) obj;
-            return Arrays.equals(this.rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(hLength);
-        c.writeBytes(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of Opaque Node Attribute Tlv.
-     *
-     * @param c input channel buffer
-     * @param hLength length
-     * @return object of OpaqueNodeAttributeTlv
-     */
-    public static PcepValueType read(ChannelBuffer c, short hLength) {
-        byte[] iOpaqueValue = new byte[hLength];
-        c.readBytes(iOpaqueValue, 0, hLength);
-        return new OpaqueNodePropertiesSubTlv(iOpaqueValue, hLength);
-    }
-
-    @Override
-    public String toString() {
-        ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass());
-
-        toStrHelper.add("Type", TYPE);
-        toStrHelper.add("Length", hLength);
-
-        StringBuffer result = new StringBuffer();
-        for (byte b : rawValue) {
-            result.append(String.format("%02X ", b));
-        }
-        toStrHelper.add("Value", result);
-
-        return toStrHelper.toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OspfAreaIdSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OspfAreaIdSubTlv.java
deleted file mode 100644
index 5e77e2f..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OspfAreaIdSubTlv.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.base.MoreObjects;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Objects;
-
-/**
- * Provides area ID for OSPF area.
- */
-public class OspfAreaIdSubTlv implements PcepValueType {
-
-    /* Reference :draft-ietf-idr-ls-distribution-10.
-     *  0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |           Type=[TBD12]         |             Length=4         |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                    opaque value (32 Bit AS Number)            |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(OspfAreaIdSubTlv.class);
-
-    public static final short TYPE = 3;
-    public static final short LENGTH = 4;
-
-    private final int rawValue;
-
-    /**
-     * constructor to initialize rawValue.
-     *
-     * @param rawValue area ID for OSPF area.
-     */
-    public OspfAreaIdSubTlv(int rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created OSPFareaIDsubTlv object.
-     *
-     * @param raw opaque value of AreaID
-     * @return new object of OSPF area ID sub TLV
-     */
-    public static OspfAreaIdSubTlv of(final int raw) {
-        return new OspfAreaIdSubTlv(raw);
-    }
-
-    /**
-     * Returns RawValue opaque value of AreaID.
-     *
-     * @return rawValue Area ID
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof OspfAreaIdSubTlv) {
-            OspfAreaIdSubTlv other = (OspfAreaIdSubTlv) obj;
-            return Objects.equals(this.rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of OSPFAreaIdSubTlv.
-     *
-     * @param c input channel buffer
-     * @return object of OSPFAreaIdSubTlv
-     */
-    public static OspfAreaIdSubTlv read(ChannelBuffer c) {
-        return OspfAreaIdSubTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathKeySubObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathKeySubObject.java
deleted file mode 100644
index dd177b4..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathKeySubObject.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Path Key SubObject: When a PCC needs to expand a path-key in order to expand a CPS, it
- * issues a Path Computation Request (PCReq) to the PCE identified in
- * the PKS in the RSVP-TE ERO that it is processing.  The PCC supplies
- * the PKS to be expanded in a PATH-KEY SubObject in the PCReq message.
- */
-public class PathKeySubObject implements PcepValueType {
-
-    /*
-    Pathkey subobject(RFC 5520):
-     0                   1                   2                   3
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |L|    Type     |     Length    |           Path-Key            |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                         PCE ID (4 bytes)                      |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PathKeySubObject.class);
-
-    public static final byte TYPE = 0x40;
-    public static final byte LENGTH = 8;
-    private final short pathKey;
-    private final int pceID;
-
-    /**
-     * Constructor for Path Key sub Object which initializes pathKey and pceId.
-     *
-     * @param pathKey path key provided by PCC
-     * @param pceID ID for the PCE
-     */
-    public PathKeySubObject(short pathKey, int pceID) {
-        this.pathKey = pathKey;
-        this.pceID = pceID;
-    }
-
-    /**
-     * Creates Path Key sub Object which initializes pathKey and pceId.
-     *
-     * @param pathKey path key provided by PCC
-     * @param pceID PCE id
-     * @return new object of type path key sub object
-     */
-    public static PathKeySubObject of(short pathKey, int pceID) {
-        return new PathKeySubObject(pathKey, pceID);
-    }
-
-    /**
-     * Returns Path Key.
-     *
-     * @return pathKey
-     */
-    public short getPathKey() {
-        return pathKey;
-    }
-
-    /**
-     * Returns pceID.
-     *
-     * @return pceID
-     */
-    public int getPceId() {
-        return pceID;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(pathKey, pceID);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof PathKeySubObject) {
-            PathKeySubObject other = (PathKeySubObject) obj;
-            return Objects.equals(this.pathKey, other.pathKey) && Objects.equals(this.pceID, other.pceID);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-
-        c.writeShort(pathKey);
-        c.writeInt(pceID);
-
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns new path key sub objects.
-     *
-     * @param c of type channel buffer
-     * @return object of type path key sub object
-     */
-    public static PcepValueType read(ChannelBuffer c) {
-        Short pathKey = c.readShort();
-        int pceID = c.readInt();
-        return new PathKeySubObject(pathKey, pceID);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("PathKey", pathKey)
-                .add("PceID", pceID)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathSetupTypeTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathSetupTypeTlv.java
deleted file mode 100644
index 1f993de..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathSetupTypeTlv.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PcepSetup type tlv.
- */
-public class PathSetupTypeTlv implements PcepValueType {
-
-    /*
-       Reference : draft-sivabalan-pce-lsp-setup-type-02.
-
-         0                   1                   2                     3
-          0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-         | Type                          | Length                        |
-         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-         | Reserved                                      | PST           |
-         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-                     Figure 1: PATH-SETUP-TYPE TLV
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(PathSetupTypeTlv.class);
-
-    public static final short TYPE = 28;
-    public static final short LENGTH = 4;
-
-    private final byte pst;
-    private final int rawValue;
-    private final boolean isRawValueSet;
-
-    /**
-     * Constructor to initialize parameters for path setup type tlv.
-     *
-     * @param rawValue parameter for path setup type tlv
-     */
-    public PathSetupTypeTlv(final int rawValue) {
-        this.rawValue = rawValue;
-        this.isRawValueSet = true;
-        this.pst = (byte) rawValue;
-    }
-
-    /**
-     * Constructor to initialize pst.
-     *
-     * @param pst PST
-     */
-    public PathSetupTypeTlv(byte pst) {
-        this.pst = pst;
-        this.rawValue = 0;
-        this.isRawValueSet = false;
-    }
-
-    /**
-     * Returns Object of path setup type tlv.
-     *
-     * @param raw parameter for path setup type tlv
-     * @return object of PathSetupTypeTlv
-     */
-    public static PathSetupTypeTlv of(final int raw) {
-        return new PathSetupTypeTlv(raw);
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    /**
-     * Returns parameters for path setup type tlv.
-     *
-     * @return parameters for path setup type tlv
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    /**
-     * Returns the pst value.
-     *
-     * @return pst value
-     */
-    public byte getPst() {
-        return pst;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(pst);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof PathSetupTypeTlv) {
-            PathSetupTypeTlv other = (PathSetupTypeTlv) obj;
-            return Objects.equals(this.pst, other.pst);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(pst);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Returns the object of type PathSetupTypeTlv.
-     *
-     * @param c is type Channel buffer
-     * @return object of PathSetupTypeTlv
-     */
-    public static PathSetupTypeTlv read(ChannelBuffer c) {
-        return PathSetupTypeTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("PST", pst)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PceccCapabilityTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PceccCapabilityTlv.java
deleted file mode 100644
index 0f29c53..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PceccCapabilityTlv.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PceccCapabilityTlv.
- */
-public class PceccCapabilityTlv implements PcepValueType {
-
-    /*          PCECC CAPABILITY TLV
-     * Reference : draft-zhao-pce-pcep-extension-for-pce-controller-03, section-7.1.1
-
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-   |               Type=[TBD]      |            Length=4           |
-   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-   |                             Flags                           |S|
-   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(PceccCapabilityTlv.class);
-
-    public static final short TYPE = (short) 65287;
-    public static final short LENGTH = 4;
-    public static final int SET = 1;
-    public static final byte SBIT_CHECK = 0x01;
-
-    private final boolean sBit;
-
-    private final int rawValue;
-    private final boolean isRawValueSet;
-
-    /**
-     * Constructor to initialize raw Value.
-     *
-     * @param rawValue raw value
-     */
-    public PceccCapabilityTlv(final int rawValue) {
-        this.rawValue = rawValue;
-        this.isRawValueSet = true;
-
-        sBit = (rawValue & SBIT_CHECK) == SBIT_CHECK;
-    }
-
-    /**
-     * Constructor to initialize G-flag L-flag.
-     *
-     * @param sBit pcecc sr capbaility bit
-     */
-    public PceccCapabilityTlv(boolean sBit) {
-        this.sBit = sBit;
-        this.rawValue = 0;
-        this.isRawValueSet = false;
-    }
-
-    /**
-     * Returns newly created PceccCapabilityTlv object.
-     *
-     * @param raw value
-     * @return object of Pcecc Capability Tlv
-     */
-    public static PceccCapabilityTlv of(final int raw) {
-        return new PceccCapabilityTlv(raw);
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    /**
-     * Returns sBit.
-     *
-     * @return sBit S bit
-     */
-    public boolean sBit() {
-        return sBit;
-    }
-
-    /**
-     * Returns the raw value.
-     *
-     * @return rawValue Flags
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        if (isRawValueSet) {
-            return Objects.hash(rawValue);
-        } else {
-            return Objects.hash(sBit);
-        }
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof PceccCapabilityTlv) {
-            PceccCapabilityTlv other = (PceccCapabilityTlv) obj;
-            if (isRawValueSet) {
-                return Objects.equals(this.rawValue, other.rawValue);
-            } else {
-                return Objects.equals(this.sBit, other.sBit);
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        int temp = 0;
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        if (isRawValueSet) {
-            c.writeInt(rawValue);
-        } else {
-            if (sBit) {
-                temp = temp | SBIT_CHECK;
-            }
-            c.writeInt(temp);
-        }
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads channel buffer and returns object of PceccCapabilityTlv.
-     *
-     * @param c input channel buffer
-     * @return object of PceccCapabilityTlv
-     */
-    public static PceccCapabilityTlv read(ChannelBuffer c) {
-        return PceccCapabilityTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("rawValue", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepErrorDetailInfo.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepErrorDetailInfo.java
deleted file mode 100644
index f1382a6..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepErrorDetailInfo.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-/**
- * Provide the PCEP Error Info Details.
- */
-public final class PcepErrorDetailInfo {
-
-    private PcepErrorDetailInfo() {
-    }
-
-    // Error Types
-    /**
-    Error-  Meaning                                           Reference:RFC 5440
-    Type
-    1     PCEP session establishment failure
-        Error-value=1: reception of an invalid Open message or a non Open message.
-        Error-value=2: no Open message received before the expiration of the OpenWait timer
-        Error-value=3: unacceptable and non-negotiable session characteristics
-        Error-value=4: unacceptable but negotiable session characteristics
-        Error-value=5: reception of a second Open message with still unacceptable session characteristics
-        Error-value=6: reception of a PCErr message proposing unacceptable session characteristics
-        Error-value=7: No Keepalive or PCErr message received before the expiration of the KeepWait timer
-        Error-value=8: PCEP version not supported
-    2     Capability not supported
-    3     Unknown Object
-         Error-value=1: Unrecognized object class
-         Error-value=2: Unrecognized object Type
-    4     Not supported object
-         Error-value=1: Not supported object class
-         Error-value=2: Not supported object Type
-    5     Policy violation
-         Error-value=1: C bit of the METRIC object set (request rejected)
-         Error-value=2: O bit of the RP object cleared (request rejected)
-    6     Mandatory Object missing
-         Error-value=1: RP object missing
-         Error-value=2: RRO missing for a re-optimization request (R bit of the RP object set)
-         Error-value=3: END-POINTS object missing
-    7     Synchronized path computation request missing
-    8     Unknown request reference
-    9     Attempt to establish a second PCEP session
-    10     Reception of an invalid object
-         Error-value=1: reception of an object with P flag not set although the P flag must be
-                        set according to this specification.
-
-    Reference draft-ietf-pce-stateful-pce-11, section : 8.4
-    19    Invalid Operation
-         Error-value=1:  Attempted LSP Update Request for a non-
-                                 delegated LSP.  The PCEP-ERROR Object
-                                 is followed by the LSP Object that
-                                 identifies the LSP.
-         Error-value=2:  Attempted LSP Update Request if the
-                                 stateful PCE capability was not
-                                 advertised.
-         Error-value=3:  Attempted LSP Update Request for an LSP
-                                 identified by an unknown PLSP-ID.
-         Error-value=4:  A PCE indicates to a PCC that it has
-                                 exceeded the resource limit allocated
-                                 for its state, and thus it cannot
-                                 accept and process its LSP State Report
-                                 message.
-         Error-value=5:  Attempted LSP State Report if active
-                                 stateful PCE capability was not
-                                 advertised.
-     */
-    public static final byte ERROR_TYPE_1 = 1;
-    public static final byte ERROR_TYPE_2 = 2;
-    public static final byte ERROR_TYPE_3 = 3;
-    public static final byte ERROR_TYPE_4 = 4;
-    public static final byte ERROR_TYPE_5 = 5;
-    public static final byte ERROR_TYPE_6 = 6;
-    public static final byte ERROR_TYPE_7 = 7;
-    public static final byte ERROR_TYPE_8 = 8;
-    public static final byte ERROR_TYPE_9 = 9;
-    public static final byte ERROR_TYPE_10 = 10;
-    public static final byte ERROR_TYPE_19 = 19;
-
-    // Error Values
-    public static final byte ERROR_VALUE_1 = 1;
-    public static final byte ERROR_VALUE_2 = 2;
-    public static final byte ERROR_VALUE_3 = 3;
-    public static final byte ERROR_VALUE_4 = 4;
-    public static final byte ERROR_VALUE_5 = 5;
-    public static final byte ERROR_VALUE_6 = 6;
-    public static final byte ERROR_VALUE_7 = 7;
-    public static final byte ERROR_VALUE_8 = 8;
-    public static final byte ERROR_VALUE_9 = 9;
-    public static final byte ERROR_VALUE_10 = 10;
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDbVerTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDbVerTlv.java
deleted file mode 100644
index b3ace4b..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDbVerTlv.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides CEP LABEL DB VERSION TLV which contains LSP State DB Version  (32 Bit ).
- */
-public class PcepLabelDbVerTlv implements PcepValueType {
-
-    /*                  PCEP LABEL DB VERSION TLV format
-
-    Reference : draft-ietf-pce-stateful-sync-optimizations-02, section 3.3.1
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |           Type=23             |            Length=8           |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                      LSP State DB Version                     |
-    |                                                               |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(PcepLabelDbVerTlv.class);
-
-    public static final short TYPE = 34;
-    public static final short LENGTH = 8;
-    private final long rawValue;
-
-    /**
-     * constructor to initialize rawValue.
-     *
-     * @param rawValue of Pcep Label Db Version Tlv
-     */
-    public PcepLabelDbVerTlv(final long rawValue) {
-        log.debug("PcepLabelDbVerTlv");
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created PcepLabelDbVerTlv object.
-     *
-     * @param raw LSP State DB Version
-     * @return object of PcepLabelDbVerTlv
-     */
-    public static PcepLabelDbVerTlv of(final long raw) {
-        return new PcepLabelDbVerTlv(raw);
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    /**
-     * Returns LSP State DB Version.
-     * @return raw value
-     */
-    public long getLong() {
-        return rawValue;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof PcepLabelDbVerTlv) {
-            PcepLabelDbVerTlv other = (PcepLabelDbVerTlv) obj;
-            return Objects.equals(this.rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeLong(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of PcepLabelDbVerTlv.
-     *
-     * @param c input channel buffer
-     * @return object of PcepLabelDbVerTlv
-     */
-    public static PcepLabelDbVerTlv read(ChannelBuffer c) {
-        return PcepLabelDbVerTlv.of(c.readLong());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDownload.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDownload.java
deleted file mode 100644
index 90c665b..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDownload.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.LinkedList;
-
-import org.onosproject.pcepio.protocol.PcepLabelObject;
-import org.onosproject.pcepio.protocol.PcepLspObject;
-import org.onosproject.pcepio.protocol.PcepSrpObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Pcep Label.
- * REference :draft-zhao-pce-pcep-extension-for-pce-controller-01.
- */
-public class PcepLabelDownload {
-
-    private static final Logger log = LoggerFactory.getLogger(PcepLabelDownload.class);
-
-    //PCEP SPR Object
-    private PcepSrpObject srpObject;
-    //PCEP LSP Object
-    private PcepLspObject lspObject;
-    //LinkList of Labels
-    private LinkedList<PcepLabelObject> llLabelList;
-
-    /**
-     * Returns SRP Object.
-     *
-     * @return PCEP SRP Object
-     */
-    public PcepSrpObject getSrpObject() {
-        return srpObject;
-    }
-
-    /**
-     * Sets the Pcep SRP Object.
-     *
-     * @param srpobj PCEP SRP Object
-     */
-    public void setSrpObject(PcepSrpObject srpobj) {
-        this.srpObject = srpobj;
-    }
-
-    /**
-     * Returns LSP Object.
-     *
-     * @return PCEP LSP Object
-     */
-    public PcepLspObject getLspObject() {
-        return lspObject;
-    }
-
-    /**
-     * Sets the Pcep LSP Object.
-     *
-     * @param lspObject PCEP LSP Object
-     */
-    public void setLspObject(PcepLspObject lspObject) {
-        this.lspObject = lspObject;
-    }
-
-    /**
-     * Returns a list of labels.
-     *
-     * @return llLabelList list of pcep label objects
-     */
-    public LinkedList<PcepLabelObject> getLabelList() {
-        return llLabelList;
-    }
-
-    /**
-     * set the llLabelList list of type PcepLableObject.
-     *
-     * @param llLabelList list of pcep label objects
-     */
-    public void setLabelList(LinkedList<PcepLabelObject> llLabelList) {
-        this.llLabelList = llLabelList;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("SrpObject", srpObject)
-                .add("LspObject", lspObject)
-                .add("LabelObjectList", llLabelList)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelMap.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelMap.java
deleted file mode 100644
index 00fec74..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelMap.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import org.onosproject.pcepio.protocol.PcepFecObject;
-import org.onosproject.pcepio.protocol.PcepLabelObject;
-import org.onosproject.pcepio.protocol.PcepSrpObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provide PCEP Label Map.
- * Reference :draft-zhao-pce-pcep-extension-for-pce-controller-01.
- */
-public class PcepLabelMap {
-
-    private static final Logger log = LoggerFactory.getLogger(PcepLabelMap.class);
-    //PCEP SRP Object
-    private PcepSrpObject srpObject;
-    //PCEP Label Object
-    private PcepLabelObject labelObject;
-    //PCEP FEC Object
-    private PcepFecObject fecObject;
-
-    /**
-     * Sets Fec Object.
-     *
-     * @param fecObject PCEP fec object
-     */
-    public void setFecObject(PcepFecObject fecObject) {
-        this.fecObject = fecObject;
-    }
-
-    /**
-     * Returns the PcepFecObject.
-     *
-     * @return PCEP fec object
-     */
-    public PcepFecObject getFecObject() {
-        return this.fecObject;
-    }
-
-    /**
-     * Returns SRP Object.
-     *
-     * @return PCEP SRP Object
-     */
-    public PcepSrpObject getSrpObject() {
-        return srpObject;
-    }
-
-    /**
-     * Sets the PCEP Srp Object.
-     *
-     * @param srpObject PCEP SRP Object
-     */
-    public void setSrpObject(PcepSrpObject srpObject) {
-        this.srpObject = srpObject;
-    }
-
-    /**
-     * Returns labelObject.
-     *
-     * @return PCEP label object
-     */
-    public PcepLabelObject getLabelObject() {
-        return labelObject;
-    }
-
-    /**
-     * Sets the Pcep labelObject.
-     *
-     * @param labelObject PCEP label object
-     */
-    public void setLabelObject(PcepLabelObject labelObject) {
-        this.labelObject = labelObject;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("SrpObject", srpObject)
-                .add("LabelObject", labelObject)
-                .add("FecObject", fecObject)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4Adjacency.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4Adjacency.java
deleted file mode 100644
index 3cf186d..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4Adjacency.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepNai;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Pcep Nai Ipv4 Adjacency.
- */
-public class PcepNaiIpv4Adjacency implements PcepNai {
-
-    public static final byte ST_TYPE = 0x03;
-    private final int localIpv4Addr;
-    private final int remoteIpv4Addr;
-
-    /**
-     * Constructor to initialize variables.
-     *
-     * @param localIpv4 local ipv4 address
-     * @param remoteIpv4 remote ipv4 address
-     */
-    public PcepNaiIpv4Adjacency(int localIpv4, int remoteIpv4) {
-        this.localIpv4Addr = localIpv4;
-        this.remoteIpv4Addr = remoteIpv4;
-    }
-
-    /**
-     * Returns Object of Pcep nai Ipv4 Adjacency.
-     *
-     * @param localIpv4Addr local ipv4 address
-     * @param remoteIpv4Addr remote ipv4 address
-     * @return Object of Pcep nai Ipv4 Adjacency
-     */
-    public static PcepNaiIpv4Adjacency of(int localIpv4Addr, int remoteIpv4Addr) {
-        return new PcepNaiIpv4Adjacency(localIpv4Addr, remoteIpv4Addr);
-    }
-
-    @Override
-    public byte getType() {
-        return ST_TYPE;
-    }
-
-    public int getLocalIpv4Addr() {
-        return localIpv4Addr;
-    }
-
-    public int getRemoteIpv4Addr() {
-        return remoteIpv4Addr;
-    }
-
-    @Override
-    public int write(ChannelBuffer bb) {
-        int iLenStartIndex = bb.writerIndex();
-        bb.writeInt(localIpv4Addr);
-        bb.writeInt(remoteIpv4Addr);
-        return bb.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of PcepNAIIpv4AdjacencyVer1.
-     *
-     * @param cb of channel buffer
-     * @return object of PcepNAIIpv4Adjacency
-     */
-    public static PcepNaiIpv4Adjacency read(ChannelBuffer cb) {
-        int localIpv4 = cb.readInt();
-        int remoteIpv4 = cb.readInt();
-        return new PcepNaiIpv4Adjacency(localIpv4, remoteIpv4);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(localIpv4Addr, remoteIpv4Addr);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof PcepNaiIpv4Adjacency) {
-            PcepNaiIpv4Adjacency other = (PcepNaiIpv4Adjacency) obj;
-            return Objects.equals(this.localIpv4Addr, other.localIpv4Addr)
-                    && Objects.equals(this.remoteIpv4Addr, other.remoteIpv4Addr);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("localIPv4Address", localIpv4Addr)
-                .add("remoteIPv4Address", remoteIpv4Addr)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeId.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeId.java
deleted file mode 100644
index 0847be0..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeId.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onlab.util.Identifier;
-import org.onosproject.pcepio.protocol.PcepNai;
-
-/**
- * Provides Pcep Nai Ipv4 Node Id.
- */
-public class PcepNaiIpv4NodeId extends Identifier<Integer> implements PcepNai {
-
-    public static final byte ST_TYPE = 0x01;
-
-    /**
-     * Constructor to initialize ipv4NodeId.
-     *
-     * @param value ipv4 node id
-     */
-    public PcepNaiIpv4NodeId(int value) {
-        super(value);
-    }
-
-    /**
-     * Returns an object of PcepNaiIpv4NodeId.
-     *
-     * @param value ipv4 node id
-     * @return object of PcepNaiIpv4NodeId
-     */
-    public static PcepNaiIpv4NodeId of(int value) {
-        return new PcepNaiIpv4NodeId(value);
-    }
-
-    @Override
-    public byte getType() {
-        return ST_TYPE;
-    }
-
-    @Override
-    public int write(ChannelBuffer bb) {
-        int iLenStartIndex = bb.writerIndex();
-        bb.writeInt(identifier);
-        return bb.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads from the channel buffer and returns object of PcepNAIIpv4NodeIdVer1.
-     *
-     * @param bb of channel buffer.
-     * @return object of PcepNAIIpv4NodeIdVer1
-     */
-    public static PcepNaiIpv4NodeId read(ChannelBuffer bb) {
-        return new PcepNaiIpv4NodeId(bb.readInt());
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6Adjacency.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6Adjacency.java
deleted file mode 100644
index 1a162e2..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6Adjacency.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Arrays;
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepNai;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Pcep Nai Ipv6 Adjacency.
- */
-public class PcepNaiIpv6Adjacency implements PcepNai {
-
-    public static final byte ST_TYPE = 0x04;
-    public static final byte IPV6_LEN = 0x10;
-
-    private final byte[] localIpv6Addr;
-    private final byte[] remoteIpv6Addr;
-
-    /**
-     * Constructor to initialize local ipv6 and remote ipv6.
-     *
-     * @param localIpv6 local ipv6 address
-     * @param remoteIpv6 remote ipv6 address
-     */
-    public PcepNaiIpv6Adjacency(byte[] localIpv6, byte[] remoteIpv6) {
-        this.localIpv6Addr = localIpv6;
-        this.remoteIpv6Addr = remoteIpv6;
-    }
-
-    @Override
-    public byte getType() {
-        return ST_TYPE;
-    }
-
-    @Override
-    public int write(ChannelBuffer bb) {
-        int iLenStartIndex = bb.writerIndex();
-        bb.writeBytes(localIpv6Addr);
-        bb.writeBytes(remoteIpv6Addr);
-        return bb.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads from channel buffer and returns object of PcepNAIIpv6AdjacencyVer1.
-     *
-     * @param bb of type channel buffer
-     * @return object of PcepNAIIpv6AdjacencyVer1
-     */
-    public static PcepNaiIpv6Adjacency read(ChannelBuffer bb) {
-        byte[] localIpv6 = new byte[IPV6_LEN];
-        bb.readBytes(localIpv6, 0, IPV6_LEN);
-        byte[] remoteIpv6 = new byte[IPV6_LEN];
-        bb.readBytes(remoteIpv6, 0, IPV6_LEN);
-        return new PcepNaiIpv6Adjacency(localIpv6, remoteIpv6);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(Arrays.hashCode(localIpv6Addr), Arrays.hashCode(remoteIpv6Addr));
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof PcepNaiIpv6Adjacency) {
-            PcepNaiIpv6Adjacency other = (PcepNaiIpv6Adjacency) obj;
-            return Arrays.equals(this.localIpv6Addr, other.localIpv6Addr)
-                    && Arrays.equals(this.remoteIpv6Addr, other.remoteIpv6Addr);
-        }
-        return false;
-    }
-
-    /**
-     * Creates object of PcepNaiIpv6Adjacency with local ipv6 address and remote ipv6 address.
-     *
-     * @param localIpv6Addr local ipv6 address
-     * @param remoteIpv6Addr remote ipv6 address
-     * @return object of PcepNaiIpv6Adjacency
-     */
-
-    public static PcepNaiIpv6Adjacency of(final byte[] localIpv6Addr, final byte[] remoteIpv6Addr) {
-        return new PcepNaiIpv6Adjacency(localIpv6Addr, remoteIpv6Addr);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("localIPV6Address", localIpv6Addr)
-                .add("remoteIPV6Address", remoteIpv6Addr)
-                .toString();
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeId.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeId.java
deleted file mode 100644
index 1daf071..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeId.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Arrays;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepNai;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Pcep Nai Ipv6 Node Id.
- */
-public class PcepNaiIpv6NodeId implements PcepNai {
-
-    public static final byte ST_TYPE = 0x02;
-    public static final byte IPV6_LEN = 0x10;
-
-    private final byte[] ipv6NodeId;
-
-    /**
-     * Constructor to initialize ipv6NodeId.
-     *
-     * @param value ipv6 node id
-     */
-    public PcepNaiIpv6NodeId(byte[] value) {
-        this.ipv6NodeId = value;
-    }
-
-    /**
-     * Return object of Pcep Nai Ipv6 Node ID.
-     *
-     * @param ipv6NodeId Ipv6 node ID.
-     * @return object of Pcep Nai Ipv6 Node ID.
-     */
-    public static PcepNaiIpv6NodeId of(byte[] ipv6NodeId) {
-        return new PcepNaiIpv6NodeId(ipv6NodeId);
-    }
-
-    @Override
-    public byte getType() {
-        return ST_TYPE;
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) {
-        int iLenStartIndex = cb.writerIndex();
-        cb.writeBytes(ipv6NodeId);
-        return cb.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads from the channel buffer and returns object of PcepNAIIpv6NodeId.
-     *
-     * @param cb of type channel buffer.
-     * @return object of PcepNAIIpv6NodeId
-     */
-    public static PcepNaiIpv6NodeId read(ChannelBuffer cb) {
-        byte[] ipv6NodeId = new byte[IPV6_LEN];
-        cb.readBytes(ipv6NodeId, 0, IPV6_LEN);
-        return new PcepNaiIpv6NodeId(ipv6NodeId);
-    }
-
-    @Override
-    public int hashCode() {
-        return Arrays.hashCode(ipv6NodeId);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof PcepNaiIpv6NodeId) {
-            PcepNaiIpv6NodeId other = (PcepNaiIpv6NodeId) obj;
-            return Arrays.equals(this.ipv6NodeId, other.ipv6NodeId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("IPV6NodeID", ipv6NodeId)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4.java
deleted file mode 100644
index d615e18..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepNai;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Pcep Nai Unnumbered Adjacency Ipv4.
- */
-public class PcepNaiUnnumberedAdjacencyIpv4 implements PcepNai {
-    /**
-     * draft-ietf-pce-segment-routing-03 section    5.3.2.
-     */
-    public static final byte ST_TYPE = 0x05;
-
-    private final int localNodeId;
-    private final int localInterfaceId;
-    private final int remoteNodeId;
-    private final int remoteInterfaceId;
-
-    /**
-     * Constructor to initialize all the member variables.
-     *
-     * @param localNodeId local node id
-     * @param localInterfaceId local interface id
-     * @param remoteNodeId remote node id
-     * @param remoteInterfaceId remote interface id
-     */
-    public PcepNaiUnnumberedAdjacencyIpv4(int localNodeId, int localInterfaceId, int remoteNodeId,
-            int remoteInterfaceId) {
-        this.localNodeId = localNodeId;
-        this.localInterfaceId = localInterfaceId;
-        this.remoteNodeId = remoteNodeId;
-        this.remoteInterfaceId = remoteInterfaceId;
-    }
-
-    /**
-     * Returns PCEP Nai Unnumbered Adjacency Ipv4 object.
-     *
-     * @param localNodeId local node id
-     * @param localInterfaceId local interface if
-     * @param remoteNodeId remote node id
-     * @param remoteInterfaceId remote interface id
-     * @return PCEP Nai Unnumbered Adjacency Ipv4 object
-     */
-    public static PcepNaiUnnumberedAdjacencyIpv4 of(int localNodeId, int localInterfaceId, int remoteNodeId,
-            int remoteInterfaceId) {
-        return new PcepNaiUnnumberedAdjacencyIpv4(localNodeId, localInterfaceId, remoteNodeId, remoteInterfaceId);
-    }
-
-    @Override
-    public byte getType() {
-        return ST_TYPE;
-    }
-
-    @Override
-    public int write(ChannelBuffer bb) {
-        int iLenStartIndex = bb.writerIndex();
-        bb.writeInt(localNodeId);
-        bb.writeInt(localInterfaceId);
-        bb.writeInt(remoteNodeId);
-        bb.writeInt(remoteInterfaceId);
-        return bb.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads from channel buffer and return object of PcepNAIUnnumberedAdjacencyIpv4.
-     *
-     * @param bb of type channel buffer
-     * @return object of PcepNAIUnnumberedAdjacencyIpv4
-     */
-    public static PcepNaiUnnumberedAdjacencyIpv4 read(ChannelBuffer bb) {
-        int localNodeId;
-        int localInterfaceId;
-        int remoteNodeId;
-        int remoteInterfaceId;
-        localNodeId = bb.readInt();
-        localInterfaceId = bb.readInt();
-        remoteNodeId = bb.readInt();
-        remoteInterfaceId = bb.readInt();
-        return new PcepNaiUnnumberedAdjacencyIpv4(localNodeId, localInterfaceId, remoteNodeId, remoteInterfaceId);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(localNodeId, localInterfaceId, remoteNodeId, remoteInterfaceId);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof PcepNaiUnnumberedAdjacencyIpv4) {
-            PcepNaiUnnumberedAdjacencyIpv4 other = (PcepNaiUnnumberedAdjacencyIpv4) obj;
-            return Objects.equals(this.localNodeId, other.localNodeId)
-                    && Objects.equals(this.localInterfaceId, other.localInterfaceId)
-                    && Objects.equals(this.remoteNodeId, other.remoteNodeId)
-                    && Objects.equals(this.remoteInterfaceId, other.remoteInterfaceId);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("localNodeId", localNodeId)
-                .add("localInterfaceId", localInterfaceId)
-                .add("remoteNodeId", remoteNodeId)
-                .add("remoteInterfaceId", remoteInterfaceId)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepObjectHeader.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepObjectHeader.java
deleted file mode 100644
index ad4615c..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepObjectHeader.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PCEP Object Header which is common for all the objects.
- * Reference : RFC 5440.
- */
-
-public class PcepObjectHeader {
-
-    /*
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       | Object-Class  |   OT  |Res|P|I|   Object Length (bytes)       |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                                                               |
-       //                        (Object body)                        //
-       |                                                               |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-                      PCEP Common Object Header
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepObjectHeader.class);
-
-    public static final boolean REQ_OBJ_MUST_PROCESS = true;
-    public static final boolean REQ_OBJ_OPTIONAL_PROCESS = false;
-    public static final boolean RSP_OBJ_IGNORED = true;
-    public static final boolean RSP_OBJ_PROCESSED = false;
-    public static final int OBJECT_TYPE_SHIFT_VALUE = 4;
-    public static final byte PFLAG_SET = 0x02;
-    public static final byte IFLAG_SET = 0x01;
-    public static final int SET = 1;
-    private byte objClass;
-    private byte objType;
-    private boolean bPFlag;
-    private boolean bIFlag;
-    private short objLen;
-
-    /**
-     * Constructor to initialize all the variables in object header.
-     *
-     * @param objClass PCEP Object class
-     * @param objType PCEP Object type
-     * @param bPFlag P flag
-     * @param bIFlag I flag
-     * @param objLen PCEP object length
-     */
-
-    public PcepObjectHeader(byte objClass, byte objType, boolean bPFlag, boolean bIFlag, short objLen) {
-        this.objClass = objClass;
-        this.objType = objType;
-        this.bPFlag = bPFlag;
-        this.bIFlag = bIFlag;
-        this.objLen = objLen;
-    }
-
-    /**
-     * Sets the Object class.
-     *
-     * @param value object class
-     */
-    public void setObjClass(byte value) {
-        this.objClass = value;
-    }
-
-    /**
-     * Sets the Object TYPE.
-     *
-     * @param value object type
-     */
-    public void setObjType(byte value) {
-        this.objType = value;
-    }
-
-    /**
-     * Sets the Object P flag.
-     *
-     * @param value p flag
-     */
-    public void setPFlag(boolean value) {
-        this.bPFlag = value;
-    }
-
-    /**
-     * Sets the Object I flag.
-     *
-     * @param value I flag
-     */
-    public void setIFlag(boolean value) {
-        this.bIFlag = value;
-    }
-
-    /**
-     * Sets the Object Length.
-     *
-     * @param value object length
-     */
-    public void setObjLen(short value) {
-        this.objLen = value;
-    }
-
-    /**
-     * Returns Object's P flag.
-     *
-     * @return bPFlag P flag
-     */
-    public boolean getPFlag() {
-        return this.bPFlag;
-    }
-
-    /**
-     * Returns Object's i flag.
-     *
-     * @return bIFlag I flag
-     */
-    public boolean getIFlag() {
-        return this.bIFlag;
-    }
-
-    /**
-     * Returns Object Length.
-     *
-     * @return objLen object length
-     */
-    public short getObjLen() {
-        return this.objLen;
-    }
-
-    /**
-     * Returns Object class.
-     *
-     * @return objClass object class
-     */
-    public byte getObjClass() {
-        return this.objClass;
-    }
-
-    /**
-     * Returns Object Type.
-     *
-     * @return objType object type
-     */
-    public byte getObjType() {
-        return this.objType;
-    }
-
-    /**
-     *  Writes Byte stream of PCEP object header to channel buffer.
-     *
-     * @param cb output channel buffer
-     * @return objLenIndex object length index in channel buffer
-     */
-    public int write(ChannelBuffer cb) {
-
-        cb.writeByte(this.objClass);
-        byte temp = (byte) (this.objType << OBJECT_TYPE_SHIFT_VALUE);
-        if (this.bPFlag) {
-            temp = (byte) (temp | PFLAG_SET);
-        }
-        if (this.bIFlag) {
-            temp = (byte) (temp | IFLAG_SET);
-        }
-        cb.writeByte(temp);
-        int objLenIndex = cb.writerIndex();
-        cb.writeShort((short) 0);
-        return objLenIndex;
-    }
-
-    /**
-     * Read from channel buffer and Returns PCEP Objects header.
-     *
-     * @param cb of type channel buffer
-     * @return PCEP Object header
-     */
-    public static PcepObjectHeader read(ChannelBuffer cb) {
-
-        byte objClass;
-        byte objType;
-        boolean bPFlag;
-        boolean bIFlag;
-        short objLen;
-        objClass = cb.readByte();
-        byte temp = cb.readByte();
-        bIFlag = (temp & IFLAG_SET) == IFLAG_SET;
-        bPFlag = (temp & PFLAG_SET) == PFLAG_SET;
-        objType = (byte) (temp >> OBJECT_TYPE_SHIFT_VALUE);
-        objLen = cb.readShort();
-        return new PcepObjectHeader(objClass, objType, bPFlag, bIFlag, objLen);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(objClass, objType, bPFlag, bIFlag, objLen);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof PcepObjectHeader) {
-            PcepObjectHeader other = (PcepObjectHeader) obj;
-            return Objects.equals(objClass, other.objClass)
-                    && Objects.equals(objType, other.objType)
-                    && Objects.equals(bPFlag, other.bPFlag)
-                    && Objects.equals(bIFlag, other.bIFlag)
-                    && Objects.equals(objLen, other.objLen);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("ObjectClass", objClass)
-                .add("ObjectType", objType)
-                .add("ObjectLength", objLen)
-                .add("PFlag", (bPFlag) ? 1 : 0)
-                .add("IFlag", (bIFlag) ? 1 : 0)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpErrorSpec.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpErrorSpec.java
deleted file mode 100644
index 326cc91..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpErrorSpec.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-/**
- * Abstraction of an entity which provides PCPE RSVP error spec.
- */
-public interface PcepRsvpErrorSpec extends PcepValueType {
-
-    /**
-     *  To write the object information to channelBuffer.
-     *
-     *  @param cb of type channel buffer
-     */
-    @Override
-    int write(ChannelBuffer cb);
-
-    /**
-     * Returns class number.
-     *
-     * @return class number
-     */
-    byte getClassNum();
-
-    /**
-     * Returns class type.
-     *
-     * @return class type
-     */
-    byte getClassType();
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv4ErrorSpec.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv4ErrorSpec.java
deleted file mode 100644
index d165d59..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv4ErrorSpec.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Pcep Rsvp Ipv4 Error Spec.
- */
-public class PcepRsvpIpv4ErrorSpec implements PcepRsvpErrorSpec {
-
-    /*
-       RSVP error spec object header.
-        0             1              2             3
-    +-------------+-------------+-------------+-------------+
-    |       Length (bytes)      |  Class-Num  |   C-Type    |
-    +-------------+-------------+-------------+-------------+
-    |                                                       |
-    //                  (Object contents)                   //
-    |                                                       |
-    +-------------+-------------+-------------+-------------+
-
-    Ref :  ERROR_SPEC @ RFC2205
-
-    IPv4 ERROR_SPEC object: Class = 6, C-Type = 1
-    +-------------+-------------+-------------+-------------+
-    |            IPv4 Error Node Address (4 bytes)          |
-    +-------------+-------------+-------------+-------------+
-    |    Flags    |  Error Code |        Error Value        |
-    +-------------+-------------+-------------+-------------+
-
-     */
-
-    PcepRsvpSpecObjHeader objHeader;
-    public static final byte CLASS_NUM = 0x06;
-    public static final byte CLASS_TYPE = 0x01;
-    public static final byte CLASS_LENGTH = 0x0c;
-    private int ipv4Addr;
-    private byte flags;
-    private byte errCode;
-    private short errValue;
-
-    /**
-     * Constructor to initialize obj header, ipv4 addr, flags, err code and err value.
-     *
-     * @param objHeader rsvp ipv4 error spec object header
-     * @param ipv4Addr ipv4 address
-     * @param flags flags value
-     * @param errCode error code value
-     * @param errValue error value
-     */
-    public PcepRsvpIpv4ErrorSpec(PcepRsvpSpecObjHeader objHeader, int ipv4Addr, byte flags, byte errCode,
-            short errValue) {
-        this.objHeader = objHeader;
-        this.ipv4Addr = ipv4Addr;
-        this.flags = flags;
-        this.errCode = errCode;
-        this.errValue = errValue;
-    }
-
-    /**
-     * Constructor to initialize ipv4 address, flags, err code and err value.
-     *
-     * @param ipv4Addr ipv4 address
-     * @param flags flags value
-     * @param errCode error code
-     * @param errValue error value
-     */
-    public PcepRsvpIpv4ErrorSpec(int ipv4Addr, byte flags, byte errCode, short errValue) {
-        this.objHeader = new PcepRsvpSpecObjHeader(CLASS_LENGTH, CLASS_NUM, CLASS_TYPE);
-        this.ipv4Addr = ipv4Addr;
-        this.flags = flags;
-        this.errCode = errCode;
-        this.errValue = errValue;
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) {
-        int objLenIndex = objHeader.write(cb);
-        cb.writeInt(ipv4Addr);
-        cb.writeByte(flags);
-        cb.writeByte(errCode);
-        cb.writeShort(errValue);
-        short objLen = (short) (cb.writerIndex() - objLenIndex);
-        cb.setShort(objLenIndex, objLen);
-        return objLen;
-    }
-
-    /**
-     * Reads PCPE RSVP error spec from channel buffer and returns PCEP rsvp IPv4 error spec object.
-     *
-     * @param cb channel buffer
-     * @return PCEP rsvp IPv4 error spec object
-     */
-    public static PcepRsvpErrorSpec read(ChannelBuffer cb) {
-        PcepRsvpSpecObjHeader objHeader;
-        int ipv4Addr;
-        byte flags;
-        byte errCode;
-        short errValue;
-
-        objHeader = PcepRsvpSpecObjHeader.read(cb);
-        ipv4Addr = cb.readInt();
-        flags = cb.readByte();
-        errCode = cb.readByte();
-        errValue = cb.readShort();
-        return new PcepRsvpIpv4ErrorSpec(objHeader, ipv4Addr, flags, errCode, errValue);
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return StatefulRsvpErrorSpecTlv.TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return CLASS_LENGTH;
-    }
-
-    @Override
-    public byte getClassNum() {
-        return CLASS_NUM;
-    }
-
-    @Override
-    public byte getClassType() {
-        return CLASS_TYPE;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("IPv4Address", ipv4Addr)
-                .add("flags", flags)
-                .add("errorCode", errCode)
-                .add("errorValue", errValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv6ErrorSpec.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv6ErrorSpec.java
deleted file mode 100644
index 1897f9d..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv6ErrorSpec.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Pcep Rsvp Ipv6 Error Spec.
- */
-public class PcepRsvpIpv6ErrorSpec implements PcepRsvpErrorSpec {
-
-    /*
-        0             1              2             3
-    +-------------+-------------+-------------+-------------+
-    |       Length (bytes)      |  Class-Num  |   C-Type    |
-    +-------------+-------------+-------------+-------------+
-    |                                                       |
-    //                  (Object contents)                   //
-    |                                                       |
-    +-------------+-------------+-------------+-------------+
-
-    Ref :  ERROR_SPEC @ RFC2205
-
-    IPv6 ERROR_SPEC object: Class = 6, C-Type = 2
-    +-------------+-------------+-------------+-------------+
-    |                                                       |
-    +                                                       +
-    |                                                       |
-    +           IPv6 Error Node Address (16 bytes)          +
-    |                                                       |
-    +                                                       +
-    |                                                       |
-    +-------------+-------------+-------------+-------------+
-    |    Flags    |  Error Code |        Error Value        |
-    +-------------+-------------+-------------+-------------+     */
-
-    PcepRsvpSpecObjHeader objHeader;
-    public static final byte CLASS_NUM = 0x06;
-    public static final byte CLASS_TYPE = 0x02;
-    public static final byte CLASS_LENGTH = 0x18;
-    public static final byte IPV6_LEN = 0x10;
-
-    private byte[] ipv6Addr;
-    private byte flags;
-    private byte errCode;
-    private short errValue;
-
-    /**
-     * Constructor to initialize obj header, ipv6 addr, flags, err code and err value.
-     *
-     * @param objHeader rsvp ipv6 error spec object header
-     * @param ipv6Addr ipv6 address
-     * @param flags flags value
-     * @param errCode error code
-     * @param errValue error value
-     */
-    public PcepRsvpIpv6ErrorSpec(PcepRsvpSpecObjHeader objHeader, byte[] ipv6Addr, byte flags, byte errCode,
-            short errValue) {
-        this.objHeader = objHeader;
-        this.ipv6Addr = ipv6Addr;
-        this.flags = flags;
-        this.errCode = errCode;
-        this.errValue = errValue;
-    }
-
-    /**
-     * Constructor to initialize ipv6 addr, flags, err code and err value.
-     *
-     * @param ipv6Addr ipv6 address
-     * @param flags flags value
-     * @param errCode error code
-     * @param errValue error value
-     */
-    public PcepRsvpIpv6ErrorSpec(byte[] ipv6Addr, byte flags, byte errCode, short errValue) {
-        this.objHeader = new PcepRsvpSpecObjHeader(CLASS_LENGTH, CLASS_NUM, CLASS_TYPE);
-        this.ipv6Addr = ipv6Addr;
-        this.flags = flags;
-        this.errCode = errCode;
-        this.errValue = errValue;
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) {
-        int objLenIndex = objHeader.write(cb);
-        cb.writeBytes(ipv6Addr);
-        cb.writeByte(flags);
-        cb.writeByte(errCode);
-        cb.writeShort(errValue);
-        short objLen = (short) (cb.writerIndex() - objLenIndex);
-        cb.setShort(objLenIndex, objLen);
-        return objLen;
-    }
-
-    /**
-     * Returns PCEP rsvp IPv6 error spce object.
-     *
-     * @param cb channel buffer
-     * @return PCEP rsvp IPv6 error spce object
-     */
-    public static PcepRsvpErrorSpec read(ChannelBuffer cb) {
-        PcepRsvpSpecObjHeader objHeader;
-        byte[] ipv6Addr = new byte[IPV6_LEN];
-        byte flags;
-        byte errCode;
-        short errValue;
-
-        objHeader = PcepRsvpSpecObjHeader.read(cb);
-        cb.readBytes(ipv6Addr, 0, IPV6_LEN);
-        flags = cb.readByte();
-        errCode = cb.readByte();
-        errValue = cb.readShort();
-        return new PcepRsvpIpv6ErrorSpec(objHeader, ipv6Addr, flags, errCode, errValue);
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return StatefulRsvpErrorSpecTlv.TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return CLASS_LENGTH;
-    }
-
-    @Override
-    public byte getClassNum() {
-        return CLASS_NUM;
-    }
-
-    @Override
-    public byte getClassType() {
-        return CLASS_TYPE;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("IPv6Address", ipv6Addr)
-                .add("flags", flags)
-                .add("errorCode", errCode)
-                .add("errorValue", errValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpObjectHeader.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpObjectHeader.java
deleted file mode 100644
index 1a47c3c..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpObjectHeader.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PcepRsvpObjectHeader.
- */
-public class PcepRsvpObjectHeader {
-
-    /*
-    0             1              2             3
-    +-------------+-------------+-------------+-------------+
-    |       Length (bytes)      |  Class-Num  |   C-Type    |
-    +-------------+-------------+-------------+-------------+
-    |                                                       |
-    //                  (Object contents)                   //
-    |                                                       |
-    +-------------+-------------+-------------+-------------+
-
-              ERROR_SPEC object Header
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepRsvpObjectHeader.class);
-
-    public static final boolean REQ_OBJ_MUST_PROCESS = true;
-    public static final boolean REQ_OBJ_OPTIONAL_PROCESS = false;
-    public static final boolean RSP_OBJ_IGNORED = true;
-    public static final boolean RSP_OBJ_PROCESSED = false;
-    public static final int OBJECT_TYPE_SHIFT_VALUE = 4;
-    private byte objClassNum;
-    private byte objClassType;
-    private short objLen;
-
-    /**
-     * Constructor to initialize class num, length and type.
-     *
-     * @param objClassNum object class number
-     * @param objClassType object class type
-     * @param objLen object length
-     */
-    public PcepRsvpObjectHeader(byte objClassNum, byte objClassType, short objLen) {
-        this.objClassNum = objClassNum;
-        this.objClassType = objClassType;
-        this.objLen = objLen;
-    }
-
-    /**
-     * Sets the Class-Num.
-     *
-     * @param value object class number
-     */
-    public void setObjClassNum(byte value) {
-        this.objClassNum = value;
-    }
-
-    /**
-     * Sets the Class type.
-     *
-     * @param value object class type
-     */
-    public void setObjClassType(byte value) {
-        this.objClassType = value;
-    }
-
-    /**
-     * Sets the Class Length.
-     *
-     * @param value object length
-     */
-    public void setObjLen(short value) {
-        this.objLen = value;
-    }
-
-    /**
-     * Returns Object Length.
-     *
-     * @return objLen
-     */
-    public short getObjLen() {
-        return this.objLen;
-    }
-
-    /**
-     * Returns Object num.
-     *
-     * @return objClassNum
-     */
-    public byte getObjClassNum() {
-        return this.objClassNum;
-    }
-
-    /**
-     * Returns Object type.
-     *
-     * @return objClassType
-     */
-    public byte getObjClassType() {
-        return this.objClassType;
-    }
-
-    /**
-     * Writes the byte stream of PcepRsvpObjectHeader to channel buffer.
-     *
-     * @param cb of type channel buffer
-     * @return object length index in channel buffer
-     */
-    public int write(ChannelBuffer cb) {
-        int iLenStartIndex = cb.writerIndex();
-        cb.writeShort((short) 0);
-        cb.writeByte(this.objClassNum);
-        cb.writeByte(this.objClassType);
-        return cb.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the PcepRsvpObjectHeader.
-     *
-     * @param cb input channel buffer
-     * @return PcepRsvpObjectHeader
-     */
-    public static PcepRsvpObjectHeader read(ChannelBuffer cb) {
-        log.debug("read ");
-        byte objClassNum;
-        byte objClassType;
-        short objLen;
-        objLen = cb.readShort();
-        objClassNum = cb.readByte();
-        objClassType = cb.readByte();
-
-        return new PcepRsvpObjectHeader(objClassNum, objClassType, objLen);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("ObjectClassNum", objClassNum)
-                .add("ObjectCType", objClassType)
-                .add("ObjectLength", objLen)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpSpecObjHeader.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpSpecObjHeader.java
deleted file mode 100644
index 50c4699..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpSpecObjHeader.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides PcepRsvpObjectHeader.
- */
-public class PcepRsvpSpecObjHeader {
-
-    /*
-    0             1              2             3
-    +-------------+-------------+-------------+-------------+
-    |       Length (bytes)      |  Class-Num  |   C-Type    |
-    +-------------+-------------+-------------+-------------+
-    |                                                       |
-    //                  (Object contents)                   //
-    |                                                       |
-    +-------------+-------------+-------------+-------------+
-
-              ERROR_SPEC object Header
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(PcepRsvpSpecObjHeader.class);
-
-    private short objLen;
-    private byte objClassNum;
-    private byte objClassType;
-
-    /**
-     * Constructor to initialize length, class num and type.
-     *
-     * @param objLen object length
-     * @param objClassNum pcep rsvp error spec object class num
-     * @param objClassType pcep rsvp error spec object class type
-     */
-    public PcepRsvpSpecObjHeader(short objLen, byte objClassNum, byte objClassType) {
-        this.objLen = objLen;
-        this.objClassNum = objClassNum;
-        this.objClassType = objClassType;
-    }
-
-    /**
-     * Sets the Class num.
-     *
-     * @param value pcep rsvp error spec object class num
-     */
-    public void setObjClassNum(byte value) {
-        this.objClassNum = value;
-    }
-
-    /**
-     * Sets the Class type.
-     *
-     * @param value pcep rsvp error spec object class type
-     */
-    public void setObjClassType(byte value) {
-        this.objClassType = value;
-    }
-
-    /**
-     * Sets the Class Length.
-     *
-     * @param value pcep rsvp error spec object length
-     */
-    public void setObjLen(short value) {
-        this.objLen = value;
-    }
-
-    /**
-     * Returns Object Length.
-     *
-     * @return objLen pcep rsvp error spec object length
-     */
-    public short getObjLen() {
-        return this.objLen;
-    }
-
-    /**
-     * Returns Object num.
-     *
-     * @return objClassNum pcep rsvp error spec object class num
-     */
-    public byte getObjClassNum() {
-        return this.objClassNum;
-    }
-
-    /**
-     * Returns Object type.
-     *
-     * @return objClassType pcep rsvp error spec object class type
-     */
-    public byte getObjClassType() {
-        return this.objClassType;
-    }
-
-    /**
-     * Writes the byte stream of PcepRsvpObjectHeader to channel buffer.
-     *
-     * @param cb of type channel buffer
-     * @return object length index
-     */
-    public int write(ChannelBuffer cb) {
-        int objLenIndex = cb.writerIndex();
-        objLen = 0;
-        cb.writeShort(objLen);
-        cb.writeByte(objClassNum);
-        cb.writeByte(objClassType);
-        return objLenIndex;
-    }
-
-    /**
-     * Reads the PcepRsvpObjectHeader.
-     *
-     * @param cb of type channel buffer
-     * @return PcepRsvpObjectHeader
-     */
-    public static PcepRsvpSpecObjHeader read(ChannelBuffer cb) {
-        byte objClassNum;
-        byte objClassType;
-        short objLen;
-        objLen = cb.readShort();
-        objClassNum = cb.readByte();
-        objClassType = cb.readByte();
-
-        return new PcepRsvpSpecObjHeader(objLen, objClassNum, objClassType);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("ObjectClassNum: ", objClassNum)
-                .add("ObjectCType: ", objClassType)
-                .add("ObjectLength: ", objLen)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpUserErrorSpec.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpUserErrorSpec.java
deleted file mode 100644
index 91a2d51..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpUserErrorSpec.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepVersion;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Pcep Rsvp User Error Spec.
- */
-public class PcepRsvpUserErrorSpec implements PcepRsvpErrorSpec {
-
-    /*
-        RSVP error spec object header.
-        0             1              2             3
-    +-------------+-------------+-------------+-------------+
-    |       Length (bytes)      |  Class-Num  |   C-Type    |
-    +-------------+-------------+-------------+-------------+
-    |                                                       |
-    //                  (Object contents)                   //
-    |                                                       |
-    +-------------+-------------+-------------+-------------+
-
-    Ref : USER_ERROR_SPEC @ RFC5284.
-    USER_ERROR_SPEC object: Class = 194, C-Type = 1
-
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +---------------+---------------+---------------+---------------+
-    |                       Enterprise Number                       |
-    +---------------+---------------+---------------+---------------+
-    |    Sub Org    |  Err Desc Len |        User Error Value       |
-    +---------------+---------------+---------------+---------------+
-    |                                                               |
-    ~                       Error Description                       ~
-    |                                                               |
-    +---------------+---------------+---------------+---------------+
-    |                                                               |
-    ~                     User-Defined Subobjects                   ~
-    |                                                               |
-    +---------------+---------------+---------------+---------------+
-     */
-
-    public static final byte CLASS_NUM = (byte) 0xc2;
-    public static final byte CLASS_TYPE = 0x01;
-
-    private PcepRsvpSpecObjHeader objHeader;
-    private int enterpriseNum;
-    private byte subOrg;
-    private byte errDescLen;
-    private short userErrorValue;
-    private byte[] errDesc;
-    private LinkedList<PcepValueType> llRsvpUserSpecSubObj;
-
-    /**
-     * Default constructor.
-     *
-     * @param objHeader pcep rsvp spec object header
-     * @param enterpriseNum enterprise number
-     * @param subOrg organization identifier value
-     * @param errDescLen error description length
-     * @param userErrorValue user error value
-     * @param errDesc error description
-     * @param llRsvpUserSpecSubObj list of subobjects
-     */
-    public PcepRsvpUserErrorSpec(PcepRsvpSpecObjHeader objHeader, int enterpriseNum, byte subOrg, byte errDescLen,
-            short userErrorValue, byte[] errDesc, LinkedList<PcepValueType> llRsvpUserSpecSubObj) {
-        this.objHeader = objHeader;
-        this.enterpriseNum = enterpriseNum;
-        this.subOrg = subOrg;
-        this.errDescLen = errDescLen;
-        this.userErrorValue = userErrorValue;
-        this.errDesc = errDesc;
-        this.llRsvpUserSpecSubObj = llRsvpUserSpecSubObj;
-    }
-
-    @Override
-    public int write(ChannelBuffer cb) {
-        int objLenIndex = objHeader.write(cb);
-        cb.writeInt(enterpriseNum);
-        cb.writeByte(subOrg);
-        cb.writeByte(errDescLen);
-        cb.writeShort(userErrorValue);
-        cb.writeBytes(errDesc);
-
-        if (llRsvpUserSpecSubObj != null) {
-
-            ListIterator<PcepValueType> listIterator = llRsvpUserSpecSubObj.listIterator();
-
-            while (listIterator.hasNext()) {
-                PcepValueType tlv = listIterator.next();
-                if (tlv == null) {
-                    continue;
-                }
-                tlv.write(cb);
-                // need to take care of padding
-                int pad = tlv.getLength() % 4;
-                if (0 != pad) {
-                    pad = 4 - pad;
-                    for (int i = 0; i < pad; ++i) {
-                        cb.writeByte((byte) 0);
-                    }
-                }
-            }
-        }
-        short objLen = (short) (cb.writerIndex() - objLenIndex);
-        cb.setShort(objLenIndex, objLen);
-        return objLen;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of PcepRsvpErrorSpec.
-     *
-     * @param cb of type channel buffer
-     * @return object of PcepRsvpErrorSpec
-     * @throws PcepParseException when expected object is not received
-     */
-    public static PcepRsvpErrorSpec read(ChannelBuffer cb) throws PcepParseException {
-        PcepRsvpSpecObjHeader objHeader;
-        int enterpriseNum;
-        byte subOrg;
-        byte errDescLen;
-        short userErrorValue;
-        byte[] errDesc;
-        LinkedList<PcepValueType> llRsvpUserSpecSubObj = null;
-
-        objHeader = PcepRsvpSpecObjHeader.read(cb);
-
-        if (objHeader.getObjClassNum() != CLASS_NUM || objHeader.getObjClassType() != CLASS_TYPE) {
-            throw new PcepParseException("Expected PcepRsvpUserErrorSpec object.");
-        }
-        enterpriseNum = cb.readInt();
-        subOrg = cb.readByte();
-        errDescLen = cb.readByte();
-        userErrorValue = cb.readShort();
-        errDesc = new byte[errDescLen];
-        cb.readBytes(errDesc, 0, errDescLen);
-
-        llRsvpUserSpecSubObj = parseErrSpecSubObj(cb);
-
-        return new PcepRsvpUserErrorSpec(objHeader, enterpriseNum, subOrg, errDescLen, userErrorValue, errDesc,
-                llRsvpUserSpecSubObj);
-    }
-
-    private static LinkedList<PcepValueType> parseErrSpecSubObj(ChannelBuffer cb) throws PcepParseException {
-        LinkedList<PcepValueType> llRsvpUserSpecSubObj = new LinkedList<>();
-        while (0 < cb.readableBytes()) {
-            PcepValueType tlv = null;
-            short hType = cb.readShort();
-            int iValue = 0;
-            //short hLength = cb.readShort();
-            switch (hType) {
-            case AutonomousSystemSubTlv.TYPE:
-                iValue = cb.readInt();
-                tlv = new AutonomousSystemSubTlv(iValue);
-                break;
-            default:
-                throw new PcepParseException("Unsupported Sub TLV type :" + hType);
-            }
-            llRsvpUserSpecSubObj.add(tlv);
-        }
-        return llRsvpUserSpecSubObj;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return StatefulRsvpErrorSpecTlv.TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return objHeader.getObjLen();
-    }
-
-    @Override
-    public byte getClassNum() {
-        return CLASS_NUM;
-    }
-
-    @Override
-    public byte getClassType() {
-        return CLASS_TYPE;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("enterpriseNumber", enterpriseNum)
-                .add("subOrganization", subOrg)
-                .add("errDescLength", errDescLen)
-                .add("userErrorValue", userErrorValue)
-                .add("errDesc", errDesc)
-                .add("RsvpUserSpecSubObject", llRsvpUserSpecSubObj)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepValueType.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepValueType.java
deleted file mode 100644
index d130b91..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepValueType.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-
-/**
- * Abstraction which Provides the PCEP Values of Type, Length ,Version.
- */
-public interface PcepValueType {
-
-    /**
-     * Returns the Version Of PCEP Message.
-     *
-     * @return Version of PcepVersion Type.
-     */
-    PcepVersion getVersion();
-
-    /**
-     * Returns the Type of PCEP Message.
-     *
-     * @return value of type
-     */
-    short getType();
-
-    /**
-     * Returns the Length of PCEP Message.
-     *
-     * @return value of Length
-     */
-    short getLength();
-
-    /**
-     * Writes the byte Stream of PCEP Message to channel buffer.
-     *
-     * @param bb of type channel buffer
-     * @return length of bytes written to channel buffer
-     */
-    int write(ChannelBuffer bb);
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RemoteNodeDescriptorsTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RemoteNodeDescriptorsTlv.java
deleted file mode 100644
index 5c9751d..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RemoteNodeDescriptorsTlv.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Remote TE Node Descriptors TLV.
- */
-public class RemoteNodeDescriptorsTlv implements PcepValueType {
-
-    /* Reference : draft-dhodylee-pce-pcep-ls-01, section 9.2.3.
-     *
-          0                   1                   2                   3
-          0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-         |           Type=[TBD9]         |             Length            |
-         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-         |                                                               |
-         //              Node Descriptor Sub-TLVs (variable)            //
-         |                                                               |
-         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(RemoteNodeDescriptorsTlv.class);
-
-    public static final short TYPE = (short) 65283;
-    short hLength;
-
-    public static final int TLV_HEADER_LENGTH = 4;
-    // Node Descriptor Sub-TLVs (variable)
-    private List<PcepValueType> llRemoteTENodeDescriptorSubTLVs;
-
-    /**
-     * Constructor to initialize llRemoteTENodeDescriptorSubTLVs.
-     *
-     * @param llRemoteTENodeDescriptorSubTLVs List of PcepValueType
-     */
-    public RemoteNodeDescriptorsTlv(List<PcepValueType> llRemoteTENodeDescriptorSubTLVs) {
-        this.llRemoteTENodeDescriptorSubTLVs = llRemoteTENodeDescriptorSubTLVs;
-    }
-
-    /**
-     * Returns object of Remote TE Node Descriptors TLV.
-     *
-     * @param llRemoteTENodeDescriptorSubTLVs List of PcepValueType
-     * @return object of RemoteNodeDescriptorsTlv
-     */
-    public static RemoteNodeDescriptorsTlv of(final List<PcepValueType> llRemoteTENodeDescriptorSubTLVs) {
-        return new RemoteNodeDescriptorsTlv(llRemoteTENodeDescriptorSubTLVs);
-    }
-
-    /**
-     * Returns Remote TE Node Descriptor Sub TLVs.
-     *
-     * @return llRemoteTENodeDescriptorSubTLVs
-     */
-    public List<PcepValueType> getllRemoteTENodeDescriptorSubTLVs() {
-        return llRemoteTENodeDescriptorSubTLVs;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return hLength;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(llRemoteTENodeDescriptorSubTLVs.hashCode());
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        /*
-         * Here we have a list of Tlv so to compare each sub tlv between the object
-         * we have to take a list iterator so one by one we can get each sub tlv object
-         * and can compare them.
-         * it may be possible that the size of 2 lists is not equal so we have to first check
-         * the size, if both are same then we should check for the subtlv objects otherwise
-         * we should return false.
-         */
-        if (obj instanceof RemoteNodeDescriptorsTlv) {
-            int countObjSubTlv = 0;
-            int countOtherSubTlv = 0;
-            boolean isCommonSubTlv = true;
-            RemoteNodeDescriptorsTlv other = (RemoteNodeDescriptorsTlv) obj;
-            Iterator<PcepValueType> objListIterator = ((RemoteNodeDescriptorsTlv) obj).llRemoteTENodeDescriptorSubTLVs
-                    .iterator();
-            countObjSubTlv = ((RemoteNodeDescriptorsTlv) obj).llRemoteTENodeDescriptorSubTLVs.size();
-            countOtherSubTlv = other.llRemoteTENodeDescriptorSubTLVs.size();
-            if (countObjSubTlv != countOtherSubTlv) {
-                return false;
-            } else {
-                while (objListIterator.hasNext() && isCommonSubTlv) {
-                    PcepValueType subTlv = objListIterator.next();
-                    isCommonSubTlv = Objects.equals(llRemoteTENodeDescriptorSubTLVs.contains(subTlv),
-                            other.llRemoteTENodeDescriptorSubTLVs.contains(subTlv));
-                }
-                return isCommonSubTlv;
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-
-        int tlvStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        int tlvLenIndex = c.writerIndex();
-        hLength = 0;
-        c.writeShort(hLength);
-
-        ListIterator<PcepValueType> listIterator = llRemoteTENodeDescriptorSubTLVs.listIterator();
-
-        while (listIterator.hasNext()) {
-            PcepValueType tlv = listIterator.next();
-
-            if (tlv == null) {
-                log.debug("TLV is null from subTlv list");
-                continue;
-            }
-            tlv.write(c);
-
-            // need to take care of padding
-            int pad = tlv.getLength() % 4;
-
-            if (0 != pad) {
-                pad = 4 - pad;
-                for (int i = 0; i < pad; ++i) {
-                    c.writeByte((byte) 0);
-                }
-            }
-        }
-
-        hLength = (short) (c.writerIndex() - tlvStartIndex);
-        c.setShort(tlvLenIndex, (hLength - TLV_HEADER_LENGTH));
-
-        return c.writerIndex() - tlvStartIndex;
-    }
-
-    /**
-     * Reads channel buffer and returns object of Remote TE Node Descriptors TLV.
-     *
-     * @param c input channel buffer
-     * @param length length of buffer
-     * @return object of RemoteNodeDescriptorsTlv
-     * @throws PcepParseException if mandatory fields are missing
-     */
-    public static PcepValueType read(ChannelBuffer c, short length) throws PcepParseException {
-
-        // Node Descriptor Sub-TLVs (variable)
-        List<PcepValueType> llRemoteTENodeDescriptorSubTLVs = new LinkedList<>();
-
-        ChannelBuffer tempCb = c.readBytes(length);
-
-        while (TLV_HEADER_LENGTH <= tempCb.readableBytes()) {
-
-            PcepValueType tlv;
-            short hType = tempCb.readShort();
-            int iValue = 0;
-            short hLength = tempCb.readShort();
-            switch (hType) {
-
-            case AutonomousSystemSubTlv.TYPE:
-                iValue = tempCb.readInt();
-                tlv = new AutonomousSystemSubTlv(iValue);
-                break;
-            case BgpLsIdentifierSubTlv.TYPE:
-                iValue = tempCb.readInt();
-                tlv = new BgpLsIdentifierSubTlv(iValue);
-                break;
-            case OspfAreaIdSubTlv.TYPE:
-                iValue = tempCb.readInt();
-                tlv = new OspfAreaIdSubTlv(iValue);
-                break;
-            case IgpRouterIdSubTlv.TYPE:
-                tlv = IgpRouterIdSubTlv.read(tempCb, hLength);
-                break;
-
-            default:
-                throw new PcepParseException("Unsupported Sub TLV type :" + hType);
-            }
-
-            // Check for the padding
-            int pad = hLength % 4;
-            if (0 < pad) {
-                pad = 4 - pad;
-                if (pad <= tempCb.readableBytes()) {
-                    tempCb.skipBytes(pad);
-                }
-            }
-
-            llRemoteTENodeDescriptorSubTLVs.add(tlv);
-        }
-
-        if (0 < tempCb.readableBytes()) {
-
-            throw new PcepParseException("Sub Tlv parsing error. Extra bytes received.");
-        }
-        return new RemoteNodeDescriptorsTlv(llRemoteTENodeDescriptorSubTLVs);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", hLength)
-                .add("RemoteTeNodeDescriptorSubTLVs", llRemoteTENodeDescriptorSubTLVs)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RoutingUniverseTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RoutingUniverseTlv.java
deleted file mode 100644
index c555da1..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RoutingUniverseTlv.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides RoutingUniverseTLV identifiers.
- */
-public class RoutingUniverseTlv implements PcepValueType {
-
-    /*
-     * Reference : draft-dhodylee-pce-pcep-te-data-extn-02, section 9.2.1.
-     *  0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |           Type=[TBD7]         |           Length=8            |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                           Identifier                          |
-     |                                                               |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     *
-     *
-     *             +------------+---------------------+
-                   | Identifier | Routing Universe    |
-                   +------------+---------------------+
-                   |     0      | L3 packet topology  |
-                   |     1      | L1 optical topology |
-                   +------------+---------------------+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(RoutingUniverseTlv.class);
-
-    public static final short TYPE = (short) 65281;
-    public static final short LENGTH = 8;
-
-    private final long rawValue;
-
-    /**
-     * Constructor to initialize raw value.
-     *
-     * @param rawValue raw value
-     */
-    public RoutingUniverseTlv(long rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns object of RoutingUniverseTLV.
-     *
-     * @param raw value
-     * @return object of RoutingUniverseTLV
-     */
-    public static RoutingUniverseTlv of(final long raw) {
-        return new RoutingUniverseTlv(raw);
-    }
-
-    /**
-     * Returns raw value as Identifier.
-     *
-     * @return rawValue Identifier
-     */
-    public long getLong() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof RoutingUniverseTlv) {
-            RoutingUniverseTlv other = (RoutingUniverseTlv) obj;
-            return Objects.equals(this.rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeLong(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads from channel buffer and returns object of RoutingUniverseTLV.
-     *
-     * @param c input channel buffer
-     * @return object of RoutingUniverseTLV
-     */
-    public static RoutingUniverseTlv read(ChannelBuffer c) {
-        return RoutingUniverseTlv.of(c.readLong());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SharedRiskLinkGroupSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SharedRiskLinkGroupSubTlv.java
deleted file mode 100644
index 6ff5639..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SharedRiskLinkGroupSubTlv.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Arrays;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-
-/**
- * Provides SharedRiskLinkGroupTlv.
- */
-public class SharedRiskLinkGroupSubTlv implements PcepValueType {
-
-    /*
-     * Reference :[I-D.ietf-idr- Group ls-distribution] /3.3.2.5
-     *
-     *  0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |              Type =TDB41      |             Length            |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                  Shared Risk Link Group Value                 |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     //                         ............                        //
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                  Shared Risk Link Group Value                 |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(SharedRiskLinkGroupSubTlv.class);
-
-    public static final short TYPE = 30;
-
-    private final short hLength;
-
-    private final int[] srlgValue;
-
-    /**
-     * Constructor to initialize SRLG value.
-     *
-     * @param srlgValue Shared Risk Link Group Value
-     * @param hLength length
-     */
-    public SharedRiskLinkGroupSubTlv(int[] srlgValue, short hLength) {
-        this.srlgValue = srlgValue;
-        if (0 == hLength) {
-            this.hLength = (short) ((srlgValue.length) * 4);
-        } else {
-            this.hLength = hLength;
-        }
-    }
-
-    /**
-     * Returns object of SharedRiskLinkGroupTlv.
-     *
-     * @param raw value
-     * @param hLength length
-     * @return object of SharedRiskLinkGroupTlv
-     */
-    public static SharedRiskLinkGroupSubTlv of(final int[] raw, short hLength) {
-        return new SharedRiskLinkGroupSubTlv(raw, hLength);
-    }
-
-    /**
-     * Returns SRLG Value.
-     *
-     * @return srlgValue
-     */
-    public int[] getValue() {
-        return srlgValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return hLength;
-    }
-
-    @Override
-    public int hashCode() {
-        return  Arrays.hashCode(srlgValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof SharedRiskLinkGroupSubTlv) {
-            SharedRiskLinkGroupSubTlv other = (SharedRiskLinkGroupSubTlv) obj;
-            return Arrays.equals(this.srlgValue, other.srlgValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(hLength);
-        for (int b : srlgValue) {
-            c.writeInt(b);
-        }
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads from channel buffer and returns object of SharedRiskLinkGroupTlv.
-     *
-     * @param c input channel buffer
-     * @param hLength length
-     * @return object of SharedRiskLinkGroupTlv
-     */
-    public static PcepValueType read(ChannelBuffer c, short hLength) {
-        int iLength = hLength / 4;
-        int[] iSharedRiskLinkGroup = new int[iLength];
-        for (int i = 0; i < iLength; i++) {
-            iSharedRiskLinkGroup[i] = c.readInt();
-        }
-        return new SharedRiskLinkGroupSubTlv(iSharedRiskLinkGroup, hLength);
-    }
-
-
-    @Override
-    public String toString() {
-        ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass());
-
-        toStrHelper.add("Type", TYPE);
-        toStrHelper.add("Length", hLength);
-
-        StringBuffer result = new StringBuffer();
-        for (int b : srlgValue) {
-            result.append(String.format("%02X ", b));
-        }
-        toStrHelper.add("Value", result);
-
-        return toStrHelper.toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrEroSubObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrEroSubObject.java
deleted file mode 100644
index 77c803d..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrEroSubObject.java
+++ /dev/null
@@ -1,342 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.base.MoreObjects;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepNai;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Objects;
-
-/**
- * Provides SrEroSubObject.
- */
-public class SrEroSubObject implements PcepValueType {
-    /*
-    SR-ERO subobject: (draft-ietf-pce-segment-routing-06)
-
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |L|    Type     |     Length    |  ST   |     Flags     |F|S|C|M|
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                              SID                              |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    //                        NAI (variable)                       //
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    When M bit is reset, SID is 32 bit Index.
-    When M bit is set, SID is 20 bit Label.
-
-
-    NAI
-
-          0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                      Local IPv4 address                       |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                     Remote IPv4 address                       |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-                        NAI for IPv4 Adjacency
-
-           0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     //               Local IPv6 address (16 bytes)                 //
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     //               Remote IPv6 address (16 bytes)                //
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-                       NAI for IPv6 adjacency
-
-           0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                      Local Node-ID                            |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                    Local Interface ID                         |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                      Remote Node-ID                           |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                   Remote Interface ID                         |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-           NAI for Unnumbered adjacency with IPv4 Node IDs
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(SrEroSubObject.class);
-
-    public static final short TYPE = 0x24; //TODO : type to be defined
-    public static final short LENGTH = 12;
-    public static final short VALUE_LENGTH = 10;
-    public static final int SET = 1;
-    public static final byte MFLAG_SET = 0x01;
-    public static final byte CFLAG_SET = 0x02;
-    public static final byte SFLAG_SET = 0x04;
-    public static final byte FFLAG_SET = 0x08;
-    public static final byte SHIFT_ST = 12;
-
-    private final boolean bFFlag;
-    private final boolean bSFlag;
-    private final boolean bCFlag;
-    private final boolean bMFlag;
-    private final byte st;
-
-    //If m bit is set SID will store label else store 32 bit value
-    private final int sid;
-    private final PcepNai nai;
-
-    /**
-     * Constructor to initialize member variables.
-     *
-     * @param st SID type
-     * @param bFFlag F flag
-     * @param bSFlag S flag
-     * @param bCFlag C flag
-     * @param bMFlag M flag
-     * @param sid segment identifier value
-     * @param nai NAI associated with SID
-     */
-    public SrEroSubObject(byte st, boolean bFFlag, boolean bSFlag, boolean bCFlag, boolean bMFlag, int sid,
-            PcepNai nai) {
-        this.st = st;
-        this.bFFlag = bFFlag;
-        this.bSFlag = bSFlag;
-        this.bCFlag = bCFlag;
-        this.bMFlag = bMFlag;
-        this.sid = sid;
-        this.nai = nai;
-    }
-
-    /**
-     * Creates object of SrEroSubObject.
-     *
-     * @param st SID type
-     * @param bFFlag F flag
-     * @param bSFlag S flag
-     * @param bCFlag C flag
-     * @param bMFlag M flag
-     * @param sid segment identifier value
-     * @param nai NAI associated with SID
-     * @return object of SrEroSubObject
-     */
-    public static SrEroSubObject of(byte st, boolean bFFlag, boolean bSFlag, boolean bCFlag, boolean bMFlag, int sid,
-            PcepNai nai) {
-        return new SrEroSubObject(st, bFFlag, bSFlag, bCFlag, bMFlag, sid, nai);
-    }
-
-    /**
-     * Returns SID type.
-     *
-     * @return st SID type
-     */
-    public byte getSt() {
-        return st;
-    }
-
-    /**
-     * Returns bFFlag.
-     *
-     * @return bFFlag
-     */
-    public boolean getFFlag() {
-        return bFFlag;
-    }
-
-    /**
-     * Returns bSFlag.
-     *
-     * @return bSFlag
-     */
-    public boolean getSFlag() {
-        return bSFlag;
-    }
-
-    /**
-     * Returns bCFlag.
-     *
-     * @return bCFlag
-     */
-    public boolean getCFlag() {
-        return bCFlag;
-    }
-
-    /**
-     * Returns bMFlag.
-     *
-     * @return bMFlag
-     */
-    public boolean getMFlag() {
-        return bMFlag;
-    }
-
-    /**
-     * Returns sID.
-     *
-     * @return sid
-     */
-    public int getSid() {
-        return sid;
-    }
-
-    /**
-     * Returns nai.
-     * @return nai
-     */
-    public PcepNai getNai() {
-        return nai;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(st, bFFlag, bSFlag, bCFlag, bMFlag, sid, nai);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof SrEroSubObject) {
-            SrEroSubObject other = (SrEroSubObject) obj;
-            return Objects.equals(this.st, other.st) && Objects.equals(this.bFFlag, other.bFFlag)
-                    && Objects.equals(this.bSFlag, other.bSFlag) && Objects.equals(this.bCFlag, other.bCFlag)
-                    && Objects.equals(this.bMFlag, other.bMFlag) && Objects.equals(this.sid, other.sid)
-                    && Objects.equals(this.nai, other.nai);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeByte(TYPE);
-        // Store the position of object length
-        int objectLenIndex = c.writerIndex();
-        c.writeByte(0);
-
-        short temp = 0;
-        if (bMFlag) {
-            temp = (short) (temp | MFLAG_SET);
-        }
-        if (bCFlag) {
-            temp = (short) (temp | CFLAG_SET);
-        }
-        if (bSFlag) {
-            temp = (short) (temp | SFLAG_SET);
-        }
-        if (bFFlag) {
-            temp = (short) (temp | FFLAG_SET);
-        }
-        short tempST = (short) (st << SHIFT_ST);
-        temp = (short) (temp | tempST);
-        c.writeShort(temp);
-        if (bMFlag) {
-            int tempSid = sid << 12;
-            c.writeInt(tempSid);
-        } else {
-            c.writeInt(sid);
-        }
-        nai.write(c);
-
-        c.setByte(objectLenIndex, (c.writerIndex() - iLenStartIndex));
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of SrEroSubObject.
-     * @param c of type channel buffer
-     * @return object of SrEroSubObject
-     */
-    public static PcepValueType read(ChannelBuffer c) {
-        short temp = c.readShort();
-        boolean bMFlag;
-        boolean bCFlag;
-        boolean bSFlag;
-        boolean bFFlag;
-        byte st;
-        PcepNai nai = null;
-
-        bMFlag = (temp & MFLAG_SET) == MFLAG_SET;
-        bCFlag = (temp & CFLAG_SET) == CFLAG_SET;
-        bSFlag = (temp & SFLAG_SET) == SFLAG_SET;
-        bFFlag = (temp & FFLAG_SET) == FFLAG_SET;
-
-        st = (byte) (temp >> SHIFT_ST);
-
-        int sid = c.readInt();
-        if (bMFlag) {
-            sid = sid >> 12;
-        }
-        switch (st) {
-        case PcepNaiIpv4NodeId.ST_TYPE:
-            nai = PcepNaiIpv4NodeId.read(c);
-            break;
-        case PcepNaiIpv6NodeId.ST_TYPE:
-            nai = PcepNaiIpv6NodeId.read(c);
-            break;
-        case PcepNaiIpv4Adjacency.ST_TYPE:
-            nai = PcepNaiIpv4Adjacency.read(c);
-            break;
-        case PcepNaiIpv6Adjacency.ST_TYPE:
-            nai = PcepNaiIpv6Adjacency.read(c);
-            break;
-        case PcepNaiUnnumberedAdjacencyIpv4.ST_TYPE:
-            nai = PcepNaiUnnumberedAdjacencyIpv4.read(c);
-            break;
-        default:
-            nai = null;
-            break;
-        }
-
-        return new SrEroSubObject(st, bFFlag, bSFlag, bCFlag, bMFlag, sid, nai);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("st", st)
-                .add("bFflag", bFFlag)
-                .add("bSFlag", bSFlag)
-                .add("bCFlag", bCFlag)
-                .add("bMFlag", bMFlag)
-                .add("sid", sid)
-                .add("nAI", nai)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrPceCapabilityTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrPceCapabilityTlv.java
deleted file mode 100644
index 7208785..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrPceCapabilityTlv.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides SR PCE Capability Tlv.
- */
-public class SrPceCapabilityTlv implements PcepValueType {
-
-    /*
-     *
-       reference : draft-ietf-pce-segment-routing-06, section 5.1.1
-
-       0                   1                   2                   3
-       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |            Type=TBD           |            Length=4           |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-      |         Reserved              |     Flags     |      MSD      |
-      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-               fig: SR-PCE-CAPABILITY TLV format
-     */
-    private static final Logger log = LoggerFactory.getLogger(SrPceCapabilityTlv.class);
-
-    public static final short TYPE = 26;
-    public static final short LENGTH = 4;
-
-    private final byte msd;
-
-    /**
-     * Constructor to initialize its parameter.
-     *
-     * @param msd maximum SID depth
-     */
-    public SrPceCapabilityTlv(byte msd) {
-        this.msd = msd;
-    }
-
-    /**
-     * Obtains newly created SrPceCapabilityTlv object.
-     *
-     * @param msd maximum SID depth
-     * @return object of SrPceCapabilityTlv
-     */
-    public static SrPceCapabilityTlv of(final byte msd) {
-        return new SrPceCapabilityTlv(msd);
-    }
-
-    /**
-     * Obtains msd.
-     *
-     * @return msd
-     */
-    public byte msd() {
-        return msd;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(msd);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof SrPceCapabilityTlv) {
-            SrPceCapabilityTlv other = (SrPceCapabilityTlv) obj;
-            return Objects.equals(msd, other.msd);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(msd);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of SrPceCapabilityTlv.
-     *
-     * @param cb channel buffer
-     * @return object of Gmpls-Capability-Tlv
-     */
-    public static SrPceCapabilityTlv read(ChannelBuffer cb) {
-        //read reserved bits
-        cb.readShort();
-        //read flags
-        cb.readByte();
-        return SrPceCapabilityTlv.of(cb.readByte());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("msd", msd)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentifiersTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentifiersTlv.java
deleted file mode 100644
index a05b4e5..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentifiersTlv.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides StatefulIPv4LspIdentidiersTlv.
- */
-public class StatefulIPv4LspIdentifiersTlv implements PcepValueType {
-
-    /*             IPV4-LSP-IDENTIFIERS TLV format
-     *
-     * Reference :PCEP Extensions for Stateful PCE draft-ietf-pce-stateful-pce-10
-     *
-
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |           Type=18             |           Length=16           |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                   IPv4 Tunnel Sender Address                  |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |             LSP ID            |           Tunnel ID           |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                        Extended Tunnel ID                     |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |               IPv4 Tunnel Endpoint Address                    |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(StatefulIPv4LspIdentifiersTlv.class);
-
-    public static final short TYPE = 18;
-    public static final short LENGTH = 16;
-    public static final int VALUE_LENGTH = 16;
-    private final int ipv4IngressAddress;
-    private final short lspId;
-    private final short tunnelId;
-    private final int extendedTunnelId;
-    private final int ipv4EgressAddress;
-
-    /**
-     * Constructor to initialize member variables.
-     *
-     * @param ipv4IngressAddress ingress ipv4 address
-     * @param lspId lsp id
-     * @param tunnelId tunnel id
-     * @param extendedTunnelId extended tunnel id
-     * @param ipv4EgressAddress egress ipv4 address
-     */
-    public StatefulIPv4LspIdentifiersTlv(int ipv4IngressAddress, short lspId, short tunnelId, int extendedTunnelId,
-            int ipv4EgressAddress) {
-
-        this.ipv4IngressAddress = ipv4IngressAddress;
-        this.lspId = lspId;
-        this.tunnelId = tunnelId;
-        this.extendedTunnelId = extendedTunnelId;
-        this.ipv4EgressAddress = ipv4EgressAddress;
-    }
-
-    /**
-     * Creates object of StatefulIPv4LspIdentidiersTlv.
-     *
-     * @param ipv4IngressAddress ingress ipv4 address
-     * @param lspId lsp id
-     * @param tunnelId tunnel id
-     * @param extendedTunnelId extended tunnel id
-     * @param ipv4EgressAddress egress ipv4 address
-     * @return object of StatefulIPv4LspIdentidiersTlv
-     */
-    public static StatefulIPv4LspIdentifiersTlv of(int ipv4IngressAddress, short lspId, short tunnelId,
-            int extendedTunnelId, int ipv4EgressAddress) {
-        return new StatefulIPv4LspIdentifiersTlv(ipv4IngressAddress, lspId, tunnelId, extendedTunnelId,
-                ipv4EgressAddress);
-    }
-
-    /**
-     * Returns tunnel id.
-     *
-     * @return tunnelId
-     */
-    public short getTunnelId() {
-        return this.tunnelId;
-    }
-
-    /**
-     * Returns LSP id.
-     *
-     * @return lspId
-     */
-    public short getLspId() {
-        return this.lspId;
-    }
-
-    /**
-     * Returns extendedTunnelId.
-     *
-     * @return extendedTunnelId
-     */
-    public int getextendedTunnelId() {
-        return this.extendedTunnelId;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    /**
-     * Returns ipv4IngressAddress.
-     *
-     * @return ipv4IngressAddress
-     */
-    public int getIpv4IngressAddress() {
-        return ipv4IngressAddress;
-    }
-
-    /**
-     * Returns ipv4EgressAddress.
-     *
-     * @return ipv4EgressAddress
-     */
-    public int getIpv4EgressAddress() {
-        return ipv4EgressAddress;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(ipv4IngressAddress, lspId, tunnelId, extendedTunnelId, ipv4EgressAddress);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof StatefulIPv4LspIdentifiersTlv) {
-            StatefulIPv4LspIdentifiersTlv other = (StatefulIPv4LspIdentifiersTlv) obj;
-            return Objects.equals(this.ipv4IngressAddress, other.ipv4IngressAddress)
-                    && Objects.equals(this.lspId, other.lspId) && Objects.equals(this.tunnelId, other.tunnelId)
-                    && Objects.equals(this.extendedTunnelId, other.extendedTunnelId)
-                    && Objects.equals(this.ipv4EgressAddress, other.ipv4EgressAddress);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(ipv4IngressAddress);
-        c.writeShort(lspId);
-        c.writeShort(tunnelId);
-        c.writeInt(extendedTunnelId);
-        c.writeInt(ipv4EgressAddress);
-
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of StatefulIPv4LspIdentidiersTlv.
-     *
-     * @param c of type channel buffer
-     * @return object of StatefulIPv4LspIdentidiersTlv
-     */
-    public static PcepValueType read(ChannelBuffer c) {
-        int ipv4IngressAddress = c.readInt();
-        short lspId = c.readShort();
-        short tunnelId = c.readShort();
-        int extendedTunnelId = c.readInt();
-        int ipv4EgressAddress = c.readInt();
-        return new StatefulIPv4LspIdentifiersTlv(ipv4IngressAddress, lspId, tunnelId, extendedTunnelId,
-                ipv4EgressAddress);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type:", TYPE)
-                .add("Length:", LENGTH)
-                .add("Ipv4IngressAddress:", ipv4IngressAddress)
-                .add("LspId:", lspId).add("TunnelId:", tunnelId)
-                .add("ExtendedTunnelId:", extendedTunnelId)
-                .add("Ipv4EgressAddress:", ipv4EgressAddress).toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspDbVerTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspDbVerTlv.java
deleted file mode 100644
index b5dfeea..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspDbVerTlv.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides StatefulLspDbVerTlv.
- */
-public class StatefulLspDbVerTlv implements PcepValueType {
-
-    /*                  LSP-DB-VERSION TLV format
-     *
-     * Reference : Optimizations of Label Switched Path State Synchronization Procedures
-                           for a Stateful PCE draft-ietf-pce-stateful-sync-optimizations-02
-     *
-     *
-
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |           Type=23             |            Length=8           |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                      LSP State DB Version                     |
-    |                                                               |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(StatefulLspDbVerTlv.class);
-
-    public static final short TYPE = 23;
-    public static final short LENGTH = 8;
-    private final long rawValue;
-
-    /**
-     * Constructor to initialize rawValue.
-     *
-     * @param rawValue value
-     */
-    public StatefulLspDbVerTlv(final long rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns object of StatefulLspDbVerTlv.
-     *
-     * @param raw is LSP State DB Version
-     * @return object of StatefulLspDbVerTlv
-     */
-    public static StatefulLspDbVerTlv of(final long raw) {
-        return new StatefulLspDbVerTlv(raw);
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    /**
-     * Returns LSP State DB Version.
-     *
-     * @return rawValue value
-     */
-    public long getLong() {
-        return rawValue;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof StatefulLspDbVerTlv) {
-            StatefulLspDbVerTlv other = (StatefulLspDbVerTlv) obj;
-            return Objects.equals(this.rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeLong(rawValue);
-        return c.writerIndex();
-    }
-
-    /**
-     * Reads the channel buffer and returns object of StatefulLspDbVerTlv.
-     *
-     * @param c input channel buffer
-     * @return object of StatefulLspDbVerTlv
-     */
-    public static StatefulLspDbVerTlv read(ChannelBuffer c) {
-        return StatefulLspDbVerTlv.of(c.readLong());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlv.java
deleted file mode 100644
index 3899d73..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlv.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides StatefulLspErrorCodeTlv.
- */
-public class StatefulLspErrorCodeTlv implements PcepValueType {
-
-    /*                  LSP-ERROR-CODE TLV format
-     *
-     * Reference :PCEP Extensions for Stateful PCE draft-ietf-pce-stateful-pce-10
-     *
-
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |           Type=20             |            Length=4           |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                          LSP Error Code                       |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(StatefulLspErrorCodeTlv.class);
-
-    public static final short TYPE = 20;
-    public static final short LENGTH = 4;
-    private final int rawValue;
-
-    /**
-     * Constructor to initialize raw Value.
-     *
-     * @param rawValue lsp error code value
-     */
-    public StatefulLspErrorCodeTlv(int rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Creates object of StatefulLspErrorCodeTlv.
-     *
-     * @param raw lsp error code value
-     * @return object of StatefulLspErrorCodeTlv
-     */
-    public static StatefulLspErrorCodeTlv of(int raw) {
-        return new StatefulLspErrorCodeTlv(raw);
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    /**
-     * Returns lsp error code value.
-     *
-     * @return lsp error code value
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof StatefulLspErrorCodeTlv) {
-            StatefulLspErrorCodeTlv other = (StatefulLspErrorCodeTlv) obj;
-            return Objects.equals(this.rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads the channel buffer and returns object of StatefulLspErrorCodeTlv.
-     *
-     * @param c of type channel buffer
-     * @return object of StatefulLspErrorCodeTlv
-     */
-    public static StatefulLspErrorCodeTlv read(ChannelBuffer c) {
-        return StatefulLspErrorCodeTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlv.java
deleted file mode 100644
index d184142..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlv.java
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides StatefulPceCapabilityTlv.
- */
-public class StatefulPceCapabilityTlv implements PcepValueType {
-
-    /*             STATEFUL-PCE-CAPABILITY TLV format
-     *
-     * Reference :PCEP Extensions for Stateful PCE draft-ietf-pce-stateful-pce-10
-
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |               Type=16         |            Length=4           |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                             Flags                   |D|T|I|S|U|
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(StatefulPceCapabilityTlv.class);
-
-    public static final short TYPE = 16;
-    public static final short LENGTH = 4;
-    public static final byte UFLAG_SET = 0x01;
-    public static final byte SFLAG_SET = 0x02;
-    public static final byte IFLAG_SET = 0x04;
-    public static final byte TFLAG_SET = 0x08;
-    public static final byte DFLAG_SET = 0x10;
-    public static final int SET = 1;
-
-    private final int rawValue;
-    private final boolean bDFlag;
-    private final boolean bTFlag;
-    private final boolean bIFlag;
-    private final boolean bSFlag;
-    private final boolean bUFlag;
-    private final boolean isRawValueSet;
-
-    /**
-     * Constructor to initialize variables.
-     *
-     * @param rawValue Flags
-     */
-    public StatefulPceCapabilityTlv(int rawValue) {
-        this.rawValue = rawValue;
-        isRawValueSet = true;
-        this.bUFlag = (rawValue & UFLAG_SET) == UFLAG_SET;
-        this.bSFlag = (rawValue & SFLAG_SET) == SFLAG_SET;
-        this.bIFlag = (rawValue & IFLAG_SET) == IFLAG_SET;
-        this.bTFlag = (rawValue & TFLAG_SET) == TFLAG_SET;
-        this.bDFlag = (rawValue & DFLAG_SET) == DFLAG_SET;
-    }
-
-    /**
-     * Constructor to initialize variables.
-     *
-     * @param bDFlag D-flag
-     * @param bTFlag T-flag
-     * @param bIFlag I-flag
-     * @param bSFlag S-flag
-     * @param bUFlag U-flag
-     */
-    public StatefulPceCapabilityTlv(boolean bDFlag, boolean bTFlag, boolean bIFlag, boolean bSFlag, boolean bUFlag) {
-        this.bDFlag = bDFlag;
-        this.bTFlag = bTFlag;
-        this.bIFlag = bIFlag;
-        this.bSFlag = bSFlag;
-        this.bUFlag = bUFlag;
-        this.rawValue = 0;
-        isRawValueSet = false;
-    }
-
-    /**
-     * Returns object of StatefulPceCapabilityTlv.
-     *
-     * @param raw value Flags
-     * @return object of StatefulPceCapabilityTlv
-     */
-    public static StatefulPceCapabilityTlv of(final int raw) {
-        return new StatefulPceCapabilityTlv(raw);
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    /**
-     * Returns D-flag.
-     *
-     * @return bDFlag D-flag
-     */
-    public boolean getDFlag() {
-        return bDFlag;
-    }
-
-    /**
-     * Returns T-flag.
-     *
-     * @return bTFlag T-flag
-     */
-    public boolean getTFlag() {
-        return bTFlag;
-    }
-
-    /**
-     * Returns I-flag.
-     *
-     * @return bIFlag I-flag
-     */
-    public boolean getIFlag() {
-        return bIFlag;
-    }
-
-    /**
-     * Returns S-flag.
-     *
-     * @return bSFlag S-flag
-     */
-    public boolean getSFlag() {
-        return bSFlag;
-    }
-
-    /**
-     * Returns U-flag.
-     *
-     * @return bUFlag U-flag
-     */
-    public boolean getUFlag() {
-        return bUFlag;
-    }
-
-    /**
-     * Returns raw value Flags.
-     *
-     * @return rawValue Flags
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        if (isRawValueSet) {
-            return Objects.hash(rawValue);
-        } else {
-            return Objects.hash(bDFlag, bTFlag, bIFlag, bSFlag, bUFlag);
-        }
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof StatefulPceCapabilityTlv) {
-            StatefulPceCapabilityTlv other = (StatefulPceCapabilityTlv) obj;
-            if (isRawValueSet) {
-                return Objects.equals(this.rawValue, other.rawValue);
-            } else {
-                return Objects.equals(this.bDFlag, other.bDFlag) && Objects.equals(this.bTFlag, other.bTFlag)
-                        && Objects.equals(this.bIFlag, other.bIFlag) && Objects.equals(this.bSFlag, other.bSFlag)
-                        && Objects.equals(this.bUFlag, other.bUFlag);
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        if (isRawValueSet) {
-            c.writeInt(rawValue);
-        } else {
-            int temp = 0;
-            if (bUFlag) {
-                temp = temp | UFLAG_SET;
-            }
-            if (bSFlag) {
-                temp = temp | SFLAG_SET;
-            }
-            if (bIFlag) {
-                temp = temp | IFLAG_SET;
-            }
-            if (bTFlag) {
-                temp = temp | TFLAG_SET;
-            }
-            if (bDFlag) {
-                temp = temp | DFLAG_SET;
-            }
-            c.writeInt(temp);
-        }
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads from channel buffer and returns object of StatefulPceCapabilityTlv.
-     *
-     * @param c input channel buffer
-     * @return object of StatefulPceCapabilityTlv
-     */
-    public static PcepValueType read(ChannelBuffer c) {
-        int temp = c.readInt();
-        boolean bDFlag;
-        boolean bTFlag;
-        boolean bIFlag;
-        boolean bSFlag;
-        boolean bUFlag;
-
-        bUFlag = (temp & UFLAG_SET) == UFLAG_SET;
-        bSFlag = (temp & SFLAG_SET) == SFLAG_SET;
-        bIFlag = (temp & IFLAG_SET) == IFLAG_SET;
-        bTFlag = (temp & TFLAG_SET) == TFLAG_SET;
-        bDFlag = (temp & DFLAG_SET) == DFLAG_SET;
-
-        return new StatefulPceCapabilityTlv(bDFlag, bTFlag, bIFlag, bSFlag, bUFlag);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("type", TYPE)
-                .add("Length", LENGTH)
-                .add("DFlag", bDFlag)
-                .add("TFlag", bTFlag)
-                .add("IFlag", bIFlag)
-                .add("SFlag", bSFlag)
-                .add("UFlag", bUFlag)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulRsvpErrorSpecTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulRsvpErrorSpecTlv.java
deleted file mode 100644
index ce2ed6c..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulRsvpErrorSpecTlv.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides StatefulRsvpErrorSpecTlv.
- */
-public class StatefulRsvpErrorSpecTlv implements PcepValueType {
-
-    private static final Logger log = LoggerFactory.getLogger(StatefulRsvpErrorSpecTlv.class);
-
-    /*                  RSVP-ERROR-SPEC TLV format
-     * Reference :PCEP Extensions for Stateful PCE draft-ietf-pce-stateful-pce-10
-     *
-     *
-
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |           Type=21             |            Length (variable)  |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                                                               |
-    +                RSVP ERROR_SPEC or USER_ERROR_SPEC Object      +
-    |                                                               |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-        0             1              2             3
-    +-------------+-------------+-------------+-------------+
-    |       Length (bytes)      |  Class-Num  |   C-Type    |
-    +-------------+-------------+-------------+-------------+
-    |                                                       |
-    //                  (Object contents)                   //
-    |                                                       |
-    +-------------+-------------+-------------+-------------+
-
-    Ref :  ERROR_SPEC @ RFC2205
-
-    IPv4 ERROR_SPEC object: Class = 6, C-Type = 1
-    +-------------+-------------+-------------+-------------+
-    |            IPv4 Error Node Address (4 bytes)          |
-    +-------------+-------------+-------------+-------------+
-    |    Flags    |  Error Code |        Error Value        |
-    +-------------+-------------+-------------+-------------+
-
-
-    IPv6 ERROR_SPEC object: Class = 6, C-Type = 2
-    +-------------+-------------+-------------+-------------+
-    |                                                       |
-    +                                                       +
-    |                                                       |
-    +           IPv6 Error Node Address (16 bytes)          +
-    |                                                       |
-    +                                                       +
-    |                                                       |
-    +-------------+-------------+-------------+-------------+
-    |    Flags    |  Error Code |        Error Value        |
-    +-------------+-------------+-------------+-------------+
-
-
-    Ref : USER_ERROR_SPEC @ RFC5284
-    USER_ERROR_SPEC object: Class = 194, C-Type = 1
-    0                   1                   2                   3
-    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +---------------+---------------+---------------+---------------+
-    |                       Enterprise Number                       |
-    +---------------+---------------+---------------+---------------+
-    |    Sub Org    |  Err Desc Len |        User Error Value       |
-    +---------------+---------------+---------------+---------------+
-    |                                                               |
-    ~                       Error Description                       ~
-    |                                                               |
-    +---------------+---------------+---------------+---------------+
-    |                                                               |
-    ~                     User-Defined Subobjects                   ~
-    |                                                               |
-    +---------------+---------------+---------------+---------------+
-
-     */
-
-    public static final short TYPE = 21;
-    public static final int OBJECT_HEADER_LENGTH = 4;
-    private short hLength;
-
-    private final PcepRsvpErrorSpec rsvpErrSpecObj;
-    private final boolean isErrSpceObjSet;
-
-    /**
-     * Constructor to initialize errSpecObj.
-     *
-     * @param rsvpErrSpecObj Rsvp error spec object
-     */
-    public StatefulRsvpErrorSpecTlv(PcepRsvpErrorSpec rsvpErrSpecObj) {
-        this.rsvpErrSpecObj = rsvpErrSpecObj;
-        this.isErrSpceObjSet = true;
-    }
-
-    /**
-     * Returns PcepRsvpErrorSpecObject.
-     *
-     * @return rsvpErrSpecObj
-     */
-    public PcepRsvpErrorSpec getPcepRsvpErrorSpec() {
-        return this.rsvpErrSpecObj;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return hLength;
-    }
-
-    /**
-     * Reads channel buffer and returns object of StatefulRsvpErrorSpecTlv.
-     *
-     * @param cb of type channel buffer
-     * @return object of StatefulRsvpErrorSpecTlv
-     * @throws PcepParseException while parsing this tlv from channel buffer
-     */
-    public static PcepValueType read(ChannelBuffer cb) throws PcepParseException {
-
-        PcepRsvpErrorSpec rsvpErrSpecObj = null;
-        PcepRsvpSpecObjHeader rsvpErrSpecObjHeader;
-
-        cb.markReaderIndex();
-        rsvpErrSpecObjHeader = PcepRsvpSpecObjHeader.read(cb);
-        cb.resetReaderIndex();
-
-        if (PcepRsvpIpv4ErrorSpec.CLASS_NUM == rsvpErrSpecObjHeader.getObjClassNum()
-                && PcepRsvpIpv4ErrorSpec.CLASS_TYPE == rsvpErrSpecObjHeader.getObjClassType()) {
-            rsvpErrSpecObj = PcepRsvpIpv4ErrorSpec.read(cb);
-        } else if (PcepRsvpIpv6ErrorSpec.CLASS_NUM == rsvpErrSpecObjHeader.getObjClassNum()
-                && PcepRsvpIpv6ErrorSpec.CLASS_TYPE == rsvpErrSpecObjHeader.getObjClassType()) {
-            rsvpErrSpecObj = PcepRsvpIpv6ErrorSpec.read(cb);
-        } else if (PcepRsvpUserErrorSpec.CLASS_NUM == rsvpErrSpecObjHeader.getObjClassNum()
-                && PcepRsvpUserErrorSpec.CLASS_TYPE == rsvpErrSpecObjHeader.getObjClassType()) {
-            rsvpErrSpecObj = PcepRsvpUserErrorSpec.read(cb);
-        }
-        return new StatefulRsvpErrorSpecTlv(rsvpErrSpecObj);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rsvpErrSpecObj.hashCode());
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof StatefulRsvpErrorSpecTlv) {
-            StatefulRsvpErrorSpecTlv other = (StatefulRsvpErrorSpecTlv) obj;
-            return Objects.equals(this.rsvpErrSpecObj, other.rsvpErrSpecObj);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        int tlvLenIndex = c.writerIndex();
-        hLength = 0;
-        c.writeShort(hLength);
-        if (isErrSpceObjSet) {
-            rsvpErrSpecObj.write(c);
-        }
-        hLength = (short) (c.writerIndex() - iStartIndex);
-        c.setShort(tlvLenIndex, (hLength - OBJECT_HEADER_LENGTH));
-
-        return c.writerIndex() - iStartIndex;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("Type", TYPE)
-                .add("Length", hLength)
-                .add("RSVPErrorSpecObject", rsvpErrSpecObj)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SymbolicPathNameTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SymbolicPathNameTlv.java
deleted file mode 100644
index faad33a..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SymbolicPathNameTlv.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Arrays;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides SymbolicPathNameTlv.
- */
-public class SymbolicPathNameTlv implements PcepValueType {
-
-    /*
-     *    SYMBOLIC-PATH-NAME TLV format
-     *    Reference :PCEP Extensions for Stateful PCE draft-ietf-pce-stateful-pce-10
-     *
-         0                   1                   2                   3
-         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-         |           Type=17             |       Length (variable)       |
-         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-         |                                                               |
-         //                      Symbolic Path Name                     //
-         |                                                               |
-         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-    private static final Logger log = LoggerFactory.getLogger(SymbolicPathNameTlv.class);
-
-    public static final short TYPE = 17;
-    private short hLength;
-
-    private final byte[] rawValue;
-
-    /**
-     * Constructor to initialize raw Value.
-     *
-     * @param rawValue Symbolic path name
-     */
-    public SymbolicPathNameTlv(byte[] rawValue) {
-        this.rawValue = rawValue;
-        this.hLength = (short) rawValue.length;
-    }
-
-    /**
-     * Constructor to initialize raw Value.
-     *
-     * @param rawValue Symbolic path name
-     * @param hLength length of Symbolic path name
-     */
-    public SymbolicPathNameTlv(byte[] rawValue, short hLength) {
-        this.rawValue = rawValue;
-        if (0 == hLength) {
-            this.hLength = (short) rawValue.length;
-        } else {
-            this.hLength = hLength;
-        }
-    }
-
-    /**
-     * Creates an object of SymbolicPathNameTlv.
-     *
-     * @param raw Symbolic path name
-     * @param hLength length of Symbolic path name
-     * @return object of SymbolicPathNameTlv
-     */
-    public static SymbolicPathNameTlv of(final byte[] raw, short hLength) {
-        return new SymbolicPathNameTlv(raw, hLength);
-    }
-
-    /**
-     * Returns Symbolic path name.
-     *
-     * @return Symbolic path name byte array
-     */
-    public byte[] getValue() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return hLength;
-    }
-
-    @Override
-    public int hashCode() {
-        return Arrays.hashCode(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof SymbolicPathNameTlv) {
-            SymbolicPathNameTlv other = (SymbolicPathNameTlv) obj;
-            return Arrays.equals(this.rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(hLength);
-        c.writeBytes(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads channel buffer and returns object of SymbolicPathNameTlv.
-     *
-     * @param c of type channel buffer
-     * @param hLength length of bytes to read
-     * @return object of SymbolicPathNameTlv
-     */
-    public static SymbolicPathNameTlv read(ChannelBuffer c, short hLength) {
-        byte[] symbolicPathName = new byte[hLength];
-        c.readBytes(symbolicPathName, 0, hLength);
-        return new SymbolicPathNameTlv(symbolicPathName, hLength);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("SymbolicPathName ", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TEDefaultMetricSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TEDefaultMetricSubTlv.java
deleted file mode 100644
index ab6f814..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TEDefaultMetricSubTlv.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides TEDefaultMetricTlv.
- */
-public class TEDefaultMetricSubTlv implements PcepValueType {
-
-    /*
-     * Reference :| [I-D.ietf-idr- ls-distribution] /3.3.2.3
-     *  0                   1                   2                   3
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |              Type=TDB37       |             Length=4          |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     |                    TE Default Link Metric                     |
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-     */
-    private static final Logger log = LoggerFactory.getLogger(TEDefaultMetricSubTlv.class);
-
-    public static final short TYPE = 26;
-    public static final short LENGTH = 4;
-
-    private final int rawValue;
-
-    /**
-     * Constructor to initialize rawValue.
-     *
-     * @param rawValue TE Default Link Metric
-     */
-    public TEDefaultMetricSubTlv(int rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created TEDefaultMetricTlv object.
-     *
-     * @param raw raw value
-     * @return object of TEDefaultMetricTlv.
-     */
-    public static TEDefaultMetricSubTlv of(final int raw) {
-        return new TEDefaultMetricSubTlv(raw);
-    }
-
-    /**
-     * Returns raw value.
-     *
-     * @return rawValue TE Default Link Metric
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof TEDefaultMetricSubTlv) {
-            TEDefaultMetricSubTlv other = (TEDefaultMetricSubTlv) obj;
-            return Objects.equals(this.rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads channel buffer and returns object of TEDefaultMetricTlv.
-     *
-     * @param c input channel buffer
-     * @return object of TEDefaultMetricTlv
-     */
-    public static TEDefaultMetricSubTlv read(ChannelBuffer c) {
-        return TEDefaultMetricSubTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/UnreservedBandwidthSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/UnreservedBandwidthSubTlv.java
deleted file mode 100644
index 6f3b065..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/UnreservedBandwidthSubTlv.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import java.util.Objects;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Provides Unreserved Bandwidth Tlv.
- */
-public class UnreservedBandwidthSubTlv implements PcepValueType {
-
-    /* Reference :[RFC5305]/3.6
-     0                   1                   2                   3
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |           Type=[TDB36]        |             Length=4          |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-    |                 Unreserved Bandwidth                          |
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     */
-
-    private static final Logger log = LoggerFactory.getLogger(UnreservedBandwidthSubTlv.class);
-
-    public static final short TYPE = 25;
-    public static final short LENGTH = 4;
-
-    private final int rawValue;
-
-    /**
-     * Constructor to initialize rawValue.
-     *
-     * @param rawValue Unreserved Bandwidth
-     */
-    public UnreservedBandwidthSubTlv(int rawValue) {
-        this.rawValue = rawValue;
-    }
-
-    /**
-     * Returns newly created UnreservedBandwidthTlv object.
-     *
-     * @param raw as Unreserved Bandwidth
-     * @return object of UnreservedBandwidthTlv
-     */
-    public static UnreservedBandwidthSubTlv of(final int raw) {
-        return new UnreservedBandwidthSubTlv(raw);
-    }
-
-    /**
-     * Returns Unreserved Bandwidth.
-     *
-     * @return rawValue Unreserved Bandwidth
-     */
-    public int getInt() {
-        return rawValue;
-    }
-
-    @Override
-    public PcepVersion getVersion() {
-        return PcepVersion.PCEP_1;
-    }
-
-    @Override
-    public short getType() {
-        return TYPE;
-    }
-
-    @Override
-    public short getLength() {
-        return LENGTH;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(rawValue);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof UnreservedBandwidthSubTlv) {
-            UnreservedBandwidthSubTlv other = (UnreservedBandwidthSubTlv) obj;
-            return Objects.equals(this.rawValue, other.rawValue);
-        }
-        return false;
-    }
-
-    @Override
-    public int write(ChannelBuffer c) {
-        int iLenStartIndex = c.writerIndex();
-        c.writeShort(TYPE);
-        c.writeShort(LENGTH);
-        c.writeInt(rawValue);
-        return c.writerIndex() - iLenStartIndex;
-    }
-
-    /**
-     * Reads byte stream from channel buffer and returns object of UnreservedBandwidthTlv.
-     *
-     * @param c input channel buffer
-     * @return object of UnreservedBandwidthTlv
-     */
-    public static UnreservedBandwidthSubTlv read(ChannelBuffer c) {
-        return UnreservedBandwidthSubTlv.of(c.readInt());
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("Type", TYPE)
-                .add("Length", LENGTH)
-                .add("Value", rawValue)
-                .toString();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/package-info.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/package-info.java
deleted file mode 100644
index 73d86002..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of Tlvs and Pcep common objects.
- */
-package org.onosproject.pcepio.types;
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/HexDump.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/HexDump.java
deleted file mode 100644
index 79f3815..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/HexDump.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.util;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Provides Hex Dump for debugging.
- */
-public final class HexDump {
-    private static final Logger log = LoggerFactory.getLogger(HexDump.class);
-
-    private HexDump() {
-    }
-
-    public static void pcepHexDump(ChannelBuffer buff) {
-
-        log.debug("==================== HEX DUMP ======================");
-        try {
-            byte[] yTemp;
-            yTemp = buff.array();
-
-            int iStartIndex = buff.readerIndex();
-            int iEndIndex = buff.writerIndex();
-            do {
-                StringBuilder sb = new StringBuilder();
-                for (int k = 0; (k < 16) && (iStartIndex < iEndIndex); ++k) {
-                    if (0 == k % 4) {
-                        sb.append(" "); //blank after 4 bytes
-                    }
-                    sb.append(String.format("%02X ", yTemp[iStartIndex++]));
-                }
-                log.debug(sb.toString());
-            } while (iStartIndex < iEndIndex);
-        } catch (Exception e) {
-            log.error("[HexDump] Invalid buffer: " + e.toString());
-        }
-
-        log.debug("===================================================");
-    }
-}
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/package-info.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/package-info.java
deleted file mode 100644
index 6fa35a2..0000000
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provides utility functionality for PCEP messages.
- */
-package org.onosproject.pcepio.util;
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepCloseMsgTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepCloseMsgTest.java
deleted file mode 100644
index fb59ee9..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepCloseMsgTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.Test;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.core.Is.is;
-
-public class PcepCloseMsgTest {
-
-    /**
-     * Common header, reason to close.
-     */
-    @Test
-    public void closeMessageTest1() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] closeMsg = new byte[] {0x20, 0x07, 0x00, 0x0C, 0x0f, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02 };
-
-        byte[] testCloseMsg = {0 };
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(closeMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message;
-
-        message = reader.readFrom(buffer);
-        assertThat(message, instanceOf(PcepCloseMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testCloseMsg = buf.array();
-
-        int readLen = buf.writerIndex();
-        testCloseMsg = new byte[readLen];
-        buf.readBytes(testCloseMsg, 0, readLen);
-        assertThat(testCloseMsg, is(closeMsg));
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepErrorMsgTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepErrorMsgTest.java
deleted file mode 100644
index 4a4956f..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepErrorMsgTest.java
+++ /dev/null
@@ -1,756 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.Test;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.core.Is.is;
-
-/**
- * Test cases for PCEP ERROR Message.
- */
-public class PcepErrorMsgTest {
-
-    /**
-     * This test case checks for
-     * PCEP-ERROR Object, OPEN Object (STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV,
-     * PCECC-CAPABILITY-TLV, LS Capability TLV)
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest1() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x34, // common header
-                0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x01, 0x01, 0x10, 0x00, 0x28, // OPEN object header
-                0x20, 0x05, 0x1E, 0x01, // OPEN object
-                0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY
-                0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV
-                0x00, 0x00, 0x00, 0x00, (byte) 0xff, 0x07, 0x00, 0x04, // PCECC-CAPABILITY-TLV
-                0x00, 0x00, 0x00, 0x03, (byte) 0xFF, (byte) 0x00, 0x00, 0x04, // LS Capability TLV
-                0x00, 0x00, 0x00, 0x00};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * PCEP-ERROR Object, PCEP-ERROR Object, OPEN Object (STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV,
-     * PCECC-CAPABILITY-TLV, LS Capability TLV)
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest2() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x3C, // common header
-                0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x03, 0x01, 0x10, 0x00, 0x28, // OPEN object header
-                0x20, 0x05, 0x1E, 0x01, // OPEN object
-                0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY
-                0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV
-                0x00, 0x00, 0x00, 0x00, (byte) 0xff, 0x07, 0x00, 0x04, // PCECC-CAPABILITY-TLV
-                0x00, 0x00, 0x00, 0x03, (byte) 0xFF, (byte) 0x00, 0x00, 0x04, // LS Capability TLV
-                0x00, 0x00, 0x00, 0x00};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * PCEP-ERROR Object, PCEP-ERROR Object, OPEN Object (STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV,
-     * PCECC-CAPABILITY-TLV)
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest3() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x34, // common header
-                0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x03, 0x01, 0x10, 0x00, 0x20, // OPEN object header
-                0x20, 0x05, 0x1E, 0x01, // OPEN object
-                0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY
-                0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV
-                0x00, 0x00, 0x00, 0x00, (byte) 0xff, 0x07, 0x00, 0x04, // PCECC-CAPABILITY-TLV
-                0x00, 0x00, 0x00, 0x03};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * PCEP-ERROR Object, PCEP-ERROR Object, OPEN Object (STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV)
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest4() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x2c, // common header
-                0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x03, 0x01, 0x10, 0x00, 0x18, // OPEN object header
-                0x20, 0x05, 0x1E, 0x01, // OPEN object
-                0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY
-                0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV
-                0x00, 0x00, 0x00, 0x00};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * PCEP-ERROR Object, PCEP-ERROR Object, OPEN Object (STATEFUL-PCE-CAPABILITY)
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest5() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x24, // common header
-                0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x03, 0x01, 0x10, 0x00, 0x10, // OPEN object header
-                0x20, 0x05, 0x1E, 0x01, // OPEN object
-                0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY
-                0x00, 0x00, 0x00, 0x05};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * PCEP-ERROR Object, PCEP-ERROR Object, OPEN Object
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest6() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x1C, // common header
-                0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x03, 0x01, 0x10, 0x00, 0x08, // OPEN object header
-                0x20, 0x05, 0x1E, 0x01 // OPEN object
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * PCEP-ERROR Object, OPEN Object
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest7() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x14, // common header
-                0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x01, 0x01, 0x10, 0x00, 0x08, // OPEN object header
-                0x20, 0x05, 0x1E, 0x01 // OPEN object
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * PCEP-ERROR Object, RP Object, PCEP-ERROR Object
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest8() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x20, // common header
-                0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x01, 0x02, 0x10, 0x00, 0x0C, // RP Object Header
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x03};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * PCEP-ERROR Object, PCEP-ERROR Object
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest9() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x14, // common header
-                0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x01};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * PCEP-ERROR Object, PCEP-ERROR Object
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest10() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x14, // common header
-                0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x01};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object, PCEP-ERROR Object
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest11() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x1C, // common header
-                (byte) 0xE0, 0x13, 0x00, 0x10, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // LS-ID
-                0x00, 0x00, 0x00, 0x10,
-                0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x01};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * RP Object, PCEP-ERROR Object
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest12() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        //RP Object, PCEP-ERROR Object
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x18, // common header
-                0x02, 0x10, 0x00, 0x0C, // RP Object Header
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x01};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * RP Object, RP Object, PCEP-ERROR Object
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest13() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x24, // common header
-                0x02, 0x10, 0x00, 0x0C, // RP Object Header
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x10, 0x00, 0x0C, // RP Object Header
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x01};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object, LS Object, PCEP-ERROR Object
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest14() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x2C, // common header
-                (byte) 0xE0, 0x10, 0x00, 0x10, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, // LS-ID
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x10,
-                (byte) 0xE0, 0x10, 0x00, 0x10, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, // LS-ID
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x11,
-                0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x01};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * PCEP-ERROR Object, LS Object, PCEP-ERROR Object
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest15() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x24, // common header
-                0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x01,
-                (byte) 0xE0, 0x10, 0x00, 0x10, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, // LS-ID
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x10,
-                0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x03};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * PCEP-ERROR Object, RP Object, RP Object, PCEP-ERROR Object
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest16() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x2C, // common header
-                0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x01, 0x02, 0x10, 0x00, 0x0C, // RP Object Header
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x10, 0x00, 0x0C, // RP Object Header
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x03};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * PCEP-ERROR Object, LS Object, LS Object, PCEP-ERROR Object
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest17() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x34, // common header
-                0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x01,
-                (byte) 0xE0, 0x10, 0x00, 0x10, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, // LS-ID
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x10,
-                (byte) 0xE0, 0x10, 0x00, 0x10, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, // LS-ID
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x11,
-                0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x03};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * PCEP-ERROR Object, PCEP-ERROR Object, RP Object, RP Object, PCEP-ERROR Object, PCEP-ERROR Object
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest18() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x3C, // common header
-                0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x03, 0x02, 0x10, 0x00, 0x0C, // RP Object Header
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x10, 0x00, 0x0C, // RP Object Header
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x06};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * PCEP-ERROR Object, PCEP-ERROR Object, LS Object, LS Object, PCEP-ERROR Object, PCEP-ERROR Object
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest19() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x44, // common header
-                0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x01,
-                0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x03,
-                (byte) 0xE0, 0x10, 0x00, 0x10, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, // LS-ID
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x10,
-                (byte) 0xE0, 0x10, 0x00, 0x10, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, // LS-ID
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x11,
-                0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x04, // PCERR Object Header
-                0x0D, 0x10, 0x00, 0x08,
-                0x00, 0x00, 0x01, 0x06};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-
-    /**
-     * This test case checks for
-     * PCEP-ERROR Object, RP Object, RP Object, PCEP-ERROR Object, PCEP-ERROR Object,
-     * LS Object, PCEP-ERROR Object
-     * in PcepErrorMsg message.
-     */
-    @Test
-    public void errorMessageTest20() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x4C, // common header
-                0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header
-                0x00, 0x00, 0x01, 0x01, 0x02, 0x10, 0x00, 0x0C, // RP Object Header
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x10, 0x00, 0x0C, // RP Object Header
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x06, (byte) 0xE0, 0x10, 0x00, 0x10, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                0x0D, 0x10, 0x00, 0x08, // PCERR Object Header
-                0x00, 0x00, 0x01, 0x06};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(errorMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testErrorMsg = {0};
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, instanceOf(PcepErrorMsg.class));
-
-        message.writeTo(buf);
-        int iReadLen = buf.writerIndex();
-        testErrorMsg = new byte[iReadLen];
-        buf.readBytes(testErrorMsg, 0, iReadLen);
-
-        assertThat(testErrorMsg, is(errorMsg));
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgExtTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgExtTest.java
deleted file mode 100644
index ed39516..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgExtTest.java
+++ /dev/null
@@ -1,1684 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.Test;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.core.Is.is;
-
-public class PcepInitiateMsgExtTest {
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv,
-     * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv),
-     * END-POINTS, ERO, LSPA, BANDWIDTH, METRIC-LIST objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest1() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv,
-        // StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC-LIST.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xA4,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03,
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, //Metric object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv,
-     * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv,
-     * StatefulRsvpErrorSpecTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest2() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv,
-        // StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xA8,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x48, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x00, 0x15, 0x00, 0x0c, //StatefulRsvpErrorSpecTlv
-                0x00, 0x0c, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x05,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-     * StatefulLspDbVerTlv, StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS,
-     * ERO, LSPA, BANDWIDTH objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest3() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv,
-        // StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO, LSPA, BANDWIDTH.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x8c,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                // 0x00, 0x15, 0x00, 0x0c, //StatefulRsvpErrorSpecTlv
-                //0x00, 0x0c, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x05,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv,
-     * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv),
-     * END-POINTS, ERO, LSPA objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest4() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv,
-        // StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO, LSPA.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x84,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                // 0x00, 0x15, 0x00, 0x0c, //StatefulRsvpErrorSpecTlv
-                // 0x00, 0x0c, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x05,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv,
-     * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv), END-POINTS, ERO, LSPA
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest5() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv,
-        // StatefulLspErrorCodeTlv), END-POINTS, ERO, LSPA.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x84,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv,
-     * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv), END-POINTS, ERO, LSPA,
-     * BANDWIDTH OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest6() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv,
-        // StatefulLspErrorCodeTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x8c,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv,
-     * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv), END-POINTS, ERO,
-     * LSPA, BANDWIDTH, METRIC OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest7() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv,
-        // StatefulLspErrorCodeTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x98,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv,
-     * SymbolicPathNameTlv, StatefulLspDbVerTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest8() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv),
-        // END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x90,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x30, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv,
-     * SymbolicPathNameTlv, StatefulLspDbVerTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest9() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv),
-        // END-POINTS, ERO, LSPA, BANDWIDTH OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x84,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x30, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv,
-     * SymbolicPathNameTlv), END-POINTS, ERO, LSPA OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest10() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv),
-        // END-POINTS, ERO, LSPA OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x70,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03,
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv,
-     * SymbolicPathNameTlv, StatefulLspDbVerTlv), END-POINTS, ERO, LSPA OBJECT
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest11() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv),
-        // END-POINTS, ERO, LSPA OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x7C,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x30, 0x00, 0x00, 0x10, 0x03,
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv,
-     * SymbolicPathNameTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest12() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv),
-        // END-POINTS, ERO, LSPA, BANDWIDTH OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x78,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03,
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv,
-     * SymbolicPathNameTlv, StatefulLspDbVerTlv), END-POINTS, ERO, LSPA, BANDWIDTH , METRIC OBJECT
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest13() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv),
-        // END-POINTS, ERO, LSPA, BANDWIDTH , METRIC OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x84,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03,
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv),
-     * END-POINTS, ERO, LSPA, BANDWIDTH , METRIC OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest14() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv),
-        // END-POINTS, ERO, LSPA, BANDWIDTH , METRIC OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x7c,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv),
-     * END-POINTS, ERO, LSPA, BANDWIDTH OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest15() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv),
-        // END-POINTS, ERO, LSPA, BANDWIDTH OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x70,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv),
-     * END-POINTS, ERO, LSPA OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest16() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv),
-        // END-POINTS, ERO, LSPA OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x68,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA OBJECT
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest17() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x60,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA,
-     * BANDWIDTH OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest18() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x68,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03,
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA,
-     * BANDWIDTH, METRIC OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest19() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x74,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA,
-     * BANDWIDTH, METRIC OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest20() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x64,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04, //ERO object
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA,
-     * BANDWIDTH OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest21() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x58,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO,
-     * LSPA OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest22() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x50,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04, //ERO object
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv),
-     * END-POINTS, ERO, LSPA OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest23() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x58,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04, //ERO object
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv),
-     * END-POINTS, ERO, LSPA BANDWIDTH OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest25() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA BANDWIDTH OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x60,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04, //ERO object
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), END-POINTS,
-     * ERO, LSPA, BANDWIDTH, METRIC OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest26() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), END-POINTS,
-        // ERO, LSPA, BANDWIDTH, METRIC OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x6C,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04, //ERO object
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; //Metric object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, LSPA,
-     * BANDWIDTH, METRIC OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest27() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x60,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04, //ERO object
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; //Metric object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO,
-     * LSPA, BANDWIDTH OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest28() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x54,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04, //ERO object
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv),
-     * END-POINTS, ERO, LSPA OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest29() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, LSPA OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x4C,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04, //ERO object
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv),
-     * END-POINTS, ERO, LSPA OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest30() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, LSPA OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x5C,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv), END-POINTS, ERO, LSPA OBJECT
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest31() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP (SymbolicPathNameTlv), END-POINTS, ERO, LSPA OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x54,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP ( StatefulLspDbVerTlv), END-POINTS,
-     * ERO, LSPA, BANDWIDTH, METRIC OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest32() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP ( StatefulLspDbVerTlv), END-POINTS,
-        // ERO, LSPA, BANDWIDTH, METRIC OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x64,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04, //ERO object
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; //Metric object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP ( StatefulLspDbVerTlv), END-POINTS,
-     * ERO, LSPA, BANDWIDTH OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest33() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP ( StatefulLspDbVerTlv), END-POINTS,
-        // ERO, LSPA, BANDWIDTH OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x58,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04, //ERO object
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP ( StatefulLspDbVerTlv), END-POINTS,
-     * ERO, LSPA OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest34() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP ( StatefulLspDbVerTlv), END-POINTS,
-        // ERO, LSPA OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x50,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04, //ERO object
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP ( StatefulLspDbVerTlv), END-POINTS,
-     * ERO, LSPA OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest35() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP ( StatefulLspDbVerTlv), END-POINTS,
-        // ERO, LSPA OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x60,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP ( StatefulLspDbVerTlv), END-POINTS,
-     * ERO, LSPA OBJECT objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest36() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        // SRP, LSP ( StatefulLspDbVerTlv), END-POINTS,
-        // ERO, LSPA OBJECT.
-        //
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x58,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object
-                0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-}
-
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgTest.java
deleted file mode 100644
index bce601b..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgTest.java
+++ /dev/null
@@ -1,1332 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.Test;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.core.Is.is;
-
-public class PcepInitiateMsgTest {
-
-    /**
-     * This test case checks for srp, lsp, end-point, ERO objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest1() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /* srp, lsp, end-point, ERO.
-         */
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, 0x54,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x00, 0x08, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02,
-                0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for srp and lsp objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest2() throws PcepParseException, PcepOutOfBoundMessageException {
-        /* srp, lsp.
-         */
-        byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x34,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x20, 0x10, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                0x01, 0x01, 0x01, 0x01, 0x00, 0x43, (byte) 0x83, 0x01,
-                0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02,
-                0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33}; //SymbolicPathTlv
-
-        byte[] testInitiateDeletionMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateDeletionMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testInitiateDeletionMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateDeletionMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateDeletionMsg, 0, iReadLen);
-
-        assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-     * StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO objects
-     * in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest3() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-         * StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO.
-         */
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x64,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-     * StatefulLspErrorCodeTlv), END-POINT, ERO objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest4() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-         * StatefulLspErrorCodeTlv), END-POINT, ERO.
-         */
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x64,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv),
-     * END-POINT, ERO objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest5() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv),
-         * END-POINT, ERO.
-         */
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x5c,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv),
-     * END-POINT, ERO objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest6() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv),
-         * END-POINT, ERO.
-         */
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x5c,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03,
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv),
-     * END-POINT, ERO objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest7() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv),
-         * END-POINT, ERO.
-         */
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x54,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv),
-     * END-POINT, ERO objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest8() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /* SRP, LSP (StatefulIPv4LspIdentidiersTlv),
-         * END-POINT, ERO.
-         */
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x4c,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv),
-     * END-POINT, ERO objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest9() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /* SRP, LSP (StatefulIPv4LspIdentidiersTlv),
-         * END-POINT, ERO.
-         */
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x3c,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, StatefulRsvpErrorSpecTlv)
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest10() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, StatefulRsvpErrorSpecTlv).
-         */
-        byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x44,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, (byte) 0xb6, 0x02, 0x4e, 0x1f,
-                (byte) 0xb6, 0x02, 0x4e, 0x20, 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08 //StatefulLspErrorCodeTlv
-        };
-
-        byte[] testInitiateDeletionMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateDeletionMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateDeletionMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateDeletionMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateDeletionMsg, 0, iReadLen);
-
-        assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-     * StatefulLspErrorCodeTlv) objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest11() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-           StatefulLspErrorCodeTlv).*/
-        byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x44,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08}; //StatefulLspErrorCodeTlv
-
-        byte[] testInitiateDeletionMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateDeletionMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateDeletionMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateDeletionMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateDeletionMsg, 0, iReadLen);
-
-        assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv)
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest12() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv).
-         */
-        byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x3c,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00 //SymbolicPathNameTlv
-        };
-
-        byte[] testInitiateDeletionMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateDeletionMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateDeletionMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateDeletionMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateDeletionMsg, 0, iReadLen);
-
-        assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv)
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest13() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv).
-         */
-        byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x3c,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00}; //SymbolicPathNameTlv
-
-        byte[] testInitiateDeletionMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateDeletionMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateDeletionMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateDeletionMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateDeletionMsg, 0, iReadLen);
-
-        assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv)
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest14() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv).
-         */
-        byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x34,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20};
-
-        byte[] testInitiateDeletionMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateDeletionMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateDeletionMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateDeletionMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateDeletionMsg, 0, iReadLen);
-
-        assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv)
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest15() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /* SRP, LSP (StatefulIPv4LspIdentidiersTlv).
-         */
-        byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x2c,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20};
-
-        byte[] testInitiateDeletionMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateDeletionMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateDeletionMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateDeletionMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateDeletionMsg, 0, iReadLen);
-
-        assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg));
-    }
-
-    /**
-     * This test case checks for srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest16() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        //srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x50,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04, //ERO object
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest17() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        //srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x58,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04, //ERO object
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth,metric-list
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest18() throws PcepParseException, PcepOutOfBoundMessageException {
-        //srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth,metric-list
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x64,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04, //ERO object
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for srp,lsp(all tlvs),end-point,ero,lspa,bandwidth,metric-list
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest19() throws PcepParseException, PcepOutOfBoundMessageException {
-        //srp,lsp(all tlvs),end-point,ero,lspa,bandwidth,metric-list
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x74,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x04, //ERO object
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for srp,lsp (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, srp,
-     * lsp(SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv) objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest20() throws PcepParseException, PcepOutOfBoundMessageException {
-        /* srp,lsp (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, srp,
-         *  lsp(SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv).
-         */
-        byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x64,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20};
-
-        byte[] testInitiateDeletionMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateDeletionMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateDeletionMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateDeletionMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateDeletionMsg, 0, iReadLen);
-
-        assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg));
-    }
-
-    /**
-     * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest21() throws PcepParseException, PcepOutOfBoundMessageException {
-        /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,
-         * srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero
-         */
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x94,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest22() throws PcepParseException, PcepOutOfBoundMessageException {
-        /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,
-         * srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa
-         */
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xA8,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest23() throws PcepParseException, PcepOutOfBoundMessageException {
-        /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,
-         * srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth
-         */
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xB0,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest24() throws PcepParseException, PcepOutOfBoundMessageException {
-        /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,
-         * srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth*/
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xBC,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,bandwidth,
-     * srp,lsp(StatefulIPv4LspIdentidiersTlv), end-point,ero,lspa,bandwidth,metric-list
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest25() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,bandwidth,
-         * srp,lsp(StatefulIPv4LspIdentidiersTlv),
-         * end-point,ero,lspa,bandwidth,metric-list */
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xC4,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,bandwidth,metric-list,
-     * srp,lsp(StatefulIPv4LspIdentidiersTlv), end-point,ero,lspa,bandwidth,metric-list
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest26() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,bandwidth,metric-list,
-         * srp,lsp(StatefulIPv4LspIdentidiersTlv),
-         * end-point,ero,lspa,bandwidth,metric-list */
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xD0,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-
-    /**
-     * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth,metric-list,
-     * srp,lsp(StatefulIPv4LspIdentidiersTlv), end-point,ero,lspa,bandwidth,metric-list
-     * objects in PcInitiate message.
-     */
-    @Test
-    public void initiateMessageTest27() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth,metric-list,
-         * srp,lsp(StatefulIPv4LspIdentidiersTlv),
-         * end-point,ero,lspa,bandwidth,metric-list */
-        byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xE4,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00,
-                0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object
-
-        byte[] testInitiateCreationMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(initiateCreationMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepInitiateMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testInitiateCreationMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testInitiateCreationMsg = new byte[iReadLen];
-        buf.readBytes(testInitiateCreationMsg, 0, iReadLen);
-
-        assertThat(testInitiateCreationMsg, is(initiateCreationMsg));
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsgTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsgTest.java
deleted file mode 100644
index b9bfa6f..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsgTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.Assert;
-import org.junit.Test;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.core.Is.is;
-
-public class PcepKeepaliveMsgTest {
-
-    /**
-     * Common header for keep alive message.
-     */
-    @Test
-    public void keepaliveMessageTest1() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] keepaliveMsg = new byte[] {0x20, 0x02, 0x00, 0x04 };
-
-        byte[] testKeepaliveMsg = {0 };
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(keepaliveMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-        assertThat(message, instanceOf(PcepKeepaliveMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        message.writeTo(buf);
-
-        testKeepaliveMsg = buf.array();
-
-        int iReadLen = buf.writerIndex();
-        testKeepaliveMsg = new byte[iReadLen];
-        buf.readBytes(testKeepaliveMsg, 0, iReadLen);
-
-        Assert.assertThat(testKeepaliveMsg, is(keepaliveMsg));
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepLSReportMsgTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepLSReportMsgTest.java
deleted file mode 100644
index 63ba2e9..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepLSReportMsgTest.java
+++ /dev/null
@@ -1,1585 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.Test;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.core.Is.is;
-
-public class PcepLSReportMsgTest {
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV, Local Node Descriptors TLV(AutonomousSystemSubTlv)).
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest1() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, 0x2C, // common header
-                (byte) 0xE0, 0x10, 0x00, 0x28, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x08, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystem Tlv
-                0x00, 0x00, 0x00, 0x11};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV, Local Node Descriptors TLV(AutonomousSystemSubTlv)) with different LS-ID.
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest2() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, 0x2C, // common header
-                (byte) 0xE0, 0x10, 0x00, 0x28, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x08, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for  LS Object (Routing Universe TLV)
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest3() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, 0x20, // common header
-                (byte) 0xE0, 0x10, 0x00, 0x1C, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv.
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv)).
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest4() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, 0x48, // common header
-                (byte) 0xE0, 0x10, 0x00, 0x44, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OspfAreaIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv))
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest5() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, 0x40, // common header
-                (byte) 0xE0, 0x10, 0x00, 0x3C, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x1C, // Local Node Descriptors TLV
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for LS Object (Routing Universe TLV,Local Node Descriptors TLV(OSPFareaIDsubTlv,
-     * IgpRouterIdSubTlv))
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest6() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, 0x38, // common header
-                (byte) 0xE0, 0x10, 0x00, 0x34, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x14, // Local Node Descriptors TLV
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for LS Object (Routing Universe TLV,Local Node Descriptors TLV(IgpRouterIdSubTlv)).
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest7() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, 0x30, // common header
-                (byte) 0xE0, 0x10, 0x00, 0x2C, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x0C, // Local Node Descriptors TLV
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for LS Object (Routing Universe TLV,Local Node Descriptors TLV)
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest8() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, 0x24, // common header
-                (byte) 0xE0, 0x10, 0x00, 0x20, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x00 // Local Node Descriptors TLV
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv.
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv.
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv)).
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest9() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, 0x70, // common header
-                (byte) 0xE0, 0x10, 0x00, 0x6C, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x24, //RemoteNodeDescriptorsTLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV(BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv))
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest10() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, 0x68, // common header
-                (byte) 0xE0, 0x10, 0x00, 0x64, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x1C, //RemoteNodeDescriptorsTLV
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV(OSPFareaIDsubTlv, IgpRouterIdSubTlv))
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest11() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, 0x60, // common header
-                (byte) 0xE0, 0x10, 0x00, 0x5C, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x14, //RemoteNodeDescriptorsTLV
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV(IgpRouterIdSubTlv))
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest12() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, 0x58, // common header
-                (byte) 0xE0, 0x10, 0x00, 0x54, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x0c, //RemoteNodeDescriptorsTLV
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV)
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest13() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, 0x4C, // common header
-                (byte) 0xE0, 0x10, 0x00, 0x48, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x00 //RemoteNodeDescriptorsTLV
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), LinkDescriptorsTLV(LinkLocalRemoteIdentifiersSubTlv
-     * IPv4InterfaceAddressSubTlv, IPv4NeighborAddressSubTlv))
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest14() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, (byte) 0x90, // common header
-                (byte) 0xE0, 0x10, 0x00, (byte) 0x8C, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x24, //RemoteNodeDescriptorsTLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x04, 0x00, 0x1C, //LinkDescriptorsTLV
-                0x00, 0x06, 0x00, 0x08, //LinkLocalRemoteIdentifiersSubTlv
-                0x01, 0x11, 0x00, 0x09,
-                0x01, 0x21, 0x00, 0x09,
-                0x00, 0x07, 0x00, 0x04, //IPv4InterfaceAddressSubTlv
-                0x01, 0x01, 0x01, 0x01,
-                0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressSubTlv
-                0x01, 0x011, 0x01, 0x10
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), LinkDescriptorsTLV(
-     * IPv4InterfaceAddressSubTlv, IPv4NeighborAddressSubTlv))
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest15() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, (byte) 0x84, // common header
-                (byte) 0xE0, 0x10, 0x00, (byte) 0x80, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x24, //RemoteNodeDescriptorsTLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x04, 0x00, 0x10, //LinkDescriptorsTLV
-                0x00, 0x07, 0x00, 0x04, //IPv4InterfaceAddressSubTlv
-                0x01, 0x01, 0x01, 0x01,
-                0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressSubTlv
-                0x01, 0x011, 0x01, 0x10
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), LinkDescriptorsTLV(IPv4NeighborAddressSubTlv))
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest16() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, (byte) 0x7C, // common header
-                (byte) 0xE0, 0x10, 0x00, (byte) 0x78, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x24, //RemoteNodeDescriptorsTLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x04, 0x00, 0x08, //LinkDescriptorsTLV
-                0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressSubTlv
-                0x01, 0x011, 0x01, 0x10
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), LinkDescriptorsTLV)
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest17() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, (byte) 0x74, // common header
-                (byte) 0xE0, 0x10, 0x00, (byte) 0x70, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x24, //RemoteNodeDescriptorsTLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x04, 0x00, 0x00, //LinkDescriptorsTLV
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), LinkDescriptorsTLV(LinkLocalRemoteIdentifiersSubTlv
-     * IPv4InterfaceAddressSubTlv, IPv4NeighborAddressSubTlv))
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest18() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, (byte) 0xC4, // common header
-                (byte) 0xE0, 0x10, 0x00, (byte) 0xC0, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x24, //RemoteNodeDescriptorsTLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x04, 0x00, 0x1C, //LinkDescriptorsTLV
-                0x00, 0x06, 0x00, 0x08, //LinkLocalRemoteIdentifiersSubTlv
-                0x01, 0x11, 0x00, 0x09,
-                0x01, 0x21, 0x00, 0x09,
-                0x00, 0x07, 0x00, 0x04, //IPv4InterfaceAddressSubTlv
-                0x01, 0x01, 0x01, 0x01,
-                0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressSubTlv
-                0x01, 0x011, 0x01, 0x10,
-                (byte) 0xFF, 0x05, 0x00, 0x30, //NodeAttributesTlv
-                0x00, 0x0D, 0x00, 0x01, //NodeFlagBitsSubTlv
-                (byte) 0x90, 0x00, 0x00, 0x00,
-                0x00, 0x0E, 0x00, 0x04, //OpaqueNodePropertiesSubTlv
-                0x01, 0x011, 0x01, 0x10,
-                0x00, 0x0F, 0x00, 0x08, //NodeNameSubTlv
-                0x08, 0x00, 0x01, 0x09,
-                0x08, 0x00, 0x01, 0x09,
-                0x00, 0x10, 0x00, 0x08, //ISISAreaIdentifierSubTlv
-                0x20, 0x01, 0x22, 0x01,
-                0x20, 0x01, 0x22, 0x01,
-                0x00, 0x11, 0x00, 0x04, //IPv4RouterIdOfLocalNodeSubTlv
-                0x00, 0x01, 0x01, 0x02
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), LinkDescriptorsTLV(LinkLocalRemoteIdentifiersSubTlv
-     * IPv4InterfaceAddressSubTlv, IPv4NeighborAddressSubTlv), NodeAttributesTlv(NodeFlagBitsSubTlv
-     * OpaqueNodePropertiesSubTlv, NodeNameSubTlv, ISISAreaIdentifierSubTlv, IPv4RouterIdOfLocalNodeSubTlv))
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest19() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, (byte) 0xC4, // common header
-                (byte) 0xE0, 0x10, 0x00, (byte) 0xC0, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x24, //RemoteNodeDescriptorsTLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x04, 0x00, 0x1C, //LinkDescriptorsTLV
-                0x00, 0x06, 0x00, 0x08, //LinkLocalRemoteIdentifiersSubTlv
-                0x01, 0x11, 0x00, 0x09,
-                0x01, 0x21, 0x00, 0x09,
-                0x00, 0x07, 0x00, 0x04, //IPv4InterfaceAddressSubTlv
-                0x01, 0x01, 0x01, 0x01,
-                0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressSubTlv
-                0x01, 0x011, 0x01, 0x10,
-                (byte) 0xFF, 0x05, 0x00, 0x30, //NodeAttributesTlv
-                0x00, 0x0D, 0x00, 0x01, //NodeFlagBitsSubTlv
-                (byte) 0x90, 0x00, 0x00, 0x00,
-                0x00, 0x0E, 0x00, 0x04, //OpaqueNodePropertiesSubTlv
-                0x01, 0x011, 0x01, 0x10,
-                0x00, 0x0F, 0x00, 0x08, //NodeNameSubTlv
-                0x08, 0x00, 0x01, 0x09,
-                0x08, 0x00, 0x01, 0x09,
-                0x00, 0x10, 0x00, 0x08, //ISISAreaIdentifierSubTlv
-                0x20, 0x01, 0x22, 0x01,
-                0x20, 0x01, 0x22, 0x01,
-                0x00, 0x11, 0x00, 0x04, //IPv4RouterIdOfLocalNodeSubTlv
-                0x00, 0x01, 0x01, 0x02
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), LinkDescriptorsTLV(LinkLocalRemoteIdentifiersSubTlv
-     * IPv4InterfaceAddressSubTlv, IPv4NeighborAddressSubTlv), NodeAttributesTlv(OpaqueNodePropertiesSubTlv
-     * NodeNameSubTlv, ISISAreaIdentifierSubTlv, IPv4RouterIdOfLocalNodeSubTlv))
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest20() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, (byte) 0xBC, // common header
-                (byte) 0xE0, 0x10, 0x00, (byte) 0xB8, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x24, //RemoteNodeDescriptorsTLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x04, 0x00, 0x1C, //LinkDescriptorsTLV
-                0x00, 0x06, 0x00, 0x08, //LinkLocalRemoteIdentifiersSubTlv
-                0x01, 0x11, 0x00, 0x09,
-                0x01, 0x21, 0x00, 0x09,
-                0x00, 0x07, 0x00, 0x04, //IPv4InterfaceAddressSubTlv
-                0x01, 0x01, 0x01, 0x01,
-                0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressSubTlv
-                0x01, 0x011, 0x01, 0x10,
-                (byte) 0xFF, 0x05, 0x00, 0x28, //NodeAttributesTlv
-                0x00, 0x0E, 0x00, 0x04, //OpaqueNodePropertiesSubTlv
-                0x01, 0x011, 0x01, 0x10,
-                0x00, 0x0F, 0x00, 0x08, //NodeNameSubTlv
-                0x08, 0x00, 0x01, 0x09,
-                0x08, 0x00, 0x01, 0x09,
-                0x00, 0x10, 0x00, 0x08, //ISISAreaIdentifierSubTlv
-                0x20, 0x01, 0x22, 0x01,
-                0x20, 0x01, 0x22, 0x01,
-                0x00, 0x11, 0x00, 0x04, //IPv4RouterIdOfLocalNodeSubTlv
-                0x00, 0x01, 0x01, 0x02
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), LinkDescriptorsTLV(LinkLocalRemoteIdentifiersSubTlv.
-     * IPv4InterfaceAddressSubTlv, IPv4NeighborAddressSubTlv), NodeAttributesTlv(OpaqueNodePropertiesSubTlv
-     * ISISAreaIdentifierSubTlv, IPv4RouterIdOfLocalNodeSubTlv))
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest21() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, (byte) 0xB0, // common header
-                (byte) 0xE0, 0x10, 0x00, (byte) 0xAC, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x24, //RemoteNodeDescriptorsTLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x04, 0x00, 0x1C, //LinkDescriptorsTLV
-                0x00, 0x06, 0x00, 0x08, //LinkLocalRemoteIdentifiersSubTlv
-                0x01, 0x11, 0x00, 0x09,
-                0x01, 0x21, 0x00, 0x09,
-                0x00, 0x07, 0x00, 0x04, //IPv4InterfaceAddressSubTlv
-                0x01, 0x01, 0x01, 0x01,
-                0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressSubTlv
-                0x01, 0x011, 0x01, 0x10,
-                (byte) 0xFF, 0x05, 0x00, 0x1C, //NodeAttributesTlv
-                0x00, 0x0E, 0x00, 0x04, //OpaqueNodePropertiesSubTlv
-                0x01, 0x011, 0x01, 0x10,
-                0x00, 0x10, 0x00, 0x08, //ISISAreaIdentifierSubTlv
-                0x20, 0x01, 0x22, 0x01,
-                0x20, 0x01, 0x22, 0x01,
-                0x00, 0x11, 0x00, 0x04, //IPv4RouterIdOfLocalNodeSubTlv
-                0x00, 0x01, 0x01, 0x02
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv,
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv,
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), LinkDescriptorsTLV(LinkLocalRemoteIdentifiersSubTlv,
-     * IPv4InterfaceAddressSubTlv, IPv4NeighborAddressSubTlv), NodeAttributesTlv(NodeFlagBitsSubTlv,
-     * OpaqueNodePropertiesSubTlv, NodeNameSubTlv, ISISAreaIdentifierSubTlv, IPv4RouterIdOfLocalNodeSubTlv),
-     * LinkAttributesTlv(IPv4RouterIdOfRemoteNodeSubTlv, IPv6LSRouterIdofRemoteNodeTlv, AdministrativeGroupSubTlv,
-     * TEDefaultMetricSubTlv, MaximumLinkBandwidthSubTlv, MaximumReservableLinkBandwidthSubTlv,
-     * UnreservedBandwidthSubTlv, LinkProtectionTypeSubTlv, MPLSProtocolMaskSubTlv, IgpMetricSubTlv,
-     * SharedRiskLinkGroupSubTlv, OpaqueLinkAttributeSubTlv, LinkNameAttributeSubTlv)).
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest22() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x01, 0x18, // common header
-                (byte) 0xE0, 0x10, 0x01, 0x14, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x24, //RemoteNodeDescriptorsTLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x04, 0x00, 0x1C, //LinkDescriptorsTLV
-                0x00, 0x06, 0x00, 0x08, //LinkLocalRemoteIdentifiersSubTlv
-                0x01, 0x11, 0x00, 0x09,
-                0x01, 0x21, 0x00, 0x09,
-                0x00, 0x07, 0x00, 0x04, //IPv4InterfaceAddressSubTlv
-                0x01, 0x01, 0x01, 0x01,
-                0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressSubTlv
-                0x01, 0x011, 0x01, 0x10,
-                (byte) 0xFF, 0x05, 0x00, 0x1C, //NodeAttributesTlv
-                0x00, 0x0E, 0x00, 0x04, //OpaqueNodePropertiesSubTlv
-                0x01, 0x011, 0x01, 0x10,
-                0x00, 0x10, 0x00, 0x08, //ISISAreaIdentifierSubTlv
-                0x20, 0x01, 0x22, 0x01,
-                0x20, 0x01, 0x22, 0x01,
-                0x00, 0x11, 0x00, 0x04, //IPv4RouterIdOfLocalNodeSubTlv
-                0x00, 0x01, 0x01, 0x02,
-                (byte) 0xFF, 0x06, 0x00, 0x64, //LinkAttributesTlv
-                0x00, 0x13, 0x00, 0x04, //IPv4RouterIdOfRemoteNodeSubTlv
-                0x00, 0x07, 0x08, 0x00,
-                0x00, 0x16, 0x00, 0x04, //AdministrativeGroupSubTlv
-                0x00, 0x09, 0x08, 0x00,
-                0x00, 0x17, 0x00, 0x04, //MaximumLinkBandwidthSubTlv
-                0x00, 0x09, 0x00, 0x00,
-                0x00, 0x18, 0x00, 0x04, //MaximumReservableLinkBandwidthSubTlv
-                0x00, 0x10, 0x00, 0x00,
-                0x00, 0x19, 0x00, 0x04, //UnreservedBandwidthSubTlv
-                0x00, 0x00, (byte) 0x90, 0x00,
-                0x00, 0x1A, 0x00, 0x04, //TEDefaultMetricSubTlv
-                0x00, (byte) 0x99, 0x09, 0x00,
-                0x00, 0x1B, 0x00, 0x02, //LinkProtectionTypeSubTlv
-                0x09, 0x00, 0x00, 0x00,
-                0x00, 0x1C, 0x00, 0x01, //MPLSProtocolMaskSubTlv
-                (byte) 0x80, 0x00, 0x00, 0x00,
-                0x00, 0x1D, 0x00, 0x04, //IgpMetricSubTlv
-                0x09, (byte) 0x89, 0x07, 0x00,
-                0x00, 0x1E, 0x00, 0x04, //SharedRiskLinkGroupSubTlv
-                0x04, 0x47, 0x00, 0x03,
-                0x00, 0x1F, 0x00, 0x08, //OpaqueLinkAttributeSubTlv
-                0x04, 0x49, 0x00, 0x04,
-                0x04, 0x47, 0x00, 0x03,
-                0x00, 0x20, 0x00, 0x04, //LinkNameAttributeSubTlv
-                0x04, 0x47, 0x00, 0x03
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv,
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv,
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), LinkDescriptorsTLV(LinkLocalRemoteIdentifiersSubTlv,
-     * IPv4InterfaceAddressSubTlv, IPv4NeighborAddressSubTlv), NodeAttributesTlv(NodeFlagBitsSubTlv,
-     * OpaqueNodePropertiesSubTlv, NodeNameSubTlv, ISISAreaIdentifierSubTlv, IPv4RouterIdOfLocalNodeSubTlv),
-     * LinkAttributesTlv(IPv4RouterIdOfRemoteNodeSubTlv, IPv6LSRouterIdofRemoteNodeTlv, AdministrativeGroupSubTlv,
-     * MaximumLinkBandwidthSubTlv, MaximumReservableLinkBandwidthSubTlv, UnreservedBandwidthSubTlv,
-     * TEDefaultMetricSubTlv, LinkProtectionTypeSubTlv, MPLSProtocolMaskSubTlv, IgpMetricSubTlv,
-     * SharedRiskLinkGroupSubTlv, OpaqueLinkAttributeSubTlv))
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest23() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x01, 0x10, // common header
-                (byte) 0xE0, 0x10, 0x01, 0x0C, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x24, //RemoteNodeDescriptorsTLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x04, 0x00, 0x1C, //LinkDescriptorsTLV
-                0x00, 0x06, 0x00, 0x08, //LinkLocalRemoteIdentifiersSubTlv
-                0x01, 0x11, 0x00, 0x09,
-                0x01, 0x21, 0x00, 0x09,
-                0x00, 0x07, 0x00, 0x04, //IPv4InterfaceAddressSubTlv
-                0x01, 0x01, 0x01, 0x01,
-                0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressSubTlv
-                0x01, 0x011, 0x01, 0x10,
-                (byte) 0xFF, 0x05, 0x00, 0x1C, //NodeAttributesTlv
-                0x00, 0x0E, 0x00, 0x04, //OpaqueNodePropertiesSubTlv
-                0x01, 0x011, 0x01, 0x10,
-                0x00, 0x10, 0x00, 0x08, //ISISAreaIdentifierSubTlv
-                0x20, 0x01, 0x22, 0x01,
-                0x20, 0x01, 0x22, 0x01,
-                0x00, 0x11, 0x00, 0x04, //IPv4RouterIdOfLocalNodeSubTlv
-                0x00, 0x01, 0x01, 0x02,
-                (byte) 0xFF, 0x06, 0x00, 0x5C, //LinkAttributesTlv
-                0x00, 0x13, 0x00, 0x04, //IPv4RouterIdOfRemoteNodeSubTlv
-                0x00, 0x07, 0x08, 0x00,
-                0x00, 0x16, 0x00, 0x04, //AdministrativeGroupSubTlv
-                0x00, 0x09, 0x08, 0x00,
-                0x00, 0x17, 0x00, 0x04, //MaximumLinkBandwidthSubTlv
-                0x00, 0x09, 0x00, 0x00,
-                0x00, 0x18, 0x00, 0x04, //MaximumReservableLinkBandwidthSubTlv
-                0x00, 0x10, 0x00, 0x00,
-                0x00, 0x19, 0x00, 0x04, //UnreservedBandwidthSubTlv
-                0x00, 0x00, (byte) 0x90, 0x00,
-                0x00, 0x1A, 0x00, 0x04, //TEDefaultMetricSubTlv
-                0x00, (byte) 0x99, 0x09, 0x00,
-                0x00, 0x1B, 0x00, 0x02, //LinkProtectionTypeSubTlv
-                0x09, 0x00, 0x00, 0x00,
-                0x00, 0x1C, 0x00, 0x01, //MPLSProtocolMaskSubTlv
-                (byte) 0x80, 0x00, 0x00, 0x00,
-                0x00, 0x1D, 0x00, 0x04, //IgpMetricSubTlv
-                0x09, (byte) 0x89, 0x07, 0x00,
-                0x00, 0x1E, 0x00, 0x04, //SharedRiskLinkGroupSubTlv
-                0x04, 0x47, 0x00, 0x03,
-                0x00, 0x1F, 0x00, 0x08, //OpaqueLinkAttributeSubTlv
-                0x04, 0x49, 0x00, 0x04,
-                0x04, 0x47, 0x00, 0x03
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv,
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv,
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), LinkDescriptorsTLV(LinkLocalRemoteIdentifiersSubTlv,
-     * IPv4InterfaceAddressSubTlv, IPv4NeighborAddressSubTlv), NodeAttributesTlv(NodeFlagBitsSubTlv,
-     * OpaqueNodePropertiesSubTlv, NodeNameSubTlv, ISISAreaIdentifierSubTlv, IPv4RouterIdOfLocalNodeSubTlv),
-     * LinkAttributesTlv(IPv4RouterIdOfRemoteNodeSubTlv, IPv6LSRouterIdofRemoteNodeTlv, AdministrativeGroupSubTlv,
-     * MaximumLinkBandwidthSubTlv, MaximumReservableLinkBandwidthSubTlv, UnreservedBandwidthSubTlv,
-     * TEDefaultMetricSubTlv, LinkProtectionTypeSubTlv, MPLSProtocolMaskSubTlv, IgpMetricSubTlv,
-     * SharedRiskLinkGroupSubTlv)) in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest24() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x01, 0x08, // common header
-                (byte) 0xE0, 0x10, 0x01, 0x04, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x24, //RemoteNodeDescriptorsTLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x04, 0x00, 0x1C, //LinkDescriptorsTLV
-                0x00, 0x06, 0x00, 0x08, //LinkLocalRemoteIdentifiersSubTlv
-                0x01, 0x11, 0x00, 0x09,
-                0x01, 0x21, 0x00, 0x09,
-                0x00, 0x07, 0x00, 0x04, //IPv4InterfaceAddressSubTlv
-                0x01, 0x01, 0x01, 0x01,
-                0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressSubTlv
-                0x01, 0x011, 0x01, 0x10,
-                (byte) 0xFF, 0x05, 0x00, 0x1C, //NodeAttributesTlv
-                0x00, 0x0E, 0x00, 0x04, //OpaqueNodePropertiesSubTlv
-                0x01, 0x011, 0x01, 0x10,
-                0x00, 0x10, 0x00, 0x08, //ISISAreaIdentifierSubTlv
-                0x20, 0x01, 0x22, 0x01,
-                0x20, 0x01, 0x22, 0x01,
-                0x00, 0x11, 0x00, 0x04, //IPv4RouterIdOfLocalNodeSubTlv
-                0x00, 0x01, 0x01, 0x02,
-                (byte) 0xFF, 0x06, 0x00, 0x54, //LinkAttributesTlv
-                0x00, 0x13, 0x00, 0x04, //IPv4RouterIdOfRemoteNodeSubTlv
-                0x00, 0x07, 0x08, 0x00,
-                0x00, 0x16, 0x00, 0x04, //AdministrativeGroupSubTlv
-                0x00, 0x09, 0x08, 0x00,
-                0x00, 0x17, 0x00, 0x04, //MaximumLinkBandwidthSubTlv
-                0x00, 0x09, 0x00, 0x00,
-                0x00, 0x18, 0x00, 0x04, //MaximumReservableLinkBandwidthSubTlv
-                0x00, 0x10, 0x00, 0x00,
-                0x00, 0x19, 0x00, 0x04, //UnreservedBandwidthSubTlv
-                0x00, 0x00, (byte) 0x90, 0x00,
-                0x00, 0x1A, 0x00, 0x04, //TEDefaultMetricSubTlv
-                0x00, (byte) 0x99, 0x09, 0x00,
-                0x00, 0x1B, 0x00, 0x02, //LinkProtectionTypeSubTlv
-                0x09, 0x00, 0x00, 0x00,
-                0x00, 0x1C, 0x00, 0x01, //MPLSProtocolMaskSubTlv
-                (byte) 0x80, 0x00, 0x00, 0x00,
-                0x00, 0x1D, 0x00, 0x04, //IgpMetricSubTlv
-                0x09, (byte) 0x89, 0x07, 0x00,
-                0x00, 0x1E, 0x00, 0x08, //SharedRiskLinkGroupSubTlv
-                0x04, 0x47, 0x00, 0x03,
-                0x04, 0x47, 0x00, 0x03
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-
-    /**
-     * This test case checks for
-     * LS Object (Routing Universe TLV,Local Node Descriptors TLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv,
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), RemoteNodeDescriptorsTLV(AutonomousSystemSubTlv, BGPLSidentifierSubTlv,
-     * OSPFareaIDsubTlv, IgpRouterIdSubTlv), LinkDescriptorsTLV(LinkLocalRemoteIdentifiersSubTlv,
-     * IPv4InterfaceAddressSubTlv, IPv4NeighborAddressSubTlv), NodeAttributesTlv(NodeFlagBitsSubTlv,
-     * OpaqueNodePropertiesSubTlv, NodeNameSubTlv, ISISAreaIdentifierSubTlv, IPv4RouterIdOfLocalNodeSubTlv),
-     * LinkAttributesTlv(IPv4RouterIdOfRemoteNodeSubTlv, IPv6LSRouterIdofRemoteNodeTlv, AdministrativeGroupSubTlv,
-     * MaximumLinkBandwidthSubTlv, MaximumReservableLinkBandwidthSubTlv, UnreservedBandwidthSubTlv,
-     * TEDefaultMetricSubTlv, LinkProtectionTypeSubTlv, MPLSProtocolMaskSubTlv, IgpMetricSubTlv))
-     * in PcLSRpt message.
-     */
-    @Test
-    public void lsReportMessageTest25() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] lsReportMsg = new byte[]{0x20, (byte) 0xE0, 0x00, (byte) 0xFC, // common header
-                (byte) 0xE0, 0x10, 0x00, (byte) 0xF8, // LS Object Header
-                0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // LS-ID
-                (byte) 0xFF, 0x01, 0x00, 0x08, // Routing Universe TLV
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x01,
-                (byte) 0xFF, 0x02, 0x00, 0x24, // Local Node Descriptors TLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x03, 0x00, 0x24, //RemoteNodeDescriptorsTLV
-                0x00, 0x01, 0x00, 0x04, //AutonomousSystemSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x02, 0x00, 0x04, //BGPLSidentifierSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x03, 0x00, 0x04, //OSPFareaIDsubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x04, 0x00, 0x08, //IgpRouterIdSubTlv
-                0x00, 0x00, 0x00, 0x11,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xFF, 0x04, 0x00, 0x1C, //LinkDescriptorsTLV
-                0x00, 0x06, 0x00, 0x08, //LinkLocalRemoteIdentifiersSubTlv
-                0x01, 0x11, 0x00, 0x09,
-                0x01, 0x21, 0x00, 0x09,
-                0x00, 0x07, 0x00, 0x04, //IPv4InterfaceAddressSubTlv
-                0x01, 0x01, 0x01, 0x01,
-                0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressSubTlv
-                0x01, 0x011, 0x01, 0x10,
-                (byte) 0xFF, 0x05, 0x00, 0x1C, //NodeAttributesTlv
-                0x00, 0x0E, 0x00, 0x04, //OpaqueNodePropertiesSubTlv
-                0x01, 0x011, 0x01, 0x10,
-                0x00, 0x10, 0x00, 0x08, //ISISAreaIdentifierSubTlv
-                0x20, 0x01, 0x22, 0x01,
-                0x20, 0x01, 0x22, 0x01,
-                0x00, 0x11, 0x00, 0x04, //IPv4RouterIdOfLocalNodeSubTlv
-                0x00, 0x01, 0x01, 0x02,
-                (byte) 0xFF, 0x06, 0x00, 0x48, //LinkAttributesTlv
-                0x00, 0x13, 0x00, 0x04, //IPv4RouterIdOfRemoteNodeSubTlv
-                0x00, 0x07, 0x08, 0x00,
-                0x00, 0x16, 0x00, 0x04, //AdministrativeGroupSubTlv
-                0x00, 0x09, 0x08, 0x00,
-                0x00, 0x17, 0x00, 0x04, //MaximumLinkBandwidthSubTlv
-                0x00, 0x09, 0x00, 0x00,
-                0x00, 0x18, 0x00, 0x04, //MaximumReservableLinkBandwidthSubTlv
-                0x00, 0x10, 0x00, 0x00,
-                0x00, 0x19, 0x00, 0x04, //UnreservedBandwidthSubTlv
-                0x00, 0x00, (byte) 0x90, 0x00,
-                0x00, 0x1A, 0x00, 0x04, //TEDefaultMetricSubTlv
-                0x00, (byte) 0x99, 0x09, 0x00,
-                0x00, 0x1B, 0x00, 0x02, //LinkProtectionTypeSubTlv
-                0x09, 0x00, 0x00, 0x00,
-                0x00, 0x1C, 0x00, 0x01, //MPLSProtocolMaskSubTlv
-                (byte) 0x80, 0x00, 0x00, 0x00,
-                0x00, 0x1D, 0x00, 0x04, //IgpMetricSubTlv
-                0x09, (byte) 0x89, 0x07, 0x00
-        };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(lsReportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testReportMsg = {0};
-
-        assertThat(message, instanceOf(PcepLSReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(lsReportMsg));
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsgTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsgTest.java
deleted file mode 100644
index 6d5a7b3..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsgTest.java
+++ /dev/null
@@ -1,403 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.Test;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.Matchers.is;
-
-public class PcepLabelUpdateMsgTest {
-
-    /**
-     * This test case checks for
-     * <pce-label-download> SRP, LSP, LABEL Object.
-     * in PcepLabelUpdate message.
-     */
-    @Test
-    public void labelUpdateMessageTest1() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] labelUpdate = new byte[]{0x20, (byte) 0xE2, 0x00, 0x24, // common header
-                0x21, 0x10, 0x00, 0x0C, // SRP Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x10,
-                0x20, 0x10, 0x00, 0x08, // LSP Object Header
-                0x00, 0x01, 0x00, 0x00,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x10, 0x10, 0x00};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(labelUpdate);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testLabelUpdateMsg = {0};
-        assertThat(message, instanceOf(PcepLabelUpdateMsg.class));
-
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testLabelUpdateMsg = new byte[readLen];
-        buf.readBytes(testLabelUpdateMsg, 0, readLen);
-
-        assertThat(testLabelUpdateMsg, is(labelUpdate));
-    }
-
-    /**
-     * This test case checks for
-     * <pce-label-download> SRP, LSP, LABEL Object, LABEL Object.
-     * in PcepLabelUpdate message.
-     */
-    @Test
-    public void labelUpdateMessageTest2() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] labelUpdate = new byte[]{0x20, (byte) 0xE2, 0x00, 0x30, // common header
-                0x21, 0x10, 0x00, 0x0C, // SRP Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x10,
-                0x20, 0x10, 0x00, 0x08, // LSP Object Header
-                0x00, 0x01, 0x00, 0x00,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x44, 0x00, 0x00,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x79, 0x00, 0x00};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(labelUpdate);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testLabelUpdateMsg = {0};
-        assertThat(message, instanceOf(PcepLabelUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testLabelUpdateMsg = new byte[readLen];
-        buf.readBytes(testLabelUpdateMsg, 0, readLen);
-
-        assertThat(testLabelUpdateMsg, is(labelUpdate));
-    }
-
-    /**
-     * This test case checks for
-     * <pce-label-map> SRP, LABEL, FEC Object.
-     * in PcepLabelUpdate message.
-     */
-    @Test
-    public void labelUpdateMessageTest3() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] labelUpdate = new byte[]{0x20, (byte) 0xE2, 0x00, 0x24, // common header
-                0x21, 0x10, 0x00, 0x0C, // SRP Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x10,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x79, 0x00, 0x00,
-                (byte) 0xE2, 0x10, 0x00, 0x08, // FEC Object Header
-                0x0A, 0x0A, 0x0B, 0x0B};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(labelUpdate);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testLabelUpdateMsg = {0};
-        assertThat(message, instanceOf(PcepLabelUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testLabelUpdateMsg = new byte[readLen];
-        buf.readBytes(testLabelUpdateMsg, 0, readLen);
-
-        assertThat(testLabelUpdateMsg, is(labelUpdate));
-    }
-
-    /**
-     * This test case checks for
-     * <pce-label-download> SRP, LSP, LABEL, LABEL, <pce-label-download> SRP, LSP, LABEL
-     * in PcepLabelUpdate message.
-     */
-    @Test
-    public void labelUpdateMessageTest4() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] labelUpdate = new byte[]{0x20, (byte) 0xE2, 0x00, 0x50, // common header
-                0x21, 0x10, 0x00, 0x0C, // SRP Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x10,
-                0x20, 0x10, 0x00, 0x08, // LSP Object Header
-                0x00, 0x01, 0x00, 0x00,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x66, 0x00, 0x00,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x68, 0x00, 0x00,
-                0x21, 0x10, 0x00, 0x0C, // SRP Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x11,
-                0x20, 0x10, 0x00, 0x08, // LSP Object Header
-                0x00, 0x02, 0x00, 0x00,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x44, 0x00, 0x00};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(labelUpdate);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testLabelUpdateMsg = {0};
-        assertThat(message, instanceOf(PcepLabelUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testLabelUpdateMsg = new byte[readLen];
-        buf.readBytes(testLabelUpdateMsg, 0, readLen);
-
-        assertThat(testLabelUpdateMsg, is(labelUpdate));
-    }
-
-    /**
-     * This test case checks for
-     * <pce-label-map> SRP, LABEL, FEC, <pce-label-map> SRP, LABEL, FEC.
-     * in PcepLabelUpdate message.
-     */
-    @Test
-    public void labelUpdateMessageTest5() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] labelUpdate = new byte[]{0x20, (byte) 0xE2, 0x00, 0x44, // common header
-                0x21, 0x10, 0x00, 0x0C, // SRP Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x10,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x01,
-                0x00, 0x44, 0x00, 0x00,
-                (byte) 0xE2, 0x10, 0x00, 0x08, // FEC Object Header
-                0x0A, 0x0A, 0x0B, 0x0B,
-                0x21, 0x10, 0x00, 0x0C, // SRP Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x11,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x44, 0x00, 0x00,
-                (byte) 0xE2, 0x10, 0x00, 0x08, // FEC Object Header
-                0x0A, 0x0A, 0x0C, 0x0C};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(labelUpdate);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testLabelUpdateMsg = {0};
-        assertThat(message, instanceOf(PcepLabelUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testLabelUpdateMsg = new byte[readLen];
-        buf.readBytes(testLabelUpdateMsg, 0, readLen);
-
-        assertThat(testLabelUpdateMsg, is(labelUpdate));
-    }
-
-    /**
-     * This test case checks for
-     * <pce-label-download> SRP, LSP, LABEL, LABEL, <pce-label-download> SRP, LABEL, FEC.
-     * in PcepLabelUpdate message.
-     */
-    @Test
-    public void labelUpdateMessageTest6() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] labelUpdate = new byte[]{0x20, (byte) 0xE2, 0x00, 0x50, // common header
-                0x21, 0x10, 0x00, 0x0C, // SRP Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x10,
-                0x20, 0x10, 0x00, 0x08, // LSP Object Header
-                0x00, 0x01, 0x00, 0x00,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x44, 0x00, 0x00,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x44, 0x00, 0x00,
-                0x21, 0x10, 0x00, 0x0C, // SRP Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x12,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x44, 0x00, 0x00,
-                (byte) 0xE2, 0x10, 0x00, 0x08, // FEC Object Header
-                0x0A, 0x0A, 0x0D, 0x0D};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(labelUpdate);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testLabelUpdateMsg = {0};
-        assertThat(message, instanceOf(PcepLabelUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testLabelUpdateMsg = new byte[readLen];
-        buf.readBytes(testLabelUpdateMsg, 0, readLen);
-
-        assertThat(testLabelUpdateMsg, is(labelUpdate));
-    }
-
-    /**
-     * This test case checks for
-     * <pce-label-download> SRP, LABEL, FEC, <pce-label-download> SRP, LSP, LABEL, LABEL.
-     * in PcepLabelUpdate message.
-     */
-    @Test
-    public void labelUpdateMessageTest7() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] labelUpdate = new byte[]{0x20, (byte) 0xE2, 0x00, 0x50, // common header
-                0x21, 0x10, 0x00, 0x0C, // SRP Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x12,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x44, 0x00, 0x00,
-                (byte) 0xE2, 0x10, 0x00, 0x08, // FEC Object Header
-                0x0A, 0x0A, 0x0D, 0x0D,
-                0x21, 0x10, 0x00, 0x0C, // SRP Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x10,
-                0x20, 0x10, 0x00, 0x08, // LSP Object Header
-                0x00, 0x01, 0x00, 0x00,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x44, 0x00, 0x00,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x44, 0x00, 0x00};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(labelUpdate);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testLabelUpdateMsg = {0};
-        assertThat(message, instanceOf(PcepLabelUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testLabelUpdateMsg = new byte[readLen];
-        buf.readBytes(testLabelUpdateMsg, 0, readLen);
-
-        assertThat(testLabelUpdateMsg, is(labelUpdate));
-    }
-
-    /**
-     * This test case checks for
-     * <pce-label-download> SRP, LABEL, FEC, <pce-label-download> SRP, LSP, LABEL, LABEL.
-     * <pce-label-download> SRP, LSP, LABEL, LABEL.
-     * in PcepLabelUpdate message.
-     */
-    @Test
-    public void labelUpdateMessageTest8() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] labelUpdate = new byte[]{0x20, (byte) 0xE2, 0x00, 0x7C, // common header
-                0x21, 0x10, 0x00, 0x0C, // SRP Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x12,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x44, 0x00, 0x00,
-                (byte) 0xE2, 0x10, 0x00, 0x08, // FEC Object Header
-                0x0A, 0x0A, 0x0D, 0x0D,
-                0x21, 0x10, 0x00, 0x0C, // SRP Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x10,
-                0x20, 0x10, 0x00, 0x08, // LSP Object Header
-                0x00, 0x01, 0x00, 0x00,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x44, 0x00, 0x00,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x44, 0x00, 0x00,
-                0x21, 0x10, 0x00, 0x0C, // SRP Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x10,
-                0x20, 0x10, 0x00, 0x08, // LSP Object Header
-                0x00, 0x01, 0x00, 0x00,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x44, 0x00, 0x00,
-                (byte) 0xE1, 0x10, 0x00, 0x0C, // LABEL Object Header
-                0x00, 0x00, 0x00, 0x00,
-                0x00, 0x44, 0x00, 0x00};
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(labelUpdate);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        byte[] testLabelUpdateMsg = {0};
-
-        assertThat(message, instanceOf(PcepLabelUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testLabelUpdateMsg = new byte[readLen];
-        buf.readBytes(testLabelUpdateMsg, 0, readLen);
-
-        assertThat(testLabelUpdateMsg, is(labelUpdate));
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepOpenMsgTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepOpenMsgTest.java
deleted file mode 100644
index 4d370f5..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepOpenMsgTest.java
+++ /dev/null
@@ -1,594 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.Test;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.core.Is.is;
-/**
- * Test cases for PCEP OPEN Message.
- */
-public class PcepOpenMsgTest {
-
-    /**
-     * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV,
-     * PCECC-CAPABILITY-TLV in Pcep Open message.
-     */
-    @Test
-    public void openMessageTest1() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, 0x01, 0x10, 0x00, 0x20, 0x20, 0x1e, 0x78, (byte) 0xbd,
-                0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, //STATEFUL-PCE-CAPABILITY
-                0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, //GMPLS-CAPABILITY-TLV
-                (byte) 0xff, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, //PCECC-CAPABILITY-TLV
-        };
-
-        byte[] testOpenMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(openMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepOpenMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testOpenMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testOpenMsg = new byte[readLen];
-        buf.readBytes(testOpenMsg, 0, readLen);
-
-        assertThat(testOpenMsg, is(openMsg));
-
-    }
-
-    /**
-     * This test case checks open object with STATEFUL-PCE-CAPABILITY-TLV in Pcep Open message.
-     */
-    @Test
-    public void openMessageTest2() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x14, // common header
-                0x01, 0x10, 0x00, 0x10, // common object header
-                0x20, 0x1E, 0x78, 0x01, // OPEN object
-                0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f}; // STATEFUL-PCE-CAPABILITY
-        byte[] testOpenMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(openMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepOpenMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testOpenMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testOpenMsg = new byte[readLen];
-        buf.readBytes(testOpenMsg, 0, readLen);
-
-        assertThat(testOpenMsg, is(openMsg));
-
-    }
-
-    /**
-     * This test case checks open object with GmplsCapability tlv in Pcep Open message.
-     */
-    @Test
-    public void openMessageTest3() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x14, // common header
-                0x01, 0x10, 0x00, 0x10, // common object header
-                0x20, 0x1E, 0x78, 0x01, // OPEN object
-                0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00}; //GMPLS-CAPABILITY-TLV
-
-        byte[] testOpenMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(openMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepOpenMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testOpenMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testOpenMsg = new byte[readLen];
-        buf.readBytes(testOpenMsg, 0, readLen);
-
-
-        assertThat(testOpenMsg, is(openMsg));
-
-    }
-
-    /**
-     * This test case checks open object with StatefulLspDbVer Tlv in Pcep Open message.
-     */
-    @Test
-    public void openMessageTest4() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x18,
-                0x01, 0x10, 0x00, 0x14, 0x20, 0x1e, 0x78, 0x20,
-                0x00, 0x17, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }; //StatefulLspDbVerTlv
-
-        byte[] testOpenMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(openMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepOpenMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testOpenMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testOpenMsg = new byte[readLen];
-        buf.readBytes(testOpenMsg, 0, readLen);
-
-        assertThat(testOpenMsg, is(openMsg));
-
-    }
-
-    /**
-     * This test case checks open object with no tlv's in Pcep Open message.
-     */
-    @Test
-    public void openMessageTest5() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x0C,
-                0x01, 0x10, 0x00, 0x08, 0x20, 0x1e, 0x78, (byte) 0xbd }; // no Tlvs in open messsage
-
-        byte[] testOpenMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(openMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepOpenMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testOpenMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testOpenMsg = new byte[readLen];
-        buf.readBytes(testOpenMsg, 0, readLen);
-
-        assertThat(testOpenMsg, is(openMsg));
-
-    }
-
-    /**
-     * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, PCECC-CAPABILITY-TLV
-     * with I bit set in Pcep Open message.
-     */
-    @Test
-    public void openMessageTest6() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, 0x01, 0x11, 0x00, 0x20, //p bit not set & i bit set
-                0x20, 0x1e, 0x78, (byte) 0xbd,
-                0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, // STATEFUL-PCE-CAPABILITY
-                0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, //GMPLS-CAPABILITY-TLV
-                (byte) 0xff, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, //PCECC-CAPABILITY-TLV
-        };
-
-        byte[] testOpenMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(openMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepOpenMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testOpenMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testOpenMsg = new byte[readLen];
-        buf.readBytes(testOpenMsg, 0, readLen);
-
-        assertThat(testOpenMsg, is(openMsg));
-
-    }
-
-    /**
-     * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, PCECC-CAPABILITY-TLV
-     * with P bit set in Pcep Open message.
-     */
-    @Test
-    public void openMessageTest7() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, 0x01, 0x12, 0x00, 0x20, //p bit set & i bit not set
-                0x20, 0x1e, 0x78, (byte) 0xbd,
-                0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, //STATEFUL-PCE-CAPABILITY
-                0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, //GMPLS-CAPABILITY-TLV
-                (byte) 0xff, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, //PCECC-CAPABILITY-TLV
-        };
-
-        byte[] testOpenMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(openMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepOpenMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testOpenMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testOpenMsg = new byte[readLen];
-        buf.readBytes(testOpenMsg, 0, readLen);
-
-        assertThat(testOpenMsg, is(openMsg));
-
-    }
-
-    /**
-     * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, PCECC-CAPABILITY-TLV
-     * with P & I bits set in Pcep Open message.
-     */
-    @Test
-    public void openMessageTest8() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        /* OPEN OBJECT (STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, PCECC-CAPABILITY-TLV)
-        with p bit set & i bit set.
-         */
-        byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, 0x01, 0x13, 0x00, 0x20, //p bit set & i bit set
-                0x20, 0x1e, 0x78, (byte) 0xbd,
-                0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, //STATEFUL-PCE-CAPABILITY
-                0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, //GMPLS-CAPABILITY-TLV
-                (byte) 0xff, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, //PCECC-CAPABILITY-TLV
-        };
-
-        byte[] testOpenMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(openMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepOpenMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testOpenMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testOpenMsg = new byte[readLen];
-        buf.readBytes(testOpenMsg, 0, readLen);
-
-        assertThat(testOpenMsg, is(openMsg));
-
-    }
-
-    /**
-     * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, PCECC-CAPABILITY-TLV
-     * with P & I bits set and invalid session id in Pcep Open message.
-     */
-    @Test
-    public void openMessageTest9() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, 0x01, 0x13, 0x00, 0x20, //p bit set & i bit set
-                0x20, 0x1e, 0x78, 0x00, //invalid sessionID
-                0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, //STATEFUL-PCE-CAPABILITY
-                0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, //GMPLS-CAPABILITY-TLV
-                (byte) 0xff, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, //PCECC-CAPABILITY-TLV
-        };
-
-        byte[] testOpenMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(openMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepOpenMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testOpenMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testOpenMsg = new byte[readLen];
-        buf.readBytes(testOpenMsg, 0, readLen);
-
-
-        assertThat(testOpenMsg, is(openMsg));
-
-    }
-
-    /**
-     * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV
-     * in Pcep Open message.
-     */
-    @Test
-    public void openMessageTest10() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x1C, // common header
-                0x01, 0x10, 0x00, 0x18, // common object header
-                0x20, 0x05, 0x1E, 0x01, // OPEN object
-                0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY
-                0x00, 0x00, 0x00, 0x05,
-                0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV
-                0x00, 0x00, 0x00, 0x00};
-
-        byte[] testOpenMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(openMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepOpenMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testOpenMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testOpenMsg = new byte[readLen];
-        buf.readBytes(testOpenMsg, 0, readLen);
-
-        assertThat(testOpenMsg, is(openMsg));
-
-    }
-
-    /**
-     * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV,
-     * PCECC-CAPABILITY-TLV, TED Capability TLV in Pcep Open message.
-     */
-    @Test
-    public void openMessageTest11() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x2C, // common header
-                0x01, 0x10, 0x00, 0x28, // common object header
-                0x20, 0x05, 0x1E, 0x01, // OPEN object
-                0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY
-                0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV
-                0x00, 0x00, 0x00, 0x00, (byte) 0xff, 0x07, 0x00, 0x04, // PCECC-CAPABILITY-TLV
-                0x00, 0x00, 0x00, 0x03, (byte) 0xFF, (byte) 0x00, 0x00, 0x04, // LS Capability TLV
-                0x00, 0x00, 0x00, 0x00 };
-
-        byte[] testOpenMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(openMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepOpenMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testOpenMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testOpenMsg = new byte[readLen];
-        buf.readBytes(testOpenMsg, 0, readLen);
-
-        assertThat(testOpenMsg, is(openMsg));
-    }
-
-    /**
-     * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV,
-     * PCECC-CAPABILITY-TLV in Pcep Open message.
-     */
-    @Test
-    public void openMessageTest12() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, // common header
-                0x01, 0x10, 0x00, 0x20, // common object header
-                0x20, 0x05, 0x1E, 0x01, // OPEN object
-                0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY
-                0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV
-                0x00, 0x00, 0x00, 0x00, (byte) 0xff, 0x07, 0x00, 0x04, // PCECC-CAPABILITY-TLV
-                0x00, 0x00, 0x00, 0x03};
-
-        byte[] testOpenMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(openMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepOpenMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testOpenMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testOpenMsg = new byte[readLen];
-        buf.readBytes(testOpenMsg, 0, readLen);
-
-        assertThat(testOpenMsg, is(openMsg));
-
-    }
-
-    /**
-     * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV
-     * in Pcep Open message.
-     */
-    @Test
-    public void openMessageTest13() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x1c, // common header
-                0x01, 0x10, 0x00, 0x18, // common object header
-                0x20, 0x05, 0x1E, 0x01, // OPEN object
-                0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY
-                0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV
-                0x00, 0x00, 0x00, 0x00};
-
-        byte[] testOpenMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(openMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepOpenMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testOpenMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testOpenMsg = new byte[readLen];
-        buf.readBytes(testOpenMsg, 0, readLen);
-
-
-        assertThat(testOpenMsg, is(openMsg));
-
-    }
-
-    /**
-     * This test case checks open object with STATEFUL-PCE-CAPABILITY in Pcep Open message.
-     */
-    @Test
-    public void openMessageTest14() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x14, // common header
-                0x01, 0x10, 0x00, 0x10, // common object header
-                0x20, 0x05, 0x1E, 0x01, // OPEN object
-                0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY
-                0x00, 0x00, 0x00, 0x05};
-
-        byte[] testOpenMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(openMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepOpenMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testOpenMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testOpenMsg = new byte[readLen];
-        buf.readBytes(testOpenMsg, 0, readLen);
-
-        assertThat(testOpenMsg, is(openMsg));
-
-    }
-
-    /**
-     * This test case checks open object with no tlv Pcep Open message.
-     */
-    @Test
-    public void openMessageTest15() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x0c, // common header
-                0x01, 0x10, 0x00, 0x08, // common object header
-                0x20, 0x05, 0x1E, 0x01 // OPEN object
-        };
-
-        byte[] testOpenMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(openMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepOpenMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testOpenMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testOpenMsg = new byte[readLen];
-        buf.readBytes(testOpenMsg, 0, readLen);
-        assertThat(testOpenMsg, is(openMsg));
-
-    }
-
-    /**
-     * This test case checks open object with LSR id encoded.
-     */
-    @Test
-    public void openMessageTest16() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x18, // common header
-                0x01, 0x10, 0x00, 0x14, // common object header
-                0x20, 0x05, 0x1E, 0x01, // OPEN object
-                (byte) 0xFF, 0x05, 0x00, 0x08, // Node attribute TLV
-                0x00, 0x11, 0x00, 0x04,  // PCEP-LS-IPv4-ROUTER-ID sub tlv
-                0x02, 0x02, 0x02, 0x02
-        };
-
-        byte[] testOpenMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(openMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepOpenMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testOpenMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testOpenMsg = new byte[readLen];
-        buf.readBytes(testOpenMsg, 0, readLen);
-        assertThat(testOpenMsg, is(openMsg));
-
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgExtTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgExtTest.java
deleted file mode 100644
index 4a30700..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgExtTest.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.Test;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.core.Is.is;
-
-public class PcepReportMsgExtTest {
-
-    /**
-     * This test case checks forSRP Object,LSP Object(symbolic path tlv),ERO Object
-     * SRP Object,LSP Object(symbolic path tlv,ERO Object,LSPA Object,BandWidth Object,Metric-list,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest39() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x98,
-                0x21, 0x10, 0x00, 0x0C,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x01, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x21, 0x10, 0x00, 0x0C,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x01, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object
-     * SRP Object,LSP Object(symbolic path tlv),ERO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest40() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x64,
-                0x21, 0x10, 0x00, 0x0C,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x01, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x21, 0x10, 0x00, 0x0C,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x01, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object
-     * SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest41() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x8c,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object,BandWidth Object,
-     * Metric-list SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object,BandWidth Object,Metric-list,
-     * RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest42() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0xE8,
-                0x21, 0x10, 0x00, 0x0C,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x01, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, //ERO IPv4 subobjects
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, //RRO IPv4 subobjects
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * Tests PCRpt msg with Path-Setup-Type TLV as SR.
-     *
-     * @throws PcepParseException
-     * @throws PcepOutOfBoundMessageException
-     */
-    @Test
-    public void reportMessageTest43() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x3C,
-                0x21, 0x10, 0x00, 0x14,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x01, //SRP object
-                0x00, 0x1c, 0x00, 0x04, // PATH-SETUP-TYPE TLV
-                0x00, 0x00, 0x00, 0x01,
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, //ERO IPv4 subobjects
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                };
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * Tests PCRpt msg with Path-Setup-Type TLV as "without SR and without signalling".
-     *
-     * @throws PcepParseException
-     * @throws PcepOutOfBoundMessageException
-     */
-    @Test
-    public void reportMessageTest44() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x3C,
-                0x21, 0x10, 0x00, 0x14,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x01, //SRP object
-                0x00, 0x1c, 0x00, 0x04, // PATH-SETUP-TYPE TLV
-                0x00, 0x00, 0x00, 0x02,
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, //ERO IPv4 subobjects
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                };
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgTest.java
deleted file mode 100644
index bee2b06..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgTest.java
+++ /dev/null
@@ -1,1598 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.Test;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.core.Is.is;
-
-public class PcepReportMsgTest {
-
-    /**
-     * This test case checks for SRP object, LSP object(Symbolic path name tlv), ERO object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest1() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, 0x24,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x04}; //ERO Object
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object, LSP Object(StatefulIPv4LspIdentidiersTlv,SymbolicPathNameTlv
-     * StatefulLspErrorCodeTlv) ERO Object, LSPA Object, Metric-list, IRO object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest2() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x7c,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object // LSP Object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, // IPv4SubObjects
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, //Metric Object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-        };
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for LSP Object(StatefulIPv4LspIdentidiersTlv,SymbolicPathNameTlv,StatefulLspErrorCodeTlv)
-     * ERO Object, LSPA Object, Metric-list, IRO object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest3() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x70,
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object //LSP Object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, //Ipv4SubObjects
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, //Metric Objects
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-        };
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for LSP Object(StatefulIPv4LspIdentidiersTlv,SymbolicPathNameTlv,StatefulLspErrorCodeTlv)
-     * ERO Object, LSPA Object, Metric-list
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest4() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x64,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object //LSP Object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object, LSP Object(StatefulIPv4LspIdentidiersTlv,SymbolicPathNameTlv
-     * StatefulLspErrorCodeTlv) ERO Object, IRO object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest5() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x50,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object //LSP Object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object, LSP Object(StatefulIPv4LspIdentidiersTlv,SymbolicPathNameTlv
-     * StatefulLspErrorCodeTlv) ERO Object, LSPA Object, Metric-list.
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest6() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x6c,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x04, //ERO Object
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, //Metric object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-        };
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for LSP Object, ERO Object, LSPA Object, Metric-list, IRO object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest7() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x58,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, // Metric objects
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP object, LSP object( StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-     * StatefulLspErrorCodeTlv) ERO object, LSPA object, Metric object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest8() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x70,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric Object
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,
-     * StatefulLspErrorCodeTlv ),ERO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest9() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x44,
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object //LSP Object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object(StatefulIPv4LspIdentidiersTlv)ERO Object,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest10() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x74,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object(SymbolicPathNameTlv)ERO Object,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest11() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x68,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object, ERO Object,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest12() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x60,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object(StatefulLspErrorCodeTlv)ERO Object,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest13() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x68,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object(StatefulRsvpErrorSpecTlv),ERO Object,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest14() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x60,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object(symbolic path tlv),LSPA Object,ERO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest15() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x7C,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object(symbolic path tlv),BandWidth Object,ERO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest16() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x70,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object,ERO Object,LSPA Object,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest17() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x74,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object,ERO Object,BandWidth Object,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest18() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x68,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object,ERO Object,Metric-list,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest19() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x6C,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object,ERO Object,LSPA Object,BandWidth Object,Metric-list,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest20() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x88,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,
-     * StatefulLspErrorCodeTlv ) ERO Object,LSPA Object,BandWidth Object,Metric-list,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest21() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0xac,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv )
-     * ERO Object,LSPA Object,BandWidth Object,Metric-list,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest22() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0xA0,
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv )
-     * ERO Object,BandWidth Object,Metric-list,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest23() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x8c,
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv )
-     * ERO Object,Metric-list,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest24() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x84,
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv )
-     * ERO Object,LSPA Object,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest25() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x8c,
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv )
-     * ERO Object,LSPA Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest26() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x58,
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv)
-     * ERO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest27() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x44,
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv )
-     * LSPA Object,BandWidth Object,Metric-list,ERO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest28() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x6c,
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,Metric-list,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest29() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x74,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,Metric-list,RRO Object
-     * SRP Object,LSP Object(symbolic path tlv),ERO Object,Metric-list,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest30() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0xE4,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object
-     * BandWidth Object,Metric-list,RRO Object,SRP Object,LSP Object(symbolic path tlv)
-     * ERO Object,Metric-list,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest31() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x01, 0x00,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object
-     * BandWidth Object,Metric-list,RRO Object,SRP Object,LSP Object(symbolic path tlv)
-     * ERO Object,LSPA Object,Metric-list,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest32() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x01, (byte) 0x14,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for  SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object
-     * BandWidth Object,Metric-list,RRO Object,SRP Object,LSP Object(symbolic path tlv)
-     * ERO Object,LSPA Object,BandWidth Object,Metric-list,RRO Object
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest33() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x01, (byte) 0x1c,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-                0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06,
-                0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00};
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object(symbolic path Tlv),ERO Object,LSPA Object
-     * BandWidth Object,Metric-list,SRP Object,LSP Object(symbolic path tlv)
-     * ERO Object,LSPA Object,BandWidth Object,Metric-list
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest34() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0xB4,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x04, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric Object
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-
-    /**
-     * This test case checks for SRP Object,LSP Object)Symbolic path tlv),ERO Object,SRP Object
-     * LSP Object(symbolic path tlv) ERO Object,LSPA Object, BandWidth Object,Metric-list
-     * in PcRpt message.
-     */
-    @Test
-    public void reportMessageTest35() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x8C,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, //ERO Object
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00,
-                0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, //LSPA Object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric Object
-
-        byte[] testReportMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepReportMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-
-        int readLen = buf.writerIndex();
-        testReportMsg = new byte[readLen];
-        buf.readBytes(testReportMsg, 0, readLen);
-
-        assertThat(testReportMsg, is(reportMsg));
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgExtTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgExtTest.java
deleted file mode 100644
index a8003ca..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgExtTest.java
+++ /dev/null
@@ -1,1270 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.Test;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.core.Is.is;
-
-/**
- *  Test cases for PCEP update message.
- */
-public class PcepUpdateMsgExtTest {
-
-    /**
-     * This test case is for SRP object(symbolic path tlv), LSP object(StatefulLspDbVerTlv), ERO object,
-     * Metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest1() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x8c,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(StatefulIPv4LspIdentidiersTlv), ERO object,
-     * LSPA, Bandwidth object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest2() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x68,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSP object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object, ERO object, LSPA, bandwidth object
-     * Metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest3() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(StatefulLspErrorCodeTlv), ERO object,bandwidth object
-     * Metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest4() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(StatefulLspDbVerTlv), ERO object,bandwidth object
-     * Metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest5() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x60,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(SymbolicPathNameTlv), ERO object, LSPA, bandwidth object
-     * Metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest6() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object(SymbolicPathNameTlv), LSP object(SymbolicPathNameTlv), ERO object,
-     * bandwidth object Metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest7() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x64,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(StatefulIPv4LspIdentidiersTlv), ERO object,LSPA
-     * bandwidth object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest8() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(StatefulRsvpErrorSpecTlv), ERO object,LSPA
-     * bandwidth object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest9() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x58,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x18, 0x00, 0x00, 0x10, 0x03,
-                0x00, 0x15, 0x00, 0x0c, //StatefulRsvpErrorSpecTlv
-                0x00, 0x0c, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x05,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(StatefulRsvpErrorSpecTlv), ERO object,LSPA
-     * bandwidth object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest10() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x50,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPa object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(StatefulLspDbVerTlv), ERO object,LSPA
-     * bandwidth object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest11() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(SymbolicPathNameTlv), ERO object,LSPA
-     * bandwidth object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest12() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x50,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object(SymbolicPathNameTlv), LSP object(SymbolicPathNameTlv), ERO object,LSPA
-     * bandwidth object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest13() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x58,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(StatefulIPv4LspIdentidiersTlv), ERO object,LSPA
-     * metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest14() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x60,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object, ERO object,LSPA
-     * metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest15() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x4c,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //lspa object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(StatefulLspErrorCodeTlv), ERO object,LSPA
-     * metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest16() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(StatefulLspDbVerTlv), ERO object,LSPA
-     * metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest17() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x58,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(SymbolicPathNameTlv), ERO object,LSPA
-     * metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest18() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object(SymbolicPathNameTlv), LSP object(SymbolicPathNameTlv), ERO object,
-     * metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest19() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00,
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(StatefulIPv4LspIdentidiersTlv), ERO object,
-     * Bandwidth , metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest20() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object, ERO object,
-     * Bandwidth , metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest21() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x40,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(StatefulLspErrorCodeTlv), ERO object,
-     * Bandwidth , metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest22() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(StatefulLspDbVerTlv), ERO object,
-     * Bandwidth , metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest23() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x4c,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(SymbolicPathNameTlv), ERO object,
-     * Bandwidth , metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest24() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object(SymbolicPathNameTlv), LSP object(SymbolicPathNameTlv), ERO object,
-     * Bandwidth , metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest25() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x50,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(StatefulIPv4LspIdentidiersTlv), ERO object,
-     * LSPA object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest26() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00 };
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object, ERO object,
-     * bandwidth object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest27() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x34,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object, LSP object(StatefulLspErrorCodeTlv), ERO object,
-     * metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest28() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x40,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object(SymbolicPathNameTlv), LSP object(StatefulLspErrorCodeTlv), ERO object,
-     * lspa object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest29() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00 };
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object(SymbolicPathNameTlv), LSP object(StatefulLspErrorCodeTlv), ERO object,
-     * bandwidth object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest30() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object(SymbolicPathNameTlv), LSP object(StatefulLspErrorCodeTlv), ERO object,
-     * metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest31() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x4c,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case is for SRP object(symbolic path tlv), LSP object(StatefulLspDbVerTlv), ERO object,
-     * Metric object in PcepUpdate message.
-     */
-    @Test
-    public void pcepUpdateMsgTest32() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x64,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-}
-
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgTest.java
deleted file mode 100644
index 46f6fa0..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgTest.java
+++ /dev/null
@@ -1,1424 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.protocol;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.Test;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.core.Is.is;
-
-public class PcepUpdateMsgTest {
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), ERO in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest1() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x30,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, (byte) 0xb6, 0x02, 0x4e, 0x1f, //StatefulIPv4LspIdentidiersTlv
-                0x00, 0x01, (byte) 0x80, 0x01, (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x07, 0x10, 0x00, 0x04 }; //ERO object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP(SymbolicPathNameTlv), LSP (StatefulIPv4LspIdentidiersTlv,
-     * SymbolicPathNameTlv, StatefulLspErrorCodeTlv), ERO, LSPA, Metric-list in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest2() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x94,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object // lsp object
-                0x00, 0x12, 0x00, 0x10, (byte) 0xb6, 0x02, 0x4e, 0x1f, //StatefulIPv4LspIdentidiersTlv
-                0x00, 0x01, (byte) 0x80, 0x01, (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x24, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01,
-                0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, 0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv),
-     * ERO objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest3() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x38,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x07, 0x10, 0x00, 0x04 }; //ERO object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv,
-     * SymbolicPathNameTlv), ERO objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest4() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x40,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x04 }; //ERO object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv,
-     * SymbolicPathNameTlv), ERO objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest5() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x40,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x04 }; //ERO object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-     * StatefulLspErrorCodeTlv), ERO objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest6() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x04 };
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-     * StatefulLspErrorCodeTlv), ERO objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest7() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x04}; //ERO object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-     * StatefulLspErrorCodeTlv), ERO (IPv4SubObject) objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest8() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x50,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x0c, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00 };
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-     * StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject) objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest9() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x58,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00 };
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-     * StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject), LSPA objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest10() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x6c,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00 };
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-     * StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject),LSPA, Metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest11() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x78,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-     * StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject),LSPA, metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest12() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x70,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-     * StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject),LSPA, metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest13() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x70,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv),
-     * ERO (IPv4SubObject, IPv4SubObject),LSPA, metric Object objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest14() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x68,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv),
-     * ERO (IPv4SubObject, IPv4SubObject),LSPA, metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest15() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x68,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv),
-     * ERO (IPv4SubObject, IPv4SubObject),LSPA, metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest16() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x60,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv),
-     * ERO (IPv4SubObject, IPv4SubObject),LSPA objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest17() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x05, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00 };
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv),
-     * ERO (IPv4SubObject, IPv4SubObject),Metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest18() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x4c,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv),
-     * ERO (IPv4SubObject, IPv4SubObject),Metric-list objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest19() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x58,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-     * StatefulLspErrorCodeTlv),ERO (IPv4SubObject, IPv4SubObject),LSPA, Bandwidth, Metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest20() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x80,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv),
-     * ERO (IPv4SubObject, IPv4SubObject), Bandwidth objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest21() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv),
-     * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest22() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5C,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv),
-     * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest23() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x68,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv)
-     * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest24() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x70,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv)
-     * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest25() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x70,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-     * StatefulLspErrorCodeTlv) ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth,
-     * Metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest26() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x78,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv,
-     * StatefulLspErrorCodeTlv) ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth,
-     * Metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest27() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x78,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv,
-     * SymbolicPathNameTlv, StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject),
-     * LSPA, Bandwidth, Metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest28() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x80,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv),
-     * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest29() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x68,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01,
-                (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20,
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP,
-     * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest30() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (StatefulLspErrorCodeTlv),
-     * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest31() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP,
-     * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest32() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x8, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv),
-     * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest33() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c,
-                0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-
-    /**
-     * This test case checks for SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv),
-     * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message.
-     */
-    @Test
-    public void pcepUpdateMsgTest34() throws PcepParseException, PcepOutOfBoundMessageException {
-
-        byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x64,
-                0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02,  0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv
-                0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object
-                0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01,
-                0x01, 0x01, 0x04, 0x00,
-                0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00,
-                0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object
-                0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object
-
-        byte[] testupdateMsg = {0};
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(updateMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = null;
-
-        message = reader.readFrom(buffer);
-
-        assertThat(message, instanceOf(PcepUpdateMsg.class));
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        message.writeTo(buf);
-        testupdateMsg = buf.array();
-
-        int readLen = buf.writerIndex() - 0;
-        testupdateMsg = new byte[readLen];
-        buf.readBytes(testupdateMsg, 0, readLen);
-
-        assertThat(testupdateMsg, is(updateMsg));
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AdministrativeGroupSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AdministrativeGroupSubTlvTest.java
deleted file mode 100644
index ab30bd4..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AdministrativeGroupSubTlvTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the AdministrativeGroupSubTlv.
- */
-public class AdministrativeGroupSubTlvTest {
-    private final AdministrativeGroupSubTlv tlv1 = AdministrativeGroupSubTlv.of(1);
-    private final AdministrativeGroupSubTlv sameAsTlv1 = AdministrativeGroupSubTlv.of(1);
-    private final AdministrativeGroupSubTlv tlv2 = AdministrativeGroupSubTlv.of(2);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AutonomousSystemNumberSubObjectTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AutonomousSystemNumberSubObjectTest.java
deleted file mode 100644
index d14ffcf..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AutonomousSystemNumberSubObjectTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the AutonomousSystemNumberSubObject.
- */
-public class AutonomousSystemNumberSubObjectTest {
-
-    private final AutonomousSystemNumberSubObject subObj1 = AutonomousSystemNumberSubObject.of((short) 2);
-    private final AutonomousSystemNumberSubObject sameAsSubObj1 = AutonomousSystemNumberSubObject.of((short) 2);
-    private final AutonomousSystemNumberSubObject subObj2 = AutonomousSystemNumberSubObject.of((short) 3);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(subObj1, sameAsSubObj1)
-        .addEqualityGroup(subObj2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AutonomousSystemSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AutonomousSystemSubTlvTest.java
deleted file mode 100644
index 26ac3fc..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AutonomousSystemSubTlvTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the AutonomousSystemSubTlv.
- */
-public class AutonomousSystemSubTlvTest {
-    private final AutonomousSystemSubTlv tlv1 = AutonomousSystemSubTlv.of(1);
-    private final AutonomousSystemSubTlv sameAsTlv1 = AutonomousSystemSubTlv.of(1);
-    private final AutonomousSystemSubTlv tlv2 = AutonomousSystemSubTlv.of(2);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/BgpLsIdentifierSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/BgpLsIdentifierSubTlvTest.java
deleted file mode 100644
index 24f9dda..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/BgpLsIdentifierSubTlvTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the BgpLsIdentifierSubTlv.
- */
-public class BgpLsIdentifierSubTlvTest {
-    private final BgpLsIdentifierSubTlv tlv1 = BgpLsIdentifierSubTlv.of(1);
-    private final BgpLsIdentifierSubTlv sameAsTlv1 = BgpLsIdentifierSubTlv.of(1);
-    private final BgpLsIdentifierSubTlv tlv2 = BgpLsIdentifierSubTlv.of(2);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/GmplsCapabilityTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/GmplsCapabilityTlvTest.java
deleted file mode 100644
index 5db8436..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/GmplsCapabilityTlvTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the GmplsCapabilityTlv.
- */
-public class GmplsCapabilityTlvTest {
-    private final GmplsCapabilityTlv tlv1 = GmplsCapabilityTlv.of(1);
-    private final GmplsCapabilityTlv sameAsTlv1 = GmplsCapabilityTlv.of(1);
-    private final GmplsCapabilityTlv tlv2 = GmplsCapabilityTlv.of(2);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4InterfaceAddressSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4InterfaceAddressSubTlvTest.java
deleted file mode 100644
index fa3faf3..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4InterfaceAddressSubTlvTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the IPv4InterfaceAddressSubTlv.
- */
-public class IPv4InterfaceAddressSubTlvTest {
-
-    private final IPv4InterfaceAddressSubTlv tlv1 = IPv4InterfaceAddressSubTlv.of(2);
-    private final IPv4InterfaceAddressSubTlv sameAsTlv1 = IPv4InterfaceAddressSubTlv.of(2);
-    private final IPv4InterfaceAddressSubTlv tlv2 = IPv4InterfaceAddressSubTlv.of(3);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4NeighborAddressSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4NeighborAddressSubTlvTest.java
deleted file mode 100644
index 70a5851..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4NeighborAddressSubTlvTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the IPv4NeighborAddressSubTlv.
- */
-public class IPv4NeighborAddressSubTlvTest {
-
-    private final IPv4NeighborAddressSubTlv tlv1 = IPv4NeighborAddressSubTlv.of(2);
-    private final IPv4NeighborAddressSubTlv sameAsTlv1 = IPv4NeighborAddressSubTlv.of(2);
-    private final IPv4NeighborAddressSubTlv tlv2 = IPv4NeighborAddressSubTlv.of(3);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4RouterIdOfLocalNodeSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4RouterIdOfLocalNodeSubTlvTest.java
deleted file mode 100644
index ab926d4..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4RouterIdOfLocalNodeSubTlvTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the IPv4RouterIdOfLocalNodeSubTlv.
- */
-public class IPv4RouterIdOfLocalNodeSubTlvTest {
-
-    private final IPv4RouterIdOfLocalNodeSubTlv tlv1 = IPv4RouterIdOfLocalNodeSubTlv.of(2);
-    private final IPv4RouterIdOfLocalNodeSubTlv sameAsTlv1 = IPv4RouterIdOfLocalNodeSubTlv.of(2);
-    private final IPv4RouterIdOfLocalNodeSubTlv tlv2 = IPv4RouterIdOfLocalNodeSubTlv.of(3);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4RouterIdOfRemoteNodeSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4RouterIdOfRemoteNodeSubTlvTest.java
deleted file mode 100644
index 8d65470..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4RouterIdOfRemoteNodeSubTlvTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the IPv4RouterIdOfRemoteNodeSubTlv.
- */
-public class IPv4RouterIdOfRemoteNodeSubTlvTest {
-
-    private final IPv4RouterIdOfRemoteNodeSubTlv tlv1 = IPv4RouterIdOfRemoteNodeSubTlv.of(2);
-    private final IPv4RouterIdOfRemoteNodeSubTlv sameAsTlv1 = IPv4RouterIdOfRemoteNodeSubTlv.of(2);
-    private final IPv4RouterIdOfRemoteNodeSubTlv tlv2 = IPv4RouterIdOfRemoteNodeSubTlv.of(3);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4SubObjectTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4SubObjectTest.java
deleted file mode 100644
index 8dce2fe..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4SubObjectTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the IPv4SubObject.
- */
-public class IPv4SubObjectTest {
-
-    private final IPv4SubObject subObj1 = IPv4SubObject.of(2, (byte) 16, (byte) 0);
-    private final IPv4SubObject sameAsSubObj1 = IPv4SubObject.of(2, (byte) 16, (byte) 0);
-    private final IPv4SubObject subObj2 = IPv4SubObject.of(3, (byte) 16, (byte) 0);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(subObj1, sameAsSubObj1)
-        .addEqualityGroup(subObj2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6InterfaceAddressSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6InterfaceAddressSubTlvTest.java
deleted file mode 100644
index f8929a1..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6InterfaceAddressSubTlvTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the IPv6InterfaceAddressSubTlv.
- */
-public class IPv6InterfaceAddressSubTlvTest {
-
-    private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
-            (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00};
-    private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
-            (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x01};
-
-    private final IPv6InterfaceAddressSubTlv tlv1 = IPv6InterfaceAddressSubTlv.of(b1);
-    private final IPv6InterfaceAddressSubTlv sameAsTlv1 = IPv6InterfaceAddressSubTlv.of(b1);
-    private final IPv6InterfaceAddressSubTlv tlv2 = IPv6InterfaceAddressSubTlv.of(b2);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6NeighborAddressSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6NeighborAddressSubTlvTest.java
deleted file mode 100644
index fd7f5c3..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6NeighborAddressSubTlvTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the IPv6NeighborAddressSubTlv.
- */
-public class IPv6NeighborAddressSubTlvTest {
-
-    private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
-            (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00};
-    private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
-            (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x01};
-
-    private final IPv6NeighborAddressSubTlv tlv1 = IPv6NeighborAddressSubTlv.of(b1);
-    private final IPv6NeighborAddressSubTlv sameAsTlv1 = IPv6NeighborAddressSubTlv.of(b1);
-    private final IPv6NeighborAddressSubTlv tlv2 = IPv6NeighborAddressSubTlv.of(b2);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6RouterIdofLocalNodeSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6RouterIdofLocalNodeSubTlvTest.java
deleted file mode 100644
index be75537..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6RouterIdofLocalNodeSubTlvTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the IPv6RouterIdofLocalNodeSubTlv.
- */
-public class IPv6RouterIdofLocalNodeSubTlvTest {
-
-    private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
-            (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00};
-    private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
-            (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x00 };
-
-    private final IPv6RouterIdofLocalNodeSubTlv tlv1 = IPv6RouterIdofLocalNodeSubTlv.of(b1);
-    private final IPv6RouterIdofLocalNodeSubTlv sameAsTlv1 = IPv6RouterIdofLocalNodeSubTlv.of(b1);
-    private final IPv6RouterIdofLocalNodeSubTlv tlv2 = IPv6RouterIdofLocalNodeSubTlv.of(b2);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6RouterIdofRemoteNodeSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6RouterIdofRemoteNodeSubTlvTest.java
deleted file mode 100644
index 9b4c916..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6RouterIdofRemoteNodeSubTlvTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the IPv6RouterIdofRemoteNodeSubTlv.
- */
-public class IPv6RouterIdofRemoteNodeSubTlvTest {
-
-    private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
-            (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00};
-    private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
-            (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x00 };
-
-    private final IPv6RouterIdofRemoteNodeSubTlv tlv1 = IPv6RouterIdofRemoteNodeSubTlv.of(b1);
-    private final IPv6RouterIdofRemoteNodeSubTlv sameAsTlv1 = IPv6RouterIdofRemoteNodeSubTlv.of(b1);
-    private final IPv6RouterIdofRemoteNodeSubTlv tlv2 = IPv6RouterIdofRemoteNodeSubTlv.of(b2);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6SubObjectTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6SubObjectTest.java
deleted file mode 100644
index 1b6cf87..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6SubObjectTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the IPv6SubObject.
- */
-public class IPv6SubObjectTest {
-
-    private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
-            (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00};
-    private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
-            (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x00 };
-
-    private final IPv6SubObject subObj1 = IPv6SubObject.of(b1);
-    private final IPv6SubObject sameAsSubObj1 = IPv6SubObject.of(b1);
-    private final IPv6SubObject subObj2 = IPv6SubObject.of(b2);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(subObj1, sameAsSubObj1).addEqualityGroup(subObj2).testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IgpMetricSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IgpMetricSubTlvTest.java
deleted file mode 100644
index dd373c6..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IgpMetricSubTlvTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the IgpMetricSubTlv.
- */
-public class IgpMetricSubTlvTest {
-    private final byte[] b1 = new byte[] {0x01, 0x02};
-    private final byte[] b2 = new byte[] {0x01, 0x03};
-    private final IgpMetricSubTlv tlv1 = IgpMetricSubTlv.of(b1, (short) 2);
-    private final IgpMetricSubTlv sameAsTlv1 = IgpMetricSubTlv.of(b1, (short) 2);
-    private final IgpMetricSubTlv tlv2 = IgpMetricSubTlv.of(b2, (short) 2);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IgpRouterIdSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IgpRouterIdSubTlvTest.java
deleted file mode 100644
index ceaf66f..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IgpRouterIdSubTlvTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test case for IgpRouterIdSubTlv.
- */
-public class IgpRouterIdSubTlvTest {
-
-    private final byte[] value1 = {1, 2 };
-    private final Short length1 = 2;
-    private final IgpRouterIdSubTlv tlv1 = IgpRouterIdSubTlv.of(value1, length1);
-
-    private final Short length2 = 2;
-    private final IgpRouterIdSubTlv tlv2 = IgpRouterIdSubTlv.of(value1, length2);
-
-    private final byte[] value3 = {1, 2, 3 };
-    private final Short length3 = 3;
-    private final IgpRouterIdSubTlv tlv3 = IgpRouterIdSubTlv.of(value3, length3);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals();
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IsisAreaIdentifierSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IsisAreaIdentifierSubTlvTest.java
deleted file mode 100644
index 586dbf7..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IsisAreaIdentifierSubTlvTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the IsisAreaIdentifierSubTlv.
- */
-public class IsisAreaIdentifierSubTlvTest {
-
-    private final byte[] b1 = new byte[] {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
-    private final byte[] b2 = new byte[] {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };
-
-    private final IsisAreaIdentifierSubTlv tlv1 = IsisAreaIdentifierSubTlv.of(b1, (short) 20);
-    private final IsisAreaIdentifierSubTlv sameAsTlv1 = IsisAreaIdentifierSubTlv.of(b1, (short) 20);
-    private final IsisAreaIdentifierSubTlv tlv2 = IsisAreaIdentifierSubTlv.of(b2, (short) 20);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LabelSubObjectTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LabelSubObjectTest.java
deleted file mode 100644
index 940f7b0..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LabelSubObjectTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the LabelSubObject.
- */
-public class LabelSubObjectTest {
-
-    private final LabelSubObject subObj1 = LabelSubObject.of((byte) 0, (byte) 1, 20);
-    private final LabelSubObject sameAsSubObj1 = LabelSubObject.of((byte) 0, (byte) 1, 20);
-    private final LabelSubObject subObj2 = LabelSubObject.of((byte) 0, (byte) 1, 30);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(subObj1, sameAsSubObj1)
-        .addEqualityGroup(subObj2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkAttributesTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkAttributesTlvTest.java
deleted file mode 100644
index 78011c8..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkAttributesTlvTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Test case for TE Link Attribute Tlv.
- */
-public class LinkAttributesTlvTest {
-
-    private final AdministrativeGroupSubTlv administrativeGroupTlv1 = new AdministrativeGroupSubTlv(10);
-    private final MaximumReservableLinkBandwidthSubTlv maximumReservableLinkBandwidthTlv1 =
-            new MaximumReservableLinkBandwidthSubTlv(20);
-
-    private final AdministrativeGroupSubTlv administrativeGroupTlv2 = new AdministrativeGroupSubTlv(20);
-    private final MaximumReservableLinkBandwidthSubTlv maximumReservableLinkBandwidthTlv2 =
-            new MaximumReservableLinkBandwidthSubTlv(30);
-
-    private final List<PcepValueType> llLinkAttributesSubTLV1 = new LinkedList<>();
-    private final boolean a = llLinkAttributesSubTLV1.add(administrativeGroupTlv1);
-    private final boolean b = llLinkAttributesSubTLV1.add(maximumReservableLinkBandwidthTlv1);
-
-    private final List<PcepValueType> llLinkAttributesSubTLV2 = new LinkedList<>();
-
-    private final boolean c = llLinkAttributesSubTLV2.add(administrativeGroupTlv2);
-    private final boolean d = llLinkAttributesSubTLV2.add(maximumReservableLinkBandwidthTlv2);
-
-    private final LinkAttributesTlv tlv1 = LinkAttributesTlv.of(llLinkAttributesSubTLV1);
-    private final LinkAttributesTlv sameAsTlv1 = LinkAttributesTlv.of(llLinkAttributesSubTLV1);
-    private final LinkAttributesTlv tlv2 = LinkAttributesTlv.of(llLinkAttributesSubTLV2);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals();
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkDescriptorsTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkDescriptorsTlvTest.java
deleted file mode 100644
index 11e5393..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkDescriptorsTlvTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Test case for TE link descriptors Tlv.
- */
-public class LinkDescriptorsTlvTest {
-    private final LinkLocalRemoteIdentifiersSubTlv linkLocalRemoteIdentifiersTlv1 = new
-            LinkLocalRemoteIdentifiersSubTlv(10, 10);
-    private final IPv4InterfaceAddressSubTlv iPv4InterfaceAddressTlv1 = new IPv4InterfaceAddressSubTlv(0x01010101);
-
-    private final LinkLocalRemoteIdentifiersSubTlv linkLocalRemoteIdentifiersTlv2 = new
-            LinkLocalRemoteIdentifiersSubTlv(20, 20);
-    private final IPv4InterfaceAddressSubTlv iPv4InterfaceAddressTlv2 = new IPv4InterfaceAddressSubTlv(0x02020202);
-
-    private final List<PcepValueType> llLinkDescriptorsSubTLVs1 = new LinkedList<>();
-    private final boolean a = llLinkDescriptorsSubTLVs1.add(linkLocalRemoteIdentifiersTlv1);
-    private final boolean b = llLinkDescriptorsSubTLVs1.add(iPv4InterfaceAddressTlv1);
-
-    private final List<PcepValueType> llLinkDescriptorsSubTLVs2 = new LinkedList<>();
-    private final boolean c = llLinkDescriptorsSubTLVs2.add(linkLocalRemoteIdentifiersTlv2);
-    private final boolean d = llLinkDescriptorsSubTLVs2.add(iPv4InterfaceAddressTlv2);
-
-    private final LinkDescriptorsTlv tlv1 = LinkDescriptorsTlv.of(llLinkDescriptorsSubTLVs1);
-    private final LinkDescriptorsTlv sameAstlv1 = LinkDescriptorsTlv.of(llLinkDescriptorsSubTLVs1);
-    private final LinkDescriptorsTlv tlv2 = LinkDescriptorsTlv.of(llLinkDescriptorsSubTLVs2);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, sameAstlv1).addEqualityGroup(tlv2).testEquals();
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersSubTlvTest.java
deleted file mode 100644
index febdf30..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersSubTlvTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the LinkLocalRemoteIdentifiersSubTlv.
- */
-public class LinkLocalRemoteIdentifiersSubTlvTest {
-
-    private final LinkLocalRemoteIdentifiersSubTlv tlv1 = LinkLocalRemoteIdentifiersSubTlv.of(10, 20);
-    private final LinkLocalRemoteIdentifiersSubTlv sameAsTlv1 = LinkLocalRemoteIdentifiersSubTlv.of(10, 20);
-    private final LinkLocalRemoteIdentifiersSubTlv tlv2 = LinkLocalRemoteIdentifiersSubTlv.of(20, 30);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkNameAttributeSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkNameAttributeSubTlvTest.java
deleted file mode 100644
index ffca22d..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkNameAttributeSubTlvTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Equality test for LinkNameAttributeSubTlv.
- */
-public class LinkNameAttributeSubTlvTest {
-    private final byte[] rawValue1 = new byte[] {0x01, 0x00};
-    private final byte[] rawValue2 = new byte[] {0x02, 0x00};
-
-    private final LinkNameAttributeSubTlv tlv1 = new LinkNameAttributeSubTlv(rawValue1, (short) rawValue1.length);
-    private final LinkNameAttributeSubTlv sameAsTlv1 = LinkNameAttributeSubTlv.of(tlv1.getValue(), tlv1.getLength());
-    private final LinkNameAttributeSubTlv tlv2 = new LinkNameAttributeSubTlv(rawValue2, (short) 0);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkProtectionTypeSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkProtectionTypeSubTlvTest.java
deleted file mode 100644
index d079e34..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkProtectionTypeSubTlvTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the LinkProtectionTypeSubTlv.
- */
-public class LinkProtectionTypeSubTlvTest {
-    private final byte rawValue1 = 0x0A;
-    private final byte rawValue2 = 0x0B;
-
-    private final LinkProtectionTypeSubTlv tlv1 = new LinkProtectionTypeSubTlv(rawValue1);
-    private final LinkProtectionTypeSubTlv sameAsTlv1 = new LinkProtectionTypeSubTlv(rawValue1);
-    private final LinkProtectionTypeSubTlv tlv2 = new LinkProtectionTypeSubTlv(rawValue2, (byte) 0);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LocalNodeDescriptorsTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LocalNodeDescriptorsTlvTest.java
deleted file mode 100644
index 35d6c7f..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LocalNodeDescriptorsTlvTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Test of the LocalNodeDescriptorsTlv.
- */
-public class LocalNodeDescriptorsTlvTest {
-
-    private final AutonomousSystemSubTlv baAutoSysTlvRawValue1 = new AutonomousSystemSubTlv(1);
-    private final BgpLsIdentifierSubTlv baBgplsIdRawValue1 = new BgpLsIdentifierSubTlv(1);
-
-    private final AutonomousSystemSubTlv baAutoSysTlvRawValue2 = new AutonomousSystemSubTlv(2);
-    private final BgpLsIdentifierSubTlv baBgplsIdRawValue2 = new BgpLsIdentifierSubTlv(2);
-
-    private final List<PcepValueType> llNodeDescriptorSubTLVs1 = new LinkedList<PcepValueType>();
-    private final boolean a = llNodeDescriptorSubTLVs1.add(baAutoSysTlvRawValue1);
-    private final boolean b = llNodeDescriptorSubTLVs1.add(baBgplsIdRawValue1);
-
-    private final List<PcepValueType> llNodeDescriptorSubTLVs2 = new LinkedList<PcepValueType>();
-    private final boolean c = llNodeDescriptorSubTLVs2.add(baAutoSysTlvRawValue2);
-    private final boolean d = llNodeDescriptorSubTLVs2.add(baBgplsIdRawValue2);
-
-    private final LocalNodeDescriptorsTlv tlv1 = LocalNodeDescriptorsTlv.of(llNodeDescriptorSubTLVs1);
-    private final LocalNodeDescriptorsTlv sameAstlv1 = LocalNodeDescriptorsTlv.of(llNodeDescriptorSubTLVs1);
-    private final LocalNodeDescriptorsTlv tlv2 = LocalNodeDescriptorsTlv.of(llNodeDescriptorSubTLVs2);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, sameAstlv1).addEqualityGroup(tlv2).testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LsCapabilityTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LsCapabilityTlvTest.java
deleted file mode 100644
index 3ef1932..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LsCapabilityTlvTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test case for TED Capability tlv.
- */
-public class LsCapabilityTlvTest {
-
-    private final LsCapabilityTlv tlv1 = LsCapabilityTlv.of(1);
-    private final LsCapabilityTlv tlv2 = LsCapabilityTlv.of(1);
-    private final LsCapabilityTlv tlv3 = LsCapabilityTlv.of(2);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumLinkBandwidthSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumLinkBandwidthSubTlvTest.java
deleted file mode 100644
index 3db22dd..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumLinkBandwidthSubTlvTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the MaximumLinkBandwidthSubTlv.
- */
-public class MaximumLinkBandwidthSubTlvTest {
-    private final int rawValue1 = 0x0A;
-    private final int rawValue2 = 0x0B;
-
-    private final MaximumLinkBandwidthSubTlv tlv1 = new MaximumLinkBandwidthSubTlv(rawValue1);
-    private final MaximumLinkBandwidthSubTlv sameAsTlv1 = new MaximumLinkBandwidthSubTlv(rawValue1);
-    private final MaximumLinkBandwidthSubTlv tlv2 = MaximumLinkBandwidthSubTlv.of(rawValue2);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthSubTlvTest.java
deleted file mode 100644
index af37ac9..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthSubTlvTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the MaximumReservableLinkBandwidthSubTlv.
- */
-public class MaximumReservableLinkBandwidthSubTlvTest {
-    private final int rawValue1 = 0x0A;
-    private final int rawValue2 = 0x0B;
-
-    private final MaximumReservableLinkBandwidthSubTlv tlv1 = new MaximumReservableLinkBandwidthSubTlv(rawValue1);
-    private final MaximumReservableLinkBandwidthSubTlv sameAsTlv1 = new MaximumReservableLinkBandwidthSubTlv(rawValue1);
-    private final MaximumReservableLinkBandwidthSubTlv tlv2 = MaximumReservableLinkBandwidthSubTlv.of(rawValue2);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MplsProtocolMaskSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MplsProtocolMaskSubTlvTest.java
deleted file mode 100644
index 0def410..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MplsProtocolMaskSubTlvTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the MplsProtocolMaskSubTlv.
- */
-public class MplsProtocolMaskSubTlvTest {
-    private final byte rawValue1 = 0x0A;
-    private final byte rawValue2 = 0x0B;
-
-    private final MplsProtocolMaskSubTlv tlv1 = new MplsProtocolMaskSubTlv(rawValue1);
-    private final MplsProtocolMaskSubTlv sameAsTlv1 = new MplsProtocolMaskSubTlv(rawValue1);
-    private final MplsProtocolMaskSubTlv tlv2 = MplsProtocolMaskSubTlv.of(rawValue2);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv4addressTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv4addressTlvTest.java
deleted file mode 100644
index 3b95d77..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv4addressTlvTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Equality test for NexthopIPv4addressTlv.
- */
-public class NexthopIPv4addressTlvTest {
-
-    private final NexthopIPv4addressTlv tlv1 = new NexthopIPv4addressTlv(0x0A);
-    private final NexthopIPv4addressTlv sameAsTlv1 = new NexthopIPv4addressTlv(0x0A);
-    private final NexthopIPv4addressTlv tlv2 = NexthopIPv4addressTlv.of(0x0B);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv6addressTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv6addressTlvTest.java
deleted file mode 100644
index 35e4b00..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv6addressTlvTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Equality test for NexthopIPv6addressTlv.
- */
-public class NexthopIPv6addressTlvTest {
-
-    private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
-            (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00 };
-    private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
-            (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x00 };
-
-    private final NexthopIPv6addressTlv tlv1 = NexthopIPv6addressTlv.of(b1);
-    private final NexthopIPv6addressTlv sameAsTlv1 = NexthopIPv6addressTlv.of(b1);
-    private final NexthopIPv6addressTlv tlv2 = NexthopIPv6addressTlv.of(b2);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals();
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlvTest.java
deleted file mode 100644
index 2fc5fba..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlvTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Equality test for NexthopUnnumberedIPv4IDTlv.
- */
-public class NexthopUnnumberedIPv4IDTlvTest {
-
-    private final NexthopUnnumberedIPv4IDTlv tlv1 = new NexthopUnnumberedIPv4IDTlv(0x0A, 0x0A);
-    private final NexthopUnnumberedIPv4IDTlv sameAsTlv1 = new NexthopUnnumberedIPv4IDTlv(0x0A, 0x0A);
-    private final NexthopUnnumberedIPv4IDTlv tlv2 = NexthopUnnumberedIPv4IDTlv.of(0x0B, 0x0B);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeAttributesTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeAttributesTlvTest.java
deleted file mode 100644
index 5a6fddd..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeAttributesTlvTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Test case for TE Node Attribute tlv.
- */
-public class NodeAttributesTlvTest {
-
-    private final NodeFlagBitsSubTlv nodeFlagBitsTlv1 = new NodeFlagBitsSubTlv((byte) 10);
-    private final IPv4RouterIdOfLocalNodeSubTlv iPv4TERouterIdOfLocalNodeTlv1 = new
-            IPv4RouterIdOfLocalNodeSubTlv(0x01010101);
-
-    private final NodeFlagBitsSubTlv nodeFlagBitsTlv2 = new NodeFlagBitsSubTlv((byte) 20);
-    private final IPv4RouterIdOfLocalNodeSubTlv iPv4TERouterIdOfLocalNodeTlv2 = new
-            IPv4RouterIdOfLocalNodeSubTlv(0x02020202);
-
-    private final List<PcepValueType> llNodeAttributesSubTLV1 = new LinkedList<>();
-    private final boolean a = llNodeAttributesSubTLV1.add(nodeFlagBitsTlv1);
-    private final boolean b = llNodeAttributesSubTLV1.add(iPv4TERouterIdOfLocalNodeTlv1);
-
-    private final List<PcepValueType> llNodeAttributesSubTLV2 = new LinkedList<>();
-
-    private final boolean c = llNodeAttributesSubTLV2.add(nodeFlagBitsTlv2);
-    private final boolean d = llNodeAttributesSubTLV2.add(iPv4TERouterIdOfLocalNodeTlv2);
-
-    private final NodeAttributesTlv tlv1 = NodeAttributesTlv.of(llNodeAttributesSubTLV1);
-    private final NodeAttributesTlv sameAsTlv1 = NodeAttributesTlv.of(llNodeAttributesSubTLV1);
-    private final NodeAttributesTlv tlv2 = NodeAttributesTlv.of(llNodeAttributesSubTLV2);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals();
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeFlagBitsSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeFlagBitsSubTlvTest.java
deleted file mode 100644
index 7c186eb..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeFlagBitsSubTlvTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the NodeFlagBitsSubTlv.
- */
-public class NodeFlagBitsSubTlvTest {
-    private final byte rawValue1 = 0x0A;
-    private final byte rawValue2 = 0x0B;
-
-    private final NodeFlagBitsSubTlv tlv1 = new NodeFlagBitsSubTlv(rawValue1);
-    private final NodeFlagBitsSubTlv sameAsTlv1 = new NodeFlagBitsSubTlv(rawValue1);
-    private final NodeFlagBitsSubTlv tlv2 = NodeFlagBitsSubTlv.of(rawValue2);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeNameSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeNameSubTlvTest.java
deleted file mode 100644
index e4e468c..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeNameSubTlvTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the NodeNameSubTlv.
- */
-public class NodeNameSubTlvTest {
-    private final byte[] rawValue1 = new byte[] {0x01, 0x02};
-    private final byte[] rawValue2 = new byte[] {0x14, 0x15};
-
-    private final NodeNameSubTlv tlv1 = new NodeNameSubTlv(rawValue1, (short) rawValue1.length);
-    private final NodeNameSubTlv sameAsTlv1 = NodeNameSubTlv.of(tlv1.getValue(), tlv1.getLength());
-    private final NodeNameSubTlv tlv2 = new NodeNameSubTlv(rawValue2, (short) 0);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OpaqueLinkAttributeSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OpaqueLinkAttributeSubTlvTest.java
deleted file mode 100644
index b2036a9..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OpaqueLinkAttributeSubTlvTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the OpaqueLinkAttributeSubTlv.
- */
-public class OpaqueLinkAttributeSubTlvTest {
-    private final byte[] rawValue1 = new byte[] {0x01, 0x02};
-    private final byte[] rawValue2 = new byte[] {0x14, 0x15};
-
-    private final OpaqueLinkAttributeSubTlv tlv1 =
-            new OpaqueLinkAttributeSubTlv(rawValue1, (short) rawValue1.length);
-    private final OpaqueLinkAttributeSubTlv sameAsTlv1 =
-            OpaqueLinkAttributeSubTlv.of(tlv1.getValue(), tlv1.getLength());
-    private final OpaqueLinkAttributeSubTlv tlv2 = new OpaqueLinkAttributeSubTlv(rawValue2, (short) 0);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OspfAreaIdSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OspfAreaIdSubTlvTest.java
deleted file mode 100644
index 609b337..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OspfAreaIdSubTlvTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the OspfAreaIdSubTlv.
- */
-public class OspfAreaIdSubTlvTest {
-    private final int rawValue1 = 0x0A;
-
-    private final OspfAreaIdSubTlv tlv1 = new OspfAreaIdSubTlv(rawValue1);
-    private final OspfAreaIdSubTlv tlv2 = OspfAreaIdSubTlv.of(tlv1.getInt());
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathKeySubObjectTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathKeySubObjectTest.java
deleted file mode 100644
index 22a2ffb..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathKeySubObjectTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the PathKeySubObject.
- */
-public class PathKeySubObjectTest {
-
-    private final PathKeySubObject tlv1 = new PathKeySubObject((short) 0x0A, 0x0A);
-    private final PathKeySubObject sameAsTlv1 = PathKeySubObject.of((short) 0x0A, 0x0A);
-    private final PathKeySubObject tlv2 = new PathKeySubObject((short) 0x0B, 0x0B);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathSetupTypeTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathSetupTypeTlvTest.java
deleted file mode 100644
index 452a1c6..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathSetupTypeTlvTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the PathSetupTypeTlv.
- */
-public class PathSetupTypeTlvTest {
-
-    private final PathSetupTypeTlv tlv1 = PathSetupTypeTlv.of(0x0A);
-    private final PathSetupTypeTlv sameAsTlv1 = PathSetupTypeTlv.of(0x0A);
-    private final PathSetupTypeTlv tlv2 = PathSetupTypeTlv.of(0x0B);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PceccCapabilityTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PceccCapabilityTlvTest.java
deleted file mode 100644
index 9a61e7c..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PceccCapabilityTlvTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test of the PceccCapabilityTlv.
- */
-public class PceccCapabilityTlvTest {
-    private final int rawValue1 = 0x0A;
-    private final int rawValue2 = 0x0B;
-
-    private final PceccCapabilityTlv tlv1 = new PceccCapabilityTlv(rawValue1);
-    private final PceccCapabilityTlv sameAsTlv1 = new PceccCapabilityTlv(rawValue1);
-    private final PceccCapabilityTlv tlv2 = PceccCapabilityTlv.of(rawValue2);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, sameAsTlv1)
-        .addEqualityGroup(tlv2)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4AdjacencyTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4AdjacencyTest.java
deleted file mode 100644
index b89805e..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4AdjacencyTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Equality test for PcepNaiIpv4Adjacency.
- */
-public class PcepNaiIpv4AdjacencyTest {
-
-    private final PcepNaiIpv4Adjacency obj1 = PcepNaiIpv4Adjacency.of(2, 16);
-    private final PcepNaiIpv4Adjacency sameAsObj1 = PcepNaiIpv4Adjacency.of(2, 16);
-    private final PcepNaiIpv4Adjacency obj2 = PcepNaiIpv4Adjacency.of(3, 16);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(obj1, sameAsObj1).addEqualityGroup(obj2).testEquals();
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeIdTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeIdTest.java
deleted file mode 100644
index 93f61d4..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeIdTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-public class PcepNaiIpv4NodeIdTest {
-
-    private final PcepNaiIpv4NodeId tlv1 = PcepNaiIpv4NodeId.of(1);
-    private final PcepNaiIpv4NodeId tlv2 = PcepNaiIpv4NodeId.of(1);
-    private final PcepNaiIpv4NodeId tlv3 = PcepNaiIpv4NodeId.of(3);
-
-    @Test
-    public void basics() {
-        new EqualsTester()
-        .addEqualityGroup(tlv1, tlv2)
-        .addEqualityGroup(tlv3)
-        .testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6AdjacencyTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6AdjacencyTest.java
deleted file mode 100644
index 7c1fbb5..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6AdjacencyTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-public class PcepNaiIpv6AdjacencyTest {
-    private final byte[] localIpv6Addr1 = {(byte) 0x01010101 };
-    private final byte[] remoteIpv6Addr1 = {(byte) 0x02020202 };
-    private final byte[] localIpv6Addr2 = {(byte) 0x01010101 };
-    private final byte[] remoteIpv6Addr2 = {(byte) 0x02020202 };
-    private final byte[] localIpv6Addr3 = {(byte) 0x05050505 };
-    private final byte[] remoteIpv6Addr3 = {(byte) 0x06060606 };
-
-    private final PcepNaiIpv6Adjacency tlv1 = PcepNaiIpv6Adjacency.of(localIpv6Addr1, remoteIpv6Addr1);
-    private final PcepNaiIpv6Adjacency tlv2 = PcepNaiIpv6Adjacency.of(localIpv6Addr1, remoteIpv6Addr1);
-    private final PcepNaiIpv6Adjacency tlv3 = PcepNaiIpv6Adjacency.of(localIpv6Addr3, remoteIpv6Addr3);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeIdTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeIdTest.java
deleted file mode 100644
index ed10201..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeIdTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Equality test for PcepNaiIpv6NodeId.
- */
-public class PcepNaiIpv6NodeIdTest {
-
-    private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
-                                          (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02,
-                                          0x00, 0x00 };
-    private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
-                                          (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02,
-                                          0x00, 0x00 };
-
-    private final PcepNaiIpv6NodeId tlv1 = PcepNaiIpv6NodeId.of(b1);
-    private final PcepNaiIpv6NodeId sameAsTlv1 = PcepNaiIpv6NodeId.of(b1);
-    private final PcepNaiIpv6NodeId tlv2 = PcepNaiIpv6NodeId.of(b2);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals();
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4Test.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4Test.java
deleted file mode 100644
index d2d0532..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4Test.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-public class PcepNaiUnnumberedAdjacencyIpv4Test {
-
-    private final int localNodeId1 = 1;
-    private final int localInterfaceId1 = 1;
-    private final int remoteNodeId1 = 1;
-    private final int remoteInterfaceId1 = 1;
-    private final PcepNaiUnnumberedAdjacencyIpv4 tlv1 = PcepNaiUnnumberedAdjacencyIpv4.of(localNodeId1,
-            localInterfaceId1, remoteNodeId1, remoteInterfaceId1);
-
-    private final int localNodeId2 = 1;
-    private final int localInterfaceId2 = 1;
-    private final int remoteNodeId2 = 1;
-    private final int remoteInterfaceId2 = 1;
-    private final PcepNaiUnnumberedAdjacencyIpv4 tlv2 = PcepNaiUnnumberedAdjacencyIpv4.of(localNodeId2,
-            localInterfaceId2, remoteNodeId2, remoteInterfaceId2);
-
-    private final int localNodeId3 = 2;
-    private final int localInterfaceId3 = 2;
-    private final int remoteNodeId3 = 2;
-    private final int remoteInterfaceId3 = 2;
-
-    private final PcepNaiUnnumberedAdjacencyIpv4 tlv3 = PcepNaiUnnumberedAdjacencyIpv4.of(localNodeId3,
-            localInterfaceId3, remoteNodeId3, remoteInterfaceId3);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RemoteNodeDescriptorsTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RemoteNodeDescriptorsTlvTest.java
deleted file mode 100644
index def98e7..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RemoteNodeDescriptorsTlvTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Test case for Remote TE Node Descriptors tlv.
- */
-public class RemoteNodeDescriptorsTlvTest {
-
-    private final AutonomousSystemSubTlv autonomousSystemTlv1 = new AutonomousSystemSubTlv(10);
-    private final BgpLsIdentifierSubTlv bGPLSidentifierTlv1 = new BgpLsIdentifierSubTlv(20);
-
-    private final AutonomousSystemSubTlv autonomousSystemTlv2 = new AutonomousSystemSubTlv(20);
-    private final BgpLsIdentifierSubTlv bGPLSidentifierTlv2 = new BgpLsIdentifierSubTlv(30);
-
-    private final List<PcepValueType> llRemoteTENodeDescriptorSubTLV1 = new LinkedList<>();
-    private final boolean a = llRemoteTENodeDescriptorSubTLV1.add(autonomousSystemTlv1);
-    private final boolean b = llRemoteTENodeDescriptorSubTLV1.add(bGPLSidentifierTlv1);
-
-    private final List<PcepValueType> llRemoteTENodeDescriptorSubTLV2 = new LinkedList<>();
-    private final boolean c = llRemoteTENodeDescriptorSubTLV2.add(autonomousSystemTlv2);
-    private final boolean d = llRemoteTENodeDescriptorSubTLV2.add(bGPLSidentifierTlv2);
-
-    private final RemoteNodeDescriptorsTlv tlv1 = RemoteNodeDescriptorsTlv.of(llRemoteTENodeDescriptorSubTLV1);
-    private final RemoteNodeDescriptorsTlv sameAsTlv1 =
-            RemoteNodeDescriptorsTlv.of(llRemoteTENodeDescriptorSubTLV1);
-    private final RemoteNodeDescriptorsTlv tlv2 = RemoteNodeDescriptorsTlv.of(llRemoteTENodeDescriptorSubTLV2);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals();
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RoutingUniverseTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RoutingUniverseTlvTest.java
deleted file mode 100644
index d488c4f..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RoutingUniverseTlvTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Equality test for RoutingUniverseTlv.
- */
-public class RoutingUniverseTlvTest {
-
-    private final RoutingUniverseTlv tlv1 = RoutingUniverseTlv.of(2);
-    private final RoutingUniverseTlv tlv2 = RoutingUniverseTlv.of(2);
-    private final RoutingUniverseTlv tlv3 = RoutingUniverseTlv.of(3);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SharedRiskLinkGroupSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SharedRiskLinkGroupSubTlvTest.java
deleted file mode 100644
index 480e49f..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SharedRiskLinkGroupSubTlvTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test case for SharedRiskLinkGroupSubTlv.
- */
-public class SharedRiskLinkGroupSubTlvTest {
-
-    private final int[] raw = {1 };
-    private final Short hLength = 2;
-    private final SharedRiskLinkGroupSubTlv tlv1 = SharedRiskLinkGroupSubTlv.of(raw, hLength);
-
-    private final SharedRiskLinkGroupSubTlv sameAsTlv1 = SharedRiskLinkGroupSubTlv.of(raw, hLength);
-
-    private final int[] raw2 = {2 };
-    private final Short hLength2 = 3;
-    private final SharedRiskLinkGroupSubTlv tlv2 = SharedRiskLinkGroupSubTlv.of(raw2, hLength2);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals();
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SrEroSubObjectTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SrEroSubObjectTest.java
deleted file mode 100644
index 7dac675..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SrEroSubObjectTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-import org.onosproject.pcepio.protocol.PcepNai;
-
-public class SrEroSubObjectTest {
-
-    private final boolean bFFlag = false;
-    private final boolean bSFlag = false;
-    private final boolean bCFlag = false;
-    private final boolean bMFlag = false;
-    private final byte st = 1;
-    private final int sID = 1;
-    private final PcepNai nai = null;
-
-    private final SrEroSubObject tlv1 = SrEroSubObject.of(st, bFFlag, bSFlag, bCFlag, bMFlag, sID, nai);
-
-    private final boolean bFFlag1 = false;
-    private final boolean bSFlag1 = false;
-    private final boolean bCFlag1 = false;
-    private final boolean bMFlag1 = false;
-    private final byte st1 = 1;
-    private final int sID1 = 1;
-    private final PcepNai nai1 = null;
-
-    private final SrEroSubObject tlv2 = SrEroSubObject.of(st1, bFFlag1, bSFlag1, bCFlag1, bMFlag1, sID1, nai1);
-
-    private final boolean bFFlag2 = true;
-    private final boolean bSFlag2 = true;
-    private final boolean bCFlag2 = true;
-    private final boolean bMFlag2 = true;
-    private final byte st2 = 2;
-    private final int sID2 = 2;
-    private final PcepNai nai2 = null;
-
-    private final SrEroSubObject tlv3 = SrEroSubObject.of(st2, bFFlag2, bSFlag2, bCFlag2, bMFlag2, sID2, nai2);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals();
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentifiersTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentifiersTlvTest.java
deleted file mode 100644
index a8d527f..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentifiersTlvTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Tests class StatefulIPv4LspIdentifiersTlv.
- */
-public class StatefulIPv4LspIdentifiersTlvTest {
-
-    private final int ipv4IngressAddress = 1;
-    private final short lspId = 1;
-    private final short tunnelId = 1;
-    private final int extendedTunnelId = 1;
-    private final int ipv4EgressAddress = 1;
-
-    private final StatefulIPv4LspIdentifiersTlv tlv1 = StatefulIPv4LspIdentifiersTlv.of(ipv4IngressAddress, lspId,
-            tunnelId, extendedTunnelId, ipv4EgressAddress);
-
-    private final int ipv4IngressAddress1 = 1;
-    private final short lspId1 = 1;
-    private final short tunnelId1 = 1;
-    private final int extendedTunnelId1 = 1;
-    private final int ipv4EgressAddress1 = 1;
-
-    private final StatefulIPv4LspIdentifiersTlv tlv2 = StatefulIPv4LspIdentifiersTlv.of(ipv4IngressAddress1, lspId1,
-            tunnelId1, extendedTunnelId1, ipv4EgressAddress1);
-
-    private final int ipv4IngressAddress2 = 2;
-    private final short lspId2 = 2;
-    private final short tunnelId2 = 2;
-    private final int extendedTunnelId2 = 2;
-    private final int ipv4EgressAddress2 = 2;
-
-    private final StatefulIPv4LspIdentifiersTlv tlv3 = StatefulIPv4LspIdentifiersTlv.of(ipv4IngressAddress2, lspId2,
-            tunnelId2, extendedTunnelId2, ipv4EgressAddress2);
-
-    /**
-     * Tests equality of objects of class StatefulIPv4LspIdentifiersTlv.
-     */
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals();
-
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspDbVerTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspDbVerTlvTest.java
deleted file mode 100644
index 5d3d0d6..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspDbVerTlvTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test case for Stateful Lsp Db Ver tlv.
- */
-public class StatefulLspDbVerTlvTest {
-
-    private final StatefulLspDbVerTlv tlv1 = StatefulLspDbVerTlv.of(1);
-    private final StatefulLspDbVerTlv tlv2 = StatefulLspDbVerTlv.of(1);
-    private final StatefulLspDbVerTlv tlv3 = StatefulLspDbVerTlv.of(2);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals();
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlvTest.java
deleted file mode 100644
index 54408de..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlvTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-public class StatefulLspErrorCodeTlvTest {
-
-    private final StatefulLspErrorCodeTlv tlv1 = StatefulLspErrorCodeTlv.of(1);
-    private final StatefulLspErrorCodeTlv tlv2 = StatefulLspErrorCodeTlv.of(1);
-    private final StatefulLspErrorCodeTlv tlv3 = StatefulLspErrorCodeTlv.of(2);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlvTest.java
deleted file mode 100644
index 69b31e7..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlvTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test case for Stateful Pce Capability tlv.
- */
-public class StatefulPceCapabilityTlvTest {
-
-    private final StatefulPceCapabilityTlv tlv1 = StatefulPceCapabilityTlv.of(1);
-    private final StatefulPceCapabilityTlv tlv2 = StatefulPceCapabilityTlv.of(1);
-    private final StatefulPceCapabilityTlv tlv3 = StatefulPceCapabilityTlv.of(2);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SymbolicPathNameTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SymbolicPathNameTlvTest.java
deleted file mode 100644
index 33e1a8c..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SymbolicPathNameTlvTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test case for Symbolic path tlv.
- */
-public class SymbolicPathNameTlvTest {
-
-    private final byte[] value1 = {0x41 };
-    private final Short length1 = 2;
-    private final SymbolicPathNameTlv tlv1 = SymbolicPathNameTlv.of(value1, length1);
-
-    private final byte[] value2 = {0x41 };
-    private final Short length2 = 2;
-    private final SymbolicPathNameTlv tlv2 = SymbolicPathNameTlv.of(value1, length2);
-
-    private final byte[] value3 = {0x41, 0x43 };
-    private final Short length3 = 3;
-    private final SymbolicPathNameTlv tlv3 = SymbolicPathNameTlv.of(value3, length3);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals();
-    }
-
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TEDefaultMetricSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TEDefaultMetricSubTlvTest.java
deleted file mode 100644
index 5c5256b..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TEDefaultMetricSubTlvTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Test case for TEDefaultMetricSubTlv.
- */
-public class TEDefaultMetricSubTlvTest {
-
-    private final TEDefaultMetricSubTlv tlv1 = TEDefaultMetricSubTlv.of(1);
-    private final TEDefaultMetricSubTlv tlv2 = TEDefaultMetricSubTlv.of(1);
-    private final TEDefaultMetricSubTlv tlv3 = TEDefaultMetricSubTlv.of(2);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals();
-    }
-}
diff --git a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/UnreservedBandwidthSubTlvTest.java b/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/UnreservedBandwidthSubTlvTest.java
deleted file mode 100644
index 9543001..0000000
--- a/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/UnreservedBandwidthSubTlvTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcepio.types;
-
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
-/**
- * Unit Test case for UnreservedBandwidthSubTlv.
- */
-public class UnreservedBandwidthSubTlvTest {
-
-    // Objects of unreserved bandwidth tlv
-    private final UnreservedBandwidthSubTlv tlv1 = UnreservedBandwidthSubTlv.of(100);
-    private final UnreservedBandwidthSubTlv tlv2 = UnreservedBandwidthSubTlv.of(100);
-    private final UnreservedBandwidthSubTlv tlv3 = UnreservedBandwidthSubTlv.of(200);
-
-    @Test
-    public void basics() {
-        new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals();
-    }
-
-}
diff --git a/protocols/pcep/server/BUILD b/protocols/pcep/server/BUILD
deleted file mode 100644
index c8b744d..0000000
--- a/protocols/pcep/server/BUILD
+++ /dev/null
@@ -1,11 +0,0 @@
-BUNDLES = [
-    "//protocols/pcep/server/api:onos-protocols-pcep-server-api",
-    "//protocols/pcep/server/ctl:onos-protocols-pcep-server-ctl",
-]
-
-onos_app(
-    category = "Utility",
-    included_bundles = BUNDLES,
-    title = "PCEP Server Module",
-    url = "http://onosproject.org",
-)
diff --git a/protocols/pcep/server/api/BUILD b/protocols/pcep/server/api/BUILD
deleted file mode 100644
index 0826d45..0000000
--- a/protocols/pcep/server/api/BUILD
+++ /dev/null
@@ -1,10 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + [
-    "@io_netty_netty//jar",
-    "//apps/tunnel/api:onos-apps-tunnel-api",
-    "//protocols/pcep/pcepio:onos-protocols-pcep-pcepio",
-    "//apps/pcep-api:onos-apps-pcep-api",
-]
-
-osgi_jar_with_tests(
-    deps = COMPILE_DEPS,
-)
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/ClientCapability.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/ClientCapability.java
deleted file mode 100644
index 2a6c71a..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/ClientCapability.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-import java.util.Objects;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Representation of capabilities supported by client.
- */
-public class ClientCapability {
-    private boolean pceccCapability;
-    private boolean statefulPceCapability;
-    private boolean pcInstantiationCapability;
-    private boolean labelStackCapability;
-    private boolean srCapability;
-
-    /**
-     * Creates new instance of client capability.
-     *
-     * @param pceccCapability represents PCECC capability
-     * @param statefulPceCapability represents stateful PCE capability
-     * @param pcInstantiationCapability represents PC initiation capability
-     * @param labelStackCapability represents S bit is set in PCECC capability
-     * @param srCapability represents SR capability
-     */
-    public ClientCapability(boolean pceccCapability, boolean statefulPceCapability, boolean pcInstantiationCapability,
-            boolean labelStackCapability, boolean srCapability) {
-        this.pceccCapability = pceccCapability;
-        this.statefulPceCapability = statefulPceCapability;
-        this.pcInstantiationCapability = pcInstantiationCapability;
-        this.labelStackCapability = labelStackCapability;
-        this.srCapability = srCapability;
-    }
-
-    /**
-     * Obtains label stack capability.
-     *
-     * @return true if client supports PCECC capability with S bit set otherwise false
-     */
-    public boolean labelStackCapability() {
-        return labelStackCapability;
-    }
-
-    /**
-     * Obtains segment routing capability.
-     *
-     * @return true if client supports SR capability otherwise false
-     */
-    public boolean srCapability() {
-        return srCapability;
-    }
-
-    /**
-     * Obtains PCECC capability.
-     *
-     * @return true if client supports PCECC capability otherwise false
-     */
-    public boolean pceccCapability() {
-        return pceccCapability;
-    }
-
-    /**
-     * Obtains stateful PCE capability.
-     *
-     * @return true if client supports stateful PCE capability otherwise false
-     */
-    public boolean statefulPceCapability() {
-        return statefulPceCapability;
-    }
-
-    /**
-     * Obtains PC initiation capability.
-     *
-     * @return true if client supports PC initiation capability otherwise false
-     */
-    public boolean pcInstantiationCapability() {
-        return pcInstantiationCapability;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(pceccCapability, statefulPceCapability, pcInstantiationCapability, labelStackCapability,
-                srCapability);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof ClientCapability) {
-            ClientCapability other = (ClientCapability) obj;
-            return Objects.equals(pceccCapability, other.pceccCapability)
-                    && Objects.equals(statefulPceCapability, other.statefulPceCapability)
-                    && Objects.equals(pcInstantiationCapability, other.pcInstantiationCapability)
-                    && Objects.equals(labelStackCapability, other.labelStackCapability)
-                    && Objects.equals(srCapability, other.srCapability);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("pceccCapability", pceccCapability)
-                .add("statefulPceCapability", statefulPceCapability)
-                .add("pcInstantiationCapability", pcInstantiationCapability)
-                .add("labelStackCapability", labelStackCapability)
-                .add("srCapability", srCapability)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/LspKey.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/LspKey.java
deleted file mode 100644
index 2cba240..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/LspKey.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-import java.util.Objects;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Representation of LSP info, it will be unique for each LSP.
- */
-public class LspKey {
-    private int plspId;
-    private short localLspId;
-
-    /**
-     * Creates new instance of LspInfo.
-     *
-     * @param plspId LSP id assigned per tunnel per session
-     * @param localLspId LSP id assigned per tunnel
-     */
-    public LspKey(int plspId, short localLspId) {
-        this.plspId = plspId;
-        this.localLspId = localLspId;
-    }
-
-    /**
-     * Obtains PLSP id.
-     *
-     * @return LSP id assigned per tunnel per session
-     */
-    public int plspId() {
-        return plspId;
-    }
-
-    /**
-     * Obtains local LSP id.
-     *
-     * @return LSP id assigned per tunnel
-     */
-    public short localLspId() {
-        return localLspId;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(plspId, localLspId);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj instanceof LspKey) {
-            LspKey other = (LspKey) obj;
-            return Objects.equals(plspId, other.plspId)
-                    && Objects.equals(localLspId, other.localLspId);
-        }
-
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("plspId", plspId)
-                .add("localLspId", localLspId)
-                .toString();
-    }
-}
\ No newline at end of file
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/LspType.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/LspType.java
deleted file mode 100644
index 6cfcd37..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/LspType.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-/**
- * Representation of LSP type.
- */
-public enum LspType {
-    /**
-     * Signifies that path is created via signaling mode.
-     */
-    WITH_SIGNALLING(0),
-
-    /**
-     * Signifies that path is created via SR mode.
-     */
-    SR_WITHOUT_SIGNALLING(1),
-
-    /**
-     * Signifies that path is created via without signaling and without SR mode.
-     */
-    WITHOUT_SIGNALLING_AND_WITHOUT_SR(2);
-
-    int value;
-
-    /**
-     * Assign val with the value as the LSP type.
-     *
-     * @param val LSP type
-     */
-    LspType(int val) {
-        value = val;
-    }
-
-    /**
-     * Returns value of LSP type.
-     *
-     * @return LSP type
-     */
-    public byte type() {
-        return (byte) value;
-    }
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PccId.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PccId.java
deleted file mode 100644
index 9fdd605..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PccId.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.util.Identifier;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import static com.google.common.base.Preconditions.checkArgument;
-
-/**
- * The class representing a network client pc ip.
- * This class is immutable.
- */
-public final class PccId extends Identifier<IpAddress> {
-
-    private static final String SCHEME = "l3";
-    private static final long UNKNOWN = 0;
-
-    /**
-     * Private constructor.
-     */
-    private PccId(IpAddress ipAddress) {
-        super(ipAddress);
-    }
-
-    /**
-     * Create a PccId from ip address.
-     *
-     * @param ipAddress IP address
-     * @return ipAddress
-     */
-    public static PccId pccId(IpAddress ipAddress) {
-        return new PccId(ipAddress);
-    }
-
-    /**
-     * Returns the ip address.
-     *
-     * @return ipAddress
-     */
-    public IpAddress ipAddress() {
-        return identifier;
-    }
-
-    /**
-     * Returns PccId created from the given client URI.
-     *
-     * @param uri device URI
-     * @return pccid
-     */
-    public static PccId pccid(URI uri) {
-        checkArgument(uri.getScheme().equals(SCHEME), "Unsupported URI scheme");
-        return new PccId(IpAddress.valueOf(uri.getSchemeSpecificPart()));
-    }
-
-    /**
-     * Produces client URI from the given DPID.
-     *
-     * @param pccid client pccid
-     * @return client URI
-     */
-    public static URI uri(PccId pccid) {
-        return uri(pccid.ipAddress());
-    }
-
-    /**
-     * Produces client URI from the given ip address.
-     *
-     * @param ipAddress ip of client
-     * @return client URI
-     */
-    public static URI uri(IpAddress ipAddress) {
-        try {
-            return new URI(SCHEME, ipAddress.toString(), null);
-        } catch (URISyntaxException e) {
-            return null;
-        }
-    }
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepAnnotationKeys.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepAnnotationKeys.java
deleted file mode 100644
index bdcd35a..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepAnnotationKeys.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-/**
- * Collection of keys for annotation for PCEP tunnels.
- */
-public final class PcepAnnotationKeys {
-
-    /**
-     *  Prohibits instantiation.
-     */
-    private PcepAnnotationKeys() {
-    }
-
-    /**
-     * Annotation key for bandwidth.
-     * The value for this key is interpreted as Mbps.
-     */
-    public static final String BANDWIDTH = "bandwidth";
-
-    /**
-     * Annotation key for the LSP signaling type.
-     */
-    public static final String LSP_SIG_TYPE = "lspSigType";
-
-    /**
-     * Annotation key for the PCC tunnel id.
-     */
-    public static final String PCC_TUNNEL_ID = "PccTunnelId";
-
-    /**
-     * Annotation key for the LSP id assigned per tunnel per session.
-     */
-    public static final String PLSP_ID = "PLspId";
-
-    /**
-     * Annotation key for the LSP id assigned per tunnel.
-     */
-    public static final String LOCAL_LSP_ID = "localLspId";
-
-    /**
-     * Annotation key for the identification of initiated LSP.
-     */
-    public static final String PCE_INIT = "pceInit";
-
-    /**
-     * Annotation key for the cost type.
-     */
-    public static final String COST_TYPE = "costType";
-
-    /**
-     * Annotation key for the Delegation.
-     * Whether LSPs are delegated or not
-     */
-    public static final String DELEGATE = "delegate";
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepCfg.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepCfg.java
deleted file mode 100644
index af5debf..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepCfg.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-/**
- * PCEP peer state information.
- */
-
-public interface PcepCfg {
-
-    State getState();
-
-    void setState(State state);
-
-    enum State {
-        /**
-         * Signifies that its just created.
-         */
-        INIT,
-
-        /**
-         * Signifies that only IP Address is configured.
-         */
-        OPENWAIT,
-
-        /**
-         * Signifies that only Autonomous System is configured.
-         */
-        KEEPWAIT,
-
-        /**
-         * Signifies that both IP and Autonomous System is configured.
-         */
-        ESTABLISHED,
-
-        /**
-         * Signifies that both IP and Autonomous System is down.
-         */
-        DOWN
-    }
-
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepClient.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepClient.java
deleted file mode 100644
index cace76a..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepClient.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-import java.util.List;
-
-import org.onosproject.pcepio.protocol.PcepFactory;
-import org.onosproject.pcepio.protocol.PcepMessage;
-import org.onosproject.pcepio.protocol.PcepStateReport;
-
-/**
- * Represents to provider facing side of a path computation client(pcc).
- */
-public interface PcepClient {
-
-    /**
-     * Writes the message to the driver.
-     *
-     * @param msg the message to write
-     */
-    void sendMessage(PcepMessage msg);
-
-    /**
-     * Writes the PcepMessage list to the driver.
-     *
-     * @param msgs the messages to be written
-     */
-    void sendMessage(List<PcepMessage> msgs);
-
-    /**
-     * Handle a message from the pcc.
-     *
-     * @param fromClient the message to handle
-     */
-    void handleMessage(PcepMessage fromClient);
-
-    /**
-     * Provides the factory for this PCEP version.
-     *
-     * @return PCEP version specific factory.
-     */
-    PcepFactory factory();
-
-    /**
-     * Gets a string version of the ID for this pcc.
-     *
-     * @return string version of the ID
-     */
-    String getStringId();
-
-    /**
-     * Gets the ipAddress of the client.
-     *
-     * @return the client pccId in IPAddress format
-     */
-    PccId getPccId();
-
-    /**
-     * Checks if the pcc is still connected.
-     *
-     * @return true if client is connected, false otherwise
-     */
-    boolean isConnected();
-
-    /**
-     * Disconnects the pcc by closing the TCP connection. Results in a call
-     * to the channel handler's channelDisconnected method for cleanup.
-     */
-    void disconnectClient();
-
-    /**
-     * Indicates if this pcc is optical.
-     *
-     * @return true if optical
-     */
-    boolean isOptical();
-
-    /**
-     * Identifies the channel used to communicate with the pcc.
-     *
-     * @return string representation of the connection to the client
-     */
-    String channelId();
-
-    /**
-     * Sets the status of LSP state synchronization.
-     *
-     * @param syncStatus LSP synchronization status to be set
-     */
-    void setLspDbSyncStatus(PcepSyncStatus syncStatus);
-
-    /**
-     * Indicates the LSP state synchronization status of this pcc.
-     *
-     * @return LSP state synchronization status.
-     */
-    PcepSyncStatus lspDbSyncStatus();
-
-    /**
-     * Sets the status of label DB synchronization.
-     *
-     * @param syncStatus label DB synchronization status to be set
-     */
-    void setLabelDbSyncStatus(PcepSyncStatus syncStatus);
-
-    /**
-     * Indicates the label DB synchronization status of this pcc.
-     *
-     * @return label DB synchronization status.
-     */
-    PcepSyncStatus labelDbSyncStatus();
-
-    /**
-     * Sets capability negotiated during open message exchange.
-     *
-     * @param capability supported by client
-     */
-    void setCapability(ClientCapability capability);
-
-    /**
-     * Obtains capability supported by client.
-     *
-     * @return capability supported by client
-     */
-    ClientCapability capability();
-
-    /**
-     * Adds PCEP device when session is successfully established.
-     *
-     * @param pc PCEP client details
-     */
-    void addNode(PcepClient pc);
-
-    /**
-     * Removes PCEP device when session is disconnected.
-     *
-     * @param pccId PCEP client ID
-     */
-    void deleteNode(PccId pccId);
-
-     /**
-     * Sets D flag for the given LSP and its LSP info.
-     *
-     * @param lspKey contains LSP info
-     * @param dFlag delegation flag in LSP object
-     */
-    void setLspAndDelegationInfo(LspKey lspKey, boolean dFlag);
-
-    /**
-     * Returns delegation flag for the given LSP info.
-     *
-     * @param lspKey contains LSP info
-     * @return delegation flag
-     */
-    Boolean delegationInfo(LspKey lspKey);
-
-    /**
-     * Creates a temporary cache to hold report messages received during LSPDB sync.
-     *
-     * @param pccId PCC id which is the key to store report messages
-     */
-    void initializeSyncMsgList(PccId pccId);
-
-    /**
-     * Returns the list of report messages received during LSPDB sync.
-     *
-     * @param pccId PCC id which is the key for all the report messages
-     * @return list of report messages received during LSPDB sync
-     */
-    List<PcepStateReport> getSyncMsgList(PccId pccId);
-
-    /**
-     * Removes the list of report messages received during LSPDB sync.
-     *
-     * @param pccId PCC id which is the key for all the report messages
-     */
-    void removeSyncMsgList(PccId pccId);
-
-    /**
-     * Adds report message received during LSPDB sync into temporary cache.
-     *
-     * @param pccId PCC id which is the key to store report messages
-     * @param rptMsg the report message to be stored
-     */
-    void addSyncMsgToList(PccId pccId, PcepStateReport rptMsg);
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepClientController.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepClientController.java
deleted file mode 100644
index 226944e..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepClientController.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-import org.onosproject.incubator.net.tunnel.DefaultLabelStack;
-import org.onosproject.incubator.net.tunnel.LabelStack;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.net.Path;
-import org.onosproject.pcepio.protocol.PcepMessage;
-import org.onosproject.pcepio.types.PcepValueType;
-
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Abstraction of an Pcep client controller. Serves as a one stop
- * shop for obtaining Pcep devices and (un)register listeners
- * on pcep events
- */
-public interface PcepClientController {
-
-    /**
-     * Returns list of pcc clients connected to this Pcep controller.
-     *
-     * @return list of PcepClient elements
-     */
-    Collection<PcepClient> getClients();
-
-    /**
-     * Returns the actual pcc client for the given ip address.
-     *
-     * @param pccId the id of the pcc client to fetch
-     * @return the interface to this pcc client
-     */
-    PcepClient getClient(PccId pccId);
-
-    /**
-     * Register a listener for meta events that occur to pcep
-     * devices.
-     *
-     * @param listener the listener to notify
-     */
-    void addListener(PcepClientListener listener);
-
-    /**
-     * Unregister a listener.
-     *
-     * @param listener the listener to unregister
-     */
-    void removeListener(PcepClientListener listener);
-
-    /**
-     * Register a listener for PCEP msg events.
-     *
-     * @param listener the listener to notify
-     */
-    void addEventListener(PcepEventListener listener);
-
-    /**
-     * Unregister a listener.
-     *
-     * @param listener the listener to unregister
-     */
-    void removeEventListener(PcepEventListener listener);
-
-    /**
-     * Register a listener for PCEP msg events[carrying node descriptor details].
-     *
-     * @param listener the listener to notify
-     */
-    void addNodeListener(PcepNodeListener listener);
-
-    /**
-     * Unregister a listener.
-     *
-     * @param listener the listener to be unregistered
-     */
-    void removeNodeListener(PcepNodeListener listener);
-
-    /**
-     * Send a message to a particular pcc client.
-     *
-     * @param pccId the id of the client to send message.
-     * @param msg the message to send
-     */
-    void writeMessage(PccId pccId, PcepMessage msg);
-
-    /**
-     * Process a message and notify the appropriate listeners.
-     *
-     * @param pccId id of the client the message arrived on
-     * @param msg the message to process.
-     */
-    void processClientMessage(PccId pccId, PcepMessage msg);
-
-    /**
-     * Close all connected PCC clients.
-     */
-    void closeConnectedClients();
-
-    /**
-     * Create label stack from the given path.
-     *
-     * @param path from which label stack is to be computed
-     * @return the label stack
-     */
-    public LabelStack computeLabelStack(Path path);
-
-    /**
-     * Allocates and downloads local labels for the given LSP.
-     *
-     * @param tunnel for which local labels have to be assigned and downloaded
-     * @return success or failure
-     */
-    public boolean allocateLocalLabel(Tunnel tunnel);
-
-    /**
-     * Creates label stack for ERO object from network resource.
-     *
-     * @param labelStack label stack
-     * @param path (hop list)
-     * @return list of ERO sub-objects
-     */
-    public LinkedList<PcepValueType> createPcepLabelStack(DefaultLabelStack labelStack, Path path);
-
-    /**
-     * Returns list of PCEP exceptions.
-     *
-     * @return PcepExceptions
-     */
-    public Map<String, List<String>> getPcepExceptions();
-
-    /**
-     * Returns all the pcep error messages received .
-     *
-     * @return PcepErrorMsg
-     */
-    public Map<Integer, Integer> getPcepErrorMsg();
-
-    /**
-     * Returns the pcep session details.
-     *
-     * @return PcepSession
-     */
-    public Map<String, String> getPcepSessionMap();
-
-    /**
-     * Returns the pcep sessionid information.
-     *
-     * @return PcepSessionId
-     */
-    public Map<String, Byte> getPcepSessionIdMap();
-
-    /**
-     * Creates detailed information about pcep error value and type per peer.
-     *
-     * @param peerId id of the peer which sent the error message
-     * @param errorType the error type of the error message received
-     * @param errValue the error value of the error message received
-     */
-    void peerErrorMsg(String peerId, Integer errorType, Integer errValue);
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepClientListener.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepClientListener.java
deleted file mode 100644
index 5a0d5bc..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepClientListener.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-/**
- * Allows for providers interested in PCC client events to be notified.
- */
-public interface PcepClientListener {
-
-    /**
-     * Notify that the PCC was connected.
-     *
-     * @param pccId the id of the client that connected
-     */
-    void clientConnected(PccId pccId);
-
-    /**
-     * Notify that the PCC was disconnected.
-     *
-     * @param pccId the id of the client that disconnected.
-     */
-    void clientDisconnected(PccId pccId);
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepErrorDetail.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepErrorDetail.java
deleted file mode 100644
index 37ea6d0..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepErrorDetail.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-import java.util.Map;
-import java.util.TreeMap;
-
-/**
- * PCEP error message details.
- */
-public class PcepErrorDetail {
-
-    private Map<Integer, String> sessionEstablishmentFailureMap = new TreeMap<>();
-    private Map<Integer, String> unknownObjectMap = new TreeMap<>();
-    private Map<Integer, String> notSupportedObjectMap = new TreeMap<>();
-    private Map<Integer, String> policyViolationMap = new TreeMap<>();
-    private Map<Integer, String> mandatoryObjectMissingMap = new TreeMap<>();
-    private Map<Integer, String> receptionOfInvalidObjectMap = new TreeMap<>();
-    private Map<Integer, String> invalidOperationMap = new TreeMap<>();
-
-
-    public Map sessionEstablishmentFailure() {
-        sessionEstablishmentFailureMap.put(1, "Reception of an invalid Open message or a non Open message.");
-        sessionEstablishmentFailureMap.put(2, "no Open message received before the expiration of the OpenWait timer");
-        sessionEstablishmentFailureMap.put(3, "unacceptable and non-negotiable session characteristics");
-        sessionEstablishmentFailureMap.put(4, "unacceptable but negotiable session characteristics");
-        sessionEstablishmentFailureMap.put(5, "reception of a second Open message with still " +
-                "unacceptable session characteristics");
-        sessionEstablishmentFailureMap.put(6, "reception of a PCErr message proposing unacceptable " +
-                "session characteristics");
-        sessionEstablishmentFailureMap.put(7, "No Keepalive or PCErr message received before the " +
-                "expiration of the KeepWait timer");
-        sessionEstablishmentFailureMap.put(8, "PCEP version not supported");
-        return sessionEstablishmentFailureMap;
-    }
-
-
-    public Map unknownObject() {
-        unknownObjectMap.put(1, "Unrecognized object class");
-        unknownObjectMap.put(2, "Unrecognized object type");
-        return unknownObjectMap;
-    }
-
-    public Map notSupportedObject() {
-        notSupportedObjectMap.put(1, "Not Supported object class");
-        notSupportedObjectMap.put(2, "Not Supported object type");
-        return notSupportedObjectMap;
-    }
-
-
-    public Map policyViolation() {
-        policyViolationMap.put(1, "C bit of the METRIC object set (request rejected)");
-        policyViolationMap.put(2, "O bit of the RP object cleared (request rejected)");
-        return policyViolationMap;
-    }
-
-
-
-    public Map mandatoryObjectMissing() {
-        mandatoryObjectMissingMap.put(1, "RP object missing");
-        mandatoryObjectMissingMap.put(2, "RRO missing for a re-optimization request (R bit of the RP object set)");
-        mandatoryObjectMissingMap.put(2, "END-POINTS object missing");
-        return mandatoryObjectMissingMap;
-
-    }
-
-
-    public Map receptionOfInvalidObject() {
-        receptionOfInvalidObjectMap.put(1, "reception of an object with P flag not set although the P flag must be" +
-                "set according to this specification.");
-        return receptionOfInvalidObjectMap;
-    }
-
-    public Map invalidOperation() {
-        invalidOperationMap.put(1, "Attempted LSP Update Request for a non-delegated LSP.  The PCEP-ERROR Object" +
-                " is followed by the LSP Object that identifies the LSP.");
-        invalidOperationMap.put(2, "Attempted LSP Update Request if the" +
-                " stateful PCE capability was not" +
-                " advertised.");
-        invalidOperationMap.put(3, "Attempted LSP Update Request for an LSP" +
-                "identified by an unknown PLSP-ID.");
-        invalidOperationMap.put(4, "A PCE indicates to a PCC that it has" +
-                " exceeded the resource limit allocated" +
-                " for its state, and thus it cannot" +
-                " accept and process its LSP State Report" +
-                " message.");
-        invalidOperationMap.put(5, "Attempted LSP State Report if active" +
-                " stateful PCE capability was not" +
-                " advertised.");
-        return invalidOperationMap;
-    }
-
-
-
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepErrorType.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepErrorType.java
deleted file mode 100644
index 8d51999..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepErrorType.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-/**
- * PCEP error message type information.
- */
-public enum  PcepErrorType {
-    SESSIONESTABLISHMENTFAILURE(1),
-    CAPABALITYNOTSUPPORTED(2),
-    UNKNOWNOBJECT(3),
-    NOTSUPPORTEDOBJECT(4),
-    POLICYVIOLATION(5),
-    MANDATORYOBJECTMISSING(6),
-    SYNCHRONIZEDPATHCOMPUTATIONREQUESTMISSING(7),
-    UNKNOWNREQUESTREFERENCE(8),
-    ESTABLISHINGSECONDPCEPSESSION(9),
-    RECEPTIONOFINVALIDOBJECT(10),
-    INVALIDOPERATION(19),
-    VIRTUALNETWORKTLVMISSING(255);
-
-    int value;
-
-    /**
-     * Creates an instance of Pcep Error Type.
-     *
-     * @param value represents Error type
-     */
-    PcepErrorType(int value) {
-        this.value = value;
-    }
-
-    /**
-     * Gets the value representing Pcep Error Type.
-     *
-     * @return value represents Error Type
-     */
-    public  int value() {
-        return value;
-    }
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepEventListener.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepEventListener.java
deleted file mode 100644
index 06d49ed..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepEventListener.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.pcepio.protocol.PcepMessage;
-/**
- * Notifies providers about PCEP message events.
- */
-public interface PcepEventListener {
-
-    /**
-     * Handles the message event.
-     *
-     * @param pccId id of the pcc
-     * @param msg the message
-     */
-    void handleMessage(PccId pccId, PcepMessage msg);
-
-    /**
-     * Handles end of LSPDB sync actions.
-     *
-     * @param tunnel the tunnel on which action needs to be taken
-     * @param endOfSyncAction the action that needs to be taken for the tunnel
-     */
-    void handleEndOfSyncAction(Tunnel tunnel, PcepLspSyncAction endOfSyncAction);
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepLspStatus.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepLspStatus.java
deleted file mode 100644
index 9ced00a..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepLspStatus.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-import org.onosproject.incubator.net.tunnel.Tunnel.State;
-
-/**
- * Representation of the PCEP LSP state.
- */
-public enum PcepLspStatus {
-
-    /**
-     * Signifies that the LSP is not active.
-     */
-    DOWN,
-
-    /**
-     * Signifies that the LSP is signalled.
-     */
-    UP,
-
-    /**
-     * Signifies that the LSP is up and carrying traffic.
-     */
-    ACTIVE,
-
-    /**
-     * Signifies that the LSP is being torn down, resources are being released.
-     */
-    GOING_DOWN,
-
-    /**
-     * Signifies that the LSP is being signalled.
-     */
-    GOING_UP;
-
-    /**
-     * Returns the applicable PCEP LSP status corresponding to ONOS tunnel state.
-     *
-     * @param tunnelState ONOS tunnel state
-     * @return LSP status as per protocol
-     */
-    public static PcepLspStatus getLspStatusFromTunnelStatus(State tunnelState) {
-
-        switch (tunnelState) {
-
-        case INIT:
-            return PcepLspStatus.DOWN;
-
-        case ESTABLISHED:
-            return PcepLspStatus.GOING_UP;
-
-        case ACTIVE:
-            return PcepLspStatus.UP;
-
-        case FAILED: // fall through
-        case INACTIVE: // LSP is administratively down.
-        default:
-            return PcepLspStatus.DOWN;
-        }
-    }
-
-    /**
-     * Returns the applicable ONOS tunnel state corresponding to PCEP LSP status.
-     *
-     * @param lspState PCEP LSP status
-     * @return tunnel state
-     */
-    public static State getTunnelStatusFromLspStatus(PcepLspStatus lspState) {
-
-        switch (lspState) {
-
-        case DOWN:
-            return State.FAILED;
-
-        case UP: // fall through
-        case ACTIVE:
-            return State.ACTIVE;
-
-        case GOING_DOWN:
-            return State.FAILED;
-
-        case GOING_UP:
-            return State.ESTABLISHED;
-
-        default:
-            return State.FAILED;
-        }
-    }
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepLspSyncAction.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepLspSyncAction.java
deleted file mode 100644
index c120df3..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepLspSyncAction.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-/**
- * Representation of actions to be taken for LSPs on end of LSP-DB sync.
- */
-public enum PcepLspSyncAction {
-
-    /**
-     * Specifies that delete message for PCE intiiated tunnel should be sent.
-     */
-    SEND_DELETE(0),
-
-    /**
-     * Specifies that update message should be sent.
-     */
-    SEND_UPDATE(1),
-
-    /**
-     * Specifies that the tunnel should be removed from PCE.
-     */
-    REMOVE(2),
-
-    /**
-     * Specifies that the status of the tunnel should be set as unstable.
-     */
-    UNSTABLE(3);
-
-    int value;
-
-    /**
-     * Assigns val with the value for actions to be taken for LSPs on end of LSP-DB sync.
-     *
-     * @param val sync status
-     */
-    PcepLspSyncAction(int val) {
-        value = val;
-    }
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepNodeListener.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepNodeListener.java
deleted file mode 100644
index 1bb0b95..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepNodeListener.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-/**
- * Notifies providers about PCEP node events.
- */
-public interface PcepNodeListener {
-
-    /**
-     * Notifies that the node was added.
-     *
-     * @param pc PCEP client details
-     */
-    void addDevicePcepConfig(PcepClient pc);
-
-    /**
-     * Notifies that the node was removed.
-     *
-     * @param pccId PCEP client ID
-     */
-    void deleteDevicePcepConfig(PccId pccId);
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepPacketStats.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepPacketStats.java
deleted file mode 100644
index 5802cc5..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepPacketStats.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-/**
- * The representation for PCEP packet statistics.
- */
-public interface PcepPacketStats {
-
-    /**
-     * Returns the count for no of packets sent out.
-     *
-     * @return int value of no of packets sent
-     */
-    int outPacketCount();
-
-    /**
-     * Returns the count for no of packets received.
-     *
-     * @return int value of no of packets sent
-     */
-    int inPacketCount();
-
-    /**
-     * Returns the count for no of wrong packets received.
-     *
-     * @return int value of no of wrong packets received
-     */
-    int wrongPacketCount();
-
-    /**
-     * Returns the time value.
-     *
-     * @return long value of time
-     */
-    long getTime();
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepSyncStatus.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepSyncStatus.java
deleted file mode 100644
index e487b95..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/PcepSyncStatus.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-/**
- * Representation of PCEP database sync status on session establishment.
- */
-public enum PcepSyncStatus {
-
-    /**
-     * Specifies that the DB state is not synchronized.
-     */
-    NOT_SYNCED(0),
-
-    /**
-     * Specifies that the DB state is currently undergoing synchronization.
-     */
-    IN_SYNC(1),
-
-    /**
-     * Specifies that the DB state synchronization is completed.
-     */
-    SYNCED(2);
-
-    int value;
-
-    /**
-     * Assign val with the value as the sync status.
-     *
-     * @param val sync status
-     */
-    PcepSyncStatus(int val) {
-        value = val;
-    }
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/SrpIdGenerators.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/SrpIdGenerators.java
deleted file mode 100644
index 8d73287..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/SrpIdGenerators.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.slf4j.Logger;
-
-/**
- * Unique Srp Id generator for pcep messages.
- */
-public final class SrpIdGenerators {
-
-    private static final Logger log = getLogger(SrpIdGenerators.class);
-    private static final AtomicInteger SRP_ID_GEN = new AtomicInteger();
-    private static final int MAX_SRP_ID = 0x7FFFFFFF;
-    private static int srpId;
-
-    /**
-     * Default constructor.
-     */
-    private SrpIdGenerators() {
-    }
-
-    /**
-     * Get the next srp id.
-     *
-     * @return srp id
-     */
-    public static int create() {
-        do {
-            if (srpId >= MAX_SRP_ID) {
-                if (SRP_ID_GEN.get() >= MAX_SRP_ID) {
-                    SRP_ID_GEN.set(0);
-                }
-            }
-            srpId = SRP_ID_GEN.incrementAndGet();
-        } while (srpId > MAX_SRP_ID);
-        return srpId;
-    }
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/driver/PcepAgent.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/driver/PcepAgent.java
deleted file mode 100644
index 42f25cc..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/driver/PcepAgent.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server.driver;
-
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepClient;
-import org.onosproject.pcepio.protocol.PcepMessage;
-
-/**
- * Responsible for keeping track of the current set Pcep clients
- * connected to the system.
- *
- */
-public interface PcepAgent {
-
-    /**
-     * Add a pcc client that has just connected to the system.
-     *
-     * @param pccId the id of pcc client to add
-     * @param pc the actual pce client object.
-     * @return true if added, false otherwise.
-     */
-    boolean addConnectedClient(PccId pccId, PcepClient pc);
-
-    /**
-     * Checks if the activation for this pcc client is valid.
-     *
-     * @param pccId the id of pcc client to check
-     * @return true if valid, false otherwise
-     */
-    boolean validActivation(PccId pccId);
-
-    /**
-     * Clear all state in controller client maps for a pcc client that has
-     * disconnected from the local controller. Also release control for
-     * that pccIds client from the global repository. Notify client listeners.
-     *
-     * @param pccIds the id of pcc client to remove.
-     */
-    void removeConnectedClient(PccId pccIds);
-
-    /**
-     * Process a message coming from a pcc client.
-     *
-     * @param pccId the id of pcc client the message was received.
-     * @param m the message to process
-     */
-    void processPcepMessage(PccId pccId, PcepMessage m);
-
-    /**
-     * Adds PCEP device when session is successfully established.
-     *
-     * @param pc PCEP client details
-     */
-    void addNode(PcepClient pc);
-
-    /**
-     * Removes PCEP device when session is disconnected.
-     *
-     * @param pccId PCEP client ID
-     */
-    void deleteNode(PccId pccId);
-
-    /**
-     * Analyzes report messages received during LSP DB sync again tunnel store and takes necessary actions.
-     *
-     * @param pccId the id of pcc client
-     * @return success or failure
-     */
-    boolean analyzeSyncMsgList(PccId pccId);
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/driver/PcepClientDriver.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/driver/PcepClientDriver.java
deleted file mode 100644
index 58fc33f..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/driver/PcepClientDriver.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server.driver;
-
-import org.jboss.netty.channel.Channel;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepClient;
-import org.onosproject.pcep.server.PcepPacketStats;
-import org.onosproject.pcepio.protocol.PcepVersion;
-
-
-/**
- * Represents the driver side of an Path computation client(pcc).
- *
- */
-public interface PcepClientDriver extends PcepClient {
-
-    /**
-     * Sets the Pcep agent to be used. This method
-     * can only be called once.
-     *
-     * @param agent the agent to set.
-     */
-    void setAgent(PcepAgent agent);
-
-    /**
-     * Announce to the Pcep agent that this pcc client has connected.
-     *
-     * @return true if successful, false if duplicate switch.
-     */
-    boolean connectClient();
-
-    /**
-     * Remove this pcc client from the Pcep agent.
-     */
-    void removeConnectedClient();
-
-    /**
-     * Sets the PCEP version for this pcc.
-     *
-     * @param pcepVersion the version to set.
-     */
-    void setPcVersion(PcepVersion pcepVersion);
-
-    /**
-     * Sets the associated Netty channel for this pcc.
-     *
-     * @param channel the Netty channel
-     */
-    void setChannel(Channel channel);
-
-
-    /**
-     * Sets the keep alive time for this pcc.
-     *
-     * @param keepAliveTime the keep alive time to set.
-     */
-    void setPcKeepAliveTime(byte keepAliveTime);
-
-    /**
-     * Sets the dead time for this pcc.
-     *
-     * @param deadTime the dead timer value to set.
-     */
-    void setPcDeadTime(byte deadTime);
-
-    /**
-     * Sets the session id for this pcc.
-     *
-     * @param sessionId the session id value to set.
-     */
-    void setPcSessionId(byte sessionId);
-
-    /**
-     * Sets whether the pcc is connected.
-     *
-     * @param connected whether the pcc is connected
-     */
-    void setConnected(boolean connected);
-
-    /**
-     * Initializes the behavior.
-     *
-     * @param pccId id of pcc
-     * @param pcepVersion Pcep version
-     * @param pktStats Pcep Packet Stats
-     */
-    void init(PccId pccId, PcepVersion pcepVersion, PcepPacketStats pktStats);
-
-    /**
-     * Checks whether the handshake is complete.
-     *
-     * @return true is finished, false if not.
-     */
-    boolean isHandshakeComplete();
-
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/driver/PcepClientDriverFactory.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/driver/PcepClientDriverFactory.java
deleted file mode 100644
index 46e04ff..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/driver/PcepClientDriverFactory.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server.driver;
-
-import org.onlab.packet.IpAddress;
-import org.onosproject.pcepio.protocol.PcepVersion;
-
-/**
- * Pcc Client factory which returns concrete pcc client objects for the
- * physical pcc client in use.
- *
- */
-public interface PcepClientDriverFactory {
-
-
-    /**
-     * Constructs the real Pcep Client representation.
-     *
-     * @param pccIpAddress the ip address for this pcc client.
-     * @param pcepVersion the Pcep version in use
-     * @return the Pcep client representation.
-     */
-    PcepClientDriver getPcepClientImpl(IpAddress pccIpAddress,
-            PcepVersion pcepVersion);
-}
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/driver/package-info.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/driver/package-info.java
deleted file mode 100644
index 6e542e7..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/driver/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * PCEP client controller driver API.
- */
-package org.onosproject.pcep.server.driver;
diff --git a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/package-info.java b/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/package-info.java
deleted file mode 100644
index 8ed1233..0000000
--- a/protocols/pcep/server/api/src/main/java/org/onosproject/pcep/server/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * PCEP client controller API.
- */
-package org.onosproject.pcep.server;
diff --git a/protocols/pcep/server/api/src/test/java/org/onosproject/pcep/server/PcepClientAdapter.java b/protocols/pcep/server/api/src/test/java/org/onosproject/pcep/server/PcepClientAdapter.java
deleted file mode 100644
index 6e503ef..0000000
--- a/protocols/pcep/server/api/src/test/java/org/onosproject/pcep/server/PcepClientAdapter.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-import org.jboss.netty.channel.Channel;
-import org.onosproject.pcepio.protocol.PcepFactories;
-import org.onosproject.pcepio.protocol.PcepFactory;
-import org.onosproject.pcepio.protocol.PcepMessage;
-import org.onosproject.pcepio.protocol.PcepStateReport;
-import org.onosproject.pcepio.protocol.PcepVersion;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.RejectedExecutionException;
-
-import static org.junit.Assert.assertNotNull;
-
-/**
- * Representation of PCEP client adapter.
- */
-public class PcepClientAdapter implements PcepClient {
-
-    private Channel channel;
-    protected String channelId;
-
-    private boolean connected;
-    private PccId pccId;
-    private ClientCapability capability;
-
-    private PcepVersion pcepVersion;
-    private PcepSyncStatus lspDbSyncStatus;
-    private PcepSyncStatus labelDbSyncStatus;
-    private Map<LspKey, Boolean> lspDelegationInfo = new HashMap<>();
-
-    /**
-     * Initialize instance with specified parameters.
-     *
-     * @param pccId PCC id
-     * @param pcepVersion PCEP message version
-     */
-    public void init(PccId pccId, PcepVersion pcepVersion) {
-        this.pccId = pccId;
-        this.pcepVersion = pcepVersion;
-    }
-
-    @Override
-    public final void disconnectClient() {
-        this.channel.close();
-    }
-
-    @Override
-    public final void sendMessage(PcepMessage m) {
-    }
-
-    @Override
-    public final void sendMessage(List<PcepMessage> msgs) {
-        try {
-            PcepMessage pcepMsg = msgs.get(0);
-            assertNotNull("PCEP MSG should be created.", pcepMsg);
-        } catch (RejectedExecutionException e) {
-            throw e;
-        }
-    }
-
-    @Override
-    public final boolean isConnected() {
-        return this.connected;
-    }
-
-    @Override
-    public String channelId() {
-        return channelId;
-    }
-
-    @Override
-    public final PccId getPccId() {
-        return this.pccId;
-    }
-
-    @Override
-    public final String getStringId() {
-        return this.pccId.toString();
-    }
-
-    @Override
-    public final void handleMessage(PcepMessage m) {
-    }
-
-    @Override
-    public boolean isOptical() {
-        return false;
-    }
-
-    @Override
-    public PcepFactory factory() {
-        return PcepFactories.getFactory(pcepVersion);
-    }
-
-    @Override
-    public void setLspDbSyncStatus(PcepSyncStatus syncStatus) {
-        this.lspDbSyncStatus = syncStatus;
-    }
-
-    @Override
-    public PcepSyncStatus lspDbSyncStatus() {
-        return lspDbSyncStatus;
-    }
-
-    @Override
-    public void setLabelDbSyncStatus(PcepSyncStatus syncStatus) {
-        this.labelDbSyncStatus = syncStatus;
-    }
-
-    @Override
-    public PcepSyncStatus labelDbSyncStatus() {
-        return labelDbSyncStatus;
-    }
-
-    @Override
-    public void setCapability(ClientCapability capability) {
-        this.capability = capability;
-    }
-
-    @Override
-    public ClientCapability capability() {
-        return capability;
-    }
-
-    @Override
-    public void addNode(PcepClient pc) {
-    }
-
-    @Override
-    public void deleteNode(PccId pccId) {
-    }
-
-    @Override
-    public void setLspAndDelegationInfo(LspKey lspKey, boolean dFlag) {
-        lspDelegationInfo.put(lspKey, dFlag);
-    }
-
-    @Override
-    public Boolean delegationInfo(LspKey lspKey) {
-        return lspDelegationInfo.get(lspKey);
-    }
-
-    @Override
-    public void initializeSyncMsgList(PccId pccId) {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public List<PcepStateReport> getSyncMsgList(PccId pccId) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public void removeSyncMsgList(PccId pccId) {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public void addSyncMsgToList(PccId pccId, PcepStateReport rptMsg) {
-        // TODO Auto-generated method stub
-
-    }
-}
diff --git a/protocols/pcep/server/api/src/test/java/org/onosproject/pcep/server/PcepClientControllerAdapter.java b/protocols/pcep/server/api/src/test/java/org/onosproject/pcep/server/PcepClientControllerAdapter.java
deleted file mode 100644
index b5e448e..0000000
--- a/protocols/pcep/server/api/src/test/java/org/onosproject/pcep/server/PcepClientControllerAdapter.java
+++ /dev/null
@@ -1,335 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server;
-
-
-import com.google.common.collect.Sets;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Deactivate;
-import org.onlab.packet.IpAddress;
-import org.onosproject.incubator.net.tunnel.DefaultLabelStack;
-import org.onosproject.incubator.net.tunnel.LabelStack;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.net.Path;
-import org.onosproject.pcep.server.driver.PcepAgent;
-import org.onosproject.pcepio.protocol.PcepError;
-import org.onosproject.pcepio.protocol.PcepErrorInfo;
-import org.onosproject.pcepio.protocol.PcepErrorMsg;
-import org.onosproject.pcepio.protocol.PcepErrorObject;
-import org.onosproject.pcepio.protocol.PcepFactory;
-import org.onosproject.pcepio.protocol.PcepMessage;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.onosproject.pcepio.types.PcepValueType;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-import static org.onosproject.pcepio.types.PcepErrorDetailInfo.ERROR_TYPE_19;
-import static org.onosproject.pcepio.types.PcepErrorDetailInfo.ERROR_VALUE_5;
-
-/**
- * Representation of PCEP client controller adapter.
- */
-public class PcepClientControllerAdapter implements PcepClientController {
-
-    protected ConcurrentHashMap<PccId, PcepClient> connectedClients =
-            new ConcurrentHashMap<PccId, PcepClient>();
-
-    protected PcepClientAgent agent = new PcepClientAgent();
-    protected Set<PcepClientListener> pcepClientListener = new HashSet<>();
-
-    protected Set<PcepEventListener> pcepEventListener = Sets.newHashSet();
-    public Set<PcepNodeListener> pcepNodeListener = Sets.newHashSet();
-
-    @Activate
-    public void activate() {
-    }
-
-    @Deactivate
-    public void deactivate() {
-    }
-
-    @Override
-    public Collection<PcepClient> getClients() {
-        return connectedClients.values();
-    }
-
-    @Override
-    public PcepClient getClient(PccId pccId) {
-        if (null != connectedClients.get(pccId)) {
-            return connectedClients.get(pccId);
-        }
-        PcepClientAdapter pc = new PcepClientAdapter();
-        if (pccId.ipAddress().equals(IpAddress.valueOf(0xC010103))
-                || pccId.ipAddress().equals(IpAddress.valueOf(0xB6024E22))) {
-            pc.setCapability(new ClientCapability(true, false, false, false, false));
-        } else {
-            pc.setCapability(new ClientCapability(true, true, true, false, false));
-        }
-        pc.init(PccId.pccId(pccId.ipAddress()), PcepVersion.PCEP_1);
-        connectedClients.put(pccId, pc);
-        return pc;
-    }
-
-    @Override
-    public void addListener(PcepClientListener listener) {
-        if (!pcepClientListener.contains(listener)) {
-            this.pcepClientListener.add(listener);
-        }
-    }
-
-    @Override
-    public void addNodeListener(PcepNodeListener listener) {
-        pcepNodeListener.add(listener);
-    }
-
-    @Override
-    public void removeNodeListener(PcepNodeListener listener) {
-        pcepNodeListener.remove(listener);
-    }
-
-    @Override
-    public void removeListener(PcepClientListener listener) {
-        this.pcepClientListener.remove(listener);
-    }
-
-    @Override
-    public void addEventListener(PcepEventListener listener) {
-        pcepEventListener.add(listener);
-    }
-
-    @Override
-    public void removeEventListener(PcepEventListener listener) {
-        pcepEventListener.remove(listener);
-    }
-
-    @Override
-    public void writeMessage(PccId pccId, PcepMessage msg) {
-        this.getClient(pccId).sendMessage(msg);
-    }
-
-    @Override
-    public void processClientMessage(PccId pccId, PcepMessage msg) {
-
-        PcepClient pc = getClient(pccId);
-
-        switch (msg.getType()) {
-            case NONE:
-                break;
-            case OPEN:
-                break;
-            case KEEP_ALIVE:
-                //log.debug("Sending Keep Alive Message  to {" + pccIpAddress.toString() + "}");
-                pc.sendMessage(Collections.singletonList(pc.factory().buildKeepaliveMsg().build()));
-                break;
-            case PATH_COMPUTATION_REQUEST:
-                break;
-            case PATH_COMPUTATION_REPLY:
-                break;
-            case NOTIFICATION:
-                break;
-            case ERROR:
-                break;
-            case CLOSE:
-                //log.debug("Sending Close Message  to { }", pccIpAddress.toString());
-                pc.sendMessage(Collections.singletonList(pc.factory().buildCloseMsg().build()));
-                break;
-            case INITIATE:
-                if (!pc.capability().pcInstantiationCapability()) {
-                    pc.sendMessage(Collections.singletonList(getErrMsg(pc.factory(),
-                            ERROR_TYPE_19, ERROR_VALUE_5)));
-                }
-                break;
-            case REPORT:
-                //Only update the listener if respective capability is supported else send PCEP-ERR msg
-                if (pc.capability().statefulPceCapability()) {
-                    for (PcepEventListener l : pcepEventListener) {
-                        l.handleMessage(pccId, msg);
-                    }
-                } else {
-                    // Send PCEP-ERROR message.
-                    pc.sendMessage(Collections.singletonList(getErrMsg(pc.factory(),
-                            ERROR_TYPE_19, ERROR_VALUE_5)));
-                }
-                break;
-            case UPDATE:
-                if (!pc.capability().statefulPceCapability()) {
-                    pc.sendMessage(Collections.singletonList(getErrMsg(pc.factory(),
-                            ERROR_TYPE_19, ERROR_VALUE_5)));
-                }
-                break;
-            case LABEL_UPDATE:
-                if (!pc.capability().pceccCapability()) {
-                    pc.sendMessage(Collections.singletonList(getErrMsg(pc.factory(),
-                            ERROR_TYPE_19, ERROR_VALUE_5)));
-                }
-                break;
-            case MAX:
-                break;
-            case END:
-                break;
-            default:
-                break;
-        }
-    }
-
-    @Override
-    public void closeConnectedClients() {
-        PcepClient pc;
-        for (PccId id : connectedClients.keySet()) {
-            pc = getClient(id);
-            pc.disconnectClient();
-        }
-    }
-
-    private PcepErrorMsg getErrMsg(PcepFactory factory, byte errorType, byte errorValue) {
-        LinkedList<PcepError> llPcepErr = new LinkedList<>();
-
-        LinkedList<PcepErrorObject> llerrObj = new LinkedList<>();
-        PcepErrorMsg errMsg;
-
-        PcepErrorObject errObj = factory.buildPcepErrorObject().setErrorValue(errorValue).setErrorType(errorType)
-                .build();
-
-        llerrObj.add(errObj);
-        PcepError pcepErr = factory.buildPcepError().setErrorObjList(llerrObj).build();
-
-        llPcepErr.add(pcepErr);
-
-        PcepErrorInfo errInfo = factory.buildPcepErrorInfo().setPcepErrorList(llPcepErr).build();
-
-        errMsg = factory.buildPcepErrorMsg().setPcepErrorInfo(errInfo).build();
-        return errMsg;
-    }
-
-    /**
-     * Implementation of an Pcep Agent which is responsible for
-     * keeping track of connected clients and the state in which
-     * they are.
-     */
-    public class PcepClientAgent implements PcepAgent {
-
-        @Override
-        public boolean addConnectedClient(PccId pccId, PcepClient pc) {
-
-            if (connectedClients.get(pccId) != null) {
-                return false;
-            } else {
-                connectedClients.put(pccId, pc);
-                for (PcepClientListener l : pcepClientListener) {
-                    l.clientConnected(pccId);
-                }
-                return true;
-            }
-        }
-
-        @Override
-        public boolean validActivation(PccId pccId) {
-            if (connectedClients.get(pccId) == null) {
-                //log.error("Trying to activate client but is not in "
-                //        + "connected switches: pccIp {}. Aborting ..", pccIpAddress.toString());
-                return false;
-            }
-
-            return true;
-        }
-
-        @Override
-        public void removeConnectedClient(PccId pccId) {
-            connectedClients.remove(pccId);
-            for (PcepClientListener l : pcepClientListener) {
-                //log.warn("removal for {}", pccIpAddress.toString());
-                l.clientDisconnected(pccId);
-            }
-        }
-
-        @Override
-        public void processPcepMessage(PccId pccId, PcepMessage m) {
-            processClientMessage(pccId, m);
-        }
-
-        @Override
-        public void addNode(PcepClient pc) {
-            for (PcepNodeListener l : pcepNodeListener) {
-                l.addDevicePcepConfig(pc);
-            }
-        }
-
-        @Override
-        public void deleteNode(PccId pccId) {
-            for (PcepNodeListener l : pcepNodeListener) {
-                l.deleteDevicePcepConfig(pccId);
-            }
-        }
-
-        @Override
-        public boolean analyzeSyncMsgList(PccId pccId) {
-            // TODO Auto-generated method stub
-            return false;
-        }
-    }
-
-    @Override
-    public LabelStack computeLabelStack(Path path) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public LinkedList<PcepValueType> createPcepLabelStack(DefaultLabelStack labelStack, Path path) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Map<String, List<String>> getPcepExceptions() {
-        return null;
-    }
-
-    @Override
-    public Map<Integer, Integer> getPcepErrorMsg() {
-        return null;
-    }
-
-    @Override
-    public Map<String, String> getPcepSessionMap() {
-        return null;
-    }
-
-    @Override
-    public Map<String, Byte> getPcepSessionIdMap() {
-        return null;
-    }
-
-    @Override
-    public void peerErrorMsg(String peerId, Integer errorType, Integer errValue) {
-        return;
-    }
-
-
-    @Override
-    public boolean allocateLocalLabel(Tunnel tunnel) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-}
-
diff --git a/protocols/pcep/server/ctl/BUILD b/protocols/pcep/server/ctl/BUILD
deleted file mode 100644
index f470e41..0000000
--- a/protocols/pcep/server/ctl/BUILD
+++ /dev/null
@@ -1,18 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + NETTY + JACKSON + KRYO + [
-    "@io_netty_netty//jar",
-    "//apps/tunnel/api:onos-apps-tunnel-api",
-    "//protocols/pcep/pcepio:onos-protocols-pcep-pcepio",
-    "//protocols/pcep/server/api:onos-protocols-pcep-server-api",
-    "//core/store/serializers:onos-core-serializers",
-    "//apps/pcep-api:onos-apps-pcep-api",
-]
-
-TEST_DEPS = TEST_ADAPTERS + [
-    "//protocols/pcep/server/api:onos-protocols-pcep-server-api-tests",
-    "//apps/tunnel/api:onos-apps-tunnel-api-tests",
-]
-
-osgi_jar_with_tests(
-    test_deps = TEST_DEPS,
-    deps = COMPILE_DEPS,
-)
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/DefaultLspLocalLabelInfo.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/DefaultLspLocalLabelInfo.java
deleted file mode 100644
index be262f0..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/DefaultLspLocalLabelInfo.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore;
-
-import com.google.common.base.MoreObjects;
-
-import java.util.Objects;
-
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-import org.onosproject.pcelabelstore.api.LspLocalLabelInfo;
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-
-/**
- * Local node details including IN and OUT labels as well as IN and OUT port details.
- */
-public final class DefaultLspLocalLabelInfo implements LspLocalLabelInfo {
-
-    private final DeviceId deviceId;
-    private final LabelResourceId inLabelId;
-    private final LabelResourceId outLabelId;
-    private final PortNumber inPort;
-    private final PortNumber outPort;
-
-    /**
-     * Initialization of member variables.
-     *
-     * @param deviceId device id
-     * @param inLabelId in label id of a node
-     * @param outLabelId out label id of a node
-     * @param inPort input port
-     * @param outPort remote port
-     */
-    private DefaultLspLocalLabelInfo(DeviceId deviceId,
-                                     LabelResourceId inLabelId,
-                                     LabelResourceId outLabelId,
-                                     PortNumber inPort,
-                                     PortNumber outPort) {
-       this.deviceId = deviceId;
-       this.inLabelId = inLabelId;
-       this.outLabelId = outLabelId;
-       this.inPort = inPort;
-       this.outPort = outPort;
-    }
-
-    /**
-     * Initialization of member variables for serialization.
-     */
-    private DefaultLspLocalLabelInfo() {
-       this.deviceId = null;
-       this.inLabelId = null;
-       this.outLabelId = null;
-       this.inPort = null;
-       this.outPort = null;
-    }
-
-    @Override
-    public DeviceId deviceId() {
-       return deviceId;
-    }
-
-    @Override
-    public LabelResourceId inLabelId() {
-       return inLabelId;
-    }
-
-    @Override
-    public LabelResourceId outLabelId() {
-       return outLabelId;
-    }
-
-    @Override
-    public PortNumber inPort() {
-       return inPort;
-    }
-
-    @Override
-    public PortNumber outPort() {
-       return outPort;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(deviceId, inLabelId, outLabelId, inPort, outPort);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof LspLocalLabelInfo) {
-            final DefaultLspLocalLabelInfo other = (DefaultLspLocalLabelInfo) obj;
-            return Objects.equals(this.deviceId, other.deviceId) &&
-                    Objects.equals(this.inLabelId, other.inLabelId) &&
-                    Objects.equals(this.outLabelId, other.outLabelId) &&
-                    Objects.equals(this.inPort, other.inPort) &&
-                    Objects.equals(this.outPort, other.outPort);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .omitNullValues()
-                .add("DeviceId", deviceId)
-                .add("InLabelId", inLabelId)
-                .add("OutLabelId", outLabelId)
-                .add("InPort", inPort)
-                .add("OutPort", outPort)
-                .toString();
-    }
-
-    /**
-     * Creates and returns a new builder instance that clones an existing object.
-     *
-     * @param deviceLabelInfo device label information
-     * @return new builder
-     */
-    public static Builder builder(LspLocalLabelInfo deviceLabelInfo) {
-        return new Builder(deviceLabelInfo);
-    }
-
-    /**
-     * Creates and returns a new builder instance.
-     *
-     * @return new builder
-     */
-    public static Builder builder() {
-        return new Builder();
-    }
-
-    /**
-     * Builder.
-     */
-    public static final class Builder implements LspLocalLabelInfo.Builder {
-        private DeviceId deviceId;
-        private LabelResourceId inLabelId;
-        private LabelResourceId outLabelId;
-        private PortNumber inPort;
-        private PortNumber outPort;
-
-        /**
-         * Constructs default builder.
-         */
-        private Builder() {
-        }
-
-        /**
-         * Initializes member variables with existing object.
-         */
-        private Builder(LspLocalLabelInfo deviceLabelInfo) {
-            this.deviceId = deviceLabelInfo.deviceId();
-            this.inLabelId = deviceLabelInfo.inLabelId();
-            this.outLabelId = deviceLabelInfo.outLabelId();
-            this.inPort = deviceLabelInfo.inPort();
-            this.outPort = deviceLabelInfo.outPort();
-        }
-
-        @Override
-        public Builder deviceId(DeviceId id) {
-            this.deviceId = id;
-            return this;
-        }
-
-        @Override
-        public Builder inLabelId(LabelResourceId id) {
-            this.inLabelId = id;
-            return this;
-        }
-
-        @Override
-        public Builder outLabelId(LabelResourceId id) {
-            this.outLabelId = id;
-            return this;
-        }
-
-        @Override
-        public Builder inPort(PortNumber port) {
-            this.inPort = port;
-            return this;
-        }
-
-        @Override
-        public Builder outPort(PortNumber port) {
-            this.outPort = port;
-            return this;
-        }
-
-        @Override
-        public LspLocalLabelInfo build() {
-            return new DefaultLspLocalLabelInfo(deviceId, inLabelId, outLabelId, inPort, outPort);
-        }
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/DistributedPceLabelStore.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/DistributedPceLabelStore.java
deleted file mode 100644
index 6288134..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/DistributedPceLabelStore.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore;
-
-import org.onlab.util.KryoNamespace;
-import org.onosproject.incubator.net.resource.label.LabelResource;
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.pcelabelstore.api.LspLocalLabelInfo;
-import org.onosproject.pcelabelstore.api.PceLabelStore;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.ConsistentMap;
-import org.onosproject.store.service.Serializer;
-import org.onosproject.store.service.StorageService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Manages the pool of available labels to devices, links and tunnels.
- */
-@Component(immediate = true, service = PceLabelStore.class)
-public class DistributedPceLabelStore implements PceLabelStore {
-
-    private static final String DEVICE_ID_NULL = "Device ID cannot be null";
-    private static final String LABEL_RESOURCE_ID_NULL = "Label Resource Id cannot be null";
-    private static final String LINK_NULL = "LINK cannot be null";
-    private static final String PCECC_TUNNEL_INFO_NULL = "PCECC Tunnel Info cannot be null";
-    private static final String TUNNEL_ID_NULL = "Tunnel Id cannot be null";
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected StorageService storageService;
-
-    // Mapping device with global node label
-    private ConsistentMap<DeviceId, LabelResourceId> globalNodeLabelMap;
-
-    // Mapping link with adjacency label
-    private ConsistentMap<Link, LabelResourceId> adjLabelMap;
-
-    // Mapping tunnel id with local labels.
-    private ConsistentMap<TunnelId, List<LspLocalLabelInfo>> tunnelLabelInfoMap;
-
-    // Locally maintain LSRID to device id mapping for better performance.
-    private Map<String, DeviceId> lsrIdDeviceIdMap = new HashMap<>();
-
-    // List of PCC LSR ids whose BGP device information was not available to perform
-    // label db sync.
-    private HashSet<DeviceId> pendinglabelDbSyncPccMap = new HashSet<>();
-
-    @Activate
-    protected void activate() {
-        globalNodeLabelMap = storageService.<DeviceId, LabelResourceId>consistentMapBuilder()
-                .withName("onos-pce-globalnodelabelmap")
-                .withSerializer(Serializer.using(
-                        new KryoNamespace.Builder()
-                                .register(KryoNamespaces.API)
-                                .register(LabelResourceId.class)
-                                .build()))
-                .build();
-
-        adjLabelMap = storageService.<Link, LabelResourceId>consistentMapBuilder()
-                .withName("onos-pce-adjlabelmap")
-                .withSerializer(Serializer.using(
-                        new KryoNamespace.Builder()
-                                .register(KryoNamespaces.API)
-                                .register(Link.class,
-                                          LabelResource.class,
-                                          LabelResourceId.class)
-                                .build()))
-                .build();
-
-        tunnelLabelInfoMap = storageService.<TunnelId, List<LspLocalLabelInfo>>consistentMapBuilder()
-                .withName("onos-pce-tunnellabelinfomap")
-                .withSerializer(Serializer.using(
-                        new KryoNamespace.Builder()
-                                .register(KryoNamespaces.API)
-                                .register(TunnelId.class,
-                                          DefaultLspLocalLabelInfo.class,
-                                          LabelResourceId.class,
-                                          DeviceId.class)
-                                .build()))
-                .build();
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        log.info("Stopped");
-    }
-
-    @Override
-    public boolean existsGlobalNodeLabel(DeviceId id) {
-        checkNotNull(id, DEVICE_ID_NULL);
-        return globalNodeLabelMap.containsKey(id);
-    }
-
-    @Override
-    public boolean existsAdjLabel(Link link) {
-        checkNotNull(link, LINK_NULL);
-        return adjLabelMap.containsKey(link);
-    }
-
-    @Override
-    public boolean existsTunnelInfo(TunnelId tunnelId) {
-        checkNotNull(tunnelId, TUNNEL_ID_NULL);
-        return tunnelLabelInfoMap.containsKey(tunnelId);
-    }
-
-    @Override
-    public int getGlobalNodeLabelCount() {
-        return globalNodeLabelMap.size();
-    }
-
-    @Override
-    public int getAdjLabelCount() {
-        return adjLabelMap.size();
-    }
-
-    @Override
-    public int getTunnelInfoCount() {
-        return tunnelLabelInfoMap.size();
-    }
-
-    @Override
-    public Map<DeviceId, LabelResourceId> getGlobalNodeLabels() {
-       return globalNodeLabelMap.entrySet().stream()
-                 .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().value()));
-    }
-
-    @Override
-    public Map<Link, LabelResourceId> getAdjLabels() {
-       return adjLabelMap.entrySet().stream()
-                 .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().value()));
-    }
-
-    @Override
-    public Map<TunnelId, List<LspLocalLabelInfo>> getTunnelInfos() {
-       return tunnelLabelInfoMap.entrySet().stream()
-                 .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().value()));
-    }
-
-    @Override
-    public LabelResourceId getGlobalNodeLabel(DeviceId id) {
-        checkNotNull(id, DEVICE_ID_NULL);
-        return globalNodeLabelMap.get(id) == null ? null : globalNodeLabelMap.get(id).value();
-    }
-
-    @Override
-    public LabelResourceId getAdjLabel(Link link) {
-        checkNotNull(link, LINK_NULL);
-        return adjLabelMap.get(link) == null ? null : adjLabelMap.get(link).value();
-    }
-
-    @Override
-    public List<LspLocalLabelInfo> getTunnelInfo(TunnelId tunnelId) {
-        checkNotNull(tunnelId, TUNNEL_ID_NULL);
-        return tunnelLabelInfoMap.get(tunnelId) == null ? null : tunnelLabelInfoMap.get(tunnelId).value();
-    }
-
-    @Override
-    public void addGlobalNodeLabel(DeviceId deviceId, LabelResourceId labelId) {
-        checkNotNull(deviceId, DEVICE_ID_NULL);
-        checkNotNull(labelId, LABEL_RESOURCE_ID_NULL);
-
-        globalNodeLabelMap.put(deviceId, labelId);
-    }
-
-    @Override
-    public void addAdjLabel(Link link, LabelResourceId labelId) {
-        checkNotNull(link, LINK_NULL);
-        checkNotNull(labelId, LABEL_RESOURCE_ID_NULL);
-
-        adjLabelMap.put(link, labelId);
-    }
-
-    @Override
-    public void addTunnelInfo(TunnelId tunnelId, List<LspLocalLabelInfo> lspLocalLabelInfoList) {
-        checkNotNull(tunnelId, TUNNEL_ID_NULL);
-        checkNotNull(lspLocalLabelInfoList, PCECC_TUNNEL_INFO_NULL);
-
-        tunnelLabelInfoMap.put(tunnelId, lspLocalLabelInfoList);
-    }
-
-    @Override
-    public boolean removeGlobalNodeLabel(DeviceId id) {
-        checkNotNull(id, DEVICE_ID_NULL);
-
-        if (globalNodeLabelMap.remove(id) == null) {
-            log.error("SR-TE node label deletion for device {} has failed.", id.toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removeAdjLabel(Link link) {
-        checkNotNull(link, LINK_NULL);
-
-        if (adjLabelMap.remove(link) == null) {
-            log.error("Adjacency label deletion for link {} hash failed.", link.toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removeTunnelInfo(TunnelId tunnelId) {
-        checkNotNull(tunnelId, TUNNEL_ID_NULL);
-
-        if (tunnelLabelInfoMap.remove(tunnelId) == null) {
-            log.error("Tunnel info deletion for tunnel id {} has failed.", tunnelId.toString());
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean addLsrIdDevice(String lsrId, DeviceId deviceId) {
-        checkNotNull(lsrId);
-        checkNotNull(deviceId);
-
-        lsrIdDeviceIdMap.put(lsrId, deviceId);
-        return true;
-    }
-
-    @Override
-    public boolean removeLsrIdDevice(String lsrId) {
-        checkNotNull(lsrId);
-
-        lsrIdDeviceIdMap.remove(lsrId);
-        return true;
-    }
-
-    @Override
-    public DeviceId getLsrIdDevice(String lsrId) {
-        checkNotNull(lsrId);
-
-        return lsrIdDeviceIdMap.get(lsrId);
-
-    }
-
-    @Override
-    public boolean addPccLsr(DeviceId lsrId) {
-        checkNotNull(lsrId);
-        pendinglabelDbSyncPccMap.add(lsrId);
-        return true;
-    }
-
-    @Override
-    public boolean removePccLsr(DeviceId lsrId) {
-        checkNotNull(lsrId);
-        pendinglabelDbSyncPccMap.remove(lsrId);
-        return true;
-    }
-
-    @Override
-    public boolean hasPccLsr(DeviceId lsrId) {
-        checkNotNull(lsrId);
-        return pendinglabelDbSyncPccMap.contains(lsrId);
-
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/PcepLabelOp.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/PcepLabelOp.java
deleted file mode 100644
index d879a86..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/PcepLabelOp.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore;
-
-/**
- * Representation of label operation over PCEP.
- */
-public enum PcepLabelOp {
-    /**
-     * Signifies that the label operation is addition.
-     */
-    ADD,
-
-    /**
-     * Signifies that the label operation is modification. This is reserved for future.
-     */
-    MODIFY,
-
-    /**
-     * Signifies that the label operation is deletion.
-     */
-    REMOVE
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/api/LspLocalLabelInfo.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/api/LspLocalLabelInfo.java
deleted file mode 100644
index 666449a..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/api/LspLocalLabelInfo.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore.api;
-
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-
-/**
- * Abstraction of an entity providing LSP local label information.
- */
-public interface LspLocalLabelInfo {
-
-    /**
-     * Returns device id.
-     *
-     * @return device id
-     */
-    DeviceId deviceId();
-
-    /**
-     * Returns in label id of a device.
-     *
-     * @return in label resource id
-     */
-    LabelResourceId inLabelId();
-
-    /**
-     * Returns out label id of a device.
-     *
-     * @return node out label resource id
-     */
-    LabelResourceId outLabelId();
-
-    /**
-     * Returns in port of an incoming label.
-     *
-     * @return in port
-     */
-    PortNumber inPort();
-
-    /**
-     * Returns next hop of an outgoing label.
-     *
-     * @return out port
-     */
-    PortNumber outPort();
-
-    /**
-     * LspLocalLabelInfo Builder.
-     */
-    interface Builder {
-
-        /**
-         * Returns builder object of a device id.
-         *
-         * @param id device id
-         * @return builder object of device id
-         */
-        Builder deviceId(DeviceId id);
-
-        /**
-         * Returns builder object of in label.
-         *
-         * @param id in label id
-         * @return builder object of in label id
-         */
-        Builder inLabelId(LabelResourceId id);
-
-        /**
-         * Returns builder object of out label.
-         *
-         * @param id out label id
-         * @return builder object of out label id
-         */
-        Builder outLabelId(LabelResourceId id);
-
-        /**
-         * Returns builder object of in port of an incoming label.
-         *
-         * @param port in port
-         * @return builder object of in port
-         */
-        Builder inPort(PortNumber port);
-
-        /**
-         * Returns builder object of next hop of an outgoing label.
-         *
-         * @param port out port
-         * @return builder object of out port
-         */
-        Builder outPort(PortNumber port);
-
-        /**
-         * Builds object of device local label info.
-         *
-         * @return object of device local label info.
-         */
-        LspLocalLabelInfo build();
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/api/PceLabelStore.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/api/PceLabelStore.java
deleted file mode 100644
index c732f25..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/api/PceLabelStore.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore.api;
-
-import java.util.List;
-
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import java.util.Map;
-
-/**
- * Abstraction of an entity providing pool of available labels to devices, links and tunnels.
- */
-public interface PceLabelStore {
-    /**
-     * Checks whether device id is present in global node label store.
-     *
-     * @param id device id
-     * @return success of failure
-     */
-    boolean existsGlobalNodeLabel(DeviceId id);
-
-    /**
-     * Checks whether link is present in adjacency label store.
-     *
-     * @param link link between devices
-     * @return success of failure
-     */
-    boolean existsAdjLabel(Link link);
-
-    /**
-     * Checks whether tunnel id is present in tunnel info store.
-     *
-     * @param tunnelId tunnel id
-     * @return success of failure
-     */
-    boolean existsTunnelInfo(TunnelId tunnelId);
-
-    /**
-     * Retrieves the node label count.
-     *
-     * @return node label count
-     */
-    int getGlobalNodeLabelCount();
-
-    /**
-     * Retrieves the adjacency label count.
-     *
-     * @return adjacency label count
-     */
-    int getAdjLabelCount();
-
-    /**
-     * Retrieves the tunnel info count.
-     *
-     * @return tunnel info count
-     */
-    int getTunnelInfoCount();
-
-    /**
-     * Retrieves device id and label pairs collection from global node label store.
-     *
-     * @return collection of device id and label pairs
-     */
-    Map<DeviceId, LabelResourceId> getGlobalNodeLabels();
-
-    /**
-     * Retrieves link and label pairs collection from adjacency label store.
-     *
-     * @return collection of link and label pairs
-     */
-    Map<Link, LabelResourceId> getAdjLabels();
-
-    /**
-     * Retrieves tunnel id and pcecc tunnel info pairs collection from tunnel info store.
-     *
-     * @return collection of tunnel id and pcecc tunnel info pairs
-     */
-    Map<TunnelId, List<LspLocalLabelInfo>> getTunnelInfos();
-
-    /**
-     * Retrieves node label for specified device id.
-     *
-     * @param id device id
-     * @return node label
-     */
-    LabelResourceId getGlobalNodeLabel(DeviceId id);
-
-    /**
-     * Retrieves adjacency label for specified link.
-     *
-     * @param link between devices
-     * @return adjacency label
-     */
-    LabelResourceId getAdjLabel(Link link);
-
-    /**
-     * Retrieves local label info with tunnel consumer id from tunnel info store.
-     *
-     * @param tunnelId tunnel id
-     * @return pcecc tunnel info
-     */
-    List<LspLocalLabelInfo> getTunnelInfo(TunnelId tunnelId);
-
-    /**
-     * Stores node label into global node label store.
-     *
-     * @param deviceId device id
-     * @param labelId node label id
-     */
-    void addGlobalNodeLabel(DeviceId deviceId, LabelResourceId labelId);
-
-    /**
-     * Stores adjacency label into adjacency label store.
-     *
-     * @param link link between nodes
-     * @param labelId link label id
-     */
-    void addAdjLabel(Link link, LabelResourceId labelId);
-
-    /**
-     * Stores local label info with tunnel consumer id into tunnel info store for specified tunnel id.
-     *
-     * @param tunnelId tunnel id
-     * @param lspLocalLabelInfoList local label info
-     */
-    void addTunnelInfo(TunnelId tunnelId, List<LspLocalLabelInfo> lspLocalLabelInfoList);
-
-    /**
-     * Removes device label from global node label store for specified device id.
-     *
-     * @param id device id
-     * @return success or failure
-     */
-    boolean removeGlobalNodeLabel(DeviceId id);
-
-    /**
-     * Removes adjacency label from adjacency label store for specified link information.
-     *
-     * @param link between nodes
-     * @return success or failure
-     */
-    boolean removeAdjLabel(Link link);
-
-    /**
-     * Removes local label info with tunnel consumer id from tunnel info store for specified tunnel id.
-     *
-     * @param tunnelId tunnel id
-     * @return success or failure
-     */
-    boolean removeTunnelInfo(TunnelId tunnelId);
-
-    /**
-     * Adds lsrid to device id mapping.
-     *
-     * @param lsrId lsrId of the device
-     * @param deviceId device id
-     * @return success or failure
-     */
-    boolean addLsrIdDevice(String lsrId, DeviceId deviceId);
-
-    /**
-     * Removes lsrid to device id mapping.
-     *
-     * @param lsrId lsrId of the device
-     * @return success or failure
-     */
-    boolean removeLsrIdDevice(String lsrId);
-
-    /**
-     * Gets lsrid to device id mapping.
-     *
-     * @param lsrId lsrId of the device
-     * @return device id of the lsrId
-     */
-    DeviceId getLsrIdDevice(String lsrId);
-
-    /**
-     * Adds lsrId of the PCC in form of device id for the PCC for which sync is pending due to non-availability of BGP.
-     * device.
-     *
-     * @param lsrId LSR id of the PCC in form of device id
-     * @return success or failure
-     */
-    public boolean addPccLsr(DeviceId lsrId);
-
-    /**
-     * Removes lsrId of the PCC in form of device id for the PCC for which pending sync is done.
-     *
-     * @param lsrId LSR id of the PCC in form of device id
-     * @return success or failure
-     */
-    public boolean removePccLsr(DeviceId lsrId);
-
-    /**
-     * Gets lsrId of the PCC in form of device id.
-     *
-     * @param lsrId LSR id of the PCC in form of device id
-     * @return success or failure
-     */
-    public boolean hasPccLsr(DeviceId lsrId);
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/api/package-info.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/api/package-info.java
deleted file mode 100644
index 9147dba..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/api/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * PCE store service API.
- */
-package org.onosproject.pcelabelstore.api;
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/package-info.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/package-info.java
deleted file mode 100644
index 0b4e482..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * PCE store application.
- */
-package org.onosproject.pcelabelstore;
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/BasicPceccHandler.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/BasicPceccHandler.java
deleted file mode 100644
index 7376c14..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/BasicPceccHandler.java
+++ /dev/null
@@ -1,579 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server.impl;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.LinkedList;
-
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.IpAddress;
-import org.onosproject.incubator.net.resource.label.DefaultLabelResource;
-import org.onosproject.incubator.net.resource.label.LabelResource;
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.incubator.net.resource.label.LabelResourceService;
-import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.pcelabelstore.DefaultLspLocalLabelInfo;
-import org.onosproject.pcelabelstore.PcepLabelOp;
-import org.onosproject.pcelabelstore.api.LspLocalLabelInfo;
-import org.onosproject.pcelabelstore.api.PceLabelStore;
-import org.onosproject.pcep.server.LspType;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepAnnotationKeys;
-import org.onosproject.pcep.server.PcepClient;
-import org.onosproject.pcep.server.PcepClientController;
-import org.onosproject.pcep.server.SrpIdGenerators;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepAttribute;
-import org.onosproject.pcepio.protocol.PcepBandwidthObject;
-import org.onosproject.pcepio.protocol.PcepEroObject;
-import org.onosproject.pcepio.protocol.PcepLabelObject;
-import org.onosproject.pcepio.protocol.PcepLabelUpdate;
-import org.onosproject.pcepio.protocol.PcepLabelUpdateMsg;
-import org.onosproject.pcepio.protocol.PcepLspObject;
-import org.onosproject.pcepio.protocol.PcepMsgPath;
-import org.onosproject.pcepio.protocol.PcepSrpObject;
-import org.onosproject.pcepio.protocol.PcepUpdateMsg;
-import org.onosproject.pcepio.protocol.PcepUpdateRequest;
-import org.onosproject.pcepio.types.IPv4SubObject;
-import org.onosproject.pcepio.types.NexthopIPv4addressTlv;
-import org.onosproject.pcepio.types.PathSetupTypeTlv;
-import org.onosproject.pcepio.types.PcepLabelDownload;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.onosproject.pcepio.types.StatefulIPv4LspIdentifiersTlv;
-import org.onosproject.pcepio.types.SymbolicPathNameTlv;
-import org.onosproject.net.Link;
-import org.onosproject.net.Path;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.Multimap;
-
-import static org.onosproject.pcep.server.PcepAnnotationKeys.BANDWIDTH;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.LSP_SIG_TYPE;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.PCE_INIT;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.DELEGATE;
-
-/**
- * Basic PCECC handler.
- * In Basic PCECC, after path computation will configure IN and OUT label to nodes.
- * [X]OUT---link----IN[Y]OUT---link-----IN[Z] where X, Y and Z are nodes.
- * For generating labels, will go thorough links in the path from Egress to Ingress.
- * In each link, will take label from destination node local pool as IN label,
- * and assign this label as OUT label to source node.
- */
-public final class BasicPceccHandler {
-    private static final Logger log = LoggerFactory.getLogger(BasicPceccHandler.class);
-    public static final int OUT_LABEL_TYPE = 0;
-    public static final int IN_LABEL_TYPE = 1;
-    public static final long IDENTIFIER_SET = 0x100000000L;
-    public static final long SET = 0xFFFFFFFFL;
-    private static final String LSRID = "lsrId";
-    private static final String LABEL_RESOURCE_SERVICE_NULL = "Label Resource Service cannot be null";
-    private static final String PCE_STORE_NULL = "PCE Store cannot be null";
-    private static BasicPceccHandler crHandlerInstance = null;
-    private LabelResourceService labelRsrcService;
-    private DeviceService deviceService;
-    private PceLabelStore pceStore;
-    private PcepClientController clientController;
-    private PcepLabelObject labelObj;
-
-    /**
-     * Initializes default values.
-     */
-    private BasicPceccHandler() {
-    }
-
-    /**
-     * Returns single instance of this class.
-     *
-     * @return this class single instance
-     */
-    public static synchronized BasicPceccHandler getInstance() {
-        if (crHandlerInstance == null) {
-            crHandlerInstance = new BasicPceccHandler();
-        }
-        return crHandlerInstance;
-    }
-
-    /**
-     * Initialization of label manager and pce store.
-     *
-     * @param labelRsrcService label resource service
-     * @param deviceService device service
-     * @param pceStore pce label store
-     * @param clientController client controller
-     */
-    public void initialize(LabelResourceService labelRsrcService,
-                           DeviceService deviceService,
-                           PceLabelStore pceStore,
-                           PcepClientController clientController) {
-        this.labelRsrcService = labelRsrcService;
-        this.deviceService = deviceService;
-        this.pceStore = pceStore;
-        this.clientController = clientController;
-    }
-
-    /**
-     * Allocates labels from local resource pool and configure these (IN and OUT) labels into devices.
-     *
-     * @param tunnel tunnel between ingress to egress
-     * @return success or failure
-     */
-    public boolean allocateLabel(Tunnel tunnel) {
-        long applyNum = 1;
-        boolean isLastLabelToPush = false;
-        Collection<LabelResource> labelRscList;
-
-        checkNotNull(labelRsrcService, LABEL_RESOURCE_SERVICE_NULL);
-        checkNotNull(pceStore, PCE_STORE_NULL);
-
-        List<Link> linkList = tunnel.path().links();
-        if ((linkList != null) && (!linkList.isEmpty())) {
-            // Sequence through reverse order to push local labels into devices
-            // Generation of labels from egress to ingress
-            for (ListIterator<Link> iterator = linkList.listIterator(linkList.size()); iterator.hasPrevious();) {
-                Link link = iterator.previous();
-                DeviceId dstDeviceId = link.dst().deviceId();
-                DeviceId srcDeviceId = link.src().deviceId();
-                labelRscList = labelRsrcService.applyFromDevicePool(dstDeviceId, applyNum);
-                if ((labelRscList != null) && (!labelRscList.isEmpty())) {
-                    // Link label value is taken from destination device local pool.
-                    // [X]OUT---link----IN[Y]OUT---link-----IN[Z] where X, Y and Z are nodes.
-                    // Link label value is used as OUT and IN for both ends
-                    // (source and destination devices) of the link.
-                    // Currently only one label is allocated to a device (destination device).
-                    // So, no need to iterate through list
-                    Iterator<LabelResource> labelIterator = labelRscList.iterator();
-                    DefaultLabelResource defaultLabelResource = (DefaultLabelResource) labelIterator.next();
-                    LabelResourceId labelId = defaultLabelResource.labelResourceId();
-                    log.debug("Allocated local label: " + labelId.toString()
-                              + "to device: " + defaultLabelResource.deviceId().toString());
-                    PortNumber dstPort = link.dst().port();
-
-                    // Check whether this is last link label to push
-                    if (!iterator.hasPrevious()) {
-                       isLastLabelToPush = true;
-                    }
-
-                    try {
-                        // Push into destination device
-                        // Destination device IN port is link.dst().port()
-                        pushLocalLabels(dstDeviceId, labelId, dstPort, tunnel, false,
-                                            Long.valueOf(LabelType.IN_LABEL.value), PcepLabelOp.ADD);
-
-                        // Push into source device
-                        // Source device OUT port will be link.dst().port(). Means its remote port used to send packet.
-                        pushLocalLabels(srcDeviceId, labelId, dstPort, tunnel, isLastLabelToPush,
-                                            Long.valueOf(LabelType.OUT_LABEL.value), PcepLabelOp.ADD);
-                    } catch (PcepParseException e) {
-                        log.error("Failed to push local label for device {} or {} for tunnel {}.",
-                                  dstDeviceId.toString(), srcDeviceId.toString(), tunnel.tunnelName().toString());
-                    }
-
-                    // Add or update pcecc tunnel info in pce store.
-                    updatePceccTunnelInfoInStore(srcDeviceId, dstDeviceId, labelId, dstPort,
-                                                 tunnel);
-                } else {
-                    log.error("Unable to allocate label to device id {}.", dstDeviceId.toString());
-                    releaseLabel(tunnel);
-                    return false;
-                }
-            }
-        } else {
-           log.error("Tunnel {} is having empty links.", tunnel.toString());
-           return false;
-        }
-        return true;
-    }
-
-    /**
-     * Updates list of local labels of PCECC tunnel info in pce store.
-     *
-     * @param srcDeviceId source device in a link
-     * @param dstDeviceId destination device in a link
-     * @param labelId label id of a link
-     * @param dstPort destination device port number of a link
-     * @param tunnel tunnel
-     */
-    public void updatePceccTunnelInfoInStore(DeviceId srcDeviceId, DeviceId dstDeviceId, LabelResourceId labelId,
-                                                PortNumber dstPort, Tunnel tunnel) {
-       // First try to retrieve device from store and update its label id if it is exists,
-       // otherwise add it
-       boolean dstDeviceUpdated = false;
-       boolean srcDeviceUpdated = false;
-
-       List<LspLocalLabelInfo> lspLabelInfoList = pceStore.getTunnelInfo(tunnel.tunnelId());
-       if ((lspLabelInfoList != null) && (!lspLabelInfoList.isEmpty())) {
-           for (int i = 0; i < lspLabelInfoList.size(); ++i) {
-               LspLocalLabelInfo lspLocalLabelInfo =
-                       lspLabelInfoList.get(i);
-               LspLocalLabelInfo.Builder lspLocalLabelInfoBuilder = null;
-               if (dstDeviceId.equals(lspLocalLabelInfo.deviceId())) {
-                   lspLocalLabelInfoBuilder = DefaultLspLocalLabelInfo.builder(lspLocalLabelInfo);
-                   lspLocalLabelInfoBuilder.inLabelId(labelId);
-                   // Destination device IN port will be link destination port
-                   lspLocalLabelInfoBuilder.inPort(dstPort);
-                   dstDeviceUpdated = true;
-               } else if (srcDeviceId.equals(lspLocalLabelInfo.deviceId())) {
-                   lspLocalLabelInfoBuilder = DefaultLspLocalLabelInfo.builder(lspLocalLabelInfo);
-                   lspLocalLabelInfoBuilder.outLabelId(labelId);
-                   // Source device OUT port will be link destination (remote) port
-                   lspLocalLabelInfoBuilder.outPort(dstPort);
-                   srcDeviceUpdated = true;
-               }
-
-               // Update
-               if ((lspLocalLabelInfoBuilder != null) && (dstDeviceUpdated || srcDeviceUpdated)) {
-                   lspLabelInfoList.set(i, lspLocalLabelInfoBuilder.build());
-               }
-           }
-       }
-
-       // If it is not found in store then add it to store
-       if (!dstDeviceUpdated || !srcDeviceUpdated) {
-           // If tunnel info itself not available then create new one, otherwise add node to list.
-           if (lspLabelInfoList == null) {
-              lspLabelInfoList = new LinkedList<>();
-           }
-
-           if (!dstDeviceUpdated) {
-               LspLocalLabelInfo lspLocalLabelInfo = DefaultLspLocalLabelInfo.builder()
-                   .deviceId(dstDeviceId)
-                   .inLabelId(labelId)
-                   .outLabelId(null)
-                   .inPort(dstPort) // Destination device IN port will be link destination port
-                   .outPort(null)
-                   .build();
-               lspLabelInfoList.add(lspLocalLabelInfo);
-           }
-
-           if (!srcDeviceUpdated) {
-               LspLocalLabelInfo lspLocalLabelInfo = DefaultLspLocalLabelInfo.builder()
-                   .deviceId(srcDeviceId)
-                   .inLabelId(null)
-                   .outLabelId(labelId)
-                   .inPort(null)
-                   .outPort(dstPort) // Source device OUT port will be link destination (remote) port
-                   .build();
-               lspLabelInfoList.add(lspLocalLabelInfo);
-           }
-
-           pceStore.addTunnelInfo(tunnel.tunnelId(), lspLabelInfoList);
-       }
-    }
-
-    /**
-     * Deallocates unused labels to device pools.
-     *
-     * @param tunnel tunnel between ingress to egress
-     */
-    public void releaseLabel(Tunnel tunnel) {
-
-       checkNotNull(labelRsrcService, LABEL_RESOURCE_SERVICE_NULL);
-       checkNotNull(pceStore, PCE_STORE_NULL);
-
-       Multimap<DeviceId, LabelResource> release = ArrayListMultimap.create();
-       List<LspLocalLabelInfo> lspLocalLabelInfoList = pceStore.getTunnelInfo(tunnel.tunnelId());
-       if ((lspLocalLabelInfoList != null) && (!lspLocalLabelInfoList.isEmpty())) {
-           for (Iterator<LspLocalLabelInfo> iterator = lspLocalLabelInfoList.iterator(); iterator.hasNext();) {
-               LspLocalLabelInfo lspLocalLabelInfo = iterator.next();
-               DeviceId deviceId = lspLocalLabelInfo.deviceId();
-               LabelResourceId inLabelId = lspLocalLabelInfo.inLabelId();
-               LabelResourceId outLabelId = lspLocalLabelInfo.outLabelId();
-               PortNumber inPort = lspLocalLabelInfo.inPort();
-               PortNumber outPort = lspLocalLabelInfo.outPort();
-
-               try {
-                   // Push into device
-                   if ((outLabelId != null) && (outPort != null)) {
-                       pushLocalLabels(deviceId, outLabelId, outPort, tunnel, false,
-                                       Long.valueOf(LabelType.OUT_LABEL.value), PcepLabelOp.REMOVE);
-                   }
-
-                   if ((inLabelId != null) && (inPort != null)) {
-                       pushLocalLabels(deviceId, inLabelId, inPort, tunnel, false,
-                                       Long.valueOf(LabelType.IN_LABEL.value), PcepLabelOp.REMOVE);
-                   }
-               } catch (PcepParseException e) {
-                   log.error("Failed to push local label for device {}for tunnel {}.", deviceId.toString(),
-                             tunnel.tunnelName().toString());
-               }
-
-               // List is stored from egress to ingress. So, using IN label id to release.
-               // Only one local label is assigned to device (destination node)
-               // and that is used as OUT label for source node.
-               // No need to release label for last node in the list from pool because label was not allocated to
-               // ingress node (source node).
-               if ((iterator.hasNext()) && (inLabelId != null)) {
-                   LabelResource labelRsc = new DefaultLabelResource(deviceId, inLabelId);
-                   release.put(deviceId, labelRsc);
-               }
-           }
-       }
-
-       // Release from label pool
-       if (!release.isEmpty()) {
-          labelRsrcService.releaseToDevicePool(release);
-       }
-
-       pceStore.removeTunnelInfo(tunnel.tunnelId());
-   }
-
-   //Pushes local labels to the device which is specific to path [CR-case].
-   private void pushLocalLabels(DeviceId deviceId, LabelResourceId labelId,
-            PortNumber portNum, Tunnel tunnel,
-            Boolean isBos, Long labelType, PcepLabelOp type) throws PcepParseException {
-
-        checkNotNull(deviceId);
-        checkNotNull(labelId);
-        checkNotNull(portNum);
-        checkNotNull(tunnel);
-        checkNotNull(labelType);
-        checkNotNull(type);
-
-        PcepClient pc = getPcepClient(deviceId);
-        if (pc == null) {
-            log.error("PCEP client not found");
-            return;
-        }
-
-        PcepLspObject lspObj;
-        LinkedList<PcepLabelUpdate> labelUpdateList = new LinkedList<>();
-        LinkedList<PcepLabelObject> labelObjects = new LinkedList<>();
-        PcepSrpObject srpObj;
-        PcepLabelDownload labelDownload = new PcepLabelDownload();
-        LinkedList<PcepValueType> optionalTlv = new LinkedList<>();
-
-        long portNo = portNum.toLong();
-        portNo = ((portNo & IDENTIFIER_SET) == IDENTIFIER_SET) ? portNo & SET : portNo;
-
-        optionalTlv.add(NexthopIPv4addressTlv.of((int) portNo));
-
-        PcepLabelObject labelObj = pc.factory().buildLabelObject()
-                                   .setOFlag(labelType == OUT_LABEL_TYPE ? true : false)
-                                   .setOptionalTlv(optionalTlv)
-                                   .setLabel((int) labelId.labelId())
-                                   .build();
-
-        /**
-         * Check whether transit node or not. For transit node, label update message should include IN and OUT labels.
-         * Hence store IN label object and next when out label comes add IN and OUT label objects and encode label
-         * update message and send to specified client.
-         */
-        if (!deviceId.equals(tunnel.path().src().deviceId()) && !deviceId.equals(tunnel.path().dst().deviceId())) {
-            //Device is transit node
-            if (labelType == OUT_LABEL_TYPE) {
-                //Store label object having IN label value
-                this.labelObj = labelObj;
-                return;
-            }
-            //Add IN label object
-            labelObjects.add(this.labelObj);
-        }
-
-        //Add OUT label object in case of transit node
-        labelObjects.add(labelObj);
-
-        srpObj = getSrpObject(pc, type, false);
-
-        String lspId = tunnel.annotations().value(PcepAnnotationKeys.LOCAL_LSP_ID);
-        String plspId = tunnel.annotations().value(PcepAnnotationKeys.PLSP_ID);
-        String tunnelIdentifier = tunnel.annotations().value(PcepAnnotationKeys.PCC_TUNNEL_ID);
-
-        LinkedList<PcepValueType> tlvs = new LinkedList<>();
-        StatefulIPv4LspIdentifiersTlv lspIdTlv = new StatefulIPv4LspIdentifiersTlv(((IpTunnelEndPoint) tunnel.src())
-                .ip().getIp4Address().toInt(), Short.valueOf(lspId), Short.valueOf(tunnelIdentifier),
-                ((IpTunnelEndPoint) tunnel.src()).ip().getIp4Address().toInt(),
-                ((IpTunnelEndPoint) tunnel.dst()).ip().getIp4Address().toInt());
-        tlvs.add(lspIdTlv);
-
-        if (tunnel.tunnelName().value() != null) {
-            SymbolicPathNameTlv pathNameTlv = new SymbolicPathNameTlv(tunnel.tunnelName().value().getBytes());
-            tlvs.add(pathNameTlv);
-        }
-
-        boolean delegated = (tunnel.annotations().value(DELEGATE) == null) ? false
-                                                                           : Boolean.valueOf(tunnel.annotations()
-                                                                                   .value(DELEGATE));
-        boolean initiated = (tunnel.annotations().value(PCE_INIT) == null) ? false
-                                                                           : Boolean.valueOf(tunnel.annotations()
-                                                                                   .value(PCE_INIT));
-
-        lspObj = pc.factory().buildLspObject()
-                .setRFlag(false)
-                .setAFlag(true)
-                .setDFlag(delegated)
-                .setCFlag(initiated)
-                .setPlspId(Integer.valueOf(plspId))
-                .setOptionalTlv(tlvs)
-                .build();
-
-        labelDownload.setLabelList(labelObjects);
-        labelDownload.setLspObject(lspObj);
-        labelDownload.setSrpObject(srpObj);
-
-        labelUpdateList.add(pc.factory().buildPcepLabelUpdateObject()
-                            .setLabelDownload(labelDownload)
-                            .build());
-
-        PcepLabelUpdateMsg labelMsg = pc.factory().buildPcepLabelUpdateMsg()
-                                      .setPcLabelUpdateList(labelUpdateList)
-                                      .build();
-
-        pc.sendMessage(labelMsg);
-
-        //If isBos is true, label download is done along the LSP, send PCEP update message.
-        if (isBos) {
-            sendPcepUpdateMsg(pc, lspObj, tunnel);
-        }
-    }
-
-   //Sends PCEP update message.
-   private void sendPcepUpdateMsg(PcepClient pc, PcepLspObject lspObj, Tunnel tunnel) throws PcepParseException {
-       LinkedList<PcepUpdateRequest> updateRequestList = new LinkedList<>();
-       LinkedList<PcepValueType> subObjects = createEroSubObj(tunnel.path());
-
-       if (subObjects == null) {
-           log.error("ERO subjects not present");
-           return;
-       }
-
-       // set PathSetupTypeTlv of SRP object
-       LinkedList<PcepValueType> llOptionalTlv = new LinkedList<PcepValueType>();
-       LspType lspSigType = LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE));
-       llOptionalTlv.add(new PathSetupTypeTlv(lspSigType.type()));
-
-       PcepSrpObject srpObj = pc.factory().buildSrpObject()
-                              .setRFlag(false)
-                              .setSrpID(SrpIdGenerators.create())
-                              .setOptionalTlv(llOptionalTlv)
-                              .build();
-
-       PcepEroObject eroObj = pc.factory().buildEroObject()
-                             .setSubObjects(subObjects)
-                             .build();
-
-       float  iBandwidth = 0;
-       if (tunnel.annotations().value(BANDWIDTH) != null) {
-           //iBandwidth = Float.floatToIntBits(Float.parseFloat(tunnel.annotations().value(BANDWIDTH)));
-           iBandwidth = Float.parseFloat(tunnel.annotations().value(BANDWIDTH));
-       }
-       // build bandwidth object
-       PcepBandwidthObject bandwidthObject = pc.factory().buildBandwidthObject()
-                                             .setBandwidth(iBandwidth)
-                                             .build();
-       // build pcep attribute
-       PcepAttribute pcepAttribute = pc.factory().buildPcepAttribute()
-                                     .setBandwidthObject(bandwidthObject)
-                                     .build();
-
-       PcepMsgPath msgPath = pc.factory().buildPcepMsgPath()
-                             .setEroObject(eroObj)
-                             .setPcepAttribute(pcepAttribute)
-                             .build();
-
-       PcepUpdateRequest updateReq = pc.factory().buildPcepUpdateRequest()
-                                    .setSrpObject(srpObj)
-                                    .setMsgPath(msgPath)
-                                    .setLspObject(lspObj)
-                                    .build();
-
-       updateRequestList.add(updateReq);
-
-       //TODO: P = 1 is it P flag in PCEP obj header
-       PcepUpdateMsg updateMsg = pc.factory().buildUpdateMsg()
-                                 .setUpdateRequestList(updateRequestList)
-                                 .build();
-
-       pc.sendMessage(updateMsg);
-   }
-
-   private LinkedList<PcepValueType> createEroSubObj(Path path) {
-       LinkedList<PcepValueType> subObjects = new LinkedList<>();
-       List<Link> links = path.links();
-       ConnectPoint source = null;
-       ConnectPoint destination = null;
-       IpAddress ipDstAddress = null;
-       IpAddress ipSrcAddress = null;
-       PcepValueType subObj = null;
-       long portNo;
-
-       for (Link link : links) {
-           source = link.src();
-           if (!(source.equals(destination))) {
-               //set IPv4SubObject for ERO object
-               portNo = source.port().toLong();
-               portNo = ((portNo & IDENTIFIER_SET) == IDENTIFIER_SET) ? portNo & SET : portNo;
-               ipSrcAddress = Ip4Address.valueOf((int) portNo);
-               subObj = new IPv4SubObject(ipSrcAddress.getIp4Address().toInt());
-               subObjects.add(subObj);
-           }
-
-           destination = link.dst();
-           portNo = destination.port().toLong();
-           portNo = ((portNo & IDENTIFIER_SET) == IDENTIFIER_SET) ? portNo & SET : portNo;
-           ipDstAddress = Ip4Address.valueOf((int) portNo);
-           subObj = new IPv4SubObject(ipDstAddress.getIp4Address().toInt());
-           subObjects.add(subObj);
-       }
-       return subObjects;
-   }
-
-   private PcepSrpObject getSrpObject(PcepClient pc, PcepLabelOp type, boolean bSFlag)
-           throws PcepParseException {
-       PcepSrpObject srpObj;
-       boolean bRFlag = false;
-
-       if (!type.equals(PcepLabelOp.ADD)) {
-           // To cleanup labels, R bit is set
-           bRFlag = true;
-       }
-
-       srpObj = pc.factory().buildSrpObject()
-               .setRFlag(bRFlag)
-               .setSFlag(bSFlag)
-               .setSrpID(SrpIdGenerators.create())
-               .build();
-
-       return srpObj;
-   }
-
-   /**
-    * Returns PCEP client.
-    *
-    * @return PCEP client
-    */
-   private PcepClient getPcepClient(DeviceId deviceId) {
-       Device device = deviceService.getDevice(deviceId);
-
-       // In future projections instead of annotations will be used to fetch LSR ID.
-       String lsrId = device.annotations().value(LSRID);
-       PcepClient pcc = clientController.getClient(PccId.pccId(IpAddress.valueOf(lsrId)));
-       return pcc;
-   }
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/Controller.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/Controller.java
deleted file mode 100644
index f7f596c..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/Controller.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server.impl;
-
-import static org.onlab.util.Tools.groupedThreads;
-
-import java.lang.management.ManagementFactory;
-import java.lang.management.RuntimeMXBean;
-import java.net.InetSocketAddress;
-import java.util.Map;
-import java.util.LinkedList;
-import java.util.TreeMap;
-import java.util.List;
-import java.util.HashMap;
-import java.util.concurrent.Executors;
-
-import org.jboss.netty.bootstrap.ServerBootstrap;
-import org.jboss.netty.channel.ChannelPipelineFactory;
-import org.jboss.netty.channel.group.ChannelGroup;
-import org.jboss.netty.channel.group.DefaultChannelGroup;
-import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepCfg;
-import org.onosproject.pcep.server.PcepPacketStats;
-import org.onosproject.pcep.server.driver.PcepAgent;
-import org.onosproject.pcep.server.driver.PcepClientDriver;
-import org.onosproject.pcepio.protocol.PcepFactories;
-import org.onosproject.pcepio.protocol.PcepFactory;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * The main controller class. Handles all setup and network listeners -
- * Distributed ownership control of pcc through IControllerRegistryService
- */
-public class Controller {
-
-    private static final Logger log = LoggerFactory.getLogger(Controller.class);
-
-    private static final PcepFactory FACTORY1 = PcepFactories.getFactory(PcepVersion.PCEP_1);
-    private PcepCfg pcepConfig = new PcepConfig();
-    private ChannelGroup cg;
-
-    // Configuration options
-    private int pcepPort = 4189;
-    private int workerThreads = 10;
-
-    // Start time of the controller
-    private long systemStartTime;
-
-    private PcepAgent agent;
-
-    private Map<String, String> peerMap = new TreeMap<>();
-    private Map<String, List<String>> pcepExceptionMap = new TreeMap<>();
-    private Map<Integer, Integer> pcepErrorMsg = new TreeMap<>();
-    private Map<String, Byte> sessionMap = new TreeMap<>();
-    private LinkedList<String> pcepExceptionList = new LinkedList<String>();
-
-    private NioServerSocketChannelFactory execFactory;
-
-    // Perf. related configuration
-    private static final int SEND_BUFFER_SIZE = 4 * 1024 * 1024;
-
-    /**
-     * pcep session information.
-     *
-     * @param peerId id of the peer with which the session is being formed
-     * @param status pcep session status
-     * @param sessionId pcep session id
-     */
-    public void peerStatus(String peerId, String status, byte sessionId) {
-        if (peerId != null) {
-            peerMap.put(peerId, status);
-            sessionMap.put(peerId, sessionId);
-        } else {
-            log.debug("Peer Id is null");
-        }
-    }
-
-    /**
-     * Pcep session exceptions information.
-     *
-     * @param peerId id of the peer which has generated the exception
-     * @param exception pcep session exception
-     */
-    public void peerExceptions(String peerId, String exception) {
-        if (peerId != null) {
-            pcepExceptionList.add(exception);
-            pcepExceptionMap.put(peerId, pcepExceptionList);
-        } else {
-            log.debug("Peer Id is null");
-        }
-        if (pcepExceptionList.size() > 10) {
-            pcepExceptionList.clear();
-            pcepExceptionList.add(exception);
-            pcepExceptionMap.put(peerId, pcepExceptionList);
-        }
-    }
-
-    /**
-     * Create a map of pcep error messages received.
-     *
-     * @param peerId id of the peer which has sent the error message
-     * @param errorType error type of pcep error messgae
-     * @param errValue error value of pcep error messgae
-     */
-    public void peerErrorMsg(String peerId, Integer errorType, Integer errValue) {
-        if (peerId == null) {
-            pcepErrorMsg.put(errorType, errValue);
-        } else {
-            if (pcepErrorMsg.size() > 10) {
-                pcepErrorMsg.clear();
-            }
-            pcepErrorMsg.put(errorType, errValue);
-        }
-    }
-
-    /**
-     * Returns the pcep session details.
-     *
-     * @return pcep session details
-     */
-    public Map<String, Byte> mapSession() {
-        return this.sessionMap;
-    }
-
-
-
-    /**
-     * Returns factory version for processing pcep messages.
-     *
-     * @return instance of factory version
-     */
-    public PcepFactory getPcepMessageFactory1() {
-        return FACTORY1;
-    }
-
-    /**
-     * To get system start time.
-     *
-     * @return system start time in milliseconds
-     */
-    public long getSystemStartTime() {
-        return (this.systemStartTime);
-    }
-
-    /**
-     * Returns the list of pcep peers with session information.
-     *
-     * @return pcep peer information
-     */
-    public  Map<String, String> mapPeer() {
-        return this.peerMap;
-    }
-
-    /**
-     * Returns the list of pcep exceptions per peer.
-     *
-     * @return pcep exceptions
-     */
-    public  Map<String, List<String>> exceptionsMap() {
-        return this.pcepExceptionMap;
-    }
-
-    /**
-     * Returns the type and value of pcep error messages.
-     *
-     * @return pcep error message
-     */
-    public Map<Integer, Integer> mapErrorMsg() {
-        return this.pcepErrorMsg;
-    }
-
-    /**
-     * Tell controller that we're ready to accept pcc connections.
-     */
-    public void run() {
-        try {
-            final ServerBootstrap bootstrap = createServerBootStrap();
-
-            bootstrap.setOption("reuseAddr", true);
-            bootstrap.setOption("child.keepAlive", true);
-            bootstrap.setOption("child.tcpNoDelay", true);
-            bootstrap.setOption("child.sendBufferSize", Controller.SEND_BUFFER_SIZE);
-
-            ChannelPipelineFactory pfact = new PcepPipelineFactory(this);
-
-            bootstrap.setPipelineFactory(pfact);
-            InetSocketAddress sa = new InetSocketAddress(pcepPort);
-            cg = new DefaultChannelGroup();
-            cg.add(bootstrap.bind(sa));
-            log.debug("Listening for PCC connection on {}", sa);
-        } catch (Exception e) {
-            throw new IllegalStateException(e);
-        }
-    }
-
-    /**
-     * Creates server boot strap.
-     *
-     * @return ServerBootStrap
-     */
-    private ServerBootstrap createServerBootStrap() {
-        if (workerThreads == 0) {
-            execFactory = new NioServerSocketChannelFactory(
-                    Executors.newCachedThreadPool(groupedThreads("onos/pcep", "boss-%d")),
-                    Executors.newCachedThreadPool(groupedThreads("onos/pcep", "worker-%d")));
-            return new ServerBootstrap(execFactory);
-        } else {
-            execFactory = new NioServerSocketChannelFactory(
-                    Executors.newCachedThreadPool(groupedThreads("onos/pcep", "boss-%d")),
-                    Executors.newCachedThreadPool(groupedThreads("onos/pcep", "worker-%d")), workerThreads);
-            return new ServerBootstrap(execFactory);
-        }
-    }
-
-    /**
-     * Initialize internal data structures.
-     */
-    public void init() {
-        // These data structures are initialized here because other
-        // module's startUp() might be called before ours
-        this.systemStartTime = System.currentTimeMillis();
-    }
-
-    public Map<String, Long> getMemory() {
-        Map<String, Long> m = new HashMap<>();
-        Runtime runtime = Runtime.getRuntime();
-        m.put("total", runtime.totalMemory());
-        m.put("free", runtime.freeMemory());
-        return m;
-    }
-
-    public Long getUptime() {
-        RuntimeMXBean rb = ManagementFactory.getRuntimeMXBean();
-        return rb.getUptime();
-    }
-
-    /**
-     * Creates instance of Pcep client.
-     *
-     * @param pccId pcc identifier
-     * @param sessionID session id
-     * @param pv pcep version
-     * @param pktStats pcep packet statistics
-     * @return instance of PcepClient
-     */
-    protected PcepClientDriver getPcepClientInstance(PccId pccId, int sessionID, PcepVersion pv,
-            PcepPacketStats pktStats) {
-        PcepClientDriver pcepClientDriver = new PcepClientImpl();
-        pcepClientDriver.init(pccId, pv, pktStats);
-        pcepClientDriver.setAgent(agent);
-        return pcepClientDriver;
-    }
-
-    /**
-     * Starts the pcep controller.
-     *
-     * @param ag Pcep agent
-     */
-    public void start(PcepAgent ag) {
-        log.info("Started");
-        this.agent = ag;
-        this.init();
-        this.run();
-    }
-
-    /**
-     * Stops the pcep controller.
-     */
-    public void stop() {
-        log.info("Stopped");
-        execFactory.shutdown();
-        cg.close();
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/LabelType.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/LabelType.java
deleted file mode 100644
index ca7cc7c..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/LabelType.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server.impl;
-
-/**
- * Describes about Label type.
- */
-public enum LabelType {
-    /**
-     * Signifies in label id of a device.
-     */
-    OUT_LABEL(0),
-
-    /**
-     * Signifies out label id of a device.
-     */
-    IN_LABEL(1);
-
-    int value;
-
-    /**
-     * Assign val with the value as the Label type.
-     *
-     * @param val Label type
-     */
-    LabelType(int val) {
-        value = val;
-    }
-
-    /**
-     * Returns value of Label type.
-     *
-     * @return label type
-     */
-    public byte type() {
-        return (byte) value;
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PceccSrTeBeHandler.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PceccSrTeBeHandler.java
deleted file mode 100644
index 682f242..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PceccSrTeBeHandler.java
+++ /dev/null
@@ -1,585 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server.impl;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.pcep.server.PcepSyncStatus.IN_SYNC;
-import static org.onosproject.pcep.server.PcepSyncStatus.SYNCED;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.HashSet;
-import java.util.List;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Set;
-
-import org.onlab.packet.IpAddress;
-import org.onosproject.incubator.net.resource.label.DefaultLabelResource;
-import org.onosproject.incubator.net.resource.label.LabelResource;
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.incubator.net.resource.label.LabelResourceAdminService;
-import org.onosproject.incubator.net.resource.label.LabelResourceService;
-import org.onosproject.incubator.net.tunnel.DefaultLabelStack;
-import org.onosproject.incubator.net.tunnel.LabelStack;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.pcelabelstore.PcepLabelOp;
-import org.onosproject.pcelabelstore.api.PceLabelStore;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.Path;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepClient;
-import org.onosproject.pcep.server.PcepClientController;
-import org.onosproject.pcep.server.SrpIdGenerators;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepFecObjectIPv4;
-import org.onosproject.pcepio.protocol.PcepFecObjectIPv4Adjacency;
-import org.onosproject.pcepio.protocol.PcepLabelObject;
-import org.onosproject.pcepio.protocol.PcepLabelUpdate;
-import org.onosproject.pcepio.protocol.PcepLabelUpdateMsg;
-import org.onosproject.pcepio.protocol.PcepSrpObject;
-import org.onosproject.pcepio.types.PcepLabelMap;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.Multimap;
-
-/**
- * PCE SR-BE and SR-TE functionality.
- * SR-BE: Each node (PCC) is allocated a node-SID (label) by the PCECC. The PCECC sends PCLabelUpd to
- * update the label map of each node to all the nodes in the domain.
- * SR-TE: apart from node-SID, Adj-SID is used where each adjacency is allocated an Adj-SID (label) by the PCECC.
- * The PCECC sends PCLabelUpd to update the label map of each Adj to the corresponding nodes in the domain.
- */
-public final class PceccSrTeBeHandler {
-    private static final Logger log = LoggerFactory.getLogger(PceccSrTeBeHandler.class);
-
-    private static final String LABEL_RESOURCE_ADMIN_SERVICE_NULL = "Label Resource Admin Service cannot be null";
-    private static final String LABEL_RESOURCE_SERVICE_NULL = "Label Resource Service cannot be null";
-    private static final String PCE_STORE_NULL = "PCE Store cannot be null";
-    private static final String DEVICE_ID_NULL = "Device-Id cannot be null";
-    private static final String LSR_ID_NULL = "LSR-Id cannot be null";
-    private static final String LINK_NULL = "Link cannot be null";
-    private static final String PATH_NULL = "Path cannot be null";
-    private static final String LSR_ID = "lsrId";
-    private static PceccSrTeBeHandler srTeHandlerInstance = null;
-    private LabelResourceAdminService labelRsrcAdminService;
-    private LabelResourceService labelRsrcService;
-    private DeviceService deviceService;
-    private PcepClientController clientController;
-    private PceLabelStore pceStore;
-
-    /**
-     * Initializes default values.
-     */
-    private PceccSrTeBeHandler() {
-    }
-
-    /**
-     * Returns single instance of this class.
-     *
-     * @return this class single instance
-     */
-    public static synchronized PceccSrTeBeHandler getInstance() {
-        if (srTeHandlerInstance == null) {
-            srTeHandlerInstance = new PceccSrTeBeHandler();
-        }
-        return srTeHandlerInstance;
-    }
-
-    /**
-     * Initialization of label manager interfaces and pce store.
-     *
-     * @param labelRsrcAdminService label resource admin service
-     * @param labelRsrcService label resource service
-     * @param clientController client controller
-     * @param pceStore PCE label store
-     * @param deviceService device service
-     */
-    public void initialize(LabelResourceAdminService labelRsrcAdminService,
-                           LabelResourceService labelRsrcService,
-                           PcepClientController clientController,
-                           PceLabelStore pceStore,
-                           DeviceService deviceService) {
-        this.labelRsrcAdminService = labelRsrcAdminService;
-        this.labelRsrcService = labelRsrcService;
-        this.clientController = clientController;
-        this.pceStore = pceStore;
-        this.deviceService = deviceService;
-    }
-
-    /**
-     * Reserves the global label pool.
-     *
-     * @param beginLabel minimum value of global label space
-     * @param endLabel maximum value of global label space
-     * @return success or failure
-     */
-    public boolean reserveGlobalPool(long beginLabel, long endLabel) {
-        checkNotNull(labelRsrcAdminService, LABEL_RESOURCE_ADMIN_SERVICE_NULL);
-        return labelRsrcAdminService.createGlobalPool(LabelResourceId.labelResourceId(beginLabel),
-                                                      LabelResourceId.labelResourceId(endLabel));
-    }
-
-    /**
-     * Retrieve lsr-id from device annotation.
-     *
-     * @param deviceId specific device id from which lsr-id needs to be retrieved
-     * @return lsr-id of a device
-     */
-    public String getLsrId(DeviceId deviceId) {
-        checkNotNull(deviceId, DEVICE_ID_NULL);
-        Device device = deviceService.getDevice(deviceId);
-        if (device == null) {
-            log.debug("Device is not available for device id {} in device service.", deviceId.toString());
-            return null;
-        }
-
-        // Retrieve lsr-id from device
-        if (device.annotations() == null) {
-            log.debug("Device {} does not have annotation.", device.toString());
-            return null;
-        }
-
-        String lsrId = device.annotations().value(LSR_ID);
-        if (lsrId == null) {
-            log.debug("The lsr-id of device {} is null.", device.toString());
-            return null;
-        }
-        return lsrId;
-    }
-
-    /**
-     * Allocates node label from global node label pool to specific device.
-     * Configure this device with labels and lsrid mapping of all other devices and vice versa.
-     *
-     * @param specificDeviceId node label needs to be allocated to specific device
-     * @param specificLsrId lsrid of specific device
-     * @return success or failure
-     */
-    public boolean allocateNodeLabel(DeviceId specificDeviceId, String specificLsrId) {
-        long applyNum = 1; // For each node only one node label
-        LabelResourceId specificLabelId = null;
-
-        checkNotNull(specificDeviceId, DEVICE_ID_NULL);
-        checkNotNull(specificLsrId, LSR_ID_NULL);
-        checkNotNull(labelRsrcService, LABEL_RESOURCE_SERVICE_NULL);
-        checkNotNull(pceStore, PCE_STORE_NULL);
-
-        // Check whether node-label was already configured for this specific device.
-        if (pceStore.getGlobalNodeLabel(specificDeviceId) != null) {
-            log.debug("Node label was already configured for device {}.", specificDeviceId.toString());
-            return false;
-        }
-
-        // The specificDeviceId is the new device and is not there in the pce store.
-        // So, first generate its label and configure label and its lsr-id to it.
-        Collection<LabelResource> result = labelRsrcService.applyFromGlobalPool(applyNum);
-        if (!result.isEmpty()) {
-            // Only one element (label-id) to retrieve
-            Iterator<LabelResource> iterator = result.iterator();
-            DefaultLabelResource defaultLabelResource = (DefaultLabelResource) iterator.next();
-            specificLabelId = defaultLabelResource.labelResourceId();
-            if (specificLabelId == null) {
-                log.error("Unable to retrieve global node label for a device id {}.", specificDeviceId.toString());
-                return false;
-            }
-        } else {
-            log.error("Unable to allocate global node label for a device id {}.", specificDeviceId.toString());
-            return false;
-        }
-
-        // store it
-        pceStore.addGlobalNodeLabel(specificDeviceId, specificLabelId);
-
-        // Push its label information into specificDeviceId
-        PcepClient pcc = getPcepClient(specificDeviceId);
-        try {
-            pushGlobalNodeLabel(pcc,
-                                specificLabelId,
-                                IpAddress.valueOf(specificLsrId).getIp4Address().toInt(),
-                                PcepLabelOp.ADD,
-                                false);
-        } catch (PcepParseException e) {
-            log.error("Failed to push global node label for LSR {}.", specificLsrId.toString());
-        }
-
-        // Configure (node-label, lsr-id) mapping of each devices into specific device and vice versa.
-        for (Map.Entry<DeviceId, LabelResourceId> element : pceStore.getGlobalNodeLabels().entrySet()) {
-            DeviceId otherDevId = element.getKey();
-
-            // Get lsr-id of a device
-            String otherLsrId = getLsrId(otherDevId);
-            if (otherLsrId == null) {
-                log.error("The lsr-id of device id {} is null.", otherDevId.toString());
-                releaseNodeLabel(specificDeviceId, specificLsrId);
-                return false;
-            }
-
-            // Push to device
-            // Push label information of specificDeviceId to otherDevId in list and vice versa.
-            if (!otherDevId.equals(specificDeviceId)) {
-                try {
-                    pushGlobalNodeLabel(getPcepClient(otherDevId),
-                                        specificLabelId,
-                                        IpAddress.valueOf(specificLsrId).getIp4Address().toInt(),
-                                        PcepLabelOp.ADD,
-                                        false);
-
-                    pushGlobalNodeLabel(pcc, element.getValue(),
-                                        IpAddress.valueOf(otherLsrId).getIp4Address().toInt(),
-                                        PcepLabelOp.ADD,
-                                        false);
-                } catch (PcepParseException e) {
-                    log.error("Failed to push global node label for LSR {} or LSR {}.", specificLsrId.toString(),
-                              otherLsrId.toString());
-                }
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Releases assigned node label of specific device from global node label pool and pce store.
-     * and remove configured this node label from all other devices.
-     *
-     * @param specificDeviceId node label needs to be released for specific device
-     * @param specificLsrId lsrid of specific device
-     * @return success or failure
-     */
-    public boolean releaseNodeLabel(DeviceId specificDeviceId, String specificLsrId) {
-        checkNotNull(specificDeviceId, DEVICE_ID_NULL);
-        checkNotNull(specificLsrId, LSR_ID_NULL);
-        checkNotNull(labelRsrcService, LABEL_RESOURCE_SERVICE_NULL);
-        checkNotNull(pceStore, PCE_STORE_NULL);
-        boolean retValue = true;
-
-        // Release node label entry of this specific device from all other devices
-        // Retrieve node label of this specific device from store
-        LabelResourceId labelId = pceStore.getGlobalNodeLabel(specificDeviceId);
-        if (labelId == null) {
-            log.error("Unable to retrieve label of a device id {} from store.", specificDeviceId.toString());
-            return false;
-        }
-
-        // Go through all devices in the pce store and remove label entry from device
-        for (Map.Entry<DeviceId, LabelResourceId> element : pceStore.getGlobalNodeLabels().entrySet()) {
-            DeviceId otherDevId = element.getKey();
-
-            // Remove this specific device label information from all other nodes except
-            // this specific node where connection already lost.
-            if (!specificDeviceId.equals(otherDevId)) {
-                try {
-                    pushGlobalNodeLabel(getPcepClient(otherDevId),
-                                        labelId,
-                                        IpAddress.valueOf(specificLsrId).getIp4Address().toInt(),
-                                        PcepLabelOp.REMOVE,
-                                        false);
-                } catch (PcepParseException e) {
-                    log.error("Failed to push global node label for LSR {}.", specificLsrId.toString());
-                }
-            }
-        }
-
-        // Release from label manager
-        Set<LabelResourceId> release = new HashSet<>();
-        release.add(labelId);
-        if (!labelRsrcService.releaseToGlobalPool(release)) {
-            log.error("Unable to release label id {} from label manager.", labelId.toString());
-            retValue = false;
-        }
-
-        // Remove from store
-        if (!pceStore.removeGlobalNodeLabel(specificDeviceId)) {
-            log.error("Unable to remove global node label id {} from store.", labelId.toString());
-            retValue = false;
-        }
-        return retValue;
-    }
-
-    /**
-     * Allocates adjacency label to a link from local resource pool by a specific device id.
-     *
-     * @param link between devices
-     * @return success or failure
-     */
-    public boolean allocateAdjacencyLabel(Link link) {
-        long applyNum = 1; // Single label to each link.
-        DeviceId srcDeviceId = link.src().deviceId();
-        Collection<LabelResource> labelList;
-
-        checkNotNull(link, LINK_NULL);
-        checkNotNull(labelRsrcService, LABEL_RESOURCE_SERVICE_NULL);
-        checkNotNull(pceStore, PCE_STORE_NULL);
-
-        // Checks whether adjacency label was already allocated
-        LabelResourceId labelId = pceStore.getAdjLabel(link);
-        if (labelId != null) {
-            log.debug("Adjacency label {} was already allocated for a link {}.", labelId.toString(), link.toString());
-            return false;
-        }
-
-        // Allocate adjacency label to a link from label manager.
-        // Take label from source device pool to allocate.
-        labelList = labelRsrcService.applyFromDevicePool(srcDeviceId, applyNum);
-        if (labelList.isEmpty()) {
-            log.error("Unable to allocate label to a device id {}.", srcDeviceId.toString());
-            return false;
-        }
-
-        // Currently only one label to a device. So, no need to iterate through list
-        Iterator<LabelResource> iterator = labelList.iterator();
-        DefaultLabelResource defaultLabelResource = (DefaultLabelResource) iterator.next();
-        labelId = defaultLabelResource.labelResourceId();
-        if (labelId == null) {
-            log.error("Unable to allocate label to a device id {}.", srcDeviceId.toString());
-            return false;
-        }
-        log.debug("Allocated adjacency label {} to a link {}.", labelId.toString(), link.toString());
-
-        // Push adjacency label to device
-        try {
-            pushAdjacencyLabel(getPcepClient(srcDeviceId), labelId, (int) link.src().port().toLong(),
-                               (int) link.dst().port().toLong(), PcepLabelOp.ADD);
-        } catch (PcepParseException e) {
-            log.error("Failed to push adjacency label for link {}-{}.", (int) link.src().port().toLong(),
-                      (int) link.dst().port().toLong());
-        }
-
-        // Save in store
-        pceStore.addAdjLabel(link, labelId);
-        return true;
-    }
-
-    /**
-      * Releases unused adjacency labels from device pools.
-      *
-      * @param link between devices
-      * @return success or failure
-      */
-    public boolean releaseAdjacencyLabel(Link link) {
-        checkNotNull(link, LINK_NULL);
-        checkNotNull(labelRsrcService, LABEL_RESOURCE_SERVICE_NULL);
-        checkNotNull(pceStore, PCE_STORE_NULL);
-        boolean retValue = true;
-
-        // Retrieve link label from store
-        LabelResourceId labelId = pceStore.getAdjLabel(link);
-        if (labelId == null) {
-            log.error("Unabel to retrieve label for a link {} from store.", link.toString());
-            return false;
-        }
-
-        // Device
-        DeviceId srcDeviceId = link.src().deviceId();
-
-        // Release adjacency label from device
-        try {
-            pushAdjacencyLabel(getPcepClient(srcDeviceId), labelId, (int) link.src().port().toLong(),
-                               (int) link.dst().port().toLong(), PcepLabelOp.REMOVE);
-        } catch (PcepParseException e) {
-            log.error("Failed to push adjacency label for link {}-{}.", (int) link.src().port().toLong(),
-                      (int) link.dst().port().toLong());
-        }
-
-
-        // Release link label from label manager
-        Multimap<DeviceId, LabelResource> release = ArrayListMultimap.create();
-        DefaultLabelResource defaultLabelResource = new DefaultLabelResource(srcDeviceId, labelId);
-        release.put(srcDeviceId, defaultLabelResource);
-        if (!labelRsrcService.releaseToDevicePool(release)) {
-            log.error("Unable to release label id {} from label manager.", labelId.toString());
-            retValue = false;
-        }
-
-        // Remove adjacency label from store
-        if (!pceStore.removeAdjLabel(link)) {
-            log.error("Unable to remove adjacency label id {} from store.", labelId.toString());
-            retValue = false;
-        }
-        return retValue;
-    }
-
-    /**
-     * Computes label stack for a path.
-     *
-     * @param path lsp path
-     * @return label stack
-     */
-    public LabelStack computeLabelStack(Path path) {
-        checkNotNull(path, PATH_NULL);
-        // Label stack is linked list to make labels in order.
-        List<LabelResourceId> labelStack = new LinkedList<>();
-        List<Link> linkList = path.links();
-        if ((linkList != null) && (!linkList.isEmpty())) {
-            // Path: [x] ---- [y] ---- [z]
-            // For other than last link, add only source[x] device label.
-            // For the last link, add both source[y] and destination[z] device labels.
-            // For all links add adjacency label
-            Link link = null;
-            LabelResourceId nodeLabelId = null;
-            LabelResourceId adjLabelId = null;
-            DeviceId deviceId = null;
-            for (Iterator<Link> iterator = linkList.iterator(); iterator.hasNext();) {
-                link = iterator.next();
-                // Add adjacency label for this link
-                adjLabelId = pceStore.getAdjLabel(link);
-                if (adjLabelId == null) {
-                    log.error("Adjacency label id is null for a link {}.", link.toString());
-                    return null;
-                }
-                labelStack.add(adjLabelId);
-
-                deviceId = link.dst().deviceId();
-                nodeLabelId = pceStore.getGlobalNodeLabel(deviceId);
-                if (nodeLabelId == null) {
-                    log.error("Unable to find node label for a device id {} in store.", deviceId.toString());
-                    return null;
-                }
-                labelStack.add(nodeLabelId);
-            }
-        } else {
-            log.debug("Empty link in path.");
-            return null;
-        }
-        return new DefaultLabelStack(labelStack);
-    }
-
-    //Pushes node labels to the specified device.
-    void pushGlobalNodeLabel(PcepClient pc, LabelResourceId labelId,
-            int labelForNode, PcepLabelOp type, boolean isBos) throws PcepParseException {
-
-        checkNotNull(pc);
-        checkNotNull(labelId);
-        checkNotNull(type);
-
-        LinkedList<PcepLabelUpdate> labelUpdateList = new LinkedList<>();
-        PcepFecObjectIPv4 fecObject = pc.factory().buildFecObjectIpv4()
-                                      .setNodeID(labelForNode)
-                                      .build();
-
-        boolean bSFlag = false;
-        if (pc.labelDbSyncStatus() == IN_SYNC && !isBos) {
-            // Need to set sync flag in all messages till sync completes.
-            bSFlag = true;
-        }
-
-        PcepSrpObject srpObj = getSrpObject(pc, type, bSFlag);
-
-        //Global NODE-SID as label object
-        PcepLabelObject labelObject = pc.factory().buildLabelObject()
-                                      .setLabel((int) labelId.labelId())
-                                      .build();
-
-        PcepLabelMap labelMap = new PcepLabelMap();
-        labelMap.setFecObject(fecObject);
-        labelMap.setLabelObject(labelObject);
-        labelMap.setSrpObject(srpObj);
-
-        labelUpdateList.add(pc.factory().buildPcepLabelUpdateObject()
-                            .setLabelMap(labelMap)
-                            .build());
-
-        PcepLabelUpdateMsg labelMsg = pc.factory().buildPcepLabelUpdateMsg()
-                                      .setPcLabelUpdateList(labelUpdateList)
-                                      .build();
-        pc.sendMessage(labelMsg);
-
-        if (isBos) {
-            // Sync is completed.
-            pc.setLabelDbSyncStatus(SYNCED);
-        }
-    }
-
-    //Pushes adjacency labels to the specified device.
-    void pushAdjacencyLabel(PcepClient pc, LabelResourceId labelId, int srcPortNo,
-                                    int dstPortNo, PcepLabelOp type)
-            throws PcepParseException {
-
-        checkNotNull(pc);
-        checkNotNull(labelId);
-        checkNotNull(type);
-
-        LinkedList<PcepLabelUpdate> labelUpdateList = new LinkedList<>();
-        PcepFecObjectIPv4Adjacency fecAdjObject = pc.factory().buildFecIpv4Adjacency()
-                                                  .seRemoteIPv4Address(dstPortNo)
-                                                  .seLocalIPv4Address(srcPortNo)
-                                                  .build();
-
-        boolean bSFlag = false;
-        if (pc.labelDbSyncStatus() == IN_SYNC) {
-            // Need to set sync flag in all messages till sync completes.
-            bSFlag = true;
-        }
-
-        PcepSrpObject srpObj = getSrpObject(pc, type, bSFlag);
-
-        //Adjacency label object
-        PcepLabelObject labelObject = pc.factory().buildLabelObject()
-                                      .setLabel((int) labelId.labelId())
-                                      .build();
-
-        PcepLabelMap labelMap = new PcepLabelMap();
-        labelMap.setFecObject(fecAdjObject);
-        labelMap.setLabelObject(labelObject);
-        labelMap.setSrpObject(srpObj);
-
-        labelUpdateList.add(pc.factory().buildPcepLabelUpdateObject()
-                            .setLabelMap(labelMap)
-                            .build());
-
-        PcepLabelUpdateMsg labelMsg = pc.factory().buildPcepLabelUpdateMsg()
-                                      .setPcLabelUpdateList(labelUpdateList)
-                                      .build();
-        pc.sendMessage(labelMsg);
-    }
-
-    private PcepSrpObject getSrpObject(PcepClient pc, PcepLabelOp type, boolean bSFlag)
-            throws PcepParseException {
-        PcepSrpObject srpObj;
-        boolean bRFlag = false;
-
-        if (!type.equals(PcepLabelOp.ADD)) {
-            // To cleanup labels, R bit is set
-            bRFlag = true;
-        }
-
-        srpObj = pc.factory().buildSrpObject()
-                .setRFlag(bRFlag)
-                .setSFlag(bSFlag)
-                .setSrpID(SrpIdGenerators.create())
-                .build();
-
-        return srpObj;
-    }
-
-    /**
-     * Returns PCEP client.
-     *
-     * @return PCEP client
-     */
-    private PcepClient getPcepClient(DeviceId deviceId) {
-        Device device = deviceService.getDevice(deviceId);
-
-        // In future projections instead of annotations will be used to fetch LSR ID.
-        String lsrId = device.annotations().value(LSR_ID);
-        PcepClient pcc = clientController.getClient(PccId.pccId(IpAddress.valueOf(lsrId)));
-        return pcc;
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepChannelHandler.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepChannelHandler.java
deleted file mode 100644
index ce8b04b..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepChannelHandler.java
+++ /dev/null
@@ -1,724 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server.impl;
-
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.nio.channels.ClosedChannelException;
-import java.util.Collections;
-import java.util.Date;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.concurrent.RejectedExecutionException;
-
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.jboss.netty.channel.ChannelStateEvent;
-import org.jboss.netty.channel.ExceptionEvent;
-import org.jboss.netty.channel.MessageEvent;
-import org.jboss.netty.handler.timeout.IdleState;
-import org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler;
-import org.jboss.netty.handler.timeout.IdleStateEvent;
-import org.jboss.netty.handler.timeout.IdleStateHandler;
-import org.jboss.netty.handler.timeout.ReadTimeoutException;
-import org.onlab.packet.IpAddress;
-import org.onosproject.pcep.server.ClientCapability;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepCfg;
-import org.onosproject.pcep.server.driver.PcepClientDriver;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepError;
-import org.onosproject.pcepio.protocol.PcepErrorInfo;
-import org.onosproject.pcepio.protocol.PcepErrorMsg;
-import org.onosproject.pcepio.protocol.PcepErrorObject;
-import org.onosproject.pcepio.protocol.PcepFactory;
-import org.onosproject.pcepio.protocol.PcepMessage;
-import org.onosproject.pcepio.protocol.PcepOpenMsg;
-import org.onosproject.pcepio.protocol.PcepOpenObject;
-import org.onosproject.pcepio.protocol.PcepType;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.onosproject.pcepio.types.IPv4RouterIdOfLocalNodeSubTlv;
-import org.onosproject.pcepio.types.NodeAttributesTlv;
-import org.onosproject.pcepio.types.PceccCapabilityTlv;
-import org.onosproject.pcepio.types.SrPceCapabilityTlv;
-import org.onosproject.pcepio.types.StatefulPceCapabilityTlv;
-import org.onosproject.pcepio.types.PcepErrorDetailInfo;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.onosproject.pcep.server.PcepSyncStatus.NOT_SYNCED;
-
-/**
- * Channel handler deals with the pcc client connection and dispatches
- * messages from client to the appropriate locations.
- */
-class PcepChannelHandler extends IdleStateAwareChannelHandler {
-    static final byte DEADTIMER_MAXIMUM_VALUE = (byte) 0xFF;
-    static final byte KEEPALIVE_MULTIPLE_FOR_DEADTIMER = 4;
-    private static final Logger log = LoggerFactory.getLogger(PcepChannelHandler.class);
-    private final Controller controller;
-    private PcepClientDriver pc;
-    private PccId thispccId;
-    private Channel channel;
-    private byte sessionId = 0;
-    private byte keepAliveTime;
-    private byte deadTime;
-    private ClientCapability capability;
-    private PcepPacketStatsImpl pcepPacketStats;
-    static final int MAX_WRONG_COUNT_PACKET = 5;
-    static final int BYTE_MASK = 0xFF;
-
-    // State needs to be volatile because the HandshakeTimeoutHandler
-    // needs to check if the handshake is complete
-    private volatile ChannelState state;
-    private String peerAddr;
-    private SocketAddress address;
-    private InetSocketAddress inetAddress;
-    // When a pcc client with a ip addresss is found (i.e we already have a
-    // connected client with the same ip), the new client is immediately
-    // disconnected. At that point netty callsback channelDisconnected() which
-    // proceeds to cleaup client state - we need to ensure that it does not cleanup
-    // client state for the older (still connected) client
-    private volatile Boolean duplicatePccIdFound;
-
-    //Indicates the pcep version used by this pcc client
-    protected PcepVersion pcepVersion;
-    protected PcepFactory factory1;
-
-    /**
-     * Create a new unconnected PcepChannelHandler.
-     * @param controller parent controller
-     */
-    PcepChannelHandler(Controller controller) {
-        this.controller = controller;
-        this.state = ChannelState.INIT;
-        factory1 = controller.getPcepMessageFactory1();
-        duplicatePccIdFound = Boolean.FALSE;
-        pcepPacketStats = new PcepPacketStatsImpl();
-    }
-
-    /**
-     * To disconnect a PCC.
-     */
-    public void disconnectClient() {
-        pc.disconnectClient();
-    }
-
-    //*************************
-    //  Channel State Machine
-    //*************************
-
-    @Override
-    public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
-        channel = e.getChannel();
-        log.info("PCC connected from {}", channel.getRemoteAddress());
-
-        address = channel.getRemoteAddress();
-        if (!(address instanceof InetSocketAddress)) {
-            throw new IOException("Invalid peer connection.");
-        }
-
-        inetAddress = (InetSocketAddress) address;
-        peerAddr = IpAddress.valueOf(inetAddress.getAddress()).toString();
-
-        // Wait for open message from pcc client
-        setState(ChannelState.OPENWAIT);
-        controller.peerStatus(peerAddr, PcepCfg.State.OPENWAIT.toString(), sessionId);
-    }
-
-    @Override
-    public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
-        log.info("Pcc disconnected callback for pc:{}. Cleaning up ...", getClientInfoString());
-        controller.peerStatus(peerAddr, PcepCfg.State.DOWN.toString(), sessionId);
-
-        channel = e.getChannel();
-        address = channel.getRemoteAddress();
-        if (!(address instanceof InetSocketAddress)) {
-            throw new IOException("Invalid peer connection.");
-        }
-
-        inetAddress = (InetSocketAddress) address;
-        peerAddr = IpAddress.valueOf(inetAddress.getAddress()).toString();
-
-        if (thispccId != null) {
-            if (!duplicatePccIdFound) {
-                // if the disconnected client (on this ChannelHandler)
-                // was not one with a duplicate-dpid, it is safe to remove all
-                // state for it at the controller. Notice that if the disconnected
-                // client was a duplicate-ip, calling the method below would clear
-                // all state for the original client (with the same ip),
-                // which we obviously don't want.
-                log.debug("{}:removal called", getClientInfoString());
-                if (pc != null) {
-                    pc.removeConnectedClient();
-                }
-            } else {
-                // A duplicate was disconnected on this ChannelHandler,
-                // this is the same client reconnecting, but the original state was
-                // not cleaned up - XXX check liveness of original ChannelHandler
-                log.debug("{}:duplicate found", getClientInfoString());
-                duplicatePccIdFound = Boolean.FALSE;
-            }
-        } else {
-            log.warn("no pccip in channelHandler registered for " + "disconnected client {}", getClientInfoString());
-        }
-    }
-
-    @Override
-    public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception {
-        PcepErrorMsg errMsg;
-        log.info("exceptionCaught: " + e.toString());
-
-        if (e.getCause() instanceof ReadTimeoutException) {
-            if (ChannelState.OPENWAIT == state) {
-                // When ReadTimeout timer is expired in OPENWAIT state, it is considered
-                // OpenWait timer.
-                errMsg = getErrorMsg(PcepErrorDetailInfo.ERROR_TYPE_1, PcepErrorDetailInfo.ERROR_VALUE_2);
-                log.debug("Sending PCEP-ERROR message to PCC.");
-                controller.peerExceptions(peerAddr, e.getCause().toString());
-                channel.write(Collections.singletonList(errMsg));
-                channel.close();
-                state = ChannelState.INIT;
-                return;
-            } else if (ChannelState.KEEPWAIT == state) {
-                // When ReadTimeout timer is expired in KEEPWAIT state, is is considered
-                // KeepWait timer.
-                errMsg = getErrorMsg(PcepErrorDetailInfo.ERROR_TYPE_1, PcepErrorDetailInfo.ERROR_VALUE_7);
-                log.debug("Sending PCEP-ERROR message to PCC.");
-                controller.peerExceptions(peerAddr, e.getCause().toString());
-                channel.write(Collections.singletonList(errMsg));
-                channel.close();
-                state = ChannelState.INIT;
-                return;
-            }
-        } else if (e.getCause() instanceof ClosedChannelException) {
-            controller.peerExceptions(peerAddr, e.getCause().toString());
-            log.debug("Channel for pc {} already closed", getClientInfoString());
-        } else if (e.getCause() instanceof IOException) {
-            controller.peerExceptions(peerAddr, e.getCause().toString());
-            log.error("Disconnecting client {} due to IO Error: {}", getClientInfoString(), e.getCause().getMessage());
-            if (log.isDebugEnabled()) {
-                // still print stack trace if debug is enabled
-                log.debug("StackTrace for previous Exception: ", e.getCause());
-            }
-            channel.close();
-        } else if (e.getCause() instanceof PcepParseException) {
-            controller.peerExceptions(peerAddr, e.getCause().toString());
-            PcepParseException errMsgParse = (PcepParseException) e.getCause();
-            byte errorType = errMsgParse.getErrorType();
-            byte errorValue = errMsgParse.getErrorValue();
-
-            if ((errorType == (byte) 0x0) && (errorValue == (byte) 0x0)) {
-                processUnknownMsg();
-            } else {
-                errMsg = getErrorMsg(errorType, errorValue);
-                log.debug("Sending PCEP-ERROR message to PCC.");
-                channel.write(Collections.singletonList(errMsg));
-            }
-        } else if (e.getCause() instanceof RejectedExecutionException) {
-            log.warn("Could not process message: queue full");
-            controller.peerExceptions(peerAddr, e.getCause().toString());
-        } else {
-            log.error("Error while processing message from client " + getClientInfoString() + "state " + this.state);
-            controller.peerExceptions(peerAddr, e.getCause().toString());
-            channel.close();
-        }
-    }
-
-    @Override
-    public String toString() {
-        return getClientInfoString();
-    }
-
-    @Override
-    public void channelIdle(ChannelHandlerContext ctx, IdleStateEvent e) throws Exception {
-        if (!isHandshakeComplete()) {
-            return;
-        }
-
-        if (e.getState() == IdleState.READER_IDLE) {
-            // When no message is received on channel for read timeout, then close
-            // the channel
-            log.info("Disconnecting client {} due to read timeout", getClientInfoString());
-            ctx.getChannel().close();
-        } else if (e.getState() == IdleState.WRITER_IDLE) {
-            // Send keep alive message
-            log.debug("Sending keep alive message due to IdleState timeout " + pc.toString());
-            pc.sendMessage(Collections.singletonList(pc.factory().buildKeepaliveMsg().build()));
-        }
-    }
-
-    @Override
-    public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
-        if (e.getMessage() instanceof List) {
-            @SuppressWarnings("unchecked")
-            List<PcepMessage> msglist = (List<PcepMessage>) e.getMessage();
-            for (PcepMessage pm : msglist) {
-                // Do the actual packet processing
-                state.processPcepMessage(this, pm);
-            }
-        } else {
-            state.processPcepMessage(this, (PcepMessage) e.getMessage());
-        }
-    }
-
-    /**
-     * Is this a state in which the handshake has completed.
-     *
-     * @return true if the handshake is complete
-     */
-    public boolean isHandshakeComplete() {
-        return this.state.isHandshakeComplete();
-    }
-
-    /**
-     * To set the handshake status.
-     *
-     * @param handshakeComplete value is handshake status
-     */
-    public void setHandshakeComplete(boolean handshakeComplete) {
-        this.state.setHandshakeComplete(handshakeComplete);
-    }
-
-    /**
-     * To handle the pcep message.
-     *
-     * @param m pcep message
-     */
-    private void dispatchMessage(PcepMessage m) {
-        pc.handleMessage(m);
-    }
-
-    /**
-     * Adds PCEP device configuration with capabilities once session is established.
-     */
-    private void addNode() {
-        pc.addNode(pc);
-    }
-
-    /**
-     * Deletes PCEP device configuration when session is disconnected.
-     */
-    private void deleteNode() {
-        pc.deleteNode(pc.getPccId());
-    }
-
-    /**
-     * Return a string describing this client based on the already available
-     * information (ip address and/or remote socket).
-     *
-     * @return display string
-     */
-    private String getClientInfoString() {
-        if (pc != null) {
-            return pc.toString();
-        }
-        String channelString;
-        if (channel == null || channel.getRemoteAddress() == null) {
-            channelString = "?";
-        } else {
-            channelString = channel.getRemoteAddress().toString();
-        }
-        String pccIpString;
-        // TODO : implement functionality to get pcc id string
-        pccIpString = "?";
-        return String.format("[%s PCCIP[%s]]", channelString, pccIpString);
-    }
-
-    /**
-     * Update the channels state. Only called from the state machine.
-     *
-     * @param state
-     */
-    private void setState(ChannelState state) {
-        this.state = state;
-    }
-
-    /**
-     * Send handshake open message.
-     *
-     * @throws IOException,PcepParseException
-     */
-    private void sendHandshakeOpenMessage() throws IOException, PcepParseException {
-        PcepOpenObject pcepOpenobj = factory1.buildOpenObject()
-                .setSessionId(sessionId)
-                .setKeepAliveTime(keepAliveTime)
-                .setDeadTime(deadTime)
-                .build();
-        PcepMessage msg = factory1.buildOpenMsg()
-                .setPcepOpenObj(pcepOpenobj)
-                .build();
-        log.debug("Sending OPEN message to {}", channel.getRemoteAddress());
-        channel.write(Collections.singletonList(msg));
-    }
-
-    //Capability negotiation
-    private void capabilityNegotiation(PcepOpenMsg pOpenmsg) {
-        LinkedList<PcepValueType> tlvList = pOpenmsg.getPcepOpenObject().getOptionalTlv();
-        boolean pceccCapability = false;
-        boolean statefulPceCapability = false;
-        boolean pcInstantiationCapability = false;
-        boolean labelStackCapability = false;
-        boolean srCapability = false;
-
-        ListIterator<PcepValueType> listIterator = tlvList.listIterator();
-        while (listIterator.hasNext()) {
-            PcepValueType tlv = listIterator.next();
-
-            switch (tlv.getType()) {
-                case PceccCapabilityTlv.TYPE:
-                    pceccCapability = true;
-                    if (((PceccCapabilityTlv) tlv).sBit()) {
-                        labelStackCapability = true;
-                    }
-                    break;
-                case StatefulPceCapabilityTlv.TYPE:
-                    statefulPceCapability = true;
-                    StatefulPceCapabilityTlv stetefulPcCapTlv = (StatefulPceCapabilityTlv) tlv;
-                    if (stetefulPcCapTlv.getIFlag()) {
-                        pcInstantiationCapability = true;
-                    }
-                    break;
-                case SrPceCapabilityTlv.TYPE:
-                    srCapability = true;
-                    break;
-                default:
-                    continue;
-            }
-        }
-        this.capability = new ClientCapability(pceccCapability, statefulPceCapability, pcInstantiationCapability,
-                labelStackCapability, srCapability);
-    }
-
-    /**
-     * Send keep alive message.
-     *
-     * @throws IOException        when channel is disconnected
-     * @throws PcepParseException while building keep alive message
-     */
-    private void sendKeepAliveMessage() throws IOException, PcepParseException {
-        PcepMessage msg = factory1.buildKeepaliveMsg().build();
-        log.debug("Sending KEEPALIVE message to {}", channel.getRemoteAddress());
-        channel.write(Collections.singletonList(msg));
-    }
-
-    /**
-     * Send error message and close channel with pcc.
-     */
-    private void sendErrMsgAndCloseChannel() {
-        // TODO send error message
-        //Remove PCEP device from topology
-        deleteNode();
-        channel.close();
-    }
-
-    /**
-     * Send error message when an invalid message is received.
-     *
-     * @throws PcepParseException while building error message
-     */
-    private void sendErrMsgForInvalidMsg() throws PcepParseException {
-        byte errorType = 0x02;
-        byte errorValue = 0x00;
-        PcepErrorMsg errMsg = getErrorMsg(errorType, errorValue);
-        channel.write(Collections.singletonList(errMsg));
-    }
-
-    /**
-     * Builds pcep error message based on error value and error type.
-     *
-     * @param errorType  pcep error type
-     * @param errorValue pcep error value
-     * @return pcep error message
-     * @throws PcepParseException while bulding error message
-     */
-    public PcepErrorMsg getErrorMsg(byte errorType, byte errorValue) throws PcepParseException {
-        LinkedList<PcepErrorObject> llerrObj = new LinkedList<>();
-        PcepErrorMsg errMsg;
-
-        PcepErrorObject errObj = factory1.buildPcepErrorObject()
-                .setErrorValue(errorValue)
-                .setErrorType(errorType)
-                .build();
-
-        llerrObj.add(errObj);
-
-        //If Error caught in other than Openmessage
-        LinkedList<PcepError> llPcepErr = new LinkedList<>();
-
-        PcepError pcepErr = factory1.buildPcepError()
-                .setErrorObjList(llerrObj)
-                .build();
-
-        llPcepErr.add(pcepErr);
-
-        PcepErrorInfo errInfo = factory1.buildPcepErrorInfo()
-                .setPcepErrorList(llPcepErr)
-                .build();
-
-        errMsg = factory1.buildPcepErrorMsg()
-                .setPcepErrorInfo(errInfo)
-                .build();
-        return errMsg;
-    }
-
-    /**
-     * Process unknown pcep message received.
-     *
-     * @throws PcepParseException while building pcep error message
-     */
-    public void processUnknownMsg() throws PcepParseException {
-        Date now = new Date();
-        if (pcepPacketStats.wrongPacketCount() == 0) {
-            pcepPacketStats.setTime(now.getTime());
-            pcepPacketStats.addWrongPacket();
-            sendErrMsgForInvalidMsg();
-        }
-
-        if (pcepPacketStats.wrongPacketCount() > 1) {
-            Date lastest = new Date();
-            pcepPacketStats.addWrongPacket();
-            //converting to seconds
-            if (((lastest.getTime() - pcepPacketStats.getTime()) / 1000) > 60) {
-                now = lastest;
-                pcepPacketStats.setTime(now.getTime());
-                pcepPacketStats.resetWrongPacket();
-                pcepPacketStats.addWrongPacket();
-            } else if (((int) (lastest.getTime() - now.getTime()) / 1000) < 60) {
-                if (MAX_WRONG_COUNT_PACKET <= pcepPacketStats.wrongPacketCount()) {
-                    //reset once wrong packet count reaches MAX_WRONG_COUNT_PACKET
-                    pcepPacketStats.resetWrongPacket();
-                    // max wrong packets received send error message and close the session
-                    sendErrMsgAndCloseChannel();
-                }
-            }
-        }
-    }
-
-    /**
-     * The state machine for handling the client/channel state. All state
-     * transitions should happen from within the state machine (and not from other
-     * parts of the code)
-     */
-    enum ChannelState {
-        /**
-         * Initial state before channel is connected.
-         */
-        INIT(false) {
-
-        },
-        /**
-         * Once the session is established, wait for open message.
-         */
-        OPENWAIT(false) {
-            @Override
-            void processPcepMessage(PcepChannelHandler h, PcepMessage m) throws IOException, PcepParseException {
-
-                log.info("Message received in OPEN WAIT State");
-
-                //check for open message
-                if (m.getType() != PcepType.OPEN) {
-                    // When the message type is not open message increment the wrong packet statistics
-                    h.processUnknownMsg();
-                    log.debug("Message is not OPEN message");
-                } else {
-
-                    h.pcepPacketStats.addInPacket();
-                    PcepOpenMsg pOpenmsg = (PcepOpenMsg) m;
-                    //Do Capability negotiation.
-                    h.capabilityNegotiation(pOpenmsg);
-                    log.debug("Sending handshake OPEN message");
-                    h.sessionId = pOpenmsg.getPcepOpenObject().getSessionId();
-                    h.pcepVersion = pOpenmsg.getPcepOpenObject().getVersion();
-
-                    //setting keepalive and deadTimer
-                    byte yKeepalive = pOpenmsg.getPcepOpenObject().getKeepAliveTime();
-                    byte yDeadTimer = pOpenmsg.getPcepOpenObject().getDeadTime();
-                    h.keepAliveTime = yKeepalive;
-                    if (yKeepalive < yDeadTimer) {
-                        h.deadTime = yDeadTimer;
-                    } else {
-                        if (DEADTIMER_MAXIMUM_VALUE > (yKeepalive * KEEPALIVE_MULTIPLE_FOR_DEADTIMER)) {
-                            h.deadTime = (byte) (yKeepalive * KEEPALIVE_MULTIPLE_FOR_DEADTIMER);
-                        } else {
-                            h.deadTime = DEADTIMER_MAXIMUM_VALUE;
-                        }
-                    }
-
-                        /*
-                         * If MPLS LSR id and PCEP session socket IP addresses are not same,
-                         * the MPLS LSR id will be encoded in separate TLV.
-                         * We always maintain session information based on LSR ids.
-                         * The socket IP is stored in channel.
-                         */
-                    LinkedList<PcepValueType> optionalTlvs = pOpenmsg.getPcepOpenObject().getOptionalTlv();
-                    if (optionalTlvs != null) {
-                        for (PcepValueType optionalTlv : optionalTlvs) {
-                            if (optionalTlv instanceof NodeAttributesTlv) {
-                                List<PcepValueType> subTlvs = ((NodeAttributesTlv) optionalTlv)
-                                        .getllNodeAttributesSubTLVs();
-                                if (subTlvs == null) {
-                                    break;
-                                }
-                                for (PcepValueType subTlv : subTlvs) {
-                                    if (subTlv instanceof IPv4RouterIdOfLocalNodeSubTlv) {
-                                        h.thispccId = PccId.pccId(IpAddress
-                                                .valueOf(((IPv4RouterIdOfLocalNodeSubTlv) subTlv).getInt()));
-                                        break;
-                                    }
-                                }
-                                break;
-                            }
-                        }
-                    }
-
-                    if (h.thispccId == null) {
-                        final SocketAddress address = h.channel.getRemoteAddress();
-                        if (!(address instanceof InetSocketAddress)) {
-                            throw new IOException("Invalid client connection. Pcc is indentifed based on IP");
-                        }
-
-                        final InetSocketAddress inetAddress = (InetSocketAddress) address;
-                        h.thispccId = PccId.pccId(IpAddress.valueOf(inetAddress.getAddress()));
-                    }
-
-                    h.sendHandshakeOpenMessage();
-                    h.pcepPacketStats.addOutPacket();
-                    h.setState(KEEPWAIT);
-                    h.controller.peerStatus(h.peerAddr.toString(), PcepCfg.State.KEEPWAIT.toString(), h.sessionId);
-                }
-            }
-        },
-        /**
-         * Once the open messages are exchanged, wait for keep alive message.
-         */
-        KEEPWAIT(false) {
-            @Override
-            void processPcepMessage(PcepChannelHandler h, PcepMessage m) throws IOException, PcepParseException {
-                log.info("Message received in KEEPWAIT state");
-                //check for keep alive message
-                if (m.getType() != PcepType.KEEP_ALIVE) {
-                    // When the message type is not keep alive message increment the wrong packet statistics
-                    h.processUnknownMsg();
-                    log.error("Message is not KEEPALIVE message");
-                } else {
-                    // Set the client connected status
-                    h.pcepPacketStats.addInPacket();
-                    log.debug("sending keep alive message in KEEPWAIT state");
-                    h.pc = h.controller.getPcepClientInstance(h.thispccId, h.sessionId, h.pcepVersion,
-                            h.pcepPacketStats);
-                    //Get pc instance and set capabilities
-                    h.pc.setCapability(h.capability);
-
-                    // Initilialize DB sync status.
-                    h.pc.setLspDbSyncStatus(NOT_SYNCED);
-                    h.pc.setLabelDbSyncStatus(NOT_SYNCED);
-
-                    // set the status of pcc as connected
-                    h.pc.setConnected(true);
-                    h.pc.setChannel(h.channel);
-
-                    // set any other specific parameters to the pcc
-                    h.pc.setPcVersion(h.pcepVersion);
-                    h.pc.setPcSessionId(h.sessionId);
-                    h.pc.setPcKeepAliveTime(h.keepAliveTime);
-                    h.pc.setPcDeadTime(h.deadTime);
-                    int keepAliveTimer = h.keepAliveTime & BYTE_MASK;
-                    int deadTimer = h.deadTime & BYTE_MASK;
-                    if (0 == h.keepAliveTime) {
-                        h.deadTime = 0;
-                    }
-                    // handle keep alive and dead time
-                    if (keepAliveTimer != PcepPipelineFactory.DEFAULT_KEEP_ALIVE_TIME
-                            || deadTimer != PcepPipelineFactory.DEFAULT_DEAD_TIME) {
-
-                        h.channel.getPipeline().replace("idle", "idle",
-                                new IdleStateHandler(PcepPipelineFactory.TIMER, deadTimer, keepAliveTimer, 0));
-                    }
-                    log.debug("Dead timer : " + deadTimer);
-                    log.debug("Keep alive time : " + keepAliveTimer);
-
-                    //set the state handshake completion.
-
-                    h.sendKeepAliveMessage();
-                    h.pcepPacketStats.addOutPacket();
-                    h.setHandshakeComplete(true);
-
-                    if (!h.pc.connectClient()) {
-                        disconnectDuplicate(h);
-                    } else {
-                        h.setState(ESTABLISHED);
-                     h.controller.peerStatus(h.peerAddr.toString(), PcepCfg.State.ESTABLISHED.toString(), h.sessionId);
-                        //Session is established, add a network configuration with LSR id and device capabilities.
-                        h.addNode();
-                    }
-                }
-            }
-        },
-        /**
-         * Once the keep alive messages are exchanged, the state is established.
-         */
-        ESTABLISHED(true) {
-            @Override
-            void processPcepMessage(PcepChannelHandler h, PcepMessage m) throws IOException, PcepParseException {
-
-                //h.channel.getPipeline().remove("waittimeout");
-                log.debug("Message received in established state " + m.getType());
-                //dispatch the message
-                h.dispatchMessage(m);
-            }
-        };
-        private boolean handshakeComplete;
-
-        ChannelState(boolean handshakeComplete) {
-            this.handshakeComplete = handshakeComplete;
-        }
-
-        void processPcepMessage(PcepChannelHandler h, PcepMessage m) throws IOException, PcepParseException {
-            // do nothing
-        }
-
-        /**
-         * Is this a state in which the handshake has completed.
-         *
-         * @return true if the handshake is complete
-         */
-        public boolean isHandshakeComplete() {
-            return this.handshakeComplete;
-        }
-
-        /**
-         * Sets handshake complete status.
-         *
-         * @param handshakeComplete status of handshake
-         */
-        private void setHandshakeComplete(boolean handshakeComplete) {
-            this.handshakeComplete = handshakeComplete;
-        }
-
-        protected void disconnectDuplicate(PcepChannelHandler h) {
-            log.error("Duplicated Pcc IP or incompleted cleanup - " + "disconnecting channel {}",
-                    h.getClientInfoString());
-            h.duplicatePccIdFound = Boolean.TRUE;
-            h.channel.disconnect();
-        }
-
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepClientControllerImpl.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepClientControllerImpl.java
deleted file mode 100644
index 2624804..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepClientControllerImpl.java
+++ /dev/null
@@ -1,1232 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server.impl;
-
-import com.google.common.collect.Sets;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.IpAddress;
-import org.onosproject.incubator.net.resource.label.LabelResourceAdminService;
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.incubator.net.resource.label.LabelResourceService;
-import org.onosproject.incubator.net.tunnel.DefaultLabelStack;
-import org.onosproject.incubator.net.tunnel.DefaultTunnel;
-import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.LabelStack;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.Tunnel.State;
-import org.onosproject.incubator.net.tunnel.TunnelService;
-import org.onosproject.mastership.MastershipService;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultAnnotations.Builder;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.Path;
-import org.onosproject.net.config.NetworkConfigEvent;
-import org.onosproject.net.config.NetworkConfigListener;
-import org.onosproject.net.config.NetworkConfigService;
-import org.onosproject.net.device.DeviceEvent;
-import org.onosproject.net.device.DeviceListener;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.link.LinkEvent;
-import org.onosproject.net.link.LinkListener;
-import org.onosproject.net.link.LinkService;
-import org.onosproject.pcelabelstore.PcepLabelOp;
-import org.onosproject.pcelabelstore.api.PceLabelStore;
-import org.onosproject.pcep.api.DeviceCapability;
-import org.onosproject.pcep.server.LspKey;
-import org.onosproject.pcep.server.LspType;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepClient;
-import org.onosproject.pcep.server.PcepClientController;
-import org.onosproject.pcep.server.PcepClientListener;
-import org.onosproject.pcep.server.PcepEventListener;
-import org.onosproject.pcep.server.PcepLspStatus;
-import org.onosproject.pcep.server.PcepNodeListener;
-import org.onosproject.pcep.server.SrpIdGenerators;
-import org.onosproject.pcep.server.driver.PcepAgent;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcInitiatedLspRequest;
-import org.onosproject.pcepio.protocol.PcepError;
-import org.onosproject.pcepio.protocol.PcepErrorInfo;
-import org.onosproject.pcepio.protocol.PcepErrorMsg;
-import org.onosproject.pcepio.protocol.PcepErrorObject;
-import org.onosproject.pcepio.protocol.PcepFactory;
-import org.onosproject.pcepio.protocol.PcepInitiateMsg;
-import org.onosproject.pcepio.protocol.PcepLspObject;
-import org.onosproject.pcepio.protocol.PcepMessage;
-import org.onosproject.pcepio.protocol.PcepNai;
-import org.onosproject.pcepio.protocol.PcepReportMsg;
-import org.onosproject.pcepio.protocol.PcepSrpObject;
-import org.onosproject.pcepio.protocol.PcepStateReport;
-import org.onosproject.pcepio.types.PathSetupTypeTlv;
-import org.onosproject.pcepio.types.PcepNaiIpv4Adjacency;
-import org.onosproject.pcepio.types.PcepNaiIpv4NodeId;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.onosproject.pcepio.types.SrEroSubObject;
-import org.onosproject.pcepio.types.StatefulIPv4LspIdentifiersTlv;
-import org.onosproject.pcepio.types.SymbolicPathNameTlv;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.concurrent.ConcurrentHashMap;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.pcep.server.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
-import static org.onosproject.pcep.server.LspType.WITH_SIGNALLING;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.BANDWIDTH;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.COST_TYPE;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.DELEGATE;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.LOCAL_LSP_ID;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.LSP_SIG_TYPE;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.PCC_TUNNEL_ID;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.PCE_INIT;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.PLSP_ID;
-import static org.onosproject.pcep.server.PcepLspSyncAction.REMOVE;
-import static org.onosproject.pcep.server.PcepLspSyncAction.SEND_UPDATE;
-import static org.onosproject.pcep.server.PcepLspSyncAction.UNSTABLE;
-import static org.onosproject.pcep.server.PcepSyncStatus.IN_SYNC;
-import static org.onosproject.pcep.server.PcepSyncStatus.NOT_SYNCED;
-import static org.onosproject.pcep.server.PcepSyncStatus.SYNCED;
-import static org.onosproject.pcepio.types.PcepErrorDetailInfo.ERROR_TYPE_19;
-import static org.onosproject.pcepio.types.PcepErrorDetailInfo.ERROR_VALUE_5;
-
-/**
- * Implementation of PCEP client controller.
- */
-@Component(immediate = true, service = PcepClientController.class)
-public class PcepClientControllerImpl implements PcepClientController {
-
-    private static final Logger log = LoggerFactory.getLogger(PcepClientControllerImpl.class);
-    private static final long IDENTIFIER_SET = 0x100000000L;
-    private static final long SET = 0xFFFFFFFFL;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceService deviceService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LinkService linkService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TunnelService tunnelService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigService netCfgService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected MastershipService mastershipService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LabelResourceAdminService labelRsrcAdminService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LabelResourceService labelRsrcService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PceLabelStore pceStore;
-
-    protected ConcurrentHashMap<PccId, PcepClient> connectedClients =
-            new ConcurrentHashMap<>();
-
-    protected PcepClientAgent agent = new PcepClientAgent();
-    protected Set<PcepClientListener> pcepClientListener = new HashSet<>();
-
-    protected Set<PcepEventListener> pcepEventListener = Sets.newHashSet();
-    protected Set<PcepNodeListener> pcepNodeListener = Sets.newHashSet();
-
-    // LSR-id and device-id mapping for checking capability if L3 device is not
-    // having its capability
-    private Map<String, DeviceId> lsrIdDeviceIdMap = new HashMap<>();
-
-    private final Controller ctrl = new Controller();
-    public static final long GLOBAL_LABEL_SPACE_MIN = 4097;
-    public static final long GLOBAL_LABEL_SPACE_MAX = 5121;
-    private static final String LSRID = "lsrId";
-    private static final String DEVICE_NULL = "Device-cannot be null";
-    private static final String LINK_NULL = "Link-cannot be null";
-
-    private BasicPceccHandler crHandler;
-    private PceccSrTeBeHandler srTeHandler;
-
-    private DeviceListener deviceListener = new InternalDeviceListener();
-    private LinkListener linkListener = new InternalLinkListener();
-    private InternalConfigListener cfgListener = new InternalConfigListener();
-    private Map<Integer, Integer> pcepErrorMsg = new TreeMap<>();
-
-    @Activate
-    public void activate() {
-        ctrl.start(agent);
-        crHandler = BasicPceccHandler.getInstance();
-        crHandler.initialize(labelRsrcService, deviceService, pceStore, this);
-
-        srTeHandler = PceccSrTeBeHandler.getInstance();
-        srTeHandler.initialize(labelRsrcAdminService, labelRsrcService, this, pceStore,
-                               deviceService);
-
-        deviceService.addListener(deviceListener);
-        linkService.addListener(linkListener);
-        netCfgService.addListener(cfgListener);
-
-        // Reserve global node pool
-        if (!srTeHandler.reserveGlobalPool(GLOBAL_LABEL_SPACE_MIN, GLOBAL_LABEL_SPACE_MAX)) {
-            log.debug("Global node pool was already reserved.");
-        }
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        // Close all connected clients
-        closeConnectedClients();
-        deviceService.removeListener(deviceListener);
-        linkService.removeListener(linkListener);
-        netCfgService.removeListener(cfgListener);
-        ctrl.stop();
-        log.info("Stopped");
-    }
-
-    @Override
-    public void peerErrorMsg(String peerId, Integer errorType, Integer errValue) {
-        if (peerId == null) {
-            pcepErrorMsg.put(errorType, errValue);
-        } else {
-            if (pcepErrorMsg.size() > 10) {
-                pcepErrorMsg.clear();
-            }
-            pcepErrorMsg.put(errorType, errValue);
-        }
-    }
-
-    @Override
-    public Map<String, List<String>> getPcepExceptions() {
-        return this.ctrl.exceptionsMap();
-    }
-
-    @Override
-    public Map<Integer, Integer> getPcepErrorMsg() {
-        return pcepErrorMsg;
-    }
-
-
-    @Override
-    public Map<String, String> getPcepSessionMap() {
-        return this.ctrl.mapPeer();
-    }
-
-    @Override
-    public Map<String, Byte> getPcepSessionIdMap() {
-        return this.ctrl.mapSession();
-    }
-
-    @Override
-    public Collection<PcepClient> getClients() {
-        return connectedClients.values();
-    }
-
-    @Override
-    public PcepClient getClient(PccId pccId) {
-        return connectedClients.get(pccId);
-    }
-
-    @Override
-    public void addListener(PcepClientListener listener) {
-        if (!pcepClientListener.contains(listener)) {
-            this.pcepClientListener.add(listener);
-        }
-    }
-
-    @Override
-    public void removeListener(PcepClientListener listener) {
-        this.pcepClientListener.remove(listener);
-    }
-
-    @Override
-    public void addEventListener(PcepEventListener listener) {
-        pcepEventListener.add(listener);
-    }
-
-    @Override
-    public void removeEventListener(PcepEventListener listener) {
-        pcepEventListener.remove(listener);
-    }
-
-    @Override
-    public void writeMessage(PccId pccId, PcepMessage msg) {
-        this.getClient(pccId).sendMessage(msg);
-    }
-
-    @Override
-    public void addNodeListener(PcepNodeListener listener) {
-        pcepNodeListener.add(listener);
-    }
-
-    @Override
-    public void removeNodeListener(PcepNodeListener listener) {
-        pcepNodeListener.remove(listener);
-    }
-
-    @Override
-    public void processClientMessage(PccId pccId, PcepMessage msg) {
-        PcepClient pc = getClient(pccId);
-
-        switch (msg.getType()) {
-        case NONE:
-            break;
-        case OPEN:
-            break;
-        case KEEP_ALIVE:
-            break;
-        case PATH_COMPUTATION_REQUEST:
-            break;
-        case PATH_COMPUTATION_REPLY:
-            break;
-        case NOTIFICATION:
-            break;
-        case ERROR:
-            break;
-        case INITIATE:
-            if (!pc.capability().pcInstantiationCapability()) {
-                pc.sendMessage(Collections.singletonList(getErrMsg(pc.factory(), ERROR_TYPE_19,
-                        ERROR_VALUE_5)));
-            }
-            break;
-        case UPDATE:
-            if (!pc.capability().statefulPceCapability()) {
-                pc.sendMessage(Collections.singletonList(getErrMsg(pc.factory(), ERROR_TYPE_19,
-                        ERROR_VALUE_5)));
-            }
-            break;
-        case LABEL_UPDATE:
-            if (!pc.capability().pceccCapability()) {
-                pc.sendMessage(Collections.singletonList(getErrMsg(pc.factory(), ERROR_TYPE_19,
-                        ERROR_VALUE_5)));
-            }
-            break;
-        case CLOSE:
-            log.info("Sending Close Message  to {" + pccId.toString() + "}");
-            pc.sendMessage(Collections.singletonList(pc.factory().buildCloseMsg().build()));
-            //now disconnect client
-            pc.disconnectClient();
-            break;
-        case REPORT:
-            //Only update the listener if respective capability is supported else send PCEP-ERR msg
-            if (pc.capability().statefulPceCapability()) {
-
-                ListIterator<PcepStateReport> listIterator = ((PcepReportMsg) msg).getStateReportList().listIterator();
-                while (listIterator.hasNext()) {
-                    PcepStateReport stateRpt = listIterator.next();
-                    PcepLspObject lspObj = stateRpt.getLspObject();
-                    if (lspObj.getSFlag()) {
-                        if (pc.lspDbSyncStatus() != IN_SYNC) {
-                            log.debug("LSP DB sync started for PCC {}", pc.getPccId().id().toString());
-                            // Initialize LSP DB sync and temporary cache.
-                            pc.setLspDbSyncStatus(IN_SYNC);
-                            pc.initializeSyncMsgList(pccId);
-                        }
-                        // Store stateRpt in temporary cache.
-                        pc.addSyncMsgToList(pccId, stateRpt);
-
-                        // Don't send to provider as of now.
-                        continue;
-                    } else if (lspObj.getPlspId() == 0) {
-                        if (pc.lspDbSyncStatus() == IN_SYNC
-                                || pc.lspDbSyncStatus() == NOT_SYNCED) {
-                            // Set end of LSPDB sync.
-                            log.debug("LSP DB sync completed for PCC {}", pc.getPccId().id().toString());
-                            pc.setLspDbSyncStatus(SYNCED);
-
-                            // Call packet provider to initiate label DB sync (only if PCECC capable).
-                            if (pc.capability().pceccCapability()) {
-                                log.debug("Trigger label DB sync for PCC {}", pc.getPccId().id().toString());
-                                pc.setLabelDbSyncStatus(IN_SYNC);
-                                // Get lsrId of the PCEP client from the PCC ID. Session info is based on lsrID.
-                                String lsrId = String.valueOf(pccId.ipAddress());
-                                DeviceId pccDeviceId = DeviceId.deviceId(lsrId);
-                                try {
-                                    syncLabelDb(pccDeviceId);
-                                    pc.setLabelDbSyncStatus(SYNCED);
-                                } catch (PcepParseException e) {
-                                    log.error("Exception caught in sending label masg to PCC while in sync.");
-                                }
-                            } else {
-                                // If label db sync is not to be done, handle end of LSPDB sync actions.
-                                agent.analyzeSyncMsgList(pccId);
-                            }
-                            continue;
-                        }
-                    }
-
-                    PcepLspStatus pcepLspStatus = PcepLspStatus.values()[lspObj.getOFlag()];
-                    LspType lspType = getLspType(stateRpt.getSrpObject());
-
-                    // Download (or remove) labels for basic PCECC LSPs.
-                    if (lspType.equals(WITHOUT_SIGNALLING_AND_WITHOUT_SR)) {
-                        boolean isRemove = lspObj.getRFlag();
-                        Tunnel tunnel = null;
-
-                        if (isRemove || pcepLspStatus.equals(PcepLspStatus.GOING_UP)) {
-                            tunnel = getTunnel(lspObj);
-                        }
-
-                        if (tunnel != null) {
-                            if (isRemove) {
-                                crHandler.releaseLabel(tunnel);
-                            } else {
-                                crHandler.allocateLabel(tunnel);
-                            }
-                        }
-                    }
-
-                    // It's a usual report message while sync is not undergoing. So process it immediately.
-                    LinkedList<PcepStateReport> llPcRptList = new LinkedList<>();
-                    llPcRptList.add(stateRpt);
-                    PcepMessage pcReportMsg = pc.factory().buildReportMsg().setStateReportList((llPcRptList))
-                            .build();
-                    for (PcepEventListener l : pcepEventListener) {
-                        l.handleMessage(pccId, pcReportMsg);
-                    }
-                }
-            } else {
-                // Send PCEP-ERROR message.
-                pc.sendMessage(Collections.singletonList(getErrMsg(pc.factory(),
-                        ERROR_TYPE_19, ERROR_VALUE_5)));
-            }
-            break;
-        case LABEL_RANGE_RESERV:
-            break;
-        case LS_REPORT: //TODO: need to handle LS report to add or remove node
-            break;
-        case MAX:
-            break;
-        case END:
-            break;
-        default:
-            break;
-        }
-    }
-
-    private LspType getLspType(PcepSrpObject srpObj) {
-        LspType lspType = WITH_SIGNALLING;
-
-        if (null != srpObj) {
-            LinkedList<PcepValueType> llOptionalTlv = srpObj.getOptionalTlv();
-            ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator();
-
-            while (listIterator.hasNext()) {
-                PcepValueType tlv = listIterator.next();
-                switch (tlv.getType()) {
-                case PathSetupTypeTlv.TYPE:
-                    lspType = LspType.values()[Integer.valueOf(((PathSetupTypeTlv) tlv).getPst())];
-                    break;
-                default:
-                    break;
-                }
-            }
-        }
-        return lspType;
-    }
-
-    private Tunnel getTunnel(PcepLspObject lspObj) {
-        ListIterator<PcepValueType> listTlvIterator = lspObj.getOptionalTlv().listIterator();
-        StatefulIPv4LspIdentifiersTlv ipv4LspIdenTlv = null;
-        SymbolicPathNameTlv pathNameTlv = null;
-        Tunnel tunnel = null;
-        while (listTlvIterator.hasNext()) {
-            PcepValueType tlv = listTlvIterator.next();
-            switch (tlv.getType()) {
-            case StatefulIPv4LspIdentifiersTlv.TYPE:
-                ipv4LspIdenTlv = (StatefulIPv4LspIdentifiersTlv) tlv;
-                break;
-            case SymbolicPathNameTlv.TYPE:
-                pathNameTlv = (SymbolicPathNameTlv) tlv;
-                break;
-            default:
-                break;
-            }
-        }
-        /*
-         * Draft says: The LSP-IDENTIFIERS TLV MUST be included in the LSP object in PCRpt messages for
-         * RSVP-signaled LSPs. For ONOS PCECC implementation, it is mandatory.
-         */
-        if (ipv4LspIdenTlv == null) {
-            log.error("Stateful IPv4 identifier TLV is null in PCRpt msg.");
-            return null;
-        }
-        IpTunnelEndPoint tunnelEndPointSrc = IpTunnelEndPoint
-                .ipTunnelPoint(IpAddress.valueOf(ipv4LspIdenTlv.getIpv4IngressAddress()));
-        IpTunnelEndPoint tunnelEndPointDst = IpTunnelEndPoint
-                .ipTunnelPoint(IpAddress.valueOf(ipv4LspIdenTlv.getIpv4EgressAddress()));
-        Collection<Tunnel> tunnelQueryResult = tunnelService.queryTunnel(tunnelEndPointSrc, tunnelEndPointDst);
-
-        for (Tunnel tunnelObj : tunnelQueryResult) {
-            if (tunnelObj.annotations().value(PLSP_ID) == null) {
-                /*
-                 * PLSP_ID is null while Tunnel is created at PCE and PCInit msg carries it as 0. It is allocated by
-                 * PCC and in that case it becomes the first PCRpt msg from PCC for this LSP, and hence symbolic
-                 * path name must be carried in the PCRpt msg. Draft says: The SYMBOLIC-PATH-NAME TLV "MUST" be
-                 * included in the LSP object in the LSP State Report (PCRpt) message when during a given PCEP
-                 * session an LSP is "first" reported to a PCE.
-                 */
-                if ((pathNameTlv != null)
-                        && Arrays.equals(tunnelObj.tunnelName().value().getBytes(), pathNameTlv.getValue())) {
-                    tunnel = tunnelObj;
-                    break;
-                }
-                continue;
-            }
-            if ((Integer.valueOf(tunnelObj.annotations().value(PLSP_ID)) == lspObj.getPlspId())) {
-                if ((Integer
-                        .valueOf(tunnelObj.annotations().value(LOCAL_LSP_ID)) == ipv4LspIdenTlv.getLspId())) {
-                    tunnel = tunnelObj;
-                    break;
-                }
-            }
-        }
-
-        if (tunnel == null || tunnel.annotations().value(PLSP_ID) != null) {
-            return tunnel;
-        }
-
-        // The returned tunnel is used just for filling values in Label message. So manipulate locally
-        // and return so that to allocate label, we don't need to wait for the tunnel in the "core"
-        // to be updated, as that depends on listener mechanism and there may be timing/multi-threading issues.
-        Builder annotationBuilder = DefaultAnnotations.builder();
-        annotationBuilder.set(BANDWIDTH, tunnel.annotations().value(BANDWIDTH));
-        annotationBuilder.set(COST_TYPE, tunnel.annotations().value(COST_TYPE));
-        annotationBuilder.set(LSP_SIG_TYPE, tunnel.annotations().value(LSP_SIG_TYPE));
-        annotationBuilder.set(PCE_INIT, tunnel.annotations().value(PCE_INIT));
-        annotationBuilder.set(DELEGATE, tunnel.annotations().value(DELEGATE));
-        annotationBuilder.set(PLSP_ID, String.valueOf(lspObj.getPlspId()));
-        annotationBuilder.set(PCC_TUNNEL_ID, String.valueOf(ipv4LspIdenTlv.getTunnelId()));
-        annotationBuilder.set(LOCAL_LSP_ID, tunnel.annotations().value(LOCAL_LSP_ID));
-
-        Tunnel updatedTunnel = new DefaultTunnel(tunnel.providerId(), tunnel.src(),
-                            tunnel.dst(), tunnel.type(),
-                            tunnel.state(), tunnel.groupId(),
-                            tunnel.tunnelId(),
-                            tunnel.tunnelName(),
-                            tunnel.path(),
-                            tunnel.resource(),
-                            annotationBuilder.build());
-
-        return updatedTunnel;
-    }
-
-    @Override
-    public void closeConnectedClients() {
-        PcepClient pc;
-        for (PccId id : connectedClients.keySet()) {
-            pc = getClient(id);
-            pc.disconnectClient();
-        }
-    }
-
-    /**
-     * Returns pcep error message with specific error type and value.
-     *
-     * @param factory represents pcep factory
-     * @param errorType pcep error type
-     * @param errorValue pcep error value
-     * @return pcep error message
-     */
-    public PcepErrorMsg getErrMsg(PcepFactory factory, byte errorType, byte errorValue) {
-        LinkedList<PcepError> llPcepErr = new LinkedList<>();
-
-        LinkedList<PcepErrorObject> llerrObj = new LinkedList<>();
-        PcepErrorMsg errMsg;
-
-        PcepErrorObject errObj = factory.buildPcepErrorObject().setErrorValue(errorValue).setErrorType(errorType)
-                .build();
-
-        llerrObj.add(errObj);
-        PcepError pcepErr = factory.buildPcepError().setErrorObjList(llerrObj).build();
-
-        llPcepErr.add(pcepErr);
-
-        PcepErrorInfo errInfo = factory.buildPcepErrorInfo().setPcepErrorList(llPcepErr).build();
-
-        errMsg = factory.buildPcepErrorMsg().setPcepErrorInfo(errInfo).build();
-        return errMsg;
-    }
-
-    private boolean syncLabelDb(DeviceId deviceId) throws PcepParseException {
-        checkNotNull(deviceId);
-
-        DeviceId actualDevcieId = pceStore.getLsrIdDevice(deviceId.toString());
-        if (actualDevcieId == null) {
-            log.error("Device not available {}.", deviceId.toString());
-            pceStore.addPccLsr(deviceId);
-            return false;
-        }
-        PcepClient pc = connectedClients.get(PccId.pccId(IpAddress.valueOf(deviceId.toString())));
-
-        Device specificDevice = deviceService.getDevice(actualDevcieId);
-        if (specificDevice == null) {
-            log.error("Unable to find device for specific device id {}.", actualDevcieId.toString());
-            return false;
-        }
-
-        if (pceStore.getGlobalNodeLabel(actualDevcieId) != null) {
-            Map<DeviceId, LabelResourceId> globalNodeLabelMap = pceStore.getGlobalNodeLabels();
-
-            for (Entry<DeviceId, LabelResourceId> entry : globalNodeLabelMap.entrySet()) {
-
-                // Convert from DeviceId to TunnelEndPoint
-                Device srcDevice = deviceService.getDevice(entry.getKey());
-
-                /*
-                 * If there is a slight difference in timing such that if device subsystem has removed the device but
-                 * PCE store still has it, just ignore such devices.
-                 */
-                if (srcDevice == null) {
-                    continue;
-                }
-
-                String srcLsrId = srcDevice.annotations().value(LSRID);
-                if (srcLsrId == null) {
-                    continue;
-                }
-
-                srTeHandler.pushGlobalNodeLabel(pc, entry.getValue(),
-                                    IpAddress.valueOf(srcLsrId).getIp4Address().toInt(),
-                                    PcepLabelOp.ADD, false);
-            }
-
-            Map<Link, LabelResourceId> adjLabelMap = pceStore.getAdjLabels();
-            for (Entry<Link, LabelResourceId> entry : adjLabelMap.entrySet()) {
-                if (entry.getKey().src().deviceId().equals(actualDevcieId)) {
-                    srTeHandler.pushAdjacencyLabel(pc,
-                                       entry.getValue(),
-                                       (int) entry.getKey().src().port().toLong(),
-                                       (int) entry.getKey().dst().port().toLong(),
-                                       PcepLabelOp.ADD
-                                       );
-                }
-            }
-        }
-
-        srTeHandler.pushGlobalNodeLabel(pc, LabelResourceId.labelResourceId(0),
-                            0, PcepLabelOp.ADD, true);
-
-        log.debug("End of label DB sync for device {}", actualDevcieId);
-
-        if (mastershipService.getLocalRole(specificDevice.id()) == MastershipRole.MASTER) {
-            // Allocate node-label to this specific device.
-            allocateNodeLabel(specificDevice);
-
-            // Allocate adjacency label
-            Set<Link> links = linkService.getDeviceEgressLinks(specificDevice.id());
-            if (links != null) {
-                for (Link link : links) {
-                    allocateAdjacencyLabel(link);
-                }
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Allocates node label to specific device.
-     *
-     * @param specificDevice device to which node label needs to be allocated
-     */
-    public void allocateNodeLabel(Device specificDevice) {
-        checkNotNull(specificDevice, DEVICE_NULL);
-
-        DeviceId deviceId = specificDevice.id();
-
-        // Retrieve lsrId of a specific device
-        if (specificDevice.annotations() == null) {
-            log.debug("Device {} does not have annotations.", specificDevice.toString());
-            return;
-        }
-
-        String lsrId = specificDevice.annotations().value(LSRID);
-        if (lsrId == null) {
-            log.debug("Unable to retrieve lsr-id of a device {}.", specificDevice.toString());
-            return;
-        }
-
-        // Get capability config from netconfig
-        DeviceCapability cfg = netCfgService.getConfig(DeviceId.deviceId(lsrId), DeviceCapability.class);
-        if (cfg == null) {
-            log.error("Unable to find corresponding capability for a lsrd {} from NetConfig.", lsrId);
-            // Save info. When PCEP session is comes up then allocate node-label
-            lsrIdDeviceIdMap.put(lsrId, specificDevice.id());
-            return;
-        }
-
-        // Check whether device has SR-TE Capability
-        if (cfg.labelStackCap()) {
-            srTeHandler.allocateNodeLabel(deviceId, lsrId);
-        }
-    }
-
-    /**
-     * Releases node label of a specific device.
-     *
-     * @param specificDevice this device label and lsr-id information will be
-     *            released in other existing devices
-     */
-    public void releaseNodeLabel(Device specificDevice) {
-        checkNotNull(specificDevice, DEVICE_NULL);
-
-        DeviceId deviceId = specificDevice.id();
-
-        // Retrieve lsrId of a specific device
-        if (specificDevice.annotations() == null) {
-            log.debug("Device {} does not have annotations.", specificDevice.toString());
-            return;
-        }
-
-        String lsrId = specificDevice.annotations().value(LSRID);
-        if (lsrId == null) {
-            log.debug("Unable to retrieve lsr-id of a device {}.", specificDevice.toString());
-            return;
-        }
-
-        // Get capability config from netconfig
-        DeviceCapability cfg = netCfgService.getConfig(DeviceId.deviceId(lsrId), DeviceCapability.class);
-        if (cfg == null) {
-            log.error("Unable to find corresponding capabilty for a lsrd {} from NetConfig.", lsrId);
-            return;
-        }
-
-        // Check whether device has SR-TE Capability
-        if (cfg.labelStackCap()) {
-            if (!srTeHandler.releaseNodeLabel(deviceId, lsrId)) {
-                log.error("Unable to release node label for a device id {}.", deviceId.toString());
-            }
-        }
-    }
-
-    /**
-     * Allocates adjacency label for a link.
-     *
-     * @param link link
-     */
-    public void allocateAdjacencyLabel(Link link) {
-        checkNotNull(link, LINK_NULL);
-
-        Device specificDevice = deviceService.getDevice(link.src().deviceId());
-
-        // Retrieve lsrId of a specific device
-        if (specificDevice.annotations() == null) {
-            log.debug("Device {} does not have annotations.", specificDevice.toString());
-            return;
-        }
-
-        String lsrId = specificDevice.annotations().value(LSRID);
-        if (lsrId == null) {
-            log.debug("Unable to retrieve lsr-id of a device {}.", specificDevice.toString());
-            return;
-        }
-
-        // Get capability config from netconfig
-        DeviceCapability cfg = netCfgService.getConfig(DeviceId.deviceId(lsrId), DeviceCapability.class);
-        if (cfg == null) {
-            log.error("Unable to find corresponding capabilty for a lsrd {} from NetConfig.", lsrId);
-            // Save info. When PCEP session comes up then allocate adjacency
-            // label
-            if (lsrIdDeviceIdMap.get(lsrId) != null) {
-                lsrIdDeviceIdMap.put(lsrId, specificDevice.id());
-            }
-            return;
-        }
-
-        // Check whether device has SR-TE Capability
-        if (cfg.labelStackCap()) {
-            srTeHandler.allocateAdjacencyLabel(link);
-        }
-    }
-
-    /**
-     * Releases allocated adjacency label of a link.
-     *
-     * @param link link
-     */
-    public void releaseAdjacencyLabel(Link link) {
-        checkNotNull(link, LINK_NULL);
-
-        Device specificDevice = deviceService.getDevice(link.src().deviceId());
-
-        // Retrieve lsrId of a specific device
-        if (specificDevice.annotations() == null) {
-            log.debug("Device {} does not have annotations.", specificDevice.toString());
-            return;
-        }
-
-        String lsrId = specificDevice.annotations().value(LSRID);
-        if (lsrId == null) {
-            log.debug("Unable to retrieve lsr-id of a device {}.", specificDevice.toString());
-            return;
-        }
-
-        // Get capability config from netconfig
-        DeviceCapability cfg = netCfgService.getConfig(DeviceId.deviceId(lsrId), DeviceCapability.class);
-        if (cfg == null) {
-            log.error("Unable to find corresponding capabilty for a lsrd {} from NetConfig.", lsrId);
-            return;
-        }
-
-        // Check whether device has SR-TE Capability
-        if (cfg.labelStackCap()) {
-            if (!srTeHandler.releaseAdjacencyLabel(link)) {
-                log.error("Unable to release adjacency labels for a link {}.", link.toString());
-            }
-        }
-    }
-
-    @Override
-    public LabelStack computeLabelStack(Path path) {
-        return srTeHandler.computeLabelStack(path);
-    }
-
-    @Override
-    public boolean allocateLocalLabel(Tunnel tunnel) {
-        return crHandler.allocateLabel(tunnel);
-    }
-
-    /**
-     * Creates label stack for ERO object from network resource.
-     *
-     * @param labelStack label stack
-     * @param path (hop list)
-     * @return list of ERO subobjects
-     */
-    @Override
-    public LinkedList<PcepValueType> createPcepLabelStack(DefaultLabelStack labelStack, Path path) {
-        checkNotNull(labelStack);
-
-        LinkedList<PcepValueType> llSubObjects = new LinkedList<PcepValueType>();
-        Iterator<Link> links = path.links().iterator();
-        LabelResourceId label = null;
-        Link link = null;
-        PcepValueType subObj = null;
-        PcepNai nai = null;
-        Device dstNode = null;
-        long srcPortNo, dstPortNo;
-
-        ListIterator<LabelResourceId> labelListIterator = labelStack.labelResources().listIterator();
-        while (labelListIterator.hasNext()) {
-            label = labelListIterator.next();
-            link = links.next();
-
-            srcPortNo = link.src().port().toLong();
-            srcPortNo = ((srcPortNo & IDENTIFIER_SET) == IDENTIFIER_SET) ? srcPortNo & SET : srcPortNo;
-
-            dstPortNo = link.dst().port().toLong();
-            dstPortNo = ((dstPortNo & IDENTIFIER_SET) == IDENTIFIER_SET) ? dstPortNo & SET : dstPortNo;
-
-            nai = new PcepNaiIpv4Adjacency((int) srcPortNo, (int) dstPortNo);
-            subObj = new SrEroSubObject(PcepNaiIpv4Adjacency.ST_TYPE, false, false, false, true, (int) label.labelId(),
-                                        nai);
-            llSubObjects.add(subObj);
-
-            dstNode = deviceService.getDevice(link.dst().deviceId());
-            nai = new PcepNaiIpv4NodeId(Ip4Address.valueOf(dstNode.annotations().value(LSRID)).toInt());
-
-            if (!labelListIterator.hasNext()) {
-                log.error("Malformed label stack.");
-            }
-            label = labelListIterator.next();
-            subObj = new SrEroSubObject(PcepNaiIpv4NodeId.ST_TYPE, false, false, false, true, (int) label.labelId(),
-                                        nai);
-            llSubObjects.add(subObj);
-        }
-        return llSubObjects;
-    }
-
-    /**
-     * Implementation of an Pcep Agent which is responsible for
-     * keeping track of connected clients and the state in which
-     * they are.
-     */
-    public class PcepClientAgent implements PcepAgent {
-
-        private final Logger log = LoggerFactory.getLogger(PcepClientAgent.class);
-
-        @Override
-        public boolean addConnectedClient(PccId pccId, PcepClient pc) {
-
-            if (connectedClients.get(pccId) != null) {
-                log.error("Trying to add connectedClient but found a previous "
-                        + "value for pcc ip: {}", pccId.toString());
-                return false;
-            } else {
-                log.debug("Added Client {}", pccId.toString());
-                connectedClients.put(pccId, pc);
-                for (PcepClientListener l : pcepClientListener) {
-                    l.clientConnected(pccId);
-                }
-                return true;
-            }
-        }
-
-        @Override
-        public boolean validActivation(PccId pccId) {
-            if (connectedClients.get(pccId) == null) {
-                log.error("Trying to activate client but is not in "
-                        + "connected client: pccIp {}. Aborting ..", pccId.toString());
-                return false;
-            }
-            return true;
-        }
-
-        @Override
-        public void removeConnectedClient(PccId pccId) {
-
-            connectedClients.remove(pccId);
-            for (PcepClientListener l : pcepClientListener) {
-                log.warn("Removal for {}", pccId.toString());
-                l.clientDisconnected(pccId);
-            }
-        }
-
-        @Override
-        public void processPcepMessage(PccId pccId, PcepMessage m) {
-            processClientMessage(pccId, m);
-        }
-
-        @Override
-        public void addNode(PcepClient pc) {
-            for (PcepNodeListener l : pcepNodeListener) {
-                l.addDevicePcepConfig(pc);
-            }
-        }
-
-        @Override
-        public void deleteNode(PccId pccId) {
-            for (PcepNodeListener l : pcepNodeListener) {
-                l.deleteDevicePcepConfig(pccId);
-            }
-        }
-
-        @SuppressWarnings({ "unchecked", "rawtypes" })
-        @Override
-        public boolean analyzeSyncMsgList(PccId pccId) {
-            PcepClient pc = getClient(pccId);
-            /*
-             * PLSP_ID is null while tunnel is created at PCE and PCInit msg carries it as 0. It is allocated by PCC and
-             * in that case it becomes the first PCRpt msg from PCC for this LSP, and hence symbolic path name must be
-             * carried in the PCRpt msg. Draft says: The SYMBOLIC-PATH-NAME TLV "MUST" be included in the LSP object in
-             * the LSP State Report (PCRpt) message when during a given PCEP session an LSP is "first" reported to a
-             * PCE. So two separate lists with separate keys are maintained.
-             */
-            Map<LspKey, Tunnel> preSyncLspDbByKey = new HashMap<>();
-            Map<String, Tunnel> preSyncLspDbByName = new HashMap<>();
-
-            // Query tunnel service and fetch all the tunnels with this PCC as ingress.
-            // Organize into two maps, with LSP key if known otherwise with symbolic path name, for quick search.
-            Collection<Tunnel> queriedTunnels = tunnelService.queryTunnel(Tunnel.Type.MPLS);
-            for (Tunnel tunnel : queriedTunnels) {
-                if (((IpTunnelEndPoint) tunnel.src()).ip().equals(pccId.ipAddress())) {
-                    String pLspId = tunnel.annotations().value(PLSP_ID);
-                    if (pLspId != null) {
-                        String localLspId = tunnel.annotations().value(LOCAL_LSP_ID);
-                        checkNotNull(localLspId);
-                        LspKey lspKey = new LspKey(Integer.valueOf(pLspId), Short.valueOf(localLspId));
-                        preSyncLspDbByKey.put(lspKey, tunnel);
-                    } else {
-                        preSyncLspDbByName.put(tunnel.tunnelName().value(), tunnel);
-                    }
-                }
-            }
-
-            List<PcepStateReport> syncStateRptList = pc.getSyncMsgList(pccId);
-            if (syncStateRptList == null) {
-                // When there are no LSPs to sync, directly end-of-sync PCRpt will come and the
-                // list will be null.
-                syncStateRptList = Collections.EMPTY_LIST;
-                log.debug("No LSPs reported from PCC during sync.");
-            }
-
-            Iterator<PcepStateReport> stateRptListIterator = syncStateRptList.iterator();
-
-            // For every report, fetch PLSP id, local LSP id and symbolic path name from the message.
-            while (stateRptListIterator.hasNext()) {
-                PcepStateReport stateRpt = stateRptListIterator.next();
-                Tunnel tunnel = null;
-
-                PcepLspObject lspObj = stateRpt.getLspObject();
-                ListIterator<PcepValueType> listTlvIterator = lspObj.getOptionalTlv().listIterator();
-                StatefulIPv4LspIdentifiersTlv ipv4LspIdenTlv = null;
-                SymbolicPathNameTlv pathNameTlv = null;
-
-                while (listTlvIterator.hasNext()) {
-                    PcepValueType tlv = listTlvIterator.next();
-                    switch (tlv.getType()) {
-                    case StatefulIPv4LspIdentifiersTlv.TYPE:
-                        ipv4LspIdenTlv = (StatefulIPv4LspIdentifiersTlv) tlv;
-                        break;
-
-                    case SymbolicPathNameTlv.TYPE:
-                        pathNameTlv = (SymbolicPathNameTlv) tlv;
-                        break;
-
-                    default:
-                        break;
-                    }
-                }
-
-                if (ipv4LspIdenTlv == null) {
-                    return false;
-                }
-
-                LspKey lspKeyOfRpt = new LspKey(lspObj.getPlspId(), ipv4LspIdenTlv.getLspId());
-                tunnel = preSyncLspDbByKey.get(lspKeyOfRpt);
-                // PCE tunnel is matched with PCRpt LSP. Now delete it from the preSyncLspDb list as the residual
-                // non-matching list will be processed at the end.
-                if (tunnel != null) {
-                    preSyncLspDbByKey.remove(lspKeyOfRpt);
-                } else if (pathNameTlv != null) {
-                    tunnel = preSyncLspDbByName.get(Arrays.toString(pathNameTlv.getValue()));
-                    if (tunnel != null) {
-                        preSyncLspDbByName.remove(tunnel.tunnelName().value());
-                    }
-                }
-
-                if (tunnel == null) {
-                    // If remove flag is set, and tunnel is not known to PCE, ignore it.
-                    if (lspObj.getCFlag() && !lspObj.getRFlag()) {
-                        // For initiated LSP, need to send PCInit delete msg.
-                        try {
-                            PcepSrpObject srpobj = pc.factory().buildSrpObject().setSrpID(SrpIdGenerators.create())
-                                    .setRFlag(true).build();
-                            PcInitiatedLspRequest releaseLspRequest = pc.factory().buildPcInitiatedLspRequest()
-                                    .setLspObject(lspObj).setSrpObject(srpobj).build();
-                            LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList
-                                    = new LinkedList<PcInitiatedLspRequest>();
-                            llPcInitiatedLspRequestList.add(releaseLspRequest);
-
-                            PcepInitiateMsg pcInitiateMsg = pc.factory().buildPcepInitiateMsg()
-                                    .setPcInitiatedLspRequestList(llPcInitiatedLspRequestList).build();
-
-                            pc.sendMessage(Collections.singletonList(pcInitiateMsg));
-                        } catch (PcepParseException e) {
-                            log.error("Exception occured while sending initiate delete message {}", e.getMessage());
-                        }
-                        continue;
-                    }
-                }
-
-                if (!lspObj.getCFlag()) {
-                    // For learned LSP process both add/update PCRpt.
-                    LinkedList<PcepStateReport> llPcRptList = new LinkedList<>();
-                    llPcRptList.add(stateRpt);
-                    PcepMessage pcReportMsg = pc.factory().buildReportMsg().setStateReportList((llPcRptList))
-                            .build();
-
-                    for (PcepEventListener l : pcepEventListener) {
-                        l.handleMessage(pccId, pcReportMsg);
-                    }
-                    continue;
-                }
-
-                // Implied that tunnel != null and lspObj.getCFlag() is set
-                // State different for PCC sent LSP and PCE known LSP, send PCUpd msg.
-                State tunnelState = PcepLspStatus
-                        .getTunnelStatusFromLspStatus(PcepLspStatus.values()[lspObj.getOFlag()]);
-
-                if (tunnel != null && tunnelState != tunnel.state()) {
-                    for (PcepEventListener l : pcepEventListener) {
-                        l.handleEndOfSyncAction(tunnel, SEND_UPDATE);
-                    }
-                }
-            }
-
-            // Check which tunnels are extra at PCE that were not reported by PCC.
-            Map<Object, Tunnel> preSyncLspDb = (Map) preSyncLspDbByKey;
-            handleResidualTunnels(preSyncLspDb);
-            preSyncLspDbByKey = null;
-
-            preSyncLspDb = (Map) preSyncLspDbByName;
-            handleResidualTunnels(preSyncLspDb);
-            preSyncLspDbByName = null;
-            preSyncLspDb = null;
-
-            pc.removeSyncMsgList(pccId);
-            return true;
-        }
-
-        /*
-         * Go through the tunnels which are known by PCE but were not reported by PCC during LSP DB sync and take
-         * appropriate actions.
-         */
-        private void handleResidualTunnels(Map<Object, Tunnel> preSyncLspDb) {
-            for (Tunnel pceExtraTunnel : preSyncLspDb.values()) {
-                if (pceExtraTunnel.annotations().value(PCE_INIT) == null
-                        || "false".equalsIgnoreCase(pceExtraTunnel.annotations().value(PCE_INIT))) {
-                    // PCC initiated tunnels should be removed from tunnel store.
-                    for (PcepEventListener l : pcepEventListener) {
-                        l.handleEndOfSyncAction(pceExtraTunnel, REMOVE);
-                    }
-                } else {
-                    // PCE initiated tunnels should be initiated again.
-                    for (PcepEventListener l : pcepEventListener) {
-                        l.handleEndOfSyncAction(pceExtraTunnel, UNSTABLE);
-                    }
-                }
-            }
-        }
-    }
-
-    /*
-     * Handle device events.
-     */
-    private class InternalDeviceListener implements DeviceListener {
-        @Override
-        public void event(DeviceEvent event) {
-            Device specificDevice = event.subject();
-            if (specificDevice == null) {
-                log.error("Unable to find device from device event.");
-                return;
-            }
-
-            switch (event.type()) {
-
-            case DEVICE_ADDED:
-                // Node-label allocation is being done during Label DB Sync.
-                // So, when device is detected, no need to do node-label
-                // allocation.
-                String lsrId = specificDevice.annotations().value(LSRID);
-                if (lsrId != null) {
-                    pceStore.addLsrIdDevice(lsrId, specificDevice.id());
-
-                    // Search in failed DB sync store. If found, trigger label DB sync.
-                    DeviceId pccDeviceId = DeviceId.deviceId(lsrId);
-                    if (pceStore.hasPccLsr(pccDeviceId)) {
-                        log.debug("Continue to perform label DB sync for device {}.", pccDeviceId.toString());
-                        try {
-                            syncLabelDb(pccDeviceId);
-                        } catch (PcepParseException e) {
-                            log.error("Exception caught in sending label masg to PCC while in sync.");
-                        }
-                        pceStore.removePccLsr(pccDeviceId);
-                    }
-                }
-                break;
-
-            case DEVICE_REMOVED:
-                // Release node-label
-                if (mastershipService.getLocalRole(specificDevice.id()) == MastershipRole.MASTER) {
-                    releaseNodeLabel(specificDevice);
-                }
-
-                if (specificDevice.annotations().value(LSRID) != null) {
-                    pceStore.removeLsrIdDevice(specificDevice.annotations().value(LSRID));
-                }
-                break;
-
-            default:
-                break;
-            }
-        }
-    }
-
-    /*
-     * Handle link events.
-     */
-    private class InternalLinkListener implements LinkListener {
-        @Override
-        public void event(LinkEvent event) {
-            Link link = event.subject();
-
-            switch (event.type()) {
-
-            case LINK_ADDED:
-                // Allocate adjacency label
-                if (mastershipService.getLocalRole(link.src().deviceId()) == MastershipRole.MASTER) {
-                    allocateAdjacencyLabel(link);
-                }
-                break;
-
-            case LINK_REMOVED:
-                // Release adjacency label
-                if (mastershipService.getLocalRole(link.src().deviceId()) == MastershipRole.MASTER) {
-                    releaseAdjacencyLabel(link);
-                }
-                break;
-
-            default:
-                break;
-            }
-        }
-    }
-
-    private class InternalConfigListener implements NetworkConfigListener {
-
-        @Override
-        public void event(NetworkConfigEvent event) {
-
-            if ((event.type() == NetworkConfigEvent.Type.CONFIG_ADDED)
-                    && event.configClass().equals(DeviceCapability.class)) {
-
-                DeviceId deviceIdLsrId = (DeviceId) event.subject();
-                String lsrId = deviceIdLsrId.toString();
-                DeviceId deviceId = lsrIdDeviceIdMap.get(lsrId);
-                if (deviceId == null) {
-                    log.debug("Unable to find device id for a lsr-id {} from lsr-id and device-id map.", lsrId);
-                    return;
-                }
-
-                DeviceCapability cfg = netCfgService.getConfig(DeviceId.deviceId(lsrId), DeviceCapability.class);
-                if (cfg == null) {
-                    log.error("Unable to find corresponding capabilty for a lsrd {}.", lsrId);
-                    return;
-                }
-
-                if (cfg.labelStackCap()) {
-                    if (mastershipService.getLocalRole(deviceId) == MastershipRole.MASTER) {
-                        // Allocate node-label
-                        srTeHandler.allocateNodeLabel(deviceId, lsrId);
-
-                        // Allocate adjacency label to links which are
-                        // originated from this specific device id
-                        Set<Link> links = linkService.getDeviceEgressLinks(deviceId);
-                        for (Link link : links) {
-                            if (!srTeHandler.allocateAdjacencyLabel(link)) {
-                                return;
-                            }
-                        }
-                    }
-                }
-                // Remove lsrId info from map
-                lsrIdDeviceIdMap.remove(lsrId);
-            }
-        }
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepClientImpl.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepClientImpl.java
deleted file mode 100644
index 7e52c19..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepClientImpl.java
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server.impl;
-
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.RejectedExecutionException;
-
-import org.jboss.netty.channel.Channel;
-import org.onlab.packet.IpAddress;
-import org.onosproject.pcep.server.ClientCapability;
-import org.onosproject.pcep.server.LspKey;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepClient;
-import org.onosproject.pcep.server.PcepPacketStats;
-import org.onosproject.pcep.server.PcepSyncStatus;
-import org.onosproject.pcep.server.driver.PcepAgent;
-import org.onosproject.pcep.server.driver.PcepClientDriver;
-import org.onosproject.pcepio.protocol.PcepFactories;
-import org.onosproject.pcepio.protocol.PcepFactory;
-import org.onosproject.pcepio.protocol.PcepMessage;
-import org.onosproject.pcepio.protocol.PcepStateReport;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * An abstract representation of an OpenFlow switch. Can be extended by others
- * to serve as a base for their vendor specific representation of a switch.
- */
-public class PcepClientImpl implements PcepClientDriver {
-
-    protected final Logger log = LoggerFactory.getLogger(PcepClientImpl.class);
-
-    private static final String SHUTDOWN_MSG = "Worker has already been shutdown";
-
-    private Channel channel;
-    protected String channelId;
-
-    private boolean connected;
-    protected boolean startDriverHandshakeCalled;
-    protected boolean isHandShakeComplete;
-    private PcepSyncStatus lspDbSyncStatus;
-    private PcepSyncStatus labelDbSyncStatus;
-    private PccId pccId;
-    private PcepAgent agent;
-
-    private ClientCapability capability;
-    private PcepVersion pcepVersion;
-    private byte keepAliveTime;
-    private byte deadTime;
-    private byte sessionId;
-    private PcepPacketStatsImpl pktStats;
-    private Map<LspKey, Boolean> lspDelegationInfo = new HashMap<>();
-    private Map<PccId, List<PcepStateReport>> syncRptCache = new HashMap<>();
-
-    @Override
-    public void init(PccId pccId, PcepVersion pcepVersion, PcepPacketStats pktStats) {
-        this.pccId = pccId;
-        this.pcepVersion = pcepVersion;
-        this.pktStats = (PcepPacketStatsImpl) pktStats;
-    }
-
-    @Override
-    public final void disconnectClient() {
-        this.channel.close();
-    }
-
-    @Override
-    public void setCapability(ClientCapability capability) {
-        this.capability = capability;
-    }
-
-    @Override
-    public ClientCapability capability() {
-        return capability;
-    }
-
-    @Override
-    public final void sendMessage(PcepMessage m) {
-        log.debug("Sending message to {}", channel.getRemoteAddress());
-        try {
-            channel.write(Collections.singletonList(m));
-            this.pktStats.addOutPacket();
-        } catch (RejectedExecutionException e) {
-            log.warn(e.getMessage());
-            if (!e.getMessage().contains(SHUTDOWN_MSG)) {
-                throw e;
-            }
-        }
-    }
-
-    @Override
-    public final void sendMessage(List<PcepMessage> msgs) {
-        try {
-            channel.write(msgs);
-            this.pktStats.addOutPacket(msgs.size());
-        } catch (RejectedExecutionException e) {
-            log.warn(e.getMessage());
-            if (!e.getMessage().contains(SHUTDOWN_MSG)) {
-                throw e;
-            }
-        }
-    }
-
-    @Override
-    public final boolean isConnected() {
-        return this.connected;
-    }
-
-    @Override
-    public final void setConnected(boolean connected) {
-        this.connected = connected;
-    };
-
-    @Override
-    public final void setChannel(Channel channel) {
-        this.channel = channel;
-        final SocketAddress address = channel.getRemoteAddress();
-        if (address instanceof InetSocketAddress) {
-            final InetSocketAddress inetAddress = (InetSocketAddress) address;
-            final IpAddress ipAddress = IpAddress.valueOf(inetAddress.getAddress());
-            if (ipAddress.isIp4()) {
-                channelId = ipAddress.toString() + ':' + inetAddress.getPort();
-            } else {
-                channelId = '[' + ipAddress.toString() + "]:" + inetAddress.getPort();
-            }
-        }
-    };
-
-    @Override
-    public String channelId() {
-        return channelId;
-    }
-
-    @Override
-    public final PccId getPccId() {
-        return this.pccId;
-    }
-
-    @Override
-    public final String getStringId() {
-        return this.pccId.toString();
-    }
-
-    @Override
-    public final void setPcVersion(PcepVersion pcepVersion) {
-        this.pcepVersion = pcepVersion;
-    }
-
-    @Override
-    public void setPcKeepAliveTime(byte keepAliveTime) {
-        this.keepAliveTime = keepAliveTime;
-    }
-
-    @Override
-    public void setPcDeadTime(byte deadTime) {
-        this.deadTime = deadTime;
-    }
-
-    @Override
-    public void setPcSessionId(byte sessionId) {
-        this.sessionId = sessionId;
-    }
-
-    @Override
-    public void setLspDbSyncStatus(PcepSyncStatus syncStatus) {
-        log.debug("LSP DB sync status set from {} to {}", this.lspDbSyncStatus, syncStatus);
-        this.lspDbSyncStatus = syncStatus;
-    }
-
-    @Override
-    public PcepSyncStatus lspDbSyncStatus() {
-        return lspDbSyncStatus;
-    }
-
-    @Override
-    public void setLabelDbSyncStatus(PcepSyncStatus syncStatus) {
-
-        PcepSyncStatus syncOldStatus = labelDbSyncStatus();
-        this.labelDbSyncStatus = syncStatus;
-        log.debug("Label DB sync status set from {} to {}", syncOldStatus, syncStatus);
-        if ((syncOldStatus == PcepSyncStatus.IN_SYNC) && (syncStatus == PcepSyncStatus.SYNCED)) {
-            // Perform end of LSP DB sync actions.
-            this.agent.analyzeSyncMsgList(pccId);
-        }
-    }
-
-    @Override
-    public PcepSyncStatus labelDbSyncStatus() {
-        return labelDbSyncStatus;
-    }
-
-    @Override
-    public final void handleMessage(PcepMessage m) {
-        this.pktStats.addInPacket();
-        this.agent.processPcepMessage(pccId, m);
-    }
-
-    @Override
-    public void addNode(PcepClient pc) {
-        this.agent.addNode(pc);
-    }
-
-    @Override
-    public void deleteNode(PccId pccId) {
-        this.agent.deleteNode(pccId);
-    }
-
-    @Override
-    public final boolean connectClient() {
-        return this.agent.addConnectedClient(pccId, this);
-    }
-
-    @Override
-    public final void removeConnectedClient() {
-        this.agent.removeConnectedClient(pccId);
-    }
-
-    @Override
-    public PcepFactory factory() {
-        return PcepFactories.getFactory(pcepVersion);
-    }
-
-    @Override
-    public boolean isHandshakeComplete() {
-        return isHandShakeComplete;
-    }
-
-    @Override
-    public final void setAgent(PcepAgent ag) {
-        if (this.agent == null) {
-            this.agent = ag;
-        }
-    }
-
-    @Override
-    public void setLspAndDelegationInfo(LspKey lspKey, boolean dFlag) {
-        lspDelegationInfo.put(lspKey, dFlag);
-    }
-
-    @Override
-    public Boolean delegationInfo(LspKey lspKey) {
-        return lspDelegationInfo.get(lspKey);
-    }
-
-    @Override
-    public void initializeSyncMsgList(PccId pccId) {
-        List<PcepStateReport> rptMsgList = new LinkedList<>();
-        syncRptCache.put(pccId, rptMsgList);
-    }
-
-    @Override
-    public List<PcepStateReport> getSyncMsgList(PccId pccId) {
-        return syncRptCache.get(pccId);
-    }
-
-    @Override
-    public void removeSyncMsgList(PccId pccId) {
-        syncRptCache.remove(pccId);
-    }
-
-    @Override
-    public void addSyncMsgToList(PccId pccId, PcepStateReport rptMsg) {
-        List<PcepStateReport> rptMsgList = syncRptCache.get(pccId);
-        rptMsgList.add(rptMsg);
-        syncRptCache.put(pccId, rptMsgList);
-    }
-
-    @Override
-    public boolean isOptical() {
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("channel", channelId())
-                .add("pccId", getPccId())
-                .toString();
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepConfig.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepConfig.java
deleted file mode 100644
index b5b93e4..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepConfig.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server.impl;
-
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepCfg;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.TreeMap;
-
-
-public class PcepConfig implements PcepCfg {
-
-    private static final Logger log = LoggerFactory.getLogger(PcepConfig.class);
-
-    private State state = State.INIT;
-    private PccId pccId;
-    private TreeMap<String, PcepCfg> bgpPeerTree = new TreeMap<>();
-
-    @Override
-    public State getState() {
-        return state;
-    }
-
-    @Override
-    public void setState(State state) {
-        this.state = state;
-    }
-
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepControllerImpl.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepControllerImpl.java
deleted file mode 100644
index 2d1477a..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepControllerImpl.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.server.impl;
-
-import com.google.common.collect.Sets;
-import org.onosproject.net.DeviceId;
-import org.onosproject.pcep.api.PcepController;
-import org.onosproject.pcep.api.PcepDpid;
-import org.onosproject.pcep.api.PcepLinkListener;
-import org.onosproject.pcep.api.PcepSwitch;
-import org.onosproject.pcep.api.PcepSwitchListener;
-import org.onosproject.pcep.api.PcepTunnel;
-import org.onosproject.pcep.api.PcepTunnelListener;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Set;
-
-/**
- * Implementation of PCEP controller [protocol].
- */
-@Component(immediate = true, service = PcepController.class)
-public class PcepControllerImpl implements PcepController {
-
-    private static final Logger log = LoggerFactory.getLogger(PcepControllerImpl.class);
-
-    protected Set<PcepTunnelListener> pcepTunnelListener = Sets.newHashSet();
-    protected Set<PcepLinkListener> pcepLinkListener = Sets.newHashSet();
-    protected Set<PcepSwitchListener> pcepSwitchListener = Sets.newHashSet();
-
-    private final Controller ctrl = new Controller();
-
-    @Activate
-    public void activate() {
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        log.info("Stopped");
-    }
-
-    @Override
-    public Iterable<PcepSwitch> getSwitches() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public PcepSwitch getSwitch(PcepDpid did) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public void addListener(PcepSwitchListener listener) {
-        this.pcepSwitchListener.add(listener);
-    }
-
-    @Override
-    public void removeListener(PcepSwitchListener listener) {
-        this.pcepSwitchListener.remove(listener);
-    }
-
-    @Override
-    public void addLinkListener(PcepLinkListener listener) {
-        this.pcepLinkListener.add(listener);
-    }
-
-    @Override
-    public void removeLinkListener(PcepLinkListener listener) {
-        this.pcepLinkListener.remove(listener);
-    }
-
-    @Override
-    public void addTunnelListener(PcepTunnelListener listener) {
-        this.pcepTunnelListener.add(listener);
-    }
-
-    @Override
-    public void removeTunnelListener(PcepTunnelListener listener) {
-        this.pcepTunnelListener.remove(listener);
-    }
-
-    @Override
-    public PcepTunnel applyTunnel(DeviceId srcDid, DeviceId dstDid, long srcPort, long dstPort, long bandwidth,
-            String name) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Boolean deleteTunnel(String id) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
-    public Boolean updateTunnelBandwidth(String id, long bandwidth) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
-    public void getTunnelStatistics(String pcepTunnelId) {
-        // TODO Auto-generated method stub
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepMessageDecoder.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepMessageDecoder.java
deleted file mode 100644
index bd831a8..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepMessageDecoder.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server.impl;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.jboss.netty.handler.codec.frame.FrameDecoder;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.protocol.PcepFactories;
-import org.onosproject.pcepio.protocol.PcepMessage;
-import org.onosproject.pcepio.protocol.PcepMessageReader;
-import org.onosproject.pcepio.util.HexDump;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Decode an pcep message from a Channel, for use in a netty pipeline.
- */
-public class PcepMessageDecoder extends FrameDecoder {
-
-    private static final Logger log = LoggerFactory.getLogger(PcepMessageDecoder.class);
-
-    @Override
-    protected Object decode(ChannelHandlerContext ctx, Channel channel,
-            ChannelBuffer buffer) throws Exception {
-        log.debug("Message received.");
-        if (!channel.isConnected()) {
-            log.info("Channel is not connected.");
-            // In testing, I see decode being called AFTER decode last.
-            // This check avoids that from reading corrupted frames
-            return null;
-        }
-
-        HexDump.pcepHexDump(buffer);
-
-        // Buffer can contain multiple messages, also may contain out of bound message.
-        // Read the message one by one from buffer and parse it. If it encountered out of bound message,
-        // then mark the reader index and again take the next chunk of messages from the channel
-        // and parse again from the marked reader index.
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        List<PcepMessage> msgList = (List<PcepMessage>) ctx.getAttachment();
-
-        if (msgList == null) {
-            msgList = new LinkedList<>();
-        }
-
-        try {
-            while (buffer.readableBytes() > 0) {
-                buffer.markReaderIndex();
-                PcepMessage message = reader.readFrom(buffer);
-                msgList.add(message);
-            }
-            ctx.setAttachment(null);
-            return msgList;
-        } catch (PcepOutOfBoundMessageException e) {
-            log.debug("PCEP message decode error");
-            buffer.resetReaderIndex();
-            buffer.discardReadBytes();
-            ctx.setAttachment(msgList);
-        }
-        return null;
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepMessageEncoder.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepMessageEncoder.java
deleted file mode 100644
index 7c5b14b..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepMessageEncoder.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server.impl;
-
-import java.util.List;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelHandlerContext;
-import org.jboss.netty.handler.codec.oneone.OneToOneEncoder;
-import org.onosproject.pcepio.protocol.PcepMessage;
-import org.onosproject.pcepio.util.HexDump;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Encode an pcep message for output into a ChannelBuffer, for use in a
- * netty pipeline.
- */
-public class PcepMessageEncoder extends OneToOneEncoder {
-    private static final Logger log = LoggerFactory.getLogger(PcepMessageEncoder.class);
-
-    @Override
-    protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception {
-        log.debug("Sending message");
-        if (!(msg instanceof List)) {
-            log.debug("Invalid msg.");
-            return msg;
-        }
-
-        @SuppressWarnings("unchecked")
-        List<PcepMessage> msglist = (List<PcepMessage>) msg;
-
-        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-
-        for (PcepMessage pm : msglist) {
-            pm.writeTo(buf);
-        }
-
-        HexDump.pcepHexDump(buf);
-
-        return buf;
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepPacketStatsImpl.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepPacketStatsImpl.java
deleted file mode 100644
index 1659247..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepPacketStatsImpl.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server.impl;
-
-import org.onosproject.pcep.server.PcepPacketStats;
-
-/**
- * The implementation for PCEP packet statistics.
- */
-public class PcepPacketStatsImpl implements PcepPacketStats {
-
-    private int inPacketCount;
-    private int outPacketCount;
-    private int wrongPacketCount;
-    private long time;
-
-    /**
-     * Default constructor.
-     */
-    public PcepPacketStatsImpl() {
-        this.inPacketCount = 0;
-        this.outPacketCount = 0;
-        this.wrongPacketCount = 0;
-        this.time = 0;
-    }
-
-    @Override
-    public int outPacketCount() {
-        return outPacketCount;
-    }
-
-    @Override
-    public int inPacketCount() {
-        return inPacketCount;
-    }
-
-    @Override
-    public int wrongPacketCount() {
-        return wrongPacketCount;
-    }
-
-    /**
-     * Increments the received packet counter.
-     */
-    public void addInPacket() {
-        this.inPacketCount++;
-    }
-
-    /**
-     * Increments the sent packet counter.
-     */
-    public void addOutPacket() {
-        this.outPacketCount++;
-    }
-
-    /**
-     * Increments the sent packet counter by specified value.
-     *
-     * @param value of no of packets sent
-     */
-    public void addOutPacket(int value) {
-        this.outPacketCount = this.outPacketCount + value;
-    }
-
-    /**
-     * Increments the wrong packet counter.
-     */
-    public void addWrongPacket() {
-        this.wrongPacketCount++;
-    }
-
-    /**
-     * Resets wrong packet count.
-     */
-    public void resetWrongPacket() {
-        this.wrongPacketCount = 0;
-    }
-
-    @Override
-    public long getTime() {
-        return this.time;
-    }
-
-    /**
-     * Sets the time value.
-     *
-     * @param time long value of time
-     */
-    public void setTime(long time) {
-        this.time = time;
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepPipelineFactory.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepPipelineFactory.java
deleted file mode 100644
index f1932e9..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepPipelineFactory.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.pcep.server.impl;
-
-import org.jboss.netty.channel.ChannelPipeline;
-import org.jboss.netty.channel.ChannelPipelineFactory;
-import org.jboss.netty.channel.Channels;
-import org.jboss.netty.handler.timeout.IdleStateHandler;
-import org.jboss.netty.handler.timeout.ReadTimeoutHandler;
-import org.jboss.netty.util.ExternalResourceReleasable;
-import org.jboss.netty.util.HashedWheelTimer;
-import org.jboss.netty.util.Timer;
-
-/**
- * Creates a ChannelPipeline for a server-side pcep channel.
- */
-public class PcepPipelineFactory
-    implements ChannelPipelineFactory, ExternalResourceReleasable {
-
-    protected Controller controller;
-    static final Timer TIMER = new HashedWheelTimer();
-    protected IdleStateHandler idleHandler;
-    protected ReadTimeoutHandler readTimeoutHandler;
-    static final int DEFAULT_KEEP_ALIVE_TIME = 30;
-    static final int DEFAULT_DEAD_TIME = 120;
-    static final int DEFAULT_WAIT_TIME = 60;
-
-    public PcepPipelineFactory(Controller controller) {
-        super();
-        this.controller = controller;
-        this.idleHandler = new IdleStateHandler(TIMER, DEFAULT_DEAD_TIME, DEFAULT_KEEP_ALIVE_TIME, 0);
-        this.readTimeoutHandler = new ReadTimeoutHandler(TIMER, DEFAULT_WAIT_TIME);
-    }
-
-    @Override
-    public ChannelPipeline getPipeline() throws Exception {
-        PcepChannelHandler handler = new PcepChannelHandler(controller);
-
-        ChannelPipeline pipeline = Channels.pipeline();
-        pipeline.addLast("pcepmessagedecoder", new PcepMessageDecoder());
-        pipeline.addLast("pcepmessageencoder", new PcepMessageEncoder());
-        pipeline.addLast("idle", idleHandler);
-        pipeline.addLast("waittimeout", readTimeoutHandler);
-        pipeline.addLast("handler", handler);
-        return pipeline;
-    }
-
-    @Override
-    public void releaseExternalResources() {
-        TIMER.stop();
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/package-info.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/package-info.java
deleted file mode 100644
index 4fd2660..0000000
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Implementation of the PCEP client controller subsystem.
- */
-package org.onosproject.pcep.server.impl;
diff --git a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/DefaultLspLocalLabelInfoTest.java b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/DefaultLspLocalLabelInfoTest.java
deleted file mode 100644
index 4b99e2c..0000000
--- a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/DefaultLspLocalLabelInfoTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-
-import com.google.common.testing.EqualsTester;
-
-import org.junit.Test;
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-import org.onosproject.pcelabelstore.api.LspLocalLabelInfo;
-
-/**
- * Unit tests for DefaultLspLocalLabelInfo class.
- */
-public class DefaultLspLocalLabelInfoTest {
-
-    /**
-     * Checks the operation of equals() methods.
-     */
-    @Test
-    public void testEquals() {
-        // create same two objects.
-        DeviceId deviceId1 = DeviceId.deviceId("foo");
-        LabelResourceId inLabelId1 = LabelResourceId.labelResourceId(1);
-        LabelResourceId outLabelId1 = LabelResourceId.labelResourceId(2);
-        PortNumber inPort1 = PortNumber.portNumber(5122);
-        PortNumber outPort1 = PortNumber.portNumber(5123);
-
-        LspLocalLabelInfo lspLocalLabel1 = DefaultLspLocalLabelInfo.builder()
-                .deviceId(deviceId1)
-                .inLabelId(inLabelId1)
-                .outLabelId(outLabelId1)
-                .inPort(inPort1)
-                .outPort(outPort1)
-                .build();
-
-        // create same object as above object
-        LspLocalLabelInfo sameLocalLabel1 = DefaultLspLocalLabelInfo.builder()
-                .deviceId(deviceId1)
-                .inLabelId(inLabelId1)
-                .outLabelId(outLabelId1)
-                .inPort(inPort1)
-                .outPort(outPort1)
-                .build();
-
-        // Create different object.
-        DeviceId deviceId2 = DeviceId.deviceId("goo");
-        LabelResourceId inLabelId2 = LabelResourceId.labelResourceId(3);
-        LabelResourceId outLabelId2 = LabelResourceId.labelResourceId(4);
-        PortNumber inPort2 = PortNumber.portNumber(5124);
-        PortNumber outPort2 = PortNumber.portNumber(5125);
-
-        LspLocalLabelInfo lspLocalLabel2 = DefaultLspLocalLabelInfo.builder()
-                .deviceId(deviceId2)
-                .inLabelId(inLabelId2)
-                .outLabelId(outLabelId2)
-                .inPort(inPort2)
-                .outPort(outPort2)
-                .build();
-
-        new EqualsTester().addEqualityGroup(lspLocalLabel1, sameLocalLabel1)
-                          .addEqualityGroup(lspLocalLabel2)
-                          .testEquals();
-    }
-
-    /**
-     * Checks the construction of a DefaultLspLocalLabelInfo object.
-     */
-    @Test
-    public void testConstruction() {
-        DeviceId deviceId = DeviceId.deviceId("foo");
-        LabelResourceId inLabelId = LabelResourceId.labelResourceId(1);
-        LabelResourceId outLabelId = LabelResourceId.labelResourceId(2);
-        PortNumber inPort = PortNumber.portNumber(5122);
-        PortNumber outPort = PortNumber.portNumber(5123);
-
-        LspLocalLabelInfo lspLocalLabel = DefaultLspLocalLabelInfo.builder()
-                .deviceId(deviceId)
-                .inLabelId(inLabelId)
-                .outLabelId(outLabelId)
-                .inPort(inPort)
-                .outPort(outPort)
-                .build();
-
-        assertThat(deviceId, is(lspLocalLabel.deviceId()));
-        assertThat(inLabelId, is(lspLocalLabel.inLabelId()));
-        assertThat(outLabelId, is(lspLocalLabel.outLabelId()));
-        assertThat(inPort, is(lspLocalLabel.inPort()));
-        assertThat(outPort, is(lspLocalLabel.outPort()));
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/DistributedPceLabelStoreTest.java b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/DistributedPceLabelStoreTest.java
deleted file mode 100644
index 185ffd1..0000000
--- a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/DistributedPceLabelStoreTest.java
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import org.onosproject.incubator.net.resource.label.DefaultLabelResource;
-import org.onosproject.incubator.net.resource.label.LabelResource;
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.pcelabelstore.api.LspLocalLabelInfo;
-import org.onosproject.pcelabelstore.util.TestStorageService;
-
-/**
- * Unit tests for DistributedPceStore class.
- */
-public class DistributedPceLabelStoreTest {
-
-    private DistributedPceLabelStore distrPceStore;
-    private DeviceId deviceId1 = DeviceId.deviceId("foo");
-    private DeviceId deviceId2 = DeviceId.deviceId("goo");
-    private DeviceId deviceId3 = DeviceId.deviceId("yaa");
-    private DeviceId deviceId4 = DeviceId.deviceId("zoo");
-    private LabelResourceId labelId1 = LabelResourceId.labelResourceId(1);
-    private LabelResourceId labelId2 = LabelResourceId.labelResourceId(2);
-    private LabelResourceId labelId3 = LabelResourceId.labelResourceId(3);
-    private LabelResourceId labelId4 = LabelResourceId.labelResourceId(4);
-    private PortNumber portNumber1 = PortNumber.portNumber(1);
-    private PortNumber portNumber2 = PortNumber.portNumber(2);
-    private PortNumber portNumber3 = PortNumber.portNumber(3);
-    private PortNumber portNumber4 = PortNumber.portNumber(4);
-    private ConnectPoint srcConnectionPoint1 = new ConnectPoint(deviceId1, portNumber1);
-    private ConnectPoint dstConnectionPoint2 = new ConnectPoint(deviceId2, portNumber2);
-    private ConnectPoint srcConnectionPoint3 = new ConnectPoint(deviceId3, portNumber3);
-    private ConnectPoint dstConnectionPoint4 = new ConnectPoint(deviceId4, portNumber4);
-    private LabelResource labelResource1 = new DefaultLabelResource(deviceId1, labelId1);
-    private LabelResource labelResource2 = new DefaultLabelResource(deviceId2, labelId2);
-    private LabelResource labelResource3 = new DefaultLabelResource(deviceId3, labelId3);
-    private LabelResource labelResource4 = new DefaultLabelResource(deviceId4, labelId4);
-    private Link link1;
-    private Link link2;
-    private List<LabelResource> labelList1 = new LinkedList<>();
-    private List<LabelResource> labelList2 = new LinkedList<>();
-    private TunnelId tunnelId1 = TunnelId.valueOf("1");
-    private TunnelId tunnelId2 = TunnelId.valueOf("2");
-    private TunnelId tunnelId3 = TunnelId.valueOf("3");
-    private TunnelId tunnelId4 = TunnelId.valueOf("4");
-
-    List<LspLocalLabelInfo> lspLocalLabelInfoList1 = new LinkedList<>();
-    List<LspLocalLabelInfo> lspLocalLabelInfoList2 = new LinkedList<>();
-
-    @BeforeClass
-    public static void setUpBeforeClass() throws Exception {
-    }
-
-    @AfterClass
-    public static void tearDownAfterClass() throws Exception {
-    }
-
-    @Before
-    public void setUp() throws Exception {
-       distrPceStore = new DistributedPceLabelStore();
-       // initialization
-       distrPceStore.storageService = new TestStorageService();
-       distrPceStore.activate();
-
-       // Initialization of member variables
-       link1 = DefaultLink.builder()
-                          .providerId(new ProviderId("eth", "1"))
-                          .annotations(DefaultAnnotations.builder().set("key1", "yahoo").build())
-                          .src(srcConnectionPoint1)
-                          .dst(dstConnectionPoint2)
-                          .type(Link.Type.DIRECT)
-                          .state(Link.State.ACTIVE)
-                          .build();
-       link2 = DefaultLink.builder()
-                          .providerId(new ProviderId("mac", "2"))
-                          .annotations(DefaultAnnotations.builder().set("key2", "google").build())
-                          .src(srcConnectionPoint3)
-                          .dst(dstConnectionPoint4)
-                          .type(Link.Type.DIRECT)
-                          .state(Link.State.ACTIVE)
-                          .build();
-       labelList1.add(labelResource1);
-       labelList1.add(labelResource2);
-       labelList2.add(labelResource3);
-       labelList2.add(labelResource4);
-
-       // Create pceccTunnelInfo1
-       DeviceId deviceId1 = DeviceId.deviceId("foo");
-       LabelResourceId inLabelId1 = LabelResourceId.labelResourceId(1);
-       LabelResourceId outLabelId1 = LabelResourceId.labelResourceId(2);
-
-       LspLocalLabelInfo lspLocalLabel1 = DefaultLspLocalLabelInfo.builder()
-               .deviceId(deviceId1)
-               .inLabelId(inLabelId1)
-               .outLabelId(outLabelId1)
-               .build();
-       lspLocalLabelInfoList1.add(lspLocalLabel1);
-       distrPceStore.addTunnelInfo(tunnelId1, lspLocalLabelInfoList1);
-
-       // Create pceccTunnelInfo2
-       DeviceId deviceId2 = DeviceId.deviceId("foo");
-       LabelResourceId inLabelId2 = LabelResourceId.labelResourceId(3);
-       LabelResourceId outLabelId2 = LabelResourceId.labelResourceId(4);
-
-       LspLocalLabelInfo lspLocalLabel2 = DefaultLspLocalLabelInfo.builder()
-               .deviceId(deviceId2)
-               .inLabelId(inLabelId2)
-               .outLabelId(outLabelId2)
-               .build();
-       lspLocalLabelInfoList2.add(lspLocalLabel2);
-       distrPceStore.addTunnelInfo(tunnelId2, lspLocalLabelInfoList2);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-    }
-
-    /**
-     * Checks the operation of addGlobalNodeLabel() method.
-     */
-    @Test
-    public void testAddGlobalNodeLabel() {
-        // add device with label
-        distrPceStore.addGlobalNodeLabel(deviceId1, labelId1);
-        assertThat(distrPceStore.existsGlobalNodeLabel(deviceId1), is(true));
-        assertThat(distrPceStore.getGlobalNodeLabel(deviceId1), is(labelId1));
-        distrPceStore.addGlobalNodeLabel(deviceId2, labelId2);
-        assertThat(distrPceStore.existsGlobalNodeLabel(deviceId2), is(true));
-        assertThat(distrPceStore.getGlobalNodeLabel(deviceId2), is(labelId2));
-    }
-
-    /**
-     * Checks the operation of addAdjLabel() method.
-     */
-    @Test
-    public void testAddAdjLabel() {
-        // link with list of labels
-        distrPceStore.addAdjLabel(link1, labelId1);
-        assertThat(distrPceStore.existsAdjLabel(link1), is(true));
-        assertThat(distrPceStore.getAdjLabel(link1), is(labelId1));
-        distrPceStore.addAdjLabel(link2, labelId2);
-        assertThat(distrPceStore.existsAdjLabel(link2), is(true));
-        assertThat(distrPceStore.getAdjLabel(link2), is(labelId2));
-    }
-
-    /**
-     * Checks the operation of addTunnelInfo() method.
-     */
-    @Test
-    public void testAddTunnelInfo() {
-        // TunnelId with device label store information
-        distrPceStore.addTunnelInfo(tunnelId1, lspLocalLabelInfoList1);
-        assertThat(distrPceStore.existsTunnelInfo(tunnelId1), is(true));
-        assertThat(distrPceStore.getTunnelInfo(tunnelId1), is(lspLocalLabelInfoList1));
-        distrPceStore.addTunnelInfo(tunnelId2, lspLocalLabelInfoList2);
-        assertThat(distrPceStore.existsTunnelInfo(tunnelId2), is(true));
-        assertThat(distrPceStore.getTunnelInfo(tunnelId2), is(lspLocalLabelInfoList2));
-    }
-
-    /**
-     * Checks the operation of existsGlobalNodeLabel() method.
-     */
-    @Test
-    public void testExistsGlobalNodeLabel() {
-        testAddGlobalNodeLabel();
-
-        assertThat(distrPceStore.existsGlobalNodeLabel(deviceId1), is(true));
-        assertThat(distrPceStore.existsGlobalNodeLabel(deviceId2), is(true));
-        assertThat(distrPceStore.existsGlobalNodeLabel(deviceId3), is(false));
-        assertThat(distrPceStore.existsGlobalNodeLabel(deviceId4), is(false));
-    }
-
-    /**
-     * Checks the operation of existsAdjLabel() method.
-     */
-    @Test
-    public void testExistsAdjLabel() {
-        testAddAdjLabel();
-
-        assertThat(distrPceStore.existsAdjLabel(link1), is(true));
-        assertThat(distrPceStore.existsAdjLabel(link2), is(true));
-    }
-
-    /**
-     * Checks the operation of existsTunnelInfo() method.
-     */
-    @Test
-    public void testExistsTunnelInfo() {
-        testAddTunnelInfo();
-
-        assertThat(distrPceStore.existsTunnelInfo(tunnelId1), is(true));
-        assertThat(distrPceStore.existsTunnelInfo(tunnelId2), is(true));
-        assertThat(distrPceStore.existsTunnelInfo(tunnelId3), is(false));
-        assertThat(distrPceStore.existsTunnelInfo(tunnelId4), is(false));
-    }
-
-    /**
-     * Checks the operation of getGlobalNodeLabelCount() method.
-     */
-    @Test
-    public void testGetGlobalNodeLabelCount() {
-        testAddGlobalNodeLabel();
-
-        assertThat(distrPceStore.getGlobalNodeLabelCount(), is(2));
-    }
-
-    /**
-     * Checks the operation of getAdjLabelCount() method.
-     */
-    @Test
-    public void testGetAdjLabelCount() {
-        testAddAdjLabel();
-
-        assertThat(distrPceStore.getAdjLabelCount(), is(2));
-    }
-
-    /**
-     * Checks the operation of getTunnelInfoCount() method.
-     */
-    @Test
-    public void testGetTunnelInfoCount() {
-        testAddTunnelInfo();
-
-        assertThat(distrPceStore.getTunnelInfoCount(), is(2));
-    }
-
-    /**
-     * Checks the operation of getGlobalNodeLabels() method.
-     */
-    @Test
-    public void testGetGlobalNodeLabels() {
-        testAddGlobalNodeLabel();
-
-        Map<DeviceId, LabelResourceId> nodeLabelMap = distrPceStore.getGlobalNodeLabels();
-        assertThat(nodeLabelMap, is(notNullValue()));
-        assertThat(nodeLabelMap.isEmpty(), is(false));
-        assertThat(nodeLabelMap.size(), is(2));
-    }
-
-    /**
-     * Checks the operation of getAdjLabels() method.
-     */
-    @Test
-    public void testGetAdjLabels() {
-        testAddAdjLabel();
-
-        Map<Link, LabelResourceId> adjLabelMap = distrPceStore.getAdjLabels();
-        assertThat(adjLabelMap, is(notNullValue()));
-        assertThat(adjLabelMap.isEmpty(), is(false));
-        assertThat(adjLabelMap.size(), is(2));
-    }
-
-    /**
-     * Checks the operation of getTunnelInfos() method.
-     */
-    @Test
-    public void testGetTunnelInfos() {
-        testAddTunnelInfo();
-
-        Map<TunnelId, List<LspLocalLabelInfo>> tunnelInfoMap = distrPceStore.getTunnelInfos();
-        assertThat(tunnelInfoMap, is(notNullValue()));
-        assertThat(tunnelInfoMap.isEmpty(), is(false));
-        assertThat(tunnelInfoMap.size(), is(2));
-    }
-
-    /**
-     * Checks the operation of getGlobalNodeLabel() method.
-     */
-    @Test
-    public void testGetGlobalNodeLabel() {
-        testAddGlobalNodeLabel();
-
-        // deviceId1 with labelId1
-        assertThat(deviceId1, is(notNullValue()));
-        assertThat(distrPceStore.getGlobalNodeLabel(deviceId1), is(labelId1));
-
-        // deviceId2 with labelId2
-        assertThat(deviceId2, is(notNullValue()));
-        assertThat(distrPceStore.getGlobalNodeLabel(deviceId2), is(labelId2));
-    }
-
-    /**
-     * Checks the operation of getAdjLabel() method.
-     */
-    @Test
-    public void testGetAdjLabel() {
-        testAddAdjLabel();
-
-        // link1 with labels
-        assertThat(link1, is(notNullValue()));
-        assertThat(distrPceStore.getAdjLabel(link1), is(labelId1));
-
-        // link2 with labels
-        assertThat(link2, is(notNullValue()));
-        assertThat(distrPceStore.getAdjLabel(link2), is(labelId2));
-    }
-
-    /**
-     * Checks the operation of getTunnelInfo() method.
-     */
-    @Test
-    public void testGetTunnelInfo() {
-        testAddTunnelInfo();
-
-        // tunnelId1 with device label store info
-        assertThat(tunnelId1, is(notNullValue()));
-        assertThat(distrPceStore.getTunnelInfo(tunnelId1), is(lspLocalLabelInfoList1));
-
-        // tunnelId2 with device label store info
-        assertThat(tunnelId2, is(notNullValue()));
-        assertThat(distrPceStore.getTunnelInfo(tunnelId2), is(lspLocalLabelInfoList2));
-    }
-
-    /**
-     * Checks the operation of removeGlobalNodeLabel() method.
-     */
-    @Test
-    public void testRemoveGlobalNodeLabel() {
-        testAddGlobalNodeLabel();
-
-        assertThat(distrPceStore.removeGlobalNodeLabel(deviceId1), is(true));
-        assertThat(distrPceStore.removeGlobalNodeLabel(deviceId2), is(true));
-    }
-
-    /**
-     * Checks the operation of removeAdjLabel() method.
-     */
-    @Test
-    public void testRemoveAdjLabel() {
-        testAddAdjLabel();
-
-        assertThat(distrPceStore.removeAdjLabel(link1), is(true));
-        assertThat(distrPceStore.removeAdjLabel(link2), is(true));
-    }
-
-    /**
-     * Checks the operation of removeTunnelInfo() method.
-     */
-    @Test
-    public void testRemoveTunnelInfo() {
-        testAddTunnelInfo();
-
-        assertThat(distrPceStore.removeTunnelInfo(tunnelId1), is(true));
-        assertThat(distrPceStore.removeTunnelInfo(tunnelId2), is(true));
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/api/PceLabelStoreAdapter.java b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/api/PceLabelStoreAdapter.java
deleted file mode 100644
index 598fb78..0000000
--- a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/api/PceLabelStoreAdapter.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Copyright 2018-present Open Networking Foundation
- *
- * 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.pcelabelstore.api;
-
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.stream.Collectors;
-
-/**
- * Provides test implementation of PceStore.
- */
-public class PceLabelStoreAdapter implements PceLabelStore {
-
-    // Mapping device with global node label
-    private ConcurrentMap<DeviceId, LabelResourceId> globalNodeLabelMap = new ConcurrentHashMap<>();
-
-    // Mapping link with adjacency label
-    private ConcurrentMap<Link, LabelResourceId> adjLabelMap = new ConcurrentHashMap<>();
-
-    // Mapping tunnel with device local info with tunnel consumer id
-    private ConcurrentMap<TunnelId, List<LspLocalLabelInfo>> tunnelInfoMap = new ConcurrentHashMap<>();
-
-
-    // Locally maintain LSRID to device id mapping for better performance.
-    private Map<String, DeviceId> lsrIdDeviceIdMap = new HashMap<>();
-
-    @Override
-    public boolean existsGlobalNodeLabel(DeviceId id) {
-        return globalNodeLabelMap.containsKey(id);
-    }
-
-    @Override
-    public boolean existsAdjLabel(Link link) {
-        return adjLabelMap.containsKey(link);
-    }
-
-    @Override
-    public boolean existsTunnelInfo(TunnelId tunnelId) {
-        return tunnelInfoMap.containsKey(tunnelId);
-    }
-
-    @Override
-    public int getGlobalNodeLabelCount() {
-        return globalNodeLabelMap.size();
-    }
-
-    @Override
-    public int getAdjLabelCount() {
-        return adjLabelMap.size();
-    }
-
-    @Override
-    public int getTunnelInfoCount() {
-        return tunnelInfoMap.size();
-    }
-
-    @Override
-    public boolean removeTunnelInfo(TunnelId tunnelId) {
-        tunnelInfoMap.remove(tunnelId);
-        if (tunnelInfoMap.containsKey(tunnelId)) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public Map<DeviceId, LabelResourceId> getGlobalNodeLabels() {
-        return globalNodeLabelMap.entrySet().stream()
-                .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue()));
-    }
-
-    @Override
-    public Map<Link, LabelResourceId> getAdjLabels() {
-        return adjLabelMap.entrySet().stream()
-                .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue()));
-    }
-
-    @Override
-    public LabelResourceId getGlobalNodeLabel(DeviceId id) {
-        return globalNodeLabelMap.get(id);
-    }
-
-    @Override
-    public LabelResourceId getAdjLabel(Link link) {
-        return adjLabelMap.get(link);
-    }
-
-    @Override
-    public List<LspLocalLabelInfo> getTunnelInfo(TunnelId tunnelId) {
-        return tunnelInfoMap.get(tunnelId);
-    }
-
-    @Override
-    public void addGlobalNodeLabel(DeviceId deviceId, LabelResourceId labelId) {
-        globalNodeLabelMap.put(deviceId, labelId);
-    }
-
-    @Override
-    public void addAdjLabel(Link link, LabelResourceId labelId) {
-        adjLabelMap.put(link, labelId);
-    }
-
-    @Override
-    public void addTunnelInfo(TunnelId tunnelId, List<LspLocalLabelInfo> lspLocalLabelInfoList) {
-        tunnelInfoMap.put(tunnelId, lspLocalLabelInfoList);
-    }
-
-    @Override
-    public boolean removeGlobalNodeLabel(DeviceId id) {
-        globalNodeLabelMap.remove(id);
-        if (globalNodeLabelMap.containsKey(id)) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean removeAdjLabel(Link link) {
-        adjLabelMap.remove(link);
-        if (adjLabelMap.containsKey(link)) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean addLsrIdDevice(String lsrId, DeviceId deviceId) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
-    public boolean removeLsrIdDevice(String lsrId) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
-    public DeviceId getLsrIdDevice(String lsrId) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public boolean addPccLsr(DeviceId lsrId) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
-    public boolean removePccLsr(DeviceId lsrId) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
-    public boolean hasPccLsr(DeviceId lsrId) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
-    public Map<TunnelId, List<LspLocalLabelInfo>> getTunnelInfos() {
-        return tunnelInfoMap.entrySet().stream()
-                .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue()));
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/label/BasicPceccHandlerTest.java b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/label/BasicPceccHandlerTest.java
deleted file mode 100644
index 856c1fd..0000000
--- a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/label/BasicPceccHandlerTest.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore.label;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.graph.ScalarWeight;
-import org.onlab.packet.IpAddress;
-import org.onosproject.core.GroupId;
-import org.onosproject.incubator.net.resource.label.LabelResourceAdapter;
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.incubator.net.resource.label.LabelResourceService;
-import org.onosproject.incubator.net.tunnel.DefaultTunnel;
-import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelName;
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.net.Annotations;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultDevice;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.DefaultPath;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.Path;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.pcelabelstore.api.LspLocalLabelInfo;
-import org.onosproject.pcelabelstore.api.PceLabelStore;
-import org.onosproject.pcelabelstore.api.PceLabelStoreAdapter;
-import org.onosproject.pcelabelstore.util.MockDeviceService;
-import org.onosproject.pcep.server.impl.BasicPceccHandler;
-import org.onosproject.pcep.server.impl.PcepClientControllerImpl;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.hamcrest.Matchers.nullValue;
-import static org.onosproject.net.Link.Type.DIRECT;
-
-/**
- * Unit tests for BasicPceccHandler class.
- */
-public class BasicPceccHandlerTest {
-
-    public static final long LOCAL_LABEL_SPACE_MIN = 5122;
-    public static final long LOCAL_LABEL_SPACE_MAX = 9217;
-    private static final String L3 = "L3";
-    private static final String LSRID = "lsrId";
-
-    private BasicPceccHandler pceccHandler;
-    protected LabelResourceService labelRsrcService;
-    protected MockDeviceService deviceService;
-    protected PceLabelStore pceStore;
-    private TunnelEndPoint src = IpTunnelEndPoint.ipTunnelPoint(IpAddress.valueOf(23423));
-    private TunnelEndPoint dst = IpTunnelEndPoint.ipTunnelPoint(IpAddress.valueOf(32421));
-    private GroupId groupId = new GroupId(92034);
-    private TunnelName tunnelName = TunnelName.tunnelName("TunnelName");
-    private TunnelId tunnelId = TunnelId.valueOf("41654654");
-    private ProviderId producerName = new ProviderId("producer1", "13");
-    private Path path;
-    private Tunnel tunnel;
-    List<LspLocalLabelInfo> lspLocalLabelInfoList;
-    private Device deviceD1, deviceD2, deviceD3, deviceD4, deviceD5;
-    private DeviceId deviceId1;
-    private DeviceId deviceId2;
-    private DeviceId deviceId3;
-    private DeviceId deviceId4;
-    private DeviceId deviceId5;
-    private PortNumber port1;
-    private PortNumber port2;
-    private PortNumber port3;
-    private PortNumber port4;
-    private PortNumber port5;
-
-    @Before
-    public void setUp() throws Exception {
-       pceccHandler = BasicPceccHandler.getInstance();
-       labelRsrcService = new LabelResourceAdapter();
-       pceStore = new PceLabelStoreAdapter();
-       deviceService = new MockDeviceService();
-       pceccHandler.initialize(labelRsrcService,
-                              deviceService,
-                              pceStore,
-                              new PcepClientControllerImpl());
-
-       // Create tunnel test
-       // Link
-       ProviderId providerId = new ProviderId("of", "foo");
-       deviceId1 = DeviceId.deviceId("of:A");
-       deviceId2 = DeviceId.deviceId("of:B");
-       deviceId3 = DeviceId.deviceId("of:C");
-       deviceId4 = DeviceId.deviceId("of:D");
-       deviceId5 = DeviceId.deviceId("of:E");
-       port1 = PortNumber.portNumber(1);
-       port2 = PortNumber.portNumber(2);
-       port3 = PortNumber.portNumber(3);
-       port4 = PortNumber.portNumber(4);
-       port5 = PortNumber.portNumber(5);
-       List<Link> linkList = new LinkedList<>();
-
-       // Making L3 devices
-       DefaultAnnotations.Builder builderDev1 = DefaultAnnotations.builder();
-       builderDev1.set(AnnotationKeys.TYPE, L3);
-       builderDev1.set(LSRID, "1.1.1.1");
-       deviceD1 = new MockDevice(deviceId1, builderDev1.build());
-       deviceService.addDevice(deviceD1);
-
-       // Making L3 devices
-       DefaultAnnotations.Builder builderDev2 = DefaultAnnotations.builder();
-       builderDev2.set(AnnotationKeys.TYPE, L3);
-       builderDev2.set(LSRID, "2.2.2.2");
-       deviceD2 = new MockDevice(deviceId2, builderDev2.build());
-       deviceService.addDevice(deviceD2);
-
-       // Making L3 devices
-       DefaultAnnotations.Builder builderDev3 = DefaultAnnotations.builder();
-       builderDev3.set(AnnotationKeys.TYPE, L3);
-       builderDev3.set(LSRID, "3.3.3.3");
-       deviceD3 = new MockDevice(deviceId3, builderDev3.build());
-       deviceService.addDevice(deviceD3);
-
-       // Making L3 devices
-       DefaultAnnotations.Builder builderDev4 = DefaultAnnotations.builder();
-       builderDev4.set(AnnotationKeys.TYPE, L3);
-       builderDev4.set(LSRID, "4.4.4.4");
-       deviceD4 = new MockDevice(deviceId4, builderDev4.build());
-       deviceService.addDevice(deviceD4);
-
-       // Making L3 devices
-       DefaultAnnotations.Builder builderDev5 = DefaultAnnotations.builder();
-       builderDev5.set(AnnotationKeys.TYPE, L3);
-       builderDev5.set(LSRID, "5.5.5.5");
-       deviceD5 = new MockDevice(deviceId5, builderDev5.build());
-       deviceService.addDevice(deviceD5);
-
-       Link l1 = DefaultLink.builder()
-                            .providerId(providerId)
-                            .annotations(DefaultAnnotations.builder().set("key1", "yahoo").build())
-                            .src(new ConnectPoint(deviceId1, port1))
-                            .dst(new ConnectPoint(deviceId2, port2))
-                            .type(DIRECT)
-                            .state(Link.State.ACTIVE)
-                            .build();
-       linkList.add(l1);
-       Link l2 = DefaultLink.builder()
-                            .providerId(providerId)
-                            .annotations(DefaultAnnotations.builder().set("key2", "yahoo").build())
-                            .src(new ConnectPoint(deviceId2, port2))
-                            .dst(new ConnectPoint(deviceId3, port3))
-                            .type(DIRECT)
-                            .state(Link.State.ACTIVE)
-                            .build();
-       linkList.add(l2);
-       Link l3 = DefaultLink.builder()
-                            .providerId(providerId)
-                            .annotations(DefaultAnnotations.builder().set("key3", "yahoo").build())
-                            .src(new ConnectPoint(deviceId3, port3))
-                            .dst(new ConnectPoint(deviceId4, port4))
-                            .type(DIRECT)
-                            .state(Link.State.ACTIVE)
-                            .build();
-       linkList.add(l3);
-       Link l4 = DefaultLink.builder()
-                            .providerId(providerId)
-                            .annotations(DefaultAnnotations.builder().set("key4", "yahoo").build())
-                            .src(new ConnectPoint(deviceId4, port4))
-                            .dst(new ConnectPoint(deviceId5, port5))
-                            .type(DIRECT)
-                            .state(Link.State.ACTIVE)
-                            .build();
-       linkList.add(l4);
-
-       // Path
-       path = new DefaultPath(providerId, linkList, ScalarWeight.toWeight(10));
-
-       // Tunnel
-       tunnel = new DefaultTunnel(producerName, src, dst, Tunnel.Type.VXLAN,
-                                  Tunnel.State.ACTIVE, groupId, tunnelId,
-                                  tunnelName, path);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-    }
-
-    /**
-     * Checks the operation of getInstance() method.
-     */
-    @Test
-    public void testGetInstance() {
-        assertThat(pceccHandler, is(notNullValue()));
-    }
-
-    /**
-     * Checks the operation of allocateLabel() method.
-     */
-    @Test
-    public void testAllocateLabel() {
-       Iterator<LspLocalLabelInfo> iterator;
-       LspLocalLabelInfo lspLocalLabelInfo;
-       DeviceId deviceId;
-       LabelResourceId inLabelId;
-       LabelResourceId outLabelId;
-       PortNumber inPort;
-       PortNumber outPort;
-
-       // check allocation result
-       assertThat(pceccHandler.allocateLabel(tunnel), is(true));
-
-       // Check list of devices with IN and OUT labels whether stored properly in store
-       lspLocalLabelInfoList = pceStore.getTunnelInfo(tunnel.tunnelId());
-       iterator = lspLocalLabelInfoList.iterator();
-
-       // Retrieve values and check device5
-       lspLocalLabelInfo = iterator.next();
-       deviceId = lspLocalLabelInfo.deviceId();
-       inLabelId = lspLocalLabelInfo.inLabelId();
-       outLabelId = lspLocalLabelInfo.outLabelId();
-       inPort = lspLocalLabelInfo.inPort();
-       outPort = lspLocalLabelInfo.outPort();
-
-       assertThat(deviceId, is(deviceId5));
-       assertThat(inLabelId, is(notNullValue()));
-       assertThat(outLabelId, is(nullValue()));
-       assertThat(inPort, is(port5));
-       assertThat(outPort, is(nullValue()));
-
-       // Next element check
-       // Retrieve values and check device4
-       lspLocalLabelInfo = iterator.next();
-       deviceId = lspLocalLabelInfo.deviceId();
-       inLabelId = lspLocalLabelInfo.inLabelId();
-       outLabelId = lspLocalLabelInfo.outLabelId();
-       inPort = lspLocalLabelInfo.inPort();
-       outPort = lspLocalLabelInfo.outPort();
-
-       assertThat(deviceId, is(deviceId4));
-       assertThat(inLabelId, is(notNullValue()));
-       assertThat(outLabelId, is(notNullValue()));
-       assertThat(inPort, is(port4));
-       assertThat(outPort, is(port5));
-
-       // Next element check
-       // Retrieve values and check device3
-       lspLocalLabelInfo = iterator.next();
-       deviceId = lspLocalLabelInfo.deviceId();
-       inLabelId = lspLocalLabelInfo.inLabelId();
-       outLabelId = lspLocalLabelInfo.outLabelId();
-       inPort = lspLocalLabelInfo.inPort();
-       outPort = lspLocalLabelInfo.outPort();
-
-       assertThat(deviceId, is(deviceId3));
-       assertThat(inLabelId, is(notNullValue()));
-       assertThat(outLabelId, is(notNullValue()));
-       assertThat(inPort, is(port3));
-       assertThat(outPort, is(port4));
-
-       // Next element check
-       // Retrieve values and check device2
-       lspLocalLabelInfo = iterator.next();
-       deviceId = lspLocalLabelInfo.deviceId();
-       inLabelId = lspLocalLabelInfo.inLabelId();
-       outLabelId = lspLocalLabelInfo.outLabelId();
-       inPort = lspLocalLabelInfo.inPort();
-       outPort = lspLocalLabelInfo.outPort();
-
-       assertThat(deviceId, is(deviceId2));
-       assertThat(inLabelId, is(notNullValue()));
-       assertThat(outLabelId, is(notNullValue()));
-       assertThat(inPort, is(port2));
-       assertThat(outPort, is(port3));
-
-       // Next element check
-       // Retrieve values and check device1
-       lspLocalLabelInfo = iterator.next();
-       deviceId = lspLocalLabelInfo.deviceId();
-       inLabelId = lspLocalLabelInfo.inLabelId();
-       outLabelId = lspLocalLabelInfo.outLabelId();
-       inPort = lspLocalLabelInfo.inPort();
-       outPort = lspLocalLabelInfo.outPort();
-
-       assertThat(deviceId, is(deviceId1));
-       assertThat(inLabelId, is(nullValue()));
-       assertThat(outLabelId, is(notNullValue()));
-       assertThat(inPort, is(nullValue()));
-       assertThat(outPort, is(port2));
-    }
-
-    /**
-     * Checks the operation of releaseLabel() method.
-     */
-    @Test
-    public void testReleaseLabel() {
-       // Release tunnels
-       assertThat(pceccHandler.allocateLabel(tunnel), is(true));
-       pceccHandler.releaseLabel(tunnel);
-
-       // Retrieve from store. Store should not contain this tunnel info.
-       lspLocalLabelInfoList = pceStore.getTunnelInfo(tunnel.tunnelId());
-       assertThat(lspLocalLabelInfoList, is(nullValue()));
-    }
-
-    private class MockDevice extends DefaultDevice {
-        MockDevice(DeviceId id, Annotations annotations) {
-            super(null, id, null, null, null, null, null, null, annotations);
-        }
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/label/PceccSrTeBeHandlerTest.java b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/label/PceccSrTeBeHandlerTest.java
deleted file mode 100644
index cf832c4..0000000
--- a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/label/PceccSrTeBeHandlerTest.java
+++ /dev/null
@@ -1,492 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore.label;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.graph.ScalarWeight;
-import org.onlab.packet.IpAddress;
-import org.onosproject.incubator.net.resource.label.LabelResourceAdapter;
-import org.onosproject.incubator.net.resource.label.LabelResourceAdminService;
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.incubator.net.resource.label.LabelResourceService;
-import org.onosproject.incubator.net.tunnel.LabelStack;
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.net.Annotations;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultDevice;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.DefaultPath;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.Path;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.pcelabelstore.api.PceLabelStore;
-import org.onosproject.pcelabelstore.api.PceLabelStoreAdapter;
-import org.onosproject.pcelabelstore.util.MockDeviceService;
-import org.onosproject.pcelabelstore.util.MockNetConfigRegistryAdapter;
-import org.onosproject.pcelabelstore.util.MockPcepClientController;
-import org.onosproject.pcep.server.PcepClientAdapter;
-import org.onosproject.pcep.api.DeviceCapability;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.impl.PceccSrTeBeHandler;
-import org.onosproject.pcepio.protocol.PcepVersion;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.hamcrest.Matchers.nullValue;
-import static org.onosproject.net.Link.Type.DIRECT;
-
-/**
- * Unit tests for PceccSrTeBeHandler class.
- */
-public class PceccSrTeBeHandlerTest {
-
-    public static final long GLOBAL_LABEL_SPACE_MIN = 4097;
-    public static final long GLOBAL_LABEL_SPACE_MAX = 5121;
-    private static final String L3 = "L3";
-    private static final String LSRID = "lsrId";
-
-    private PceccSrTeBeHandler srTeHandler;
-    private LabelResourceAdminService labelRsrcAdminService;
-    private LabelResourceService labelRsrcService;
-    private PceLabelStore pceStore;
-    private MockDeviceService deviceService;
-    private MockNetConfigRegistryAdapter netCfgService = new MockNetConfigRegistryAdapter();
-    private MockPcepClientController clientController = new MockPcepClientController();
-    private ProviderId providerId;
-    private DeviceId deviceId1, deviceId2, deviceId3, deviceId4, deviceId5;
-    private Device deviceD1;
-    private Device deviceD2;
-    private Device deviceD3;
-    private Device deviceD4;
-    private Device deviceD5;
-    private PortNumber port1;
-    private PortNumber port2;
-    private PortNumber port3;
-    private PortNumber port4;
-    private PortNumber port5;
-    private Link link1;
-    private Link link2;
-    private Link link3;
-    private Link link4;
-    private Path path1;
-    LabelResourceId labelId;
-
-    @Before
-    public void setUp() throws Exception {
-        // Initialization of member variables
-        srTeHandler = PceccSrTeBeHandler.getInstance();
-        labelRsrcService = new LabelResourceAdapter();
-        labelRsrcAdminService = new LabelResourceAdapter();
-        pceStore = new PceLabelStoreAdapter();
-        deviceService = new MockDeviceService();
-
-        srTeHandler.initialize(labelRsrcAdminService,
-                               labelRsrcService,
-                               clientController,
-                               pceStore,
-                               deviceService);
-
-        // Creates path
-        // Creates list of links
-        providerId = new ProviderId("of", "foo");
-
-        PccId pccId1 = PccId.pccId(IpAddress.valueOf("11.1.1.1"));
-        PccId pccId2 = PccId.pccId(IpAddress.valueOf("12.1.1.1"));
-        PccId pccId3 = PccId.pccId(IpAddress.valueOf("13.1.1.1"));
-        PccId pccId4 = PccId.pccId(IpAddress.valueOf("14.1.1.1"));
-        PccId pccId5 = PccId.pccId(IpAddress.valueOf("15.1.1.1"));
-
-        PcepClientAdapter pc1 = new PcepClientAdapter();
-        pc1.init(pccId1, PcepVersion.PCEP_1);
-
-        PcepClientAdapter pc2 = new PcepClientAdapter();
-        pc2.init(pccId2, PcepVersion.PCEP_1);
-
-        PcepClientAdapter pc3 = new PcepClientAdapter();
-        pc3.init(pccId3, PcepVersion.PCEP_1);
-
-        PcepClientAdapter pc4 = new PcepClientAdapter();
-        pc4.init(pccId4, PcepVersion.PCEP_1);
-
-        PcepClientAdapter pc5 = new PcepClientAdapter();
-        pc5.init(pccId5, PcepVersion.PCEP_1);
-
-        clientController.addClient(pccId1, pc1);
-        clientController.addClient(pccId2, pc2);
-        clientController.addClient(pccId3, pc3);
-        clientController.addClient(pccId4, pc4);
-        clientController.addClient(pccId5, pc5);
-
-        deviceId1 = DeviceId.deviceId("11.1.1.1");
-        deviceId2 = DeviceId.deviceId("12.1.1.1");
-        deviceId3 = DeviceId.deviceId("13.1.1.1");
-        deviceId4 = DeviceId.deviceId("14.1.1.1");
-        deviceId5 = DeviceId.deviceId("15.1.1.1");
-
-        // Devices
-        DefaultAnnotations.Builder builderDev1 = DefaultAnnotations.builder();
-        DefaultAnnotations.Builder builderDev2 = DefaultAnnotations.builder();
-        DefaultAnnotations.Builder builderDev3 = DefaultAnnotations.builder();
-        DefaultAnnotations.Builder builderDev4 = DefaultAnnotations.builder();
-        DefaultAnnotations.Builder builderDev5 = DefaultAnnotations.builder();
-
-        builderDev1.set(AnnotationKeys.TYPE, L3);
-        builderDev1.set(LSRID, "11.1.1.1");
-
-        builderDev2.set(AnnotationKeys.TYPE, L3);
-        builderDev2.set(LSRID, "12.1.1.1");
-
-        builderDev3.set(AnnotationKeys.TYPE, L3);
-        builderDev3.set(LSRID, "13.1.1.1");
-
-        builderDev4.set(AnnotationKeys.TYPE, L3);
-        builderDev4.set(LSRID, "14.1.1.1");
-
-        builderDev5.set(AnnotationKeys.TYPE, L3);
-        builderDev5.set(LSRID, "15.1.1.1");
-
-        deviceD1 = new MockDevice(deviceId1, builderDev1.build());
-        deviceD2 = new MockDevice(deviceId2, builderDev2.build());
-        deviceD3 = new MockDevice(deviceId3, builderDev3.build());
-        deviceD4 = new MockDevice(deviceId4, builderDev4.build());
-        deviceD5 = new MockDevice(deviceId5, builderDev5.build());
-
-        deviceService.addDevice(deviceD1);
-        deviceService.addDevice(deviceD2);
-        deviceService.addDevice(deviceD3);
-        deviceService.addDevice(deviceD4);
-        deviceService.addDevice(deviceD5);
-
-        DeviceCapability device1Cap = netCfgService.addConfig(deviceId1, DeviceCapability.class);
-        device1Cap.setLabelStackCap(true).setLocalLabelCap(false).setSrCap(true).apply();
-
-        DeviceCapability device2Cap = netCfgService.addConfig(deviceId2, DeviceCapability.class);
-        device2Cap.setLabelStackCap(true).setLocalLabelCap(false).setSrCap(true).apply();
-
-        DeviceCapability device3Cap = netCfgService.addConfig(deviceId3, DeviceCapability.class);
-        device3Cap.setLabelStackCap(true).setLocalLabelCap(false).setSrCap(true).apply();
-
-        DeviceCapability device4Cap = netCfgService.addConfig(deviceId4, DeviceCapability.class);
-        device4Cap.setLabelStackCap(true).setLocalLabelCap(false).setSrCap(true).apply();
-
-        DeviceCapability device5Cap = netCfgService.addConfig(deviceId5, DeviceCapability.class);
-        device5Cap.setLabelStackCap(true).setLocalLabelCap(false).setSrCap(true).apply();
-
-        // Port Numbers
-        port1 = PortNumber.portNumber(1);
-        port2 = PortNumber.portNumber(2);
-        port3 = PortNumber.portNumber(3);
-        port4 = PortNumber.portNumber(4);
-        port5 = PortNumber.portNumber(5);
-        List<Link> linkList = new LinkedList<>();
-
-        link1 = DefaultLink.builder().providerId(providerId)
-                .annotations(DefaultAnnotations.builder().set("key1", "yahoo").build())
-                .src(new ConnectPoint(deviceD1.id(), port1)).dst(new ConnectPoint(deviceD2.id(), port2)).type(DIRECT)
-                .state(Link.State.ACTIVE).build();
-        linkList.add(link1);
-        link2 = DefaultLink.builder().providerId(providerId)
-                .annotations(DefaultAnnotations.builder().set("key2", "yahoo").build())
-                .src(new ConnectPoint(deviceD2.id(), port2)).dst(new ConnectPoint(deviceD3.id(), port3)).type(DIRECT)
-                .state(Link.State.ACTIVE).build();
-        linkList.add(link2);
-        link3 = DefaultLink.builder().providerId(providerId)
-                .annotations(DefaultAnnotations.builder().set("key3", "yahoo").build())
-                .src(new ConnectPoint(deviceD3.id(), port3)).dst(new ConnectPoint(deviceD4.id(), port4)).type(DIRECT)
-                .state(Link.State.ACTIVE).build();
-        linkList.add(link3);
-        link4 = DefaultLink.builder().providerId(providerId)
-                .annotations(DefaultAnnotations.builder().set("key4", "yahoo").build())
-                .src(new ConnectPoint(deviceD4.id(), port4)).dst(new ConnectPoint(deviceD5.id(), port5)).type(DIRECT)
-                .state(Link.State.ACTIVE).build();
-        linkList.add(link4);
-
-        // Path
-        path1 = new DefaultPath(providerId, linkList, ScalarWeight.toWeight(10));
-    }
-
-    @After
-    public void tearDown() throws Exception {
-    }
-
-    /**
-     * Checks the operation of getInstance() method.
-     */
-    @Test
-    public void testGetInstance() {
-        assertThat(srTeHandler, is(notNullValue()));
-    }
-
-    /**
-     * Checks the operation of reserveGlobalPool() method.
-     */
-    @Test
-    public void testReserveGlobalPool() {
-        assertThat(srTeHandler.reserveGlobalPool(GLOBAL_LABEL_SPACE_MIN, GLOBAL_LABEL_SPACE_MAX), is(true));
-    }
-
-    /**
-     * Checks the operation of allocateNodeLabel() method on node label.
-     */
-    @Test
-    public void testAllocateNodeLabel() {
-        // Specific device D1.deviceId
-
-        //device 1
-        String lsrId1 = "11.1.1.1";
-        // Allocate node label for specific device D1deviceId
-        assertThat(srTeHandler.allocateNodeLabel(deviceId1, lsrId1), is(true));
-        // Retrieve label from store
-        LabelResourceId labelId = pceStore.getGlobalNodeLabel(deviceId1);
-        // Check whether label is generated for this device D1.deviceId()
-        assertThat(labelId, is(notNullValue()));
-
-        // device 2
-        String lsrId2 = "12.1.1.1";
-        // Allocate node label for specific device D2.deviceId()
-        assertThat(srTeHandler.allocateNodeLabel(deviceId2, lsrId2), is(true));
-        // Retrieve label from store
-        labelId = pceStore.getGlobalNodeLabel(deviceId2);
-        // Check whether label is generated for this device D2.deviceId()
-        assertThat(labelId, is(notNullValue()));
-
-        // device 3
-        String lsrId3 = "13.1.1.1";
-        // Allocate node label for specific device D3.deviceId()
-        assertThat(srTeHandler.allocateNodeLabel(deviceId3, lsrId3), is(true));
-        // Retrieve label from store
-        labelId = pceStore.getGlobalNodeLabel(deviceId3);
-        // Check whether label is generated for this device D3.deviceId()
-        assertThat(labelId, is(notNullValue()));
-
-        // device 4
-        String lsrId4 = "14.1.1.1";
-        // Allocate node label for specific device D4.deviceId()
-        assertThat(srTeHandler.allocateNodeLabel(deviceId4, lsrId4), is(true));
-        // Retrieve label from store
-        labelId = pceStore.getGlobalNodeLabel(deviceId4);
-        // Check whether label is generated for this device D4.deviceId()
-        assertThat(labelId, is(notNullValue()));
-
-        // device 5
-        String lsrId5 = "15.1.1.1";
-        // Allocate node label for specific device D5.deviceId()
-        assertThat(srTeHandler.allocateNodeLabel(deviceId5, lsrId5), is(true));
-        // Retrieve label from store
-        labelId = pceStore.getGlobalNodeLabel(deviceId5);
-        // Check whether label is generated for this device D5.deviceId()
-        assertThat(labelId, is(notNullValue()));
-    }
-
-    /**
-     * Checks the operation of releaseNodeLabel() method on node label.
-     */
-    @Test
-    public void testReleaseNodeLabelSuccess() {
-        testAllocateNodeLabel();
-        // Specific device D1.deviceId()
-
-        //device 1
-        String lsrId1 = "11.1.1.1";
-        // Check whether successfully released node label
-        assertThat(srTeHandler.releaseNodeLabel(deviceId1, lsrId1), is(true));
-        // Check whether successfully removed label from store
-        LabelResourceId labelId = pceStore.getGlobalNodeLabel(deviceId1);
-        assertThat(labelId, is(nullValue()));
-
-        //device 2
-        String lsrId2 = "12.1.1.1";
-        // Check whether successfully released node label
-        assertThat(srTeHandler.releaseNodeLabel(deviceId2, lsrId2), is(true));
-        // Check whether successfully removed label from store
-        labelId = pceStore.getGlobalNodeLabel(deviceId2);
-        assertThat(labelId, is(nullValue()));
-
-        //device 3
-        String lsrId3 = "13.1.1.1";
-        // Check whether successfully released node label
-        assertThat(srTeHandler.releaseNodeLabel(deviceId3, lsrId3), is(true));
-        // Check whether successfully removed label from store
-        labelId = pceStore.getGlobalNodeLabel(deviceId3);
-        assertThat(labelId, is(nullValue()));
-
-        //device 4
-        String lsrId4 = "14.1.1.1";
-        // Check whether successfully released node label
-        assertThat(srTeHandler.releaseNodeLabel(deviceId4, lsrId4), is(true));
-        // Check whether successfully removed label from store
-        labelId = pceStore.getGlobalNodeLabel(deviceId4);
-        assertThat(labelId, is(nullValue()));
-
-        //device 5
-        String lsrId5 = "15.1.1.1";
-        // Check whether successfully released node label
-        assertThat(srTeHandler.releaseNodeLabel(deviceId5, lsrId5), is(true));
-        // Check whether successfully removed label from store
-        labelId = pceStore.getGlobalNodeLabel(deviceId5);
-        assertThat(labelId, is(nullValue()));
-    }
-
-    @Test
-    public void testReleaseNodeLabelFailure() {
-        testAllocateNodeLabel();
-
-        //device 6
-        String lsrId6 = "16.1.1.1";
-        // Check whether successfully released node label
-        DeviceId deviceId6 = DeviceId.deviceId("foo6");
-        assertThat(srTeHandler.releaseNodeLabel(deviceId6, lsrId6), is(false));
-    }
-
-    /**
-     * Checks the operation of allocateAdjacencyLabel() method on adjacency label.
-     */
-    @Test
-    public void testAllocateAdjacencyLabel() {
-        // test link1
-        // Check whether adjacency label is allocated successfully.
-        assertThat(srTeHandler.allocateAdjacencyLabel(link1), is(true));
-        // Retrieve from store and check whether adjacency label is generated successfully for this device.
-        LabelResourceId labelId = pceStore.getAdjLabel(link1);
-        assertThat(labelId, is(notNullValue()));
-
-        // test link2
-        // Check whether adjacency label is allocated successfully.
-        assertThat(srTeHandler.allocateAdjacencyLabel(link2), is(true));
-        // Retrieve from store and check whether adjacency label is generated successfully for this device.
-        labelId = pceStore.getAdjLabel(link2);
-        assertThat(labelId, is(notNullValue()));
-
-        // test link3
-        // Check whether adjacency label is allocated successfully.
-        assertThat(srTeHandler.allocateAdjacencyLabel(link3), is(true));
-        // Retrieve from store and check whether adjacency label is generated successfully for this device.
-        labelId = pceStore.getAdjLabel(link3);
-        assertThat(labelId, is(notNullValue()));
-
-        // test link4
-        // Check whether adjacency label is allocated successfully.
-        assertThat(srTeHandler.allocateAdjacencyLabel(link4), is(true));
-        // Retrieve from store and check whether adjacency label is generated successfully for this device.
-        labelId = pceStore.getAdjLabel(link4);
-        assertThat(labelId, is(notNullValue()));
-    }
-
-    /**
-     * Checks the operation of releaseAdjacencyLabel() method on adjacency label.
-     */
-    @Test
-    public void testReleaseAdjacencyLabel() {
-        // Test link1
-        // Check whether adjacency label is released successfully.
-        assertThat(srTeHandler.allocateAdjacencyLabel(link1), is(true));
-        assertThat(srTeHandler.releaseAdjacencyLabel(link1), is(true));
-        // Retrieve from store and check whether adjacency label is removed successfully for this device.
-        LabelResourceId labelId = pceStore.getAdjLabel(link1);
-        assertThat(labelId, is(nullValue()));
-
-        // Test link2
-        // Check whether adjacency label is released successfully.
-        assertThat(srTeHandler.allocateAdjacencyLabel(link2), is(true));
-        assertThat(srTeHandler.releaseAdjacencyLabel(link2), is(true));
-        // Retrieve from store and check whether adjacency label is removed successfully for this device.
-        labelId = pceStore.getAdjLabel(link2);
-        assertThat(labelId, is(nullValue()));
-    }
-
-    /**
-     * Checks the operation of computeLabelStack() method.
-     */
-    @Test
-    public void testComputeLabelStack() {
-        // Allocate node labels to each devices
-        labelId = LabelResourceId.labelResourceId(4097);
-        pceStore.addGlobalNodeLabel(deviceId1, labelId);
-        labelId = LabelResourceId.labelResourceId(4098);
-        pceStore.addGlobalNodeLabel(deviceId2, labelId);
-        labelId = LabelResourceId.labelResourceId(4099);
-        pceStore.addGlobalNodeLabel(deviceId3, labelId);
-        labelId = LabelResourceId.labelResourceId(4100);
-        pceStore.addGlobalNodeLabel(deviceId4, labelId);
-        labelId = LabelResourceId.labelResourceId(4101);
-        pceStore.addGlobalNodeLabel(deviceId5, labelId);
-
-        // Allocate adjacency labels to each devices
-        labelId = LabelResourceId.labelResourceId(5122);
-        pceStore.addAdjLabel(link1, labelId);
-        labelId = LabelResourceId.labelResourceId(5123);
-        pceStore.addAdjLabel(link2, labelId);
-        labelId = LabelResourceId.labelResourceId(5124);
-        pceStore.addAdjLabel(link3, labelId);
-        labelId = LabelResourceId.labelResourceId(5125);
-        pceStore.addAdjLabel(link4, labelId);
-
-        // Compute label stack
-        LabelStack labelStack = srTeHandler.computeLabelStack(path1);
-
-        List<LabelResourceId> labelList = labelStack.labelResources();
-        Iterator<LabelResourceId> iterator = labelList.iterator();
-
-        // check adjacency label of D1.deviceId()
-        labelId = iterator.next();
-        assertThat(labelId, is(LabelResourceId.labelResourceId(5122)));
-
-        // check node-label of D2.deviceId()
-        labelId = iterator.next();
-        assertThat(labelId, is(LabelResourceId.labelResourceId(4098)));
-
-        // check adjacency label of D2.deviceId()
-        labelId = iterator.next();
-        assertThat(labelId, is(LabelResourceId.labelResourceId(5123)));
-
-        // check node-label of D3.deviceId()
-        labelId = iterator.next();
-        assertThat(labelId, is(LabelResourceId.labelResourceId(4099)));
-
-        // check adjacency label of D3.deviceId()
-        labelId = iterator.next();
-        assertThat(labelId, is(LabelResourceId.labelResourceId(5124)));
-
-        // check node-label of D4.deviceId()
-        labelId = iterator.next();
-        assertThat(labelId, is(LabelResourceId.labelResourceId(4100)));
-
-        // check adjacency label of D4.deviceId()
-        labelId = iterator.next();
-        assertThat(labelId, is(LabelResourceId.labelResourceId(5125)));
-
-        // check node-label of D5.deviceId()
-        labelId = iterator.next();
-        assertThat(labelId, is(LabelResourceId.labelResourceId(4101)));
-    }
-
-    private class MockDevice extends DefaultDevice {
-        MockDevice(DeviceId id, Annotations annotations) {
-            super(null, id, null, null, null, null, null, null, annotations);
-        }
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/MockDeviceService.java b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/MockDeviceService.java
deleted file mode 100644
index 298fd39..0000000
--- a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/MockDeviceService.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore.util;
-
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.device.DeviceListener;
-import org.onosproject.net.device.DeviceServiceAdapter;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Test fixture for the device service.
- */
-public class MockDeviceService extends DeviceServiceAdapter {
-    private List<Device> devices = new LinkedList<>();
-    private DeviceListener listener;
-
-    /**
-     * Adds a new device.
-     *
-     * @param dev device to be added
-     */
-    public void addDevice(Device dev) {
-        devices.add(dev);
-    }
-
-    /**
-     * Removes the specified device.
-     *
-     * @param dev device to be removed
-     */
-    public void removeDevice(Device dev) {
-        devices.remove(dev);
-    }
-
-    @Override
-    public Device getDevice(DeviceId deviceId) {
-        for (Device dev : devices) {
-            if (dev.id().equals(deviceId)) {
-                return dev;
-            }
-        }
-        return null;
-    }
-
-    @Override
-    public Iterable<Device> getAvailableDevices() {
-        return devices;
-    }
-
-    @Override
-    public void addListener(DeviceListener listener) {
-        this.listener = listener;
-    }
-
-    /**
-     * Get the listener.
-     */
-    public DeviceListener getListener() {
-        return listener;
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/MockNetConfigRegistryAdapter.java b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/MockNetConfigRegistryAdapter.java
deleted file mode 100644
index b5a67fb..0000000
--- a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/MockNetConfigRegistryAdapter.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore.util;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.JsonNodeFactory;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.config.Config;
-import org.onosproject.net.config.ConfigApplyDelegate;
-import org.onosproject.net.config.ConfigFactory;
-import org.onosproject.net.config.NetworkConfigRegistryAdapter;
-import org.onosproject.pcep.api.DeviceCapability;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/* Mock test for network config registry. */
-public class MockNetConfigRegistryAdapter extends NetworkConfigRegistryAdapter {
-    private ConfigFactory cfgFactory;
-    private Map<DeviceId, DeviceCapability> classConfig = new HashMap<>();
-
-    @Override
-    public void registerConfigFactory(ConfigFactory configFactory) {
-        cfgFactory = configFactory;
-    }
-
-    @Override
-    public void unregisterConfigFactory(ConfigFactory configFactory) {
-        cfgFactory = null;
-    }
-
-    @Override
-    public <S, C extends Config<S>> C addConfig(S subject, Class<C> configClass) {
-        if (configClass == DeviceCapability.class) {
-            DeviceCapability devCap = new DeviceCapability();
-            classConfig.put((DeviceId) subject, devCap);
-
-            JsonNode node = new ObjectNode(new MockJsonNode());
-            ObjectMapper mapper = new ObjectMapper();
-            ConfigApplyDelegate delegate = new InternalApplyDelegate();
-            devCap.init((DeviceId) subject, null, node, mapper, delegate);
-            return (C) devCap;
-        }
-
-        return null;
-    }
-
-    @Override
-    public <S, C extends Config<S>> void removeConfig(S subject, Class<C> configClass) {
-        classConfig.remove(subject);
-    }
-
-    @Override
-    public <S, C extends Config<S>> C getConfig(S subject, Class<C> configClass) {
-        if (configClass == DeviceCapability.class) {
-            return (C) classConfig.get(subject);
-        }
-        return null;
-    }
-
-    private class MockJsonNode extends JsonNodeFactory {
-    }
-
-    // Auxiliary delegate to receive notifications about changes applied to
-    // the network configuration - by the apps.
-    private class InternalApplyDelegate implements ConfigApplyDelegate {
-        @Override
-        public void onApply(Config config) {
-            //configs.put(config.subject(), config.node());
-        }
-    }
-
-}
diff --git a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/MockPcepClientController.java b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/MockPcepClientController.java
deleted file mode 100644
index 07bf81c..0000000
--- a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/MockPcepClientController.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore.util;
-
-
-
-import org.onosproject.incubator.net.tunnel.DefaultLabelStack;
-import org.onosproject.incubator.net.tunnel.LabelStack;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.net.Path;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepClient;
-import org.onosproject.pcep.server.PcepClientController;
-import org.onosproject.pcep.server.PcepClientListener;
-import org.onosproject.pcep.server.PcepEventListener;
-import org.onosproject.pcep.server.PcepNodeListener;
-import org.onosproject.pcepio.protocol.PcepMessage;
-import org.onosproject.pcepio.types.PcepValueType;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.List;
-
-public class MockPcepClientController implements PcepClientController {
-
-    Map<PccId, PcepClient> clientMap = new HashMap<>();
-
-    @Override
-    public Collection<PcepClient> getClients() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public void addClient(PccId pccId, PcepClient pc) {
-        clientMap.put(pccId, pc);
-        return;
-    }
-
-    @Override
-    public PcepClient getClient(PccId pccId) {
-        return clientMap.get(pccId);
-    }
-
-    @Override
-    public void addListener(PcepClientListener listener) {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public void removeListener(PcepClientListener listener) {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public void addEventListener(PcepEventListener listener) {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public void removeEventListener(PcepEventListener listener) {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public void addNodeListener(PcepNodeListener listener) {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public void removeNodeListener(PcepNodeListener listener) {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public void writeMessage(PccId pccId, PcepMessage msg) {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public void processClientMessage(PccId pccId, PcepMessage msg) {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public void closeConnectedClients() {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public LabelStack computeLabelStack(Path path) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public LinkedList<PcepValueType> createPcepLabelStack(DefaultLabelStack labelStack, Path path) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Map<String, List<String>> getPcepExceptions() {
-        return null;
-    }
-
-    @Override
-    public Map<Integer, Integer> getPcepErrorMsg() {
-        return null;
-    }
-
-    @Override
-    public Map<String, String> getPcepSessionMap() {
-        return null;
-    }
-
-    @Override
-    public Map<String, Byte> getPcepSessionIdMap() {
-        return null;
-    }
-
-    @Override
-    public void peerErrorMsg(String peerId, Integer errorType, Integer errValue) {
-
-    }
-
-    @Override
-    public boolean allocateLocalLabel(Tunnel tunnel) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-}
diff --git a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/StorageServiceAdapter.java b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/StorageServiceAdapter.java
deleted file mode 100644
index 3a20e01..0000000
--- a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/StorageServiceAdapter.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore.util;
-
-import org.onosproject.store.service.AsyncDocumentTree;
-import org.onosproject.store.service.AsyncConsistentMultimap;
-import org.onosproject.store.service.AsyncConsistentTreeMap;
-import org.onosproject.store.service.AtomicCounterBuilder;
-import org.onosproject.store.service.AtomicCounterMapBuilder;
-import org.onosproject.store.service.AtomicIdGeneratorBuilder;
-import org.onosproject.store.service.AtomicValueBuilder;
-import org.onosproject.store.service.ConsistentMapBuilder;
-import org.onosproject.store.service.ConsistentMultimapBuilder;
-import org.onosproject.store.service.ConsistentTreeMapBuilder;
-import org.onosproject.store.service.DistributedLockBuilder;
-import org.onosproject.store.service.DistributedSetBuilder;
-import org.onosproject.store.service.DocumentTreeBuilder;
-import org.onosproject.store.service.EventuallyConsistentMapBuilder;
-import org.onosproject.store.service.LeaderElectorBuilder;
-import org.onosproject.store.service.Serializer;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.Topic;
-import org.onosproject.store.service.TopicBuilder;
-import org.onosproject.store.service.TransactionContextBuilder;
-import org.onosproject.store.service.WorkQueue;
-import org.onosproject.store.service.WorkQueueBuilder;
-
-/**
- * Adapter for the storage service.
- */
-public class StorageServiceAdapter implements StorageService {
-    @Override
-    public <K, V> EventuallyConsistentMapBuilder<K, V> eventuallyConsistentMapBuilder() {
-        return null;
-    }
-
-    @Override
-    public <K, V> ConsistentMapBuilder<K, V> consistentMapBuilder() {
-        return null;
-    }
-
-    @Override
-    public <V> DocumentTreeBuilder<V> documentTreeBuilder() {
-        return null;
-    }
-
-    @Override
-    public <E> DistributedSetBuilder<E> setBuilder() {
-        return null;
-    }
-
-    @Override
-    public AtomicCounterBuilder atomicCounterBuilder() {
-        return null;
-    }
-
-    @Override
-    public AtomicIdGeneratorBuilder atomicIdGeneratorBuilder() {
-        return null;
-    }
-
-    @Override
-    public <V> AtomicValueBuilder<V> atomicValueBuilder() {
-        return null;
-    }
-
-    @Override
-    public TransactionContextBuilder transactionContextBuilder() {
-        return null;
-    }
-
-    @Override
-    public DistributedLockBuilder lockBuilder() {
-        return null;
-    }
-
-    @Override
-    public LeaderElectorBuilder leaderElectorBuilder() {
-        return null;
-    }
-
-    @Override
-    public <T> TopicBuilder<T> topicBuilder() {
-        return null;
-    }
-
-    @Override
-    public <E> WorkQueueBuilder<E> workQueueBuilder() {
-        return null;
-    }
-
-    @Override
-    public <E> WorkQueue<E> getWorkQueue(String name, Serializer serializer) {
-        return null;
-    }
-
-    @Override
-    public <K, V> AsyncConsistentMultimap<K, V> getAsyncSetMultimap(String name, Serializer serializer) {
-        return null;
-    }
-
-    @Override
-    public <V> AsyncConsistentTreeMap<V> getAsyncTreeMap(String name, Serializer serializer) {
-        return null;
-    }
-
-    @Override
-    public <T> Topic<T> getTopic(String name, Serializer serializer) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public <V> ConsistentTreeMapBuilder<V> consistentTreeMapBuilder() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public <V> AsyncDocumentTree<V> getDocumentTree(String name, Serializer serializer) {
-        return null;
-    }
-
-    public <K, V> ConsistentMultimapBuilder<K, V> consistentMultimapBuilder() {
-        return null;
-    }
-
-    @Override
-    public <K> AtomicCounterMapBuilder<K> atomicCounterMapBuilder() {
-        return null;
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/TestAtomicCounter.java b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/TestAtomicCounter.java
deleted file mode 100644
index 88ca5e1..0000000
--- a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/TestAtomicCounter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore.util;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.atomic.AtomicLong;
-
-import org.onosproject.store.service.AsyncAtomicCounter;
-import org.onosproject.store.service.AtomicCounterBuilder;
-
-/**
- * Test implementation of atomic counter.
- */
-public final class TestAtomicCounter implements AsyncAtomicCounter {
-    final AtomicLong value;
-
-    @Override
-    public String name() {
-        return null;
-    }
-
-    private TestAtomicCounter() {
-        value = new AtomicLong();
-    }
-
-    @Override
-    public CompletableFuture<Long> incrementAndGet() {
-        return CompletableFuture.completedFuture(value.incrementAndGet());
-    }
-
-    @Override
-    public CompletableFuture<Long> getAndIncrement() {
-        return CompletableFuture.completedFuture(value.getAndIncrement());
-    }
-
-    @Override
-    public CompletableFuture<Long> getAndAdd(long delta) {
-        return CompletableFuture.completedFuture(value.getAndAdd(delta));
-    }
-
-    @Override
-    public CompletableFuture<Long> addAndGet(long delta) {
-        return CompletableFuture.completedFuture(value.addAndGet(delta));
-    }
-
-    @Override
-    public CompletableFuture<Void> set(long value) {
-        this.value.set(value);
-        return CompletableFuture.completedFuture(null);
-    }
-
-    @Override
-    public CompletableFuture<Boolean> compareAndSet(long expectedValue, long updateValue) {
-        return CompletableFuture.completedFuture(value.compareAndSet(expectedValue, updateValue));
-    }
-
-    @Override
-    public CompletableFuture<Long> get() {
-        return CompletableFuture.completedFuture(value.get());
-    }
-
-    public static AtomicCounterBuilder builder() {
-        return new Builder();
-    }
-
-    public static class Builder extends AtomicCounterBuilder {
-        @Override
-        public AsyncAtomicCounter build() {
-            return new TestAtomicCounter();
-        }
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/TestConsistentMap.java b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/TestConsistentMap.java
deleted file mode 100644
index 4c02ba9..0000000
--- a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/TestConsistentMap.java
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore.util;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
-
-import org.onosproject.store.primitives.ConsistentMapBackedJavaMap;
-import org.onosproject.store.service.AsyncConsistentMap;
-import org.onosproject.store.service.ConsistentMap;
-import org.onosproject.store.service.ConsistentMapAdapter;
-import org.onosproject.store.service.ConsistentMapBuilder;
-import org.onosproject.store.service.MapEvent;
-import org.onosproject.store.service.MapEventListener;
-import org.onosproject.store.service.Versioned;
-
-import com.google.common.base.Objects;
-
-/**
- * Test implementation of the consistent map.
- */
-public final class TestConsistentMap<K, V> extends ConsistentMapAdapter<K, V> {
-
-    private final List<MapEventListener<K, V>> listeners;
-    private final Map<K, Versioned<V>> map;
-    private final String mapName;
-    private final AtomicLong counter = new AtomicLong(0);
-
-    private TestConsistentMap(String mapName) {
-        map = new HashMap<>();
-        listeners = new LinkedList<>();
-        this.mapName = mapName;
-    }
-
-    private Versioned<V> version(V v) {
-        return new Versioned<>(v, counter.incrementAndGet(), System.currentTimeMillis());
-    }
-
-    /**
-     * Notify all listeners of an event.
-     */
-    private void notifyListeners(String mapName,
-                                 K key, Versioned<V> newvalue, Versioned<V> oldValue) {
-        MapEvent<K, V> event = new MapEvent<>(mapName, key, newvalue, oldValue);
-        listeners.forEach(
-                listener -> listener.event(event)
-        );
-    }
-
-    @Override
-    public int size() {
-        return map.size();
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return map.isEmpty();
-    }
-
-    @Override
-    public boolean containsKey(K key) {
-        return map.containsKey(key);
-    }
-
-    @Override
-    public boolean containsValue(V value) {
-        return map.containsValue(value);
-    }
-
-    @Override
-    public Versioned<V> get(K key) {
-        return map.get(key);
-    }
-
-    @Override
-    public Versioned<V> computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) {
-        AtomicBoolean updated = new AtomicBoolean(false);
-        Versioned<V> result = map.compute(key, (k, v) -> {
-            if (v == null) {
-                updated.set(true);
-                return version(mappingFunction.apply(key));
-            }
-            return v;
-        });
-        if (updated.get()) {
-            notifyListeners(mapName, key, result, null);
-        }
-        return result;
-    }
-
-    @Override
-    public Versioned<V> compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
-            AtomicBoolean updated = new AtomicBoolean(false);
-            AtomicReference<Versioned<V>> previousValue = new AtomicReference<>();
-            Versioned<V> result = map.compute(key, (k, v) -> {
-                    updated.set(true);
-                    previousValue.set(v);
-                    return version(remappingFunction.apply(k, Versioned.valueOrNull(v)));
-                });
-            if (updated.get()) {
-                notifyListeners(mapName, key, result, previousValue.get());
-            }
-            return result;
-    }
-
-    @Override
-    public Versioned<V> computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
-        AtomicBoolean updated = new AtomicBoolean(false);
-        AtomicReference<Versioned<V>> previousValue = new AtomicReference<>();
-        Versioned<V> result = map.compute(key, (k, v) -> {
-            if (v != null) {
-                updated.set(true);
-                previousValue.set(v);
-                return version(remappingFunction.apply(k, v.value()));
-            }
-            return v;
-        });
-        if (updated.get()) {
-            notifyListeners(mapName, key, result, previousValue.get());
-        }
-        return result;
-    }
-
-    @Override
-    public Versioned<V> computeIf(K key, Predicate<? super V> condition,
-                                  BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
-        AtomicBoolean updated = new AtomicBoolean(false);
-        AtomicReference<Versioned<V>> previousValue = new AtomicReference<>();
-        Versioned<V> result = map.compute(key, (k, v) -> {
-            if (condition.test(Versioned.valueOrNull(v))) {
-                previousValue.set(v);
-                updated.set(true);
-                return version(remappingFunction.apply(k, Versioned.valueOrNull(v)));
-            }
-            return v;
-        });
-        if (updated.get()) {
-            notifyListeners(mapName, key, result, previousValue.get());
-        }
-        return result;
-    }
-
-    @Override
-    public Versioned<V> put(K key, V value) {
-        Versioned<V> newValue = version(value);
-        Versioned<V> previousValue = map.put(key, newValue);
-        notifyListeners(mapName, key, newValue, previousValue);
-        return previousValue;
-    }
-
-    @Override
-    public Versioned<V> putAndGet(K key, V value) {
-        Versioned<V> newValue = version(value);
-        Versioned<V> previousValue = map.put(key, newValue);
-        notifyListeners(mapName, key, newValue, previousValue);
-        return newValue;
-    }
-
-    @Override
-    public Versioned<V> remove(K key) {
-        Versioned<V> result = map.remove(key);
-        notifyListeners(mapName, key, null, result);
-        return result;
-    }
-
-    @Override
-    public void clear() {
-        map.keySet().forEach(this::remove);
-    }
-
-    @Override
-    public Set<K> keySet() {
-        return map.keySet();
-    }
-
-    @Override
-    public Collection<Versioned<V>> values() {
-        return map.values()
-                .stream()
-                .collect(Collectors.toList());
-    }
-
-    @Override
-    public Set<Map.Entry<K, Versioned<V>>> entrySet() {
-        return map.entrySet();
-    }
-
-    @Override
-    public Versioned<V> putIfAbsent(K key, V value) {
-        Versioned<V> newValue = version(value);
-        Versioned<V> result =  map.putIfAbsent(key, newValue);
-        if (result == null) {
-            notifyListeners(mapName, key, newValue, result);
-        }
-        return result;
-    }
-
-    @Override
-    public boolean remove(K key, V value) {
-        Versioned<V> existingValue = map.get(key);
-        if (Objects.equal(Versioned.valueOrNull(existingValue), value)) {
-            map.remove(key);
-            notifyListeners(mapName, key, null, existingValue);
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public boolean remove(K key, long version) {
-        Versioned<V> existingValue = map.get(key);
-        if (existingValue == null) {
-            return false;
-        }
-        if (existingValue.version() == version) {
-            map.remove(key);
-            notifyListeners(mapName, key, null, existingValue);
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public Versioned<V> replace(K key, V value) {
-        Versioned<V> existingValue = map.get(key);
-        if (existingValue == null) {
-            return null;
-        }
-        Versioned<V> newValue = version(value);
-        Versioned<V> result = map.put(key, newValue);
-        notifyListeners(mapName, key, newValue, result);
-        return result;
-    }
-
-    @Override
-    public boolean replace(K key, V oldValue, V newValue) {
-        Versioned<V> existingValue = map.get(key);
-        if (existingValue == null || !existingValue.value().equals(oldValue)) {
-            return false;
-        }
-        Versioned<V> value = version(newValue);
-        Versioned<V> result = map.put(key, value);
-        notifyListeners(mapName, key, value, result);
-        return true;
-    }
-
-    @Override
-    public boolean replace(K key, long oldVersion, V newValue) {
-        Versioned<V> existingValue = map.get(key);
-        if (existingValue == null || existingValue.version() != oldVersion) {
-            return false;
-        }
-        Versioned<V> value = version(newValue);
-        Versioned<V> result = map.put(key, value);
-        notifyListeners(mapName, key, value, result);
-        return true;
-    }
-
-    @Override
-    public void addListener(MapEventListener<K, V> listener) {
-        listeners.add(listener);
-    }
-
-    @Override
-    public void removeListener(MapEventListener<K, V> listener) {
-        listeners.remove(listener);
-    }
-
-    @Override
-    public Map<K, V> asJavaMap() {
-        return new ConsistentMapBackedJavaMap<>(this);
-    }
-
-    public static Builder builder() {
-        return new Builder();
-    }
-
-    public static class Builder<K, V> extends ConsistentMapBuilder<K, V> {
-
-        @Override
-        public ConsistentMap<K, V> build() {
-            return new TestConsistentMap<>(name());
-        }
-
-        @Override
-        public AsyncConsistentMap<K, V> buildAsyncMap() {
-            return null;
-        }
-
-    }
-
-}
diff --git a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/TestDistributedSet.java b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/TestDistributedSet.java
deleted file mode 100644
index aa4468a..0000000
--- a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/TestDistributedSet.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore.util;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
-import org.onosproject.store.primitives.DefaultDistributedSet;
-import org.onosproject.store.service.AsyncDistributedSet;
-import org.onosproject.store.service.DistributedSet;
-import org.onosproject.store.service.DistributedSetAdapter;
-import org.onosproject.store.service.DistributedSetBuilder;
-import org.onosproject.store.service.SetEvent;
-import org.onosproject.store.service.SetEventListener;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-
-/**
- * Test implementation of the distributed set.
- */
-public final class TestDistributedSet<E> extends DistributedSetAdapter<E> {
-    private final List<SetEventListener<E>> listeners;
-    private final Set<E> set;
-    private final String setName;
-
-    /**
-     * Public constructor.
-     *
-     * @param setName name to be assigned to this set
-     */
-    public TestDistributedSet(String setName) {
-        set = new HashSet<>();
-        listeners = new LinkedList<>();
-        this.setName = setName;
-    }
-
-    /**
-     * Notify all listeners of a set event.
-     *
-     * @param event the SetEvent
-     */
-    private void notifyListeners(SetEvent<E> event) {
-        listeners.forEach(
-                listener -> listener.event(event)
-        );
-    }
-
-    @Override
-    public CompletableFuture<Void> addListener(SetEventListener<E> listener) {
-        listeners.add(listener);
-        return CompletableFuture.completedFuture(null);
-    }
-
-    @Override
-    public CompletableFuture<Void> removeListener(SetEventListener<E> listener) {
-        listeners.remove(listener);
-        return CompletableFuture.completedFuture(null);
-    }
-
-    @Override
-    public CompletableFuture<Boolean> add(E element) {
-        SetEvent<E> event =
-                new SetEvent<>(setName, SetEvent.Type.ADD, element);
-        notifyListeners(event);
-        return CompletableFuture.completedFuture(set.add(element));
-    }
-
-    @Override
-    public CompletableFuture<Boolean> remove(E element) {
-        SetEvent<E> event =
-                new SetEvent<>(setName, SetEvent.Type.REMOVE, element);
-        notifyListeners(event);
-        return CompletableFuture.completedFuture(set.remove(element));
-    }
-
-    @Override
-    public CompletableFuture<Integer> size() {
-        return CompletableFuture.completedFuture(set.size());
-    }
-
-    @Override
-    public CompletableFuture<Boolean> isEmpty() {
-        return CompletableFuture.completedFuture(set.isEmpty());
-    }
-
-    @Override
-    public CompletableFuture<Void> clear() {
-        removeAll(ImmutableSet.copyOf(set));
-        return CompletableFuture.completedFuture(null);
-    }
-
-    @Override
-    public CompletableFuture<Boolean> contains(E element) {
-        return CompletableFuture.completedFuture(set.contains(element));
-    }
-
-    @Override
-    public CompletableFuture<Boolean> addAll(Collection<? extends E> c) {
-        c.forEach(this::add);
-        return CompletableFuture.completedFuture(true);
-    }
-
-    @Override
-    public CompletableFuture<Boolean> containsAll(Collection<? extends E> c) {
-        return CompletableFuture.completedFuture(set.containsAll(c));
-    }
-
-    @Override
-    public CompletableFuture<Boolean> retainAll(Collection<? extends E> c) {
-        Set notInSet2;
-        notInSet2 = Sets.difference(set, (Set<?>) c);
-        return removeAll(ImmutableSet.copyOf(notInSet2));
-    }
-
-    @Override
-    public CompletableFuture<Boolean> removeAll(Collection<? extends E> c) {
-        c.forEach(this::remove);
-        return CompletableFuture.completedFuture(true);
-    }
-
-    @Override
-    public CompletableFuture<? extends Set<E>> getAsImmutableSet() {
-        return CompletableFuture.completedFuture(ImmutableSet.copyOf(set));
-    }
-
-    @Override
-    public String name() {
-        return this.setName;
-    }
-
-    @Override
-    public DistributedSet<E> asDistributedSet() {
-        return new DefaultDistributedSet<>(this, 0);
-    }
-
-    @Override
-    public DistributedSet<E> asDistributedSet(long timeoutMillis) {
-        return new DefaultDistributedSet<>(this, timeoutMillis);
-    }
-
-    /**
-     * Returns a new Builder instance.
-     *
-     * @return Builder
-     **/
-    public static Builder builder() {
-        return new Builder();
-    }
-
-    /**
-     * Builder constructor that instantiates a TestDistributedSet.
-     *
-     * @param <E>
-     */
-    public static class Builder<E> extends DistributedSetBuilder<E> {
-        @Override
-        public AsyncDistributedSet<E> build() {
-            return new TestDistributedSet(name());
-        }
-    }
-}
diff --git a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/TestEventuallyConsistentMap.java b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/TestEventuallyConsistentMap.java
deleted file mode 100644
index 7872355..0000000
--- a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/TestEventuallyConsistentMap.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore.util;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-import java.util.function.BiFunction;
-
-import org.onlab.util.KryoNamespace;
-import org.onosproject.cluster.NodeId;
-import org.onosproject.store.Timestamp;
-import org.onosproject.store.service.EventuallyConsistentMap;
-import org.onosproject.store.service.EventuallyConsistentMapAdapter;
-import org.onosproject.store.service.EventuallyConsistentMapBuilder;
-import org.onosproject.store.service.EventuallyConsistentMapEvent;
-import org.onosproject.store.service.EventuallyConsistentMapListener;
-
-import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.PUT;
-import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.REMOVE;
-
-/**
- * Testing version of an Eventually Consistent Map.
- */
-
-public final class TestEventuallyConsistentMap<K, V> extends EventuallyConsistentMapAdapter<K, V> {
-
-    private final HashMap<K, V> map;
-    private final String mapName;
-    private final List<EventuallyConsistentMapListener<K, V>> listeners;
-    private final BiFunction<K, V, Collection<NodeId>> peerUpdateFunction;
-
-    private TestEventuallyConsistentMap(String mapName,
-                                        BiFunction<K, V, Collection<NodeId>> peerUpdateFunction) {
-        map = new HashMap<>();
-        listeners = new LinkedList<>();
-        this.mapName = mapName;
-        this.peerUpdateFunction = peerUpdateFunction;
-    }
-
-    /**
-     * Notify all listeners of an event.
-     */
-    private void notifyListeners(EventuallyConsistentMapEvent<K, V> event) {
-        listeners.forEach(
-                listener -> listener.event(event)
-        );
-    }
-
-    @Override
-    public int size() {
-        return map.size();
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return map.isEmpty();
-    }
-
-    @Override
-    public boolean containsKey(K key) {
-        return map.containsKey(key);
-    }
-
-    @Override
-    public boolean containsValue(V value) {
-        return map.containsValue(value);
-    }
-
-    @Override
-    public V get(K key) {
-        return map.get(key);
-    }
-
-    @SuppressWarnings("ReturnValueIgnored")
-    @Override
-    public void put(K key, V value) {
-        map.put(key, value);
-        EventuallyConsistentMapEvent<K, V> addEvent =
-                new EventuallyConsistentMapEvent<>(mapName, PUT, key, value);
-        notifyListeners(addEvent);
-        if (peerUpdateFunction != null) {
-            peerUpdateFunction.apply(key, value);
-        }
-    }
-
-    @Override
-    public V remove(K key) {
-        V result = map.remove(key);
-        if (result != null) {
-            EventuallyConsistentMapEvent<K, V> removeEvent =
-                    new EventuallyConsistentMapEvent<>(mapName, REMOVE,
-                            key, map.get(key));
-            notifyListeners(removeEvent);
-        }
-        return result;
-    }
-
-    @Override
-    public void remove(K key, V value) {
-        boolean removed = map.remove(key, value);
-        if (removed) {
-            EventuallyConsistentMapEvent<K, V> removeEvent =
-                    new EventuallyConsistentMapEvent<>(mapName, REMOVE, key, value);
-            notifyListeners(removeEvent);
-        }
-    }
-
-    @Override
-    public V compute(K key, BiFunction<K, V, V> recomputeFunction) {
-        return map.compute(key, recomputeFunction);
-    }
-
-    @Override
-    public void putAll(Map<? extends K, ? extends V> m) {
-        map.putAll(m);
-    }
-
-    @Override
-    public void clear() {
-        map.clear();
-    }
-
-    @Override
-    public Set<K> keySet() {
-        return map.keySet();
-    }
-
-    @Override
-    public Collection<V> values() {
-        return map.values();
-    }
-
-    @Override
-    public Set<Map.Entry<K, V>> entrySet() {
-        return map.entrySet();
-    }
-
-    public static <K, V> Builder<K, V> builder() {
-        return new Builder<>();
-    }
-
-    @Override
-    public void addListener(EventuallyConsistentMapListener<K, V> listener) {
-        listeners.add(listener);
-    }
-
-    @Override
-    public void removeListener(EventuallyConsistentMapListener<K, V> listener) {
-        listeners.remove(listener);
-    }
-
-    public static class Builder<K, V> implements EventuallyConsistentMapBuilder<K, V> {
-        private String name;
-        private BiFunction<K, V, Collection<NodeId>> peerUpdateFunction;
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withName(String name) {
-            this.name = name;
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withSerializer(KryoNamespace.Builder serializerBuilder) {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withSerializer(KryoNamespace serializer) {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V>
-        withTimestampProvider(BiFunction<K, V, Timestamp> timestampProvider) {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withEventExecutor(ExecutorService executor) {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withCommunicationExecutor(ExecutorService executor) {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withBackgroundExecutor(ScheduledExecutorService executor) {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V>
-        withPeerUpdateFunction(BiFunction<K, V, Collection<NodeId>> peerUpdateFunction) {
-            this.peerUpdateFunction = peerUpdateFunction;
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withTombstonesDisabled() {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withAntiEntropyPeriod(long period, TimeUnit unit) {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withFasterConvergence() {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMapBuilder<K, V> withPersistence() {
-            return this;
-        }
-
-        @Override
-        public EventuallyConsistentMap<K, V> build() {
-            if (name == null) {
-                name = "test";
-            }
-            return new TestEventuallyConsistentMap<>(name, peerUpdateFunction);
-        }
-    }
-
-}
-
diff --git a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/TestStorageService.java b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/TestStorageService.java
deleted file mode 100644
index cc09bef..0000000
--- a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/TestStorageService.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcelabelstore.util;
-
-import org.onosproject.store.service.AtomicCounterBuilder;
-import org.onosproject.store.service.AtomicValueBuilder;
-import org.onosproject.store.service.ConsistentMapBuilder;
-import org.onosproject.store.service.ConsistentMultimapBuilder;
-import org.onosproject.store.service.DistributedSetBuilder;
-import org.onosproject.store.service.EventuallyConsistentMapBuilder;
-import org.onosproject.store.service.StorageServiceAdapter;
-import org.onosproject.store.service.TransactionContextBuilder;
-
-public class TestStorageService extends StorageServiceAdapter {
-
-
-    @Override
-    public <K, V> EventuallyConsistentMapBuilder<K, V> eventuallyConsistentMapBuilder() {
-        return TestEventuallyConsistentMap.builder();
-    }
-
-    @Override
-    public <K, V> ConsistentMapBuilder<K, V> consistentMapBuilder() {
-        return TestConsistentMap.builder();
-    }
-
-    @Override
-    public <K, V> ConsistentMultimapBuilder<K, V> consistentMultimapBuilder() {
-        return null;
-    }
-
-    @Override
-    public <E> DistributedSetBuilder<E> setBuilder() {
-        return TestDistributedSet.builder();
-    }
-
-    @Override
-    public AtomicCounterBuilder atomicCounterBuilder() {
-        return TestAtomicCounter.builder();
-    }
-
-    @Override
-    public <V> AtomicValueBuilder<V> atomicValueBuilder() {
-        throw new UnsupportedOperationException("atomicValueBuilder");
-    }
-
-    @Override
-    public TransactionContextBuilder transactionContextBuilder() {
-        throw new UnsupportedOperationException("transactionContextBuilder");
-    }
-
-}
diff --git a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcep/controller/impl/PcepClientControllerImplTest.java b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcep/controller/impl/PcepClientControllerImplTest.java
deleted file mode 100644
index 73ff8d6..0000000
--- a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcep/controller/impl/PcepClientControllerImplTest.java
+++ /dev/null
@@ -1,555 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.controller.impl;
-
-import static org.onosproject.pcep.server.PcepLspSyncAction.SEND_UPDATE;
-import static org.onosproject.pcep.server.PcepLspSyncAction.UNSTABLE;
-
-import java.net.SocketAddress;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelConfig;
-import org.jboss.netty.channel.ChannelFactory;
-import org.jboss.netty.channel.ChannelFuture;
-import org.jboss.netty.channel.ChannelPipeline;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.IpAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.incubator.net.tunnel.DefaultTunnel;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelListener;
-import org.onosproject.incubator.net.tunnel.TunnelName;
-import org.onosproject.incubator.net.tunnel.TunnelService;
-import org.onosproject.incubator.net.tunnel.TunnelSubscription;
-import org.onosproject.incubator.net.tunnel.Tunnel.Type;
-import org.onosproject.net.Annotations;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.ElementId;
-import org.onosproject.net.Path;
-import org.onosproject.pcep.server.ClientCapability;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepEventListener;
-import org.onosproject.pcep.server.PcepLspSyncAction;
-import org.onosproject.pcep.server.PcepPacketStats;
-import org.onosproject.pcep.server.PcepSyncStatus;
-import org.onosproject.pcep.server.driver.PcepAgent;
-import org.onosproject.pcep.server.impl.PcepClientControllerImpl;
-import org.onosproject.pcep.server.impl.PcepClientImpl;
-import org.onosproject.pcep.server.impl.PcepPacketStatsImpl;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepFactories;
-import org.onosproject.pcepio.protocol.PcepInitiateMsg;
-import org.onosproject.pcepio.protocol.PcepMessage;
-import org.onosproject.pcepio.protocol.PcepMessageReader;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import com.google.common.collect.ImmutableSet;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-
-public class PcepClientControllerImplTest {
-    TestPcepClientControllerImpl controllerImpl = new TestPcepClientControllerImpl();
-    TunnelService tunnelService = new MockTunnelService();
-    private PcepEventListener listener;
-    private Channel channel;
-
-    @Before
-    public void startUp() {
-        controllerImpl.setTunnelService(tunnelService);
-        listener = new PcepEventListenerAdapter();
-        controllerImpl.addEventListener(listener);
-        channel = new MockChannel();
-    }
-
-    @After
-    public void tearDown() {
-        controllerImpl.removeEventListener(listener);
-        listener = null;
-        controllerImpl.setTunnelService(null);
-    }
-
-    @Test
-    public void tunnelProviderAddedTest1() throws PcepParseException, PcepOutOfBoundMessageException {
-        PccId pccId = PccId.pccId(IpAddress.valueOf("1.1.1.1"));
-
-        byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x50, 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00,
-                                        0x00, 0x00, 0x00, 0x01, // SRP object
-                                        0x00, 0x1c, 0x00, 0x04, // PATH-SETUP-TYPE TLV
-                                        0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x24, // LSP object
-                                        0x00, 0x00, 0x10, (byte) 0xAB,
-                                        0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, // symbolic path tlv
-                                        0x00, 0x12, 0x00, 0x10, // IPv4-LSP-IDENTIFIER-TLV
-                                        0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05,
-                                        0x05, 0x05, 0x05,
-
-                                        0x07, 0x10, 0x00, 0x14, // ERO object
-                                        0x01, 0x08, (byte) 0x01, 0x01, // ERO IPv4 sub objects
-                                        0x01, 0x01, 0x04, 0x00,
-                                        0x01, 0x08, (byte) 0x05, 0x05, 0x05, 0x05, 0x04, 0x00, };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = reader.readFrom(buffer);
-
-        PcepClientImpl pc = new PcepClientImpl();
-        PcepPacketStats pktStats = new PcepPacketStatsImpl();
-
-        pc.init(pccId, PcepVersion.PCEP_1, pktStats);
-        pc.setChannel(channel);
-        pc.setAgent(controllerImpl.agent());
-        pc.setConnected(true);
-        pc.setCapability(new ClientCapability(true, true, true, true, true));
-
-        controllerImpl.agent().addConnectedClient(pccId, pc);
-        controllerImpl.processClientMessage(pccId, message);
-
-        pc.setLspDbSyncStatus(PcepSyncStatus.SYNCED);
-        pc.setLabelDbSyncStatus(PcepSyncStatus.IN_SYNC);
-        pc.setLabelDbSyncStatus(PcepSyncStatus.SYNCED);
-
-        List<PcepMessage> deleteMsgs = ((MockChannel) channel).msgsWritten();
-        assertThat(deleteMsgs.size(), is(1));
-
-        for (PcepMessage msg : deleteMsgs) {
-            assertThat(((PcepInitiateMsg) msg).getPcInitiatedLspRequestList().getFirst().getSrpObject().getRFlag(),
-                       is(true));
-        }
-    }
-
-    @Test
-    public void tunnelProviderAddedTest2() throws PcepParseException, PcepOutOfBoundMessageException {
-        PccId pccId = PccId.pccId(IpAddress.valueOf("1.1.1.1"));
-
-        byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x50, 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00,
-                                        0x00, 0x00, 0x00, 0x01, // SRP object
-                                        0x00, 0x1c, 0x00, 0x04, // PATH-SETUP-TYPE TLV
-                                        0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x24, 0x00, // LSP object
-                                        0x00, 0x10, (byte) 0xAB,
-                                        0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, // symbolic path tlv
-                                        0x00, 0x12, 0x00, 0x10, // IPv4-LSP-IDENTIFIER-TLV
-                                        0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05,
-                                        0x05, 0x05, 0x05,
-
-                                        0x07, 0x10, 0x00, 0x14, // ERO object
-                                        0x01, 0x08, (byte) 0x01, 0x01, 0x01, 0x01, 0x04, 0x00, // ERO IPv4 sub objects
-                                        0x01, 0x08, (byte) 0x05, 0x05, 0x05, 0x05, 0x04, 0x00, };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = reader.readFrom(buffer);
-
-        PcepClientImpl pc = new PcepClientImpl();
-        PcepPacketStats pktStats = new PcepPacketStatsImpl();
-
-        pc.init(pccId, PcepVersion.PCEP_1, pktStats);
-        pc.setChannel(channel);
-        pc.setAgent(controllerImpl.agent());
-        pc.setConnected(true);
-        pc.setCapability(new ClientCapability(true, true, true, true, true));
-
-        controllerImpl.agent().addConnectedClient(pccId, pc);
-        controllerImpl.processClientMessage(pccId, message);
-
-        pc.setLspDbSyncStatus(PcepSyncStatus.SYNCED);
-        pc.setLabelDbSyncStatus(PcepSyncStatus.IN_SYNC);
-        pc.setLabelDbSyncStatus(PcepSyncStatus.SYNCED);
-    }
-
-    class PcepEventListenerAdapter implements PcepEventListener {
-
-        public List<PcepMessage> handledMsg = new ArrayList<>();
-        public List<Tunnel> tunnelsToBeUpdatedToNw = new ArrayList<>();
-        public List<Tunnel> deletedFromNwTunnels = new ArrayList<>();
-
-        @Override
-        public void handleMessage(PccId pccId, PcepMessage msg) {
-            handledMsg.add(msg);
-        }
-
-        @Override
-        public void handleEndOfSyncAction(Tunnel tunnel, PcepLspSyncAction endOfSyncAction) {
-            if (endOfSyncAction == SEND_UPDATE) {
-                tunnelsToBeUpdatedToNw.add(tunnel);
-                return;
-            } else if (endOfSyncAction == UNSTABLE) {
-                deletedFromNwTunnels.add(tunnel);
-            }
-        }
-    }
-
-    class MockChannel implements Channel {
-        private List<PcepMessage> msgOnWire = new ArrayList<>();
-
-        @Override
-        public ChannelFuture write(Object o) {
-            if (o instanceof List<?>) {
-                @SuppressWarnings("unchecked")
-                List<PcepMessage> msgs = (List<PcepMessage>) o;
-                for (PcepMessage msg : msgs) {
-                    if (msg instanceof PcepInitiateMsg) {
-                        msgOnWire.add(msg);
-                    }
-                }
-            }
-            return null;
-        }
-
-        public List<PcepMessage> msgsWritten() {
-            return msgOnWire;
-        }
-
-        @Override
-        public int compareTo(Channel o) {
-            // TODO Auto-generated method stub
-            return 0;
-        }
-
-        @Override
-        public Integer getId() {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public ChannelFactory getFactory() {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public Channel getParent() {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public ChannelConfig getConfig() {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public ChannelPipeline getPipeline() {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public boolean isOpen() {
-            // TODO Auto-generated method stub
-            return false;
-        }
-
-        @Override
-        public boolean isBound() {
-            // TODO Auto-generated method stub
-            return false;
-        }
-
-        @Override
-        public boolean isConnected() {
-            // TODO Auto-generated method stub
-            return false;
-        }
-
-        @Override
-        public SocketAddress getLocalAddress() {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public SocketAddress getRemoteAddress() {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public ChannelFuture write(Object message, SocketAddress remoteAddress) {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public ChannelFuture bind(SocketAddress localAddress) {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public ChannelFuture connect(SocketAddress remoteAddress) {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public ChannelFuture disconnect() {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public ChannelFuture unbind() {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public ChannelFuture close() {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public ChannelFuture getCloseFuture() {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public int getInterestOps() {
-            // TODO Auto-generated method stub
-            return 0;
-        }
-
-        @Override
-        public boolean isReadable() {
-            // TODO Auto-generated method stub
-            return false;
-        }
-
-        @Override
-        public boolean isWritable() {
-            // TODO Auto-generated method stub
-            return false;
-        }
-
-        @Override
-        public ChannelFuture setInterestOps(int interestOps) {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public ChannelFuture setReadable(boolean readable) {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public boolean getUserDefinedWritability(int index) {
-            // TODO Auto-generated method stub
-            return false;
-        }
-
-        @Override
-        public void setUserDefinedWritability(int index, boolean isWritable) {
-            // TODO Auto-generated method stub
-
-        }
-
-        @Override
-        public Object getAttachment() {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public void setAttachment(Object attachment) {
-            // TODO Auto-generated method stub
-
-        }
-    }
-
-    class MockTunnelService implements TunnelService {
-        private HashMap<TunnelId, Tunnel> tunnelIdAsKeyStore = new HashMap<TunnelId, Tunnel>();
-        private int tunnelIdCounter = 0;
-
-        @Override
-        public TunnelId setupTunnel(ApplicationId producerId, ElementId srcElementId, Tunnel tunnel, Path path) {
-            TunnelId tunnelId = TunnelId.valueOf(String.valueOf(++tunnelIdCounter));
-            Tunnel tunnelToInsert = new DefaultTunnel(tunnel.providerId(), tunnel.src(), tunnel.dst(), tunnel.type(),
-                                                      tunnel.state(), tunnel.groupId(), tunnelId, tunnel.tunnelName(),
-                                                      path, tunnel.annotations());
-            tunnelIdAsKeyStore.put(tunnelId, tunnelToInsert);
-            return tunnelId;
-        }
-
-        @Override
-        public Tunnel queryTunnel(TunnelId tunnelId) {
-            for (TunnelId tunnelIdKey : tunnelIdAsKeyStore.keySet()) {
-                if (tunnelIdKey.equals(tunnelId)) {
-                    return tunnelIdAsKeyStore.get(tunnelId);
-                }
-            }
-            return null;
-        }
-
-        @Override
-        public Collection<Tunnel> queryTunnel(TunnelEndPoint src, TunnelEndPoint dst) {
-            Collection<Tunnel> result = new HashSet<Tunnel>();
-            Tunnel tunnel = null;
-            for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) {
-                tunnel = tunnelIdAsKeyStore.get(tunnelId);
-
-                if ((null != tunnel) && (src.equals(tunnel.src())) && (dst.equals(tunnel.dst()))) {
-                    result.add(tunnel);
-                }
-            }
-
-            return result.size() == 0 ? Collections.emptySet() : ImmutableSet.copyOf(result);
-        }
-
-        @Override
-        public Collection<Tunnel> queryTunnel(Tunnel.Type type) {
-            Collection<Tunnel> result = new HashSet<Tunnel>();
-
-            for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) {
-                result.add(tunnelIdAsKeyStore.get(tunnelId));
-            }
-
-            return result.size() == 0 ? Collections.emptySet() : ImmutableSet.copyOf(result);
-        }
-
-        @Override
-        public Collection<Tunnel> queryAllTunnels() {
-            Collection<Tunnel> result = new HashSet<Tunnel>();
-
-            for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) {
-                result.add(tunnelIdAsKeyStore.get(tunnelId));
-            }
-
-            return result.size() == 0 ? Collections.emptySet() : ImmutableSet.copyOf(result);
-        }
-
-        @Override
-        public void addListener(TunnelListener listener) {
-            // TODO Auto-generated method stub
-
-        }
-
-        @Override
-        public void removeListener(TunnelListener listener) {
-            // TODO Auto-generated method stub
-
-        }
-
-        @Override
-        public Tunnel borrowTunnel(ApplicationId consumerId, TunnelId tunnelId, Annotations... annotations) {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public Collection<Tunnel> borrowTunnel(ApplicationId consumerId, TunnelName tunnelName,
-                                               Annotations... annotations) {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public Collection<Tunnel> borrowTunnel(ApplicationId consumerId, TunnelEndPoint src, TunnelEndPoint dst,
-                                               Annotations... annotations) {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public Collection<Tunnel> borrowTunnel(ApplicationId consumerId, TunnelEndPoint src, TunnelEndPoint dst,
-                                               Type type, Annotations... annotations) {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public boolean downTunnel(ApplicationId producerId, TunnelId tunnelId) {
-            // TODO Auto-generated method stub
-            return false;
-        }
-
-        @Override
-        public boolean returnTunnel(ApplicationId consumerId, TunnelId tunnelId, Annotations... annotations) {
-            // TODO Auto-generated method stub
-            return false;
-        }
-
-        @Override
-        public boolean returnTunnel(ApplicationId consumerId, TunnelName tunnelName, Annotations... annotations) {
-            // TODO Auto-generated method stub
-            return false;
-        }
-
-        @Override
-        public boolean returnTunnel(ApplicationId consumerId, TunnelEndPoint src, TunnelEndPoint dst, Type type,
-                                    Annotations... annotations) {
-            // TODO Auto-generated method stub
-            return false;
-        }
-
-        @Override
-        public boolean returnTunnel(ApplicationId consumerId, TunnelEndPoint src, TunnelEndPoint dst,
-                                    Annotations... annotations) {
-            // TODO Auto-generated method stub
-            return false;
-        }
-
-        @Override
-        public Collection<TunnelSubscription> queryTunnelSubscription(ApplicationId consumerId) {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        @Override
-        public int tunnelCount() {
-            // TODO Auto-generated method stub
-            return 0;
-        }
-
-        @Override
-        public Iterable<Tunnel> getTunnels(DeviceId deviceId) {
-            // TODO Auto-generated method stub
-            return null;
-        }
-    }
-
-    private class TestPcepClientControllerImpl extends PcepClientControllerImpl {
-        public void setTunnelService(TunnelService tunnelService) {
-            this.tunnelService = tunnelService;
-        }
-
-        public PcepAgent agent() {
-            return this.agent;
-        }
-    }
-}
diff --git a/providers/bgp/BUILD b/providers/bgp/BUILD
deleted file mode 100644
index b47739a..0000000
--- a/providers/bgp/BUILD
+++ /dev/null
@@ -1,22 +0,0 @@
-BUNDLES = [
-    "//providers/bgp/cfg:onos-providers-bgp-cfg",
-    "//providers/bgp/topology:onos-providers-bgp-topology",
-    "//providers/bgp/route:onos-providers-bgp-route",
-    "//providers/bgp/cli:onos-providers-bgp-cli",
-    "//protocols/bgp/api:onos-protocols-bgp-api",
-    "//protocols/bgp/ctl:onos-protocols-bgp-ctl",
-    "//protocols/bgp/bgpio:onos-protocols-bgp-bgpio",
-]
-
-onos_app(
-    category = "Provider",
-    description = "BGP protocol southbound providers.",
-    included_bundles = BUNDLES,
-    required_apps = [
-        "org.onosproject.evpn-route-service",
-        "org.onosproject.tunnel",
-        "org.onosproject.pcep-api",
-    ],
-    title = "BGP Provider",
-    url = "http://onosproject.org",
-)
diff --git a/providers/bgp/cfg/BUILD b/providers/bgp/cfg/BUILD
deleted file mode 100644
index da88670..0000000
--- a/providers/bgp/cfg/BUILD
+++ /dev/null
@@ -1,7 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + JACKSON + [
-    "//protocols/bgp/api:onos-protocols-bgp-api",
-]
-
-osgi_jar_with_tests(
-    deps = COMPILE_DEPS,
-)
diff --git a/providers/bgp/cfg/src/main/java/org/onosproject/provider/bgp/cfg/impl/BgpAppConfig.java b/providers/bgp/cfg/src/main/java/org/onosproject/provider/bgp/cfg/impl/BgpAppConfig.java
deleted file mode 100644
index d090420..0000000
--- a/providers/bgp/cfg/src/main/java/org/onosproject/provider/bgp/cfg/impl/BgpAppConfig.java
+++ /dev/null
@@ -1,498 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.provider.bgp.cfg.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.packet.IpAddress;
-import org.onosproject.bgp.controller.BgpCfg;
-import org.onosproject.bgp.controller.BgpController;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.config.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.net.config.Config.FieldPresence.MANDATORY;
-import static org.onosproject.net.config.Config.FieldPresence.OPTIONAL;
-
-/**
- * Configuration object for BGP.
- */
-public class BgpAppConfig extends Config<ApplicationId> {
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    BgpController bgpController;
-
-    BgpCfg bgpConfig = null;
-
-    protected final Logger log = LoggerFactory.getLogger(BgpAppConfig.class);
-    public static final String ROUTER_ID = "routerId";
-    public static final String LOCAL_AS = "localAs";
-    public static final String MAX_SESSION = "maxSession";
-    public static final String LS_CAPABILITY = "lsCapability";
-    public static final String HOLD_TIME = "holdTime";
-    public static final String LARGE_AS_CAPABILITY = "largeAsCapability";
-    public static final String FLOW_SPEC_CAPABILITY = "flowSpecCapability";
-    public static final String FLOW_SPEC_RPD_CAPABILITY = "flowSpecRpdCapability";
-    public static final String EVPN_CAPABILITY = "evpnCapability";
-
-    public static final String BGP_PEER = "bgpPeer";
-    public static final String PEER_IP = "peerIp";
-    public static final String REMOTE_AS = "remoteAs";
-    public static final String PEER_HOLD_TIME = "peerHoldTime";
-    public static final String PEER_CONNECT_MODE = "connectMode";
-    public static final String PEER_CONNECT_PASSIVE = "passive";
-    public static final String PEER_CONNECT_ACTIVE = "active";
-
-    public static final String CONNECTION_TYPE = "connectionType";
-    public static final String CONNECTION_TYPE_IPV4 = "IPV4";
-    public static final String CONNECTION_TYPE_IPV6 = "IPV6";
-    public static final String CONNECTION_TYPE_IPV4_AND_IPV6 = "IPV4_IPV6";
-
-    public static final String ROUTE_REFRESH_ENABLED = "routeRefreshEnabled";
-    public static final String RR_PERIODIC_TIMER = "rrPeriodicTimer";
-    public static final String RR_COOLDOWN_TIMER = "rrCooldownTimer";
-    public static final String RR_WARMUP_TIMER = "rrWarmupTimer";
-
-    static final int MAX_SHORT_AS_NUMBER = 65535;
-    static final long MAX_LONG_AS_NUMBER = 4294967295L;
-
-    static final int MIN_SESSION_NUMBER = 1;
-    static final long MAX_SESSION_NUMBER = 21;
-
-    static final int MIN_HOLDTIME = 0;
-    static final long MAX_HOLDTIME = 65535;
-
-    static final String RR_ENABLED_DEFAULT_VALUE = "false";
-    static final String PERIODIC_TIMER_DEFAULT_VALUE = "1800"; //30 minutes
-    static final String COOLDOWN_TIMER_DEFAULT_VALUE = "300"; //5 minutes
-    static final String WARMUP_TIMER_DEFAULT_VALUE = "30"; //30 seconds
-
-    static final long MIN_PERIODIC_TIMER = 1;
-    static final long MAX_PERIODIC_TIMER = Integer.MAX_VALUE;
-    static final long MIN_COOLDOWN_TIMER = 1;
-    static final long MAX_COOLDOWN_TIMER = Integer.MAX_VALUE;
-    static final long MIN_WARMUP_TIMER = 1;
-    static final long MAX_WARMUP_TIMER = Integer.MAX_VALUE;
-
-    @Override
-    public boolean isValid() {
-        boolean fields = false;
-
-        this.bgpController = DefaultServiceDirectory.getService(BgpController.class);
-        bgpConfig = bgpController.getConfig();
-
-        fields = hasOnlyFields(ROUTER_ID, LOCAL_AS, MAX_SESSION, LS_CAPABILITY,
-                               HOLD_TIME, LARGE_AS_CAPABILITY, FLOW_SPEC_CAPABILITY,
-                               FLOW_SPEC_RPD_CAPABILITY, BGP_PEER, EVPN_CAPABILITY, CONNECTION_TYPE,
-                               ROUTE_REFRESH_ENABLED, RR_PERIODIC_TIMER, RR_COOLDOWN_TIMER, RR_WARMUP_TIMER) &&
-                isIpAddress(ROUTER_ID, MANDATORY) && isNumber(LOCAL_AS, MANDATORY) &&
-                isNumber(MAX_SESSION, OPTIONAL, MIN_SESSION_NUMBER, MAX_SESSION_NUMBER)
-                && isNumber(HOLD_TIME, OPTIONAL, MIN_HOLDTIME, MAX_HOLDTIME) &&
-                isBoolean(LS_CAPABILITY, OPTIONAL) && isBoolean(LARGE_AS_CAPABILITY, OPTIONAL) &&
-                isString(FLOW_SPEC_CAPABILITY, OPTIONAL) && isBoolean(FLOW_SPEC_RPD_CAPABILITY, OPTIONAL)
-                && isBoolean(EVPN_CAPABILITY, OPTIONAL) && isString(CONNECTION_TYPE, OPTIONAL)
-                && isBoolean(ROUTE_REFRESH_ENABLED, OPTIONAL)
-                && isNumber(RR_PERIODIC_TIMER, OPTIONAL, MIN_PERIODIC_TIMER, MAX_PERIODIC_TIMER)
-                && isNumber(RR_COOLDOWN_TIMER, OPTIONAL, MIN_COOLDOWN_TIMER, MAX_COOLDOWN_TIMER)
-                && isNumber(RR_WARMUP_TIMER, OPTIONAL, MIN_WARMUP_TIMER, MAX_WARMUP_TIMER);
-
-        if (!fields) {
-            return fields;
-        }
-
-        return validateBgpConfiguration();
-    }
-
-    /**
-     * Returns routerId from the configuration.
-     *
-     * @return routerId
-     */
-    public String routerId() {
-        return get(ROUTER_ID, null);
-    }
-
-    /**
-     * Returns localAs number from the configuration.
-     *
-     * @return local As number
-     */
-    public int localAs() {
-        return Integer.parseInt(get(LOCAL_AS, null));
-    }
-
-    /**
-     * Returns max session from the configuration.
-     *
-     * @return max session
-     */
-    public int maxSession() {
-        return Integer.parseInt(get(MAX_SESSION, null));
-    }
-
-    /**
-     * Returns BGP-LS capability support from the configuration.
-     *
-     * @return true if BGP-LS capability is set else false
-     */
-    public boolean lsCapability() {
-        return Boolean.parseBoolean(get(LS_CAPABILITY, null));
-    }
-
-    /**
-     * Returns flow spec route policy distribution capability support from the configuration.
-     *
-     * @return true if flow spec route policy distribution capability is set otherwise false
-     */
-    public boolean rpdCapability() {
-        return Boolean.parseBoolean(get(FLOW_SPEC_RPD_CAPABILITY, null));
-    }
-
-    /**
-     * Returns largeAs capability support from the configuration.
-     *
-     * @return largeAs capability
-     */
-    public boolean largeAsCapability() {
-        return Boolean.parseBoolean(get(LARGE_AS_CAPABILITY, null));
-    }
-
-    /**
-     * Returns flow specification capability support from the configuration.
-     *
-     * @return flow specification capability
-     */
-    public String flowSpecCapability() {
-        return get(FLOW_SPEC_CAPABILITY, null);
-    }
-
-    /**
-     * Returns holdTime of the local node from the configuration.
-     *
-     * @return holdTime
-     */
-    public short holdTime() {
-        return Short.parseShort(get(HOLD_TIME, null));
-    }
-
-    /**
-     * Returns BGP connection type from the configuration.
-     *
-     * @return BGP connection type
-     */
-    public String connectionType() {
-        return get(CONNECTION_TYPE, null);
-    }
-
-    /**
-     * Returns if route refresh is enabled in the configuration.
-     *
-     * @return route refresh enabled
-     */
-    public boolean routeRefreshEnabled() {
-        return Boolean.parseBoolean(get(ROUTE_REFRESH_ENABLED, RR_ENABLED_DEFAULT_VALUE));
-    }
-
-    /**
-     * Returns value of route refresh periodic timer from the configuration.
-     *
-     * @return route refresh periodic timer
-     */
-    public long rrPeriodicTimer() {
-        return Long.parseLong(get(RR_PERIODIC_TIMER, PERIODIC_TIMER_DEFAULT_VALUE));
-    }
-
-    /**
-     * Returns value of route refresh warmup timer from the configuration.
-     *
-     * @return route refresh warmup timer
-     */
-    public long rrWarmupTimer() {
-        return Long.parseLong(get(RR_WARMUP_TIMER, WARMUP_TIMER_DEFAULT_VALUE));
-    }
-
-    /**
-     * Returns value of route refresh cooldown timer from the configuration.
-     *
-     * @return route refresh cooldown timer
-     */
-    public long rrCooldownTimer() {
-        return Long.parseLong(get(RR_COOLDOWN_TIMER, COOLDOWN_TIMER_DEFAULT_VALUE));
-    }
-
-    /**
-     * Validates the BGP connection type.
-     *
-     * @return true if valid else false
-     */
-    public boolean validateConnectionType() {
-        if (connectionType() != null) {
-            String connectionType = connectionType();
-            if (!connectionType.equals(CONNECTION_TYPE_IPV4) && !connectionType.equals(CONNECTION_TYPE_IPV6)
-                    && !connectionType.equals(CONNECTION_TYPE_IPV4_AND_IPV6)) {
-                log.error("Connection Type is invalid");
-                return false;
-            }
-        }
-        log.debug("Connection Type is valid");
-        return true;
-    }
-
-    /**
-     * Validates the flow specification capability.
-     *
-     * @return true if valid else false
-     */
-    public boolean validateFlowSpec() {
-        if (flowSpecCapability() != null) {
-            String flowSpec = flowSpecCapability();
-            if ((!flowSpec.equals("IPV4")) && (!flowSpec.equals("VPNV4")) && (!flowSpec.equals("IPV4_VPNV4"))) {
-                log.debug("Flow specification capabality is false");
-                return false;
-            }
-        }
-        log.debug("Flow specification capabality is true");
-        return true;
-    }
-
-    /**
-     * Returns evpn capability support from the configuration.
-     *
-     * @return evpn capability
-     */
-    public boolean evpnCapability() {
-        return Boolean.parseBoolean(get(EVPN_CAPABILITY, null));
-    }
-
-    /**
-     * Validates the hold time value.
-     *
-     * @return true if valid else false
-     */
-    public boolean validateHoldTime() {
-        if (holdTime() != 0) {
-            short holdTime = holdTime();
-            if ((holdTime == 1) || (holdTime == 2)) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Validates the Bgp local and peer configuration.
-     *
-     * @return true if valid else false
-     */
-    public boolean validateBgpConfiguration() {
-
-        if (!validateLocalAs()) {
-            return false;
-        }
-
-        if (!validateRouterId()) {
-            return false;
-        }
-
-        if (!validateBgpPeers()) {
-            return false;
-        }
-
-        if (!validateFlowSpec()) {
-            return false;
-        }
-
-        if (!validateHoldTime()) {
-            return false;
-        }
-
-        if (!validateConnectionType()) {
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Validates the Bgp As number.
-     *
-     * @return true if valid else false
-     */
-    public boolean validateLocalAs() {
-
-        long localAs = 0;
-        localAs = localAs();
-
-        if (largeAsCapability()) {
-
-            if (localAs == 0 || localAs >= MAX_LONG_AS_NUMBER) {
-                return false;
-            }
-        } else {
-            if (localAs == 0 || localAs >= MAX_SHORT_AS_NUMBER) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Validates the Bgp peer As number.
-     *
-     * @param remoteAs remote As number
-     * @return true if valid else false
-     */
-    public boolean validateRemoteAs(long remoteAs) {
-        if (largeAsCapability()) {
-
-            if (remoteAs == 0 || remoteAs >= MAX_LONG_AS_NUMBER) {
-                return false;
-            }
-        } else {
-            if (remoteAs == 0 || remoteAs >= MAX_SHORT_AS_NUMBER) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Validates the Bgp Router ID configuration.
-     *
-     * @return true if valid else false
-     */
-    public boolean validateRouterId() {
-        String routerId = routerId();
-        // TODO: router ID validation
-        return true;
-    }
-
-    /**
-     * Validates the Bgp peer holdTime.
-     *
-     * @param remoteAs remote As number
-     * @return true if valid else false
-     */
-    public boolean validatePeerHoldTime(long remoteAs) {
-        //TODO:Validate it later..
-        return true;
-    }
-
-    /**
-     * Validates the Bgp peer configuration.
-     *
-     * @return true if valid else false
-     */
-    public boolean validateBgpPeers() {
-        List<BgpPeerConfig> nodes;
-        String connectMode;
-
-        nodes = bgpPeer();
-        for (int i = 0; i < nodes.size(); i++) {
-            connectMode = nodes.get(i).connectMode();
-            if ((IpAddress.valueOf(nodes.get(i).hostname()) == null) ||
-                    !validateRemoteAs(nodes.get(i).asNumber()) ||
-                    !validatePeerHoldTime(nodes.get(i).holdTime()) ||
-                    !(connectMode.equals(PEER_CONNECT_ACTIVE) || connectMode.equals(PEER_CONNECT_PASSIVE))) {
-                log.debug("BGP peer configration false");
-                return false;
-            }
-        }
-        log.debug("BGP peer configration true");
-        return true;
-    }
-
-    /**
-     * Returns the set of nodes read from network config.
-     *
-     * @return list of BgpPeerConfig or null
-     */
-    public List<BgpPeerConfig> bgpPeer() {
-        List<BgpPeerConfig> nodes = new ArrayList<BgpPeerConfig>();
-        JsonNode jsonNodes = object.get(BGP_PEER);
-        if (jsonNodes == null) {
-            return null;
-        }
-
-        jsonNodes.forEach(jsonNode -> nodes.add(new BgpPeerConfig(
-                jsonNode.path(PEER_IP).asText(),
-                jsonNode.path(REMOTE_AS).asInt(),
-                jsonNode.path(PEER_HOLD_TIME).asInt(),
-                jsonNode.path(PEER_CONNECT_MODE).asText())));
-
-        return nodes;
-    }
-
-    /**
-     * Configuration for Bgp peer nodes.
-     */
-    public static class BgpPeerConfig {
-
-        private final String hostname;
-        private final int asNumber;
-        private final short holdTime;
-        private final String connectMode;
-
-        public BgpPeerConfig(String hostname, int asNumber, int holdTime, String connectMode) {
-            this.hostname = checkNotNull(hostname);
-            this.asNumber = asNumber;
-            this.holdTime = (short) holdTime;
-            this.connectMode = connectMode;
-        }
-
-        /**
-         * Returns hostname of the peer node.
-         *
-         * @return hostname
-         */
-        public String hostname() {
-            return this.hostname;
-        }
-
-        /**
-         * Returns asNumber if peer.
-         *
-         * @return asNumber
-         */
-        public int asNumber() {
-            return this.asNumber;
-        }
-
-        /**
-         * Returns holdTime of the peer node.
-         *
-         * @return holdTime
-         */
-        public short holdTime() {
-            return this.holdTime;
-        }
-
-        /**
-         * Returns connection mode for the peer node.
-         *
-         * @return active or passive connection
-         */
-        public String connectMode() {
-            return this.connectMode;
-        }
-    }
-}
diff --git a/providers/bgp/cfg/src/main/java/org/onosproject/provider/bgp/cfg/impl/BgpCfgProvider.java b/providers/bgp/cfg/src/main/java/org/onosproject/provider/bgp/cfg/impl/BgpCfgProvider.java
deleted file mode 100644
index 798c0a2..0000000
--- a/providers/bgp/cfg/src/main/java/org/onosproject/provider/bgp/cfg/impl/BgpCfgProvider.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.provider.bgp.cfg.impl;
-
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-
-import org.onosproject.bgp.controller.BgpCfg;
-import org.onosproject.bgp.controller.BgpPeerCfg;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.net.config.ConfigFactory;
-import org.onosproject.net.config.NetworkConfigEvent;
-import org.onosproject.net.config.NetworkConfigListener;
-import org.onosproject.net.config.NetworkConfigRegistry;
-import org.onosproject.net.config.NetworkConfigService;
-import org.onosproject.net.config.basics.SubjectFactories;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.bgp.controller.BgpController;
-import org.slf4j.Logger;
-import org.osgi.service.component.ComponentContext;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * BGP config provider to validate and populate the configuration.
- */
-@Component(immediate = true)
-public class BgpCfgProvider extends AbstractProvider {
-
-    private static final Logger log = getLogger(BgpCfgProvider.class);
-
-    static final String PROVIDER_ID = "org.onosproject.provider.bgp.cfg";
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected BgpController bgpController;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigRegistry configRegistry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigService configService;
-
-    private final ConfigFactory configFactory =
-            new ConfigFactory(SubjectFactories.APP_SUBJECT_FACTORY, BgpAppConfig.class, "bgpapp") {
-                @Override
-                public BgpAppConfig createConfig() {
-                    return new BgpAppConfig();
-                }
-            };
-
-    private final NetworkConfigListener configListener = new InternalConfigListener();
-
-    private ApplicationId appId;
-
-    /**
-     * Creates a Bgp config provider.
-     */
-    public BgpCfgProvider() {
-        super(new ProviderId("bgp", PROVIDER_ID));
-    }
-
-    @Activate
-    public void activate(ComponentContext context) {
-        appId = coreService.registerApplication(PROVIDER_ID);
-        configService.addListener(configListener);
-        configRegistry.registerConfigFactory(configFactory);
-        readConfiguration();
-        log.info("BGP cfg provider started");
-    }
-
-    @Deactivate
-    public void deactivate(ComponentContext context) {
-        configRegistry.unregisterConfigFactory(configFactory);
-        configService.removeListener(configListener);
-    }
-
-    void setBgpController(BgpController bgpController) {
-        this.bgpController = bgpController;
-    }
-
-    /**
-     * Reads the configuration and set it to the BGP-LS south bound protocol.
-     */
-    private void readConfiguration() {
-        BgpCfg bgpConfig = null;
-        List<BgpAppConfig.BgpPeerConfig> nodes;
-        bgpConfig = bgpController.getConfig();
-        BgpAppConfig config = configRegistry.getConfig(appId, BgpAppConfig.class);
-
-        if (config == null) {
-            log.warn("No configuration found");
-            return;
-        }
-
-        /*Set the configuration */
-        bgpConfig.setRouterId(config.routerId());
-        bgpConfig.setAsNumber(config.localAs());
-        bgpConfig.setLsCapability(config.lsCapability());
-        bgpConfig.setHoldTime(config.holdTime());
-        bgpConfig.setMaxSession(config.maxSession());
-        bgpConfig.setLargeASCapability(config.largeAsCapability());
-        bgpConfig.setEvpnCapability(config.evpnCapability());
-
-        if (config.flowSpecCapability() == null) {
-            bgpConfig.setFlowSpecCapability(BgpCfg.FlowSpec.NONE);
-        } else {
-            if (config.flowSpecCapability().equals("IPV4")) {
-                bgpConfig.setFlowSpecCapability(BgpCfg.FlowSpec.IPV4);
-            } else if (config.flowSpecCapability().equals("VPNV4")) {
-                bgpConfig.setFlowSpecCapability(BgpCfg.FlowSpec.VPNV4);
-            } else if (config.flowSpecCapability().equals("IPV4_VPNV4")) {
-                bgpConfig.setFlowSpecCapability(BgpCfg.FlowSpec.IPV4_VPNV4);
-            } else {
-                bgpConfig.setFlowSpecCapability(BgpCfg.FlowSpec.NONE);
-            }
-        }
-        bgpConfig.setFlowSpecRpdCapability(config.rpdCapability());
-
-        nodes = config.bgpPeer();
-        for (int i = 0; i < nodes.size(); i++) {
-            String connectMode = nodes.get(i).connectMode();
-            bgpConfig.addPeer(nodes.get(i).hostname(), nodes.get(i).asNumber(), nodes.get(i).holdTime());
-            if (connectMode.equals(BgpAppConfig.PEER_CONNECT_ACTIVE)) {
-                bgpConfig.connectPeer(nodes.get(i).hostname());
-            }
-        }
-
-        bgpConfig.setConnectionType(getBgpConnectionTypeFromConfig(config));
-
-        bgpConfig.setRouteRefreshEnabled(config.routeRefreshEnabled());
-        bgpConfig.setRouteRefreshPeriodicTimer(config.rrPeriodicTimer());
-        bgpConfig.setRouteRefreshWarmupTimer(config.rrWarmupTimer());
-        bgpConfig.setRouteRefreshCooldownTimer(config.rrCooldownTimer());
-    }
-
-    /**
-     * Read the configuration and update it to the BGP-LS south bound protocol.
-     */
-    private void updateConfiguration() {
-        BgpCfg bgpConfig = null;
-        List<BgpAppConfig.BgpPeerConfig> nodes;
-        TreeMap<String, BgpPeerCfg> bgpPeerTree;
-        bgpConfig = bgpController.getConfig();
-        BgpPeerCfg peer = null;
-        BgpAppConfig config = configRegistry.getConfig(appId, BgpAppConfig.class);
-
-        if (config == null) {
-            log.warn("No configuration found");
-            return;
-        }
-
-
-        /* Update the self configuration */
-        if (bgpController.connectedPeerCount() != 0) {
-            //TODO: If connections already exist, disconnect
-            bgpController.closeConnectedPeers();
-        }
-        bgpConfig.setRouterId(config.routerId());
-        bgpConfig.setAsNumber(config.localAs());
-        bgpConfig.setLsCapability(config.lsCapability());
-        bgpConfig.setHoldTime(config.holdTime());
-        bgpConfig.setMaxSession(config.maxSession());
-        bgpConfig.setLargeASCapability(config.largeAsCapability());
-
-        if (config.flowSpecCapability() == null) {
-            bgpConfig.setFlowSpecCapability(BgpCfg.FlowSpec.NONE);
-        } else {
-            if (config.flowSpecCapability().equals("IPV4")) {
-                bgpConfig.setFlowSpecCapability(BgpCfg.FlowSpec.IPV4);
-            } else if (config.flowSpecCapability().equals("VPNV4")) {
-                bgpConfig.setFlowSpecCapability(BgpCfg.FlowSpec.VPNV4);
-            } else if (config.flowSpecCapability().equals("IPV4_VPNV4")) {
-                bgpConfig.setFlowSpecCapability(BgpCfg.FlowSpec.IPV4_VPNV4);
-            } else {
-                bgpConfig.setFlowSpecCapability(BgpCfg.FlowSpec.NONE);
-            }
-        }
-        bgpConfig.setFlowSpecRpdCapability(config.rpdCapability());
-
-        /* update the peer configuration */
-        bgpPeerTree = bgpConfig.getPeerTree();
-        if (bgpPeerTree.isEmpty()) {
-            log.info("There are no BGP peers to iterate");
-        } else {
-            Set set = bgpPeerTree.entrySet();
-            Iterator i = set.iterator();
-            List<BgpPeerCfg> absPeerList = new ArrayList<BgpPeerCfg>();
-
-            boolean exists = false;
-
-            while (i.hasNext()) {
-                Map.Entry me = (Map.Entry) i.next();
-                peer = (BgpPeerCfg) me.getValue();
-
-                nodes = config.bgpPeer();
-                for (int j = 0; j < nodes.size(); j++) {
-                    String peerIp = nodes.get(j).hostname();
-                    if (peerIp.equals(peer.getPeerRouterId())) {
-
-                        if (bgpConfig.isPeerConnectable(peer.getPeerRouterId())) {
-                            peer.setAsNumber(nodes.get(j).asNumber());
-                            peer.setHoldtime(nodes.get(j).holdTime());
-                            log.debug("Peer neighbor IP successfully modified :" + peer.getPeerRouterId());
-                        } else {
-                            log.debug("Peer neighbor IP cannot be modified :" + peer.getPeerRouterId());
-                        }
-
-                        nodes.remove(j);
-                        exists = true;
-                        break;
-                    }
-                }
-
-                if (!exists) {
-                    absPeerList.add(peer);
-                    exists = false;
-                }
-
-                if (peer.connectPeer() != null) {
-                    peer.connectPeer().disconnectPeer();
-                    peer.setConnectPeer(null);
-                }
-            }
-
-            /* Remove the absent nodes. */
-            for (int j = 0; j < absPeerList.size(); j++) {
-                bgpConfig.removePeer(absPeerList.get(j).getPeerRouterId());
-            }
-        }
-
-
-        nodes = config.bgpPeer();
-        for (int i = 0; i < nodes.size(); i++) {
-            String connectMode = nodes.get(i).connectMode();
-            bgpConfig.addPeer(nodes.get(i).hostname(), nodes.get(i).asNumber(), nodes.get(i).holdTime());
-            if (connectMode.equals(BgpAppConfig.PEER_CONNECT_ACTIVE)) {
-                bgpConfig.connectPeer(nodes.get(i).hostname());
-            }
-        }
-
-        bgpConfig.setConnectionType(getBgpConnectionTypeFromConfig(config));
-
-        bgpConfig.setRouteRefreshEnabled(config.routeRefreshEnabled());
-        bgpConfig.setRouteRefreshPeriodicTimer(config.rrPeriodicTimer());
-        bgpConfig.setRouteRefreshWarmupTimer(config.rrWarmupTimer());
-        bgpConfig.setRouteRefreshCooldownTimer(config.rrCooldownTimer());
-    }
-
-    /**
-    * Function to get Bgp Connection type from config.
-    * @param config The BgpAppConfig from which connection type is to be fetched
-    * @return Bgp connection type
-    */
-    private BgpCfg.ConnectionType getBgpConnectionTypeFromConfig(BgpAppConfig config) {
-        //config cannot be null here, because of the function call sequence
-
-        //But, let's put a sanity check for connectionType
-        if (null == config.connectionType()) {
-            //IPv4 is the default connection type
-            return BgpCfg.ConnectionType.IPV4;
-        }
-
-        if (config.connectionType().equals(BgpAppConfig.CONNECTION_TYPE_IPV4)) {
-            return BgpCfg.ConnectionType.IPV6;
-        } else if (config.connectionType().equals(BgpAppConfig.CONNECTION_TYPE_IPV4_AND_IPV6)) {
-            return BgpCfg.ConnectionType.IPV4_IPV6;
-        } else {
-            return BgpCfg.ConnectionType.IPV4;
-        }
-    }
-
-    /**
-     * BGP config listener to populate the configuration.
-     */
-    private class InternalConfigListener implements NetworkConfigListener {
-
-        @Override
-        public void event(NetworkConfigEvent event) {
-            if (!event.configClass().equals(BgpAppConfig.class)) {
-                return;
-            }
-
-            switch (event.type()) {
-                case CONFIG_ADDED:
-                    readConfiguration();
-                    break;
-                case CONFIG_UPDATED:
-                    updateConfiguration();
-                    break;
-                case CONFIG_REMOVED:
-                default:
-                    break;
-            }
-        }
-    }
-}
diff --git a/providers/bgp/cfg/src/main/java/org/onosproject/provider/bgp/cfg/impl/package-info.java b/providers/bgp/cfg/src/main/java/org/onosproject/provider/bgp/cfg/impl/package-info.java
deleted file mode 100644
index d14447a..0000000
--- a/providers/bgp/cfg/src/main/java/org/onosproject/provider/bgp/cfg/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- *Bgp configuration provider.
- */
-package org.onosproject.provider.bgp.cfg.impl;
diff --git a/providers/bgp/cli/BUILD b/providers/bgp/cli/BUILD
deleted file mode 100644
index 5a6b1e6..0000000
--- a/providers/bgp/cli/BUILD
+++ /dev/null
@@ -1,12 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + CLI + [
-    "//providers/bgp/cfg:onos-providers-bgp-cfg",
-    "//providers/bgp/topology:onos-providers-bgp-topology",
-    "//protocols/bgp/api:onos-protocols-bgp-api",
-    "//protocols/bgp/ctl:onos-protocols-bgp-ctl",
-    "//protocols/bgp/bgpio:onos-protocols-bgp-bgpio",
-]
-
-osgi_jar_with_tests(
-    karaf_command_packages = ["org.onosproject.bgp.cli"],
-    deps = COMPILE_DEPS,
-)
diff --git a/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpConfiguration.java b/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpConfiguration.java
deleted file mode 100644
index 3123001..0000000
--- a/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpConfiguration.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.bgp.cli;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.bgp.controller.BgpCfg;
-import org.onosproject.bgp.controller.BgpConnectPeer;
-import org.onosproject.bgp.controller.BgpController;
-import org.onosproject.bgp.controller.BgpPeerCfg;
-import org.onosproject.cli.AbstractShellCommand;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Set;
-import java.util.TreeMap;
-
-@Service
-@Command(scope = "onos", name = "bgp", description = "lists configuration")
-public class BgpConfiguration extends AbstractShellCommand {
-    private static final Logger log = LoggerFactory.getLogger(BgpConfiguration.class);
-    private static final String CONFIGURATION = "configuration";
-    private static final String PEER = "peer";
-    protected BgpController bgpController;
-    protected BgpConnectPeer bgpConnectPeer;
-    protected BgpPeerCfg bgpPeerCfg;
-    protected BgpCfg bgpCfg;
-    @Argument(index = 0, name = "name",
-            description = "configuration" + "\n" + "peer",
-            required = true, multiValued = false)
-    String name = null;
-    @Argument(index = 1, name = "peer",
-            description = "peerIp",
-            required = false, multiValued = false)
-    String peer = null;
-
-    @Override
-    protected void doExecute() {
-        switch (name) {
-            case CONFIGURATION:
-                displayBgpConfiguration();
-                break;
-            case PEER:
-                displayBgpPeerConfiguration();
-                break;
-            default:
-                System.out.print("Unknown command...!!");
-                break;
-        }
-    }
-
-    private void displayBgpConfiguration() {
-        try {
-
-            this.bgpController = get(BgpController.class);
-            bgpCfg = bgpController.getConfig();
-            print("RouterID = %s, ASNumber = %s, MaxSession = %s, HoldingTime = %s, LsCapabality = %s," +
-                            " LargeAsCapabality = %s, FlowSpecCapabality = %s", bgpCfg.getRouterId(),
-                    bgpCfg.getAsNumber(), bgpCfg.getMaxSession(), bgpCfg.getHoldTime(),
-                    bgpCfg.getLsCapability(), bgpCfg.getLargeASCapability(), bgpCfg.flowSpecCapability());
-
-        } catch (Exception e) {
-            log.debug("Error occurred while displaying BGP configuration: {}", e.getMessage());
-        }
-    }
-
-    private void displayBgpPeerConfiguration() {
-        try {
-            this.bgpController = get(BgpController.class);
-            BgpCfg bgpCfg = bgpController.getConfig();
-            if (bgpCfg == null) {
-                return;
-            }
-            TreeMap<String, BgpPeerCfg> displayPeerTree = bgpCfg.getPeerTree();
-            Set<String> peerKey = displayPeerTree.keySet();
-            if (peer != null) {
-                if (!peerKey.isEmpty()) {
-                    for (String peerIdKey : peerKey) {
-                        bgpPeerCfg = displayPeerTree.get(peerIdKey);
-                        bgpConnectPeer = bgpPeerCfg.connectPeer();
-                        if (peerIdKey.equals(peer)) {
-                            print("PeerRouterID = %s, PeerHoldingTime = %s, ASNumber = %s, PeerState = %s," +
-                                            " PeerPort = %s, ConnectRetryCounter = %s",
-                                    peer, bgpPeerCfg.getHoldtime(), bgpPeerCfg.getAsNumber(),
-                                    bgpPeerCfg.getState(), bgpConnectPeer.getPeerPort(),
-                                    bgpConnectPeer.getConnectRetryCounter());
-                        }
-                    }
-                }
-            } else {
-                if (!peerKey.isEmpty()) {
-                    for (String peerIdKey : peerKey) {
-                        bgpPeerCfg = displayPeerTree.get(peerIdKey);
-                        bgpConnectPeer = bgpPeerCfg.connectPeer();
-                        print("PeerRouterID = %s, PeerHoldingTime = %s, ASNumber = %s, PeerState = %s, PeerPort = %s," +
-                                        " ConnectRetryCounter = %s",
-                                bgpPeerCfg.getPeerRouterId(), bgpPeerCfg.getHoldtime(), bgpPeerCfg.getAsNumber(),
-                                bgpPeerCfg.getState(), bgpConnectPeer.getPeerPort(),
-                                bgpConnectPeer.getConnectRetryCounter());
-                    }
-                }
-
-            }
-        } catch (Exception e) {
-            log.debug("Error occurred while displaying BGP peer configuration: {}", e.getMessage());
-        }
-    }
-
-
-}
\ No newline at end of file
diff --git a/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpExceptions.java b/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpExceptions.java
deleted file mode 100644
index d4e14f8..0000000
--- a/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpExceptions.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.bgp.cli;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.bgp.controller.BgpController;
-import org.onosproject.cli.AbstractShellCommand;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-@Service
-@Command(scope = "onos", name = "bgp-exception", description = "Displays Exceptions")
-public class BgpExceptions extends AbstractShellCommand {
-    public static final String ACTIVESESSION = "activesession";
-    public static final String CLOSEDSESSION = "closedsession";
-    private static final Logger log = LoggerFactory.getLogger(BgpExceptions.class);
-    protected BgpController bgpController;
-    @Argument(index = 0, name = "name",
-            description = "activesession" + "\n" + "closedsession",
-            required = true, multiValued = false)
-    String name = null;
-    @Argument(index = 1, name = "peerIp",
-            description = "peerId",
-            required = false, multiValued = false)
-    String peerId = null;
-    private Set<String> activeSessionExceptionkeySet;
-    private Set<String> closedSessionExceptionKeySet;
-
-    @Override
-    protected void doExecute() {
-        switch (name) {
-            case ACTIVESESSION:
-                displayActiveSessionException();
-                break;
-            case CLOSEDSESSION:
-                displayClosedSessionException();
-                break;
-            default:
-                System.out.print("Unknown Command");
-                break;
-        }
-    }
-
-    private void displayActiveSessionException() {
-        try {
-            this.bgpController = get(BgpController.class);
-            Map<String, List<String>> activeSessionExceptionMap = bgpController.activeSessionMap();
-            activeSessionExceptionkeySet = activeSessionExceptionMap.keySet();
-            if (!activeSessionExceptionkeySet.isEmpty()) {
-                if (peerId != null) {
-                    if (activeSessionExceptionkeySet.contains(peerId)) {
-                        for (String peerIdKey : activeSessionExceptionkeySet) {
-                            List activeSessionExceptionlist = activeSessionExceptionMap.get(peerIdKey);
-                            System.out.println(activeSessionExceptionlist);
-                        }
-                    } else {
-                        System.out.print("Wrong argument");
-                    }
-                } else {
-                    activeSessionExceptionkeySet = activeSessionExceptionMap.keySet();
-                    if (!activeSessionExceptionkeySet.isEmpty()) {
-                        for (String peerId : activeSessionExceptionkeySet) {
-                            print("PeerId = %s, Exception = %s ", peerId, activeSessionExceptionMap.get(peerId));
-                        }
-                    }
-                }
-            }
-        } catch (Exception e) {
-            log.debug("Error occurred while displaying BGP exceptions: {}", e.getMessage());
-        }
-    }
-
-    private void displayClosedSessionException() {
-        try {
-            this.bgpController = get(BgpController.class);
-            Map<String, List<String>> closedSessionExceptionMap = bgpController.closedSessionMap();
-            closedSessionExceptionKeySet = closedSessionExceptionMap.keySet();
-            if (!closedSessionExceptionKeySet.isEmpty()) {
-                if (peerId != null) {
-                    if (closedSessionExceptionKeySet.contains(peerId)) {
-                        for (String peerIdKey : closedSessionExceptionKeySet) {
-                            List closedSessionExceptionlist = closedSessionExceptionMap.get(peerIdKey);
-                            print("Exceptions = %s", closedSessionExceptionlist);
-                        }
-                    } else {
-                        System.out.print("Wrong argument");
-                    }
-                } else {
-                    closedSessionExceptionKeySet = closedSessionExceptionMap.keySet();
-                    if (!closedSessionExceptionKeySet.isEmpty()) {
-                        for (String peerId : closedSessionExceptionKeySet) {
-                            print("PeerId = %s, Exception = %s", peerId, closedSessionExceptionMap.get(peerId));
-                        }
-                    }
-                }
-            }
-        } catch (Exception e) {
-            log.debug("Error occurred while displaying resons for session closure: {}", e.getMessage());
-        }
-    }
-
-
-}
-
-
diff --git a/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpLocalRibDisplay.java b/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpLocalRibDisplay.java
deleted file mode 100644
index 4e6911f..0000000
--- a/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpLocalRibDisplay.java
+++ /dev/null
@@ -1,407 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.bgp.cli;
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.bgp.controller.BgpController;
-import org.onosproject.bgp.controller.BgpLocalRib;
-import org.onosproject.bgpio.protocol.BgpLSNlri;
-
-import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSIdentifier;
-import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4;
-import org.onosproject.bgpio.protocol.linkstate.PathAttrNlriDetails;
-import org.onosproject.bgpio.protocol.linkstate.PathAttrNlriDetailsLocalRib;
-import org.onosproject.bgpio.protocol.linkstate.BgpLinkLSIdentifier;
-import org.onosproject.bgpio.protocol.linkstate.BgpPrefixLSIdentifier;
-import org.onosproject.bgpio.protocol.linkstate.NodeDescriptors;
-import org.onosproject.bgpio.protocol.linkstate.BgpLinkLsNlriVer4;
-import org.onosproject.bgpio.types.IPv4AddressTlv;
-import org.onosproject.bgpio.types.RouteDistinguisher;
-import org.onosproject.bgpio.types.BgpValueType;
-import org.onosproject.bgpio.types.LinkStateAttributes;
-import org.onosproject.bgpio.types.MpReachNlri;
-import org.onosproject.bgpio.types.AutonomousSystemTlv;
-import org.onosproject.bgpio.types.IsIsNonPseudonode;
-import org.onosproject.bgpio.types.LocalPref;
-import org.onosproject.bgpio.types.Origin;
-import org.onosproject.bgpio.types.attr.BgpAttrRouterIdV4;
-import org.onosproject.bgpio.types.attr.BgpLinkAttrMaxLinkBandwidth;
-import org.onosproject.bgpio.types.attr.BgpLinkAttrUnRsrvdLinkBandwidth;
-import org.onosproject.bgpio.types.attr.BgpLinkAttrTeDefaultMetric;
-import org.onosproject.bgpio.types.attr.BgpLinkAttrIgpMetric;
-import org.onosproject.cli.AbstractShellCommand;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.List;
-import java.util.Iterator;
-import java.util.Arrays;
-
-
-@Service
-@Command(scope = "onos", name = "bgp-rib", description = "lists RIB configuration")
-public class BgpLocalRibDisplay extends AbstractShellCommand {
-    private static final Logger log = LoggerFactory.getLogger(BgpLocalRibDisplay.class);
-    private static final String NODETREE = "nodes";
-    private static final String LINKTREE = "links";
-    private static final String PREFIXTREE = "prefix";
-    private static final String VPNNODETREE = "vpnnodes";
-    private static final String VPNLINKTREE = "vpnlinkS";
-    private static final String VPNPREFIXTREE = "vpnprefix";
-    protected Origin origin;
-    protected LocalPref localPref;
-    protected BgpAttrRouterIdV4 bgpAttrRouterIdV4;
-    protected IsIsNonPseudonode isIsNonPseudonode;
-    protected AutonomousSystemTlv autonomousSystemTlv;
-    protected IPv4AddressTlv iPv4AddressTlv;
-    protected BgpLinkAttrMaxLinkBandwidth bgpLinkAttrMaxLinkBandwidth;
-    protected BgpLinkAttrUnRsrvdLinkBandwidth bgpLinkAttrUnRsrvdLinkBandwidth;
-    protected BgpLinkAttrTeDefaultMetric bgpLinkAttrTeDefaultMetric;
-    protected BgpLinkAttrIgpMetric bgpLinkAttrIgpMetric;
-    protected PathAttrNlriDetailsLocalRib pathAttrNlriDetailsLocalRib;
-    protected MpReachNlri mpReachNlri;
-    protected PathAttrNlriDetails pathAttrNlriDetails;
-    protected BgpNodeLSNlriVer4.ProtocolType protocolType;
-    protected BgpController bgpController = get(BgpController.class);
-    protected BgpLocalRib bgpLocalRib = bgpController.bgpLocalRib();
-    Map<BgpNodeLSIdentifier, PathAttrNlriDetailsLocalRib> nodeTreeMap = bgpLocalRib.nodeTree();
-    Set<BgpNodeLSIdentifier> nodekeySet = nodeTreeMap.keySet();
-    Map<BgpLinkLSIdentifier, PathAttrNlriDetailsLocalRib> linkTreeMap = bgpLocalRib.linkTree();
-    Set<BgpLinkLSIdentifier> linkkeySet = linkTreeMap.keySet();
-    @Argument(index = 0, name = "name",
-            description = "nodetree" + "\n" + "linktree" + "\n" + "prefixtree" + "\n" + "vpnnodetree" + "\n" +
-                    "vpnlinktree" + "\n" + "vpnprefixtree", required = true, multiValued = false)
-    String name = null;
-    @Argument(index = 1, name = "numberofentries",
-            description = "numberofentries", required = false, multiValued = false)
-    int numberofentries;
-    @Argument(index = 2, name = "vpnId",
-            description = "vpnId", required = false, multiValued = false)
-    String vpnId = null;
-    private int count = 0;
-
-    @Override
-    protected void doExecute() {
-        switch (name) {
-            case NODETREE:
-                displayNodes();
-                break;
-            case LINKTREE:
-                displayLinks();
-                break;
-            case PREFIXTREE:
-                displayPrefix();
-                break;
-            case VPNNODETREE:
-                displayVpnNodes();
-                break;
-            case VPNLINKTREE:
-                displayVpnLinks();
-                break;
-            case VPNPREFIXTREE:
-                displayVpnPrefix();
-                break;
-            default:
-                System.out.print("Unknown Command");
-                break;
-        }
-
-    }
-
-    private void displayNodes() {
-        try {
-            int counter = 0;
-            print("Total number of entries = %s", nodeTreeMap.size());
-            for (BgpNodeLSIdentifier nodes : nodekeySet) {
-                if (numberofentries > nodeTreeMap.size() || numberofentries < 0) {
-                    System.out.print("Wrong Argument");
-                    break;
-                } else if (counter < numberofentries) {
-                    pathAttrNlriDetailsLocalRib = nodeTreeMap.get(nodes);
-                    displayNode();
-                    counter++;
-                } else if (counter == 0) {
-                    pathAttrNlriDetailsLocalRib = nodeTreeMap.get(nodes);
-                    displayNode();
-
-
-                }
-
-            }
-        } catch (Exception e) {
-            log.debug("Error occurred while displaying BGP nodes: {}", e.getMessage());
-        }
-
-    }
-
-
-    private void displayLinks() {
-        try {
-            int counter = 0;
-            print("Total Number of entries = %d", linkTreeMap.size());
-            for (BgpLinkLSIdentifier links : linkkeySet) {
-                if (numberofentries > linkTreeMap.size() || numberofentries < 0) {
-                    System.out.print("Wrong Argument");
-                    break;
-                } else if (counter < numberofentries) {
-                    pathAttrNlriDetailsLocalRib = linkTreeMap.get(links);
-                    print("Total number of entries = %d", linkTreeMap.size());
-                    displayLink();
-                    counter++;
-                } else if (counter == 0) {
-                    pathAttrNlriDetailsLocalRib = linkTreeMap.get(links);
-                    displayLink();
-                }
-
-            }
-        } catch (Exception e) {
-            log.debug("Error occurred while displaying BGP links: {}", e.getMessage());
-        }
-    }
-
-    private void displayPrefix() {
-        try {
-            this.bgpController = get(BgpController.class);
-            bgpLocalRib = bgpController.bgpLocalRib();
-            Map<BgpPrefixLSIdentifier, PathAttrNlriDetailsLocalRib> prefixmap = bgpLocalRib.prefixTree();
-            Set<BgpPrefixLSIdentifier> prefixkeySet = prefixmap.keySet();
-            for (BgpPrefixLSIdentifier prefix : prefixkeySet) {
-                pathAttrNlriDetailsLocalRib = prefixmap.get(prefix);
-                pathAttrNlriDetails = pathAttrNlriDetailsLocalRib.localRibNlridetails();
-                print("No of entries = %d", prefixmap.size());
-                System.out.print(pathAttrNlriDetailsLocalRib.toString());
-
-            }
-
-
-        } catch (Exception e) {
-            log.debug("Error occurred while displaying BGP prefixes: {}", e.getMessage());
-
-        }
-    }
-
-    private void displayVpnNodes() {
-        try {
-            this.bgpController = get(BgpController.class);
-            bgpLocalRib = bgpController.bgpLocalRib();
-            Map<RouteDistinguisher, Map<BgpNodeLSIdentifier, PathAttrNlriDetailsLocalRib>> vpnNode =
-                    bgpLocalRib.vpnNodeTree();
-            Set<RouteDistinguisher> vpnNodekeySet = vpnNode.keySet();
-            for (RouteDistinguisher vpnNodes : vpnNodekeySet) {
-                boolean invalidProcess = true;
-                if (vpnId != null && Integer.parseInt(vpnId.trim()) == vpnNodes.hashCode()) {
-                    invalidProcess = false;
-                    displayNodes();
-                }
-                if (invalidProcess) {
-                    print("%s\n", "Id " + vpnId + "does not exist...!!!");
-                }
-            }
-        } catch (Exception e) {
-            log.debug("Error occurred while displaying BGP nodes based on VPN : {}", e.getMessage());
-        }
-
-    }
-
-    private void displayVpnLinks() {
-        try {
-            this.bgpController = get(BgpController.class);
-            bgpLocalRib = bgpController.bgpLocalRib();
-            Map<RouteDistinguisher, Map<BgpLinkLSIdentifier, PathAttrNlriDetailsLocalRib>> vpnLink =
-                    bgpLocalRib.vpnLinkTree();
-            Set<RouteDistinguisher> vpnLinkkeySet = vpnLink.keySet();
-            for (RouteDistinguisher vpnLinks : vpnLinkkeySet) {
-                boolean invalidProcess = true;
-                if (vpnId != null && Integer.parseInt(vpnId.trim()) == vpnLinks.hashCode()) {
-                    invalidProcess = false;
-                    displayLinks();
-                }
-                if (invalidProcess) {
-                    print("%s\n", "Id " + vpnId + "does not exist...!!!");
-                }
-            }
-        } catch (Exception e) {
-            log.debug("Error occurred while displaying BGP links based on VPN : {}", e.getMessage());
-        }
-    }
-
-    private void displayVpnPrefix() {
-        try {
-            this.bgpController = get(BgpController.class);
-            bgpLocalRib = bgpController.bgpLocalRib();
-            Map<RouteDistinguisher, Map<BgpPrefixLSIdentifier, PathAttrNlriDetailsLocalRib>> vpnPrefix =
-                    bgpLocalRib.vpnPrefixTree();
-            Set<RouteDistinguisher> vpnPrefixkeySet = vpnPrefix.keySet();
-            for (RouteDistinguisher vpnprefixId : vpnPrefixkeySet) {
-                boolean invalidProcess = true;
-                if (vpnId != null && Integer.parseInt(vpnId.trim()) == vpnprefixId.hashCode()) {
-                    invalidProcess = false;
-                    displayPrefix();
-                }
-                if (invalidProcess) {
-                    print("%s\n", "Id " + vpnId + "does not exist...!!!");
-                }
-            }
-        } catch (Exception e) {
-            log.debug("Error occurred while displaying BGP prefixes based on VPN : {}", e.getMessage());
-        }
-    }
-
-    private void displayNode() {
-
-
-        pathAttrNlriDetails = pathAttrNlriDetailsLocalRib.localRibNlridetails();
-        List<BgpValueType> bgpValueTypeList = pathAttrNlriDetails.pathAttributes();
-        protocolType = pathAttrNlriDetails.protocolID();
-        Iterator<BgpValueType> itrBgpValueType = bgpValueTypeList.iterator();
-        while (itrBgpValueType.hasNext()) {
-            BgpValueType bgpValueType = itrBgpValueType.next();
-            if (bgpValueType instanceof Origin) {
-                origin = (Origin) bgpValueType;
-            } else if (bgpValueType instanceof LocalPref) {
-                localPref = (LocalPref) bgpValueType;
-            } else if (bgpValueType instanceof LinkStateAttributes) {
-                LinkStateAttributes linkStateAttributes = (LinkStateAttributes) bgpValueType;
-                List linkStateAttribiuteList = linkStateAttributes.linkStateAttributes();
-                Iterator<BgpValueType> linkStateAttribiteIterator = linkStateAttribiuteList.iterator();
-                while (linkStateAttribiteIterator.hasNext()) {
-                    BgpValueType bgpValueType1 = linkStateAttribiteIterator.next();
-                    if (bgpValueType1 instanceof BgpAttrRouterIdV4) {
-                        bgpAttrRouterIdV4 = (BgpAttrRouterIdV4) bgpValueType1;
-                    }
-                }
-            } else if (bgpValueType instanceof MpReachNlri) {
-                mpReachNlri = (MpReachNlri) bgpValueType;
-                List<BgpLSNlri> bgpLSNlris = mpReachNlri.mpReachNlri();
-                Iterator<BgpLSNlri> bgpLsnlrisIterator = bgpLSNlris.iterator();
-                while (bgpLsnlrisIterator.hasNext()) {
-                    BgpLSNlri bgpLSNlri = bgpLsnlrisIterator.next();
-                    if (bgpLSNlri instanceof BgpNodeLSNlriVer4) {
-                        BgpNodeLSNlriVer4 bgpNodeLSNlriVer4 = (BgpNodeLSNlriVer4) bgpLSNlri;
-                        BgpNodeLSIdentifier bgpNodeLSIdentifier = bgpNodeLSNlriVer4.getLocalNodeDescriptors();
-                        NodeDescriptors nodeDescriptors = bgpNodeLSIdentifier.getNodedescriptors();
-                        List<BgpValueType> bgpvalueTypesList = nodeDescriptors.getSubTlvs();
-                        Iterator<BgpValueType> bgpValueTypeIterator = bgpvalueTypesList.iterator();
-                        while (bgpValueTypeIterator.hasNext()) {
-                            BgpValueType valueType = bgpValueTypeIterator.next();
-                            if (valueType instanceof IsIsNonPseudonode) {
-                                isIsNonPseudonode = (IsIsNonPseudonode) valueType;
-
-                            }
-                        }
-                    }
-                }
-            }
-        }
-        print("RibAsNumber = %s,PeerIdentifier = %s,RibIpAddress = %s,ProtocolType = %s,Origin = %s,LocalPref = %s," +
-                        "RouterID = %s,IsoNodeID = %s,NextHop = %s", pathAttrNlriDetailsLocalRib.localRibAsNum(),
-                pathAttrNlriDetailsLocalRib.localRibIdentifier(), pathAttrNlriDetailsLocalRib.localRibIpAddress(),
-                protocolType.toString(), origin.origin(), localPref.localPref(), bgpAttrRouterIdV4.attrRouterId(),
-                Arrays.toString(isIsNonPseudonode.getIsoNodeId()), mpReachNlri.nexthop());
-    }
-
-    private void displayLink() {
-
-        pathAttrNlriDetails = pathAttrNlriDetailsLocalRib.localRibNlridetails();
-        List<BgpValueType> valueTypes = pathAttrNlriDetails.pathAttributes();
-        Iterator<BgpValueType> itrBgpValueType = valueTypes.iterator();
-        while (itrBgpValueType.hasNext()) {
-            BgpValueType bgpValueType = itrBgpValueType.next();
-            if (bgpValueType instanceof Origin) {
-                origin = (Origin) bgpValueType;
-            } else if (bgpValueType instanceof LocalPref) {
-                localPref = (LocalPref) bgpValueType;
-            } else if (bgpValueType instanceof LinkStateAttributes) {
-                LinkStateAttributes linkStateAttributes = (LinkStateAttributes) bgpValueType;
-                List linkStateAttributelist = linkStateAttributes.linkStateAttributes();
-                Iterator<BgpValueType> linkStateAttributeIterator = linkStateAttributelist.iterator();
-                while (linkStateAttributeIterator.hasNext()) {
-                    BgpValueType bgpValueType1 = linkStateAttributeIterator.next();
-                    if (bgpValueType1 instanceof BgpAttrRouterIdV4) {
-                        bgpAttrRouterIdV4 = (BgpAttrRouterIdV4) bgpValueType1;
-                    } else if (bgpValueType1 instanceof BgpLinkAttrMaxLinkBandwidth) {
-                        bgpLinkAttrMaxLinkBandwidth = (BgpLinkAttrMaxLinkBandwidth) bgpValueType1;
-                    } else if (bgpValueType1 instanceof BgpLinkAttrUnRsrvdLinkBandwidth) {
-                        bgpLinkAttrUnRsrvdLinkBandwidth = (BgpLinkAttrUnRsrvdLinkBandwidth) bgpValueType1;
-                    } else if (bgpValueType1 instanceof BgpLinkAttrTeDefaultMetric) {
-                        bgpLinkAttrTeDefaultMetric = (BgpLinkAttrTeDefaultMetric) bgpValueType1;
-                    } else if (bgpValueType1 instanceof BgpLinkAttrIgpMetric) {
-                        bgpLinkAttrIgpMetric = (BgpLinkAttrIgpMetric) bgpValueType1;
-                    }
-
-                }
-            } else if (bgpValueType instanceof MpReachNlri) {
-                mpReachNlri = (MpReachNlri) bgpValueType;
-                List<BgpLSNlri> bgpLSNlris = mpReachNlri.mpReachNlri();
-                Iterator<BgpLSNlri> bgpLsnlrisIterator = bgpLSNlris.iterator();
-                while (bgpLsnlrisIterator.hasNext()) {
-                    BgpLSNlri bgpLSNlri = bgpLsnlrisIterator.next();
-                    if (bgpLSNlri instanceof BgpLinkLsNlriVer4) {
-                        BgpLinkLsNlriVer4 bgpLinkLsNlriVer4 = (BgpLinkLsNlriVer4) bgpLSNlri;
-                        BgpLinkLSIdentifier bgpLinkLSIdentifier = bgpLinkLsNlriVer4.getLinkIdentifier();
-                        NodeDescriptors localnodeDescriptors = bgpLinkLSIdentifier.localNodeDescriptors();
-                        NodeDescriptors remotenodeDescriptors = bgpLinkLSIdentifier.remoteNodeDescriptors();
-                        List<BgpValueType> linkDescriptors = bgpLinkLSIdentifier.linkDescriptors();
-                        List<BgpValueType> subTlvList = localnodeDescriptors.getSubTlvs();
-                        Iterator<BgpValueType> subTlvIterator = subTlvList.iterator();
-                        while (subTlvIterator.hasNext()) {
-                            BgpValueType valueType = subTlvIterator.next();
-                            if (valueType instanceof IsIsNonPseudonode) {
-                                isIsNonPseudonode = (IsIsNonPseudonode) valueType;
-                            } else if (valueType instanceof AutonomousSystemTlv) {
-                                autonomousSystemTlv = (AutonomousSystemTlv) valueType;
-                            }
-                        }
-                        List<BgpValueType> remotevalueTypes = remotenodeDescriptors.getSubTlvs();
-                        Iterator<BgpValueType> remoteValueTypesIterator = remotevalueTypes.iterator();
-                        while (remoteValueTypesIterator.hasNext()) {
-                            BgpValueType valueType = remoteValueTypesIterator.next();
-                            if (valueType instanceof IsIsNonPseudonode) {
-                                isIsNonPseudonode = (IsIsNonPseudonode) valueType;
-                            } else if (valueType instanceof AutonomousSystemTlv) {
-                                autonomousSystemTlv = (AutonomousSystemTlv) valueType;
-                            }
-                        }
-                        Iterator<BgpValueType> listIterator = linkDescriptors.iterator();
-                        while (listIterator.hasNext()) {
-                            BgpValueType valueType = listIterator.next();
-                            if (valueType instanceof IPv4AddressTlv) {
-                                iPv4AddressTlv = (IPv4AddressTlv) valueType;
-                            }
-
-                        }
-                    }
-                }
-            }
-        }
-        print("PeerIdentifier = %s,Origin = %s,LocalPref = %s,RouterID = %s,MaxBandwidth = %s," +
-                        "UnreservedBandwidth = %s,DefaultMetric = %s,IGPMetric = %s,IsoNodeID = %s,ASNum = %s," +
-                        "IPAddress = %s,NextHop = %s", pathAttrNlriDetailsLocalRib.localRibIdentifier(),
-                origin.origin(), localPref.localPref(), bgpAttrRouterIdV4.attrRouterId(),
-                bgpLinkAttrMaxLinkBandwidth.linkAttrMaxLinkBandwidth(),
-                bgpLinkAttrUnRsrvdLinkBandwidth.getLinkAttrUnRsrvdLinkBandwidth().toString(),
-                bgpLinkAttrTeDefaultMetric.attrLinkDefTeMetric(), bgpLinkAttrIgpMetric.attrLinkIgpMetric(),
-                Arrays.toString(isIsNonPseudonode.getIsoNodeId()), autonomousSystemTlv.getAsNum(),
-                iPv4AddressTlv.address(), mpReachNlri.nexthop().toString(),
-                pathAttrNlriDetailsLocalRib.localRibIpAddress(), origin.origin(), localPref.localPref(),
-                bgpAttrRouterIdV4.attrRouterId());
-
-    }
-}
diff --git a/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/package-info.java b/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/package-info.java
deleted file mode 100644
index c7a7692..0000000
--- a/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Created by root1 on 23/8/16.
- */
-package org.onosproject.bgp.cli;
diff --git a/providers/bgp/route/BUILD b/providers/bgp/route/BUILD
deleted file mode 100644
index 80d23a0..0000000
--- a/providers/bgp/route/BUILD
+++ /dev/null
@@ -1,10 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + [
-    "//protocols/bgp/api:onos-protocols-bgp-api",
-    "//protocols/bgp/bgpio:onos-protocols-bgp-bgpio",
-    "//apps/evpn-route-service/api:onos-apps-evpn-route-service-api",
-]
-
-osgi_jar_with_tests(
-    test_deps = TEST_ADAPTERS,
-    deps = COMPILE_DEPS,
-)
diff --git a/providers/bgp/route/src/main/java/org/onosproject/provider/bgp/route/impl/BgpRouteProvider.java b/providers/bgp/route/src/main/java/org/onosproject/provider/bgp/route/impl/BgpRouteProvider.java
deleted file mode 100644
index bb1c8d1..0000000
--- a/providers/bgp/route/src/main/java/org/onosproject/provider/bgp/route/impl/BgpRouteProvider.java
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.provider.bgp.route.impl;
-
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onosproject.bgp.controller.BgpController;
-import org.onosproject.bgp.controller.BgpId;
-import org.onosproject.bgp.controller.BgpPeer.FlowSpecOperation;
-import org.onosproject.bgp.controller.BgpRouteListener;
-import org.onosproject.bgpio.protocol.BgpEvpnNlri;
-import org.onosproject.bgpio.protocol.BgpUpdateMsg;
-import org.onosproject.bgpio.protocol.evpn.BgpEvpnNlriImpl;
-import org.onosproject.bgpio.protocol.evpn.BgpEvpnRouteType;
-import org.onosproject.bgpio.protocol.evpn.BgpEvpnRouteType2Nlri;
-import org.onosproject.bgpio.types.BgpEvpnEsi;
-import org.onosproject.bgpio.types.BgpEvpnLabel;
-import org.onosproject.bgpio.types.BgpExtendedCommunity;
-import org.onosproject.bgpio.types.BgpNlriType;
-import org.onosproject.bgpio.types.BgpValueType;
-import org.onosproject.bgpio.types.MpReachNlri;
-import org.onosproject.bgpio.types.MpUnReachNlri;
-import org.onosproject.bgpio.types.RouteDistinguisher;
-import org.onosproject.bgpio.types.RouteTarget;
-import org.onosproject.evpnrouteservice.EvpnRoute;
-import org.onosproject.evpnrouteservice.EvpnRoute.Source;
-import org.onosproject.evpnrouteservice.EvpnRouteAdminService;
-import org.onosproject.evpnrouteservice.EvpnRouteEvent;
-import org.onosproject.evpnrouteservice.EvpnRouteListener;
-import org.onosproject.evpnrouteservice.VpnRouteTarget;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Provider which uses an BGP controller to update/delete route.
- */
-@Component(immediate = true)
-public class BgpRouteProvider extends AbstractProvider {
-
-    /**
-     * Creates an instance of BGP route provider.
-     */
-    public BgpRouteProvider() {
-        super(new ProviderId("route",
-                             "org.onosproject.provider.bgp.route.impl"));
-    }
-
-    private static final Logger log = LoggerFactory
-            .getLogger(BgpRouteProvider.class);
-
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected BgpController controller;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected EvpnRouteAdminService evpnRouteAdminService;
-
-    private final InternalEvpnRouteListener routeListener = new
-            InternalEvpnRouteListener();
-    private final InternalBgpRouteListener bgpRouteListener = new
-            InternalBgpRouteListener();
-
-
-    @Activate
-    public void activate() {
-        controller.addRouteListener(bgpRouteListener);
-        evpnRouteAdminService.addListener(routeListener);
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        controller.removeRouteListener(bgpRouteListener);
-        evpnRouteAdminService.removeListener(routeListener);
-        log.info("Stopped");
-    }
-
-    /**
-     * Handles the bgp route update message.
-     *
-     * @param operationType operationType
-     * @param rdString      rd
-     * @param exportRtList  rt export
-     * @param nextHop       next hop
-     * @param macAddress    mac address
-     * @param ipAddress     ip address
-     * @param labelInt      label
-     */
-    private void sendUpdateMessage(FlowSpecOperation operationType,
-                                   String rdString,
-                                   List<VpnRouteTarget> exportRtList,
-                                   IpAddress nextHop,
-                                   MacAddress macAddress,
-                                   InetAddress ipAddress,
-                                   int labelInt) {
-        log.info("sendUpdateMessage 1");
-
-        List<BgpEvpnNlri> eVpnNlri = new ArrayList<BgpEvpnNlri>();
-        RouteDistinguisher rd = stringToRD(rdString);
-        BgpEvpnEsi esi = new BgpEvpnEsi(new byte[10]);
-        int ethernetTagID = 0;
-        BgpEvpnLabel mplsLabel1 = intToLabel(labelInt);
-        BgpEvpnLabel mplsLabel2 = null;
-
-        List<BgpValueType> extCom = new ArrayList<BgpValueType>();
-        if ((operationType == FlowSpecOperation.UPDATE)
-                && (!exportRtList.isEmpty())) {
-            for (VpnRouteTarget rt : exportRtList) {
-                RouteTarget rTarget = stringToRT(rt.getRouteTarget());
-                extCom.add(rTarget);
-            }
-        }
-        BgpEvpnRouteType2Nlri routeTypeSpec =
-                new BgpEvpnRouteType2Nlri(rd,
-                                          esi,
-                                          ethernetTagID,
-                                          macAddress,
-                                          ipAddress,
-                                          mplsLabel1,
-                                          mplsLabel2);
-        BgpEvpnNlri nlri = new BgpEvpnNlriImpl(BgpEvpnRouteType
-                                                       .MAC_IP_ADVERTISEMENT
-                                                       .getType(),
-                                               routeTypeSpec);
-        eVpnNlri.add(nlri);
-        log.info("sendUpdateMessage 2");
-        controller.getPeers().forEach(peer -> {
-            log.info("Send route update eVpnComponents {} to peer {}",
-                     eVpnNlri, peer);
-            peer.updateEvpnNlri(operationType, nextHop, extCom, eVpnNlri);
-        });
-
-    }
-
-    private static RouteDistinguisher stringToRD(String rdString) {
-        if (rdString.contains(":")) {
-            if ((rdString.indexOf(":") != 0)
-                    && (rdString.indexOf(":") != rdString.length() - 1)) {
-                String[] tem = rdString.split(":");
-                short as = (short) Integer.parseInt(tem[0]);
-                int assignednum = Integer.parseInt(tem[1]);
-                long rd = ((long) assignednum & 0xFFFFFFFFL)
-                        | (((long) as << 32) & 0xFFFFFFFF00000000L);
-                return new RouteDistinguisher(rd);
-            }
-        }
-        return null;
-
-    }
-
-    private static String rdToString(RouteDistinguisher rd) {
-        long rdLong = rd.getRouteDistinguisher();
-        int as = (int) ((rdLong & 0xFFFFFFFF00000000L) >> 32);
-        int assignednum = (int) (rdLong & 0xFFFFFFFFL);
-        String result = as + ":" + assignednum;
-        return result;
-    }
-
-    private static RouteTarget stringToRT(String rdString) {
-        if (rdString.contains(":")) {
-            if ((rdString.indexOf(":") != 0)
-                    && (rdString.indexOf(":") != rdString.length() - 1)) {
-                String[] tem = rdString.split(":");
-                short as = Short.parseShort(tem[0]);
-                int assignednum = Integer.parseInt(tem[1]);
-
-                byte[] rt = new byte[]{(byte) ((as >> 8) & 0xFF),
-                        (byte) (as & 0xFF),
-                        (byte) ((assignednum >> 24) & 0xFF),
-                        (byte) ((assignednum >> 16) & 0xFF),
-                        (byte) ((assignednum >> 8) & 0xFF),
-                        (byte) (assignednum & 0xFF)};
-                short type = 0x02;
-                return new RouteTarget(type, rt);
-            }
-        }
-        return null;
-
-    }
-
-    private static String rtToString(RouteTarget rt) {
-        byte[] b = rt.getRouteTarget();
-
-        int assignednum = b[5] & 0xFF | (b[4] & 0xFF) << 8 | (b[3] & 0xFF) << 16
-                | (b[2] & 0xFF) << 24;
-        short as = (short) (b[1] & 0xFF | (b[0] & 0xFF) << 8);
-        String result = as + ":" + assignednum;
-        return result;
-    }
-
-    private static BgpEvpnLabel intToLabel(int labelInt) {
-        byte[] label = new byte[]{(byte) ((labelInt >> 16) & 0xFF),
-                (byte) ((labelInt >> 8) & 0xFF),
-                (byte) (labelInt & 0xFF)};
-
-        return new BgpEvpnLabel(label);
-    }
-
-    private static int labelToInt(BgpEvpnLabel label) {
-        byte[] b = label.getMplsLabel();
-        return b[2] & 0xFF | (b[1] & 0xFF) << 8 | (b[0] & 0xFF) << 16;
-
-    }
-
-    private class InternalBgpRouteListener implements BgpRouteListener {
-
-        @Override
-        public void processRoute(BgpId bgpId, BgpUpdateMsg updateMsg) {
-            log.info("Evpn route event received from BGP protocol");
-            List<BgpValueType> pathAttr = updateMsg.bgpPathAttributes()
-                    .pathAttributes();
-            Iterator<BgpValueType> iterator = pathAttr.iterator();
-            RouteTarget rt = null;
-            List<VpnRouteTarget> exportRt = new LinkedList<>();
-            List<BgpEvpnNlri> evpnReachNlri = new LinkedList<>();
-            List<BgpEvpnNlri> evpnUnreachNlri = new LinkedList<>();
-
-            IpAddress ipNextHop = null;
-            while (iterator.hasNext()) {
-                BgpValueType attr = iterator.next();
-                if (attr instanceof MpReachNlri) {
-                    MpReachNlri mpReachNlri = (MpReachNlri) attr;
-                    ipNextHop = mpReachNlri.nexthop();
-                    if (mpReachNlri
-                            .getNlriDetailsType() == BgpNlriType.EVPN) {
-                        evpnReachNlri.addAll(mpReachNlri.bgpEvpnNlri());
-                    }
-
-                }
-                if (attr instanceof MpUnReachNlri) {
-                    MpUnReachNlri mpUnReachNlri = (MpUnReachNlri) attr;
-                    if (mpUnReachNlri
-                            .getNlriDetailsType() == BgpNlriType.EVPN) {
-                        evpnUnreachNlri.addAll(mpUnReachNlri.bgpEvpnNlri());
-                    }
-                }
-
-                if (attr instanceof BgpExtendedCommunity) {
-                    BgpExtendedCommunity extCom = (BgpExtendedCommunity) attr;
-                    Iterator<BgpValueType> extIte = extCom.fsActionTlv()
-                            .iterator();
-                    while (extIte.hasNext()) {
-                        BgpValueType extAttr = extIte.next();
-                        if (extAttr instanceof RouteTarget) {
-                            rt = (RouteTarget) extAttr;
-                            exportRt.add(VpnRouteTarget
-                                                 .routeTarget(rtToString(rt)));
-                            break;
-                        }
-                    }
-                }
-            }
-
-            if ((!exportRt.isEmpty()) && (!evpnReachNlri.isEmpty())) {
-                for (BgpEvpnNlri nlri : evpnReachNlri) {
-                    if (nlri.getRouteType() == BgpEvpnRouteType
-                            .MAC_IP_ADVERTISEMENT) {
-                        BgpEvpnRouteType2Nlri macIpAdvNlri
-                                = (BgpEvpnRouteType2Nlri) nlri
-                                .getNlri();
-                        MacAddress macAddress = macIpAdvNlri.getMacAddress();
-                        Ip4Address ipAddress = Ip4Address
-                                .valueOf(macIpAdvNlri.getIpAddress());
-                        RouteDistinguisher rd = macIpAdvNlri
-                                .getRouteDistinguisher();
-                        BgpEvpnLabel label = macIpAdvNlri.getMplsLable1();
-                        log.info("Route Provider received bgp packet {} " +
-                                         "to route system.",
-                                 macIpAdvNlri.toString());
-                        // Add route to route system
-                        Source source = Source.REMOTE;
-                        EvpnRoute evpnRoute = new EvpnRoute(source,
-                                                            macAddress,
-                                                            IpPrefix.valueOf(ipAddress, 32),
-                                                            ipNextHop,
-                                                            rdToString(rd),
-                                                            null, //empty rt
-                                                            exportRt,
-                                                            labelToInt(label));
-
-                        evpnRouteAdminService.update(Collections
-                                                             .singleton(evpnRoute));
-                    }
-                }
-            }
-
-            if (!evpnUnreachNlri.isEmpty()) {
-                for (BgpEvpnNlri nlri : evpnUnreachNlri) {
-                    if (nlri.getRouteType() == BgpEvpnRouteType
-                            .MAC_IP_ADVERTISEMENT) {
-                        BgpEvpnRouteType2Nlri macIpAdvNlri
-                                = (BgpEvpnRouteType2Nlri) nlri
-                                .getNlri();
-                        MacAddress macAddress = macIpAdvNlri.getMacAddress();
-                        Ip4Address ipAddress = Ip4Address
-                                .valueOf(macIpAdvNlri.getIpAddress());
-                        RouteDistinguisher rd = macIpAdvNlri
-                                .getRouteDistinguisher();
-                        BgpEvpnLabel label = macIpAdvNlri.getMplsLable1();
-                        log.info("Route Provider received bgp packet {} " +
-                                         "and remove from route system.",
-                                 macIpAdvNlri.toString());
-                        // Delete route from route system
-                        Source source = Source.REMOTE;
-                        // For mpUnreachNlri, nexthop and rt is null
-                        EvpnRoute evpnRoute = new EvpnRoute(source,
-                                                            macAddress,
-                                                            IpPrefix.valueOf(ipAddress, 32),
-                                                            null,
-                                                            rdToString(rd),
-                                                            null,
-                                                            null,
-                                                            labelToInt(label));
-
-                        evpnRouteAdminService.withdraw(Collections
-                                                               .singleton(evpnRoute));
-                    }
-                }
-            }
-        }
-    }
-
-    private class InternalEvpnRouteListener implements EvpnRouteListener {
-
-        @Override
-        public void event(EvpnRouteEvent event) {
-            log.info("evpnroute event is received from evpn route manager");
-            FlowSpecOperation operationType = null;
-            EvpnRoute route = event.subject();
-            EvpnRoute evpnRoute = route;
-            log.info("Event received for public route {}", evpnRoute);
-            if (evpnRoute.source().equals(Source.REMOTE)) {
-                return;
-            }
-            switch (event.type()) {
-                case ROUTE_ADDED:
-                case ROUTE_UPDATED:
-                    log.info("route added");
-                    operationType = FlowSpecOperation.UPDATE;
-                    break;
-                case ROUTE_REMOVED:
-                    log.info("route deleted");
-                    operationType = FlowSpecOperation.DELETE;
-                    break;
-                default:
-                    break;
-            }
-
-            String rdString = evpnRoute.routeDistinguisher()
-                    .getRouteDistinguisher();
-            MacAddress macAddress = evpnRoute.prefixMac();
-            InetAddress inetAddress = evpnRoute.prefixIp().address().toInetAddress();
-            IpAddress nextHop = evpnRoute.ipNextHop();
-            List<VpnRouteTarget> exportRtList = evpnRoute
-                    .exportRouteTarget();
-            int labelInt = evpnRoute.label().getLabel();
-
-            sendUpdateMessage(operationType,
-                              rdString,
-                              exportRtList,
-                              nextHop,
-                              macAddress,
-                              inetAddress,
-                              labelInt);
-        }
-    }
-}
diff --git a/providers/bgp/route/src/main/java/org/onosproject/provider/bgp/route/impl/package-info.java b/providers/bgp/route/src/main/java/org/onosproject/provider/bgp/route/impl/package-info.java
deleted file mode 100644
index 97f14ab..0000000
--- a/providers/bgp/route/src/main/java/org/onosproject/provider/bgp/route/impl/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.
- */
-/**
- * Provider that uses BGP controller as a means of infrastructure route exchange.
- */
-package org.onosproject.provider.bgp.route.impl;
\ No newline at end of file
diff --git a/providers/bgp/topology/BUILD b/providers/bgp/topology/BUILD
deleted file mode 100644
index 9851523..0000000
--- a/providers/bgp/topology/BUILD
+++ /dev/null
@@ -1,11 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + JACKSON + [
-    "//protocols/bgp/api:onos-protocols-bgp-api",
-    "//protocols/bgp/bgpio:onos-protocols-bgp-bgpio",
-    "//apps/tunnel/api:onos-apps-tunnel-api",
-    "//apps/pcep-api:onos-apps-pcep-api",
-]
-
-osgi_jar_with_tests(
-    test_deps = TEST_ADAPTERS,
-    deps = COMPILE_DEPS,
-)
diff --git a/providers/bgp/topology/src/main/java/org/onosproject/provider/bgp/topology/impl/BgpTopologyProvider.java b/providers/bgp/topology/src/main/java/org/onosproject/provider/bgp/topology/impl/BgpTopologyProvider.java
deleted file mode 100644
index 88aff2f..0000000
--- a/providers/bgp/topology/src/main/java/org/onosproject/provider/bgp/topology/impl/BgpTopologyProvider.java
+++ /dev/null
@@ -1,605 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.provider.bgp.topology.impl;
-
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onlab.packet.ChassisId;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.bgp.controller.BgpController;
-import org.onosproject.bgp.controller.BgpDpid;
-import org.onosproject.bgp.controller.BgpLinkListener;
-import org.onosproject.bgp.controller.BgpNodeListener;
-import org.onosproject.bgpio.exceptions.BgpParseException;
-import org.onosproject.bgpio.protocol.linkstate.BgpLinkLSIdentifier;
-import org.onosproject.bgpio.protocol.linkstate.BgpLinkLsNlriVer4;
-import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSIdentifier;
-import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4;
-import org.onosproject.bgpio.protocol.linkstate.NodeDescriptors;
-import org.onosproject.bgpio.protocol.linkstate.PathAttrNlriDetails;
-import org.onosproject.bgpio.types.AutonomousSystemTlv;
-import org.onosproject.bgpio.types.BgpLSIdentifierTlv;
-import org.onosproject.bgpio.types.BgpValueType;
-import org.onosproject.bgpio.types.IPv4AddressTlv;
-import org.onosproject.bgpio.types.IsIsNonPseudonode;
-import org.onosproject.bgpio.types.IsIsPseudonode;
-import org.onosproject.bgpio.types.LinkLocalRemoteIdentifiersTlv;
-import org.onosproject.bgpio.types.LinkStateAttributes;
-import org.onosproject.bgpio.types.OspfNonPseudonode;
-import org.onosproject.bgpio.types.OspfPseudonode;
-import org.onosproject.bgpio.types.attr.BgpAttrNodeFlagBitTlv;
-import org.onosproject.bgpio.types.attr.BgpAttrNodeIsIsAreaId;
-import org.onosproject.bgpio.types.attr.BgpAttrRouterIdV4;
-import org.onosproject.bgpio.types.attr.BgpLinkAttrIgpMetric;
-import org.onosproject.bgpio.types.attr.BgpLinkAttrMaxLinkBandwidth;
-import org.onosproject.bgpio.types.attr.BgpLinkAttrTeDefaultMetric;
-import org.onosproject.bgpio.types.attr.BgpLinkAttrUnRsrvdLinkBandwidth;
-import org.onosproject.incubator.net.resource.label.LabelResourceAdminService;
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.mastership.MastershipService;
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.LinkKey;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.config.NetworkConfigService;
-import org.onosproject.net.device.DefaultDeviceDescription;
-import org.onosproject.net.device.DefaultPortDescription;
-import org.onosproject.net.device.DeviceDescription;
-import org.onosproject.net.device.DeviceEvent;
-import org.onosproject.net.device.DeviceListener;
-import org.onosproject.net.device.DeviceProvider;
-import org.onosproject.net.device.DeviceProviderRegistry;
-import org.onosproject.net.device.DeviceProviderService;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.device.PortDescription;
-import org.onosproject.net.link.DefaultLinkDescription;
-import org.onosproject.net.link.LinkDescription;
-import org.onosproject.net.link.LinkProvider;
-import org.onosproject.net.link.LinkProviderRegistry;
-import org.onosproject.net.link.LinkProviderService;
-import org.onosproject.net.link.LinkService;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.pcep.api.TeLinkConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Set;
-
-import static java.util.stream.Collectors.toList;
-import static org.onosproject.bgp.controller.BgpDpid.uri;
-import static org.onosproject.incubator.net.resource.label.LabelResourceId.labelResourceId;
-import static org.onosproject.net.Device.Type.ROUTER;
-import static org.onosproject.net.Device.Type.VIRTUAL;
-import static org.onosproject.net.DeviceId.deviceId;
-
-/**
- * Provider which uses an BGP controller to detect network infrastructure topology.
- */
-@Component(immediate = true)
-public class BgpTopologyProvider extends AbstractProvider implements DeviceProvider, LinkProvider {
-
-    /**
-     * Creates an instance of BGP topology provider.
-     */
-    public BgpTopologyProvider() {
-        super(new ProviderId("l3", "org.onosproject.provider.bgp"));
-    }
-
-    private static final Logger log = LoggerFactory.getLogger(BgpTopologyProvider.class);
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceProviderRegistry deviceProviderRegistry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LinkProviderRegistry linkProviderRegistry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected BgpController controller;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LinkService linkService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceService deviceService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected MastershipService mastershipService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LabelResourceAdminService labelResourceAdminService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigService networkConfigService;
-
-    private DeviceProviderService deviceProviderService;
-    private LinkProviderService linkProviderService;
-
-    private DeviceListener deviceListener = new InternalDeviceListener();
-    private InternalBgpProvider listener = new InternalBgpProvider();
-    private static final String UNKNOWN = "unknown";
-    public static final long IDENTIFIER_SET = 0x100000000L;
-    public static final String AS_NUMBER = "asNumber";
-    public static final String DOMAIN_IDENTIFIER = "domainIdentifier";
-    public static final String ROUTING_UNIVERSE = "routingUniverse";
-
-    public static final String EXTERNAL_BIT = "externalBit";
-    public static final String ABR_BIT = "abrBit";
-    public static final String INTERNAL_BIT = "internalBit";
-    public static final String PSEUDO = "psuedo";
-    public static final String AREAID = "areaId";
-    public static final String LSRID = "lsrId";
-    public static final String COST = "cost";
-    public static final String TE_COST = "teCost";
-
-    public static final long PSEUDO_PORT = 0xffffffff;
-    public static final int DELAY = 2;
-    private LabelResourceId beginLabel = labelResourceId(5122);
-    private LabelResourceId endLabel = labelResourceId(9217);
-    private HashMap<DeviceId, List<PortDescription>> portMap = new HashMap<>();
-
-    @Activate
-    public void activate() {
-        log.debug("BgpTopologyProvider activate");
-        deviceProviderService = deviceProviderRegistry.register(this);
-        linkProviderService = linkProviderRegistry.register(this);
-        controller.addListener(listener);
-        deviceService.addListener(deviceListener);
-        controller.addLinkListener(listener);
-    }
-
-    @Deactivate
-    public void deactivate() {
-        log.debug("BgpTopologyProvider deactivate");
-        deviceProviderRegistry.unregister(this);
-        deviceProviderService = null;
-        linkProviderRegistry.unregister(this);
-        linkProviderService = null;
-        controller.removeListener(listener);
-        controller.removeLinkListener(listener);
-        deviceService.removeListener(deviceListener);
-    }
-
-    private class InternalDeviceListener implements DeviceListener {
-        @Override
-        public boolean isRelevant(DeviceEvent event) {
-            return event.type() == DeviceEvent.Type.DEVICE_ADDED &&
-                    mastershipService.isLocalMaster(event.subject().id());
-        }
-
-        @Override
-        public void event(DeviceEvent event) {
-            Device device = event.subject();
-            // Reserve device label pool for L3 devices
-            if (device.annotations().value(LSRID) != null) {
-                createDevicePool(device.id());
-            }
-        }
-    }
-
-    /*
-     * Implements device and link update.
-     */
-    private class InternalBgpProvider implements BgpNodeListener, BgpLinkListener {
-
-        @Override
-        public void addNode(BgpNodeLSNlriVer4 nodeNlri, PathAttrNlriDetails details) {
-            log.debug("Add node {}", nodeNlri.toString());
-
-            if (deviceProviderService == null || deviceService == null) {
-                return;
-            }
-            Device.Type deviceType = ROUTER;
-            BgpDpid nodeUri = new BgpDpid(nodeNlri);
-            DeviceId deviceId = deviceId(uri(nodeUri.toString()));
-            ChassisId cId = new ChassisId();
-
-            /*
-             * Check if device is already there (available) , if yes not updating to core.
-             */
-            if (deviceService.isAvailable(deviceId)) {
-                return;
-            }
-
-            DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder();
-
-            newBuilder.set(AnnotationKeys.TYPE, "L3");
-            newBuilder.set(ROUTING_UNIVERSE, Long.toString(nodeNlri.getIdentifier()));
-
-            List<BgpValueType> tlvs = nodeNlri.getLocalNodeDescriptors().getNodedescriptors().getSubTlvs();
-            for (BgpValueType tlv : tlvs) {
-                if (tlv instanceof AutonomousSystemTlv) {
-                    newBuilder.set(AS_NUMBER, Integer.toString(((AutonomousSystemTlv) tlv).getAsNum()));
-                } else if (tlv instanceof BgpLSIdentifierTlv) {
-                    newBuilder.set(DOMAIN_IDENTIFIER,
-                            Integer.toString(((BgpLSIdentifierTlv) tlv).getBgpLsIdentifier()));
-                }
-                if (tlv.getType() == NodeDescriptors.IGP_ROUTERID_TYPE) {
-                    if (tlv instanceof IsIsPseudonode) {
-                        deviceType = VIRTUAL;
-                        newBuilder.set(AnnotationKeys.ROUTER_ID, nodeUri.isoNodeIdString(((IsIsPseudonode) tlv)
-                                .getIsoNodeId()));
-                    } else if (tlv instanceof OspfPseudonode) {
-                        deviceType = VIRTUAL;
-                        newBuilder
-                                .set(AnnotationKeys.ROUTER_ID, Integer.toString(((OspfPseudonode) tlv).getrouterID()));
-                    } else if (tlv instanceof IsIsNonPseudonode) {
-                        newBuilder.set(AnnotationKeys.ROUTER_ID, nodeUri.isoNodeIdString(((IsIsNonPseudonode) tlv)
-                                .getIsoNodeId()));
-                    } else if (tlv instanceof OspfNonPseudonode) {
-                        newBuilder.set(AnnotationKeys.ROUTER_ID,
-                                Integer.toString(((OspfNonPseudonode) tlv).getrouterID()));
-                    }
-                }
-            }
-            DefaultAnnotations.Builder anntotations = DefaultAnnotations.builder();
-            anntotations = getAnnotations(newBuilder, true, details);
-
-            DeviceDescription description = new DefaultDeviceDescription(uri(nodeUri.toString()), deviceType, UNKNOWN,
-                    UNKNOWN, UNKNOWN, UNKNOWN, cId, anntotations.build());
-
-            deviceProviderService.deviceConnected(deviceId, description);
-        }
-
-        @Override
-        public void deleteNode(BgpNodeLSNlriVer4 nodeNlri) {
-            log.debug("Delete node {}", nodeNlri.toString());
-
-            if (deviceProviderService == null) {
-                return;
-            }
-
-            BgpDpid deviceUri = new BgpDpid(nodeNlri);
-            DeviceId deviceId = deviceId(uri(deviceUri.toString()));
-
-            if (labelResourceAdminService != null) {
-                //Destroy local device label pool reserved for that device
-                labelResourceAdminService.destroyDevicePool(deviceId);
-            }
-
-            deviceProviderService.deviceDisconnected(deviceId);
-        }
-
-        private List<PortDescription> buildPortDescriptions(DeviceId deviceId,
-                                                            PortNumber portNumber) {
-
-            List<PortDescription> portList;
-
-            if (portMap.containsKey(deviceId)) {
-                portList = portMap.get(deviceId);
-            } else {
-                portList = new ArrayList<>();
-            }
-            if (portNumber != null) {
-                PortDescription portDescriptions = DefaultPortDescription.builder().withPortNumber(portNumber)
-                        .isEnabled(true).build();
-                portList.add(portDescriptions);
-            }
-
-            portMap.put(deviceId, portList);
-            return portList;
-        }
-
-        @Override
-        public void addLink(BgpLinkLsNlriVer4 linkNlri, PathAttrNlriDetails details) throws BgpParseException {
-            log.debug("Addlink {}", linkNlri.toString());
-
-            LinkDescription linkDes = buildLinkDes(linkNlri, details, true);
-
-
-
-            /*
-             * Update link ports and configure bandwidth on source and destination port using networkConfig service
-             * Only master of source link registers for bandwidth
-             */
-            if (mastershipService.isLocalMaster(linkDes.src().deviceId())) {
-                registerBandwidthAndTeMetric(linkDes, details);
-            }
-
-            //Updating ports of the link
-            deviceProviderService.updatePorts(linkDes.src().deviceId(), buildPortDescriptions(linkDes.src().deviceId(),
-                    linkDes.src().port()));
-
-            deviceProviderService.updatePorts(linkDes.dst().deviceId(), buildPortDescriptions(linkDes.dst().deviceId(),
-                    linkDes.dst().port()));
-
-            linkProviderService.linkDetected(linkDes);
-        }
-
-        //Build link description.
-        private LinkDescription buildLinkDes(BgpLinkLsNlriVer4 linkNlri, PathAttrNlriDetails details, boolean isAddLink)
-                throws BgpParseException {
-            long srcAddress = 0;
-            long dstAddress = 0;
-            boolean localPseduo = false;
-            boolean remotePseduo = false;
-
-            List<BgpValueType> localTlvs = linkNlri.getLinkIdentifier().localNodeDescriptors().getSubTlvs();
-            for (BgpValueType localTlv : localTlvs) {
-                if (localTlv instanceof IsIsPseudonode || localTlv instanceof OspfPseudonode) {
-                    localPseduo = true;
-                }
-            }
-            List<BgpValueType> remoteTlvs = linkNlri.getLinkIdentifier().remoteNodeDescriptors().getSubTlvs();
-            for (BgpValueType remoteTlv : remoteTlvs) {
-                if (remoteTlv instanceof IsIsPseudonode || remoteTlv instanceof OspfPseudonode) {
-                    remotePseduo = true;
-                }
-            }
-
-            List<BgpValueType> tlvs = linkNlri.getLinkIdentifier().linkDescriptors();
-            for (BgpValueType tlv : tlvs) {
-                if (tlv instanceof LinkLocalRemoteIdentifiersTlv) {
-                    srcAddress = ((LinkLocalRemoteIdentifiersTlv) tlv).getLinkLocalIdentifier();
-                    //Set 32nd bit.
-                    srcAddress = srcAddress | IDENTIFIER_SET;
-                    dstAddress = ((LinkLocalRemoteIdentifiersTlv) tlv).getLinkRemoteIdentifier();
-                    dstAddress = dstAddress | IDENTIFIER_SET;
-                } else if (tlv instanceof IPv4AddressTlv) {
-                    if (tlv.getType() == BgpLinkLSIdentifier.IPV4_INTERFACE_ADDRESS_TYPE) {
-                        srcAddress = ((IPv4AddressTlv) tlv).address().toInt();
-                    } else {
-                        dstAddress = ((IPv4AddressTlv) tlv).address().toInt();
-                    }
-                }
-            }
-
-            DeviceId srcId = deviceId(uri(new BgpDpid(linkNlri, BgpDpid.NODE_DESCRIPTOR_LOCAL).toString()));
-            DeviceId dstId = deviceId(uri(new BgpDpid(linkNlri, BgpDpid.NODE_DESCRIPTOR_REMOTE).toString()));
-
-            if (localPseduo && srcAddress == 0) {
-                srcAddress = PSEUDO_PORT;
-            } else if (remotePseduo && dstAddress == 0) {
-                dstAddress = PSEUDO_PORT;
-            }
-
-            ConnectPoint src = new ConnectPoint(srcId, PortNumber.portNumber(srcAddress));
-            ConnectPoint dst = new ConnectPoint(dstId, PortNumber.portNumber(dstAddress));
-            BgpNodeLSNlriVer4 srcNodeNlri = new BgpNodeLSNlriVer4(linkNlri.getIdentifier(), linkNlri.getProtocolId()
-                    .getType(), new BgpNodeLSIdentifier(linkNlri.getLinkIdentifier().localNodeDescriptors()), false,
-                    linkNlri.getRouteDistinguisher());
-
-            BgpNodeLSNlriVer4 dstNodeNlri = new BgpNodeLSNlriVer4(linkNlri.getIdentifier(), linkNlri.getProtocolId()
-                    .getType(), new BgpNodeLSIdentifier(linkNlri.getLinkIdentifier().remoteNodeDescriptors()), false,
-                    linkNlri.getRouteDistinguisher());
-
-            addOrDeletePseudoNode(isAddLink, localPseduo, remotePseduo, srcNodeNlri,
-                     dstNodeNlri, srcId, dstId, details);
-            DefaultAnnotations.Builder annotationBuilder = DefaultAnnotations.builder();
-            if (details != null) {
-                annotationBuilder = getAnnotations(annotationBuilder, false, details);
-            }
-
-            return new DefaultLinkDescription(src, dst, Link.Type.DIRECT, false, annotationBuilder.build());
-        }
-
-        private void addOrDeletePseudoNode(boolean isAddLink, boolean localPseduo, boolean remotePseduo,
-                BgpNodeLSNlriVer4 srcNodeNlri, BgpNodeLSNlriVer4 dstNodeNlri, DeviceId srcId, DeviceId dstId,
-                PathAttrNlriDetails details) {
-            if (isAddLink) {
-                if (localPseduo) {
-                    if (deviceService.getDevice(srcId) == null) {
-                        for (BgpNodeListener l : controller.listener()) {
-                            l.addNode(srcNodeNlri, details);
-                        }
-                    }
-                } else if (remotePseduo) {
-                    if (deviceService.getDevice(dstId) == null) {
-                        for (BgpNodeListener l : controller.listener()) {
-                            l.addNode(dstNodeNlri, details);
-                        }
-                    }
-                }
-            } else {
-                if (localPseduo) {
-                    Set<Link> links = linkService.getDeviceLinks(srcId);
-                    if (links == null || links.isEmpty()) {
-                        for (BgpNodeListener l : controller.listener()) {
-                            l.deleteNode(srcNodeNlri);
-                        }
-                    }
-                } else if (remotePseduo) {
-                    log.info("Remote pseudo delete link ");
-                    Set<Link> links = linkService.getDeviceLinks(dstId);
-                    if (links == null || links.isEmpty()) {
-                        for (BgpNodeListener l : controller.listener()) {
-                            l.deleteNode(dstNodeNlri);
-                        }
-                    }
-                }
-            }
-        }
-
-        @Override
-        public void deleteLink(BgpLinkLsNlriVer4 linkNlri) throws BgpParseException {
-            log.debug("Delete link {}", linkNlri.toString());
-
-            if (linkProviderService == null) {
-                return;
-            }
-
-            LinkDescription linkDes = buildLinkDes(linkNlri, null, false);
-
-            /*
-             * Only master for the link src will release the bandwidth resource.
-             */
-            if (networkConfigService != null && mastershipService.isLocalMaster(linkDes.src().deviceId())) {
-                // Releases registered resource for this link
-                networkConfigService.removeConfig(LinkKey.linkKey(linkDes.src(), linkDes.dst()), TeLinkConfig.class);
-            }
-
-            linkProviderService.linkVanished(linkDes);
-
-            linkDes = new DefaultLinkDescription(linkDes.dst(), linkDes.src(), Link.Type.DIRECT,
-                    false, linkDes.annotations());
-            linkProviderService.linkVanished(linkDes);
-            if (networkConfigService != null && mastershipService.isLocalMaster(linkDes.src().deviceId())) {
-                // Releases registered resource for this link
-                networkConfigService.removeConfig(LinkKey.linkKey(linkDes.src(), linkDes.dst()), TeLinkConfig.class);
-            }
-
-        }
-    }
-
-    // Creates label resource pool for the specific device. For all devices label range is 5122-9217
-    private void createDevicePool(DeviceId deviceId) {
-        if (labelResourceAdminService == null) {
-            return;
-        }
-
-        labelResourceAdminService.createDevicePool(deviceId, beginLabel, endLabel);
-    }
-
-    private void registerBandwidthAndTeMetric(LinkDescription linkDes, PathAttrNlriDetails details) {
-        if (details ==  null) {
-            log.error("Unable to register bandwidth ");
-            return;
-        }
-
-        List<BgpValueType> attribute = details.pathAttributes().stream()
-                .filter(attr -> attr instanceof LinkStateAttributes).collect(toList());
-        if (attribute.isEmpty()) {
-            return;
-        }
-
-        List<BgpValueType> tlvs = ((LinkStateAttributes) attribute.iterator().next()).linkStateAttributes();
-        double maxReservableBw = 0;
-        List<Float>  unreservedBw = new ArrayList<>();
-        int teMetric = 0;
-        int igpMetric = 0;
-
-        for (BgpValueType tlv : tlvs) {
-            switch (tlv.getType()) {
-            case LinkStateAttributes.ATTR_LINK_MAX_RES_BANDWIDTH:
-                maxReservableBw = ((BgpLinkAttrMaxLinkBandwidth) tlv).linkAttrMaxLinkBandwidth();
-                //will get in bits/second , convert to MBPS to store in network config service
-                maxReservableBw = maxReservableBw / 1000000;
-                break;
-            case LinkStateAttributes.ATTR_LINK_UNRES_BANDWIDTH:
-                unreservedBw = ((BgpLinkAttrUnRsrvdLinkBandwidth) tlv).getLinkAttrUnRsrvdLinkBandwidth();
-                break;
-            case LinkStateAttributes.ATTR_LINK_TE_DEFAULT_METRIC:
-                teMetric = ((BgpLinkAttrTeDefaultMetric) tlv).attrLinkDefTeMetric();
-                break;
-            case LinkStateAttributes.ATTR_LINK_IGP_METRIC:
-                igpMetric = ((BgpLinkAttrIgpMetric) tlv).attrLinkIgpMetric();
-                break;
-            default: // do nothing
-            }
-        }
-
-        //Configure bandwidth for src and dst port
-        TeLinkConfig config = networkConfigService.addConfig(LinkKey.linkKey(linkDes.src(), linkDes.dst()),
-                                                             TeLinkConfig.class);
-        Double bw = 0.0;
-        if (unreservedBw.size() > 0) {
-            bw = unreservedBw.get(0).doubleValue(); //Low priority
-        }
-
-        config.maxResvBandwidth(maxReservableBw)
-                .unResvBandwidth(bw).teCost(teMetric).igpCost(igpMetric);
-                //.apply();
-
-        networkConfigService.applyConfig(LinkKey.linkKey(linkDes.src(),
-                linkDes.dst()), TeLinkConfig.class, config.node());
-    }
-
-    private DefaultAnnotations.Builder getAnnotations(DefaultAnnotations.Builder annotationBuilder, boolean isNode,
-            PathAttrNlriDetails details) {
-
-        List<BgpValueType> attribute = details.pathAttributes().stream()
-                .filter(attr -> attr instanceof LinkStateAttributes).collect(toList());
-        if (attribute.isEmpty()) {
-            return annotationBuilder;
-        }
-        List<BgpValueType> tlvs = ((LinkStateAttributes) attribute.iterator().next()).linkStateAttributes();
-        boolean abrBit = false;
-        boolean externalBit = false;
-        boolean pseudo = false;
-        byte[] areaId = null;
-        Ip4Address routerId = null;
-        for (BgpValueType tlv : tlvs) {
-            switch (tlv.getType()) {
-            case LinkStateAttributes.ATTR_NODE_FLAG_BITS:
-                abrBit = ((BgpAttrNodeFlagBitTlv) tlv).abrBit();
-                externalBit = ((BgpAttrNodeFlagBitTlv) tlv).externalBit();
-                break;
-            case NodeDescriptors.IGP_ROUTERID_TYPE:
-                if (tlv instanceof IsIsPseudonode || tlv instanceof OspfPseudonode) {
-                    pseudo = true;
-                }
-                break;
-            case LinkStateAttributes.ATTR_NODE_ISIS_AREA_ID:
-                areaId = ((BgpAttrNodeIsIsAreaId) tlv).attrNodeIsIsAreaId();
-                break;
-            case LinkStateAttributes.ATTR_NODE_IPV4_LOCAL_ROUTER_ID:
-                routerId = ((BgpAttrRouterIdV4) tlv).attrRouterId();
-                break;
-            default: // do nothing
-            }
-        }
-
-        // Annotations for device
-        if (isNode) {
-            boolean internalBit = false;
-            if (!abrBit && !externalBit) {
-                internalBit = true;
-            }
-
-            annotationBuilder.set(EXTERNAL_BIT, String.valueOf(externalBit));
-            annotationBuilder.set(ABR_BIT, String.valueOf(abrBit));
-            annotationBuilder.set(INTERNAL_BIT, String.valueOf(internalBit));
-            annotationBuilder.set(PSEUDO, String.valueOf(pseudo));
-
-            if (areaId != null) {
-                annotationBuilder.set(AREAID, new String(areaId));
-            }
-            if (routerId != null) {
-                // LsrID
-                annotationBuilder.set(LSRID, String.valueOf(routerId));
-            }
-        }
-        return annotationBuilder;
-    }
-
-    @Override
-    public void triggerProbe(DeviceId deviceId) {
-        // TODO Auto-generated method stub
-    }
-
-    @Override
-    public void roleChanged(DeviceId deviceId, MastershipRole newRole) {
-    }
-
-    @Override
-    public boolean isReachable(DeviceId deviceId) {
-        return deviceService.isAvailable(deviceId);
-    }
-
-    @Override
-    public void changePortState(DeviceId deviceId, PortNumber portNumber,
-                                boolean enable) {
-    }
-}
diff --git a/providers/bgp/topology/src/main/java/org/onosproject/provider/bgp/topology/impl/package-info.java b/providers/bgp/topology/src/main/java/org/onosproject/provider/bgp/topology/impl/package-info.java
deleted file mode 100644
index d868dce..0000000
--- a/providers/bgp/topology/src/main/java/org/onosproject/provider/bgp/topology/impl/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-/**
- *Provider that uses BGP controller as a means of infrastructure topology discovery.
- */
-package org.onosproject.provider.bgp.topology.impl;
\ No newline at end of file
diff --git a/providers/bgp/topology/src/test/java/org/onosproject/provider/bgp/topology/impl/BgpControllerAdapter.java b/providers/bgp/topology/src/test/java/org/onosproject/provider/bgp/topology/impl/BgpControllerAdapter.java
deleted file mode 100644
index 8ba85bf..0000000
--- a/providers/bgp/topology/src/test/java/org/onosproject/provider/bgp/topology/impl/BgpControllerAdapter.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.bgp.topology.impl;
-
-import org.onosproject.bgp.controller.BgpCfg;
-import org.onosproject.bgp.controller.BgpController;
-import org.onosproject.bgp.controller.BgpId;
-import org.onosproject.bgp.controller.BgpLinkListener;
-import org.onosproject.bgp.controller.BgpLocalRib;
-import org.onosproject.bgp.controller.BgpNodeListener;
-import org.onosproject.bgp.controller.BgpPeer;
-import org.onosproject.bgp.controller.BgpPeerManager;
-import org.onosproject.bgp.controller.BgpPrefixListener;
-import org.onosproject.bgp.controller.BgpRouteListener;
-import org.onosproject.bgpio.exceptions.BgpParseException;
-import org.onosproject.bgpio.protocol.BgpMessage;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Adapter implementation for BGP controller.
- */
-public class BgpControllerAdapter implements BgpController {
-    @Override
-    public Iterable<BgpPeer> getPeers() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public BgpPeer getPeer(BgpId bgpId) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public void writeMsg(BgpId bgpId, BgpMessage msg) {
-        // TODO Auto-generated method stub
-    }
-
-    @Override
-    public void processBgpPacket(BgpId bgpId, BgpMessage msg) throws BgpParseException {
-        // TODO Auto-generated method stub
-    }
-
-    @Override
-    public void closeConnectedPeers() {
-        // TODO Auto-generated method stub
-    }
-
-    @Override
-    public BgpCfg getConfig() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public int connectedPeerCount() {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    @Override
-    public BgpLocalRib bgpLocalRibVpn() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public BgpLocalRib bgpLocalRib() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public BgpPeerManager peerManager() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Map<BgpId, BgpPeer> connectedPeers() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Set<BgpNodeListener> listener() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Set<BgpLinkListener> linkListener() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Set<BgpPrefixListener> prefixListener() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public void activeSessionExceptionAdd(String peerId, String exception) {
-        return;
-    }
-
-    @Override
-    public void closedSessionExceptionAdd(String peerId, String exception) {
-        return;
-    }
-
-    @Override
-    public Map<String, List<String>> activeSessionMap() {
-        return null;
-    }
-
-    @Override
-    public Map<String, List<String>> closedSessionMap() {
-        return null;
-    }
-
-    @Override
-    public void addRouteListener(BgpRouteListener listener) {
-
-    }
-
-    @Override
-    public void removeRouteListener(BgpRouteListener listener) {
-
-    }
-
-    @Override
-    public Set<BgpRouteListener> routeListener() {
-        return null;
-    }
-
-    @Override
-    public void addListener(BgpNodeListener listener) {
-        // TODO Auto-generated method stub
-    }
-
-    @Override
-    public void removeListener(BgpNodeListener listener) {
-        // TODO Auto-generated method stub
-    }
-
-    @Override
-    public void addLinkListener(BgpLinkListener listener) {
-        // TODO Auto-generated method stub
-    }
-
-    @Override
-    public void removeLinkListener(BgpLinkListener listener) {
-        // TODO Auto-generated method stub
-    }
-
-    @Override
-    public void addPrefixListener(BgpPrefixListener listener) {
-        // TODO Auto-generated method stub
-    }
-
-    @Override
-    public void removePrefixListener(BgpPrefixListener listener) {
-        // TODO Auto-generated method stub
-    }
-
-    @Override
-    public void notifyTopologyChange() {
-        // TODO Auto-generated method stub
-    }
-}
diff --git a/providers/bgp/topology/src/test/java/org/onosproject/provider/bgp/topology/impl/BgpTopologyProviderTest.java b/providers/bgp/topology/src/test/java/org/onosproject/provider/bgp/topology/impl/BgpTopologyProviderTest.java
deleted file mode 100644
index f7a7ce1..0000000
--- a/providers/bgp/topology/src/test/java/org/onosproject/provider/bgp/topology/impl/BgpTopologyProviderTest.java
+++ /dev/null
@@ -1,1077 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.provider.bgp.topology.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.JsonNodeFactory;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.junit.TestUtils;
-import org.onlab.junit.TestUtils.TestUtilsException;
-import org.onlab.packet.ChassisId;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.bgp.controller.BgpLinkListener;
-import org.onosproject.bgp.controller.BgpNodeListener;
-import org.onosproject.bgpio.exceptions.BgpParseException;
-import org.onosproject.bgpio.protocol.linkstate.BgpLinkLSIdentifier;
-import org.onosproject.bgpio.protocol.linkstate.BgpLinkLsNlriVer4;
-import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSIdentifier;
-import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4;
-import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4.ProtocolType;
-import org.onosproject.bgpio.protocol.linkstate.NodeDescriptors;
-import org.onosproject.bgpio.protocol.linkstate.PathAttrNlriDetails;
-import org.onosproject.bgpio.types.AutonomousSystemTlv;
-import org.onosproject.bgpio.types.BgpValueType;
-import org.onosproject.bgpio.types.IsIsNonPseudonode;
-import org.onosproject.bgpio.types.LinkLocalRemoteIdentifiersTlv;
-import org.onosproject.bgpio.types.LinkStateAttributes;
-import org.onosproject.bgpio.types.RouteDistinguisher;
-import org.onosproject.bgpio.types.attr.BgpAttrNodeFlagBitTlv;
-import org.onosproject.bgpio.types.attr.BgpAttrNodeIsIsAreaId;
-import org.onosproject.bgpio.types.attr.BgpAttrRouterIdV4;
-import org.onosproject.bgpio.types.attr.BgpLinkAttrIgpMetric;
-import org.onosproject.bgpio.types.attr.BgpLinkAttrMaxLinkBandwidth;
-import org.onosproject.bgpio.types.attr.BgpLinkAttrTeDefaultMetric;
-import org.onosproject.bgpio.util.Constants;
-import org.onosproject.cluster.NodeId;
-import org.onosproject.incubator.net.resource.label.LabelResourceAdminService;
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.incubator.net.resource.label.LabelResourcePool;
-import org.onosproject.mastership.MastershipServiceAdapter;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultDevice;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.LinkKey;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.config.Config;
-import org.onosproject.net.config.ConfigApplyDelegate;
-import org.onosproject.net.config.ConfigFactory;
-import org.onosproject.net.config.NetworkConfigRegistryAdapter;
-import org.onosproject.net.config.basics.BandwidthCapacity;
-import org.onosproject.net.device.DeviceDescription;
-import org.onosproject.net.device.DeviceEvent;
-import org.onosproject.net.device.DeviceListener;
-import org.onosproject.net.device.DeviceProvider;
-import org.onosproject.net.device.DeviceProviderRegistry;
-import org.onosproject.net.device.DeviceProviderService;
-import org.onosproject.net.device.DeviceServiceAdapter;
-import org.onosproject.net.device.PortDescription;
-import org.onosproject.net.device.PortStatistics;
-import org.onosproject.net.link.LinkDescription;
-import org.onosproject.net.link.LinkProvider;
-import org.onosproject.net.link.LinkProviderRegistry;
-import org.onosproject.net.link.LinkProviderService;
-import org.onosproject.net.link.LinkServiceAdapter;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.resource.Resource;
-import org.onosproject.net.resource.ResourceAdminService;
-import org.onosproject.net.resource.ResourceId;
-import org.onosproject.pcep.api.TeLinkConfig;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArraySet;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.nullValue;
-import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsNot.not;
-import static org.onosproject.net.Link.State.ACTIVE;
-import static org.onosproject.net.MastershipRole.MASTER;
-
-/**
- * Test for BGP topology provider.
- */
-public class BgpTopologyProviderTest {
-    private static final DeviceId DID2 = DeviceId.deviceId("l3:rd=0::routinguniverse=0:asn=10");
-    private static final String UNKNOWN = "unknown";
-    public static ProviderId providerId = new ProviderId("l3", "foo");
-    private static final NodeId NODE1 = new NodeId("Master1");
-
-    private final BgpTopologyProvider provider = new BgpTopologyProvider();
-    private final TestDeviceRegistry nodeRegistry = new TestDeviceRegistry();
-    private final TestLinkRegistry linkRegistry = new TestLinkRegistry();
-    private final MockBgpController controller = new MockBgpController();
-    private MockDeviceService deviceService = new MockDeviceService();
-    private MockLinkService linkService = new MockLinkService();
-    private MockMastershipService mastershipService = new MockMastershipService();
-    private MockNetConfigRegistryAdapter networkConfigService = new MockNetConfigRegistryAdapter();
-    private MockLabelResourceService labelResourceAdminService = new MockLabelResourceService();
-    private Map<DeviceId, Device> deviceMap = new HashMap<>();
-    private DeviceListener listener;
-
-    @Before
-    public void startUp() throws TestUtilsException {
-        provider.deviceProviderRegistry = nodeRegistry;
-        provider.linkProviderRegistry = linkRegistry;
-        provider.controller = controller;
-        provider.deviceService = deviceService;
-        provider.linkService = linkService;
-        provider.labelResourceAdminService = labelResourceAdminService;
-        provider.mastershipService = mastershipService;
-        provider.networkConfigService = networkConfigService;
-        listener = TestUtils.getField(provider, "deviceListener");
-        provider.activate();
-        assertThat("device provider should be registered", not(nodeRegistry.provider));
-        assertThat("link provider should be registered", not(linkRegistry.linkProvider));
-        assertThat("node listener should be registered", not(controller.nodeListener));
-        assertThat("link listener should be registered", not(controller.linkListener));
-    }
-
-    @After
-    public void tearDown() {
-        provider.deactivate();
-        provider.controller = null;
-        provider.deviceService = null;
-        provider.deviceProviderRegistry = null;
-        provider.linkService = null;
-        provider.mastershipService = null;
-        provider.networkConfigService = null;
-        provider.labelResourceAdminService = null;
-        assertThat(controller.nodeListener, is(new HashSet<BgpNodeListener>()));
-        assertThat(controller.linkListener, is(new HashSet<BgpLinkListener>()));
-    }
-
-    private class MockLabelResourceService implements LabelResourceAdminService {
-
-        Map<DeviceId, LabelResourcePool> resourcePool = new HashMap<>();
-
-        @Override
-        public boolean createDevicePool(DeviceId deviceId, LabelResourceId beginLabel, LabelResourceId endLabel) {
-            LabelResourcePool labelResource = new LabelResourcePool(deviceId.toString(),
-                    beginLabel.labelId(),
-                    endLabel.labelId());
-            if (resourcePool.containsValue(labelResource)) {
-                return false;
-            }
-
-            resourcePool.put(deviceId, labelResource);
-            return true;
-        }
-
-        @Override
-        public boolean createGlobalPool(LabelResourceId beginLabel, LabelResourceId endLabel) {
-            // TODO Auto-generated method stub
-            return false;
-        }
-
-        @Override
-        public boolean destroyDevicePool(DeviceId deviceId) {
-            LabelResourcePool devicePool = resourcePool.get(deviceId);
-
-            if (devicePool == null) {
-                return false;
-            }
-
-            resourcePool.remove(deviceId);
-            return true;
-        }
-
-        @Override
-        public boolean destroyGlobalPool() {
-            // TODO Auto-generated method stub
-            return false;
-        }
-    }
-
-    /* Mock test for device service */
-    private class MockNetConfigRegistryAdapter extends NetworkConfigRegistryAdapter {
-        private ConfigFactory cfgFactory;
-        private Map<ConnectPoint, BandwidthCapacity> classConfig = new HashMap<>();
-        private Map<LinkKey, TeLinkConfig> teLinkConfig = new HashMap<>();
-
-        public Map<LinkKey, TeLinkConfig> getTeLinkConfig() {
-            return teLinkConfig;
-        }
-
-        @Override
-        public void registerConfigFactory(ConfigFactory configFactory) {
-            cfgFactory = configFactory;
-        }
-
-        @Override
-        public void unregisterConfigFactory(ConfigFactory configFactory) {
-            cfgFactory = null;
-        }
-
-        @Override
-        public <S, C extends Config<S>> C addConfig(S subject, Class<C> configClass) {
-            if (configClass == BandwidthCapacity.class) {
-                BandwidthCapacity devCap = new BandwidthCapacity();
-                classConfig.put((ConnectPoint) subject, devCap);
-
-                JsonNode node = new ObjectNode(new MockJsonNode());
-                ObjectMapper mapper = new ObjectMapper();
-                ConfigApplyDelegate delegate = new InternalApplyDelegate();
-                devCap.init((ConnectPoint) subject, null, node, mapper, delegate);
-                return (C) devCap;
-            } else if (configClass == TeLinkConfig.class) {
-                TeLinkConfig linkConfig = new TeLinkConfig();
-                teLinkConfig.put((LinkKey) subject, linkConfig);
-
-                JsonNode node = new ObjectNode(new MockJsonNode());
-                ObjectMapper mapper = new ObjectMapper();
-                ConfigApplyDelegate delegate = new InternalApplyDelegate();
-                linkConfig.init((LinkKey) subject, null, node, mapper, delegate);
-                return (C) linkConfig;
-            }
-
-            return null;
-        }
-
-        @Override
-        public <S, C extends Config<S>> void removeConfig(S subject, Class<C> configClass) {
-            if (configClass == BandwidthCapacity.class) {
-                classConfig.remove(subject);
-            } else if (configClass == TeLinkConfig.class) {
-                teLinkConfig.remove(subject);
-            }
-        }
-
-        @Override
-        public <S, C extends Config<S>> C getConfig(S subject, Class<C> configClass) {
-            if (configClass == BandwidthCapacity.class) {
-                return (C) classConfig.get(subject);
-            } else if (configClass == TeLinkConfig.class) {
-                return (C) teLinkConfig.get(subject);
-            }
-            return null;
-        }
-
-        private class MockJsonNode extends JsonNodeFactory {
-        }
-
-        // Auxiliary delegate to receive notifications about changes applied to
-        // the network configuration - by the apps.
-        private class InternalApplyDelegate implements ConfigApplyDelegate {
-            @Override
-            public void onApply(Config config) {
-            }
-        }
-    }
-
-    private class MockMastershipService extends MastershipServiceAdapter {
-        @Override
-        public MastershipRole getLocalRole(DeviceId deviceId) {
-            return MASTER;
-        }
-
-        @Override
-        public boolean isLocalMaster(DeviceId deviceId) {
-            return getLocalRole(deviceId) == MASTER;
-        }
-
-        @Override
-        public NodeId getMasterFor(DeviceId deviceId) {
-            return NODE1;
-        }
-    }
-
-    private class MockResourceAdminService implements ResourceAdminService {
-        Map<ResourceId, List<Resource>> registeredRes = new HashMap<>();
-
-        @Override
-        public boolean register(List<? extends Resource> resources) {
-            for (Resource res : resources) {
-                List<Resource> resource = new LinkedList<>();
-                resource.add(res);
-                if (registeredRes.containsKey(res.id())) {
-                    resource.addAll(registeredRes.get(res.id()));
-                }
-                registeredRes.put(res.id(), resource);
-            }
-            return true;
-        }
-
-        @Override
-        public boolean unregister(List<? extends ResourceId> ids) {
-            for (ResourceId id : ids) {
-                if (registeredRes.containsKey(id)) {
-                    registeredRes.remove(id);
-                } else {
-                    return false;
-                }
-            }
-            return true;
-        }
-    }
-
-    private class MockLinkService extends LinkServiceAdapter {
-
-        @Override
-        public Link getLink(ConnectPoint src, ConnectPoint dst) {
-            for (Link link : linkRegistry.links) {
-                if (link.src().equals(src) && link.dst().equals(dst)) {
-                    return link;
-                }
-            }
-            return null;
-        }
-    }
-
-    /* Class implement device test registry */
-    private class TestDeviceRegistry implements DeviceProviderRegistry {
-        DeviceProvider provider;
-
-        Set<DeviceId> connected = new HashSet<>();
-        Map<DeviceId, List<PortDescription>> portUpdated = new HashMap<>();
-
-        @Override
-        public DeviceProviderService register(DeviceProvider provider) {
-            this.provider = provider;
-            return new TestProviderService();
-        }
-
-        @Override
-        public void unregister(DeviceProvider provider) {
-        }
-
-        @Override
-        public Set<ProviderId> getProviders() {
-            return null;
-        }
-
-        private class TestProviderService implements DeviceProviderService {
-
-            @Override
-            public DeviceProvider provider() {
-                return null;
-            }
-
-            @Override
-            public void deviceConnected(DeviceId deviceId, DeviceDescription deviceDescription) {
-                if (!deviceId.equals(DID2)) {
-                    connected.add(deviceId);
-                    Device device = new DefaultDevice(BgpTopologyProviderTest.providerId, deviceId, Device.Type.ROUTER,
-                            UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, new ChassisId(), deviceDescription.annotations());
-                    deviceMap.put(deviceId, device);
-                }
-            }
-
-            @Override
-            public void deviceDisconnected(DeviceId deviceId) {
-                if (!deviceId.equals(DID2)) {
-                    connected.remove(deviceId);
-                    deviceMap.remove(deviceId);
-                }
-            }
-
-            @Override
-            public void updatePorts(DeviceId deviceId, List<PortDescription> portDescriptions) {
-                portUpdated.put(deviceId, portDescriptions);
-            }
-
-            @Override
-            public void portStatusChanged(DeviceId deviceId, PortDescription portDescription) {
-                // TODO Auto-generated method stub
-
-            }
-
-            @Override
-            public void receivedRoleReply(DeviceId deviceId, MastershipRole requested, MastershipRole response) {
-                // TODO Auto-generated method stub
-
-            }
-
-            @Override
-            public void updatePortStatistics(DeviceId deviceId, Collection<PortStatistics> portStatistics) {
-                // TODO Auto-generated method stub
-
-            }
-        }
-    }
-
-    /* Class implement device test registry */
-    private class TestLinkRegistry implements LinkProviderRegistry {
-        LinkProvider linkProvider;
-        LinkedList<Link> links = new LinkedList<>();
-
-        @Override
-        public LinkProviderService register(LinkProvider provider) {
-            this.linkProvider = provider;
-            return new TestProviderService();
-        }
-
-        @Override
-        public void unregister(LinkProvider provider) {
-            // TODO Auto-generated method stub
-        }
-
-        @Override
-        public Set<ProviderId> getProviders() {
-            return null;
-        }
-
-        private class TestProviderService implements LinkProviderService {
-
-            @Override
-            public void linkDetected(LinkDescription linkDescription) {
-                links.add(DefaultLink.builder()
-                        .src(linkDescription.src())
-                        .dst(linkDescription.dst())
-                        .state(ACTIVE)
-                        .type(linkDescription.type())
-                        .providerId(BgpTopologyProviderTest.providerId)
-                        .annotations(linkDescription.annotations())
-                        .build());
-            }
-
-            @Override
-            public void linkVanished(LinkDescription linkDescription) {
-                links.remove(DefaultLink.builder().src(linkDescription.src())
-                        .dst(linkDescription.dst()).state(ACTIVE).type(linkDescription.type())
-                        .providerId(BgpTopologyProviderTest.providerId).build());
-            }
-
-            @Override
-            public void linksVanished(ConnectPoint connectPoint) {
-                // TODO Auto-generated method stub
-            }
-
-            @Override
-            public void linksVanished(DeviceId deviceId) {
-                // TODO Auto-generated method stub
-            }
-
-            @Override
-            public LinkProvider provider() {
-                // TODO Auto-generated method stub
-                return null;
-            }
-        }
-    }
-
-    /* Test class for BGP controller */
-    private class MockBgpController extends BgpControllerAdapter {
-        protected Set<BgpNodeListener> nodeListener = new CopyOnWriteArraySet<>();
-        protected Set<BgpLinkListener> linkListener = new CopyOnWriteArraySet<>();
-
-        @Override
-        public void addListener(BgpNodeListener nodeListener) {
-            this.nodeListener.add(nodeListener);
-        }
-
-        @Override
-        public void removeListener(BgpNodeListener nodeListener) {
-            this.nodeListener.remove(nodeListener);
-        }
-
-        @Override
-        public void addLinkListener(BgpLinkListener linkListener) {
-            this.linkListener.add(linkListener);
-        }
-
-        @Override
-        public void removeLinkListener(BgpLinkListener linkListener) {
-            this.linkListener.remove(linkListener);
-        }
-    }
-
-    /* Mock test for device service */
-    private class MockDeviceService extends DeviceServiceAdapter {
-        @Override
-        public Device getDevice(DeviceId deviceId) {
-            return deviceMap.get(deviceId);
-        }
-    }
-
-    /**
-     * Validate node is added to the device validating URI, RIB should get updated properly.
-     */
-    @Test
-    public void bgpTopologyProviderTestAddDevice1() {
-        LinkedList<BgpValueType> subTlvs = new LinkedList<>();
-        BgpValueType tlv = new AutonomousSystemTlv(100);
-        short deslength = AutonomousSystemTlv.LENGTH;
-        short desType = AutonomousSystemTlv.TYPE;
-
-        subTlvs.add(tlv);
-        BgpNodeLSIdentifier localNodeDescriptors = new BgpNodeLSIdentifier(new NodeDescriptors(subTlvs, deslength,
-                                                                                               desType));
-        BgpNodeLSNlriVer4 nodeNlri = new BgpNodeLSNlriVer4(0, (byte) Constants.DIRECT, localNodeDescriptors, false,
-                                                           new RouteDistinguisher());
-
-        PathAttrNlriDetails details = new PathAttrNlriDetails();
-        details.setIdentifier(0);
-        details.setProtocolID(ProtocolType.DIRECT);
-        List<BgpValueType> pathAttributes = new LinkedList<>();
-        details.setPathAttribute(pathAttributes);
-
-        for (BgpNodeListener l : controller.nodeListener) {
-            l.addNode(nodeNlri, details);
-            assertThat(nodeRegistry.connected.size(), is(1));
-            l.deleteNode(nodeNlri);
-            assertThat(nodeRegistry.connected.size(), is(0));
-        }
-    }
-
-    /**
-     * Validate node is not added to the device for invalid URI, RIB count should be zero.
-     */
-    @Test
-    public void bgpTopologyProviderTestAddDevice2() {
-        LinkedList<BgpValueType> subTlvs;
-        BgpValueType tlv = new AutonomousSystemTlv(10);
-        short deslength = AutonomousSystemTlv.LENGTH;
-        short desType = AutonomousSystemTlv.TYPE;
-
-        PathAttrNlriDetails details = new PathAttrNlriDetails();
-        details.setIdentifier(0);
-        details.setProtocolID(ProtocolType.DIRECT);
-        List<BgpValueType> pathAttributes = new LinkedList<>();
-        details.setPathAttribute(pathAttributes);
-
-        subTlvs = new LinkedList<>();
-        subTlvs.add(tlv);
-        BgpNodeLSIdentifier localNodeDescriptors = new BgpNodeLSIdentifier(new NodeDescriptors(subTlvs, deslength,
-                                                                                               desType));
-        BgpNodeLSNlriVer4 nodeNlri = new BgpNodeLSNlriVer4(0, (byte) Constants.DIRECT, localNodeDescriptors, false,
-                                                           new RouteDistinguisher());
-
-
-        for (BgpNodeListener l : controller.nodeListener) {
-            l.addNode(nodeNlri, details);
-            assertThat(nodeRegistry.connected.size(), is(0));
-        }
-    }
-
-    /**
-     * Delete node when node does not exist, RIB count should be zero.
-     */
-    @Test
-    public void bgpTopologyProviderTestAddDevice3() {
-        LinkedList<BgpValueType> subTlvs;
-        BgpValueType tlv = new AutonomousSystemTlv(10);
-        short deslength = AutonomousSystemTlv.LENGTH;
-        short desType = AutonomousSystemTlv.TYPE;
-
-        subTlvs = new LinkedList<>();
-        subTlvs.add(tlv);
-        BgpNodeLSIdentifier localNodeDescriptors = new BgpNodeLSIdentifier(new NodeDescriptors(subTlvs, deslength,
-                                                                                               desType));
-        BgpNodeLSNlriVer4 nodeNlri = new BgpNodeLSNlriVer4(0, (byte) Constants.DIRECT, localNodeDescriptors, false,
-                                                           new RouteDistinguisher());
-
-        for (BgpNodeListener l : controller.nodeListener) {
-            l.deleteNode(nodeNlri);
-            assertThat(nodeRegistry.connected.size(), is(0));
-        }
-    }
-
-
-    /**
-     * Validate node is added to the device with all device annotations.
-     */
-    @Test
-    public void bgpTopologyProviderTestAddDevice4() {
-        LinkedList<BgpValueType> subTlvs = new LinkedList<>();
-        BgpValueType tlv = new AutonomousSystemTlv(100);
-        short deslength = AutonomousSystemTlv.LENGTH;
-        short desType = AutonomousSystemTlv.TYPE;
-
-        subTlvs.add(tlv);
-        BgpNodeLSIdentifier localNodeDescriptors = new BgpNodeLSIdentifier(new NodeDescriptors(subTlvs, deslength,
-                                                                                               desType));
-        BgpNodeLSNlriVer4 nodeNlri = new BgpNodeLSNlriVer4(0, (byte) Constants.DIRECT, localNodeDescriptors, false,
-                                                           new RouteDistinguisher());
-
-        PathAttrNlriDetails details = new PathAttrNlriDetails();
-        details.setIdentifier(0);
-        details.setProtocolID(ProtocolType.DIRECT);
-        List<BgpValueType> pathAttributes = new LinkedList<>();
-        List<BgpValueType> linkStateAttr = new LinkedList<>();
-        tlv = BgpAttrNodeFlagBitTlv.of(true, true, true, false);
-        linkStateAttr.add(tlv);
-        tlv = BgpAttrNodeIsIsAreaId.of(new byte[] {01, 01, 01, 01});
-        linkStateAttr.add(tlv);
-        tlv = BgpAttrRouterIdV4.of(Ip4Address.valueOf("1.1.1.1"), LinkStateAttributes.ATTR_NODE_IPV4_LOCAL_ROUTER_ID);
-        linkStateAttr.add(tlv);
-        pathAttributes.add(new LinkStateAttributes(linkStateAttr));
-        details.setPathAttribute(pathAttributes);
-
-        for (BgpNodeListener l : controller.nodeListener) {
-            l.addNode(nodeNlri, details);
-
-            assertThat(deviceMap.values().iterator().next().annotations().value(BgpTopologyProvider.ABR_BIT),
-                    is("false"));
-            assertThat(deviceMap.values().iterator().next().annotations().value(BgpTopologyProvider.EXTERNAL_BIT),
-                    is("true"));
-            assertThat(deviceMap.values().iterator().next().annotations().value(BgpTopologyProvider.INTERNAL_BIT),
-                    is("false"));
-            assertThat(deviceMap.values().iterator().next().annotations().value(BgpTopologyProvider.PSEUDO),
-                    is("false"));
-            assertThat(deviceMap.values().iterator().next().annotations().value(BgpTopologyProvider.AREAID).getBytes(),
-                    is(new byte[] {01, 01, 01, 01}));
-            assertThat(deviceMap.values().iterator().next().annotations().value(BgpTopologyProvider.LSRID),
-                    is("1.1.1.1"));
-
-            assertThat(nodeRegistry.connected.size(), is(1));
-            l.deleteNode(nodeNlri);
-            assertThat(nodeRegistry.connected.size(), is(0));
-        }
-    }
-
-    /**
-     * Add a link and two devices.
-     *
-     * @throws BgpParseException while adding a link.
-     */
-    @Test
-    public void bgpTopologyProviderTestAddLink1() throws BgpParseException {
-        LinkedList<BgpValueType> localTlvs = new LinkedList<>();
-        LinkedList<BgpValueType> remoteTlvs = new LinkedList<>();
-        LinkedList<BgpValueType> linkdes = new LinkedList<>();
-        BgpValueType tlv = new AutonomousSystemTlv(10);
-        short deslength = AutonomousSystemTlv.LENGTH;
-        short desType = AutonomousSystemTlv.TYPE;
-
-        localTlvs.add(tlv);
-        remoteTlvs.add(tlv);
-        tlv = IsIsNonPseudonode.of(new byte[] {20, 20, 20, 20, 00, 20});
-        localTlvs.add(tlv);
-        tlv = IsIsNonPseudonode.of(new byte[] {30, 30, 30, 30, 00, 30});
-        remoteTlvs.add(tlv);
-        NodeDescriptors localNode = new NodeDescriptors(localTlvs, deslength, desType);
-        NodeDescriptors remoteNode = new NodeDescriptors(remoteTlvs, deslength, desType);
-        BgpNodeLSIdentifier localNodeDescriptors = new BgpNodeLSIdentifier(localNode);
-        BgpNodeLSNlriVer4 nodeNlri = new BgpNodeLSNlriVer4(0, (byte) Constants.DIRECT, localNodeDescriptors, false,
-                                                           new RouteDistinguisher());
-
-        BgpNodeLSIdentifier remoteNodeDescriptors = new BgpNodeLSIdentifier(remoteNode);
-        BgpNodeLSNlriVer4 remNodeNlri = new BgpNodeLSNlriVer4(0, (byte) Constants.DIRECT, remoteNodeDescriptors, false,
-                                                           new RouteDistinguisher());
-
-        PathAttrNlriDetails details = new PathAttrNlriDetails();
-        details.setIdentifier(0);
-        details.setProtocolID(ProtocolType.DIRECT);
-        List<BgpValueType> pathAttributes = new LinkedList<>();
-        details.setPathAttribute(pathAttributes);
-
-        tlv = LinkLocalRemoteIdentifiersTlv.of(99, 100);
-        linkdes.add(tlv);
-        BgpLinkLSIdentifier linkId = new BgpLinkLSIdentifier(localNode, remoteNode, linkdes);
-        BgpLinkLsNlriVer4 linkNlri = new BgpLinkLsNlriVer4((byte) Constants.DIRECT, 0, linkId,
-                new RouteDistinguisher(), false);
-        for (BgpNodeListener l : controller.nodeListener) {
-            l.addNode(nodeNlri, details);
-            assertThat(nodeRegistry.connected.size(), is(1));
-            l.addNode(remNodeNlri, details);
-            assertThat(nodeRegistry.connected.size(), is(2));
-        }
-        for (BgpLinkListener l : controller.linkListener) {
-            l.addLink(linkNlri, details);
-            assertThat(linkRegistry.links.size(), is(1));
-        }
-    }
-
-    /**
-     * Add a link and delete a link.
-     *
-     * @throws BgpParseException while adding or removing the link
-     */
-    @Test
-    public void bgpTopologyProviderTestAddLink2() throws BgpParseException {
-        LinkedList<BgpValueType> localTlvs = new LinkedList<>();
-        LinkedList<BgpValueType> remoteTlvs = new LinkedList<>();
-        LinkedList<BgpValueType> linkdes = new LinkedList<>();
-        BgpValueType tlv = new AutonomousSystemTlv(10);
-        short deslength = AutonomousSystemTlv.LENGTH;
-        short desType = AutonomousSystemTlv.TYPE;
-
-        localTlvs.add(tlv);
-        remoteTlvs.add(tlv);
-        tlv = IsIsNonPseudonode.of(new byte[] {20, 20, 20, 20, 00, 20});
-        localTlvs.add(tlv);
-        tlv = IsIsNonPseudonode.of(new byte[] {30, 30, 30, 30, 00, 30});
-        remoteTlvs.add(tlv);
-        NodeDescriptors localNode = new NodeDescriptors(localTlvs, deslength, desType);
-        NodeDescriptors remoteNode = new NodeDescriptors(remoteTlvs, deslength, desType);
-        BgpNodeLSIdentifier localNodeDescriptors = new BgpNodeLSIdentifier(localNode);
-        BgpNodeLSNlriVer4 nodeNlri = new BgpNodeLSNlriVer4(0, (byte) Constants.DIRECT, localNodeDescriptors, false,
-                                                           new RouteDistinguisher());
-
-        BgpNodeLSIdentifier remoteNodeDescriptors = new BgpNodeLSIdentifier(remoteNode);
-        BgpNodeLSNlriVer4 remNodeNlri = new BgpNodeLSNlriVer4(0, (byte) Constants.DIRECT, remoteNodeDescriptors, false,
-                                                           new RouteDistinguisher());
-
-        PathAttrNlriDetails details = new PathAttrNlriDetails();
-        details.setIdentifier(0);
-        details.setProtocolID(ProtocolType.DIRECT);
-        List<BgpValueType> pathAttributes = new LinkedList<>();
-        details.setPathAttribute(pathAttributes);
-
-        tlv = LinkLocalRemoteIdentifiersTlv.of(99, 100);
-        linkdes.add(tlv);
-        BgpLinkLSIdentifier linkId = new BgpLinkLSIdentifier(localNode, remoteNode, linkdes);
-        BgpLinkLsNlriVer4 linkNlri = new BgpLinkLsNlriVer4((byte) Constants.DIRECT, 0, linkId,
-                new RouteDistinguisher(), false);
-        for (BgpNodeListener l : controller.nodeListener) {
-            l.addNode(nodeNlri, details);
-            assertThat(nodeRegistry.connected.size(), is(1));
-            l.addNode(remNodeNlri, details);
-            assertThat(nodeRegistry.connected.size(), is(2));
-            l.deleteNode(nodeNlri);
-            assertThat(nodeRegistry.connected.size(), is(1));
-        }
-        for (BgpLinkListener l : controller.linkListener) {
-            l.addLink(linkNlri, details);
-            assertThat(linkRegistry.links.size(), is(1));
-            l.deleteLink(linkNlri);
-            assertThat(linkRegistry.links.size(), is(0));
-        }
-    }
-
-    /**
-     * Add a link and delete a link with registering/unregistering bandwidth.
-     *
-     * @throws BgpParseException while adding or removing the link
-     * @throws InterruptedException while registering for bandwidth
-     */
-    @Test
-    public void bgpTopologyProviderTestAddLink3() throws BgpParseException, InterruptedException {
-        LinkedList<BgpValueType> localTlvs = new LinkedList<>();
-        LinkedList<BgpValueType> remoteTlvs = new LinkedList<>();
-        LinkedList<BgpValueType> linkdes = new LinkedList<>();
-        BgpValueType tlv = new AutonomousSystemTlv(10);
-        short deslength = AutonomousSystemTlv.LENGTH;
-        short desType = AutonomousSystemTlv.TYPE;
-
-        localTlvs.add(tlv);
-        remoteTlvs.add(tlv);
-        tlv = IsIsNonPseudonode.of(new byte[] {20, 20, 20, 20, 00, 20});
-        localTlvs.add(tlv);
-        tlv = IsIsNonPseudonode.of(new byte[] {30, 30, 30, 30, 00, 30});
-        remoteTlvs.add(tlv);
-        NodeDescriptors localNode = new NodeDescriptors(localTlvs, deslength, desType);
-        NodeDescriptors remoteNode = new NodeDescriptors(remoteTlvs, deslength, desType);
-        BgpNodeLSIdentifier localNodeDescriptors = new BgpNodeLSIdentifier(localNode);
-        BgpNodeLSNlriVer4 nodeNlri = new BgpNodeLSNlriVer4(0, (byte) Constants.DIRECT, localNodeDescriptors, false,
-                                                           new RouteDistinguisher());
-
-        BgpNodeLSIdentifier remoteNodeDescriptors = new BgpNodeLSIdentifier(remoteNode);
-        BgpNodeLSNlriVer4 remNodeNlri = new BgpNodeLSNlriVer4(0, (byte) Constants.DIRECT, remoteNodeDescriptors, false,
-                                                           new RouteDistinguisher());
-
-        PathAttrNlriDetails details = new PathAttrNlriDetails();
-        details.setIdentifier(0);
-        details.setProtocolID(ProtocolType.DIRECT);
-        List<BgpValueType> pathAttributes = new LinkedList<>();
-        details.setPathAttribute(pathAttributes);
-
-        tlv = LinkLocalRemoteIdentifiersTlv.of(99, 100);
-        linkdes.add(tlv);
-        BgpLinkLSIdentifier linkId = new BgpLinkLSIdentifier(localNode, remoteNode, linkdes);
-        BgpLinkLsNlriVer4 linkNlri = new BgpLinkLsNlriVer4((byte) Constants.DIRECT, 0, linkId,
-                new RouteDistinguisher(), false);
-
-        for (BgpNodeListener l : controller.nodeListener) {
-            l.addNode(nodeNlri, details);
-            assertThat(nodeRegistry.connected.size(), is(1));
-            l.addNode(remNodeNlri, details);
-            assertThat(nodeRegistry.connected.size(), is(2));
-            l.deleteNode(remNodeNlri);
-            assertThat(nodeRegistry.connected.size(), is(1));
-        }
-
-        List<BgpValueType> linkPathAttributes = new LinkedList<>();
-        List<BgpValueType> linkStateAttr = new LinkedList<>();
-        tlv = BgpLinkAttrIgpMetric.of(10, 4);
-        linkStateAttr.add(tlv);
-        tlv = BgpLinkAttrTeDefaultMetric.of(20);
-        linkStateAttr.add(tlv);
-        tlv = BgpLinkAttrMaxLinkBandwidth.of(30, LinkStateAttributes.ATTR_LINK_MAX_RES_BANDWIDTH);
-        linkStateAttr.add(tlv);
-        linkPathAttributes.add(new LinkStateAttributes(linkStateAttr));
-        details.setPathAttribute(linkPathAttributes);
-
-        for (BgpLinkListener l : controller.linkListener) {
-            l.addLink(linkNlri, details);
-            assertThat(linkRegistry.links.size(), is(1));
-            TeLinkConfig config = networkConfigService.getTeLinkConfig().get(LinkKey.linkKey(linkRegistry.links
-                            .getFirst().src(), linkRegistry.links.getLast().dst()));
-
-            assertThat(config.igpCost(), is(10));
-            assertThat(config.teCost(), is(20));
-
-            l.deleteLink(linkNlri);
-            assertThat(linkRegistry.links.size(), is(0));
-        }
-    }
-
-    /**
-     * Invalid link.
-     *
-     * @throws BgpParseException while adding or deleting a link
-     */
-    @Test
-    public void bgpTopologyProviderTestDeleteLink3() throws BgpParseException {
-        LinkedList<BgpValueType> localTlvs = new LinkedList<>();
-        LinkedList<BgpValueType> remoteTlvs = new LinkedList<>();
-        LinkedList<BgpValueType> linkdes = new LinkedList<>();
-        BgpValueType tlv = new AutonomousSystemTlv(10);
-        short deslength = AutonomousSystemTlv.LENGTH;
-        short desType = AutonomousSystemTlv.TYPE;
-
-        localTlvs.add(tlv);
-        remoteTlvs.add(tlv);
-        tlv = IsIsNonPseudonode.of(new byte[] {20, 20, 20, 20, 00, 20});
-        localTlvs.add(tlv);
-        tlv = IsIsNonPseudonode.of(new byte[] {30, 30, 30, 30, 00, 30});
-        remoteTlvs.add(tlv);
-        NodeDescriptors localNode = new NodeDescriptors(localTlvs, deslength, desType);
-        NodeDescriptors remoteNode = new NodeDescriptors(remoteTlvs, deslength, desType);
-        BgpNodeLSIdentifier localNodeDescriptors = new BgpNodeLSIdentifier(localNode);
-        BgpNodeLSNlriVer4 nodeNlri = new BgpNodeLSNlriVer4(0, (byte) Constants.DIRECT, localNodeDescriptors, false,
-                                                           new RouteDistinguisher());
-
-        BgpNodeLSIdentifier remoteNodeDescriptors = new BgpNodeLSIdentifier(remoteNode);
-        BgpNodeLSNlriVer4 remNodeNlri = new BgpNodeLSNlriVer4(0, (byte) Constants.DIRECT, remoteNodeDescriptors, false,
-                                                           new RouteDistinguisher());
-
-        PathAttrNlriDetails details = new PathAttrNlriDetails();
-        details.setIdentifier(0);
-        details.setProtocolID(ProtocolType.DIRECT);
-        List<BgpValueType> pathAttributes = new LinkedList<>();
-        details.setPathAttribute(pathAttributes);
-
-        tlv = LinkLocalRemoteIdentifiersTlv.of(99, 100);
-        linkdes.add(tlv);
-        BgpLinkLSIdentifier linkId = new BgpLinkLSIdentifier(localNode, remoteNode, linkdes);
-        BgpLinkLsNlriVer4 linkNlri = new BgpLinkLsNlriVer4((byte) Constants.DIRECT, 0, linkId,
-                new RouteDistinguisher(), false);
-        for (BgpNodeListener l : controller.nodeListener) {
-            l.addNode(nodeNlri, details);
-            l.addNode(remNodeNlri, details);
-            assertThat(nodeRegistry.connected.size(), is(2));
-            l.deleteNode(nodeNlri);
-            assertThat(nodeRegistry.connected.size(), is(1));
-        }
-        for (BgpLinkListener l : controller.linkListener) {
-            l.deleteLink(linkNlri);
-            assertThat(linkRegistry.links.size(), is(0));
-        }
-    }
-
-    /**
-     * Add device check label registration is done.
-     *
-     * @throws BgpParseException while adding a device
-     */
-    @Test
-    public void bgpTopologyProviderDeviceTestLabel1() throws BgpParseException {
-        LinkedList<BgpValueType> subTlvs = new LinkedList<>();
-        BgpValueType tlv = new AutonomousSystemTlv(100);
-        short deslength = AutonomousSystemTlv.LENGTH;
-        short desType = AutonomousSystemTlv.TYPE;
-
-        subTlvs.add(tlv);
-        BgpNodeLSIdentifier localNodeDescriptors = new BgpNodeLSIdentifier(new NodeDescriptors(subTlvs, deslength,
-                                                                                               desType));
-        BgpNodeLSNlriVer4 nodeNlri = new BgpNodeLSNlriVer4(0, (byte) Constants.DIRECT, localNodeDescriptors, false,
-                                                           new RouteDistinguisher());
-
-        PathAttrNlriDetails details = new PathAttrNlriDetails();
-        details.setIdentifier(0);
-        details.setProtocolID(ProtocolType.DIRECT);
-        List<BgpValueType> pathAttributes = new LinkedList<>();
-        List<BgpValueType> linkStateAttributes = new LinkedList<>();
-        tlv = BgpAttrRouterIdV4.of(Ip4Address.valueOf("1.1.1.1"), LinkStateAttributes.ATTR_NODE_IPV4_LOCAL_ROUTER_ID);
-        linkStateAttributes.add(tlv);
-        pathAttributes.add(new LinkStateAttributes(linkStateAttributes));
-        details.setPathAttribute(pathAttributes);
-
-        for (BgpNodeListener l : controller.nodeListener) {
-            l.addNode(nodeNlri, details);
-            assertThat(nodeRegistry.connected.size(), is(1));
-        }
-        DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder();
-
-        newBuilder.set("lsrId", "1.1.1.1");
-
-        Device device = new DefaultDevice(BgpTopologyProviderTest.providerId, nodeRegistry.connected.iterator().next(),
-                Device.Type.ROUTER, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, new ChassisId(), newBuilder.build());
-
-        DeviceEvent event = new DeviceEvent(DeviceEvent.Type.DEVICE_ADDED, device);
-        listener.event(event);
-        assertThat(labelResourceAdminService.resourcePool.keySet().size(), is(1));
-    }
-
-    /**
-     * Add device check label registration is done and delete node destroy label pool.
-     *
-     * @throws BgpParseException while adding a device
-     */
-    @Test
-    public void bgpTopologyProviderDeviceTestLabel2() throws BgpParseException {
-        LinkedList<BgpValueType> subTlvs = new LinkedList<>();
-        BgpValueType tlv = new AutonomousSystemTlv(100);
-        short deslength = AutonomousSystemTlv.LENGTH;
-        short desType = AutonomousSystemTlv.TYPE;
-
-        subTlvs.add(tlv);
-        BgpNodeLSIdentifier localNodeDescriptors = new BgpNodeLSIdentifier(new NodeDescriptors(subTlvs, deslength,
-                                                                                               desType));
-        BgpNodeLSNlriVer4 nodeNlri = new BgpNodeLSNlriVer4(0, (byte) Constants.DIRECT, localNodeDescriptors, false,
-                                                           new RouteDistinguisher());
-
-        PathAttrNlriDetails details = new PathAttrNlriDetails();
-        details.setIdentifier(0);
-        details.setProtocolID(ProtocolType.DIRECT);
-        List<BgpValueType> pathAttributes = new LinkedList<>();
-        List<BgpValueType> linkStateAttributes = new LinkedList<>();
-        tlv = BgpAttrRouterIdV4.of(Ip4Address.valueOf("1.1.1.1"), LinkStateAttributes.ATTR_NODE_IPV4_LOCAL_ROUTER_ID);
-        linkStateAttributes.add(tlv);
-        pathAttributes.add(new LinkStateAttributes(linkStateAttributes));
-        details.setPathAttribute(pathAttributes);
-
-        for (BgpNodeListener l : controller.nodeListener) {
-            l.addNode(nodeNlri, details);
-            assertThat(nodeRegistry.connected.size(), is(1));
-
-            DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder();
-
-            newBuilder.set("lsrId", "1.1.1.1");
-
-            Device device = new DefaultDevice(BgpTopologyProviderTest.providerId,
-                   nodeRegistry.connected.iterator().next(), Device.Type.ROUTER, UNKNOWN,
-                   UNKNOWN, UNKNOWN, UNKNOWN, new ChassisId(), newBuilder.build());
-
-            DeviceEvent event = new DeviceEvent(DeviceEvent.Type.DEVICE_ADDED, device);
-            listener.event(event);
-            assertThat(labelResourceAdminService.resourcePool.keySet().size(), is(1));
-
-            l.deleteNode(nodeNlri);
-            assertThat(nodeRegistry.connected.size(), is(0));
-            assertThat(labelResourceAdminService.resourcePool.keySet().size(), is(0));
-        }
-    }
-
-    /**
-     * Add a link register bandwidth and remove link unregister bandwidth.
-     *
-     * @throws BgpParseException while registering/unregistering bandwidth
-     */
-    @Test
-    public void bgpTopologyProviderDeviceTestLabel3() throws BgpParseException {
-        LinkedList<BgpValueType> localTlvs = new LinkedList<>();
-        LinkedList<BgpValueType> remoteTlvs = new LinkedList<>();
-        LinkedList<BgpValueType> linkdes = new LinkedList<>();
-        BgpValueType tlv = new AutonomousSystemTlv(10);
-        short deslength = AutonomousSystemTlv.LENGTH;
-        short desType = AutonomousSystemTlv.TYPE;
-
-        localTlvs.add(tlv);
-        remoteTlvs.add(tlv);
-        tlv = IsIsNonPseudonode.of(new byte[] {20, 20, 20, 20, 00, 20});
-        localTlvs.add(tlv);
-        tlv = IsIsNonPseudonode.of(new byte[] {30, 30, 30, 30, 00, 30});
-        remoteTlvs.add(tlv);
-        NodeDescriptors localNode = new NodeDescriptors(localTlvs, deslength, desType);
-        NodeDescriptors remoteNode = new NodeDescriptors(remoteTlvs, deslength, desType);
-        BgpNodeLSIdentifier localNodeDescriptors = new BgpNodeLSIdentifier(localNode);
-        BgpNodeLSNlriVer4 nodeNlri = new BgpNodeLSNlriVer4(0, (byte) Constants.DIRECT, localNodeDescriptors, false,
-                                                           new RouteDistinguisher());
-
-        BgpNodeLSIdentifier remoteNodeDescriptors = new BgpNodeLSIdentifier(remoteNode);
-        BgpNodeLSNlriVer4 remNodeNlri = new BgpNodeLSNlriVer4(0, (byte) Constants.DIRECT, remoteNodeDescriptors, false,
-                                                           new RouteDistinguisher());
-
-        PathAttrNlriDetails details = new PathAttrNlriDetails();
-        details.setIdentifier(0);
-        details.setProtocolID(ProtocolType.DIRECT);
-        List<BgpValueType> pathAttributes = new LinkedList<>();
-        List<BgpValueType> linkStateAttributes = new LinkedList<>();
-        tlv = BgpAttrRouterIdV4.of(Ip4Address.valueOf("1.1.1.1"), LinkStateAttributes.ATTR_NODE_IPV4_LOCAL_ROUTER_ID);
-        linkStateAttributes.add(tlv);
-        pathAttributes.add(new LinkStateAttributes(linkStateAttributes));
-        details.setPathAttribute(pathAttributes);
-
-        tlv = LinkLocalRemoteIdentifiersTlv.of(99, 100);
-        linkdes.add(tlv);
-        BgpLinkLSIdentifier linkId = new BgpLinkLSIdentifier(localNode, remoteNode, linkdes);
-        BgpLinkLsNlriVer4 linkNlri = new BgpLinkLsNlriVer4((byte) Constants.DIRECT, 0, linkId,
-                new RouteDistinguisher(), false);
-
-        for (BgpNodeListener l : controller.nodeListener) {
-            l.addNode(nodeNlri, details);
-            assertThat(nodeRegistry.connected.size(), is(1));
-            //Check label resource reserved for that device
-            DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder();
-
-            newBuilder.set("lsrId", "1.1.1.1");
-
-            Device device = new DefaultDevice(BgpTopologyProviderTest.providerId,
-                    nodeRegistry.connected.iterator().next(), Device.Type.ROUTER,
-                    UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, new ChassisId(), newBuilder.build());
-
-            DeviceEvent event = new DeviceEvent(DeviceEvent.Type.DEVICE_ADDED, device);
-            listener.event(event);
-            assertThat(labelResourceAdminService.resourcePool.keySet().size(), is(1));
-            l.addNode(remNodeNlri, details);
-            assertThat(nodeRegistry.connected.size(), is(2));
-            l.deleteNode(remNodeNlri);
-            assertThat(nodeRegistry.connected.size(), is(1));
-            assertThat(labelResourceAdminService.resourcePool.keySet().size(), is(1));
-        }
-
-        List<BgpValueType> linkPathAttributes = new LinkedList<>();
-        List<BgpValueType> linkStateAttr = new LinkedList<>();
-        tlv = BgpLinkAttrIgpMetric.of(10, 4);
-        linkStateAttr.add(tlv);
-        tlv = BgpLinkAttrTeDefaultMetric.of(20);
-        linkStateAttr.add(tlv);
-        tlv = BgpLinkAttrMaxLinkBandwidth.of((float) 70 * 1_000_000L,
-                LinkStateAttributes.ATTR_LINK_MAX_RES_BANDWIDTH);
-        linkStateAttr.add(tlv);
-        linkPathAttributes.add(new LinkStateAttributes(linkStateAttr));
-        details.setPathAttribute(linkPathAttributes);
-
-        for (BgpLinkListener l : controller.linkListener) {
-            l.addLink(linkNlri, details);
-            LinkKey linkKey = LinkKey.linkKey(linkRegistry.links.getFirst().src(),
-                    linkRegistry.links.getLast().dst());
-            assertThat(linkRegistry.links.size(), is(1));
-            TeLinkConfig config = networkConfigService.getTeLinkConfig().get(linkKey);
-
-            assertThat(config.igpCost(), is(10));
-            assertThat(config.teCost(), is(20));
-
-            ConnectPoint src = new ConnectPoint(
-                    DeviceId.deviceId("l3:rd=0::routinguniverse=0:asn=10:isoid=1414.1414.0014"),
-                    PortNumber.portNumber(4294967395L));
-            ConnectPoint dst = new ConnectPoint(
-                    DeviceId.deviceId("l3:rd=0::routinguniverse=0:asn=10:isoid=1e1e.1e1e.001e"),
-                    PortNumber.portNumber(4294967396L));
-
-            assertThat(config.maxResvBandwidth(), is(70.0));
-
-            l.deleteLink(linkNlri);
-            assertThat(linkRegistry.links.size(), is(0));
-            config = networkConfigService.getTeLinkConfig().get(linkKey);
-            assertThat(config, is(nullValue()));
-        }
-    }
-}
diff --git a/providers/bgpcep/BUILD b/providers/bgpcep/BUILD
deleted file mode 100644
index 9910827..0000000
--- a/providers/bgpcep/BUILD
+++ /dev/null
@@ -1,30 +0,0 @@
-BUNDLES = [
-    "//protocols/bgp/bgpio:onos-protocols-bgp-bgpio",
-    "//protocols/bgp/api:onos-protocols-bgp-api",
-    "//protocols/bgp/ctl:onos-protocols-bgp-ctl",
-    "//protocols/pcep/pcepio:onos-protocols-pcep-pcepio",
-    "//apps/pcep-api:onos-apps-pcep-api",
-    "//protocols/pcep/server/api:onos-protocols-pcep-server-api",
-    "//providers/bgp/topology:onos-providers-bgp-topology",
-    "//providers/bgp/cfg:onos-providers-bgp-cfg",
-    "//protocols/pcep/server/ctl:onos-protocols-pcep-server-ctl",
-    "//providers/pcep/topology:onos-providers-pcep-topology",
-    "//providers/pcep/tunnel:onos-providers-pcep-tunnel",
-    "//providers/bgpcep/flow:onos-providers-bgpcep-flow",
-    "//apps/pce/app:onos-apps-pce-app",
-    "//apps/pce/pceweb:onos-apps-pce-pceweb",
-    "//apps/pce/bandwidthmgmt:onos-apps-pce-bandwidthmgmt",
-]
-
-onos_app(
-    category = "Provider",
-    description = "BGPCEP providers.",
-    included_bundles = BUNDLES,
-    required_apps = [
-        "org.onosproject.tunnel",
-        "org.onosproject.bgp",
-        "org.onosproject.pcep-api",
-    ],
-    title = "BGPCEP Provider",
-    url = "http://onosproject.org",
-)
diff --git a/providers/bgpcep/flow/BUILD b/providers/bgpcep/flow/BUILD
deleted file mode 100644
index 53c3dda0..0000000
--- a/providers/bgpcep/flow/BUILD
+++ /dev/null
@@ -1,9 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + [
-    "//protocols/bgp/api:onos-protocols-bgp-api",
-    "//protocols/pcep/server/api:onos-protocols-pcep-server-api",
-    "//protocols/pcep/pcepio:onos-protocols-pcep-pcepio",
-]
-
-osgi_jar_with_tests(
-    deps = COMPILE_DEPS,
-)
diff --git a/providers/bgpcep/flow/src/main/java/org/onosproject/provider/bgpcep/flow/impl/BgpcepFlowRuleProvider.java b/providers/bgpcep/flow/src/main/java/org/onosproject/provider/bgpcep/flow/impl/BgpcepFlowRuleProvider.java
deleted file mode 100644
index 9593920..0000000
--- a/providers/bgpcep/flow/src/main/java/org/onosproject/provider/bgpcep/flow/impl/BgpcepFlowRuleProvider.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.bgpcep.flow.impl;
-
-import org.onosproject.net.flow.FlowRule;
-import org.onosproject.net.flow.FlowRuleProvider;
-import org.onosproject.net.flow.FlowRuleProviderRegistry;
-import org.onosproject.net.flow.FlowRuleProviderService;
-import org.onosproject.net.flow.oldbatch.FlowRuleBatchOperation;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-import org.osgi.service.component.ComponentContext;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Implementation of BGP-PCEP flow provider.
- */
-@Component(immediate = true)
-public class BgpcepFlowRuleProvider extends AbstractProvider
-        implements FlowRuleProvider {
-
-    private final Logger log = getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected FlowRuleProviderRegistry providerRegistry;
-
-    private FlowRuleProviderService providerService;
-
-    /**
-     * Creates a BgpFlow host provider.
-     */
-    public BgpcepFlowRuleProvider() {
-        super(new ProviderId("l3", "org.onosproject.provider.bgpcep"));
-    }
-
-    @Activate
-    public void activate(ComponentContext context) {
-        providerService = providerRegistry.register(this);
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate(ComponentContext context) {
-        providerRegistry.unregister(this);
-        providerService = null;
-        log.info("Stopped");
-    }
-
-    @Override
-    public void applyFlowRule(FlowRule... flowRules) {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public void removeFlowRule(FlowRule... flowRules) {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public void executeBatch(FlowRuleBatchOperation batch) {
-        // TODO Auto-generated method stub
-
-    }
-}
diff --git a/providers/bgpcep/flow/src/main/java/org/onosproject/provider/bgpcep/flow/impl/package-info.java b/providers/bgpcep/flow/src/main/java/org/onosproject/provider/bgpcep/flow/impl/package-info.java
deleted file mode 100644
index 3286376..0000000
--- a/providers/bgpcep/flow/src/main/java/org/onosproject/provider/bgpcep/flow/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Representation of BGP-PCEP flow provider.
- */
-package org.onosproject.provider.bgpcep.flow.impl;
diff --git a/providers/ietfte/topology/src/main/java/org/onosproject/provider/te/topology/RestconfServerConfig.java b/providers/ietfte/topology/src/main/java/org/onosproject/provider/te/topology/RestconfServerConfig.java
deleted file mode 100644
index 1d4dec8..0000000
--- a/providers/ietfte/topology/src/main/java/org/onosproject/provider/te/topology/RestconfServerConfig.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2016 Open Networking Foundation
- *
- * 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.provider.te.topology;
-
-import java.util.Set;
-
-import org.onlab.packet.IpAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.incubator.net.config.basics.ConfigException;
-import org.onosproject.net.config.Config;
-import org.onosproject.protocol.rest.DefaultRestSBDevice;
-import org.onosproject.protocol.rest.RestSBDevice;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.google.common.collect.Sets;
-
-/**
- * Configuration for Restconf Server.
- */
-public class RestconfServerConfig extends Config<ApplicationId> {
-    private static final String CONFIG_VALUE_ERROR = "Error parsing config value";
-    private static final String IP = "ip";
-    private static final int DEFAULT_HTTP_PORT = 80;
-    private static final String PORT = "port";
-    private static final String USERNAME = "username";
-    private static final String PASSWORD = "password";
-    private static final String PROTOCOL = "protocol";
-    private static final String URL = "url";
-
-    /**
-     * Returns the device addresses from JSON.
-     *
-     * @return A set of RESTCONF Server devices
-     * @throws ConfigException if there is a configuration error
-     */
-    public Set<RestSBDevice> getDevicesAddresses() throws ConfigException {
-        Set<RestSBDevice> devicesAddresses = Sets.newHashSet();
-
-        try {
-            for (JsonNode node : array) {
-                String ip = node.path(IP).asText();
-                IpAddress ipAddr = ip.isEmpty() ? null : IpAddress.valueOf(ip);
-                int port = node.path(PORT).asInt(DEFAULT_HTTP_PORT);
-                String username = node.path(USERNAME).asText();
-                String password = node.path(PASSWORD).asText();
-                String protocol = node.path(PROTOCOL).asText();
-                String url = node.path(URL).asText();
-                devicesAddresses.add(new DefaultRestSBDevice(ipAddr, port, username,
-                                                             password, protocol,
-                                                             url, false));
-
-            }
-        } catch (IllegalArgumentException e) {
-            throw new ConfigException(CONFIG_VALUE_ERROR, e);
-        }
-
-        return devicesAddresses;
-    }
-
-}
diff --git a/providers/ietfte/topology/src/main/java/org/onosproject/provider/te/topology/TeTopologyRestconfProvider.java b/providers/ietfte/topology/src/main/java/org/onosproject/provider/te/topology/TeTopologyRestconfProvider.java
deleted file mode 100644
index 8bc44da..0000000
--- a/providers/ietfte/topology/src/main/java/org/onosproject/provider/te/topology/TeTopologyRestconfProvider.java
+++ /dev/null
@@ -1,472 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.te.topology;
-
-import static org.onlab.util.Tools.groupedThreads;
-import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_ADDED;
-import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_UPDATED;
-import static org.onosproject.net.config.basics.SubjectFactories.APP_SUBJECT_FACTORY;
-import static org.onosproject.provider.te.utils.TeTopologyRestconfEventType.TE_TOPOLOGY_LINK_NOTIFICATION;
-import static org.onosproject.provider.te.utils.TeTopologyRestconfEventType.TE_TOPOLOGY_NODE_NOTIFICATION;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringWriter;
-import java.nio.charset.StandardCharsets;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import org.apache.commons.io.IOUtils;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.incubator.net.config.basics.ConfigException;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.config.ConfigFactory;
-import org.onosproject.net.config.NetworkConfigEvent;
-import org.onosproject.net.config.NetworkConfigListener;
-import org.onosproject.net.config.NetworkConfigRegistry;
-import org.onosproject.net.device.DeviceProviderRegistry;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.protocol.rest.RestSBDevice;
-import org.onosproject.protocol.restconf.RestConfSBController;
-import org.onosproject.provider.te.utils.DefaultJsonCodec;
-import org.onosproject.provider.te.utils.RestconfNotificationEventProcessor;
-import org.onosproject.provider.te.utils.TeTopologyRestconfEventListener;
-import org.onosproject.provider.te.utils.YangCompositeEncodingImpl;
-import org.onosproject.tetopology.management.api.TeTopologyProvider;
-import org.onosproject.tetopology.management.api.TeTopologyProviderRegistry;
-import org.onosproject.tetopology.management.api.TeTopologyProviderService;
-import org.onosproject.tetopology.management.api.TeTopologyService;
-import org.onosproject.tetopology.management.api.link.NetworkLink;
-import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
-import org.onosproject.tetopology.management.api.node.NetworkNode;
-import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
-import org.onosproject.teyang.utils.topology.LinkConverter;
-import org.onosproject.teyang.utils.topology.NetworkConverter;
-import org.onosproject.teyang.utils.topology.NodeConverter;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.IetfNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.Network;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.IetfNetworkTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.IetfTeTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.IetfTeTopologyEvent;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.TeLinkEvent;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.TeNodeEvent;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.tetopologyeventtype.TeTopologyEventTypeEnum;
-import org.onosproject.yms.ych.YangCodecHandler;
-import org.onosproject.yms.ych.YangProtocolEncodingFormat;
-import org.onosproject.yms.ych.YangResourceIdentifierType;
-import org.onosproject.yms.ydt.YmsOperationType;
-import org.onosproject.yms.ymsm.YmsService;
-import org.slf4j.Logger;
-
-import com.google.common.base.Preconditions;
-
-/**
- * Provider for IETF TE Topology that use RESTCONF as means of communication.
- */
-@Component(immediate = true)
-public class TeTopologyRestconfProvider extends AbstractProvider
-        implements TeTopologyProvider {
-    private static final String APP_NAME = "org.onosproject.teprovider";
-    private static final String RESTCONF = "restconf";
-    private static final String PROVIDER =
-            "org.onosproject.teprovider.restconf.domain";
-    private static final String IETF_NETWORK_URI = "ietf-network:networks";
-    private static final String IETF_NETWORKS_PREFIX =
-            "{\"ietf-network:networks\":";
-    private static final String TE_LINK_EVENT_PREFIX =
-            "{\"ietf-te-topology:te-link-event\":";
-    private static final String TE_NODE_EVENT_PREFIX =
-            "{\"ietf-te-topology:te-node-event\":";
-    private static final String IETF_NOTIFICATION_URI = "netconf";
-    private static final String JSON = "json";
-    private static final String E_DEVICE_NULL = "Restconf device is null";
-
-    private final Logger log = getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceProviderRegistry deviceProviderRegistry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TeTopologyProviderRegistry topologyProviderRegistry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected RestConfSBController restconfClient;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigRegistry cfgService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected YmsService ymsService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TeTopologyService teTopologyService;
-
-    private YangCodecHandler codecHandler;
-
-    private TeTopologyProviderService topologyProviderService;
-
-    private final ExecutorService executor =
-            Executors.newFixedThreadPool(5, groupedThreads("onos/restconfsbprovider",
-                                                           "device-installer-%d", log));
-
-    private final ConfigFactory<ApplicationId, RestconfServerConfig> factory =
-            new ConfigFactory<ApplicationId, RestconfServerConfig>(APP_SUBJECT_FACTORY,
-                                                                   RestconfServerConfig.class,
-                                                                   "restconfDevices",
-                                                                   true) {
-                @Override
-                public RestconfServerConfig createConfig() {
-                    return new RestconfServerConfig();
-                }
-            };
-
-    private final NetworkConfigListener cfgLister = new InternalNetworkConfigListener();
-    private ApplicationId appId;
-
-    private Set<DeviceId> addedDevices = new HashSet<>();
-
-    @Activate
-    public void activate() {
-        // Get the codec handler.
-        codecHandler = ymsService.getYangCodecHandler();
-        // Register all three IETF Topology YANG model schema with YMS.
-        codecHandler.addDeviceSchema(IetfNetwork.class);
-        codecHandler.addDeviceSchema(IetfNetworkTopology.class);
-        codecHandler.addDeviceSchema(IetfTeTopology.class);
-        // Register JSON CODEC functions
-        codecHandler.registerOverriddenCodec(new DefaultJsonCodec(ymsService),
-                                             YangProtocolEncodingFormat.JSON);
-
-        appId = coreService.registerApplication(APP_NAME);
-        topologyProviderService = topologyProviderRegistry.register(this);
-        cfgService.registerConfigFactory(factory);
-        cfgService.addListener(cfgLister);
-        executor.execute(TeTopologyRestconfProvider.this::connectDevices);
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        cfgService.removeListener(cfgLister);
-        restconfClient.getDevices().keySet().forEach(this::deviceRemoved);
-        topologyProviderRegistry.unregister(this);
-        cfgService.unregisterConfigFactory(factory);
-        log.info("Stopped");
-    }
-
-    /**
-     * Creates an instance of TeTopologyRestconf provider.
-     */
-    public TeTopologyRestconfProvider() {
-        super(new ProviderId(RESTCONF, PROVIDER));
-    }
-
-    private void deviceAdded(RestSBDevice nodeId) {
-        Preconditions.checkNotNull(nodeId, E_DEVICE_NULL);
-        nodeId.setActive(true);
-        addedDevices.add(nodeId.deviceId());
-    }
-
-    private void deviceRemoved(DeviceId deviceId) {
-        Preconditions.checkNotNull(deviceId, E_DEVICE_NULL);
-        restconfClient.removeDevice(deviceId);
-    }
-
-    private void connectDevices() {
-
-        RestconfServerConfig cfg = cfgService.getConfig(appId,
-                                                        RestconfServerConfig.class);
-        try {
-            if (cfg != null && cfg.getDevicesAddresses() != null) {
-                //Precomputing the devices to be removed
-                Set<RestSBDevice> toBeRemoved = new HashSet<>(restconfClient.
-                        getDevices().values());
-                toBeRemoved.removeAll(cfg.getDevicesAddresses());
-                //Adding new devices
-                for (RestSBDevice device : cfg.getDevicesAddresses()) {
-                    device.setActive(false);
-                    restconfClient.addDevice(device);
-                    deviceAdded(device);
-                }
-
-                //Removing devices not wanted anymore
-                toBeRemoved.forEach(device -> deviceRemoved(device.deviceId()));
-            }
-        } catch (ConfigException e) {
-            log.error("Configuration error {}", e);
-        }
-
-        // Discover the topology from RESTCONF server
-        addedDevices.forEach(this::retrieveTopology);
-        addedDevices.clear();
-    }
-
-    private void retrieveTopology(DeviceId deviceId) {
-        // Retrieve IETF Network at top level.
-        InputStream jsonStream = restconfClient.get(deviceId,
-                                                    IETF_NETWORK_URI,
-                                                    JSON);
-        if (jsonStream == null) {
-            log.warn("Unable to retrieve network Topology from restconf " +
-                             "server {}", deviceId);
-            return;
-        }
-
-        // Need to convert Input stream to String.
-        StringWriter writer = new StringWriter();
-        try {
-            IOUtils.copy(jsonStream, writer, StandardCharsets.UTF_8);
-        } catch (IOException e) {
-            log.warn("There is an exception {} for copy jsonStream to " +
-                             "stringWriter for restconf {}",
-                     e.getMessage(), deviceId);
-            return;
-        }
-        String jsonString = writer.toString();
-        String networkLevelJsonString = removePrefixTagFromJson(jsonString,
-                                                                IETF_NETWORKS_PREFIX);
-
-        YangCompositeEncodingImpl yce =
-                new YangCompositeEncodingImpl(YangResourceIdentifierType.URI,
-                                              IETF_NETWORK_URI,
-                                              networkLevelJsonString);
-
-        Object yo = codecHandler.decode(yce,
-                                        YangProtocolEncodingFormat.JSON,
-                                        YmsOperationType.QUERY_REPLY);
-
-        if (yo == null) {
-            log.error("YMS decoder returns null for restconf {}", deviceId);
-            return;
-        }
-
-        // YMS returns an ArrayList in a single Object (i.e. yo in this case)
-        // this means yo is actually an ArrayList of size 1
-        IetfNetwork ietfNetwork = ((List<IetfNetwork>) yo).get(0);
-
-        if (ietfNetwork.networks() != null &&
-                ietfNetwork.networks().network() != null) {
-            //Convert the YO to TE Core data and update TE Core.
-            for (Network nw : ietfNetwork.networks().network()) {
-                topologyProviderService.networkUpdated(
-                        NetworkConverter.yang2TeSubsystemNetwork(nw, ietfNetwork.networks(), deviceId));
-            }
-        }
-
-        //TODO: Uncomment when YMS fixes the issue in NetworkState translation (network-ref)
-//        org.onosproject.tetopology.management.api.Networks networks =
-//                NetworkConverter.yang2TeSubsystemNetworks(ietfNetwork.networks(),
-//                                                          ietfNetwork.networksState());
-//        if (networks == null || networks.networks() == null) {
-//            log.error("Yang2Te returns null for restconf {}", deviceId);
-//            return;
-//        }
-//        for (org.onosproject.tetopology.management.api.Network network : networks.networks()) {
-//            topologyProviderService.networkUpdated(network);
-//        }
-
-        subscribeRestconfNotification(deviceId);
-    }
-
-    private void subscribeRestconfNotification(DeviceId deviceId) {
-
-        TeTopologyRestconfEventListener listener =
-                new TeTopologyRestconfEventListener();
-
-        listener.addCallbackFunction(TE_TOPOLOGY_LINK_NOTIFICATION,
-                                     new InternalLinkEventProcessor());
-        listener.addCallbackFunction(TE_TOPOLOGY_NODE_NOTIFICATION,
-                                     new InternalNodeEventProcessor());
-
-        if (!restconfClient.isNotificationEnabled(deviceId)) {
-            restconfClient.enableNotifications(deviceId,
-                                               IETF_NOTIFICATION_URI,
-                                               "application/json",
-                                               listener);
-        } else {
-            restconfClient.addNotificationListener(deviceId, listener);
-        }
-    }
-
-    private String removePrefixTagFromJson(String jsonString, String prefixTag) {
-        if (jsonString.startsWith(prefixTag)) {
-            return jsonString.substring(prefixTag.length(), jsonString.length() - 1);
-        }
-        return jsonString;
-    }
-
-    private class InternalLinkEventProcessor implements
-            RestconfNotificationEventProcessor<String> {
-
-        @Override
-        public void processEventPayload(String payload) {
-            String linkString = removePrefixTagFromJson(payload,
-                                                        TE_LINK_EVENT_PREFIX);
-            log.debug("link event={}", linkString);
-            handleRestconfLinkNotification(linkString);
-        }
-
-        private void handleRestconfLinkNotification(String linkString) {
-
-            IetfTeTopologyEvent event = convertJson2IetfTeTopologyEvent(
-                    "ietf-te-topology:te-link-event",
-                    linkString);
-            if (event == null) {
-                log.error("ERROR: json to YO conversion failure");
-                return;
-            }
-
-            if (event.type() != IetfTeTopologyEvent.Type.TE_LINK_EVENT) {
-                log.error("ERROR: wrong YO event type: {}", event.type());
-                return;
-            }
-
-            TeLinkEvent teLinkEvent = event.subject().teLinkEvent();
-
-            log.debug("TeLinkEvent: {}", teLinkEvent);
-
-            NetworkLinkKey linkKey = LinkConverter.yangLinkEvent2NetworkLinkKey(
-                    teLinkEvent);
-
-            TeTopologyEventTypeEnum teLinkEventType = teLinkEvent.eventType()
-                    .enumeration();
-
-            if (teLinkEventType == TeTopologyEventTypeEnum.REMOVE) {
-                topologyProviderService.linkRemoved(linkKey);
-                return;
-            }
-
-            NetworkLink networkLink = LinkConverter.yangLinkEvent2NetworkLink(teLinkEvent,
-                                                                              teTopologyService);
-
-            if (networkLink == null) {
-                log.error("ERROR: yangLinkEvent2NetworkLink returns null");
-                return;
-            }
-
-            log.debug("networkLink: {}", networkLink);
-
-            topologyProviderService.linkUpdated(linkKey, networkLink);
-        }
-    }
-
-    private class InternalNodeEventProcessor implements
-            RestconfNotificationEventProcessor<String> {
-
-        @Override
-        public void processEventPayload(String payload) {
-            String nodeString = removePrefixTagFromJson(payload, TE_NODE_EVENT_PREFIX);
-            log.debug("node event={}", nodeString);
-            handleRestconfNodeNotification(nodeString);
-        }
-
-        private void handleRestconfNodeNotification(String nodeString) {
-
-            IetfTeTopologyEvent event = convertJson2IetfTeTopologyEvent(
-                    "ietf-te-topology:te-node-event",
-                    nodeString);
-
-            if (event == null) {
-                log.error("ERROR: json to YO conversion failure");
-                return;
-            }
-
-            if (event.type() != IetfTeTopologyEvent.Type.TE_NODE_EVENT) {
-                log.error("ERROR: wrong YO event type: {}", event.type());
-                return;
-            }
-
-            TeNodeEvent teNodeEvent = event.subject().teNodeEvent();
-
-            log.debug("TeNodeEvent: {}", teNodeEvent);
-
-            NetworkNodeKey nodeKey = NodeConverter.yangNodeEvent2NetworkNodeKey(
-                    teNodeEvent);
-
-            TeTopologyEventTypeEnum teNodeEventType = teNodeEvent.eventType()
-                    .enumeration();
-
-            if (teNodeEventType == TeTopologyEventTypeEnum.REMOVE) {
-                topologyProviderService.nodeRemoved(nodeKey);
-                return;
-            }
-
-            NetworkNode networkNode = NodeConverter.yangNodeEvent2NetworkNode(
-                    teNodeEvent,
-                    teTopologyService);
-
-            if (networkNode == null) {
-                log.error("ERROR: yangNodeEvent2NetworkNode returns null");
-                return;
-            }
-
-            topologyProviderService.nodeUpdated(nodeKey, networkNode);
-        }
-    }
-
-    private class InternalNetworkConfigListener implements NetworkConfigListener {
-
-        @Override
-        public void event(NetworkConfigEvent event) {
-            executor.execute(TeTopologyRestconfProvider.this::connectDevices);
-        }
-
-        @Override
-        public boolean isRelevant(NetworkConfigEvent event) {
-            return event.configClass().equals(RestconfServerConfig.class) &&
-                    (event.type() == CONFIG_ADDED ||
-                            event.type() == CONFIG_UPDATED);
-        }
-    }
-
-    private IetfTeTopologyEvent convertJson2IetfTeTopologyEvent(String uriString,
-                                                                String jsonBody) {
-
-        YangCompositeEncodingImpl yce =
-                new YangCompositeEncodingImpl(YangResourceIdentifierType.URI,
-                                              uriString,
-                                              jsonBody);
-        Object yo = codecHandler.decode(yce,
-                                        YangProtocolEncodingFormat.JSON,
-                                        YmsOperationType.NOTIFICATION);
-
-        if (yo == null) {
-            log.error("YMS decoder error");
-            return null;
-        }
-
-        if (!(yo instanceof IetfTeTopologyEvent)) {
-            log.error("ERROR: YO is not IetfTeTopologyEvent");
-            return null;
-        }
-
-        return (IetfTeTopologyEvent) yo;
-    }
-}
diff --git a/providers/ietfte/topology/src/main/java/org/onosproject/provider/te/topology/package-info.java b/providers/ietfte/topology/src/main/java/org/onosproject/provider/te/topology/package-info.java
deleted file mode 100644
index 44cad2b..0000000
--- a/providers/ietfte/topology/src/main/java/org/onosproject/provider/te/topology/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * Copyright 2016 Open Networking Foundation
- *
- * 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.
- */
-/**
- * IETF TE Topology provider implementation using RESTCONF protocol.
- */
-package org.onosproject.provider.te.topology;
diff --git a/providers/ietfte/tunnel/src/main/java/org/onosproject/provider/te/tunnel/TeTunnelRestconfProvider.java b/providers/ietfte/tunnel/src/main/java/org/onosproject/provider/te/tunnel/TeTunnelRestconfProvider.java
deleted file mode 100644
index 3c765aa..0000000
--- a/providers/ietfte/tunnel/src/main/java/org/onosproject/provider/te/tunnel/TeTunnelRestconfProvider.java
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.te.tunnel;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelDescription;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelProvider;
-import org.onosproject.incubator.net.tunnel.TunnelProviderRegistry;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.ElementId;
-import org.onosproject.net.Path;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.protocol.restconf.RestConfSBController;
-import org.onosproject.protocol.restconf.RestconfNotificationEventListener;
-import org.onosproject.provider.te.utils.DefaultJsonCodec;
-import org.onosproject.provider.te.utils.YangCompositeEncodingImpl;
-import org.onosproject.tetopology.management.api.TeTopology;
-import org.onosproject.tetopology.management.api.TeTopologyKey;
-import org.onosproject.tetopology.management.api.TeTopologyService;
-import org.onosproject.tetunnel.api.TeTunnelProviderService;
-import org.onosproject.tetunnel.api.TeTunnelService;
-import org.onosproject.tetunnel.api.tunnel.DefaultTeTunnel;
-import org.onosproject.tetunnel.api.tunnel.TeTunnel;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.IetfTe;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.Tunnels;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.IetfTeTypes;
-import org.onosproject.yms.ych.YangCodecHandler;
-import org.onosproject.yms.ych.YangCompositeEncoding;
-import org.onosproject.yms.ych.YangProtocolEncodingFormat;
-import org.onosproject.yms.ymsm.YmsService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Optional;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-import static org.onosproject.provider.te.utils.CodecTools.jsonToString;
-import static org.onosproject.provider.te.utils.CodecTools.toJson;
-import static org.onosproject.tetopology.management.api.TeTopology.BIT_MERGED;
-import static org.onosproject.teyang.utils.tunnel.TunnelConverter.buildIetfTe;
-import static org.onosproject.teyang.utils.tunnel.TunnelConverter.yang2TeTunnel;
-import static org.onosproject.yms.ych.YangProtocolEncodingFormat.JSON;
-import static org.onosproject.yms.ych.YangResourceIdentifierType.URI;
-import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REQUEST;
-import static org.onosproject.yms.ydt.YmsOperationType.QUERY_REPLY;
-
-
-/**
- * Provider which uses RESTCONF to do cross-domain tunnel creation/deletion/
- * update/deletion and so on operations on the domain networks.
- */
-
-@Component(immediate = true)
-public class TeTunnelRestconfProvider extends AbstractProvider
-        implements TunnelProvider {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private static final String SCHEMA = "ietf";
-    private static final String IETF = "ietf";
-    private static final String TE = "te";
-    private static final int DEFAULT_INDEX = 1;
-    private static final String TUNNELS = "tunnels";
-    private static final String TUNNELS_URL = IETF + ":" + TE + "/" + TUNNELS;
-    private static final String IETF_NOTIFICATION_URI = "netconf";
-    private static final String MEDIA_TYPE_JSON = "json";
-
-    private static final String SHOULD_IN_ONE = "Tunnel should be setup in one topo";
-    private static final String PROVIDER_ID = "org.onosproject.provider.ietf";
-    private static final String RESTCONF_ROOT = "/onos/restconf";
-    private static final String TE_TUNNEL_KEY = "TeTunnelKey";
-
-    //private final RestconfNotificationEventListener listener =
-    //        new InternalTunnelNotificationListener();
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected RestConfSBController controller;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected YmsService ymsService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TeTunnelService tunnelService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TeTunnelProviderService providerService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TeTopologyService topologyService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TunnelProviderRegistry tunnelProviderRegistry;
-
-    private YangCodecHandler codecHandler;
-
-    @Activate
-    public void activate() {
-        tunnelProviderRegistry.register(this);
-        codecHandler = ymsService.getYangCodecHandler();
-        codecHandler.addDeviceSchema(IetfTe.class);
-        codecHandler.addDeviceSchema(IetfTeTypes.class);
-        codecHandler.registerOverriddenCodec(new DefaultJsonCodec(ymsService),
-                                             YangProtocolEncodingFormat.JSON);
-        collectInitialTunnels();
-        subscribe();
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        tunnelProviderRegistry.unregister(this);
-        unsubscribe();
-        log.info("Stopped");
-
-    }
-
-    public TeTunnelRestconfProvider() {
-        super(new ProviderId(SCHEMA, PROVIDER_ID));
-    }
-
-    private void collectInitialTunnels() {
-        for (DeviceId deviceId : controller.getDevices().keySet()) {
-            ObjectNode jsonNodes = executeGetRequest(deviceId);
-            if (jsonNodes == null) {
-                continue;
-            }
-            ObjectNode tunnelsNode = (ObjectNode) jsonNodes.get(TUNNELS);
-            if (tunnelsNode == null) {
-                continue;
-            }
-            Tunnels teTunnels = getYangTunnelsObject(tunnelsNode);
-            if (teTunnels == null) {
-                continue;
-            }
-            updateTeTunnels(teTunnels);
-        }
-    }
-
-    private void subscribe() {
-        for (DeviceId deviceId : controller.getDevices().keySet()) {
-            try {
-                if (!controller.isNotificationEnabled(deviceId)) {
-                    controller.enableNotifications(deviceId, IETF_NOTIFICATION_URI,
-                                                   "application/json",
-                                                   new InternalTunnelNotificationListener());
-                } else {
-                    controller.addNotificationListener(deviceId,
-                                                       new InternalTunnelNotificationListener());
-                }
-            } catch (Exception e) {
-                log.error("Failed to subscribe for {} : {}", deviceId,
-                          e.getMessage());
-            }
-        }
-    }
-
-    private void unsubscribe() {
-        controller.getDevices()
-                .keySet()
-                .forEach(deviceId -> controller
-                        .removeNotificationListener(deviceId,
-                                                    new InternalTunnelNotificationListener()));
-    }
-
-    @Override
-    public void setupTunnel(Tunnel tunnel, Path path) {
-        TeTunnel teTunnel = tunnelService.getTeTunnel(tunnel.tunnelId());
-        long tid = teTunnel.srcNode().topologyId();
-        checkState(tid == teTunnel.dstNode().topologyId(), SHOULD_IN_ONE);
-        setupTunnel(getOwnDevice(tid), tunnel, path);
-    }
-
-    @Override
-    public void setupTunnel(ElementId srcElement, Tunnel tunnel, Path path) {
-        if (!tunnel.annotations().keys().contains(TE_TUNNEL_KEY)) {
-            log.warn("No tunnel key info in tunnel {}", tunnel);
-            return;
-        }
-
-        String teTunnelKey = tunnel.annotations().value(TE_TUNNEL_KEY);
-
-        Optional<TeTunnel> optTunnel = tunnelService.getTeTunnels()
-                .stream()
-                .filter(t -> t.teTunnelKey().toString().equals(teTunnelKey))
-                .findFirst();
-
-        if (!optTunnel.isPresent()) {
-            log.warn("No te tunnel map to tunnel {}", tunnel);
-            return;
-        }
-
-        IetfTe ietfTe = buildIetfTe(optTunnel.get(), true);
-
-        YangCompositeEncoding encoding = codecHandler.
-                encodeCompositeOperation(RESTCONF_ROOT, null, ietfTe,
-                                         JSON, EDIT_CONFIG_REQUEST);
-        String identifier = encoding.getResourceIdentifier();
-        String resourceInformation = encoding.getResourceInformation();
-
-        if (srcElement == null) {
-            log.error("Can't find remote device for tunnel : {}", tunnel);
-            return;
-        }
-        controller.post((DeviceId) srcElement, identifier,
-                        new ByteArrayInputStream(resourceInformation.getBytes()),
-                        MEDIA_TYPE_JSON, ObjectNode.class);
-    }
-
-    @Override
-    public void releaseTunnel(Tunnel tunnel) {
-        //TODO implement release tunnel method
-    }
-
-    @Override
-    public void releaseTunnel(ElementId srcElement, Tunnel tunnel) {
-        //TODO implement release tunnel with src method
-    }
-
-    @Override
-    public void updateTunnel(Tunnel tunnel, Path path) {
-        //TODO implement update tunnel method
-
-    }
-
-    @Override
-    public void updateTunnel(ElementId srcElement, Tunnel tunnel, Path path) {
-        //TODO implement update tunnel with src method
-    }
-
-    @Override
-    public TunnelId tunnelAdded(TunnelDescription tunnel) {
-        //TODO implement tunnel add method when te tunnel app merged to core
-        return null;
-    }
-
-    @Override
-    public void tunnelRemoved(TunnelDescription tunnel) {
-        //TODO implement tunnel remove method when te tunnel app merged to core
-
-    }
-
-    @Override
-    public void tunnelUpdated(TunnelDescription tunnel) {
-        //TODO implement tunnel update method when te tunnel app merged to core
-    }
-
-    @Override
-    public Tunnel tunnelQueryById(TunnelId tunnelId) {
-        return null;
-    }
-
-    private ObjectNode executeGetRequest(DeviceId deviceId) {
-        //the request url is ietf-te:te/tunnels
-        //the response node will begin with tunnels
-        //be careful here to when get the tunnels data
-        InputStream resultStream =
-                controller.get(deviceId, TUNNELS_URL, MEDIA_TYPE_JSON);
-        return toJson(resultStream);
-    }
-
-    private Tunnels getYangTunnelsObject(ObjectNode tunnelsNode) {
-        checkNotNull(tunnelsNode, "Input object node should not be null");
-
-        YangCompositeEncoding yce =
-                new YangCompositeEncodingImpl(URI,
-                                              TUNNELS_URL,
-                                              jsonToString(tunnelsNode));
-
-        Object yo = codecHandler.decode(yce, JSON, QUERY_REPLY);
-
-        if (yo == null) {
-            log.error("YMS decoder returns null");
-            return null;
-        }
-        IetfTe ietfTe = null;
-        Tunnels tunnels = null;
-        if (yo instanceof List) {
-            List<Object> list = (List<Object>) yo;
-            ietfTe = (IetfTe) list.get(DEFAULT_INDEX);
-        }
-        if (ietfTe != null && ietfTe.te() != null) {
-            tunnels = ietfTe.te().tunnels();
-        }
-        return tunnels;
-    }
-
-    private void updateTeTunnels(Tunnels tunnels) {
-        TeTopologyKey key = getTopologyKey();
-
-        tunnels.tunnel().forEach(tunnel -> {
-            DefaultTeTunnel teTunnel = yang2TeTunnel(tunnel, key);
-            providerService.updateTeTunnel(teTunnel);
-        });
-    }
-
-    private TeTopologyKey getTopologyKey() {
-        TeTopologyKey key = null;
-        Optional<TeTopology> teTopology = topologyService.teTopologies()
-                .teTopologies()
-                .values()
-                .stream()
-                .filter(topology -> topology.flags().get(BIT_MERGED))
-                .findFirst();
-        if (teTopology.isPresent()) {
-            TeTopology topology = teTopology.get();
-            key = topology.teTopologyId();
-        }
-        return key;
-    }
-
-    private DeviceId getOwnDevice(long topologyId) {
-        DeviceId deviceId = null;
-        Optional<TeTopology> topoOpt = topologyService.teTopologies()
-                .teTopologies()
-                .values()
-                .stream()
-                .filter(tp -> tp.teTopologyId().topologyId() == topologyId)
-                .findFirst();
-
-        if (topoOpt.isPresent()) {
-            deviceId = topoOpt.get().ownerId();
-        }
-        return deviceId;
-    }
-
-
-    private class InternalTunnelNotificationListener implements
-            RestconfNotificationEventListener {
-
-        @Override
-        public void handleNotificationEvent(DeviceId deviceId, Object eventJsonString) {
-            ObjectNode response = toJson((String) eventJsonString);
-            if (response == null) {
-                return;
-            }
-            JsonNode teNode = response.get(TE);
-            if (teNode == null) {
-                log.error("Illegal te json object from {}", deviceId);
-                return;
-            }
-            JsonNode tunnelsNode = teNode.get(TUNNELS);
-            if (tunnelsNode == null) {
-                log.error("Illegal tunnel json object from {}", deviceId);
-                return;
-            }
-
-            Tunnels tunnels = getYangTunnelsObject((ObjectNode) tunnelsNode);
-            if (tunnels == null) {
-                return;
-            }
-            updateTeTunnels(tunnels);
-        }
-    }
-}
diff --git a/providers/ietfte/tunnel/src/main/java/org/onosproject/provider/te/tunnel/package-info.java b/providers/ietfte/tunnel/src/main/java/org/onosproject/provider/te/tunnel/package-info.java
deleted file mode 100644
index de207de..0000000
--- a/providers/ietfte/tunnel/src/main/java/org/onosproject/provider/te/tunnel/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * Copyright 2016 Open Networking Foundation
- *
- * 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.
- */
-/**
- * IETF TE Tunnel provider implementation using RESTCONF protocol.
- */
-package org.onosproject.provider.te.tunnel;
\ No newline at end of file
diff --git a/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/CodecTools.java b/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/CodecTools.java
deleted file mode 100644
index d10c877..0000000
--- a/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/CodecTools.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.te.utils;
-
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.ObjectWriter;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.slf4j.Logger;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import static org.onlab.util.Tools.readTreeFromStream;
-import static org.slf4j.LoggerFactory.getLogger;
-
-
-/**
- * Convert utility methods for IETF SB.
- */
-public final class CodecTools {
-    private static final Logger log = getLogger(CodecTools.class);
-    private static final ObjectMapper MAPPER = new ObjectMapper();
-
-    //no instantiation
-    private CodecTools() {
-    }
-
-    /**
-     * Returns an object node from a InputStream type input which usually comes
-     * from the HTTP response.
-     *
-     * @param stream stream data comes from a HTTP response
-     * @return object node
-     */
-    public static ObjectNode toJson(InputStream stream) {
-        ObjectNode response = null;
-        try {
-            response = readTreeFromStream(MAPPER, stream);
-        } catch (IOException e) {
-            log.error("Parse json string failed {}", e.getMessage());
-        }
-
-        return response;
-    }
-
-    /**
-     * Returns an object node from a string.
-     *
-     * @param jsonString string with JSON format
-     * @return object node
-     */
-    public static ObjectNode toJson(String jsonString) {
-        ObjectNode response = null;
-        try {
-            response = (ObjectNode) MAPPER.readTree(jsonString);
-        } catch (IOException e) {
-            log.error("Parse json string failed {}", e.getMessage());
-        }
-
-        return response;
-    }
-
-    /**
-     * Returns a JSON format string from a Jackson object node.
-     *
-     * @param node JSON object node
-     * @return string with JSON format
-     */
-    public static String jsonToString(ObjectNode node) {
-        ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
-        String jsonString = null;
-        try {
-            jsonString = ow.writeValueAsString(node);
-        } catch (JsonProcessingException e) {
-            log.error("Parse json to string failed {}", e.getMessage());
-        }
-
-        return jsonString;
-    }
-}
diff --git a/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/DefaultJsonCodec.java b/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/DefaultJsonCodec.java
deleted file mode 100644
index 42125c6..0000000
--- a/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/DefaultJsonCodec.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.te.utils;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.onosproject.yms.ych.YangCompositeEncoding;
-import org.onosproject.yms.ych.YangDataTreeCodec;
-import org.onosproject.yms.ydt.YdtBuilder;
-import org.onosproject.yms.ydt.YdtContext;
-import org.onosproject.yms.ydt.YmsOperationType;
-import org.onosproject.yms.ymsm.YmsService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.onosproject.protocol.restconf.server.utils.parser.json.ParserUtils.convertJsonToYdt;
-import static org.onosproject.protocol.restconf.server.utils.parser.json.ParserUtils.convertUriToYdt;
-import static org.onosproject.protocol.restconf.server.utils.parser.json.ParserUtils.convertYdtToJson;
-import static org.onosproject.protocol.restconf.server.utils.parser.json.ParserUtils.getJsonNameFromYdtNode;
-import static org.onosproject.provider.te.utils.CodecTools.jsonToString;
-import static org.onosproject.provider.te.utils.CodecTools.toJson;
-import static org.onosproject.yms.ydt.YdtContextOperationType.NONE;
-import static org.onosproject.yms.ych.YangResourceIdentifierType.URI;
-
-
-/**
- * JSON/YDT Codec implementation.
- */
-public class DefaultJsonCodec implements YangDataTreeCodec {
-    private static final String RESTCONF_ROOT = "/onos/restconf";
-    private static final String DATA = "data";
-    private static final String SLASH = "/";
-
-    private final YmsService ymsService;
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    public DefaultJsonCodec(YmsService service) {
-        ymsService = service;
-    }
-
-    @Override
-    public String encodeYdtToProtocolFormat(YdtBuilder builder) {
-        YdtContext context = builder.getRootNode();
-        ObjectNode jsonNode = convertYdtToJson(getJsonNameFromYdtNode(context),
-                                               builder.getRootNode(),
-                                               ymsService.getYdtWalker());
-        return jsonToString(jsonNode);
-    }
-
-    @Override
-    public YangCompositeEncoding encodeYdtToCompositeProtocolFormat(
-            YdtBuilder builder) {
-        YdtContext rootNode = builder.getRootNode();
-        String rootName = rootNode.getName();
-        YdtContext child = rootNode.getFirstChild();
-        String name = child.getName();
-        String url = rootName + SLASH + DATA + SLASH + name;
-        String jsonRoot = getJsonNameFromYdtNode(child);
-        ObjectNode objectNode = convertYdtToJson(jsonRoot, child,
-                                                 ymsService.getYdtWalker());
-        String payload = jsonToString((ObjectNode) objectNode.get(jsonRoot));
-        return new YangCompositeEncodingImpl(URI, url, payload);
-    }
-
-    @Override
-    public YdtBuilder decodeProtocolDataToYdt(String protocolData,
-                                              Object schemaRegistry,
-                                              YmsOperationType opType) {
-        // Get a new builder
-        YdtBuilder builder = ymsService.getYdtBuilder(RESTCONF_ROOT,
-                                                      null,
-                                                      opType,
-                                                      schemaRegistry);
-
-        convertJsonToYdt(toJson(protocolData), builder);
-        return builder;
-    }
-
-    @Override
-    public YdtBuilder decodeCompositeProtocolDataToYdt(YangCompositeEncoding protocolData,
-                                                       Object schemaRegistry,
-                                                       YmsOperationType opType) {
-
-        YdtBuilder builder = ymsService.getYdtBuilder(RESTCONF_ROOT,
-                                                      null,
-                                                      opType,
-                                                      schemaRegistry);
-
-        // YdtContextOperationType should be NONE for URI in QUERY_RESPONSE.
-        convertUriToYdt(protocolData.getResourceIdentifier(), builder, NONE);
-
-        // NULL/EMPTY for Resource data
-        builder.setDefaultEditOperationType(null);
-
-        // Convert the payload json body to ydt
-        convertJsonToYdt(toJson(protocolData.getResourceInformation()), builder);
-        return builder;
-    }
-}
diff --git a/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/RestconfNotificationEventProcessor.java b/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/RestconfNotificationEventProcessor.java
deleted file mode 100644
index 77985cc..0000000
--- a/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/RestconfNotificationEventProcessor.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.provider.te.utils;
-
-/**
- * Abstraction of the RESTCONF notification callback function. The callback
- * is invoked by the notification listener when it receives an event.
- */
-public interface RestconfNotificationEventProcessor<T> {
-    void processEventPayload(T event);
-}
diff --git a/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/TeTopologyRestconfEventListener.java b/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/TeTopologyRestconfEventListener.java
deleted file mode 100644
index 5a80154..0000000
--- a/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/TeTopologyRestconfEventListener.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.provider.te.utils;
-
-import org.onosproject.net.DeviceId;
-import org.onosproject.protocol.restconf.RestconfNotificationEventListener;
-import org.slf4j.Logger;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Implementation of the RESTCONF notification event
- * listener for TE Topology.
- */
-public class TeTopologyRestconfEventListener implements
-        RestconfNotificationEventListener<String> {
-    private static final String TE_TOPOLOGY_NOTIFICATION_PREFIX =
-            "{\"ietf-te-topology:ietf-te-topology\":";
-    private static final String TE_LINK_EVENT_PREFIX =
-            "{\"ietf-te-topology:te-link-event\":";
-    private static final String TE_NODE_EVENT_PREFIX =
-            "{\"ietf-te-topology:te-node-event\":";
-
-    private final Logger log = getLogger(getClass());
-
-    private Map<TeTopologyRestconfEventType, RestconfNotificationEventProcessor>
-            eventCallbackFunctionMap = new ConcurrentHashMap<>();
-
-    @Override
-    public void handleNotificationEvent(DeviceId deviceId,
-                                        String eventJsonString) {
-        log.debug("New notification: {} for device: {}",
-                  eventJsonString, deviceId.toString());
-
-        if (!eventJsonString.startsWith(TE_TOPOLOGY_NOTIFICATION_PREFIX)) {
-            // This is not a TE topology event.
-            return;
-        }
-
-        String teEventString = removePrefixTagFromJson(eventJsonString,
-                                                       TE_TOPOLOGY_NOTIFICATION_PREFIX);
-
-        TeTopologyRestconfEventType eventType = getEventType(teEventString);
-
-        if (eventType == TeTopologyRestconfEventType.TE_UNKNOWN_EVENT) {
-            log.error("handleNotificationEvent: unknown event: {}", eventJsonString);
-            return;
-        }
-
-        RestconfNotificationEventProcessor eventProcessor =
-                eventCallbackFunctionMap.get(eventType);
-
-        if (eventProcessor != null) {
-            eventProcessor.processEventPayload(teEventString);
-        } else {
-            log.info("Event callback not installed for event type: {}", eventType);
-        }
-    }
-
-    /**
-     * Registers an notification event callback function which is called by
-     * the listener when it receives an event.
-     *
-     * @param eventType      notification event type corresponding to the
-     *                       callback function
-     * @param eventProcessor callback function
-     */
-    public void addCallbackFunction(TeTopologyRestconfEventType eventType,
-                                    RestconfNotificationEventProcessor eventProcessor) {
-        if (eventCallbackFunctionMap.containsKey(eventType)) {
-            removeCallbackFunction(eventType);
-        }
-
-        eventCallbackFunctionMap.put(eventType, eventProcessor);
-    }
-
-    /**
-     * Removes the callback function associated with the given event type.
-     *
-     * @param eventType notification event type
-     */
-    public void removeCallbackFunction(TeTopologyRestconfEventType eventType) {
-        eventCallbackFunctionMap.remove(eventType);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-
-        TeTopologyRestconfEventListener that = (TeTopologyRestconfEventListener) o;
-
-        return eventCallbackFunctionMap != null ?
-                eventCallbackFunctionMap.equals(that.eventCallbackFunctionMap) :
-                that.eventCallbackFunctionMap == null;
-    }
-
-    @Override
-    public int hashCode() {
-        return eventCallbackFunctionMap != null ? eventCallbackFunctionMap.hashCode() : 0;
-    }
-
-    private String removePrefixTagFromJson(String jsonString, String prefixTag) {
-        if (jsonString.startsWith(prefixTag)) {
-            return jsonString.substring(prefixTag.length(), jsonString.length() - 1);
-        }
-        return jsonString;
-    }
-
-    private TeTopologyRestconfEventType getEventType(String teEventString) {
-        if (teEventString.startsWith(TE_LINK_EVENT_PREFIX)) {
-            return TeTopologyRestconfEventType.TE_TOPOLOGY_LINK_NOTIFICATION;
-        }
-
-        if (teEventString.startsWith(TE_NODE_EVENT_PREFIX)) {
-            return TeTopologyRestconfEventType.TE_TOPOLOGY_NODE_NOTIFICATION;
-        }
-
-        return TeTopologyRestconfEventType.TE_UNKNOWN_EVENT;
-    }
-}
-
diff --git a/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/TeTopologyRestconfEventType.java b/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/TeTopologyRestconfEventType.java
deleted file mode 100644
index d306f50..0000000
--- a/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/TeTopologyRestconfEventType.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.provider.te.utils;
-
-/**
- * Types of TE Topology RESTCONF notification events.
- */
-public enum TeTopologyRestconfEventType {
-    /**
-     * TE topology link event type.
-     */
-    TE_TOPOLOGY_LINK_NOTIFICATION,
-
-    /**
-     * TE topology node event type.
-     */
-    TE_TOPOLOGY_NODE_NOTIFICATION,
-
-    /**
-     * Unknown or unsupported event type.
-     */
-    TE_UNKNOWN_EVENT,
-}
diff --git a/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/YangCompositeEncodingImpl.java b/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/YangCompositeEncodingImpl.java
deleted file mode 100644
index f6f0d42..0000000
--- a/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/YangCompositeEncodingImpl.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.te.utils;
-
-import org.onosproject.yms.ych.YangCompositeEncoding;
-import org.onosproject.yms.ych.YangResourceIdentifierType;
-
-/**
- * Represents implementation of YangCompositeEncoding interfaces.
- */
-public class YangCompositeEncodingImpl implements YangCompositeEncoding {
-
-    /**
-     * Resource identifier for composite encoding.
-     */
-    private String resourceIdentifier;
-
-    /**
-     * Resource information for composite encoding.
-     */
-    private String resourceInformation;
-
-    /**
-     * Resource identifier type.
-     */
-    private YangResourceIdentifierType resourceIdentifierType;
-
-    /**
-     * Creates an instance of YangCompositeEncodingImpl.
-     *
-     * @param resIdType is URI
-     * @param resId     is the URI string
-     * @param resInfo   is the JSON body string
-     */
-    public YangCompositeEncodingImpl(YangResourceIdentifierType resIdType,
-                                     String resId,
-                                     String resInfo) {
-        this.resourceIdentifierType = resIdType;
-        this.resourceIdentifier = resId;
-        this.resourceInformation = resInfo;
-    }
-
-    public String getResourceIdentifier() {
-        return resourceIdentifier;
-    }
-
-    public YangResourceIdentifierType getResourceIdentifierType() {
-        return resourceIdentifierType;
-    }
-
-    public String getResourceInformation() {
-        return resourceInformation;
-    }
-
-    public void setResourceIdentifier(String resourceId) {
-        resourceIdentifier = resourceId;
-    }
-
-    public void setResourceInformation(String resourceInfo) {
-        resourceInformation = resourceInfo;
-    }
-
-    public void setResourceIdentifierType(YangResourceIdentifierType idType) {
-        resourceIdentifierType = idType;
-    }
-}
-
diff --git a/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/package-info.java b/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/package-info.java
deleted file mode 100644
index 72fc8de..0000000
--- a/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Public codec classes for ietf provider.
- */
-package org.onosproject.provider.te.utils;
\ No newline at end of file
diff --git a/providers/ietfte/utils/src/test/java/org/onosproject/provider/te/utils/CodecToolsTest.java b/providers/ietfte/utils/src/test/java/org/onosproject/provider/te/utils/CodecToolsTest.java
deleted file mode 100644
index ff9d24c..0000000
--- a/providers/ietfte/utils/src/test/java/org/onosproject/provider/te/utils/CodecToolsTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.te.utils;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * Unit test for codec tools.
- */
-public class CodecToolsTest {
-    private static final ObjectMapper MAP = new ObjectMapper();
-    private final ObjectNode simpleObject = MAP.createObjectNode();
-    private String simpleString;
-
-
-    @Before
-    public void setup() throws Exception {
-        simpleObject.put("field1", 1);
-        simpleString = "{\n" +
-                "  \"field1\" : 1\n" +
-                "}";
-    }
-
-    @Test
-    public void toJson() throws Exception {
-        Assert.assertEquals(simpleObject, CodecTools.toJson(simpleString));
-    }
-
-    @Test
-    public void jsonToString() throws Exception {
-        assertEquals(simpleString, CodecTools.jsonToString(simpleObject));
-    }
-}
\ No newline at end of file
diff --git a/providers/ietfte/utils/src/test/java/org/onosproject/provider/te/utils/YangCompositeEncodingImplTest.java b/providers/ietfte/utils/src/test/java/org/onosproject/provider/te/utils/YangCompositeEncodingImplTest.java
deleted file mode 100644
index 21c602c..0000000
--- a/providers/ietfte/utils/src/test/java/org/onosproject/provider/te/utils/YangCompositeEncodingImplTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.te.utils;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.yms.ych.YangCompositeEncoding;
-
-import static org.junit.Assert.assertEquals;
-import static org.onosproject.yms.ych.YangResourceIdentifierType.URI;
-
-/**
- * Unit test for YangCompositeEncodingImpl.
- */
-public class YangCompositeEncodingImplTest {
-
-    private YangCompositeEncoding encode;
-    private static final String RES_ID = "/restconf/data/ietf";
-    private static final String RES_INFO = "tunnel";
-    private static final String C_FAILED = "Construct failed: ";
-
-    @Before
-    public void setup() {
-        encode = new YangCompositeEncodingImpl(URI,
-                                               RES_ID,
-                                               RES_INFO);
-
-    }
-
-    @Test
-    public void testConstruction() {
-        assertEquals(C_FAILED + "type", URI, encode.getResourceIdentifierType());
-        assertEquals(C_FAILED + "id", RES_ID, encode.getResourceIdentifier());
-        assertEquals(C_FAILED + "info", RES_INFO, encode.getResourceInformation());
-    }
-}
\ No newline at end of file
diff --git a/providers/isis/BUILD b/providers/isis/BUILD
deleted file mode 100644
index e91c3bf..0000000
--- a/providers/isis/BUILD
+++ /dev/null
@@ -1,15 +0,0 @@
-BUNDLES = [
-    "//protocols/isis/api:onos-protocols-isis-api",
-    "//protocols/isis/ctl:onos-protocols-isis-ctl",
-    "//protocols/isis/isisio:onos-protocols-isis-isisio",
-    "//providers/isis/cfg:onos-providers-isis-cfg",
-    "//providers/isis/topology:onos-providers-isis-topology",
-]
-
-onos_app(
-    category = "Provider",
-    description = "ONOS ISIS protocol adapters.",
-    included_bundles = BUNDLES,
-    title = "ISIS Provider",
-    url = "http://onosproject.org",
-)
diff --git a/providers/isis/cfg/BUILD b/providers/isis/cfg/BUILD
deleted file mode 100644
index 82b592b..0000000
--- a/providers/isis/cfg/BUILD
+++ /dev/null
@@ -1,7 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + JACKSON + [
-    "//protocols/isis/api:onos-protocols-isis-api",
-]
-
-osgi_jar_with_tests(
-    deps = COMPILE_DEPS,
-)
diff --git a/providers/isis/cfg/src/main/java/org/onosproject/provider/isis/cfg/impl/IsisAppConfig.java b/providers/isis/cfg/src/main/java/org/onosproject/provider/isis/cfg/impl/IsisAppConfig.java
deleted file mode 100644
index a880bd0..0000000
--- a/providers/isis/cfg/src/main/java/org/onosproject/provider/isis/cfg/impl/IsisAppConfig.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.isis.cfg.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.isis.controller.IsisController;
-import org.onosproject.net.config.Config;
-
-/**
- * Configuration object for ISIS.
- */
-public class IsisAppConfig extends Config<ApplicationId> {
-    public static final String METHOD = "method";
-    public static final String PROCESSES = "processes";
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    IsisController isisController;
-
-    /**
-     * Returns the configuration method, add, delete etc.
-     *
-     * @return the configuration method, add, delete etc
-     */
-    public String method() {
-        return get(METHOD, null);
-    }
-
-    /**
-     * Returns the configured processes.
-     *
-     * @return the configured processes
-     */
-    public JsonNode processes() {
-
-        JsonNode jsonNodes = object.get(PROCESSES);
-
-        return jsonNodes;
-    }
-
-    @Override
-    public boolean isValid() {
-        this.isisController = DefaultServiceDirectory.getService(IsisController.class);
-
-        return true;
-    }
-}
\ No newline at end of file
diff --git a/providers/isis/cfg/src/main/java/org/onosproject/provider/isis/cfg/impl/IsisCfgProvider.java b/providers/isis/cfg/src/main/java/org/onosproject/provider/isis/cfg/impl/IsisCfgProvider.java
deleted file mode 100644
index f25d00d..0000000
--- a/providers/isis/cfg/src/main/java/org/onosproject/provider/isis/cfg/impl/IsisCfgProvider.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.isis.cfg.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.isis.controller.IsisController;
-import org.onosproject.net.config.ConfigFactory;
-import org.onosproject.net.config.NetworkConfigEvent;
-import org.onosproject.net.config.NetworkConfigListener;
-import org.onosproject.net.config.NetworkConfigRegistry;
-import org.onosproject.net.config.NetworkConfigService;
-import org.onosproject.net.config.basics.SubjectFactories;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * ISIS config provider to validate and populate the configuration.
- */
-@Component(immediate = true, service = IsisCfgProvider.class)
-public class IsisCfgProvider extends AbstractProvider {
-
-    private static final String PROVIDER_ID = "org.onosproject.provider.isis.cfg";
-    private static final Logger log = getLogger(IsisCfgProvider.class);
-    private final ConfigFactory configFactory =
-            new ConfigFactory(SubjectFactories.APP_SUBJECT_FACTORY, IsisAppConfig.class, "isisapp") {
-                @Override
-                public IsisAppConfig createConfig() {
-                    return new IsisAppConfig();
-                }
-            };
-    private final NetworkConfigListener configListener = new InternalConfigListener();
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected IsisController isisController;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigRegistry configRegistry;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigService configService;
-    private ApplicationId appId;
-
-    /**
-     * Creates an ISIS config provider.
-     */
-    public IsisCfgProvider() {
-        super(new ProviderId("isis", PROVIDER_ID));
-    }
-
-    @Activate
-    public void activate() {
-        log.debug("Activate...!!!");
-        appId = coreService.registerApplication(PROVIDER_ID);
-        configService.addListener(configListener);
-        configRegistry.registerConfigFactory(configFactory);
-        log.debug("ISIS cfg service got started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        log.debug("Deactivate...!!!");
-        configRegistry.unregisterConfigFactory(configFactory);
-        configService.removeListener(configListener);
-    }
-
-    /**
-     * Pushes the configuration changes to ISIS controller.
-     */
-    private void updateConfig() {
-        IsisAppConfig isisAppConfig = configRegistry.getConfig(appId, IsisAppConfig.class);
-        log.debug("IsisAppConfig::config processes::" + isisAppConfig.processes());
-        log.debug("IsisAppConfig::prop 1::" + isisAppConfig.method());
-        if ("ADD".equalsIgnoreCase(isisAppConfig.method())) {
-            JsonNode jsonNode = isisAppConfig.processes();
-            isisController.updateConfig(jsonNode);
-        }
-    }
-
-    /**
-     * Isis config listener to populate the configuration.
-     */
-    private class InternalConfigListener implements NetworkConfigListener {
-
-        @Override
-        public void event(NetworkConfigEvent event) {
-            log.debug("config event is getting called...!!!");
-            if (!event.configClass().equals(IsisAppConfig.class)) {
-                return;
-            }
-
-            switch (event.type()) {
-                case CONFIG_ADDED:
-                    updateConfig();
-                    break;
-                case CONFIG_UPDATED:
-                    updateConfig();
-                    break;
-                case CONFIG_REMOVED:
-                    break;
-                default:
-                    break;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/providers/isis/cfg/src/main/java/org/onosproject/provider/isis/cfg/impl/package-info.java b/providers/isis/cfg/src/main/java/org/onosproject/provider/isis/cfg/impl/package-info.java
deleted file mode 100644
index c7b47ee..0000000
--- a/providers/isis/cfg/src/main/java/org/onosproject/provider/isis/cfg/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provider that uses network configuration capability as a means of infrastructure configuration.
- */
-package org.onosproject.provider.isis.cfg.impl;
diff --git a/providers/isis/cli/src/main/java/org/onosproject/isis/cli/ApplicationIsisCommand.java b/providers/isis/cli/src/main/java/org/onosproject/isis/cli/ApplicationIsisCommand.java
deleted file mode 100644
index f15555c..0000000
--- a/providers/isis/cli/src/main/java/org/onosproject/isis/cli/ApplicationIsisCommand.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.isis.cli;
-
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Deactivate;
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.onlab.packet.MacAddress;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.isis.controller.IsisController;
-import org.onosproject.isis.controller.IsisInterface;
-import org.onosproject.isis.controller.IsisLsdb;
-import org.onosproject.isis.controller.IsisNeighbor;
-import org.onosproject.isis.controller.IsisNetworkType;
-import org.onosproject.isis.controller.IsisProcess;
-import org.onosproject.isis.controller.IsisRouterType;
-import org.onosproject.isis.controller.LspWrapper;
-import org.onosproject.isis.io.isispacket.pdu.LsPdu;
-import org.onosproject.isis.io.util.IsisConstants;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.NetworkInterface;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Lists ISIS neighbors, database and interfaces details.
- */
-@Service
-@Command(scope = "onos", name = "isis", description = "lists database, neighbors and interfaces")
-public class ApplicationIsisCommand extends AbstractShellCommand {
-    private static final Logger log = LoggerFactory.getLogger(ApplicationIsisCommand.class);
-    private static final String INTERFACE = "interface";
-    private static final String DATABASE = "database";
-    private static final String NEIGHBOR = "neighbor";
-    private static final String P2P = "P2P";
-    private static final String LAN = "LAN";
-    private static final String L1 = "L1";
-    private static final String L2 = "L2";
-    private static final String L1L2 = "L1L2";
-    protected IsisController isisController;
-    @Argument(index = 0, name = "name",
-            description = "interface|database|neighbor",
-            required = true, multiValued = false)
-    String name = null;
-    @Argument(index = 1, name = "processId",
-            description = "processId", required = true, multiValued = false)
-    String processId = null;
-
-    @Activate
-    public void activate() {
-        log.debug("Activated...!!!");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        log.debug("Deactivated...!!!");
-    }
-
-    @Override
-    protected void doExecute() {
-        switch (name) {
-            case INTERFACE:
-                displayIsisInterfaces();
-                break;
-            case NEIGHBOR:
-                displayIsisNeighbors();
-                break;
-            case DATABASE:
-                displayIsisDatabase();
-                break;
-            default:
-                log.debug("Unknown command...!!");
-                break;
-        }
-    }
-
-    /**
-     * Displays ISIS neighbor details.
-     */
-    private void displayIsisNeighbors() {
-        String interfaceName = "";
-        String circuitType = "";
-        boolean invalidProcess = true;
-        try {
-            this.isisController = get(IsisController.class);
-            List<IsisProcess> listOfProcess = isisController.allConfiguredProcesses();
-            if (listOfProcess == null) {
-                return;
-            }
-            displayNeighborHeader();
-            Iterator<IsisProcess> itrProcess = listOfProcess.iterator();
-            while (itrProcess.hasNext()) {
-                IsisProcess isisProcess = itrProcess.next();
-                if (processId != null && processId.trim().equals(isisProcess.processId())) {
-                    invalidProcess = false;
-                    List<IsisInterface> interfaceList = isisProcess.isisInterfaceList();
-                    Iterator<IsisInterface> itrInterface = interfaceList.iterator();
-                    while (itrInterface.hasNext()) {
-                        IsisInterface isisInterface = itrInterface.next();
-                        interfaceName = NetworkInterface.getByIndex(isisInterface.interfaceIndex()).getName();
-                        Set<MacAddress> getNeighborList = isisInterface.neighbors();
-                        for (MacAddress mac : getNeighborList) {
-                            IsisNeighbor neighbor = isisInterface.lookup(mac);
-                            switch (neighbor.routerType()) {
-                                case L1:
-                                    circuitType = L1;
-                                    break;
-                                case L2:
-                                    circuitType = L2;
-                                    break;
-                                case L1L2:
-                                    circuitType = L1L2;
-                                    break;
-                                default:
-                                    log.debug("Unknown circuit type...!!");
-                                    break;
-                            }
-                            print("%-20s%-20s%-20s%-20s%-20s%-20s\n", neighbor.neighborSystemId(),
-                                  neighbor.neighborMacAddress().toString(), interfaceName,
-                                  circuitType, neighbor.interfaceState(), neighbor.holdingTime());
-                        }
-                    }
-                }
-            }
-            if (invalidProcess) {
-                print("%s\n", "Process " + processId + " not exist...!!!");
-            }
-        } catch (Exception e) {
-            log.debug("Error occurred while displaying ISIS neighbor: {}", e.getMessage());
-        }
-    }
-
-    /**
-     * Displays ISIS database details.
-     */
-    private void displayIsisDatabase() {
-        try {
-            this.isisController = get(IsisController.class);
-            List<IsisProcess> listOfProcess = isisController.allConfiguredProcesses();
-            Iterator<IsisProcess> itrProcess = listOfProcess.iterator();
-            boolean invalidProcess = true;
-            while (itrProcess.hasNext()) {
-                IsisProcess isisProcess = itrProcess.next();
-                if (processId != null && processId.trim().equals(isisProcess.processId())) {
-                    invalidProcess = false;
-                    List<IsisInterface> interfaceList = isisProcess.isisInterfaceList();
-                    Iterator<IsisInterface> itrInterface = interfaceList.iterator();
-                    if (itrInterface.hasNext()) {
-                        IsisInterface isisInterface = itrInterface.next();
-                        IsisLsdb isisLsdb = isisInterface.isisLsdb();
-                        if (isisLsdb != null) {
-                            Map<String, LspWrapper> lsWrapperListL1 = isisLsdb.getL1Db();
-                            Map<String, LspWrapper> lsWrapperListL2 = isisLsdb.getL2Db();
-                            Set<String> l1Wrapper = lsWrapperListL1.keySet();
-                            Set<String> l2Wrapper = lsWrapperListL2.keySet();
-                            if (l1Wrapper.size() > 0) {
-                                print("IS-IS Level-1 link-state database:");
-                                displayDatabaseHeader();
-                                for (String string : l1Wrapper) {
-                                    LspWrapper lspWrapper = lsWrapperListL1.get(string);
-                                    LsPdu lsPdu = (LsPdu) lspWrapper.lsPdu();
-                                    print("%-25s%-25s%-25s%-25s%-25s\n", lsPdu.lspId(), lsPdu.pduLength(),
-                                          lsPdu.sequenceNumber(),
-                                          Integer.toHexString(lsPdu.checkSum()), lspWrapper.remainingLifetime());
-                                }
-                            }
-                            if (l2Wrapper.size() > 0) {
-                                print("IS-IS Level-2 link-state database:");
-                                displayDatabaseHeader();
-                                for (String string2 : l2Wrapper) {
-                                    LspWrapper lspWrapper2 = lsWrapperListL2.get(string2);
-                                    LsPdu lsPdu2 = (LsPdu) lspWrapper2.lsPdu();
-                                    print("%-25s%-25s%-25s%-25s%-25s\n", lsPdu2.lspId(), lsPdu2.pduLength(),
-                                          lsPdu2.sequenceNumber(), Integer.toHexString(lsPdu2.checkSum()),
-                                          IsisConstants.LSPMAXAGE - lspWrapper2.currentAge());
-                                }
-                            }
-                            break;
-                        }
-                    }
-                }
-            }
-            if (invalidProcess) {
-                print("%s\n", "Process " + processId + " not exist...!!!");
-            }
-        } catch (Exception e) {
-            log.debug("Error occurred while displaying ISIS database: {}", e.getMessage());
-        }
-    }
-
-    /**
-     * Displays ISIS interfaces.
-     */
-    private void displayIsisInterfaces() {
-        String interfaceName = "";
-        String networkType = "";
-        String circuitType = "";
-        boolean invalidProcess = true;
-        try {
-            this.isisController = get(IsisController.class);
-            List<IsisProcess> listOfProcess = isisController.allConfiguredProcesses();
-            if (listOfProcess == null) {
-                return;
-            }
-            displayInterfaceHeader();
-            Iterator<IsisProcess> itrProcess = listOfProcess.iterator();
-            while (itrProcess.hasNext()) {
-                IsisProcess isisProcess = itrProcess.next();
-                if (processId != null && processId.trim().equals(isisProcess.processId())) {
-                    invalidProcess = false;
-                    List<IsisInterface> interfaceList = isisProcess.isisInterfaceList();
-                    for (IsisInterface isisInterface : interfaceList) {
-
-                        if (isisInterface.networkType() == IsisNetworkType.P2P) {
-                            networkType = P2P;
-                        } else {
-                            networkType = LAN;
-                        }
-
-                        switch (IsisRouterType.get(isisInterface.reservedPacketCircuitType())) {
-                            case L1:
-                                circuitType = L1;
-                                break;
-                            case L2:
-                                circuitType = L2;
-                                break;
-                            case L1L2:
-                                circuitType = L1L2;
-                                break;
-                            default:
-                                log.debug("Unknown circuit type...!!");
-                                break;
-                        }
-                        interfaceName = NetworkInterface.getByIndex(isisInterface.interfaceIndex()).getName();
-                        print("%-20s%-20s%-20s%-20s\n", interfaceName, isisInterface.areaAddress(),
-                              networkType, circuitType);
-                    }
-                }
-            }
-            if (invalidProcess) {
-                print("%s\n", "Process " + processId + " not exist...!!!");
-            }
-        } catch (Exception e) {
-            log.debug("Error occurred while displaying ISIS interface: {}", e.getMessage());
-        }
-    }
-
-    /**
-     * Displays ISIS interface header.
-     */
-    private void displayInterfaceHeader() {
-        print("%-20s%-20s%-20s%-20s\n", "Interface", "Area Id", "TYPE", "Level");
-    }
-
-    /**
-     * Displays ISIS neighbor header.
-     */
-    private void displayNeighborHeader() {
-        print("%-20s%-20s%-20s%-20s%-20s%-20s\n", "System Id", "Mac Id", "Interface",
-              "Level", "State", "Holding Time");
-    }
-
-    /**
-     * Displays ISIS database header.
-     */
-    private void displayDatabaseHeader() {
-        print("%-25s%-25s%-25s%-25s%-25s\n", "LSP ID ", "PduLen", "SeqNumber", "Checksum",
-              "Remaining Life Time");
-    }
-}
diff --git a/providers/isis/cli/src/main/java/org/onosproject/isis/cli/package-info.java b/providers/isis/cli/src/main/java/org/onosproject/isis/cli/package-info.java
deleted file mode 100644
index b75785b..0000000
--- a/providers/isis/cli/src/main/java/org/onosproject/isis/cli/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * ISIS cli implementation.
- */
-package org.onosproject.isis.cli;
diff --git a/providers/isis/topology/BUILD b/providers/isis/topology/BUILD
deleted file mode 100644
index 1e3324d..0000000
--- a/providers/isis/topology/BUILD
+++ /dev/null
@@ -1,9 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + JACKSON + [
-    "//protocols/isis/api:onos-protocols-isis-api",
-    "//protocols/isis/ctl:onos-protocols-isis-ctl",
-]
-
-osgi_jar_with_tests(
-    test_deps = TEST_ADAPTERS,
-    deps = COMPILE_DEPS,
-)
diff --git a/providers/isis/topology/src/main/java/org/onosproject/provider/isis/topology/impl/IsisTopologyProvider.java b/providers/isis/topology/src/main/java/org/onosproject/provider/isis/topology/impl/IsisTopologyProvider.java
deleted file mode 100644
index a8d3fc7..0000000
--- a/providers/isis/topology/src/main/java/org/onosproject/provider/isis/topology/impl/IsisTopologyProvider.java
+++ /dev/null
@@ -1,375 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.isis.topology.impl;
-
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onlab.packet.ChassisId;
-import org.onlab.util.Bandwidth;
-import org.onosproject.isis.controller.IsisController;
-import org.onosproject.isis.controller.topology.IsisLink;
-import org.onosproject.isis.controller.topology.IsisLinkListener;
-import org.onosproject.isis.controller.topology.IsisLinkTed;
-import org.onosproject.isis.controller.topology.IsisRouter;
-import org.onosproject.isis.controller.topology.IsisRouterId;
-import org.onosproject.isis.controller.topology.IsisRouterListener;
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.config.NetworkConfigService;
-import org.onosproject.net.config.basics.BandwidthCapacity;
-import org.onosproject.net.device.DefaultDeviceDescription;
-import org.onosproject.net.device.DefaultPortDescription;
-import org.onosproject.net.device.DeviceDescription;
-import org.onosproject.net.device.DeviceProvider;
-import org.onosproject.net.device.DeviceProviderRegistry;
-import org.onosproject.net.device.DeviceProviderService;
-import org.onosproject.net.device.PortDescription;
-import org.onosproject.net.link.DefaultLinkDescription;
-import org.onosproject.net.link.LinkDescription;
-import org.onosproject.net.link.LinkProvider;
-import org.onosproject.net.link.LinkProviderRegistry;
-import org.onosproject.net.link.LinkProviderService;
-import org.onosproject.net.link.LinkService;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-import org.slf4j.Logger;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provider which advertises device descriptions to the core.
- */
-@Component(immediate = true)
-public class IsisTopologyProvider extends AbstractProvider implements DeviceProvider, LinkProvider {
-
-    public static final long PSEUDO_PORT = 0xffffffff;
-    public static final String ADMINISTRATIVEGROUP = "administrativeGroup";
-    public static final String TE_METRIC = "teMetric";
-    public static final String MAXRESERVABLEBANDWIDTH = "maxReservableBandwidth";
-    public static final String ROUTERID = "routerId";
-    public static final String NEIGHBORID = "neighborId";
-    private static final Logger log = getLogger(IsisTopologyProvider.class);
-    // Default values for tunable parameters
-    private static final String UNKNOWN = "unknown";
-    final InternalTopologyProvider listener = new InternalTopologyProvider();
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceProviderRegistry deviceProviderRegistry;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LinkProviderRegistry linkProviderRegistry;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigService networkConfigService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LinkService linkService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected IsisController controller;
-    //This Interface that defines how this provider can interact with the core.
-    private LinkProviderService linkProviderService;
-    // The interface that defines how this Provider can interact with the core
-    private DeviceProviderService deviceProviderService;
-    private HashMap<DeviceId, List<PortDescription>> portMap = new HashMap<>();
-
-    /**
-     * Creates an ISIS device provider.
-     */
-    public IsisTopologyProvider() {
-        super(new ProviderId("l3", "org.onosproject.provider.isis"));
-    }
-
-    @Activate
-    public void activate() {
-        deviceProviderService = deviceProviderRegistry.register(this);
-        linkProviderService = linkProviderRegistry.register(this);
-        controller.addRouterListener(listener);
-        controller.addLinkListener(listener);
-        log.debug("IsisDeviceProvider::activate...!!!!");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        log.debug("IsisDeviceProvider::deactivate...!!!!");
-        deviceProviderRegistry.unregister(this);
-        deviceProviderService = null;
-        linkProviderRegistry.unregister(this);
-        linkProviderService = null;
-        controller.removeRouterListener(listener);
-        controller.removeLinkListener(listener);
-    }
-
-    @Override
-    public void triggerProbe(DeviceId deviceId) {
-        log.debug("IsisDeviceProvider::triggerProbe...!!!!");
-    }
-
-    @Override
-    public void roleChanged(DeviceId deviceId, MastershipRole newRole) {
-        log.debug("IsisDeviceProvider::roleChanged...!!!!");
-    }
-
-    @Override
-    public boolean isReachable(DeviceId deviceId) {
-        log.debug("IsisDeviceProvider::isReachable...!!!!");
-        return true;
-    }
-
-    @Override
-    public void changePortState(DeviceId deviceId, PortNumber portNumber, boolean enable) {
-        log.debug("IsisDeviceProvider::changePortState...!!!!");
-    }
-
-    /**
-     * Builds link description.
-     *
-     * @param isisLink ISIS link instance
-     * @return link description
-     */
-    private LinkDescription buildLinkDes(IsisLink isisLink) {
-        checkNotNull(isisLink);
-        long srcAddress = 0;
-        long dstAddress = 0;
-        boolean localPseduo = false;
-        boolean remotePseduo = false;
-        String localSystemId = isisLink.localSystemId();
-        String remoteSystemId = isisLink.remoteSystemId();
-        //Changing of port numbers
-        if (isisLink.interfaceIp() != null) {
-            //srcAddress = isisLink.interfaceIp().toInt();
-            srcAddress = (long) Long.parseUnsignedLong(Integer.toBinaryString(isisLink.interfaceIp().toInt()), 2);
-        }
-        if (isisLink.neighborIp() != null) {
-            //dstAddress = isisLink.neighborIp().toInt();
-            dstAddress = (long) Long.parseUnsignedLong(Integer.toBinaryString(isisLink.neighborIp().toInt()), 2);
-        }
-        DeviceId srcId = DeviceId.deviceId(IsisRouterId.uri(localSystemId));
-        DeviceId dstId = DeviceId.deviceId(IsisRouterId.uri(remoteSystemId));
-        if (checkIsDis(isisLink.localSystemId())) {
-            localPseduo = true;
-        } else if (checkIsDis(isisLink.remoteSystemId())) {
-            remotePseduo = true;
-        } else {
-            log.debug("IsisDeviceProvider::buildLinkDes : unknown type.!");
-        }
-
-        if (localPseduo && srcAddress == 0) {
-            srcAddress = PSEUDO_PORT;
-        } else if (remotePseduo && dstAddress == 0) {
-            dstAddress = PSEUDO_PORT;
-        }
-
-        ConnectPoint src = new ConnectPoint(srcId, PortNumber.portNumber(srcAddress));
-        ConnectPoint dst = new ConnectPoint(dstId, PortNumber.portNumber(dstAddress));
-        DefaultAnnotations.Builder annotationBuilder = DefaultAnnotations.builder();
-
-        annotationBuilder = buildAnnotations(annotationBuilder, isisLink);
-
-        return new DefaultLinkDescription(src, dst, Link.Type.DIRECT, false, annotationBuilder.build());
-    }
-
-    /**
-     * Return the DIS value from the systemId.
-     *
-     * @param systemId system Id.
-     * @return return true if DIS else false
-     */
-    public static boolean checkIsDis(String systemId) {
-        StringTokenizer stringTokenizer = new StringTokenizer(systemId, "." + "-");
-        int count = 0;
-        while (stringTokenizer.hasMoreTokens()) {
-            String str = stringTokenizer.nextToken();
-            if (count == 3) {
-                int x = Integer.parseInt(str);
-                if (x > 0) {
-                    return true;
-                }
-            }
-            count++;
-        }
-        return false;
-    }
-
-    /**
-     * Builds port description.
-     *
-     * @param deviceId   device ID for the port
-     * @param portNumber port number of the link
-     * @return list of port description
-     */
-    private List<PortDescription> buildPortDescriptions(DeviceId deviceId,
-                                                        PortNumber portNumber) {
-        List<PortDescription> portList;
-        if (portMap.containsKey(deviceId)) {
-            portList = portMap.get(deviceId);
-        } else {
-            portList = new ArrayList<>();
-        }
-        if (portNumber != null) {
-            PortDescription portDescriptions = DefaultPortDescription.builder()
-                    .withPortNumber(portNumber).isEnabled(true).build();
-            portList.add(portDescriptions);
-        }
-        portMap.put(deviceId, portList);
-
-        return portList;
-    }
-
-    /**
-     * Builds the annotation details.
-     *
-     * @param annotationBuilder default annotation builder instance
-     * @param isisLink          ISIS link instance
-     * @return annotation builder instance
-     */
-    private DefaultAnnotations.Builder buildAnnotations(DefaultAnnotations.Builder annotationBuilder,
-                                                        IsisLink isisLink) {
-        int administrativeGroup = 0;
-        long teMetric = 0;
-        Bandwidth maxReservableBandwidth = Bandwidth.bps(0);
-        String routerId = null;
-        String neighborId = null;
-
-        //TE Info
-        IsisLinkTed isisLinkTed = isisLink.linkTed();
-        log.info("Ted Information:  {}", isisLinkTed.toString());
-        administrativeGroup = isisLinkTed.administrativeGroup();
-        teMetric = isisLinkTed.teDefaultMetric();
-        maxReservableBandwidth = isisLinkTed.maximumReservableLinkBandwidth();
-        routerId = isisLink.localSystemId();
-        neighborId = isisLink.remoteSystemId();
-        annotationBuilder.set(ADMINISTRATIVEGROUP, String.valueOf(administrativeGroup));
-        annotationBuilder.set(TE_METRIC, String.valueOf(teMetric));
-        annotationBuilder.set(MAXRESERVABLEBANDWIDTH, String.valueOf(maxReservableBandwidth));
-        annotationBuilder.set(ROUTERID, String.valueOf(routerId));
-        annotationBuilder.set(NEIGHBORID, String.valueOf(neighborId));
-        return annotationBuilder;
-    }
-
-    /**
-     * Internal device provider implementation.
-     */
-    private class InternalTopologyProvider implements IsisRouterListener, IsisLinkListener {
-
-        @Override
-        public void routerAdded(IsisRouter isisRouter) {
-            String systemId = isisRouter.systemId();
-            log.info("Added device {}", systemId);
-            DeviceId deviceId = DeviceId.deviceId(IsisRouterId.uri(systemId));
-            Device.Type deviceType = Device.Type.ROUTER;
-            //If our routerType is Dr or Bdr type is PSEUDO
-            if (isisRouter.isDis()) {
-                deviceType = Device.Type.ROUTER;
-            } else {
-                deviceType = Device.Type.VIRTUAL;
-            }
-            ChassisId cId = new ChassisId();
-            DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder();
-            newBuilder.set(AnnotationKeys.TYPE, "L3");
-            newBuilder.set("RouterId", systemId);
-            DeviceDescription description =
-                    new DefaultDeviceDescription(IsisRouterId.uri(systemId), deviceType, UNKNOWN, UNKNOWN, UNKNOWN,
-                                                 UNKNOWN, cId, newBuilder.build());
-            deviceProviderService.deviceConnected(deviceId, description);
-            System.out.println("Device added: " + systemId);
-        }
-
-        @Override
-        public void routerRemoved(IsisRouter isisRouter) {
-            String systemId = isisRouter.systemId();
-            log.info("Delete device {}", systemId);
-            DeviceId deviceId = DeviceId.deviceId(IsisRouterId.uri(systemId));
-            if (deviceProviderService == null) {
-                return;
-            }
-            deviceProviderService.deviceDisconnected(deviceId);
-            log.info("delete device {}", systemId);
-        }
-
-        @Override
-        public void addLink(IsisLink isisLink) {
-            log.debug("Addlink {}", isisLink.localSystemId());
-
-            LinkDescription linkDes = buildLinkDes(isisLink);
-            //Updating ports of the link
-            //If already link exists, return
-            if (linkService.getLink(linkDes.src(), linkDes.dst()) != null || linkProviderService == null) {
-                return;
-            }
-            ConnectPoint destconnectPoint = linkDes.dst();
-            PortNumber destport = destconnectPoint.port();
-            if (destport.toLong() != 0) {
-                deviceProviderService.updatePorts(linkDes.src().deviceId(),
-                                                  buildPortDescriptions(linkDes.src().deviceId(),
-                                                  linkDes.src().port()));
-                deviceProviderService.updatePorts(linkDes.dst().deviceId(),
-                                                  buildPortDescriptions(linkDes.dst().deviceId(),
-                                                  linkDes.dst().port()));
-                registerBandwidth(linkDes, isisLink);
-                linkProviderService.linkDetected(linkDes);
-                System.out.println("link desc " + linkDes.toString());
-            }
-        }
-
-        @Override
-        public void deleteLink(IsisLink isisLink) {
-            log.debug("Delete link {}", isisLink.localSystemId());
-            if (linkProviderService == null) {
-                return;
-            }
-            LinkDescription linkDes = buildLinkDes(isisLink);
-            linkProviderService.linkVanished(linkDes);
-        }
-
-        /**
-         * Registers the bandwidth for source and destination points.
-         *
-         * @param linkDes  link description instance
-         * @param isisLink ISIS link instance
-         */
-        private void registerBandwidth(LinkDescription linkDes, IsisLink isisLink) {
-            if (isisLink == null) {
-                log.error("Could not able to register bandwidth ");
-                return;
-            }
-            IsisLinkTed isisLinkTed = isisLink.linkTed();
-            Bandwidth maxReservableBw = isisLinkTed.maximumReservableLinkBandwidth();
-            if (maxReservableBw != null) {
-                if (maxReservableBw.compareTo(Bandwidth.bps(0)) == 0) {
-                    return;
-                }
-                //Configure bandwidth for src and dst port
-                BandwidthCapacity config = networkConfigService.addConfig(linkDes.src(), BandwidthCapacity.class);
-                config.capacity(maxReservableBw).apply();
-
-                config = networkConfigService.addConfig(linkDes.dst(), BandwidthCapacity.class);
-                config.capacity(maxReservableBw).apply();
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/providers/isis/topology/src/main/java/org/onosproject/provider/isis/topology/impl/package-info.java b/providers/isis/topology/src/main/java/org/onosproject/provider/isis/topology/impl/package-info.java
deleted file mode 100644
index 24c17eb..0000000
--- a/providers/isis/topology/src/main/java/org/onosproject/provider/isis/topology/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provider that uses ISIS request as a means of infrastructure device discovery.
- */
-package org.onosproject.provider.isis.topology.impl;
diff --git a/providers/isis/topology/src/test/java/org/onosproject/provider/isis/topology/impl/IsisTopologyProviderTest.java b/providers/isis/topology/src/test/java/org/onosproject/provider/isis/topology/impl/IsisTopologyProviderTest.java
deleted file mode 100644
index 9a5b8c1..0000000
--- a/providers/isis/topology/src/test/java/org/onosproject/provider/isis/topology/impl/IsisTopologyProviderTest.java
+++ /dev/null
@@ -1,478 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.isis.topology.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.JsonNodeFactory;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onlab.util.Bandwidth;
-import org.onosproject.isis.controller.IsisController;
-import org.onosproject.isis.controller.IsisProcess;
-import org.onosproject.isis.controller.impl.topology.DefaultIsisLink;
-import org.onosproject.isis.controller.impl.topology.DefaultIsisLinkTed;
-import org.onosproject.isis.controller.impl.topology.DefaultIsisRouter;
-import org.onosproject.isis.controller.topology.IsisLink;
-import org.onosproject.isis.controller.topology.IsisLinkListener;
-import org.onosproject.isis.controller.topology.IsisLinkTed;
-import org.onosproject.isis.controller.topology.IsisRouter;
-import org.onosproject.isis.controller.topology.IsisRouterListener;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.config.Config;
-import org.onosproject.net.config.ConfigApplyDelegate;
-import org.onosproject.net.config.ConfigFactory;
-import org.onosproject.net.config.NetworkConfigRegistryAdapter;
-import org.onosproject.net.config.basics.BandwidthCapacity;
-import org.onosproject.net.device.DeviceDescription;
-import org.onosproject.net.device.DeviceListener;
-import org.onosproject.net.device.DeviceProvider;
-import org.onosproject.net.device.DeviceProviderRegistry;
-import org.onosproject.net.device.DeviceProviderService;
-import org.onosproject.net.device.DeviceServiceAdapter;
-import org.onosproject.net.device.PortDescription;
-import org.onosproject.net.device.PortStatistics;
-import org.onosproject.net.link.LinkDescription;
-import org.onosproject.net.link.LinkListener;
-import org.onosproject.net.link.LinkProvider;
-import org.onosproject.net.link.LinkProviderRegistry;
-import org.onosproject.net.link.LinkProviderService;
-import org.onosproject.net.link.LinkServiceAdapter;
-import org.onosproject.net.provider.ProviderId;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArraySet;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-/**
- * Test cases for ISIS topology provider.
- */
-public class IsisTopologyProviderTest {
-
-    private final IsisTopologyProvider provider = new IsisTopologyProvider();
-    private final TestDeviceRegistry nodeRegistry = new TestDeviceRegistry();
-    private final TestLinkRegistry linkRegistry = new TestLinkRegistry();
-    private final TestController controller = new TestController();
-    private final TestLinkService linkService = new TestLinkService();
-    private MockNetConfigRegistryAdapter networkConfigService = new MockNetConfigRegistryAdapter();
-
-    @Before
-    public void setUp() throws Exception {
-        provider.deviceProviderRegistry = nodeRegistry;
-        provider.linkProviderRegistry = linkRegistry;
-        provider.networkConfigService = networkConfigService;
-        provider.controller = controller;
-        provider.linkService = linkService;
-        provider.activate();
-        assertNotNull("provider should be registered", nodeRegistry.provider);
-        assertNotNull("listener should be registered", controller.nodeListener);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        provider.deactivate();
-        provider.controller = null;
-        provider.deviceProviderRegistry = null;
-        provider.networkConfigService = null;
-    }
-
-    @Test
-    public void triggerProbe() {
-        DeviceId deviceId = DeviceId.deviceId("2929.2929.2929.00-00");
-        provider.triggerProbe(deviceId);
-    }
-
-    @Test
-    public void roleChanged() {
-        DeviceId deviceId = DeviceId.deviceId("1111.1111.1111.00-00");
-        provider.roleChanged(deviceId, MastershipRole.MASTER);
-    }
-
-    @Test
-    public void changePortState() {
-        DeviceId deviceId = DeviceId.deviceId("2222.2222.2222.00-82");
-        provider.changePortState(deviceId, PortNumber.portNumber(168430087), false);
-    }
-
-    @Test
-    public void isReachable() {
-        DeviceId deviceId = DeviceId.deviceId("1010.1010.1111.00-22");
-        provider.isReachable(deviceId);
-    }
-
-
-    /* Validate node is added to the device validating URI and should get updated properly */
-    @Test
-    public void isisTopologyProviderTestAddDevice1() {
-        int deviceAddCount = 0;
-        IsisRouter isisRouter = new DefaultIsisRouter();
-        isisRouter.setSystemId("2929.2929.2929.00");
-        isisRouter.setNeighborRouterId(Ip4Address.valueOf("10.10.10.1"));
-        isisRouter.setInterfaceId(Ip4Address.valueOf("10.10.10.2"));
-        isisRouter.setDis(false);
-
-        for (IsisRouterListener l : controller.nodeListener) {
-            l.routerAdded(isisRouter);
-            deviceAddCount = nodeRegistry.connected.size();
-            assertTrue(deviceAddCount == 1);
-            l.routerRemoved(isisRouter);
-            deviceAddCount = nodeRegistry.connected.size();
-            assertTrue(deviceAddCount == 0);
-        }
-    }
-
-    @Test
-    public void isisTopologyProviderTestAddDevice2() {
-        int deviceAddCount = 0;
-        IsisRouter isisRouter = new DefaultIsisRouter();
-        isisRouter.setSystemId("7777.7777.7777.00");
-        isisRouter.setNeighborRouterId(Ip4Address.valueOf("10.10.10.1"));
-        isisRouter.setInterfaceId(Ip4Address.valueOf("10.10.10.7"));
-        isisRouter.setDis(false);
-        IsisRouter isisRouter1 = new DefaultIsisRouter();
-        isisRouter1.setSystemId("1111.1111.1111.00");
-        isisRouter1.setNeighborRouterId(Ip4Address.valueOf("10.10.10.7"));
-        isisRouter1.setInterfaceId(Ip4Address.valueOf("10.10.10.1"));
-        isisRouter1.setDis(true);
-        for (IsisRouterListener l : controller.nodeListener) {
-            l.routerAdded(isisRouter);
-            deviceAddCount = nodeRegistry.connected.size();
-            assertTrue(deviceAddCount == 1);
-            l.routerAdded(isisRouter1);
-            deviceAddCount = nodeRegistry.connected.size();
-            assertTrue(deviceAddCount == 2);
-            l.routerRemoved(isisRouter);
-            deviceAddCount = nodeRegistry.connected.size();
-            assertTrue(deviceAddCount == 1);
-        }
-    }
-
-    @Test
-    public void isisTopologyProviderTestAddLink() {
-        int deviceAddCount = 0;
-        IsisRouter isisRouter = new DefaultIsisRouter();
-        isisRouter.setSystemId("7777.7777.7777.00");
-        isisRouter.setNeighborRouterId(Ip4Address.valueOf("10.10.10.1"));
-        isisRouter.setInterfaceId(Ip4Address.valueOf("10.10.10.7"));
-        isisRouter.setDis(false);
-        IsisRouter isisRouter1 = new DefaultIsisRouter();
-        isisRouter1.setSystemId("1111.1111.1111.00");
-        isisRouter1.setNeighborRouterId(Ip4Address.valueOf("10.10.10.7"));
-        isisRouter1.setInterfaceId(Ip4Address.valueOf("10.10.10.1"));
-        isisRouter1.setDis(true);
-        IsisLink isisLink = new DefaultIsisLink();
-        isisLink.setRemoteSystemId("7777.7777.7777.00");
-        isisLink.setLocalSystemId("1111.1111.1111.00");
-        isisLink.setInterfaceIp(Ip4Address.valueOf("10.10.10.1"));
-        isisLink.setNeighborIp(Ip4Address.valueOf("10.10.10.7"));
-        IsisLinkTed isisLinkTed = new DefaultIsisLinkTed();
-        isisLinkTed.setTeDefaultMetric(10);
-        isisLinkTed.setAdministrativeGroup(5);
-        isisLinkTed.setIpv4InterfaceAddress(Ip4Address.valueOf("10.10.10.1"));
-        isisLinkTed.setIpv4NeighborAddress(Ip4Address.valueOf("10.10.10.7"));
-        isisLinkTed.setMaximumLinkBandwidth(Bandwidth.bps(0));
-        isisLinkTed.setMaximumReservableLinkBandwidth(Bandwidth.bps(1.0));
-        List<Bandwidth> unresList = new ArrayList<>();
-        unresList.add(Bandwidth.bps(0.0));
-        unresList.add(Bandwidth.bps(1.0));
-        unresList.add(Bandwidth.bps(2.0));
-        unresList.add(Bandwidth.bps(3.0));
-        isisLinkTed.setUnreservedBandwidth(unresList);
-        isisLink.setLinkTed(isisLinkTed);
-        for (IsisRouterListener l : controller.nodeListener) {
-            l.routerAdded(isisRouter);
-            deviceAddCount = nodeRegistry.connected.size();
-            assertTrue(deviceAddCount == 1);
-            l.routerAdded(isisRouter1);
-            deviceAddCount = nodeRegistry.connected.size();
-            assertTrue(deviceAddCount == 2);
-        }
-        for (IsisLinkListener l : controller.linkListener) {
-            l.addLink(isisLink);
-            l.deleteLink(isisLink);
-
-        }
-    }
-
-
-    /* Class implement device test registry */
-    private class TestDeviceRegistry implements DeviceProviderRegistry {
-        DeviceProvider provider;
-
-        Set<DeviceId> connected = new HashSet<>();
-
-        @Override
-        public DeviceProviderService register(DeviceProvider provider) {
-            this.provider = provider;
-            return new TestProviderService();
-        }
-
-        @Override
-        public void unregister(DeviceProvider provider) {
-        }
-
-        @Override
-        public Set<ProviderId> getProviders() {
-            return null;
-        }
-
-        private class TestProviderService implements DeviceProviderService {
-
-            @Override
-            public DeviceProvider provider() {
-                return null;
-            }
-
-            @Override
-            public void deviceConnected(DeviceId deviceId, DeviceDescription deviceDescription) {
-
-                connected.add(deviceId);
-
-            }
-
-            @Override
-            public void deviceDisconnected(DeviceId deviceId) {
-
-                connected.remove(deviceId);
-            }
-
-
-            @Override
-            public void updatePorts(DeviceId deviceId, List<PortDescription> portDescriptions) {
-                // TODO Auto-generated method stub
-
-            }
-
-            @Override
-            public void portStatusChanged(DeviceId deviceId, PortDescription portDescription) {
-                // TODO Auto-generated method stub
-
-            }
-
-            @Override
-            public void receivedRoleReply(DeviceId deviceId, MastershipRole requested, MastershipRole response) {
-                // TODO Auto-generated method stub
-
-            }
-
-
-            @Override
-            public void updatePortStatistics(DeviceId deviceId, Collection<PortStatistics> portStatistics) {
-                // TODO Auto-generated method stub
-
-            }
-        }
-    }
-
-
-
-    private class TestDeviceService extends DeviceServiceAdapter {
-        private DeviceListener listener;
-
-        @Override
-        public void addListener(DeviceListener listener) {
-            this.listener = listener;
-        }
-
-        @Override
-        public Iterable<Device> getDevices() {
-            return Collections.emptyList();
-        }
-    }
-
-    private class TestLinkService extends LinkServiceAdapter {
-        private LinkListener listener;
-
-        @Override
-        public void addListener(LinkListener listener) {
-            this.listener = listener;
-        }
-
-        @Override
-        public Iterable<Link> getLinks() {
-            return Collections.emptyList();
-        }
-    }
-
-    /* Class implement device test registry */
-    private class TestLinkRegistry implements LinkProviderRegistry {
-        LinkProvider provider;
-
-        Set<DeviceId> connected = new HashSet<>();
-
-        @Override
-        public LinkProviderService register(LinkProvider provider) {
-            this.provider = provider;
-            return new TestLinkProviderService();
-        }
-
-        @Override
-        public void unregister(LinkProvider provider) {
-
-        }
-
-        @Override
-        public Set<ProviderId> getProviders() {
-            return null;
-        }
-
-        private class TestLinkProviderService implements LinkProviderService {
-
-            @Override
-            public void linkDetected(LinkDescription linkDescription) {
-
-            }
-
-            @Override
-            public void linkVanished(LinkDescription linkDescription) {
-
-            }
-
-            @Override
-            public void linksVanished(ConnectPoint connectPoint) {
-
-            }
-
-            @Override
-            public void linksVanished(DeviceId deviceId) {
-
-            }
-
-            @Override
-            public LinkProvider provider() {
-                return null;
-            }
-        }
-    }
-
-    /* class implement test controller */
-    private class TestController implements IsisController {
-        protected Set<IsisRouterListener> nodeListener = new CopyOnWriteArraySet<>();
-        protected Set<IsisLinkListener> linkListener = new CopyOnWriteArraySet<>();
-
-        @Override
-        public void addRouterListener(IsisRouterListener nodeListener) {
-            this.nodeListener.add(nodeListener);
-        }
-
-        @Override
-        public void removeRouterListener(IsisRouterListener nodeListener) {
-            this.nodeListener.remove(nodeListener);
-        }
-
-        @Override
-        public void addLinkListener(IsisLinkListener listener) {
-            this.linkListener.add(listener);
-        }
-
-        @Override
-        public void removeLinkListener(IsisLinkListener listener) {
-            this.linkListener.remove(listener);
-        }
-
-        @Override
-        public void updateConfig(JsonNode processesNode) {
-
-        }
-
-        @Override
-        public List<IsisProcess> allConfiguredProcesses() {
-            return null;
-        }
-
-        @Override
-        public Set<IsisRouterListener> listener() {
-            return null;
-        }
-
-        @Override
-        public Set<IsisLinkListener> linkListener() {
-            return null;
-        }
-
-    }
-
-    /* Mock test for device service */
-    private class MockNetConfigRegistryAdapter extends NetworkConfigRegistryAdapter {
-        private ConfigFactory cfgFactory;
-        private Map<ConnectPoint, BandwidthCapacity> classConfig = new HashMap<>();
-
-        @Override
-        public void registerConfigFactory(ConfigFactory configFactory) {
-            cfgFactory = configFactory;
-        }
-
-        @Override
-        public void unregisterConfigFactory(ConfigFactory configFactory) {
-            cfgFactory = null;
-        }
-
-        @Override
-        public <S, C extends Config<S>> C addConfig(S subject, Class<C> configClass) {
-            if (configClass == BandwidthCapacity.class) {
-                BandwidthCapacity devCap = new BandwidthCapacity();
-                classConfig.put((ConnectPoint) subject, devCap);
-
-                JsonNode node = new ObjectNode(new MockJsonNode());
-                ObjectMapper mapper = new ObjectMapper();
-                ConfigApplyDelegate delegate = new InternalApplyDelegate();
-                devCap.init((ConnectPoint) subject, null, node, mapper, delegate);
-                return (C) devCap;
-            }
-
-            return null;
-        }
-
-        @Override
-        public <S, C extends Config<S>> void removeConfig(S subject, Class<C> configClass) {
-            classConfig.remove(subject);
-        }
-
-        @Override
-        public <S, C extends Config<S>> C getConfig(S subject, Class<C> configClass) {
-            if (configClass == BandwidthCapacity.class) {
-                return (C) classConfig.get(subject);
-            }
-            return null;
-        }
-
-        private class MockJsonNode extends JsonNodeFactory {
-        }
-
-        // Auxiliary delegate to receive notifications about changes applied to
-        // the network configuration - by the apps.
-        private class InternalApplyDelegate implements ConfigApplyDelegate {
-            @Override
-            public void onApply(Config config) {
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/providers/ospf/cfg/src/main/java/org/onosproject/provider/ospf/cfg/impl/OspfAppConfig.java b/providers/ospf/cfg/src/main/java/org/onosproject/provider/ospf/cfg/impl/OspfAppConfig.java
deleted file mode 100644
index ca1e461..0000000
--- a/providers/ospf/cfg/src/main/java/org/onosproject/provider/ospf/cfg/impl/OspfAppConfig.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-* Copyright 2016-present Open Networking Foundation
-*
-* 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.provider.ospf.cfg.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.config.Config;
-import org.onosproject.ospf.controller.OspfController;
-
-/**
- * Configuration object for OSPF.
- */
-public class OspfAppConfig extends Config<ApplicationId> {
-    public static final String METHOD = "method";
-    public static final String ATTRIBUTE = "attribute";
-    public static final String PROCESSES = "processes";
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    private OspfController ospfController;
-
-    /**
-     * Returns the configuration method, add, delete etc.
-     *
-     * @return the configuration method, add, delete etc
-     */
-    public String method() {
-        return get(METHOD, null);
-    }
-
-    /**
-     * Returns the configuration attribute, area, process etc.
-     *
-     * @return the configuration attribute, area, process etc
-     */
-    public String attribute() {
-        return get(ATTRIBUTE, null);
-    }
-
-    /**
-     * Returns the configured processes.
-     *
-     * @return the configured processes
-     */
-    public JsonNode processes() {
-        JsonNode jsonNodes = object.get(PROCESSES);
-
-        return jsonNodes;
-    }
-
-    @Override
-    public boolean isValid() {
-        this.ospfController = DefaultServiceDirectory.getService(OspfController.class);
-
-        return true;
-    }
-}
\ No newline at end of file
diff --git a/providers/ospf/cfg/src/main/java/org/onosproject/provider/ospf/cfg/impl/OspfCfgProvider.java b/providers/ospf/cfg/src/main/java/org/onosproject/provider/ospf/cfg/impl/OspfCfgProvider.java
deleted file mode 100644
index 4e62d28..0000000
--- a/providers/ospf/cfg/src/main/java/org/onosproject/provider/ospf/cfg/impl/OspfCfgProvider.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.ospf.cfg.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.net.config.ConfigFactory;
-import org.onosproject.net.config.NetworkConfigEvent;
-import org.onosproject.net.config.NetworkConfigListener;
-import org.onosproject.net.config.NetworkConfigRegistry;
-import org.onosproject.net.config.NetworkConfigService;
-import org.onosproject.net.config.basics.SubjectFactories;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.ospf.controller.OspfController;
-import org.slf4j.Logger;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provider which advertises device descriptions to the core.
- */
-@Component(immediate = true, service = OspfCfgProvider.class)
-public class OspfCfgProvider extends AbstractProvider {
-
-    static final String PROVIDER_ID = "org.onosproject.provider.ospf.cfg";
-    private static final Logger log = getLogger(OspfCfgProvider.class);
-    private final ConfigFactory configFactory =
-            new ConfigFactory(SubjectFactories.APP_SUBJECT_FACTORY, OspfAppConfig.class, "ospfapp") {
-                @Override
-                public OspfAppConfig createConfig() {
-                    return new OspfAppConfig();
-                }
-            };
-    private final NetworkConfigListener configListener = new InternalConfigListener();
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected OspfController ospfController;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CoreService coreService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigRegistry configRegistry;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigService configService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected OspfController controller;
-    private ApplicationId appId;
-
-    /**
-     * Creates an OSPF device provider.
-     */
-    public OspfCfgProvider() {
-        super(new ProviderId("ospf", PROVIDER_ID));
-    }
-
-    public void setOspfController(OspfController ospfController) {
-        this.ospfController = ospfController;
-    }
-
-    @Activate
-    public void activate() {
-        appId = coreService.registerApplication(PROVIDER_ID);
-        configService.addListener(configListener);
-        configRegistry.registerConfigFactory(configFactory);
-        log.info("activated...!!!");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        configRegistry.unregisterConfigFactory(configFactory);
-        configService.removeListener(configListener);
-        log.info("deactivated...!!!");
-    }
-
-    private void updateConfig() {
-        OspfAppConfig ospfAppConfig = configRegistry.getConfig(appId, OspfAppConfig.class);
-        if ("ADD".equalsIgnoreCase(ospfAppConfig.method())) {
-            JsonNode jsonNode = ospfAppConfig.processes();
-            ospfController.updateConfig(jsonNode);
-        } else {
-            log.debug("Please signify prop1 and prop2");
-        }
-    }
-
-    /**
-     * OSPF config listener to populate the configuration.
-     */
-    private class InternalConfigListener implements NetworkConfigListener {
-        @Override
-        public void event(NetworkConfigEvent event) {
-            log.debug("InternalConfigListener:: event is getting called");
-            if (!event.configClass().equals(OspfAppConfig.class)) {
-                return;
-            }
-            switch (event.type()) {
-                case CONFIG_ADDED:
-                    updateConfig();
-                    break;
-                case CONFIG_UPDATED:
-                    updateConfig();
-                    break;
-                case CONFIG_REMOVED:
-                    break;
-                default:
-                    break;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/providers/ospf/cfg/src/main/java/org/onosproject/provider/ospf/cfg/impl/package-info.java b/providers/ospf/cfg/src/main/java/org/onosproject/provider/ospf/cfg/impl/package-info.java
deleted file mode 100644
index 33d6448..0000000
--- a/providers/ospf/cfg/src/main/java/org/onosproject/provider/ospf/cfg/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provider that uses OSPF capability request as a means of infrastructure device discovery.
- */
-package org.onosproject.provider.ospf.cfg.impl;
diff --git a/providers/ospf/cli/src/main/java/org/onosproject/ospf/cli/ApplicationOspfCommand.java b/providers/ospf/cli/src/main/java/org/onosproject/ospf/cli/ApplicationOspfCommand.java
deleted file mode 100644
index 15cfa9b..0000000
--- a/providers/ospf/cli/src/main/java/org/onosproject/ospf/cli/ApplicationOspfCommand.java
+++ /dev/null
@@ -1,403 +0,0 @@
-/*
-* Copyright 2016-present Open Networking Foundation
-*
-* 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.ospf.cli;
-
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.ospf.controller.OspfArea;
-import org.onosproject.ospf.controller.OspfController;
-import org.onosproject.ospf.controller.OspfInterface;
-import org.onosproject.ospf.controller.OspfLsaType;
-import org.onosproject.ospf.controller.OspfNbr;
-import org.onosproject.ospf.controller.OspfProcess;
-import org.onosproject.ospf.protocol.lsa.LsaHeader;
-import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Representation of OSPF cli commands.
- */
-@Service
-@Component(immediate = true)
-@Command(scope = "onos", name = "ospf", description = "list database")
-public class ApplicationOspfCommand extends AbstractShellCommand {
-
-    protected static final String FORMAT6 = "%-20s%-20s%-20s%-20s%-20s%-20s\n";
-    protected static final String FORMAT5 = "%-20s%-20s%-20s%-20s%-20s\n";
-    protected static final String NETWORK = "NETWORK";
-    protected static final String SUMMARY = "SUMMARY";
-    protected static final String ASBR = "ABSR";
-    protected static final String EXTERNAL = "EXTERNAL";
-    protected static final String LINKLOOPAQ = "LINKLOCALOPAQUE";
-    protected static final String AREALOCOPAQ = "AREALOCALOPAQUE";
-    protected static final String ASOPAQ = "ASOPAQUE";
-    protected static final String DR = "DR";
-    protected static final String BACKUP = "BACKUP";
-    protected static final String DROTHER = "DROther";
-    static final String DATABASE = "database";
-    static final String NEIGHBORLIST = "neighbors";
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected OspfController ospfController;
-    @Argument(index = 0, name = "name",
-            description = "database|neighborlist",
-            required = true, multiValued = false)
-    private String name = null;
-    @Argument(index = 1, name = "processid",
-            description = "processId",
-            required = true, multiValued = false)
-    private String process = null;
-    @Argument(index = 2, name = "areaid",
-            description = "areaId",
-            required = false, multiValued = false)
-    private String area = null;
-    private List<String> routerLsa = new ArrayList<>();
-    private List<String> networkLsa = new ArrayList<>();
-    private List<String> summaryLsa = new ArrayList<>();
-    private List<String> externalLsa = new ArrayList<>();
-    private List<String> asbrSumm = new ArrayList<>();
-    private List<String> areaLocalOpaqLsa = new ArrayList<>();
-    private List<String> linkLocalOpqLsa = new ArrayList<>();
-    private List<String> asOpqLsa = new ArrayList<>();
-    private List<String> undefinedLsa = new ArrayList<>();
-    private List<OspfArea> areaList = new ArrayList<>();
-
-
-    @Activate
-    public void activate() {
-        print("OSPF cli activated...!!!");
-        log.debug("OSPF cli activated...!!!");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        log.debug("OSPF cli deactivated...!!!");
-    }
-
-    @Override
-    protected void doExecute() {
-        if (DATABASE.equals(name)) {
-            buildOspfDatabaseInformation();
-        } else if (NEIGHBORLIST.equals(name)) {
-            buildNeighborInformation();
-        } else {
-            print("Please check the command (database|neighbor)");
-        }
-    }
-
-    /**
-     * Clears all the lists.
-     */
-    private void clearLists() {
-        routerLsa.clear();
-        networkLsa.clear();
-        summaryLsa.clear();
-        externalLsa.clear();
-        asbrSumm.clear();
-        areaLocalOpaqLsa.clear();
-        linkLocalOpqLsa.clear();
-        asOpqLsa.clear();
-        undefinedLsa.clear();
-        areaList.clear();
-    }
-
-    /**
-     * Builds OSPF database information.
-     */
-    private void buildOspfDatabaseInformation() {
-        try {
-            //Builds LSA details
-            buildLsaLists();
-            for (OspfArea area : areaList) {
-                if (routerLsa.size() > 0) {
-                    printRouterFormat(area.areaId().toString(), area.routerId().toString(), process);
-                    for (String str : routerLsa) {
-                        String[] lsaVal = str.split("\\,");
-                        if (area.areaId().toString().equalsIgnoreCase(lsaVal[0])) {
-                            print(FORMAT6, lsaVal[2], lsaVal[3], lsaVal[4], lsaVal[5], lsaVal[6], lsaVal[7]);
-                        }
-                    }
-                }
-                if (networkLsa.size() > 0) {
-                    printNetworkFormat(area.areaId().toString(), NETWORK);
-                    printDetails(networkLsa, area.areaId().toString());
-                }
-                if (summaryLsa.size() > 0) {
-                    printNetworkFormat(area.areaId().toString(), SUMMARY);
-                    printDetails(summaryLsa, area.areaId().toString());
-                }
-                if (externalLsa.size() > 0) {
-                    printNetworkFormat(area.areaId().toString(), EXTERNAL);
-                    printDetails(externalLsa, area.areaId().toString());
-                }
-                if (asbrSumm.size() > 0) {
-                    printNetworkFormat(area.areaId().toString(), ASBR);
-                    printDetails(asbrSumm, area.areaId().toString());
-                }
-                if (areaLocalOpaqLsa.size() > 0) {
-                    printNetworkFormat(area.areaId().toString(), AREALOCOPAQ);
-                    printDetails(areaLocalOpaqLsa, area.areaId().toString());
-                }
-                if (linkLocalOpqLsa.size() > 0) {
-                    printNetworkFormat(area.areaId().toString(), LINKLOOPAQ);
-                    printDetails(linkLocalOpqLsa, area.areaId().toString());
-                }
-                if (asOpqLsa.size() > 0) {
-                    printNetworkFormat(area.areaId().toString(), ASOPAQ);
-                    printDetails(asOpqLsa, area.areaId().toString());
-                }
-                if (undefinedLsa.size() > 0) {
-                    printRouterFormat(area.areaId().toString(), area.routerId().toString(), process);
-                    printDetails(undefinedLsa, area.areaId().toString());
-                }
-            }
-            clearLists();
-        } catch (Exception ex) {
-            clearLists();
-            print("Error occured while Ospf controller getting called" + ex.getMessage());
-        }
-    }
-
-    /**
-     * Prints LSA details.
-     *
-     * @param lsaDetails LSA details
-     * @param areaId     area ID
-     */
-    private void printDetails(List<String> lsaDetails, String areaId) {
-        for (String str : lsaDetails) {
-            String[] lsaVal = str.split("\\,");
-            if (areaId.equalsIgnoreCase(lsaVal[0])) {
-                print(FORMAT5, lsaVal[2], lsaVal[3], lsaVal[4], lsaVal[5], lsaVal[6]);
-            }
-        }
-    }
-
-    /**
-     * Builds all LSA lists with LSA details.
-     */
-    private void buildLsaLists() {
-        this.ospfController = get(OspfController.class);
-        List<OspfProcess> listOfProcess = ospfController.getAllConfiguredProcesses();
-        Iterator<OspfProcess> itrProcess = listOfProcess.iterator();
-        while (itrProcess.hasNext()) {
-            OspfProcess ospfProcess = itrProcess.next();
-            if (process.equalsIgnoreCase(ospfProcess.processId())) {
-                List<OspfArea> listAreas = ospfProcess.areas();
-                Iterator<OspfArea> itrArea = listAreas.iterator();
-                while (itrArea.hasNext()) {
-                    OspfArea area = itrArea.next();
-                    List<LsaHeader> lsas = area.database()
-                            .getAllLsaHeaders(false, area.isOpaqueEnabled());
-                    List<LsaHeader> tmpLsaList = new ArrayList<>(lsas);
-                    log.debug("OSPFController::size of database::" + (lsas != null ? lsas.size() : null));
-                    Iterator<LsaHeader> itrLsaHeader = tmpLsaList.iterator();
-                    areaList.add(area);
-                    if (itrLsaHeader != null) {
-                        while (itrLsaHeader.hasNext()) {
-                            LsaHeader header = itrLsaHeader.next();
-                            populateLsaLists(header, area);
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Populates the LSA lists based on the input.
-     *
-     * @param header LSA header instance
-     * @param area   OSPF area instance
-     */
-    private void populateLsaLists(LsaHeader header, OspfArea area) {
-        String seqNo = Long.toHexString(header.lsSequenceNo());
-        String checkSum = Long.toHexString(header.lsCheckSum());
-        if (seqNo.length() == 16) {
-            seqNo = seqNo.substring(8, seqNo.length());
-        }
-        if (checkSum.length() == 16) {
-            checkSum = checkSum.substring(8, checkSum.length());
-        }
-        StringBuffer strBuf = getBuffList(area.areaId().toString(), area.routerId().toString(),
-                                          header.linkStateId(),
-                                          header.advertisingRouter().toString(),
-                                          header.age(), seqNo, checkSum);
-        if (header.lsType() == OspfLsaType.ROUTER.value()) {
-            strBuf.append(",");
-            strBuf.append(((RouterLsa) header).noLink());
-            routerLsa.add(strBuf.toString());
-        } else if (header.lsType() == OspfLsaType.NETWORK.value()) {
-            strBuf.append(",");
-            strBuf.append("0");
-            networkLsa.add(strBuf.toString());
-        } else if (header.lsType() == OspfLsaType.SUMMARY.value()) {
-            strBuf.append(",");
-            strBuf.append("0");
-            summaryLsa.add(strBuf.toString());
-        } else if (header.lsType() == OspfLsaType.EXTERNAL_LSA.value()) {
-            strBuf.append(",");
-            strBuf.append("0");
-            externalLsa.add(strBuf.toString());
-        } else if (header.lsType() == OspfLsaType.ASBR_SUMMARY.value()) {
-            strBuf.append(",");
-            strBuf.append("0");
-            asbrSumm.add(strBuf.toString());
-        } else if (header.lsType() == OspfLsaType.AREA_LOCAL_OPAQUE_LSA.value()) {
-            strBuf.append(",");
-            strBuf.append("0");
-            areaLocalOpaqLsa.add(strBuf.toString());
-        } else if (header.lsType() == OspfLsaType.LINK_LOCAL_OPAQUE_LSA.value()) {
-            strBuf.append(",");
-            strBuf.append("0");
-            linkLocalOpqLsa.add(strBuf.toString());
-        } else if (header.lsType() == OspfLsaType.AS_OPAQUE_LSA.value()) {
-            strBuf.append(",");
-            strBuf.append("0");
-            asOpqLsa.add(strBuf.toString());
-        } else {
-            strBuf.append(",");
-            strBuf.append("0");
-            undefinedLsa.add(strBuf.toString());
-        }
-    }
-
-    /**
-     * Builds OSPF neighbor information.
-     */
-    private void buildNeighborInformation() {
-        try {
-            this.ospfController = get(OspfController.class);
-            List<OspfProcess> listOfProcess = ospfController.getAllConfiguredProcesses();
-            boolean flag = false;
-            printNeighborsFormat();
-            Iterator<OspfProcess> itrProcess = listOfProcess.iterator();
-            while (itrProcess.hasNext()) {
-                OspfProcess process = itrProcess.next();
-                List<OspfArea> listAreas = process.areas();
-                Iterator<OspfArea> itrArea = listAreas.iterator();
-                while (itrArea.hasNext()) {
-                    OspfArea area = itrArea.next();
-                    List<OspfInterface> itrefaceList = area.ospfInterfaceList();
-                    for (OspfInterface interfc : itrefaceList) {
-                        List<OspfNbr> nghbrList = new ArrayList<>(interfc.listOfNeighbors().values());
-                        for (OspfNbr neigbor : nghbrList) {
-                            print("%-20s%-20s%-20s%-20s%-20s\n", neigbor.neighborId(), neigbor.routerPriority(),
-                                  neigbor.getState() + "/" + checkDrBdrOther(neigbor.neighborIpAddr().toString(),
-                                                                             neigbor.neighborDr().toString(),
-                                                                             neigbor.neighborBdr().toString()),
-                                  neigbor.neighborIpAddr().toString(), interfc.ipAddress());
-                        }
-                    }
-                }
-            }
-        } catch (Exception ex) {
-            print("Error occured while Ospf controller getting called" + ex.getMessage());
-        }
-    }
-
-    /**
-     * Prints input after formatting.
-     *
-     * @param areaId    area ID
-     * @param routerId  router ID
-     * @param processId process ID
-     */
-    private void printRouterFormat(String areaId, String routerId, String processId) {
-        print("%s (%s) %s %s\n", "OSPF Router with ID", routerId, "Process Id", processId);
-        print("%s ( Area %s)\n", "Router Link States", areaId);
-        print("%-20s%-20s%-20s%-20s%-20s%-20s\n", "Link Id", "ADV Router", "Age", "Seq#",
-              "CkSum", "Link Count");
-    }
-
-    /**
-     * Prints input after formatting.
-     *
-     * @param areaId area ID
-     * @param type   network type
-     */
-    private void printNetworkFormat(String areaId, String type) {
-        print("%s %s ( Area %s)\n", type, "Link States", areaId);
-        print("%-20s%-20s%-20s%-20s%-20s\n", "Link Id", "ADV Router", "Age", "Seq#", "CkSum");
-    }
-
-    /**
-     * Prints input after formatting.
-     */
-    private void printNeighborsFormat() {
-        print("%-20s%-20s%-20s%-20s%-20s\n", "Neighbor Id", "Pri", "State",
-              "Address", "Interface");
-    }
-
-    /**
-     * Checks whether the neighbor is DR or BDR.
-     *
-     * @param ip    IP address to check
-     * @param drIP  DRs IP address
-     * @param bdrIp BDRs IP address
-     * @return 1- neighbor is DR, 2- neighbor is BDR, 3- DROTHER
-     */
-    public String checkDrBdrOther(String ip, String drIP, String bdrIp) {
-
-        if (ip.equalsIgnoreCase(drIP)) {
-            return DR;
-        } else if (ip.equalsIgnoreCase(bdrIp)) {
-            return BACKUP;
-        } else {
-            return DROTHER;
-        }
-    }
-
-    /**
-     * Returns inputs as formatted string.
-     *
-     * @param areaId            area id
-     * @param routerId          router id
-     * @param linkStateId       link state id
-     * @param advertisingRouter advertising router
-     * @param age               age
-     * @param seqNo             sequence number
-     * @param checkSum          checksum
-     * @return formatted string
-     */
-    private StringBuffer getBuffList(String areaId, String routerId, String linkStateId,
-                                     String advertisingRouter, int age, String seqNo, String checkSum) {
-        StringBuffer strBuf = new StringBuffer();
-        strBuf.append(areaId);
-        strBuf.append(",");
-        strBuf.append(routerId);
-        strBuf.append(",");
-        strBuf.append(linkStateId);
-        strBuf.append(",");
-        strBuf.append(advertisingRouter);
-        strBuf.append(",");
-        strBuf.append(age);
-        strBuf.append(",");
-        strBuf.append(seqNo);
-        strBuf.append(",");
-        strBuf.append(checkSum);
-        return strBuf;
-    }
-}
\ No newline at end of file
diff --git a/providers/ospf/cli/src/main/java/org/onosproject/ospf/cli/package-info.java b/providers/ospf/cli/src/main/java/org/onosproject/ospf/cli/package-info.java
deleted file mode 100644
index 6b4ef08..0000000
--- a/providers/ospf/cli/src/main/java/org/onosproject/ospf/cli/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * OSPF cli implementation.
- */
-package org.onosproject.ospf.cli;
diff --git a/providers/ospf/topology/src/main/java/org/onosproject/provider/ospf/topology/impl/OspfTopologyProvider.java b/providers/ospf/topology/src/main/java/org/onosproject/provider/ospf/topology/impl/OspfTopologyProvider.java
deleted file mode 100644
index 702d61a..0000000
--- a/providers/ospf/topology/src/main/java/org/onosproject/provider/ospf/topology/impl/OspfTopologyProvider.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.ospf.topology.impl;
-
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onlab.packet.ChassisId;
-import org.onlab.packet.Ip4Address;
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.device.DefaultDeviceDescription;
-import org.onosproject.net.device.DefaultPortDescription;
-import org.onosproject.net.device.DeviceDescription;
-import org.onosproject.net.device.DeviceProvider;
-import org.onosproject.net.device.DeviceProviderRegistry;
-import org.onosproject.net.device.DeviceProviderService;
-import org.onosproject.net.device.PortDescription;
-import org.onosproject.net.link.DefaultLinkDescription;
-import org.onosproject.net.link.LinkDescription;
-import org.onosproject.net.link.LinkProvider;
-import org.onosproject.net.link.LinkProviderRegistry;
-import org.onosproject.net.link.LinkProviderService;
-import org.onosproject.net.link.LinkService;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.ospf.controller.OspfController;
-import org.onosproject.ospf.controller.OspfLinkTed;
-import org.onosproject.ospf.controller.OspfRouter;
-import org.onosproject.ospf.controller.OspfRouterId;
-import org.onosproject.ospf.controller.OspfRouterListener;
-import org.onosproject.ospf.controller.OspfLinkListener;
-import org.slf4j.Logger;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provider which advertises device descriptions to the core.
- */
-@Component(immediate = true)
-public class OspfTopologyProvider extends AbstractProvider implements DeviceProvider, LinkProvider {
-
-    public static final long PSEUDO_PORT = 0xffffffff;
-    private static final Logger log = getLogger(OspfTopologyProvider.class);
-    // Default values for tunable parameters
-    private static final String UNKNOWN = "unknown";
-    final InternalTopologyProvider listener = new InternalTopologyProvider();
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceProviderRegistry deviceProviderRegistry;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LinkProviderRegistry linkProviderRegistry;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LinkService linkService;
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected OspfController controller;
-    //This Interface that defines how this provider can interact with the core.
-    private LinkProviderService linkProviderService;
-    // The interface that defines how this Provider can interact with the core
-    private DeviceProviderService deviceProviderService;
-
-    /**
-     * Creates an OSPF device provider.
-     */
-    public OspfTopologyProvider() {
-        super(new ProviderId("l3", "org.onosproject.provider.ospf"));
-    }
-
-    @Activate
-    public void activate() {
-        deviceProviderService = deviceProviderRegistry.register(this);
-        linkProviderService = linkProviderRegistry.register(this);
-        controller.addRouterListener(listener);
-        controller.addLinkListener(listener);
-        log.debug("IsisDeviceProvider::activate...!!!!");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        log.debug("IsisDeviceProvider::deactivate...!!!!");
-        deviceProviderRegistry.unregister(this);
-        deviceProviderService = null;
-        linkProviderRegistry.unregister(this);
-        linkProviderService = null;
-        controller.removeRouterListener(listener);
-        controller.removeLinkListener(listener);
-        log.info("deactivated...!!!");
-    }
-
-    @Override
-    public boolean isReachable(DeviceId deviceId) {
-        return true;
-    }
-
-    @Override
-    public void changePortState(DeviceId deviceId, PortNumber portNumber, boolean enable) {
-        log.info("changePortState on device {}", deviceId);
-    }
-
-    @Override
-    public void triggerProbe(DeviceId deviceId) {
-        log.info("Triggering probe on device {}", deviceId);
-    }
-
-    @Override
-    public void roleChanged(DeviceId deviceId, MastershipRole newRole) {
-        log.info("Accepting mastership role change for device {}", deviceId);
-    }
-
-    /**
-     * Builds link description.
-     *
-     * @param ospfRouter  OSPF router instance
-     * @param ospfLinkTed OSPF link TED instance
-     * @return link description instance
-     */
-    private LinkDescription buildLinkDes(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) {
-        long srcAddress = 0;
-        long dstAddress = 0;
-        boolean localPseduo = false;
-        //Changing of port numbers
-        srcAddress = Ip4Address.valueOf(ospfRouter.routerIp().toString()).toInt();
-        dstAddress = Ip4Address.valueOf(ospfRouter.neighborRouterId().toString()).toInt();
-        DeviceId srcId = DeviceId.deviceId(OspfRouterId.uri(ospfRouter.routerIp()));
-        DeviceId dstId = DeviceId.deviceId(OspfRouterId.uri(ospfRouter.neighborRouterId()));
-        if (ospfRouter.isDr()) {
-            localPseduo = true;
-        }
-        if (localPseduo && srcAddress == 0) {
-            srcAddress = PSEUDO_PORT;
-        }
-
-        ConnectPoint src = new ConnectPoint(srcId, PortNumber.portNumber(srcAddress));
-        ConnectPoint dst = new ConnectPoint(dstId, PortNumber.portNumber(dstAddress));
-
-        return new DefaultLinkDescription(src, dst, Link.Type.DIRECT, false);
-    }
-
-    /**
-     * Internal topology Provider implementation.
-     */
-    protected class InternalTopologyProvider implements OspfRouterListener, OspfLinkListener {
-
-        @Override
-        public void routerAdded(OspfRouter ospfRouter) {
-            String routerId = ospfRouter.routerIp().toString();
-            log.info("Added device {}", routerId);
-            DeviceId deviceId = DeviceId.deviceId(OspfRouterId.uri(ospfRouter.routerIp()));
-            Device.Type deviceType = Device.Type.ROUTER;
-            //If our routerType is Dr or Bdr type is PSEUDO
-            if (ospfRouter.isDr()) {
-                deviceType = Device.Type.ROUTER;
-            } else {
-                deviceType = Device.Type.VIRTUAL;
-            }
-            //deviceId = DeviceId.deviceId(routerDetails);
-            ChassisId cId = new ChassisId();
-            DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder();
-
-            newBuilder.set(AnnotationKeys.TYPE, "l3");
-            newBuilder.set("routerId", routerId);
-            DeviceDescription description =
-                    new DefaultDeviceDescription(OspfRouterId.uri(ospfRouter.routerIp()),
-                            deviceType, UNKNOWN, UNKNOWN, UNKNOWN,
-                            UNKNOWN, cId, newBuilder.build());
-            deviceProviderService.deviceConnected(deviceId, description);
-        }
-
-        @Override
-        public void routerRemoved(OspfRouter ospfRouter) {
-            String routerId = ospfRouter.routerIp().toString();
-            log.info("Delete device {}", routerId);
-            DeviceId deviceId = DeviceId.deviceId(OspfRouterId.uri(ospfRouter.routerIp()));
-            if (deviceProviderService == null) {
-                return;
-            }
-            deviceProviderService.deviceDisconnected(deviceId);
-            log.info("delete device {}", routerId);
-        }
-
-        @Override
-        public void addLink(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) {
-            log.debug("Addlink {}", ospfRouter.routerIp());
-            LinkDescription linkDes = buildLinkDes(ospfRouter, ospfLinkTed);
-            //If already link exists, return
-            if (linkService.getLink(linkDes.src(), linkDes.dst()) != null || linkProviderService == null) {
-                return;
-            }
-            //Updating ports of the link
-            List<PortDescription> srcPortDescriptions = new LinkedList<>();
-            srcPortDescriptions.add(DefaultPortDescription.builder()
-                    .withPortNumber(linkDes.src().port()).isEnabled(true).build());
-            deviceProviderService.updatePorts(linkDes.src().deviceId(), srcPortDescriptions);
-
-            List<PortDescription> dstPortDescriptions = new LinkedList<>();
-            dstPortDescriptions.add(DefaultPortDescription.builder()
-                    .withPortNumber(linkDes.dst().port()).isEnabled(true).build());
-            deviceProviderService.updatePorts(linkDes.dst().deviceId(), dstPortDescriptions);
-            linkProviderService.linkDetected(linkDes);
-        }
-
-        @Override
-        public void deleteLink(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) {
-            log.debug("Delete link {}", ospfRouter.routerIp().toString());
-            if (linkProviderService == null) {
-                return;
-            }
-            LinkDescription linkDes = buildLinkDes(ospfRouter, ospfLinkTed);
-            //Updating ports of the link
-            List<PortDescription> srcPortDescriptions = new LinkedList<>();
-            srcPortDescriptions.add(DefaultPortDescription.builder()
-                    .withPortNumber(linkDes.src().port()).isEnabled(true).build());
-            deviceProviderService.updatePorts(linkDes.src().deviceId(), srcPortDescriptions);
-
-            List<PortDescription> dstPortDescriptions = new LinkedList<>();
-            dstPortDescriptions.add(DefaultPortDescription.builder()
-                    .withPortNumber(linkDes.dst().port()).isEnabled(true).build());
-            deviceProviderService.updatePorts(linkDes.dst().deviceId(), dstPortDescriptions);
-            linkProviderService.linkVanished(linkDes);
-        }
-
-        @Override
-        public void routerChanged(OspfRouter ospfRouter) {
-            log.info("Router changed is not supported currently");
-        }
-    }
-}
diff --git a/providers/ospf/topology/src/main/java/org/onosproject/provider/ospf/topology/impl/package-info.java b/providers/ospf/topology/src/main/java/org/onosproject/provider/ospf/topology/impl/package-info.java
deleted file mode 100644
index 59a7a4e..0000000
--- a/providers/ospf/topology/src/main/java/org/onosproject/provider/ospf/topology/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Provider that uses OSPF as a means of topology discovery.
- */
-package org.onosproject.provider.ospf.topology.impl;
diff --git a/providers/ospf/topology/src/test/java/org/onosproject/provider/ospf/topology/impl/OspfTopologyProviderTest.java b/providers/ospf/topology/src/test/java/org/onosproject/provider/ospf/topology/impl/OspfTopologyProviderTest.java
deleted file mode 100644
index acd8340..0000000
--- a/providers/ospf/topology/src/test/java/org/onosproject/provider/ospf/topology/impl/OspfTopologyProviderTest.java
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.ospf.topology.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onlab.util.Bandwidth;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.device.DeviceDescription;
-import org.onosproject.net.device.DeviceListener;
-import org.onosproject.net.device.DeviceProvider;
-import org.onosproject.net.device.DeviceProviderRegistry;
-import org.onosproject.net.device.DeviceProviderService;
-import org.onosproject.net.device.DeviceServiceAdapter;
-import org.onosproject.net.device.PortDescription;
-import org.onosproject.net.device.PortStatistics;
-import org.onosproject.net.link.LinkDescription;
-import org.onosproject.net.link.LinkListener;
-import org.onosproject.net.link.LinkProvider;
-import org.onosproject.net.link.LinkProviderRegistry;
-import org.onosproject.net.link.LinkProviderService;
-import org.onosproject.net.link.LinkServiceAdapter;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.ospf.controller.OspfController;
-import org.onosproject.ospf.controller.OspfDeviceTed;
-import org.onosproject.ospf.controller.OspfLinkListener;
-import org.onosproject.ospf.controller.OspfLinkTed;
-import org.onosproject.ospf.controller.OspfProcess;
-import org.onosproject.ospf.controller.OspfRouter;
-import org.onosproject.ospf.controller.OspfRouterListener;
-import org.onosproject.ospf.controller.impl.OspfDeviceTedImpl;
-import org.onosproject.ospf.controller.impl.OspfLinkTedImpl;
-import org.onosproject.ospf.controller.impl.OspfRouterImpl;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArraySet;
-
-import static org.junit.Assert.*;
-
-/**
- * Test cases for OSPF topology provider.
- */
-public class OspfTopologyProviderTest {
-
-    private final OspfTopologyProvider provider = new OspfTopologyProvider();
-    private final TestDeviceRegistry nodeRegistry = new TestDeviceRegistry();
-    private final TestLinkRegistry linkRegistry = new TestLinkRegistry();
-    private final TestController controller = new TestController();
-    private final TestLinkService linkService = new TestLinkService();
-
-    @Before
-    public void setUp() throws Exception {
-        provider.deviceProviderRegistry = nodeRegistry;
-        provider.linkProviderRegistry = linkRegistry;
-        provider.controller = controller;
-        provider.linkService = linkService;
-        provider.activate();
-        assertNotNull("provider should be registered", nodeRegistry.provider);
-        assertNotNull("listener should be registered", controller.nodeListener);
-
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        provider.deactivate();
-        assertNull("listener should be removed", controller.nodeListener);
-        provider.controller = null;
-        provider.deviceProviderRegistry = null;
-    }
-
-    @Test
-    public void triggerProbe() {
-        DeviceId deviceId = DeviceId.deviceId("2.2.2.2");
-        provider.triggerProbe(deviceId);
-    }
-
-    @Test
-    public void roleChanged() {
-        DeviceId deviceId = DeviceId.deviceId("2.2.2.2");
-        provider.roleChanged(deviceId, MastershipRole.MASTER);
-    }
-
-    @Test
-    public void changePortState() {
-        DeviceId deviceId = DeviceId.deviceId("2.2.2.2");
-        provider.changePortState(deviceId, PortNumber.portNumber(0), false);
-    }
-
-    @Test
-    public void isReachable() {
-        DeviceId deviceId = DeviceId.deviceId("1.1.1.1");
-        provider.isReachable(deviceId);
-    }
-
-    /* Validate node is added to the device validating URI, RIB should get updated properly */
-    @Test
-    public void ospfTopologyProviderTestAddDevice1() {
-        int deviceAddCount = 0;
-        OspfRouter ospfRouter = new OspfRouterImpl();
-        ospfRouter.setDr(false);
-        ospfRouter.setOpaque(false);
-        ospfRouter.setNeighborRouterId(Ip4Address.valueOf("2.2.2.2"));
-        ospfRouter.setInterfaceId(Ip4Address.valueOf("10.10.10.2"));
-        ospfRouter.setAreaIdOfInterface(Ip4Address.valueOf("5.5.5.5"));
-        ospfRouter.setRouterIp(Ip4Address.valueOf("1.1.1.1"));
-        OspfDeviceTed ospfDeviceTed = new OspfDeviceTedImpl();
-        ospfDeviceTed.setAbr(false);
-        ospfDeviceTed.setAsbr(false);
-        ospfRouter.setDeviceTed(ospfDeviceTed);
-        OspfLinkTed ospfLinkTed = new OspfLinkTedImpl();
-        ospfLinkTed.setMaximumLink(Bandwidth.bps(10));
-        ospfLinkTed.setMaxReserved(Bandwidth.bps(20));
-        ospfLinkTed.setTeMetric(10);
-        OspfRouter ospfRouter1 = new OspfRouterImpl();
-        ospfRouter1.setDr(true);
-        ospfRouter1.setOpaque(true);
-        ospfRouter1.setNeighborRouterId(Ip4Address.valueOf("2.2.2.2"));
-        ospfRouter1.setInterfaceId(Ip4Address.valueOf("10.10.10.2"));
-        ospfRouter1.setAreaIdOfInterface(Ip4Address.valueOf("5.5.5.5"));
-        ospfRouter1.setRouterIp(Ip4Address.valueOf("1.1.1.1"));
-        OspfDeviceTed ospfDeviceTed1 = new OspfDeviceTedImpl();
-        ospfDeviceTed1.setAbr(false);
-        ospfDeviceTed1.setAsbr(false);
-        ospfRouter.setDeviceTed(ospfDeviceTed);
-        OspfLinkTed ospfLinkTed1 = new OspfLinkTedImpl();
-        ospfLinkTed1.setMaximumLink(Bandwidth.bps(10));
-        ospfLinkTed1.setMaxReserved(Bandwidth.bps(20));
-        ospfLinkTed1.setTeMetric(10);
-        for (OspfRouterListener l : controller.nodeListener) {
-            l.routerAdded(ospfRouter);
-
-            deviceAddCount = nodeRegistry.connected.size();
-            assertTrue(deviceAddCount == 1);
-            l.routerRemoved(ospfRouter);
-            deviceAddCount = nodeRegistry.connected.size();
-            assertTrue(deviceAddCount == 0);
-        }
-        for (OspfLinkListener l : controller.linkListener) {
-            l.addLink(ospfRouter, ospfLinkTed);
-            l.deleteLink(ospfRouter, ospfLinkTed);
-
-        }
-    }
-
-    @Test
-    public void ospfTopologyProviderTestAddDevice2() {
-        int deviceAddCount = 0;
-        OspfRouter ospfRouter = new OspfRouterImpl();
-        ospfRouter.setDr(true);
-        ospfRouter.setOpaque(true);
-        ospfRouter.setNeighborRouterId(Ip4Address.valueOf("3.3.3.3"));
-        ospfRouter.setInterfaceId(Ip4Address.valueOf("10.10.10.3"));
-        ospfRouter.setAreaIdOfInterface(Ip4Address.valueOf("6.6.6.6"));
-        ospfRouter.setRouterIp(Ip4Address.valueOf("7.7.7.7"));
-        OspfDeviceTed ospfDeviceTed = new OspfDeviceTedImpl();
-        ospfDeviceTed.setAbr(true);
-        ospfDeviceTed.setAsbr(true);
-        ospfRouter.setDeviceTed(ospfDeviceTed);
-        OspfLinkTed ospfLinkTed = new OspfLinkTedImpl();
-        ospfLinkTed.setMaximumLink(Bandwidth.bps(30));
-        ospfLinkTed.setMaxReserved(Bandwidth.bps(40));
-        ospfLinkTed.setTeMetric(50);
-        for (OspfRouterListener l : controller.nodeListener) {
-            l.routerAdded(ospfRouter);
-            deviceAddCount = nodeRegistry.connected.size();
-            assertTrue(deviceAddCount == 1);
-            l.routerRemoved(ospfRouter);
-            deviceAddCount = nodeRegistry.connected.size();
-            assertTrue(deviceAddCount == 0);
-        }
-    }
-
-
-    /* Class implement device test registry */
-    private class TestDeviceRegistry implements DeviceProviderRegistry {
-        DeviceProvider provider;
-        Set<DeviceId> connected = new HashSet<>();
-
-        @Override
-        public DeviceProviderService register(DeviceProvider provider) {
-            this.provider = provider;
-            return new TestProviderService();
-        }
-
-        @Override
-        public void unregister(DeviceProvider provider) {
-        }
-
-        @Override
-        public Set<ProviderId> getProviders() {
-            return null;
-        }
-
-        private class TestProviderService implements DeviceProviderService {
-
-            @Override
-            public DeviceProvider provider() {
-                return null;
-            }
-
-            @Override
-            public void deviceConnected(DeviceId deviceId, DeviceDescription deviceDescription) {
-                connected.add(deviceId);
-            }
-
-            @Override
-            public void deviceDisconnected(DeviceId deviceId) {
-                connected.remove(deviceId);
-            }
-
-            @Override
-            public void updatePorts(DeviceId deviceId, List<PortDescription> portDescriptions) {
-                // TODO Auto-generated method stub
-            }
-
-            @Override
-            public void portStatusChanged(DeviceId deviceId, PortDescription portDescription) {
-                // TODO Auto-generated method stub
-            }
-
-            @Override
-            public void receivedRoleReply(DeviceId deviceId, MastershipRole requested, MastershipRole response) {
-                // TODO Auto-generated method stub
-            }
-
-            @Override
-            public void updatePortStatistics(DeviceId deviceId, Collection<PortStatistics> portStatistics) {
-                // TODO Auto-generated method stub
-            }
-        }
-    }
-
-    private class TestDeviceService extends DeviceServiceAdapter {
-        private DeviceListener listener;
-
-        @Override
-        public void addListener(DeviceListener listener) {
-            this.listener = listener;
-        }
-
-        @Override
-        public Iterable<Device> getDevices() {
-            return Collections.emptyList();
-        }
-    }
-
-    private class TestLinkService extends LinkServiceAdapter {
-        private LinkListener listener;
-
-        @Override
-        public void addListener(LinkListener listener) {
-            this.listener = listener;
-        }
-
-        @Override
-        public Iterable<Link> getLinks() {
-            return Collections.emptyList();
-        }
-    }
-
-    /* Class implement device test registry */
-    private class TestLinkRegistry implements LinkProviderRegistry {
-        LinkProvider provider;
-        Set<DeviceId> connected = new HashSet<>();
-
-        @Override
-        public LinkProviderService register(LinkProvider provider) {
-            this.provider = provider;
-            return new TestLinkProviderService();
-        }
-
-        @Override
-        public void unregister(LinkProvider provider) {
-        }
-
-        @Override
-        public Set<ProviderId> getProviders() {
-            return null;
-        }
-
-        private class TestLinkProviderService implements LinkProviderService {
-            @Override
-            public void linkDetected(LinkDescription linkDescription) {
-            }
-
-            @Override
-            public void linkVanished(LinkDescription linkDescription) {
-            }
-
-            @Override
-            public void linksVanished(ConnectPoint connectPoint) {
-            }
-
-            @Override
-            public void linksVanished(DeviceId deviceId) {
-            }
-
-            @Override
-            public LinkProvider provider() {
-                return null;
-            }
-        }
-    }
-
-    /* class implement test controller */
-    private class TestController implements OspfController {
-        protected Set<OspfRouterListener> nodeListener = new CopyOnWriteArraySet<>();
-        protected Set<OspfLinkListener> linkListener = new CopyOnWriteArraySet<>();
-
-        @Override
-        public void addRouterListener(OspfRouterListener nodeListener) {
-            this.nodeListener.add(nodeListener);
-        }
-
-        @Override
-        public void removeRouterListener(OspfRouterListener nodeListener) {
-            this.nodeListener = null;
-        }
-
-        @Override
-        public void addLinkListener(OspfLinkListener listener) {
-            this.linkListener.add(listener);
-        }
-
-        @Override
-        public void removeLinkListener(OspfLinkListener listener) {
-            this.nodeListener = null;
-        }
-
-        @Override
-        public void updateConfig(JsonNode processesNode) {
-        }
-
-
-        @Override
-        public void deleteConfig(List<OspfProcess> processes, String attribute) {
-        }
-
-        @Override
-        public Set<OspfRouterListener> listener() {
-            return null;
-        }
-
-        @Override
-        public Set<OspfLinkListener> linkListener() {
-            return null;
-        }
-
-        @Override
-        public List<OspfProcess> getAllConfiguredProcesses() {
-            return null;
-        }
-    }
-}
\ No newline at end of file
diff --git a/providers/pcep/BUILD b/providers/pcep/BUILD
deleted file mode 100644
index fa0a676..0000000
--- a/providers/pcep/BUILD
+++ /dev/null
@@ -1,24 +0,0 @@
-BUNDLES = [
-    "@io_netty_netty//jar",
-    "//providers/pcep/topology:onos-providers-pcep-topology",
-    "//providers/pcep/tunnel:onos-providers-pcep-tunnel",
-    "//providers/pcep/cli:onos-providers-pcep-cli",
-    "//protocols/pcep/server/api:onos-protocols-pcep-server-api",
-    "//protocols/pcep/pcepio:onos-protocols-pcep-pcepio",
-    "//protocols/pcep/server/ctl:onos-protocols-pcep-server-ctl",
-    "//apps/pcep-api:onos-apps-pcep-api",
-]
-
-onos_app(
-    category = "Provider",
-    description = "PCEP protocol providers root.",
-    included_bundles = BUNDLES,
-    required_apps = [
-        "org.onosproject.pcep-api",
-        "org.onosproject.optical-model",
-        "org.onosproject.tunnel",
-        "org.onosproject.bgp",
-    ],
-    title = "PCEP Provider",
-    url = "http://onosproject.org",
-)
diff --git a/providers/pcep/cli/BUILD b/providers/pcep/cli/BUILD
deleted file mode 100644
index 4eac8a7..0000000
--- a/providers/pcep/cli/BUILD
+++ /dev/null
@@ -1,9 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + CLI + [
-    "//protocols/pcep/server/ctl:onos-protocols-pcep-server-ctl",
-    "//protocols/pcep/server/api:onos-protocols-pcep-server-api",
-]
-
-osgi_jar_with_tests(
-    karaf_command_packages = ["org.onosproject.pcep.cli"],
-    deps = COMPILE_DEPS,
-)
diff --git a/providers/pcep/cli/src/main/java/org/onosproject/pcep/cli/PcepSessionCommand.java b/providers/pcep/cli/src/main/java/org/onosproject/pcep/cli/PcepSessionCommand.java
deleted file mode 100644
index 68315e3..0000000
--- a/providers/pcep/cli/src/main/java/org/onosproject/pcep/cli/PcepSessionCommand.java
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.pcep.cli;
-
-
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.pcep.server.PcepClientController;
-import org.onosproject.pcep.server.PcepErrorDetail;
-import org.onosproject.pcep.server.PcepErrorType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Set;
-import java.util.Map;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.TreeMap;
-
-@Service
-@Command(scope = "onos", name = "pcep", description = "Pcep Session Info")
-public class PcepSessionCommand extends AbstractShellCommand {
-    private static final Logger log = LoggerFactory.getLogger(PcepSessionCommand.class);
-    private static final String SESSION = "session";
-    private static final String EXCEPTION = "exception";
-    private static final String ERROR = "error";
-    private PcepClientController pcepClientController;
-    private byte sessionId;
-    private Set<String> pcepSessionKeySet;
-    private Set<String> pcepSessionIdKeySet;
-    private Integer sessionIdValue = 0;
-    private String sessionStatus;
-    private List pcepSessionExceptions = new ArrayList();
-    private Set<String> pcepSessionFailurekeySet;
-    private PcepErrorDetail pcepErrorDetail;
-    private PcepErrorType pcepErrorType;
-    private Map<Integer, String> sessionEstablishmentFailureMap = new TreeMap<>();
-    private Map<Integer, String> unknownObjectMap = new TreeMap<>();
-    private Map<Integer, String> notSupportedObjectMap = new TreeMap<>();
-    private Map<Integer, String> policyViolationMap = new TreeMap<>();
-    private Map<Integer, String> mandatoryObjectMissingMap = new TreeMap<>();
-    private Map<Integer, String> receptionOfInvalidObjectMap = new TreeMap<>();
-    private Map<Integer, String> invalidOperationMap = new TreeMap<>();
-    private Set<Integer> pcepErrorMsgKey;
-    private Integer pcepErrorValue = 0;
-
-    @Argument(index = 0, name = "name",
-            description = "session" + "\n" + "exception" + "\n" + "error",
-            required = true, multiValued = false)
-    String name = null;
-    @Argument(index = 1, name = "peer",
-            description = "peerIp",
-            required = false, multiValued = false)
-    String peer = null;
-
-    @Override
-    protected void doExecute() {
-        switch (name) {
-            case SESSION:
-                displayPcepSession();
-                break;
-            case EXCEPTION:
-                displayPcepSessionFailureReason();
-                break;
-            case ERROR:
-                displayPcepErrorMsgs();
-                break;
-            default:
-                System.out.print("Unknown Command");
-                break;
-        }
-    }
-
-    private void displayPcepSession() {
-        try {
-            this.pcepClientController = get(PcepClientController.class);
-            Map<String, String> pcepSessionMap = pcepClientController.getPcepSessionMap();
-            Map<String, Byte> pcepSessionIdMap = pcepClientController.getPcepSessionIdMap();
-            pcepSessionKeySet = pcepSessionMap.keySet();
-            pcepSessionIdKeySet = pcepSessionIdMap.keySet();
-            if (peer != null) {
-                if (!pcepSessionKeySet.isEmpty()) {
-                    if (pcepSessionKeySet.contains(peer)) {
-                        for (String pcepSessionPeer : pcepSessionKeySet) {
-                            if (pcepSessionPeer.equals(peer)) {
-                                for (String pcepSessionId : pcepSessionIdKeySet) {
-                                    if (pcepSessionId.equals(peer)) {
-                                        sessionId = pcepSessionIdMap.get(pcepSessionId);
-                                        sessionStatus = pcepSessionMap.get(pcepSessionPeer);
-                                        if (sessionId < 0) {
-                                            sessionIdValue = sessionId + 256;
-                                        } else {
-                                            sessionIdValue = (int) sessionId;
-                                        }
-                                    }
-                                }
-                  print("SessionIp = %s, Status = %s, sessionId = %s", pcepSessionPeer, sessionStatus, sessionIdValue);
-                            }
-                        }
-                    } else {
-                        System.out.print("Wrong Peer IP");
-                    }
-                }
-            } else {
-                if (!pcepSessionKeySet.isEmpty()) {
-                    for (String pcepSessionPeer : pcepSessionKeySet) {
-                        for (String pcepSessionId : pcepSessionIdKeySet) {
-                            if (pcepSessionId.equals(pcepSessionPeer)) {
-                                sessionId = pcepSessionIdMap.get(pcepSessionId);
-                                sessionStatus = pcepSessionMap.get(pcepSessionPeer);
-                                if (sessionId < 0) {
-                                    sessionIdValue = sessionId + 256;
-                                } else {
-                                    sessionIdValue = (int) sessionId;
-                                }
-                            }
-                        }
-                print("SessionIp = %s, Status = %s, sessionId = %s", pcepSessionPeer, sessionStatus, sessionIdValue);
-                    }
-                }
-            }
-        } catch (Exception e) {
-            log.debug("Error occurred while displaying PCEP session information: {}", e.getMessage());
-        }
-    }
-
-    private void displayPcepSessionFailureReason() {
-        try {
-            this.pcepClientController = get(PcepClientController.class);
-            Map<String, List<String>> pcepSessionFailureReasonMap = pcepClientController.getPcepExceptions();
-            pcepSessionFailurekeySet = pcepSessionFailureReasonMap.keySet();
-            if (!pcepSessionFailurekeySet.isEmpty()) {
-                if (peer != null) {
-                    if (pcepSessionFailurekeySet.contains(peer)) {
-                        for (String pcepSessionPeerId : pcepSessionFailurekeySet) {
-                            if (pcepSessionPeerId.equals(peer)) {
-                                pcepSessionExceptions = pcepSessionFailureReasonMap.get(pcepSessionPeerId);
-                                print("PeerId = %s, FailureReason = %s", pcepSessionPeerId, pcepSessionExceptions);
-                            }
-                        }
-                    } else {
-                        System.out.print("Wrong Peer IP");
-                    }
-
-                } else {
-                    pcepSessionFailurekeySet = pcepSessionFailureReasonMap.keySet();
-                    if (!pcepSessionFailurekeySet.isEmpty()) {
-                        for (String pcepSessionPeerId : pcepSessionFailurekeySet) {
-                            pcepSessionExceptions = pcepSessionFailureReasonMap.get(pcepSessionPeerId);
-                            print("PeerId = %s, FailureReason = %s", pcepSessionPeerId, pcepSessionExceptions);
-                        }
-                    }
-                }
-
-            }
-
-
-        } catch (Exception e) {
-            log.debug("Error occurred while displaying PCEP session failure reasons: {}", e.getMessage());
-        }
-
-    }
-
-
-    private void displayPcepErrorMsgs() {
-        try {
-            this.pcepClientController = get(PcepClientController.class);
-            Map<Integer, Integer> pcepErrorMsgMap = pcepClientController.getPcepErrorMsg();
-            pcepErrorMsgKey = pcepErrorMsgMap.keySet();
-            if (!pcepErrorMsgKey.isEmpty()) {
-                for (Integer errorType : pcepErrorMsgKey) {
-                    pcepErrorValue = pcepErrorMsgMap.get(errorType);
-                    pcepErrorType = PcepErrorType.values()[errorType];
-                    switch (pcepErrorType) {
-                        case SESSIONESTABLISHMENTFAILURE:
-                            sessionEstablishmentFailureMap =  pcepErrorDetail.sessionEstablishmentFailure();
-                            Set<Integer> sessionFailureKeySet = sessionEstablishmentFailureMap.keySet();
-                            for (Integer sessionFailureKey : sessionFailureKeySet) {
-                                if (sessionFailureKey.equals(pcepErrorValue)) {
-                                    System.out.print(sessionEstablishmentFailureMap.get(sessionFailureKey));
-                                }
-                            }
-                            break;
-                        case CAPABALITYNOTSUPPORTED:
-                            System.out.print("Capability not supported");
-                            break;
-                        case UNKNOWNOBJECT:
-                            unknownObjectMap =  pcepErrorDetail.unknownObject();
-                            Set<Integer> unknownObjectKeySet = unknownObjectMap.keySet();
-                            for (Integer unknownObjectKey : unknownObjectKeySet) {
-                                if (unknownObjectKey.equals(pcepErrorValue)) {
-                                    System.out.print(unknownObjectMap.get(unknownObjectKey));
-                                }
-                            }
-                            break;
-                        case NOTSUPPORTEDOBJECT:
-                            notSupportedObjectMap =  pcepErrorDetail.notSupportedObject();
-                            Set<Integer> notSupportedObjectKeySet = notSupportedObjectMap.keySet();
-                            for (Integer notSupportedObjectKey : notSupportedObjectKeySet) {
-                                if (notSupportedObjectKey.equals(pcepErrorValue)) {
-                                    System.out.print(notSupportedObjectMap.get(notSupportedObjectKey));
-                                }
-                            }
-                            break;
-                        case POLICYVIOLATION:
-                            policyViolationMap =  pcepErrorDetail.policyViolation();
-                            Set<Integer> policyViolationKeySet = policyViolationMap.keySet();
-                            for (Integer policyViolationKey : policyViolationKeySet) {
-                                if (policyViolationKey.equals(pcepErrorValue)) {
-                                    System.out.print(policyViolationMap.get(policyViolationKey));
-                                }
-                            }
-                            break;
-                        case MANDATORYOBJECTMISSING:
-                            mandatoryObjectMissingMap =  pcepErrorDetail.mandatoryObjectMissing();
-                            Set<Integer> mandatoryObjectMissingKeySet = mandatoryObjectMissingMap.keySet();
-                            for (Integer mandatoryObjectMissingKey : mandatoryObjectMissingKeySet) {
-                                if (mandatoryObjectMissingKey.equals(pcepErrorValue)) {
-                                    System.out.print(mandatoryObjectMissingMap.get(mandatoryObjectMissingKey));
-                                }
-                            }
-                            break;
-                        case SYNCHRONIZEDPATHCOMPUTATIONREQUESTMISSING:
-                            System.out.print("Synchronized path computation request missing");
-                            break;
-                        case UNKNOWNREQUESTREFERENCE:
-                            System.out.print("Unknown request reference");
-                            break;
-                        case ESTABLISHINGSECONDPCEPSESSION:
-                            System.out.print("Attempt to establish a second PCEP session");
-                            break;
-                        case RECEPTIONOFINVALIDOBJECT:
-                            receptionOfInvalidObjectMap =  pcepErrorDetail.receptionOfInvalidObject();
-                            Set<Integer> receptionOfInvalidObjectKeySet = receptionOfInvalidObjectMap.keySet();
-                            for (Integer receptionOfInvalidObjectKey : receptionOfInvalidObjectKeySet) {
-                                if (receptionOfInvalidObjectKey.equals(pcepErrorValue)) {
-                                    System.out.print(receptionOfInvalidObjectMap.get(receptionOfInvalidObjectKey));
-                                }
-                            }
-                            break;
-                        case INVALIDOPERATION:
-                            invalidOperationMap =  pcepErrorDetail.invalidOperation();
-                            Set<Integer> invalidOperationKeySet = invalidOperationMap.keySet();
-                            for (Integer invalidOperationKey : invalidOperationKeySet) {
-                                if (invalidOperationKey.equals(pcepErrorValue)) {
-                                    System.out.print(invalidOperationMap.get(invalidOperationKey));
-                                }
-                            }
-                            break;
-                        case VIRTUALNETWORKTLVMISSING:
-                            System.out.print("VIRTUAL-NETWORK TLV missing");
-                            break;
-                        default:
-                            System.out.print("Unknown error message");
-                            break;
-                    }
-                }
-            }
-        }  catch (Exception e) {
-            log.debug("Error occurred while displaying PCEP error messages received: {}", e.getMessage());
-        }
-    }
-}
diff --git a/providers/pcep/cli/src/main/java/org/onosproject/pcep/cli/package-info.java b/providers/pcep/cli/src/main/java/org/onosproject/pcep/cli/package-info.java
deleted file mode 100644
index 09ceb42..0000000
--- a/providers/pcep/cli/src/main/java/org/onosproject/pcep/cli/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * PCEP CLI.
- */
-package org.onosproject.pcep.cli;
diff --git a/providers/pcep/topology/BUILD b/providers/pcep/topology/BUILD
deleted file mode 100644
index 753bb67..0000000
--- a/providers/pcep/topology/BUILD
+++ /dev/null
@@ -1,20 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + NETTY + JACKSON + [
-    "@io_netty_netty//jar",
-    "//protocols/ovsdb/api:onos-protocols-ovsdb-api",
-    "//protocols/ovsdb/rfc:onos-protocols-ovsdb-rfc",
-    "//apps/pcep-api:onos-apps-pcep-api",
-    "//protocols/pcep/server/api:onos-protocols-pcep-server-api",
-    "//protocols/pcep/pcepio:onos-protocols-pcep-pcepio",
-    "//core/api:onos-api-tests",
-    "//apps/optical-model:onos-apps-optical-model",
-]
-
-TEST_DEPS = TEST + [
-    "//protocols/pcep/server/api:onos-protocols-pcep-server-api-tests",
-    "//apps/pcep-api:onos-apps-pcep-api-tests",
-]
-
-osgi_jar_with_tests(
-    test_deps = TEST_DEPS,
-    deps = COMPILE_DEPS,
-)
diff --git a/providers/pcep/topology/src/main/java/org/onosproject/provider/pcep/topology/impl/PcepTopologyProvider.java b/providers/pcep/topology/src/main/java/org/onosproject/provider/pcep/topology/impl/PcepTopologyProvider.java
deleted file mode 100644
index 26d6968..0000000
--- a/providers/pcep/topology/src/main/java/org/onosproject/provider/pcep/topology/impl/PcepTopologyProvider.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.provider.pcep.topology.impl;
-
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onlab.packet.ChassisId;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link.Type;
-import org.onosproject.net.SparseAnnotations;
-import org.onosproject.net.config.ConfigFactory;
-import org.onosproject.net.config.NetworkConfigRegistry;
-import org.onosproject.net.config.NetworkConfigService;
-import org.onosproject.net.config.basics.SubjectFactories;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.Port;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.device.DefaultDeviceDescription;
-import org.onosproject.net.device.DefaultPortDescription;
-import org.onosproject.net.device.DeviceDescription;
-import org.onosproject.net.device.DeviceProvider;
-import org.onosproject.net.device.DeviceProviderRegistry;
-import org.onosproject.net.device.DeviceProviderService;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.device.PortDescription;
-import org.onosproject.net.link.DefaultLinkDescription;
-import org.onosproject.net.link.LinkDescription;
-import org.onosproject.net.link.LinkProvider;
-import org.onosproject.net.link.LinkProviderRegistry;
-import org.onosproject.net.link.LinkProviderService;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.pcep.api.DeviceCapability;
-import org.onosproject.pcep.api.PcepController;
-import org.onosproject.pcep.api.PcepDpid;
-import org.onosproject.pcep.api.PcepLink;
-import org.onosproject.pcep.api.PcepLinkListener;
-import org.onosproject.pcep.api.PcepOperator.OperationType;
-import org.onosproject.pcep.api.PcepSwitch;
-import org.onosproject.pcep.api.PcepSwitchListener;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepClient;
-import org.onosproject.pcep.server.PcepClientController;
-import org.onosproject.pcep.server.PcepNodeListener;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.net.DeviceId.deviceId;
-import static org.onosproject.pcep.api.PcepDpid.uri;
-
-/**
- * Provider which uses an PCEP controller to detect network infrastructure
- * topology.
- */
-@Component(immediate = true)
-public class PcepTopologyProvider extends AbstractProvider
-        implements LinkProvider, DeviceProvider {
-
-    /**
-     * Creates instance of PCEP topology provider.
-     */
-    public PcepTopologyProvider() {
-        //In BGP-PCEP app, since both BGP and PCEP topology provider have same scheme
-        //so BGP will be primary and PCEP topology provider will be ancillary.
-        super(new ProviderId("l3", "org.onosproject.provider.bgp", true));
-    }
-
-    private static final Logger log = LoggerFactory
-            .getLogger(PcepTopologyProvider.class);
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LinkProviderRegistry linkProviderRegistry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceProviderRegistry deviceProviderRegistry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PcepController controller;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceService deviceService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PcepClientController pcepClientController;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigRegistry netConfigRegistry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected NetworkConfigService netConfigService;
-
-    private DeviceProviderService deviceProviderService;
-    private LinkProviderService linkProviderService;
-
-    private HashMap<Long, List<PortDescription>> portMap = new HashMap<>();
-    private InternalLinkProvider listener = new InternalLinkProvider();
-
-    private final ConfigFactory<DeviceId, DeviceCapability> configFactory =
-            new ConfigFactory<DeviceId, DeviceCapability>(SubjectFactories.DEVICE_SUBJECT_FACTORY,
-                    DeviceCapability.class, "deviceCapability", false) {
-                @Override
-                public DeviceCapability createConfig() {
-                    return new DeviceCapability();
-                }
-            };
-
-    @Activate
-    public void activate() {
-        linkProviderService = linkProviderRegistry.register(this);
-        deviceProviderService = deviceProviderRegistry.register(this);
-        controller.addListener(listener);
-        controller.addLinkListener(listener);
-        pcepClientController.addNodeListener(listener);
-        netConfigRegistry.registerConfigFactory(configFactory);
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        linkProviderRegistry.unregister(this);
-        linkProviderService = null;
-        controller.removeListener(listener);
-        controller.removeLinkListener(listener);
-        pcepClientController.removeNodeListener(listener);
-        netConfigRegistry.unregisterConfigFactory(configFactory);
-        log.info("Stopped");
-    }
-
-    private List<PortDescription> buildPortDescriptions(PcepDpid dpid,
-                                                        Port port) {
-
-        List<PortDescription> portList;
-
-        if (portMap.containsKey(dpid.value())) {
-            portList = portMap.get(dpid.value());
-        } else {
-            portList = new ArrayList<>();
-        }
-        if (port != null) {
-            SparseAnnotations annotations = DefaultAnnotations.builder()
-                    .putAll(port.annotations()).build();
-            portList.add(DefaultPortDescription.builder()
-                    .withPortNumber(port.number())
-                    .isEnabled(port.isEnabled())
-                    .type(port.type())
-                    .portSpeed(port.portSpeed())
-                    .annotations(annotations)
-                    .build());
-        }
-
-        portMap.put(dpid.value(), portList);
-        return portList;
-    }
-
-    /**
-     * Build a link description from a pcep link.
-     *
-     * @param pceLink pcep link
-     * @return LinkDescription onos link description
-     */
-    private LinkDescription buildLinkDescription(PcepLink pceLink) {
-        LinkDescription ld;
-        checkNotNull(pceLink);
-        DeviceId srcDeviceID = deviceId(uri(pceLink.linkSrcDeviceID()));
-        DeviceId dstDeviceID = deviceId(uri(pceLink.linkDstDeviceId()));
-
-        deviceProviderService
-                .updatePorts(srcDeviceID,
-                        buildPortDescriptions(pceLink.linkSrcDeviceID(),
-                                pceLink.linkSrcPort()));
-
-        deviceProviderService
-                .updatePorts(dstDeviceID,
-                        buildPortDescriptions(pceLink.linkDstDeviceId(),
-                                pceLink.linkDstPort()));
-
-        ConnectPoint src = new ConnectPoint(srcDeviceID, pceLink.linkSrcPort().number());
-
-        ConnectPoint dst = new ConnectPoint(dstDeviceID, pceLink.linkDstPort().number());
-
-        DefaultAnnotations extendedAttributes = DefaultAnnotations
-                .builder()
-                .set("subType", String.valueOf(pceLink.linkSubType()))
-                .set("workState", pceLink.linkState())
-                .set("distance", String.valueOf(pceLink.linkDistance()))
-                .set("capType", pceLink.linkCapacityType().toLowerCase())
-                .set("avail_" + pceLink.linkCapacityType().toLowerCase(),
-                        String.valueOf(pceLink.linkAvailValue()))
-                .set("max_" + pceLink.linkCapacityType().toLowerCase(),
-                        String.valueOf(pceLink.linkMaxValue())).build();
-        // construct the link
-        ld = new DefaultLinkDescription(src, dst, Type.OPTICAL, extendedAttributes);
-        return ld;
-    }
-
-    private class InternalLinkProvider
-            implements PcepSwitchListener, PcepLinkListener, PcepNodeListener {
-
-        @Override
-        public void switchAdded(PcepDpid dpid) {
-            if (deviceProviderService == null) {
-                return;
-            }
-            DeviceId deviceId = deviceId(uri(dpid));
-            PcepSwitch sw = controller.getSwitch(dpid);
-            checkNotNull(sw, "device should not null.");
-            // The default device type is switch.
-            ChassisId cId = new ChassisId(dpid.value());
-            Device.Type deviceType;
-
-            switch (sw.getDeviceType()) {
-                case ROADM:
-                    deviceType = Device.Type.ROADM;
-                    break;
-                case OTN:
-                    deviceType = Device.Type.SWITCH;
-                    break;
-                case ROUTER:
-                    deviceType = Device.Type.ROUTER;
-                    break;
-                default:
-                    deviceType = Device.Type.OTHER;
-            }
-
-            DeviceDescription description = new DefaultDeviceDescription(
-                    deviceId.uri(),
-                    deviceType,
-                    sw.manufacturerDescription(),
-                    sw.hardwareDescription(),
-                    sw.softwareDescription(),
-                    sw.serialNumber(),
-                    cId);
-            deviceProviderService.deviceConnected(deviceId, description);
-
-        }
-
-        @Override
-        public void switchRemoved(PcepDpid dpid) {
-            if (deviceProviderService == null || linkProviderService == null) {
-                return;
-            }
-            deviceProviderService.deviceDisconnected(deviceId(uri(dpid)));
-
-            linkProviderService.linksVanished(DeviceId.deviceId(uri(dpid)));
-        }
-
-        @Override
-        public void switchChanged(PcepDpid dpid) {
-            // TODO Auto-generated method stub
-
-        }
-
-        @Override
-        public void handlePceplink(PcepLink link) {
-
-            OperationType operType = link.getOperationType();
-            LinkDescription ld = buildLinkDescription(link);
-            if (ld == null) {
-                log.error("Invalid link info.");
-                return;
-            }
-            switch (operType) {
-                case ADD:
-                case UPDATE:
-                    linkProviderService.linkDetected(ld);
-                    break;
-
-                case DELETE:
-                    linkProviderService.linkVanished(ld);
-                    break;
-
-                default:
-                    break;
-
-            }
-        }
-
-        @Override
-        public void addDevicePcepConfig(PcepClient pc) {
-            if (netConfigRegistry == null) {
-                log.error("Cannot add PCEP device capability as network config service is not available.");
-                return;
-            }
-            DeviceId pccDeviceId = DeviceId.deviceId(String.valueOf(pc.getPccId().ipAddress()));
-            DeviceCapability deviceCap = netConfigService.addConfig(pccDeviceId, DeviceCapability.class);
-            deviceCap.setLabelStackCap(pc.capability().labelStackCapability())
-                .setLocalLabelCap(pc.capability().pceccCapability())
-                .setSrCap(pc.capability().srCapability())
-                .apply();
-        }
-
-        @Override
-        public void deleteDevicePcepConfig(PccId pccId) {
-            if (netConfigRegistry == null) {
-                log.error("Cannot remove PCEP device capability as network config service is not available.");
-                return;
-            }
-            DeviceId pccDeviceId = DeviceId.deviceId(String.valueOf(pccId.ipAddress()));
-            netConfigService.removeConfig(pccDeviceId, DeviceCapability.class);
-        }
-    }
-
-    @Override
-    public void triggerProbe(DeviceId deviceId) {
-        // TODO Auto-generated method stub
-    }
-
-    @Override
-    public void roleChanged(DeviceId deviceId, MastershipRole newRole) {
-    }
-
-    @Override
-    public boolean isReachable(DeviceId deviceId) {
-        // TODO Auto-generated method stub
-        return true;
-    }
-
-    @Override
-    public void changePortState(DeviceId deviceId, PortNumber portNumber,
-                                boolean enable) {
-        // TODO Auto-generated method stub
-    }
-}
diff --git a/providers/pcep/topology/src/main/java/org/onosproject/provider/pcep/topology/impl/package-info.java b/providers/pcep/topology/src/main/java/org/onosproject/provider/pcep/topology/impl/package-info.java
deleted file mode 100644
index 7f6be53..0000000
--- a/providers/pcep/topology/src/main/java/org/onosproject/provider/pcep/topology/impl/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-/**
- *Provider that uses PCEP controller as a means of infrastructure topology discovery.
- */
-package org.onosproject.provider.pcep.topology.impl;
\ No newline at end of file
diff --git a/providers/pcep/topology/src/test/java/org/onosproject/provider/pcep/topology/impl/PcepTopologyProviderTest.java b/providers/pcep/topology/src/test/java/org/onosproject/provider/pcep/topology/impl/PcepTopologyProviderTest.java
deleted file mode 100644
index 84231e0..0000000
--- a/providers/pcep/topology/src/test/java/org/onosproject/provider/pcep/topology/impl/PcepTopologyProviderTest.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.pcep.topology.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.JsonNodeFactory;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.ChassisId;
-import org.onlab.packet.IpAddress;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultDevice;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.config.Config;
-import org.onosproject.net.config.ConfigApplyDelegate;
-import org.onosproject.net.config.ConfigFactory;
-import org.onosproject.net.config.NetworkConfigRegistryAdapter;
-import org.onosproject.net.device.DeviceDescription;
-import org.onosproject.net.device.DeviceProvider;
-import org.onosproject.net.device.DeviceProviderRegistry;
-import org.onosproject.net.device.DeviceProviderService;
-import org.onosproject.net.device.DeviceServiceAdapter;
-import org.onosproject.net.device.PortDescription;
-import org.onosproject.net.device.PortStatistics;
-import org.onosproject.net.link.LinkDescription;
-import org.onosproject.net.link.LinkProvider;
-import org.onosproject.net.link.LinkProviderRegistry;
-import org.onosproject.net.link.LinkProviderService;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.pcep.api.DeviceCapability;
-import org.onosproject.pcep.api.PcepControllerAdapter;
-import org.onosproject.pcep.server.ClientCapability;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepClient;
-import org.onosproject.pcep.server.PcepClientControllerAdapter;
-import org.onosproject.pcep.server.PcepNodeListener;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsNull.nullValue;
-import static org.onosproject.net.Link.State.ACTIVE;
-/**
- * Test for PCEP topology provider.
- */
-public class PcepTopologyProviderTest {
-    private static final String UNKNOWN = "unknown";
-    public static ProviderId providerId = new ProviderId("l3", "foo");
-    private final PcepClientControllerAdapter clientController = new PcepClientControllerAdapter();
-    private final PcepTopologyProvider provider = new PcepTopologyProvider();
-    private final MockDeviceRegistry nodeRegistry = new MockDeviceRegistry();
-    private final PcepControllerAdapter controller = new PcepControllerAdapter();
-    private final MockLinkRegistry linkRegistry = new MockLinkRegistry();
-    private final MockDeviceService deviceService = new MockDeviceService();
-    private final MockNetConfigRegistryAdapter netConfigRegistry = new MockNetConfigRegistryAdapter();
-    private Map<DeviceId, Device> deviceMap = new HashMap<>();
-
-    @Before
-    public void startUp() {
-        provider.pcepClientController = clientController;
-        provider.deviceProviderRegistry = nodeRegistry;
-        provider.linkProviderRegistry = linkRegistry;
-        provider.controller = controller;
-        provider.deviceService = deviceService;
-        provider.netConfigRegistry = netConfigRegistry;
-        provider.netConfigService = netConfigRegistry;
-        provider.activate();
-    }
-
-    @After
-    public void tearDown() {
-        provider.deactivate();
-        provider.deviceProviderRegistry = null;
-        provider.pcepClientController = null;
-        provider.linkProviderRegistry = null;
-        provider.controller = null;
-        provider.deviceService = null;
-        provider.netConfigRegistry = null;
-        provider.netConfigService = null;
-    }
-
-    /* Class implement device test registry */
-    private class MockLinkRegistry implements LinkProviderRegistry {
-        LinkProvider linkProvider;
-        Set<Link> links = new HashSet<>();
-
-        @Override
-        public LinkProviderService register(LinkProvider provider) {
-            this.linkProvider = provider;
-            return new MockProviderService();
-        }
-
-        @Override
-        public void unregister(LinkProvider provider) {
-            // TODO Auto-generated method stub
-        }
-
-        @Override
-        public Set<ProviderId> getProviders() {
-            return null;
-        }
-
-        private class MockProviderService implements LinkProviderService {
-
-            @Override
-            public void linkDetected(LinkDescription linkDescription) {
-                links.add(DefaultLink.builder().src(linkDescription.src())
-                        .dst(linkDescription.dst()).state(ACTIVE).type(linkDescription.type())
-                        .providerId(ProviderId.NONE).build());
-            }
-
-            @Override
-            public void linkVanished(LinkDescription linkDescription) {
-                links.remove(DefaultLink.builder().src(linkDescription.src())
-                        .dst(linkDescription.dst()).state(ACTIVE).type(linkDescription.type())
-                        .providerId(ProviderId.NONE).build());
-            }
-
-            @Override
-            public void linksVanished(ConnectPoint connectPoint) {
-                // TODO Auto-generated method stub
-            }
-
-            @Override
-            public void linksVanished(DeviceId deviceId) {
-                // TODO Auto-generated method stub
-            }
-
-            @Override
-            public LinkProvider provider() {
-                // TODO Auto-generated method stub
-                return null;
-            }
-        }
-    }
-
-    /* Class implement device test registry */
-    private class MockDeviceRegistry implements DeviceProviderRegistry {
-        DeviceProvider provider;
-
-        Set<DeviceId> connected = new HashSet<>();
-
-        @Override
-        public DeviceProviderService register(DeviceProvider provider) {
-            this.provider = provider;
-            return new MockProviderService();
-        }
-
-        @Override
-        public void unregister(DeviceProvider provider) {
-        }
-
-        @Override
-        public Set<ProviderId> getProviders() {
-            return null;
-        }
-
-        private class MockProviderService implements DeviceProviderService {
-
-            @Override
-            public DeviceProvider provider() {
-                return null;
-            }
-
-            @Override
-            public void deviceConnected(DeviceId deviceId, DeviceDescription deviceDescription) {
-                connected.add(deviceId);
-                Device device = new DefaultDevice(ProviderId.NONE, deviceId, Device.Type.ROUTER, UNKNOWN, UNKNOWN,
-                        UNKNOWN, UNKNOWN, new ChassisId(), deviceDescription.annotations());
-                deviceMap.put(deviceId, device);
-            }
-
-            @Override
-            public void deviceDisconnected(DeviceId deviceId) {
-                connected.remove(deviceId);
-                deviceMap.remove(deviceId);
-            }
-
-            @Override
-            public void updatePorts(DeviceId deviceId, List<PortDescription> portDescriptions) {
-                // TODO Auto-generated method stub
-            }
-
-            @Override
-            public void portStatusChanged(DeviceId deviceId, PortDescription portDescription) {
-                // TODO Auto-generated method stub
-            }
-
-            @Override
-            public void receivedRoleReply(DeviceId deviceId, MastershipRole requested, MastershipRole response) {
-                // TODO Auto-generated method stub
-            }
-
-            @Override
-            public void updatePortStatistics(DeviceId deviceId, Collection<PortStatistics> portStatistics) {
-                // TODO Auto-generated method stub
-            }
-        }
-    }
-
-    /* Mock test for device service */
-    private class MockDeviceService extends DeviceServiceAdapter {
-        @Override
-        public Device getDevice(DeviceId deviceId) {
-            return deviceMap.get(deviceId);
-        }
-    }
-
-    /* Mock test for device service */
-    private class MockNetConfigRegistryAdapter extends NetworkConfigRegistryAdapter {
-        private ConfigFactory cfgFactory;
-        private Map<DeviceId, DeviceCapability> classConfig = new HashMap<>();
-
-        @Override
-        public void registerConfigFactory(ConfigFactory configFactory) {
-            cfgFactory = configFactory;
-        }
-
-        @Override
-        public void unregisterConfigFactory(ConfigFactory configFactory) {
-            cfgFactory = null;
-        }
-
-        @Override
-        public <S, C extends Config<S>> C addConfig(S subject, Class<C> configClass) {
-            if (configClass == DeviceCapability.class) {
-                DeviceCapability devCap = new DeviceCapability();
-                classConfig.put((DeviceId) subject, devCap);
-
-                JsonNode node = new ObjectNode(new MockJsonNode());
-                ObjectMapper mapper = new ObjectMapper();
-                ConfigApplyDelegate delegate = new InternalApplyDelegate();
-                devCap.init((DeviceId) subject, null, node, mapper, delegate);
-                return (C) devCap;
-            }
-
-            return null;
-        }
-
-        @Override
-        public <S, C extends Config<S>> void removeConfig(S subject, Class<C> configClass) {
-            classConfig.remove(subject);
-        }
-
-        @Override
-        public <S, C extends Config<S>> C getConfig(S subject, Class<C> configClass) {
-            if (configClass == DeviceCapability.class) {
-                return (C) classConfig.get(subject);
-            }
-            return null;
-        }
-
-        private class MockJsonNode extends JsonNodeFactory {
-        }
-
-        // Auxiliary delegate to receive notifications about changes applied to
-        // the network configuration - by the apps.
-        private class InternalApplyDelegate implements ConfigApplyDelegate {
-            @Override
-            public void onApply(Config config) {
-                //configs.put(config.subject(), config.node());
-            }
-        }
-    }
-
-    /**
-     * Adds the PCEP device with SR, label stack and local label capabilities and deletes the device.
-     */
-    @Test
-    public void testPcepTopologyProviderTestAddDevice1() {
-        PcepClient pc = clientController.getClient(PccId.pccId(IpAddress.valueOf("1.1.1.1")));
-        for (PcepNodeListener l : clientController.pcepNodeListener) {
-            pc.setCapability(new ClientCapability(true, true, false, true, true));
-            l.addDevicePcepConfig(pc);
-
-            DeviceId pccDeviceId = DeviceId.deviceId(String.valueOf(pc.getPccId().ipAddress()));
-            DeviceCapability deviceCap = netConfigRegistry.getConfig(pccDeviceId, DeviceCapability.class);
-            assertThat(deviceCap.srCap(), is(true));
-            assertThat(deviceCap.labelStackCap(), is(true));
-            assertThat(deviceCap.localLabelCap(), is(true));
-
-            l.deleteDevicePcepConfig(pc.getPccId());
-            deviceCap = netConfigRegistry.getConfig(pccDeviceId, DeviceCapability.class);
-            assertThat(deviceCap, is(nullValue()));
-        }
-    }
-
-    /**
-     * Adds the PCEP device with SR, and local label capabilities and deletes the device.
-     */
-    @Test
-    public void testPcepTopologyProviderTestAddDevice2() {
-        PcepClient pc = clientController.getClient(PccId.pccId(IpAddress.valueOf("1.1.1.1")));
-        for (PcepNodeListener l : clientController.pcepNodeListener) {
-            pc.setCapability(new ClientCapability(true, true, false, false, true));
-            l.addDevicePcepConfig(pc);
-
-            DeviceId pccDeviceId = DeviceId.deviceId(String.valueOf(pc.getPccId().ipAddress()));
-            DeviceCapability deviceCap = netConfigRegistry.getConfig(pccDeviceId, DeviceCapability.class);
-            assertThat(deviceCap.srCap(), is(true));
-            assertThat(deviceCap.labelStackCap(), is(false));
-            assertThat(deviceCap.localLabelCap(), is(true));
-
-            l.deleteDevicePcepConfig(pc.getPccId());
-            deviceCap = netConfigRegistry.getConfig(pccDeviceId, DeviceCapability.class);
-            assertThat(deviceCap, is(nullValue()));
-        }
-    }
-}
diff --git a/providers/pcep/tunnel/BUILD b/providers/pcep/tunnel/BUILD
deleted file mode 100644
index c28460d..0000000
--- a/providers/pcep/tunnel/BUILD
+++ /dev/null
@@ -1,22 +0,0 @@
-COMPILE_DEPS = CORE_DEPS + NETTY + [
-    "//protocols/ovsdb/api:onos-protocols-ovsdb-api",
-    "//protocols/ovsdb/rfc:onos-protocols-ovsdb-rfc",
-    "//apps/pcep-api:onos-apps-pcep-api",
-    "//apps/tunnel/api:onos-apps-tunnel-api",
-    "//protocols/pcep/pcepio:onos-protocols-pcep-pcepio",
-    "//protocols/pcep/server/api:onos-protocols-pcep-server-api",
-    "//protocols/pcep/server/ctl:onos-protocols-pcep-server-ctl",
-]
-
-TEST_DEPS = TEST_ADAPTERS + [
-    "@io_netty_netty//jar",
-    "@io_netty_netty_transport//jar",
-    "//protocols/pcep/server/api:onos-protocols-pcep-server-api-tests",
-    "//apps/pcep-api:onos-apps-pcep-api-tests",
-    "//apps/tunnel/api:onos-apps-tunnel-api-tests",
-]
-
-osgi_jar_with_tests(
-    test_deps = TEST_DEPS,
-    deps = COMPILE_DEPS,
-)
diff --git a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/OsgiPropertyConstants.java b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/OsgiPropertyConstants.java
deleted file mode 100644
index 4d7b840..0000000
--- a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/OsgiPropertyConstants.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2018-present Open Networking Foundation
- *
- * 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.provider.pcep.tunnel.impl;
-
-/**
- * Constants for default values of configurable properties.
- */
-public final class OsgiPropertyConstants {
-
-    private OsgiPropertyConstants() {}
-
-    public static final String POLL_FREQUENCY = "tunnelStatsPollFrequency";
-    public static final int POLL_FREQUENCY_DEFAULT = 10;
-
-}
diff --git a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelApiMapper.java b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelApiMapper.java
deleted file mode 100644
index ee55362..0000000
--- a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelApiMapper.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.provider.pcep.tunnel.impl;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelProviderService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Entity to provide tunnel DB and mapping for request/response between CORE to PCEP
- * and PCEP to PCC.
- */
-public class PcepTunnelApiMapper {
-    private static final Logger log = LoggerFactory.getLogger(PcepTunnelApiMapper.class);
-
-    static final String PROVIDER_ID = "org.onosproject.provider.tunnel.pcep";
-    // Map to store all the tunnel requests.
-    private Map<Integer, PcepTunnelData> tunnelRequestQueue;
-    //Map to store all core related tunnel requests.
-    private Map<TunnelId, PcepTunnelData> coreTunnelRequestQueue;
-    //Map to store all the created tunnels.
-    private Map<Integer, PcepTunnelData> tunnelDB;
-    // Map to store the tunnel ids, given by core and given by pcc.
-    private Map<TunnelId, Integer> tunnelIdMap;
-
-    TunnelProviderService tunnelApiMapperservice;
-
-    /**
-     * Default constructor.
-     */
-    public PcepTunnelApiMapper() {
-        //TODO check if the map need to initialize
-        tunnelRequestQueue = new HashMap<Integer, PcepTunnelData>();
-        coreTunnelRequestQueue = new HashMap<TunnelId, PcepTunnelData>();
-        tunnelDB = new HashMap<Integer, PcepTunnelData>();
-        tunnelIdMap = new HashMap<TunnelId, Integer>();
-    }
-
-    /**
-     * Add tunnels to tunnel Request queues.
-     *
-     * @param srpId srp id
-     * @param pcepTunnelData pcep tunnel data
-     */
-    public void addToTunnelRequestQueue(int srpId, PcepTunnelData pcepTunnelData) {
-        tunnelRequestQueue.put(new Integer(srpId), pcepTunnelData);
-        log.debug("Tunnel Added to TunnelRequestQueue");
-    }
-
-    /**
-     * Map between Tunnel ID and pcc provided Tunnel ID.
-     *
-     * @param pcepTunnelData pcep tunnel data
-     */
-    public void addToTunnelIdMap(PcepTunnelData pcepTunnelData) {
-        int value = pcepTunnelData.statefulIpv4IndentifierTlv().getTunnelId() & 0xFFFF;
-        tunnelIdMap.put(pcepTunnelData.tunnel().tunnelId(), (new Integer(value)));
-        log.debug("Tunnel ID Added to tunnelIdMap");
-    }
-
-    /**
-     * Add tunnels to core tunnel request queue.
-     *
-     * @param pcepTunnelData pcep tunnel data
-     */
-    public void addToCoreTunnelRequestQueue(PcepTunnelData pcepTunnelData) {
-        coreTunnelRequestQueue.put(pcepTunnelData.tunnel().tunnelId(), pcepTunnelData);
-        log.debug("Tunnel Added to CoreTunnelRequestQueue");
-    }
-
-    /**
-     * Removes tunnels from the core tunnel request queue.
-     *
-     * @param tunnelId tunnel id
-     */
-    public void removeFromCoreTunnelRequestQueue(TunnelId tunnelId) {
-        coreTunnelRequestQueue.remove(tunnelId);
-        log.debug("Tunnnel create response sent to core and removed from CoreTunnelRequestQueue");
-    }
-
-    /**
-     * Handle the report which comes after initiate message.
-     *
-     * @param srpId srp id
-     * @param pcepTunnelData pcep tunnel data
-     */
-    public void handleCreateTunnelRequestQueue(int srpId, PcepTunnelData pcepTunnelData) {
-
-        int value = tunnelIdMap.get(pcepTunnelData.tunnel().tunnelId());
-        tunnelDB.put(new Integer(value), pcepTunnelData);
-        tunnelRequestQueue.remove(new Integer(srpId), pcepTunnelData);
-        log.debug("Tunnel Added to TunnelDBQueue and removed from TunnelRequestQueue. tunnel id {}"
-                + (new Integer(value)).toString());
-    }
-
-    /**
-     * Handle report which comes for update message.
-     *
-     * @param srpId srp id
-     * @param pcepTunnelData pcep tunnel data
-     */
-    public void handleUpdateTunnelRequestQueue(int srpId, PcepTunnelData pcepTunnelData) {
-        if (pcepTunnelData.rptFlag()) {
-            pcepTunnelData.setRptFlag(false);
-            int value = tunnelIdMap.get(pcepTunnelData.tunnel().tunnelId());
-            tunnelDB.put(new Integer(value), pcepTunnelData);
-            tunnelRequestQueue.remove(new Integer(srpId), pcepTunnelData);
-            log.debug("Tunnel Added to TunnelDBQueue and removed from TunnelRequestQueue. tunnel id {}",
-                      (new Integer(value)).toString());
-        } else {
-            pcepTunnelData.setRptFlag(true);
-            tunnelRequestQueue.put(new Integer(srpId), pcepTunnelData);
-            log.debug("Tunnel updated in TunnelRequestQueue");
-        }
-    }
-
-    /**
-     * Handle report for tunnel Release request.
-     *
-     * @param srpId srp id
-     * @param pcepTunnelData pcep tunnel data
-     */
-    public void handleRemoveFromTunnelRequestQueue(int srpId, PcepTunnelData pcepTunnelData) {
-
-        int value = tunnelIdMap.get(pcepTunnelData.tunnel().tunnelId());
-        tunnelIdMap.remove(pcepTunnelData.tunnel().tunnelId());
-        tunnelDB.remove(new Integer(value));
-        tunnelRequestQueue.remove(srpId);
-        log.debug("Tunnel removed from  TunnelDBQueue and TunnelRequestQueue");
-    }
-
-    /**
-     * Returns PcepTunnelData from the tunnel request queue.
-     *
-     * @param srpId srp id
-     * @return PcepTunnelData pcep tunnel data
-     */
-    public PcepTunnelData getDataFromTunnelRequestQueue(int srpId) {
-        return tunnelRequestQueue.get(new Integer(srpId));
-
-    }
-
-    /**
-     * Returns PcepTunnelData from the tunnel DB.
-     *
-     * @param tunnelId tunnel id
-     * @return PcepTunnelData pcep tunnel data
-     */
-    public PcepTunnelData getDataFromTunnelDBQueue(TunnelId tunnelId) {
-        int value = tunnelIdMap.get(tunnelId);
-        return tunnelDB.get((new Integer(value)));
-    }
-
-    /**
-     * Checks whether the tunnel exist in tunnel request queue.
-     *
-     * @param srpId srp id
-     * @return true if tunnel exist in reuest queue, false otherwise
-     */
-    public boolean checkFromTunnelRequestQueue(int srpId) {
-        boolean retValue = tunnelRequestQueue.containsKey(srpId);
-        return retValue;
-    }
-
-    /**
-     * Returns whether tunnel exist in tunnel db.
-     *
-     * @param tunnelId tunnel id
-     * @return true/false if the tunnel exists in the tunnel db
-     */
-    public boolean checkFromTunnelDBQueue(TunnelId tunnelId) {
-        int value = tunnelIdMap.get(tunnelId);
-        boolean retValue = tunnelDB.containsKey((new Integer(value)));
-        return retValue;
-    }
-}
diff --git a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelData.java b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelData.java
deleted file mode 100644
index 60a8dd4..0000000
--- a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelData.java
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.provider.pcep.tunnel.impl;
-
-import java.util.Objects;
-
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.net.ElementId;
-import org.onosproject.net.Path;
-import org.onosproject.pcepio.types.StatefulIPv4LspIdentifiersTlv;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * To store all tunnel related information from Core and Path computation client.
- */
-public class PcepTunnelData {
-
-    private Tunnel tunnel;
-    private Path path;
-    private int plspId;
-    private ElementId elementId;
-    private RequestType requestType;
-    private boolean rptFlag;
-
-    // data need to store from LSP object
-    private boolean lspAFlag;
-    private boolean lspDFlag;
-    private byte lspOFlag;
-    private short tunnelId;
-    private int extTunnelId;
-    private short lspId;
-    private StatefulIPv4LspIdentifiersTlv statefulIpv4IndentifierTlv;
-
-    /**
-     * Default constructor.
-     */
-    public PcepTunnelData() {
-        this.elementId = null;
-        this.tunnel = null;
-        this.path = null;
-        this.requestType = null;
-        this.rptFlag = false;
-        this.plspId = 0;
-    }
-
-    /**
-     * Constructor to initialize Tunnel, Path and Request type.
-     *
-     * @param tunnel mpls tunnel
-     * @param path Path in network
-     * @param requestType request type for tunnel
-     */
-    public PcepTunnelData(Tunnel tunnel, Path path, RequestType requestType) {
-        this.tunnel = tunnel;
-        this.path = path;
-        this.requestType = requestType;
-    }
-
-    /**
-     * Constructor to initialize ElemendId, Tunnel, Path and Request type.
-     *
-     * @param elementId Ip element id
-     * @param tunnel mpls tunnel
-     * @param path Path in network
-     * @param requestType request type for tunnel
-     */
-    public PcepTunnelData(ElementId elementId, Tunnel tunnel, Path path, RequestType requestType) {
-        this.elementId = elementId;
-        this.tunnel = tunnel;
-        this.path = path;
-        this.requestType = requestType;
-    }
-
-    /**
-     * Constructor to initialize Tunnel and Request type.
-     *
-     * @param tunnel Tunnel from core
-     * @param requestType request type for tunnel
-     */
-    public PcepTunnelData(Tunnel tunnel, RequestType requestType) {
-        this.tunnel = tunnel;
-        this.requestType = requestType;
-    }
-
-    /**
-     * Constructor to initialize ElementId, Tunnel and Request type.
-     *
-     * @param elementId Ip element id
-     * @param tunnel mpls tunnel
-     * @param requestType request type for tunnel
-     */
-    public PcepTunnelData(ElementId elementId, Tunnel tunnel, RequestType requestType) {
-        this.elementId = elementId;
-        this.tunnel = tunnel;
-        this.requestType = requestType;
-    }
-
-    /**
-     * Sets ip element id.
-     *
-     * @param elementId Ip element id
-     */
-    public void setElementId(ElementId elementId) {
-        this.elementId = elementId;
-    }
-
-    /**
-     * Sets tunnel.
-     *
-     * @param tunnel mpls tunnel
-     */
-    public void setTunnel(Tunnel tunnel) {
-        this.tunnel = tunnel;
-    }
-
-    /**
-     * Sets Path.
-     *
-     * @param path Path in network
-     */
-    public void setPath(Path path) {
-        this.path = path;
-    }
-
-    /**
-     * Request type for tunnel.
-     *
-     * @param requestType request type for tunnel
-     */
-    public void setRequestType(RequestType requestType) {
-        this.requestType = requestType;
-    }
-
-    /**
-     * Sets plspid generated from pcc.
-     *
-     * @param plspId plsp identifier
-     */
-    public void setPlspId(int plspId) {
-        this.plspId = plspId;
-    }
-
-    /**
-     * Sets A flag from lsp object.
-     *
-     * @param value A flag value
-     */
-    public void setLspAFlag(boolean value) {
-        this.lspAFlag = value;
-    }
-
-    /**
-     * Sets OF flag from lsp object.
-     *
-     * @param value OF flag value
-     */
-    public void setLspOFlag(byte value) {
-        this.lspOFlag = value;
-    }
-
-    /**
-     * Sets tunnel id from PCC.
-     *
-     * @param value tunnel id value
-     */
-    public void setTunnelId(short value) {
-        this.tunnelId = value;
-    }
-
-    /**
-     * Sets extended tunnel id from PCC.
-     *
-     * @param value extended tunnel id value
-     */
-    public void setExtTunnelId(int value) {
-        this.extTunnelId = value;
-    }
-
-    /**
-     * Sets lsp id from pcc.
-     *
-     * @param value lsp id
-     */
-    public void setLspId(short value) {
-        this.lspId = value;
-    }
-
-    /**
-     * Sets statefulIpv4Identifiers tlv.
-     * @param value statefulIpv4Identifiers tlv
-     */
-    public void setStatefulIpv4IndentifierTlv(StatefulIPv4LspIdentifiersTlv value) {
-        this.statefulIpv4IndentifierTlv = value;
-    }
-
-    /**
-     * Sets report flag.
-     *
-     * @param rptFlag report flag
-     */
-    public void setRptFlag(boolean rptFlag) {
-        this.rptFlag = rptFlag;
-    }
-
-    /**
-     * Sets D flag from lsp object.
-     *
-     * @param value D flag value
-     */
-    public void setLspDFlag(boolean value) {
-        this.lspDFlag = value;
-    }
-
-    /**
-     * To get Ip element id.
-     *
-     * @return Ip elemend id
-     */
-    public ElementId elementId() {
-        return this.elementId;
-    }
-
-    /**
-     * To get Tunnel.
-     *
-     * @return tunnel
-     */
-    public Tunnel tunnel() {
-        return this.tunnel;
-    }
-
-    /**
-     * To get Path.
-     *
-     * @return path
-     */
-    public Path path() {
-        return this.path;
-    }
-
-    /**
-     * To get request type.
-     *
-     * @return request type
-     */
-    public RequestType requestType() {
-        return this.requestType;
-    }
-
-    /**
-     * To get pLspId.
-     *
-     * @return pLspId
-     */
-    public int plspId() {
-        return this.plspId;
-    }
-
-    /**
-     * To get A flag.
-     *
-     * @return A flag
-     */
-    public boolean lspAFlag() {
-        return this.lspAFlag;
-    }
-
-    /**
-     * To get OF flag.
-     *
-     * @return OF flag
-     */
-    public byte lspOFlag() {
-        return this.lspOFlag;
-    }
-
-    /**
-     * To get tunnel id.
-     *
-     * @return tunnel id
-     */
-    public short tunnelId() {
-        return this.tunnelId;
-    }
-
-    /**
-     * To get extended tunnel id.
-     *
-     * @return extended tunnel id
-     */
-    public int extTunnelId() {
-        return this.extTunnelId;
-    }
-
-    /**
-     * To get pLspId.
-     *
-     * @return pLspId
-     */
-    public short lspId() {
-        return this.lspId;
-    }
-
-    /**
-     * To get D Flag.
-     *
-     * @return d flag
-     */
-    public boolean lspDFlag() {
-        return this.lspDFlag;
-    }
-
-    /**
-     * To get statefulIpv4Indentifier tlv.
-     *
-     * @return statefulIpv4Indentifier tlv
-     */
-    public StatefulIPv4LspIdentifiersTlv statefulIpv4IndentifierTlv() {
-        return this.statefulIpv4IndentifierTlv;
-    }
-
-    /**
-     * To get report flag.
-     *
-     * @return report flag
-     */
-    public boolean rptFlag() {
-        return this.rptFlag;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj instanceof PcepTunnelData) {
-            PcepTunnelData other = (PcepTunnelData) obj;
-            return Objects.equals(tunnel, other.tunnel)
-                    && Objects.equals(path, other.path)
-                    && Objects.equals(plspId, other.plspId)
-                    && Objects.equals(elementId, other.elementId)
-                    && Objects.equals(requestType, other.requestType)
-                    && Objects.equals(rptFlag, other.rptFlag)
-                    && Objects.equals(lspAFlag, other.lspAFlag)
-                    && Objects.equals(lspDFlag, other.lspDFlag)
-                    && Objects.equals(lspOFlag, other.lspOFlag)
-                    && Objects.equals(tunnelId, other.tunnelId)
-                    && Objects.equals(extTunnelId, other.extTunnelId)
-                    && Objects.equals(lspId, other.lspId)
-                    && Objects.equals(statefulIpv4IndentifierTlv, other.statefulIpv4IndentifierTlv);
-        }
-
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(tunnel, path, plspId, elementId, requestType, rptFlag, lspAFlag,
-                            lspDFlag, lspOFlag, tunnelId, extTunnelId, lspId, statefulIpv4IndentifierTlv);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass()).add("Tunnel", tunnel)
-                .add("Path", path).add("PlspId", plspId).add("ElementId", elementId)
-                .add("RequestType", requestType).add("RptFlag", rptFlag).add("LspAFlag", lspAFlag)
-                .add("LspDFlag", lspDFlag).add("LspOFlag", lspOFlag).add("TunnelId", tunnelId)
-                .add("ExtTunnelid", extTunnelId).add("LspId", lspId)
-                .add("StatefulIpv4IndentifierTlv", statefulIpv4IndentifierTlv).toString();
-    }
-}
diff --git a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
deleted file mode 100644
index d25c95f..0000000
--- a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
+++ /dev/null
@@ -1,1977 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.provider.pcep.tunnel.impl;
-
-import com.google.common.collect.Maps;
-import org.onlab.graph.ScalarWeight;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.IpAddress;
-import org.onosproject.cfg.ComponentConfigService;
-import org.onosproject.core.GroupId;
-import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.incubator.net.tunnel.DefaultLabelStack;
-import org.onosproject.incubator.net.tunnel.DefaultOpticalTunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.DefaultTunnel;
-import org.onosproject.incubator.net.tunnel.DefaultTunnelDescription;
-import org.onosproject.incubator.net.tunnel.DefaultTunnelStatistics;
-import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.OpticalLogicId;
-import org.onosproject.incubator.net.tunnel.OpticalTunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.Tunnel.State;
-import org.onosproject.incubator.net.tunnel.TunnelAdminService;
-import org.onosproject.incubator.net.tunnel.TunnelDescription;
-import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelName;
-import org.onosproject.incubator.net.tunnel.TunnelProvider;
-import org.onosproject.incubator.net.tunnel.TunnelProviderRegistry;
-import org.onosproject.incubator.net.tunnel.TunnelProviderService;
-import org.onosproject.incubator.net.tunnel.TunnelService;
-import org.onosproject.incubator.net.tunnel.TunnelStatistics;
-import org.onosproject.mastership.MastershipService;
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultAnnotations.Builder;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.DefaultPath;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.ElementId;
-import org.onosproject.net.IpElementId;
-import org.onosproject.net.Link;
-import org.onosproject.net.NetworkResource;
-import org.onosproject.net.Path;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.SparseAnnotations;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.link.LinkService;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.pcep.api.PcepController;
-import org.onosproject.pcep.api.PcepDpid;
-import org.onosproject.pcep.api.PcepHopNodeDescription;
-import org.onosproject.pcep.api.PcepOperator.OperationType;
-import org.onosproject.pcep.api.PcepTunnel;
-import org.onosproject.pcep.api.PcepTunnel.PathState;
-import org.onosproject.pcep.api.PcepTunnel.PathType;
-import org.onosproject.pcep.api.PcepTunnelListener;
-import org.onosproject.pcep.api.PcepTunnelStatistics;
-import org.onosproject.pcep.server.LspKey;
-import org.onosproject.pcep.server.LspType;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepClient;
-import org.onosproject.pcep.server.PcepClientController;
-import org.onosproject.pcep.server.PcepClientListener;
-import org.onosproject.pcep.server.PcepEventListener;
-import org.onosproject.pcep.server.PcepLspStatus;
-import org.onosproject.pcep.server.PcepLspSyncAction;
-import org.onosproject.pcep.server.PcepSyncStatus;
-import org.onosproject.pcep.server.SrpIdGenerators;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcInitiatedLspRequest;
-import org.onosproject.pcepio.protocol.PcepAttribute;
-import org.onosproject.pcepio.protocol.PcepBandwidthObject;
-import org.onosproject.pcepio.protocol.PcepEndPointsObject;
-import org.onosproject.pcepio.protocol.PcepEroObject;
-import org.onosproject.pcepio.protocol.PcepInitiateMsg;
-import org.onosproject.pcepio.protocol.PcepLspObject;
-import org.onosproject.pcepio.protocol.PcepMessage;
-import org.onosproject.pcepio.protocol.PcepMetricObject;
-import org.onosproject.pcepio.protocol.PcepMsgPath;
-import org.onosproject.pcepio.protocol.PcepReportMsg;
-import org.onosproject.pcepio.protocol.PcepSrpObject;
-import org.onosproject.pcepio.protocol.PcepStateReport;
-import org.onosproject.pcepio.protocol.PcepUpdateMsg;
-import org.onosproject.pcepio.protocol.PcepUpdateRequest;
-import org.onosproject.pcepio.types.IPv4SubObject;
-import org.onosproject.pcepio.types.PathSetupTypeTlv;
-import org.onosproject.pcepio.types.PcepNaiIpv4Adjacency;
-import org.onosproject.pcepio.types.PcepValueType;
-import org.onosproject.pcepio.types.SrEroSubObject;
-import org.onosproject.pcepio.types.StatefulIPv4LspIdentifiersTlv;
-import org.onosproject.pcepio.types.SymbolicPathNameTlv;
-import org.osgi.service.component.ComponentContext;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Modified;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Dictionary;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Strings.isNullOrEmpty;
-import static org.onlab.util.Tools.get;
-import static org.onosproject.incubator.net.tunnel.Tunnel.State.INIT;
-import static org.onosproject.incubator.net.tunnel.Tunnel.State.UNSTABLE;
-import static org.onosproject.incubator.net.tunnel.Tunnel.Type.MPLS;
-import static org.onosproject.net.DefaultAnnotations.EMPTY;
-import static org.onosproject.net.DeviceId.deviceId;
-import static org.onosproject.net.PortNumber.portNumber;
-import static org.onosproject.pcep.api.PcepDpid.uri;
-import static org.onosproject.pcep.server.LspType.SR_WITHOUT_SIGNALLING;
-import static org.onosproject.pcep.server.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
-import static org.onosproject.pcep.server.LspType.WITH_SIGNALLING;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.BANDWIDTH;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.COST_TYPE;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.DELEGATE;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.LOCAL_LSP_ID;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.LSP_SIG_TYPE;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.PCC_TUNNEL_ID;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.PCE_INIT;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.PLSP_ID;
-import static org.onosproject.pcep.server.PcepLspSyncAction.REMOVE;
-import static org.onosproject.pcep.server.PcepLspSyncAction.SEND_UPDATE;
-import static org.onosproject.pcepio.protocol.ver1.PcepMetricObjectVer1.IGP_METRIC;
-import static org.onosproject.pcepio.protocol.ver1.PcepMetricObjectVer1.TE_METRIC;
-import static org.onosproject.provider.pcep.tunnel.impl.OsgiPropertyConstants.POLL_FREQUENCY;
-import static org.onosproject.provider.pcep.tunnel.impl.OsgiPropertyConstants.POLL_FREQUENCY_DEFAULT;
-import static org.onosproject.provider.pcep.tunnel.impl.RequestType.CREATE;
-import static org.onosproject.provider.pcep.tunnel.impl.RequestType.DELETE;
-import static org.onosproject.provider.pcep.tunnel.impl.RequestType.LSP_STATE_RPT;
-import static org.onosproject.provider.pcep.tunnel.impl.RequestType.UPDATE;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provider which uses an PCEP controller to detect, update, create network
- * tunnels.
- */
-@Component(immediate = true, service = TunnelProvider.class,
-        property = {
-                POLL_FREQUENCY + ":Integer=" + POLL_FREQUENCY_DEFAULT,
-        })
-public class PcepTunnelProvider extends AbstractProvider implements TunnelProvider {
-
-    private static final Logger log = getLogger(PcepTunnelProvider.class);
-    private static final long MAX_BANDWIDTH = 99999744;
-    private static final long MIN_BANDWIDTH = 64;
-    private static final String BANDWIDTH_UINT = "kbps";
-    static final String PROVIDER_ID = "org.onosproject.provider.tunnel.pcep";
-    public static final long IDENTIFIER_SET = 0x100000000L;
-    public static final long SET = 0xFFFFFFFFL;
-    private static final int DELAY = 2;
-    private static final int WAIT_TIME = 5;
-    public static final String LSRID = "lsrId";
-
-    /** Frequency (in seconds) for polling tunnel statistics. */
-    private int tunnelStatsPollFrequency = POLL_FREQUENCY_DEFAULT;
-
-    private static final String TUNNLE_NOT_NULL = "Create failed,The given port may be wrong or has been occupied.";
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TunnelProviderRegistry tunnelProviderRegistry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PcepController controller;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PcepClientController pcepClientController;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TunnelService tunnelService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected ComponentConfigService cfgService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected TunnelAdminService tunnelAdminService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected MastershipService mastershipService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceService deviceService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LinkService linkService;
-
-    TunnelProviderService service;
-
-    HashMap<String, TunnelId> tunnelMap = new HashMap<>();
-    HashMap<TunnelId, TunnelStatistics> tunnelStatisticsMap = new HashMap<>();
-    private HashMap<String, TunnelStatsCollector> collectors = Maps.newHashMap();
-
-    private InnerTunnelProvider listener = new InnerTunnelProvider();
-
-    protected PcepTunnelApiMapper pcepTunnelApiMapper = new PcepTunnelApiMapper();
-    private static final int DEFAULT_BANDWIDTH_VALUE = 10;
-
-    /**
-     * Creates a Tunnel provider.
-     */
-    public PcepTunnelProvider() {
-        super(new ProviderId("pcep", PROVIDER_ID));
-    }
-
-    @Activate
-    public void activate() {
-        cfgService.registerProperties(getClass());
-        service = tunnelProviderRegistry.register(this);
-        controller.addTunnelListener(listener);
-        pcepClientController.addListener(listener);
-        pcepClientController.addEventListener(listener);
-        tunnelService.queryAllTunnels().forEach(tunnel -> {
-            String pcepTunnelId = getPcepTunnelKey(tunnel.tunnelId());
-            TunnelStatsCollector tsc = new TunnelStatsCollector(pcepTunnelId, tunnelStatsPollFrequency);
-            tsc.start();
-            collectors.put(tunnel.tunnelId().id(), tsc);
-
-        });
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        tunnelProviderRegistry.unregister(this);
-        controller.removeTunnelListener(listener);
-        collectors.values().forEach(TunnelStatsCollector::stop);
-        pcepClientController.removeListener(listener);
-        log.info("Stopped");
-    }
-
-    @Modified
-    public void modified(ComponentContext context) {
-        Dictionary<?, ?> properties = context.getProperties();
-        int newTunnelStatsPollFrequency;
-        try {
-            String s = get(properties, POLL_FREQUENCY);
-            newTunnelStatsPollFrequency = isNullOrEmpty(s) ? tunnelStatsPollFrequency : Integer.parseInt(s.trim());
-
-        } catch (NumberFormatException | ClassCastException e) {
-            newTunnelStatsPollFrequency = tunnelStatsPollFrequency;
-        }
-
-        if (newTunnelStatsPollFrequency != tunnelStatsPollFrequency) {
-            tunnelStatsPollFrequency = newTunnelStatsPollFrequency;
-            collectors.values().forEach(tsc -> tsc.adjustPollInterval(tunnelStatsPollFrequency));
-            log.info("New setting: tunnelStatsPollFrequency={}", tunnelStatsPollFrequency);
-        }
-    }
-
-    @Override
-    public void setupTunnel(Tunnel tunnel, Path path) {
-        if (tunnel.type() != MPLS) {
-            log.error("Tunnel Type MPLS is only supported");
-            return;
-        }
-
-        // check for tunnel end points
-        if (!(tunnel.src() instanceof IpTunnelEndPoint) || !(tunnel.dst() instanceof IpTunnelEndPoint)) {
-            log.error("Tunnel source or destination is not valid");
-            return;
-        }
-
-        // Get the pcc client
-        PcepClient pc = pcepClientController.getClient(PccId.pccId(((IpTunnelEndPoint) tunnel.src()).ip()));
-
-        if (pc == null) {
-            log.error("There is no PCC connected with ip addresss {}"
-                              + ((IpTunnelEndPoint) tunnel.src()).ip().toString());
-            return;
-        }
-
-        //If stateful and PC Initiation capability is not supported by client not sending Initiate msg
-        //Only master will initiate setup tunnel
-        if (pc.capability().pcInstantiationCapability() && mastershipService.isLocalMaster(getDevice(pc.getPccId()))) {
-            pcepSetupTunnel(tunnel, path, pc);
-        }
-    }
-
-    @Override
-    public void setupTunnel(ElementId srcElement, Tunnel tunnel, Path path) {
-
-        //TODO: tunnel which is passed doesn't have tunnelID
-        if (tunnel.annotations().value(PLSP_ID) != null) {
-            if (LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE)) != WITHOUT_SIGNALLING_AND_WITHOUT_SR) {
-                updateTunnel(tunnel, path);
-            } else {
-                // Download labels and send update message.
-                // To get new tunnel ID (modified tunnel ID)
-                Collection<Tunnel> tunnels = tunnelService.queryTunnel(tunnel.src(), tunnel.dst());
-                for (Tunnel t : tunnels) {
-                    if (t.state().equals(INIT) && t.tunnelName().equals(tunnel.tunnelName())) {
-                        tunnel = new DefaultTunnel(tunnel.providerId(), tunnel.src(),
-                                tunnel.dst(), tunnel.type(),
-                                t.state(), tunnel.groupId(),
-                                t.tunnelId(),
-                                tunnel.tunnelName(),
-                                tunnel.path(),
-                                tunnel.resource(),
-                                tunnel.annotations());
-                                break;
-                    }
-                }
-                if (!pcepClientController.allocateLocalLabel(tunnel)) {
-                    log.error("Unable to allocate labels for the tunnel {}.", tunnel.toString());
-                }
-            }
-            return;
-        }
-
-        if (tunnel.type() != MPLS) {
-            log.error("Tunnel Type MPLS is only supported");
-            return;
-        }
-
-        // check for tunnel end points
-        if (!(tunnel.src() instanceof IpTunnelEndPoint) || !(tunnel.dst() instanceof IpTunnelEndPoint)) {
-            log.error("Tunnel source or destination is not valid");
-            return;
-        }
-
-        PcepClient pc = pcepClientController.getClient(PccId.pccId(((IpTunnelEndPoint) tunnel.src()).ip()));
-
-        if (pc == null) {
-            log.error("There is no PCC connected with this device {}"
-                    + srcElement.toString());
-            return;
-        }
-
-        //If stateful and PC Initiation capability is not supported by client not sending Initiate msg
-        //Only master will initiate setup tunnel
-        if (pc.capability().pcInstantiationCapability()
-                && mastershipService.isLocalMaster(getDevice(pc.getPccId()))) {
-            pcepSetupTunnel(tunnel, path, pc);
-        }
-    }
-
-    @Override
-    public void releaseTunnel(Tunnel tunnel) {
-
-        if (tunnel.type() != MPLS) {
-            log.error("Tunnel Type MPLS is only supported");
-            return;
-        }
-
-        // check for tunnel end points
-        if (!(tunnel.src() instanceof IpTunnelEndPoint) || !(tunnel.dst() instanceof IpTunnelEndPoint)) {
-            log.error("Tunnel source or destination is not valid");
-            return;
-        }
-
-        PcepClient pc = pcepClientController.getClient(PccId.pccId(((IpTunnelEndPoint) tunnel.src()).ip()));
-
-        if (pc == null) {
-            log.error("There is no PCC connected with ip addresss {}"
-                    + ((IpTunnelEndPoint) tunnel.src()).ip().toString());
-            return;
-        }
-
-        //Only master will release tunnel
-        if (pc.capability().pcInstantiationCapability()
-                && mastershipService.isLocalMaster(getDevice(pc.getPccId()))) {
-            pcepReleaseTunnel(tunnel, pc);
-        }
-    }
-
-    @Override
-    public void releaseTunnel(ElementId srcElement, Tunnel tunnel) {
-        if (tunnel.type() != MPLS) {
-            log.error("Tunnel Type MPLS is only supported");
-            return;
-        }
-
-        if (!(srcElement instanceof IpElementId)) {
-            log.error("Element id is not valid");
-            return;
-        }
-
-        // check for tunnel end points
-        if (!(tunnel.src() instanceof IpTunnelEndPoint) || !(tunnel.dst() instanceof IpTunnelEndPoint)) {
-            log.error("Tunnel source or destination is not valid");
-            return;
-        }
-
-        PcepClient pc = pcepClientController.getClient(PccId.pccId(((IpElementId) srcElement).ipAddress()));
-
-        if (pc == null) {
-            log.error("There is no PCC connected with ip addresss {}"
-                    + ((IpElementId) srcElement).ipAddress().toString());
-            return;
-        }
-
-        //Only master will release tunnel
-        if (pc.capability().pcInstantiationCapability()
-                && mastershipService.isLocalMaster(getDevice(pc.getPccId()))) {
-            pcepReleaseTunnel(tunnel, pc);
-        }
-    }
-
-    @Override
-    public void updateTunnel(Tunnel tunnel, Path path) {
-        if (tunnel.type() != MPLS) {
-            log.error("Tunnel Type MPLS is only supported");
-            return;
-        }
-
-        // check for tunnel end points
-        if (!(tunnel.src() instanceof IpTunnelEndPoint) || !(tunnel.dst() instanceof IpTunnelEndPoint)) {
-            log.error("Tunnel source or destination is not valid");
-            return;
-        }
-
-        //To get new tunnel ID (modified tunnel ID)
-        Collection<Tunnel> tunnels = tunnelService.queryTunnel(tunnel.src(), tunnel.dst());
-        for (Tunnel t : tunnels) {
-            if (t.state().equals(INIT) && t.tunnelName().equals(tunnel.tunnelName())) {
-                tunnel = new DefaultTunnel(tunnel.providerId(), tunnel.src(),
-                        tunnel.dst(), tunnel.type(),
-                        t.state(), tunnel.groupId(),
-                        t.tunnelId(),
-                        tunnel.tunnelName(),
-                        tunnel.path(),
-                        tunnel.resource(),
-                        tunnel.annotations());
-                        break;
-            }
-        }
-
-        PcepClient pc = pcepClientController.getClient(PccId.pccId(((IpTunnelEndPoint) tunnel.src()).ip()));
-
-        if (pc == null) {
-            log.error("There is no PCC connected with ip addresss {}"
-                    + ((IpTunnelEndPoint) tunnel.src()).ip().toString());
-            return;
-        }
-
-        //PCInitiate tunnels are always have D flag set, else check for tunnels who are delegated via LspKey
-        if (pc.capability().statefulPceCapability()) {
-            if (tunnel.annotations().value(PCE_INIT) != null && tunnel.annotations().value(PCE_INIT).equals("true")) {
-                pcepUpdateTunnel(tunnel, path, pc);
-            } else {
-                // If delegation flag is set then only send update message[means delegated PCE can send update msg for
-                // that LSP. If annotation is null D flag is not set else it is set.
-                Short localLspId = 0;
-                for (Tunnel t : tunnels) {
-                    if (!t.tunnelId().equals(tunnel.tunnelId()) && t.tunnelName().equals(tunnel.tunnelName())) {
-                        localLspId = Short.valueOf(t.annotations().value(LOCAL_LSP_ID));
-                    }
-                }
-
-                if (localLspId == 0) {
-                    log.error("Local LSP ID for old tunnel not found");
-                    return;
-                }
-
-                if (pc.delegationInfo(new LspKey(Integer.valueOf(tunnel.annotations().value(PLSP_ID)),
-                                                 localLspId.shortValue())) != null) {
-
-                    pcepUpdateTunnel(tunnel, path, pc);
-                }
-            }
-        }
-    }
-
-    @Override
-    public void updateTunnel(ElementId srcElement, Tunnel tunnel, Path path) {
-
-        if (tunnel.type() != MPLS) {
-            log.error("Tunnel Type MPLS is only supported");
-            return;
-        }
-
-        if (!(srcElement instanceof IpElementId)) {
-            log.error("Element id is not valid");
-            return;
-        }
-
-        // check for tunnel end points
-        if (!(tunnel.src() instanceof IpTunnelEndPoint) || !(tunnel.dst() instanceof IpTunnelEndPoint)) {
-            log.error("Tunnel source or destination is not valid");
-            return;
-        }
-
-        PcepClient pc = pcepClientController.getClient(PccId.pccId(((IpElementId) srcElement).ipAddress()));
-
-        if (pc == null) {
-            log.error("There is no PCC connected with ip addresss {}"
-                    + ((IpElementId) srcElement).ipAddress().toString());
-            return;
-        }
-
-        // If delegation flag is set then only send update message[means delegated PCE can send update msg for that
-        // LSP].If annotation is null D flag is not set else it is set.
-        if (pc.capability().statefulPceCapability()
-                && pc.delegationInfo(
-                        new LspKey(Integer.valueOf(tunnel.annotations().value(PLSP_ID)), Short.valueOf(tunnel
-                                .annotations().value(LOCAL_LSP_ID)))) != null) {
-            pcepUpdateTunnel(tunnel, path, pc);
-        }
-    }
-
-    @Override
-    public TunnelId tunnelAdded(TunnelDescription tunnel) {
-        return handleTunnelAdded(tunnel, null);
-    }
-
-    public TunnelId tunnelAdded(TunnelDescription tunnel, State tunnelState) {
-        return handleTunnelAdded(tunnel, tunnelState);
-    }
-
-    private TunnelId handleTunnelAdded(TunnelDescription tunnel, State tunnelState) {
-
-        if (tunnel.type() == MPLS) {
-            pcepTunnelApiMapper.removeFromCoreTunnelRequestQueue(tunnel.id());
-
-            if (tunnelState == null) {
-                return service.tunnelAdded(tunnel);
-            } else {
-                return service.tunnelAdded(tunnel, tunnelState);
-            }
-        }
-
-        long bandwidth = Long.parseLong(tunnel.annotations().value(BANDWIDTH));
-
-        if (bandwidth < MIN_BANDWIDTH || bandwidth > MAX_BANDWIDTH) {
-            error("Update failed, invalid bandwidth.");
-            return null;
-        }
-
-        // endpoints
-        OpticalTunnelEndPoint src = (org.onosproject.incubator.net.tunnel.OpticalTunnelEndPoint) tunnel
-                .src();
-        OpticalTunnelEndPoint dst = (OpticalTunnelEndPoint) tunnel.dst();
-        // devices
-        DeviceId srcId = (DeviceId) src.elementId().get();
-        DeviceId dstId = (DeviceId) dst.elementId().get();
-
-        // ports
-        long srcPort = src.portNumber().get().toLong();
-        long dstPort = dst.portNumber().get().toLong();
-
-        // type
-        if (tunnel.type() != Tunnel.Type.VLAN) {
-            error("Illegal tunnel type. Only support VLAN tunnel creation.");
-            return null;
-        }
-
-        PcepTunnel pcepTunnel = controller.applyTunnel(srcId, dstId, srcPort,
-                                                       dstPort, bandwidth,
-                                                       tunnel.tunnelName()
-                                                       .value());
-
-        checkNotNull(pcepTunnel, TUNNLE_NOT_NULL);
-        TunnelDescription tunnelAdded = buildOpticalTunnel(pcepTunnel, null);
-        TunnelId tunnelId = service.tunnelAdded(tunnelAdded);
-
-        tunnelMap.put(String.valueOf(pcepTunnel.id()), tunnelId);
-        return tunnelId;
-    }
-
-    private void tunnelUpdated(Tunnel tunnel, Path path, State tunnelState) {
-        handleTunnelUpdate(tunnel, path, tunnelState);
-    }
-
-    //Handles tunnel updated using tunnel admin service[specially to update annotations].
-    private void handleTunnelUpdate(Tunnel tunnel, Path path, State tunnelState) {
-
-        if (tunnel.type() == MPLS) {
-            pcepTunnelApiMapper.removeFromCoreTunnelRequestQueue(tunnel.tunnelId());
-
-            TunnelDescription td = new DefaultTunnelDescription(tunnel.tunnelId(), tunnel.src(), tunnel.dst(),
-                    tunnel.type(), tunnel.groupId(), tunnel.providerId(),
-                    tunnel.tunnelName(), path, tunnel.resource(),
-                    (SparseAnnotations) tunnel.annotations());
-
-            service.tunnelUpdated(td, tunnelState);
-            return;
-        }
-
-        Tunnel tunnelOld = tunnelQueryById(tunnel.tunnelId());
-        if (tunnelOld.type() != Tunnel.Type.VLAN) {
-            error("Illegal tunnel type. Only support VLAN tunnel update.");
-            return;
-        }
-
-        long bandwidth = Long
-                .parseLong(tunnel.annotations().value("bandwidth"));
-        if (bandwidth < MIN_BANDWIDTH || bandwidth > MAX_BANDWIDTH) {
-            error("Update failed, invalid bandwidth.");
-            return;
-        }
-        String pcepTunnelId = getPcepTunnelKey(tunnel.tunnelId());
-
-        checkNotNull(pcepTunnelId, "Invalid tunnel id");
-        if (!controller.updateTunnelBandwidth(pcepTunnelId, bandwidth)) {
-            error("Update failed,maybe invalid bandwidth.");
-            return;
-        }
-        tunnelAdminService.updateTunnel(tunnel, path);
-    }
-
-    @Override
-    public void tunnelRemoved(TunnelDescription tunnel) {
-        if (tunnel.type() == MPLS) {
-            pcepTunnelApiMapper.removeFromCoreTunnelRequestQueue(tunnel.id());
-            service.tunnelRemoved(tunnel);
-            return;
-        }
-
-        Tunnel tunnelOld = tunnelQueryById(tunnel.id());
-        checkNotNull(tunnelOld, "The tunnel id is not exsited.");
-        if (tunnelOld.type() != Tunnel.Type.VLAN) {
-            error("Illegal tunnel type. Only support VLAN tunnel deletion.");
-            return;
-        }
-        String pcepTunnelId = getPcepTunnelKey(tunnel.id());
-        checkNotNull(pcepTunnelId, "The tunnel id is not exsited.");
-        if (!controller.deleteTunnel(pcepTunnelId)) {
-            error("Delete tunnel failed, Maybe some devices have been disconnected.");
-            return;
-        }
-        tunnelMap.remove(pcepTunnelId);
-        service.tunnelRemoved(tunnel);
-    }
-
-    @Override
-    public void tunnelUpdated(TunnelDescription tunnel) {
-        handleTunnelUpdate(tunnel, null);
-    }
-
-    public void tunnelUpdated(TunnelDescription tunnel, State tunnelState) {
-        handleTunnelUpdate(tunnel, tunnelState);
-    }
-
-    private void handleTunnelUpdate(TunnelDescription tunnel, State tunnelState) {
-        if (tunnel.type() == MPLS) {
-            pcepTunnelApiMapper.removeFromCoreTunnelRequestQueue(tunnel.id());
-
-            if (tunnelState == null) {
-                service.tunnelUpdated(tunnel);
-            } else {
-                service.tunnelUpdated(tunnel, tunnelState);
-            }
-            return;
-        }
-
-        Tunnel tunnelOld = tunnelQueryById(tunnel.id());
-        if (tunnelOld.type() != Tunnel.Type.VLAN) {
-            error("Illegal tunnel type. Only support VLAN tunnel update.");
-            return;
-        }
-        long bandwidth = Long
-                .parseLong(tunnel.annotations().value("bandwidth"));
-        if (bandwidth < MIN_BANDWIDTH || bandwidth > MAX_BANDWIDTH) {
-            error("Update failed, invalid bandwidth.");
-            return;
-        }
-        String pcepTunnelId = getPcepTunnelKey(tunnel.id());
-
-        checkNotNull(pcepTunnelId, "Invalid tunnel id");
-        if (!controller.updateTunnelBandwidth(pcepTunnelId, bandwidth)) {
-
-            error("Update failed,maybe invalid bandwidth.");
-            return;
-
-        }
-        service.tunnelUpdated(tunnel);
-    }
-
-    private void error(String info) {
-        System.err.println(info);
-    }
-
-    // Short-hand for creating a connection point.
-    private ConnectPoint connectPoint(PcepDpid id, long port) {
-        return new ConnectPoint(deviceId(uri(id)), portNumber(port));
-    }
-
-    // Short-hand for creating a link.
-    private Link link(PcepDpid src, long sp, PcepDpid dst, long dp) {
-        return DefaultLink.builder()
-                .providerId(id())
-                .src(connectPoint(src, sp))
-                .dst(connectPoint(dst, dp))
-                .type(Link.Type.TUNNEL)
-                .build();
-    }
-
-    // Creates a path that leads through the given devices.
-    private Path createPath(List<PcepHopNodeDescription> hopList,
-                            PathType pathtype, PathState pathState) {
-        if (hopList == null || hopList.isEmpty()) {
-            return null;
-        }
-        List<Link> links = new ArrayList<>();
-        for (int i = 1; i < hopList.size() - 1; i = i + 2) {
-            links.add(link(hopList.get(i).getDeviceId(), hopList.get(i)
-                    .getPortNum(), hopList.get(i + 1).getDeviceId(), hopList
-                    .get(i + 1).getPortNum()));
-        }
-
-        int hopNum = hopList.size() - 2;
-        DefaultAnnotations extendAnnotations = DefaultAnnotations.builder()
-                .set("pathNum", String.valueOf(hopNum))
-                .set("pathState", String.valueOf(pathState))
-                .set("pathType", String.valueOf(pathtype)).build();
-        return new DefaultPath(id(), links, ScalarWeight.toWeight(hopNum), extendAnnotations);
-    }
-
-    // convert the path description to a string.
-    public String pathToString(List<Link> links) {
-        StringBuilder builder = new StringBuilder();
-        builder.append("{");
-        for (Link link : links) {
-            builder.append("(Device:" + link.src().deviceId() + "  Port:"
-                    + link.src().port().toLong());
-            builder.append(" Device:" + link.dst().deviceId() + "  Port:"
-                    + link.dst().port().toLong());
-            builder.append(")");
-        }
-        builder.append("}");
-        return builder.toString();
-    }
-
-    // build a TunnelDescription.
-    private TunnelDescription buildOpticalTunnel(PcepTunnel pcepTunnel,
-                                                 TunnelId tunnelId) {
-        TunnelEndPoint srcPoint = null;
-        TunnelEndPoint dstPoint = null;
-        Tunnel.Type tunnelType = null;
-        TunnelName name = TunnelName.tunnelName(pcepTunnel.name());
-
-        // add path after codes of tunnel's path merged
-        Path path = createPath(pcepTunnel.getHopList(),
-                               pcepTunnel.getPathType(),
-                               pcepTunnel.getPathState());
-
-        OpticalTunnelEndPoint.Type endPointType = null;
-        switch (pcepTunnel.type()) {
-        case OCH:
-            tunnelType = Tunnel.Type.OCH;
-            endPointType = OpticalTunnelEndPoint.Type.LAMBDA;
-            break;
-
-        case OTN:
-            tunnelType = Tunnel.Type.ODUK;
-            endPointType = OpticalTunnelEndPoint.Type.TIMESLOT;
-            break;
-
-        case UNI:
-            tunnelType = Tunnel.Type.VLAN;
-            endPointType = null;
-            break;
-
-        default:
-            break;
-        }
-        DeviceId srcDid = deviceId(uri(pcepTunnel.srcDeviceID()));
-        DeviceId dstDid = deviceId(uri(pcepTunnel.dstDeviceId()));
-        PortNumber srcPort = PortNumber.portNumber(pcepTunnel.srcPort());
-        PortNumber dstPort = PortNumber.portNumber(pcepTunnel.dstPort());
-
-        srcPoint = new DefaultOpticalTunnelEndPoint(id(), Optional.of(srcDid),
-                                                    Optional.of(srcPort), null,
-                                                    endPointType,
-                                                    OpticalLogicId.logicId(0),
-                                                    true);
-        dstPoint = new DefaultOpticalTunnelEndPoint(id(), Optional.of(dstDid),
-                                                    Optional.of(dstPort), null,
-                                                    endPointType,
-                                                    OpticalLogicId.logicId(0),
-                                                    true);
-
-        // basic annotations
-        DefaultAnnotations annotations = DefaultAnnotations
-                .builder()
-                .set("SLA", String.valueOf(pcepTunnel.getSla()))
-                .set("bandwidth",
-                     String.valueOf(pcepTunnel.bandWidth()) + BANDWIDTH_UINT)
-                .set("index", String.valueOf(pcepTunnel.id())).build();
-
-        // a VLAN tunnel always carry OCH tunnel, this annotation is the index
-        // of a OCH tunnel.
-        if (pcepTunnel.underlayTunnelId() != 0) {
-            DefaultAnnotations extendAnnotations = DefaultAnnotations
-                    .builder()
-                    .set("underLayTunnelIndex",
-                         String.valueOf(pcepTunnel.underlayTunnelId())).build();
-            annotations = DefaultAnnotations.merge(annotations,
-                                                   extendAnnotations);
-
-        }
-        TunnelDescription tunnel = new DefaultTunnelDescription(tunnelId,
-                                                                srcPoint,
-                                                                dstPoint,
-                                                                tunnelType,
-                                                                new GroupId(0),
-                                                                id(), name,
-                                                                path,
-                                                                annotations);
-        return tunnel;
-    }
-
-    /**
-     * Get the tunnelID according to the tunnel key.
-     *
-     * @param tunnelKey tunnel key
-     * @return corresponding tunnel id of the a tunnel key.
-     */
-    private TunnelId getTunnelId(String tunnelKey) {
-        for (String key : tunnelMap.keySet()) {
-            if (key.equals(tunnelKey)) {
-                return tunnelMap.get(key);
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Get the tunnel key according to the tunnelID.
-     *
-     * @param tunnelId tunnel id
-     * @return corresponding a tunnel key of the tunnel id.
-     */
-    private String getPcepTunnelKey(TunnelId tunnelId) {
-        for (String key : tunnelMap.keySet()) {
-            if (Objects.equals(tunnelMap.get(key).id(), tunnelId.id())) {
-                return key;
-            }
-        }
-        return null;
-
-    }
-
-    /**
-     * Build a DefaultTunnelStatistics from a PcepTunnelStatistics.
-     *
-     * @param statistics statistics data from a PCEP tunnel
-     * @return TunnelStatistics
-     */
-    private TunnelStatistics buildTunnelStatistics(PcepTunnelStatistics statistics) {
-        DefaultTunnelStatistics.Builder builder = new DefaultTunnelStatistics.Builder();
-        DefaultTunnelStatistics tunnelStatistics =  builder.setBwUtilization(statistics.bandwidthUtilization())
-                    .setPacketLossRatio(statistics.packetLossRate())
-                    .setFlowDelay(statistics.flowDelay())
-                    .setAlarms(statistics.alarms())
-                .build();
-        return tunnelStatistics;
-   }
-    /**
-     * Creates list of hops for ERO object from Path.
-     *
-     * @param path network path
-     * @return list of ERO subobjects
-     */
-    private LinkedList<PcepValueType> createPcepPath(Path path) {
-        LinkedList<PcepValueType> llSubObjects = new LinkedList<>();
-        List<Link> listLink = path.links();
-        ConnectPoint source = null;
-        ConnectPoint destination = null;
-        IpAddress ipDstAddress = null;
-        IpAddress ipSrcAddress = null;
-        PcepValueType subObj = null;
-        long portNo;
-
-        for (Link link : listLink) {
-            source = link.src();
-            if (!(source.equals(destination))) {
-                //set IPv4SubObject for ERO object
-                portNo = source.port().toLong();
-                portNo = ((portNo & IDENTIFIER_SET) == IDENTIFIER_SET) ? portNo & SET : portNo;
-                ipSrcAddress = Ip4Address.valueOf((int) portNo);
-                subObj = new IPv4SubObject(ipSrcAddress.getIp4Address().toInt());
-                llSubObjects.add(subObj);
-            }
-
-            destination = link.dst();
-            portNo = destination.port().toLong();
-            portNo = ((portNo & IDENTIFIER_SET) == IDENTIFIER_SET) ? portNo & SET : portNo;
-            ipDstAddress = Ip4Address.valueOf((int) portNo);
-            subObj = new IPv4SubObject(ipDstAddress.getIp4Address().toInt());
-            llSubObjects.add(subObj);
-        }
-
-        return llSubObjects;
-    }
-
-    /**
-     * Creates PcInitiated lsp request list for setup tunnel.
-     *
-     * @param tunnel mpls tunnel
-     * @param path network path
-     * @param pc pcep client
-     * @param srpId unique id for pcep message
-     * @return list of PcInitiatedLspRequest
-     * @throws PcepParseException while building pcep objects fails
-     */
-    LinkedList<PcInitiatedLspRequest> createPcInitiatedLspReqList(Tunnel tunnel, Path path,
-                                                                  PcepClient pc, int srpId)
-                                                                          throws PcepParseException {
-        PcepValueType tlv;
-        LinkedList<PcepValueType> llSubObjects = null;
-        LspType lspType = LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE));
-
-        if (lspType == SR_WITHOUT_SIGNALLING) {
-            NetworkResource labelStack = tunnel.resource();
-            if (labelStack == null || !(labelStack instanceof DefaultLabelStack)) {
-                labelStack = pcepClientController.computeLabelStack(tunnel.path());
-                if (labelStack == null) {
-                    log.error("Unable to create label stack.");
-                    return null;
-                }
-            }
-            llSubObjects = pcepClientController.createPcepLabelStack((DefaultLabelStack) labelStack, path);
-        } else {
-            llSubObjects = createPcepPath(path);
-        }
-
-        if (llSubObjects == null || llSubObjects.isEmpty()) {
-            log.error("There is no link information to create tunnel");
-            return null;
-        }
-
-        LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>();
-
-        // set PathSetupTypeTlv of SRP object
-        tlv = new PathSetupTypeTlv(lspType.type());
-        llOptionalTlv.add(tlv);
-
-        // build SRP object
-        PcepSrpObject srpobj = pc.factory().buildSrpObject().setSrpID(srpId).setRFlag(false)
-                .setOptionalTlv(llOptionalTlv).build();
-
-        llOptionalTlv = new LinkedList<>();
-        LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList = new LinkedList<>();
-
-        // set LSP identifiers TLV
-        short localLspId = 0;
-        if (LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE)) != WITH_SIGNALLING) {
-            String localLspIdString = tunnel.annotations().value(LOCAL_LSP_ID);
-            if (localLspIdString != null) {
-                localLspId = Short.valueOf(localLspIdString);
-            }
-        }
-
-        tunnel.annotations().value(LSP_SIG_TYPE);
-        tlv = new StatefulIPv4LspIdentifiersTlv((((IpTunnelEndPoint) tunnel.src()).ip().getIp4Address().toInt()),
-                                                localLspId, (short) 0, 0, (((IpTunnelEndPoint) tunnel.dst()).ip()
-                                                        .getIp4Address().toInt()));
-        llOptionalTlv.add(tlv);
-        //set SymbolicPathNameTlv of LSP object
-        tlv = new SymbolicPathNameTlv(tunnel.tunnelName().value().getBytes());
-        llOptionalTlv.add(tlv);
-
-        //build LSP object
-        PcepLspObject lspobj = pc.factory().buildLspObject().setAFlag(true).setDFlag(true).setOFlag((byte) 0)
-                .setPlspId(0).setOptionalTlv(llOptionalTlv).build();
-
-        //build ENDPOINTS object
-        PcepEndPointsObject endpointsobj = pc.factory().buildEndPointsObject()
-                .setSourceIpAddress(((IpTunnelEndPoint) tunnel.src()).ip().getIp4Address().toInt())
-                .setDestIpAddress(((IpTunnelEndPoint) tunnel.dst()).ip().getIp4Address().toInt())
-                .setPFlag(true).build();
-
-        //build ERO object
-        PcepEroObject eroobj = pc.factory().buildEroObject().setSubObjects(llSubObjects).build();
-
-        float  iBandwidth = DEFAULT_BANDWIDTH_VALUE;
-        if (tunnel.annotations().value(BANDWIDTH) != null) {
-            iBandwidth = Float.valueOf(tunnel.annotations().value(BANDWIDTH));
-        }
-        // build bandwidth object
-        PcepBandwidthObject bandwidthObject = pc.factory().buildBandwidthObject().setBandwidth(iBandwidth).build();
-        // build pcep attribute
-        PcepAttribute pcepAttribute = pc.factory().buildPcepAttribute().setBandwidthObject(bandwidthObject).build();
-
-        PcInitiatedLspRequest initiateLspRequest = pc.factory().buildPcInitiatedLspRequest().setSrpObject(srpobj)
-                .setLspObject(lspobj).setEndPointsObject(endpointsobj).setEroObject(eroobj)
-                .setPcepAttribute(pcepAttribute).build();
-        llPcInitiatedLspRequestList.add(initiateLspRequest);
-        return llPcInitiatedLspRequestList;
-    }
-
-    /**
-     * To send initiate tunnel message to pcc.
-     *
-     * @param tunnel mpls tunnel info
-     * @param path explicit route for the tunnel
-     * @param pc pcep client to send message
-     */
-    private void pcepSetupTunnel(Tunnel tunnel, Path path, PcepClient pc) {
-        try {
-            if (!(pc.lspDbSyncStatus().equals(PcepSyncStatus.SYNCED))) {
-                log.error("Setup tunnel has failed as LSP DB sync is not finished");
-                return;
-            }
-
-            int srpId = SrpIdGenerators.create();
-            Collection<Tunnel> tunnels = tunnelService.queryTunnel(tunnel.src(), tunnel.dst());
-            for (Tunnel t : tunnels) {
-                if (t.tunnelName().equals(tunnel.tunnelName())) {
-                    tunnel = new DefaultTunnel(tunnel.providerId(), tunnel.src(),
-                            tunnel.dst(), tunnel.type(),
-                            t.state(), tunnel.groupId(),
-                            t.tunnelId(),
-                            tunnel.tunnelName(),
-                            tunnel.path(),
-                            tunnel.resource(),
-                            tunnel.annotations());
-                            break;
-                }
-            }
-
-            if (tunnel.tunnelId() == null) {
-                log.error("Tunnel ID not found");
-                return;
-            }
-
-            PcepTunnelData pcepTunnelData = new PcepTunnelData(tunnel, path, CREATE);
-
-            pcepTunnelApiMapper.addToCoreTunnelRequestQueue(pcepTunnelData);
-
-            LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList = createPcInitiatedLspReqList(tunnel, path,
-                                                                                                        pc, srpId);
-            if (llPcInitiatedLspRequestList == null || llPcInitiatedLspRequestList.isEmpty()) {
-                log.error("Failed to create PcInitiatedLspRequestList");
-                return;
-            }
-
-            //build PCInitiate message
-            PcepInitiateMsg pcInitiateMsg = pc.factory().buildPcepInitiateMsg()
-                    .setPcInitiatedLspRequestList(llPcInitiatedLspRequestList)
-                    .build();
-
-            pc.sendMessage(Collections.singletonList(pcInitiateMsg));
-
-            pcepTunnelApiMapper.addToTunnelRequestQueue(srpId, pcepTunnelData);
-        } catch (PcepParseException e) {
-            log.error("PcepParseException occurred while processing setup tunnel {}", e.getMessage());
-        }
-    }
-
-    /**
-     * To send Release tunnel message to pcc.
-     *
-     * @param tunnel mpls tunnel info
-     * @param pc pcep client to send message
-     */
-    private void pcepReleaseTunnel(Tunnel tunnel, PcepClient pc) {
-        try {
-            if (!(pc.lspDbSyncStatus().equals(PcepSyncStatus.SYNCED))) {
-                log.error("Release tunnel has failed as LSP DB sync is not finished");
-                return;
-            }
-
-            PcepTunnelData pcepTunnelData = new PcepTunnelData(tunnel, DELETE);
-            pcepTunnelApiMapper.addToCoreTunnelRequestQueue(pcepTunnelData);
-            int srpId = SrpIdGenerators.create();
-
-            PcepValueType tlv;
-            LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>();
-
-            // set PathSetupTypeTlv of SRP object
-            tlv = new PathSetupTypeTlv(LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE))
-                    .type());
-            llOptionalTlv.add(tlv);
-
-            // build SRP object
-            PcepSrpObject srpobj = pc.factory().buildSrpObject().setSrpID(srpId).setRFlag(true)
-                    .setOptionalTlv(llOptionalTlv).build();
-
-            llOptionalTlv = new LinkedList<>();
-            LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList = new LinkedList<>();
-
-            tlv = new SymbolicPathNameTlv(tunnel.tunnelName().value().getBytes());
-            llOptionalTlv.add(tlv);
-
-            String localLspIdString = tunnel.annotations().value(LOCAL_LSP_ID);
-            String pccTunnelIdString = tunnel.annotations().value(PCC_TUNNEL_ID);
-            String pLspIdString = tunnel.annotations().value(PLSP_ID);
-
-            short localLspId = 0;
-            short pccTunnelId = 0;
-            int plspId = 0;
-
-            if (localLspIdString != null) {
-                localLspId = Short.valueOf(localLspIdString);
-            }
-
-            if (pccTunnelIdString != null) {
-                pccTunnelId = Short.valueOf(pccTunnelIdString);
-            }
-
-            if (pLspIdString != null) {
-                plspId = Integer.valueOf(pLspIdString);
-            }
-
-            tlv = new StatefulIPv4LspIdentifiersTlv((((IpTunnelEndPoint) tunnel.src())
-                    .ip().getIp4Address().toInt()),
-                    localLspId, pccTunnelId, 0, (((IpTunnelEndPoint) tunnel.dst()).ip()
-                    .getIp4Address().toInt()));
-            llOptionalTlv.add(tlv);
-
-            // build lsp object, set r flag as false to delete the tunnel
-            PcepLspObject lspobj = pc.factory().buildLspObject().setRFlag(false).setPlspId(plspId)
-                    .setOptionalTlv(llOptionalTlv).build();
-
-            PcInitiatedLspRequest releaseLspRequest = pc.factory().buildPcInitiatedLspRequest().setSrpObject(srpobj)
-                    .setLspObject(lspobj).build();
-
-            llPcInitiatedLspRequestList.add(releaseLspRequest);
-
-            PcepInitiateMsg pcInitiateMsg = pc.factory().buildPcepInitiateMsg()
-                    .setPcInitiatedLspRequestList(llPcInitiatedLspRequestList).build();
-
-            pc.sendMessage(Collections.singletonList(pcInitiateMsg));
-
-            pcepTunnelApiMapper.addToTunnelRequestQueue(srpId, pcepTunnelData);
-        } catch (PcepParseException e) {
-            log.error("PcepParseException occurred while processing release tunnel {}", e.getMessage());
-        }
-    }
-
-    /**
-     * To send Update tunnel request message to pcc.
-     *
-     * @param tunnel mpls tunnel info
-     * @param path explicit route for the tunnel
-     * @param pc pcep client to send message
-     */
-    private void pcepUpdateTunnel(Tunnel tunnel, Path path, PcepClient pc) {
-        try {
-            PcepTunnelData pcepTunnelData = new PcepTunnelData(tunnel, path, UPDATE);
-            pcepTunnelApiMapper.addToCoreTunnelRequestQueue(pcepTunnelData);
-            int srpId = SrpIdGenerators.create();
-            PcepValueType tlv;
-
-            LinkedList<PcepValueType> llSubObjects = null;
-            LspType lspSigType = LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE));
-
-            if (lspSigType == SR_WITHOUT_SIGNALLING) {
-                NetworkResource labelStack = tunnel.resource();
-                if (labelStack == null || !(labelStack instanceof DefaultLabelStack)) {
-                    labelStack = pcepClientController.computeLabelStack(tunnel.path());
-                    if (labelStack == null) {
-                        log.error("Unable to create label stack.");
-                        return;
-                    }
-                }
-                llSubObjects = pcepClientController.createPcepLabelStack((DefaultLabelStack) labelStack, path);
-            } else {
-                llSubObjects = createPcepPath(path);
-            }
-
-            LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>();
-            LinkedList<PcepUpdateRequest> llUpdateRequestList = new LinkedList<>();
-
-            // set PathSetupTypeTlv of SRP object
-            tlv = new PathSetupTypeTlv(lspSigType.type());
-            llOptionalTlv.add(tlv);
-
-            // build SRP object
-            PcepSrpObject srpobj = pc.factory().buildSrpObject().setSrpID(srpId).setRFlag(false)
-                    .setOptionalTlv(llOptionalTlv).build();
-
-            llOptionalTlv = new LinkedList<>();
-
-            // Lsp Identifier tlv is required for all modes of lsp
-            String localLspIdString = tunnel.annotations().value(LOCAL_LSP_ID);
-            String pccTunnelIdString = tunnel.annotations().value(PCC_TUNNEL_ID);
-            short localLspId = 0;
-            short pccTunnelId = 0;
-
-            if (localLspIdString != null) {
-                localLspId = Short.valueOf(localLspIdString);
-            }
-
-            if (pccTunnelIdString != null) {
-                pccTunnelId = Short.valueOf(pccTunnelIdString);
-            }
-
-            tlv = new StatefulIPv4LspIdentifiersTlv((((IpTunnelEndPoint) tunnel.src())
-                    .ip().getIp4Address().toInt()),
-                    localLspId, pccTunnelId,
-                    ((IpTunnelEndPoint) tunnel.src()).ip().getIp4Address().toInt(),
-                    (((IpTunnelEndPoint) tunnel.dst()).ip().getIp4Address().toInt()));
-            llOptionalTlv.add(tlv);
-
-            if (tunnel.tunnelName().value() != null) {
-                tlv = new SymbolicPathNameTlv(tunnel.tunnelName().value().getBytes());
-                llOptionalTlv.add(tlv);
-            }
-            boolean delegated = (tunnel.annotations().value(DELEGATE) == null) ? false
-                                                                               : Boolean.valueOf(tunnel.annotations()
-                                                                                       .value(DELEGATE));
-            boolean initiated = (tunnel.annotations().value(PCE_INIT) == null) ? false
-                                                                               : Boolean.valueOf(tunnel.annotations()
-                                                                                       .value(PCE_INIT));
-            // build lsp object
-            PcepLspObject lspobj = pc.factory().buildLspObject().setAFlag(true)
-                    .setPlspId(Integer.valueOf(tunnel.annotations().value(PLSP_ID)))
-                    .setDFlag(delegated)
-                    .setCFlag(initiated)
-                    .setOptionalTlv(llOptionalTlv).build();
-            // build ero object
-            PcepEroObject eroobj = pc.factory().buildEroObject().setSubObjects(llSubObjects).build();
-            float iBandwidth = DEFAULT_BANDWIDTH_VALUE;
-            if (tunnel.annotations().value(BANDWIDTH) != null) {
-                iBandwidth = Float.parseFloat(tunnel.annotations().value(BANDWIDTH));
-            }
-            // build bandwidth object
-            PcepBandwidthObject bandwidthObject = pc.factory().buildBandwidthObject().setBandwidth(iBandwidth).build();
-            // build pcep attribute
-            PcepAttribute pcepAttribute = pc.factory().buildPcepAttribute().setBandwidthObject(bandwidthObject).build();
-            // build pcep msg path
-            PcepMsgPath msgPath = pc.factory().buildPcepMsgPath().setEroObject(eroobj).setPcepAttribute(pcepAttribute)
-                    .build();
-
-            PcepUpdateRequest updateRequest = pc.factory().buildPcepUpdateRequest().setSrpObject(srpobj)
-                    .setLspObject(lspobj).setMsgPath(msgPath).build();
-
-            llUpdateRequestList.add(updateRequest);
-
-            PcepUpdateMsg pcUpdateMsg = pc.factory().buildUpdateMsg().setUpdateRequestList(llUpdateRequestList).build();
-
-            pc.sendMessage(Collections.singletonList(pcUpdateMsg));
-            pcepTunnelApiMapper.addToTunnelRequestQueue(srpId, pcepTunnelData);
-        } catch (PcepParseException e) {
-            log.error("PcepParseException occurred while processing release tunnel {}", e.getMessage());
-        }
-    }
-
-    private class InnerTunnelProvider implements PcepTunnelListener, PcepEventListener, PcepClientListener {
-
-        @Override
-        public void handlePcepTunnel(PcepTunnel pcepTunnel) {
-            TunnelDescription tunnel = null;
-            // instance and id identify a tunnel together
-            String tunnelKey = String.valueOf(pcepTunnel.getInstance())
-                    + String.valueOf(pcepTunnel.id());
-
-            if (tunnelKey == null || "".equals(tunnelKey)) {
-                log.error("Invalid PCEP tunnel");
-                return;
-            }
-
-            TunnelId tunnelId = getTunnelId(tunnelKey);
-            tunnel = buildOpticalTunnel(pcepTunnel, tunnelId);
-
-            OperationType operType = pcepTunnel.getOperationType();
-            switch (operType) {
-            case ADD:
-                tunnelId = service.tunnelAdded(tunnel);
-                tunnelMap.put(tunnelKey, tunnelId);
-                break;
-
-            case UPDATE:
-                service.tunnelUpdated(tunnel);
-                break;
-
-            case DELETE:
-                service.tunnelRemoved(tunnel);
-                tunnelMap.remove(tunnelKey);
-                break;
-
-            default:
-                log.error("Invalid tunnel operation");
-            }
-        }
-
-        @Override
-        public void handleMessage(PccId pccId, PcepMessage msg) {
-            try {
-                log.debug("tunnel provider handle message {}", msg.getType().toString());
-                switch (msg.getType()) {
-                case REPORT:
-                    int srpId = 0;
-                    LinkedList<PcepStateReport> llStateReportList = null;
-                    llStateReportList = ((PcepReportMsg) msg).getStateReportList();
-                    ListIterator<PcepStateReport> listIterator = llStateReportList.listIterator();
-                    PcepSrpObject srpObj = null;
-                    PcepLspObject lspObj = null;
-                    while (listIterator.hasNext()) {
-                        PcepStateReport stateRpt = listIterator.next();
-                        srpObj = stateRpt.getSrpObject();
-                        lspObj = stateRpt.getLspObject();
-
-                        if (srpObj != null) {
-                            srpId = srpObj.getSrpID();
-                        }
-
-                        log.debug("Plsp ID in handle message " + lspObj.getPlspId());
-                        log.debug("SRP ID in handle message " + srpId);
-
-                        if (!(pcepTunnelApiMapper.checkFromTunnelRequestQueue(srpId))) {
-                            // For PCRpt without matching SRP id.
-                            handleRptWithoutSrpId(stateRpt, pccId);
-                            continue;
-                        }
-
-                        handleReportMessage(srpId, lspObj, stateRpt);
-                    }
-                    break;
-
-                default:
-                    log.debug("Received unsupported message type {}", msg.getType().toString());
-                }
-            } catch (Exception e) {
-                log.error("Exception occurred while processing report message {}", e.getMessage());
-            }
-        }
-
-        /**
-         * Handles report message for setup/update/delete tunnel request.
-         *
-         * @param srpId unique identifier for PCEP message
-         * @param lspObj LSP object
-         * @param stateRpt parsed PCEP report msg.
-         */
-        private void handleReportMessage(int srpId, PcepLspObject lspObj, PcepStateReport stateRpt) {
-            ProviderId providerId = new ProviderId("pcep", PROVIDER_ID);
-            PcepTunnelData pcepTunnelData = pcepTunnelApiMapper.getDataFromTunnelRequestQueue(srpId);
-
-            // store the values required from report message
-            pcepTunnelData.setPlspId(lspObj.getPlspId());
-            pcepTunnelData.setLspAFlag(lspObj.getAFlag());
-            pcepTunnelData.setLspOFlag(lspObj.getOFlag());
-            pcepTunnelData.setLspDFlag(lspObj.getDFlag());
-
-            StatefulIPv4LspIdentifiersTlv ipv4LspTlv = null;
-            ListIterator<PcepValueType> listTlvIterator = lspObj.getOptionalTlv().listIterator();
-            while (listTlvIterator.hasNext()) {
-                PcepValueType tlv = listTlvIterator.next();
-                if (tlv.getType() == StatefulIPv4LspIdentifiersTlv.TYPE) {
-                    ipv4LspTlv = (StatefulIPv4LspIdentifiersTlv) tlv;
-                    break;
-                }
-            }
-            if (ipv4LspTlv != null) {
-                pcepTunnelData.setStatefulIpv4IndentifierTlv(ipv4LspTlv);
-            }
-
-            Path path = pcepTunnelData.path();
-            Tunnel tunnel = pcepTunnelData.tunnel();
-            Builder annotationBuilder = DefaultAnnotations.builder();
-            annotationBuilder.putAll(pcepTunnelData.tunnel().annotations());
-
-            // PCRpt in response to PCInitate msg will carry PLSP id allocated by PCC.
-            if (tunnel.annotations().value(PLSP_ID) == null) {
-                annotationBuilder.set(PLSP_ID, String.valueOf(lspObj.getPlspId()));
-            }
-
-            // Signalled LSPs will carry local LSP id allocated by signalling protocol(PCC).
-            if (tunnel.annotations().value(LOCAL_LSP_ID) == null) {
-                annotationBuilder.set(LOCAL_LSP_ID, String.valueOf(ipv4LspTlv.getLspId()));
-            }
-
-            if (tunnel.annotations().value(PCC_TUNNEL_ID) == null) {
-                annotationBuilder.set(PCC_TUNNEL_ID, String.valueOf(ipv4LspTlv.getTunnelId()));
-            }
-
-            SparseAnnotations annotations = annotationBuilder.build();
-            DefaultTunnelDescription td = new DefaultTunnelDescription(tunnel.tunnelId(), tunnel.src(),
-                                                                       tunnel.dst(), tunnel.type(), tunnel.groupId(),
-                                                                       providerId, tunnel.tunnelName(), path,
-                                                                       tunnel.resource(), annotations);
-
-            if (CREATE == pcepTunnelData.requestType()) {
-                pcepTunnelApiMapper.addToTunnelIdMap(pcepTunnelData);
-                pcepTunnelApiMapper.handleCreateTunnelRequestQueue(srpId, pcepTunnelData);
-            } else if (DELETE == pcepTunnelData.requestType()) {
-                pcepTunnelApiMapper.handleRemoveFromTunnelRequestQueue(srpId, pcepTunnelData);
-            } else if (UPDATE == pcepTunnelData.requestType()) {
-                pcepTunnelData.setRptFlag(true);
-                pcepTunnelApiMapper.addToTunnelIdMap(pcepTunnelData);
-                pcepTunnelApiMapper.handleUpdateTunnelRequestQueue(srpId, pcepTunnelData);
-            }
-
-            PcepLspStatus pcepLspStatus = PcepLspStatus.values()[lspObj.getOFlag()];
-
-            if (lspObj.getRFlag()) {
-                tunnelRemoved(td);
-            } else {
-                State tunnelState = PcepLspStatus.getTunnelStatusFromLspStatus(pcepLspStatus);
-                tunnelUpdated(td, tunnelState);
-            }
-
-            // SR-TE also needs PCUpd msg after receiving PCRpt with status GOING-UP even
-            // though there are no labels to download for SR-TE.
-            if (((pcepLspStatus == PcepLspStatus.GOING_UP)
-                    && (LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE)) == SR_WITHOUT_SIGNALLING))
-                // For PCInit tunnel up, few PCC expects PCUpd message after PCInit message,
-                || ((tunnel.state() == State.INIT)
-                    && (pcepLspStatus == PcepLspStatus.DOWN)
-                    && (tunnel.annotations().value(PCE_INIT) != null
-                        && tunnel.annotations().value(PCE_INIT).equals("true"))
-                    && (LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE)) == WITH_SIGNALLING))) {
-
-                // Query again to get latest tunnel updated with protocol values from PCRpt msg.
-                updateTunnel(service.tunnelQueryById(tunnel.tunnelId()), tunnel.path());
-            }
-        }
-
-        private SparseAnnotations getAnnotations(PcepLspObject lspObj, StatefulIPv4LspIdentifiersTlv ipv4LspIdenTlv,
-                String bandwidth, LspType lspType, String costType, boolean isPceInit) {
-            Builder builder = DefaultAnnotations.builder();
-            /*
-             * [RFC 5440] The absence of the METRIC object MUST be interpreted by the PCE as a path computation request
-             * for which no constraints need be applied to any of the metrics.
-             */
-            if (costType != null) {
-                builder.set(COST_TYPE, costType);
-            }
-
-            if (isPceInit) {
-                builder.set(PCE_INIT, String.valueOf(isPceInit));
-            }
-
-            if (bandwidth != null) {
-                builder.set(BANDWIDTH, bandwidth);
-            }
-
-            SparseAnnotations annotations = builder
-                    .set(LSP_SIG_TYPE, lspType.name())
-                    .set(PCC_TUNNEL_ID, String.valueOf(ipv4LspIdenTlv.getTunnelId()))
-                    .set(PLSP_ID, String.valueOf(lspObj.getPlspId()))
-                    .set(LOCAL_LSP_ID, String.valueOf(ipv4LspIdenTlv.getLspId()))
-                    .set(DELEGATE, String.valueOf(lspObj.getDFlag()))
-                    .build();
-            return annotations;
-        }
-
-        private LspType getLspType(PcepSrpObject srpObj) {
-            LspType lspType = WITH_SIGNALLING;
-
-            if (null != srpObj) {
-                LinkedList<PcepValueType> llOptionalTlv = srpObj.getOptionalTlv();
-                ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator();
-
-                while (listIterator.hasNext()) {
-                    PcepValueType tlv = listIterator.next();
-                    switch (tlv.getType()) {
-                    case PathSetupTypeTlv.TYPE:
-                        lspType = LspType.values()[Integer.valueOf(((PathSetupTypeTlv) tlv).getPst())];
-                        break;
-                    default:
-                        break;
-                    }
-                }
-            }
-            return lspType;
-        }
-
-        private void handleRptWithoutSrpId(PcepStateReport stateRpt, PccId pccId) {
-            ProviderId providerId = new ProviderId("pcep", PROVIDER_ID);
-            String costType = null;
-            PcepStateReport.PcepMsgPath msgPath = stateRpt.getMsgPath();
-            checkNotNull(msgPath);
-            PcepEroObject eroObj = msgPath.getEroObject();
-            if (eroObj == null) {
-                log.error("ERO object is null in report message.");
-                return;
-            }
-            PcepAttribute attributes = msgPath.getPcepAttribute();
-            float bandwidth = 0;
-            int cost = 0;
-            if (attributes != null) {
-                if (attributes.getMetricObjectList() != null) {
-                    ListIterator<PcepMetricObject> iterator = attributes.getMetricObjectList().listIterator();
-                    PcepMetricObject metricObj = iterator.next();
-
-                    while (metricObj != null) {
-                        if (metricObj.getBType() == IGP_METRIC) {
-                            costType = "COST";
-                        } else if (metricObj.getBType() == TE_METRIC) {
-                            costType = "TE_COST";
-                        }
-                        if (costType != null) {
-                            cost = metricObj.getMetricVal();
-                            log.debug("Path cost {}", cost);
-                            break;
-                        }
-                        metricObj = iterator.next();
-                    }
-                }
-                if (attributes.getBandwidthObject() != null) {
-                    bandwidth = attributes.getBandwidthObject().getBandwidth();
-                }
-            }
-            PcepLspObject lspObj = stateRpt.getLspObject();
-            List<Object> eroSubObjList = buildPathFromEroObj(eroObj, providerId);
-            List<Link> links = new ArrayList<>();
-            List<LabelResourceId> labels = new ArrayList<>();
-            for (Object linkOrLabel : eroSubObjList) {
-                if (linkOrLabel instanceof Link) {
-                    links.add((Link) linkOrLabel);
-                } else if (linkOrLabel instanceof Integer) {
-                    labels.add(LabelResourceId.labelResourceId(((Integer) linkOrLabel).longValue()));
-                }
-            }
-            Path path = null;
-            if (!links.isEmpty()) {
-                path = new DefaultPath(providerId, links, ScalarWeight.toWeight(cost), EMPTY);
-            } else if (!lspObj.getRFlag()) {
-                return;
-            }
-            NetworkResource labelStack = new DefaultLabelStack(labels);
-            // To carry PST TLV, SRP object can be present with value 0 even when PCRpt is not in response to any action
-            // from PCE.
-            PcepSrpObject srpObj = stateRpt.getSrpObject();
-            LspType lspType = getLspType(srpObj);
-            ListIterator<PcepValueType> listTlvIterator = lspObj.getOptionalTlv().listIterator();
-            StatefulIPv4LspIdentifiersTlv ipv4LspIdenTlv = null;
-            SymbolicPathNameTlv pathNameTlv = null;
-            while (listTlvIterator.hasNext()) {
-                PcepValueType tlv = listTlvIterator.next();
-                switch (tlv.getType()) {
-                case StatefulIPv4LspIdentifiersTlv.TYPE:
-                    ipv4LspIdenTlv = (StatefulIPv4LspIdentifiersTlv) tlv;
-                    break;
-                case SymbolicPathNameTlv.TYPE:
-                    pathNameTlv = (SymbolicPathNameTlv) tlv;
-                    break;
-                default:
-                    break;
-                }
-            }
-            /*
-             * Draft says: The LSP-IDENTIFIERS TLV MUST be included in the LSP object in PCRpt messages for
-             * RSVP-signaled LSPs. For ONOS PCECC implementation, it is mandatory.
-             */
-            if (ipv4LspIdenTlv == null) {
-                log.error("Stateful IPv4 identifier TLV is null in PCRpt msg.");
-                return;
-            }
-            IpTunnelEndPoint tunnelEndPointSrc = IpTunnelEndPoint
-                    .ipTunnelPoint(IpAddress.valueOf(ipv4LspIdenTlv.getIpv4IngressAddress()));
-            IpTunnelEndPoint tunnelEndPointDst = IpTunnelEndPoint
-                    .ipTunnelPoint(IpAddress.valueOf(ipv4LspIdenTlv.getIpv4EgressAddress()));
-            Collection<Tunnel> tunnelQueryResult = tunnelService.queryTunnel(tunnelEndPointSrc, tunnelEndPointDst);
-            // Store delegation flag info and that LSP info because only delegated PCE sends update message
-            // Storing if D flag is set, if not dont store. while checking whether delegation if annotation for D flag
-            // not present then non-delegated , if present it is delegated.
-            if (lspObj.getDFlag()) {
-                pcepClientController.getClient(pccId).setLspAndDelegationInfo(
-                        new LspKey(lspObj.getPlspId(), ipv4LspIdenTlv.getLspId()), lspObj.getDFlag());
-            }
-            Tunnel tunnel = null;
-            SparseAnnotations oldTunnelAnnotations = null;
-            // Asynchronous status change message from PCC for LSP reported earlier.
-            for (Tunnel tunnelObj : tunnelQueryResult) {
-                if (tunnelObj.annotations().value(PLSP_ID) == null) {
-                    /*
-                     * PLSP_ID is null while Tunnel is created at PCE and PCInit msg carries it as 0. It is allocated by
-                     * PCC and in that case it becomes the first PCRpt msg from PCC for this LSP, and hence symbolic
-                     * path name must be carried in the PCRpt msg. Draft says: The SYMBOLIC-PATH-NAME TLV "MUST" be
-                     * included in the LSP object in the LSP State Report (PCRpt) message when during a given PCEP
-                     * session an LSP is "first" reported to a PCE.
-                     */
-                    if ((pathNameTlv != null)
-                            && Arrays.equals(tunnelObj.tunnelName().value().getBytes(), pathNameTlv.getValue())) {
-                        tunnel = tunnelObj;
-                        break;
-                    }
-                    continue;
-                }
-                if ((Integer.valueOf(tunnelObj.annotations().value(PLSP_ID)) == lspObj.getPlspId())) {
-                    if ((Integer
-                            .valueOf(tunnelObj.annotations().value(LOCAL_LSP_ID)) == ipv4LspIdenTlv.getLspId())) {
-                        tunnel = tunnelObj;
-                    }
-                    if ((Integer
-                            .valueOf(tunnelObj.annotations().value(LOCAL_LSP_ID)) != ipv4LspIdenTlv.getLspId())) {
-                        oldTunnelAnnotations = (SparseAnnotations) tunnelObj.annotations();
-                    }
-                }
-            }
-            DefaultTunnelDescription td;
-            SparseAnnotations annotations = null;
-            State tunnelState = PcepLspStatus.getTunnelStatusFromLspStatus(PcepLspStatus.values()[lspObj.getOFlag()]);
-            if (tunnel == null && pathNameTlv != null) {
-                if (lspObj.getRFlag()) {
-                    /*
-                     * If PCC sends remove message and for any reason PCE does not have that entry, simply discard the
-                     * message. Or if PCRpt for initiated LSP received and PCE doesn't know, then too discard.
-                     */
-                    return;
-                }
-                DeviceId deviceId = getDevice(pccId);
-                if (deviceId == null) {
-                    log.error("Ingress deviceId not found");
-                    return;
-                }
-                String tempBandwidth = null;
-                String temoCostType = null;
-                if (oldTunnelAnnotations != null) {
-                    tempBandwidth = oldTunnelAnnotations.value(BANDWIDTH);
-                    temoCostType = oldTunnelAnnotations.value(COST_TYPE);
-                }
-                annotations = getAnnotations(lspObj, ipv4LspIdenTlv, tempBandwidth, lspType,
-                    temoCostType, lspObj.getCFlag());
-                td = new DefaultTunnelDescription(null, tunnelEndPointSrc, tunnelEndPointDst, MPLS, new GroupId(
-                        0), providerId, TunnelName.tunnelName(new String(pathNameTlv.getValue())), path, labelStack,
-                        annotations);
-                // Do not support PCC initiated LSP after LSP DB sync is completed.
-                if (!lspObj.getSFlag() && !lspObj.getCFlag()) {
-                    log.error("Received PCC initiated LSP while not in sync.");
-                    return;
-                }
-                /*
-                 * If ONOS instance is master for PCC then set delegated flag as annotation and add the tunnel to store.
-                 * Because all LSPs need not be delegated, hence mastership for the PCC is confirmed whereas not the
-                 * delegation set to all LSPs.If ONOS is not the master for that PCC then check if D flag is set, if yes
-                 * wait for 2 seconds [while master has added the tunnel to the store] then update the tunnel. Tunnel is
-                 * updated because in case of resilency only delegated LSPs are recomputed and only delegated PCE can
-                 * send update message to that client.
-                 *
-                 * 1)Master can 1st get the Rpt message
-                 * a)Master adds the tunnel into core.
-                 * b)If a non-master for ingress gets Rpt message with D flag set[as delegation owner]
-                 *  after master, then runs timer then update the tunnel with D flag set.
-                 * 2)Non-Master can 1st get the Rpt message
-                 * a)Non-Master runs the timer check for the tunnel then updates the tunnel with D flag set
-                 * b)Master would have got the message while the non-master running timer, hence master adds
-                 *  tunnel to core
-                 *
-                 * In general always master adds the tunnel to the core
-                 * while delegated owner [master or non-master with D flag set] always updates the tunnel running timer
-                 */
-                if (mastershipService.isLocalMaster(deviceId)) {
-                    TunnelId tId = tunnelAdded(td, tunnelState);
-                    Tunnel tunnelInserted = new DefaultTunnel(providerId, tunnelEndPointSrc, tunnelEndPointDst, MPLS,
-                            tunnelState, new GroupId(0), tId, TunnelName.tunnelName(Arrays.toString(pathNameTlv
-                                    .getValue())), path, labelStack, annotations);
-
-                    PcepTunnelData pcepTunnelData = new PcepTunnelData(tunnelInserted, path, LSP_STATE_RPT);
-                    pcepTunnelData.setStatefulIpv4IndentifierTlv(ipv4LspIdenTlv);
-                    pcepTunnelApiMapper.addToTunnelIdMap(pcepTunnelData);
-                } else if (!mastershipService.isLocalMaster(deviceId) && lspObj.getDFlag()) {
-                    //Start timer then update the tunnel with D flag
-                    tunnelUpdateInDelegatedCase(pccId, annotations, td, providerId, tunnelState, ipv4LspIdenTlv);
-                }
-                return;
-            }
-            //delegated owner will update can be a master or non-master
-            if (lspObj.getDFlag() && !lspObj.getRFlag()) {
-                tunnelUpdateForDelegatedLsp(tunnel, lspObj,
-                        lspType, tunnelState, pccId, labelStack, ipv4LspIdenTlv);
-                return;
-            }
-            removeOrUpdatetunnel(tunnel, lspObj, providerId, tunnelState, ipv4LspIdenTlv);
-        }
-
-        private void tunnelUpdateForDelegatedLsp(Tunnel tunnel, PcepLspObject lspObj,
-                                                 LspType lspType, State tunnelState, PccId pccId,
-                                                 NetworkResource labelStack,
-                                                 StatefulIPv4LspIdentifiersTlv ipv4LspIdenTlv) {
-            SparseAnnotations annotations = null;
-            DefaultTunnelDescription td;
-            boolean isPceInit = tunnel.annotations().value(PCE_INIT) == null ? false :
-                    Boolean.valueOf((tunnel.annotations().value(PCE_INIT))).booleanValue();
-            annotations = getAnnotations(lspObj, ipv4LspIdenTlv,
-                    tunnel.annotations().value(BANDWIDTH), lspType,
-                    tunnel.annotations().value(COST_TYPE), isPceInit);
-            td = new DefaultTunnelDescription(null, tunnel.src(), tunnel.dst(), MPLS, new GroupId(
-                    0), tunnel.providerId(), tunnel.tunnelName(),
-                    tunnel.path(), labelStack, annotations);
-            tunnelUpdateInDelegatedCase(pccId, annotations, td, tunnel.providerId(), tunnelState, ipv4LspIdenTlv);
-        }
-
-        private void removeOrUpdatetunnel(Tunnel tunnel, PcepLspObject lspObj, ProviderId providerId,
-                State tunnelState, StatefulIPv4LspIdentifiersTlv ipv4LspIdenTlv) {
-            DefaultTunnelDescription td = new DefaultTunnelDescription(tunnel.tunnelId(), tunnel.src(), tunnel.dst(),
-                    tunnel.type(), tunnel.groupId(), providerId, tunnel.tunnelName(), tunnel.path(),
-                    (SparseAnnotations) tunnel.annotations());
-            if (lspObj.getRFlag()) {
-                tunnelRemoved(td);
-            } else {
-                PcepTunnelData pcepTunnelData = new PcepTunnelData(tunnel, tunnel.path(), LSP_STATE_RPT);
-                pcepTunnelData.setStatefulIpv4IndentifierTlv(ipv4LspIdenTlv);
-                pcepTunnelApiMapper.addToTunnelIdMap(pcepTunnelData);
-                tunnelUpdated(td, tunnelState);
-            }
-        }
-
-        private void tunnelUpdateInDelegatedCase(PccId pccId, SparseAnnotations annotations,
-                DefaultTunnelDescription td, ProviderId providerId, State tunnelState,
-                                                 StatefulIPv4LspIdentifiersTlv ipv4LspIdentifiersTlv) {
-            // Wait for 2sec then query tunnel based on ingress PLSP-ID and local LSP-ID
-
-            /*
-             * If ONOS is not the master for that PCC then check if D flag is set, if yes wait [while
-             * master has added the tunnel to the store] then update the tunnel.
-             */
-            ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
-
-            // Thread is started after 2 seconds first time later periodically after 2 seconds to update the tunnel
-            executor.scheduleAtFixedRate(new UpdateDelegation(td, providerId, annotations, pccId,
-                    executor, tunnelState, ipv4LspIdentifiersTlv), DELAY, DELAY, TimeUnit.SECONDS);
-        }
-
-        /**
-         * To build Path in network from ERO object.
-         *
-         * @param eroObj ERO object
-         * @param providerId provider id
-         * @return list of links and labels
-         */
-        private List<Object> buildPathFromEroObj(PcepEroObject eroObj, ProviderId providerId) {
-            checkNotNull(eroObj);
-            List<Object> subObjList = new ArrayList<>();
-            LinkedList<PcepValueType> llSubObj = eroObj.getSubObjects();
-            if (llSubObj.isEmpty()) {
-                log.error("ERO in report message does not have hop information");
-                return new ArrayList<>();
-            }
-            ListIterator<PcepValueType> tlvIterator = llSubObj.listIterator();
-
-            ConnectPoint src = null;
-            ConnectPoint dst = null;
-            boolean isSrcSet = false;
-            while (tlvIterator.hasNext()) {
-                PcepValueType subObj = tlvIterator.next();
-                switch (subObj.getType()) {
-
-                case IPv4SubObject.TYPE:
-
-                    IPv4SubObject ipv4SubObj = (IPv4SubObject) subObj;
-                    if (!isSrcSet) {
-                            Iterable<Link> links = linkService.getActiveLinks();
-                            for (Link l : links) {
-                                if (l.src().port().equals(PortNumber.portNumber(ipv4SubObj.getIpAddress()))) {
-                                    src = l.src();
-                                    isSrcSet = true;
-                                    break;
-                                } else if (l.dst().port().equals(PortNumber.portNumber(ipv4SubObj.getIpAddress()))) {
-                                    src = l.dst();
-                                    isSrcSet = true;
-                                    break;
-                                }
-                            }
-                        } else {
-                            Iterable<Link> links = linkService.getActiveLinks();
-                            for (Link l : links) {
-                                if (l.src().port().equals(PortNumber.portNumber(ipv4SubObj.getIpAddress()))) {
-                                    dst = l.src();
-                                    break;
-                                } else if (l.dst().port().equals(PortNumber.portNumber(ipv4SubObj.getIpAddress()))) {
-                                    dst = l.dst();
-                                    break;
-                                }
-                            }
-                        Link link = DefaultLink.builder()
-                                .providerId(providerId)
-                                .src(src)
-                                .dst(dst)
-                                .type(Link.Type.DIRECT)
-                                .build();
-                        subObjList.add(link);
-                        src = dst;
-                    }
-                    break;
-                case SrEroSubObject.TYPE:
-                    SrEroSubObject srEroSubObj = (SrEroSubObject) subObj;
-                    subObjList.add(srEroSubObj.getSid());
-
-                    if (srEroSubObj.getSt() == PcepNaiIpv4Adjacency.ST_TYPE) {
-                        PcepNaiIpv4Adjacency nai = (PcepNaiIpv4Adjacency) (srEroSubObj.getNai());
-                        int srcIp = nai.getLocalIpv4Addr();
-                        int dstIp = nai.getRemoteIpv4Addr();
-                        Iterable<Link> links = linkService.getActiveLinks();
-                        for (Link l : links) {
-                            long lSrc = l.src().port().toLong();
-                            long lDst = l.dst().port().toLong();
-                            if (lSrc == srcIp) {
-                                src = l.src();
-                            } else if (lDst == srcIp) {
-                                src = l.dst();
-                            }
-                            if (lSrc == dstIp) {
-                                dst = l.src();
-                            } else if (lDst == dstIp) {
-                                dst = l.dst();
-                            }
-                            if (src != null && dst != null) {
-                                break;
-                            }
-                        }
-                        if (src == null || dst == null) {
-                            return new ArrayList<>();
-                        }
-                        Link link = DefaultLink.builder()
-                                .providerId(providerId)
-                                .src(src)
-                                .dst(dst)
-                                .type(Link.Type.DIRECT)
-                                .build();
-                        subObjList.add(link);
-                    }
-                default:
-                    // the other sub objects are not required
-                }
-            }
-            return subObjList;
-        }
-
-        @Override
-        public void clientConnected(PccId pccId) {
-            // TODO
-        }
-
-        @Override
-        public void clientDisconnected(PccId pccId) {
-            // TODO
-        }
-
-        @Override
-        public void handlePcepTunnelStatistics(PcepTunnelStatistics pcepTunnelStatistics) {
-            TunnelId id = getTunnelId(String.valueOf(pcepTunnelStatistics.id()));
-            TunnelStatistics tunnelStatistics = buildTunnelStatistics(pcepTunnelStatistics);
-            tunnelStatisticsMap.put(id, tunnelStatistics);
-        }
-
-        @Override
-        public void handleEndOfSyncAction(Tunnel tunnel, PcepLspSyncAction endOfSyncAction) {
-
-            if (endOfSyncAction == SEND_UPDATE) {
-                updateTunnel(tunnel, tunnel.path());
-                return;
-            }
-
-            TunnelDescription td = new DefaultTunnelDescription(tunnel.tunnelId(),
-                                                                tunnel.src(), tunnel.dst(),
-                                                                tunnel.type(),
-                                                                tunnel.groupId(),
-                                                                tunnel.providerId(),
-                                                                tunnel.tunnelName(),
-                                                                tunnel.path(),
-                                                                (SparseAnnotations) tunnel.annotations());
-
-
-            if (endOfSyncAction == PcepLspSyncAction.UNSTABLE) {
-                // Send PCInit msg again after global reoptimization.
-                tunnelUpdated(td, UNSTABLE);
-
-                // To remove the old tunnel from store whose PLSPID is not recognized by ingress PCC.
-                tunnelRemoved(td);
-            } else if (endOfSyncAction == REMOVE) {
-                tunnelRemoved(td);
-            }
-        }
-    }
-    @Override
-    public Tunnel tunnelQueryById(TunnelId tunnelId) {
-        return service.tunnelQueryById(tunnelId);
-    }
-
-    private DeviceId getDevice(PccId pccId) {
-        // Get lsrId of the PCEP client from the PCC ID. Session info is based on lsrID.
-        IpAddress lsrId = pccId.ipAddress();
-        String lsrIdentifier = String.valueOf(lsrId);
-
-        // Find PCC deviceID from lsrId stored as annotations
-        Iterable<Device> devices = deviceService.getAvailableDevices();
-        for (Device dev : devices) {
-            if (dev.annotations().value(AnnotationKeys.TYPE).equals("L3")
-                    && dev.annotations().value(LSRID).equals(lsrIdentifier)) {
-                return dev.id();
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Updates the tunnel with updated tunnel annotation after a delay of two seconds and checks it till
-     * tunnel is found.
-     */
-    private class UpdateDelegation implements Runnable {
-        DefaultTunnelDescription td;
-        ProviderId providerId;
-        SparseAnnotations annotations;
-        PccId pccId;
-        ScheduledExecutorService executor;
-        State tunnelState;
-        StatefulIPv4LspIdentifiersTlv ipv4LspIdentifiersTlv;
-
-        /**
-         * Creates an instance of UpdateDelegation.
-         *
-         * @param td tunnel description
-         * @param providerId provider id
-         * @param annotations tunnel annotations
-         * @param pccId PCEP client id
-         * @param executor service of delegated owner
-         */
-        public UpdateDelegation(DefaultTunnelDescription td, ProviderId providerId, SparseAnnotations annotations,
-                PccId pccId, ScheduledExecutorService executor, State tunnelState,
-                                StatefulIPv4LspIdentifiersTlv ipv4LspIdentifiersTlv) {
-            this.td = td;
-            this.providerId = providerId;
-            this.annotations = annotations;
-            this.pccId = pccId;
-            this.executor = executor;
-            this.tunnelState = tunnelState;
-            this.ipv4LspIdentifiersTlv = ipv4LspIdentifiersTlv;
-        }
-
-        //Temporary using annotations later will use projection/network config service
-        @Override
-        public void run() {
-            Collection<Tunnel> tunnelQueryResult = tunnelService.queryTunnel(td.src(), td.dst());
-            TunnelId tempTunnelId = null;
-            for (Tunnel t : tunnelQueryResult) {
-                if (t.annotations().value(LOCAL_LSP_ID) == null ||  t.annotations().value(PLSP_ID) == null) {
-                    continue;
-                }
-
-                if (t.annotations().value(LOCAL_LSP_ID).equals(td.annotations().value(LOCAL_LSP_ID))
-                        && t.annotations().value(PLSP_ID).equals(td.annotations().value(PLSP_ID))
-                        && ((IpTunnelEndPoint) t.src()).ip().equals(pccId.id())) {
-                    tempTunnelId = t.tunnelId();
-                    break;
-                }
-            }
-
-            //If tunnel is found update the tunnel and shutdown the thread otherwise thread will be executing
-            //periodically
-            if (tempTunnelId != null) {
-                Tunnel tunnel = new DefaultTunnel(providerId, td.src(), td.dst(), MPLS, new GroupId(0),
-                        tempTunnelId, td.tunnelName(), td.path(), annotations);
-                PcepTunnelData pcepTunnelData = new PcepTunnelData(tunnel, tunnel.path(), LSP_STATE_RPT);
-                pcepTunnelData.setStatefulIpv4IndentifierTlv(ipv4LspIdentifiersTlv);
-                pcepTunnelData.setLspDFlag(Boolean.valueOf(tunnel.annotations().value(DELEGATE)));
-                pcepTunnelApiMapper.addToTunnelIdMap(pcepTunnelData);
-                tunnelUpdated(tunnel, td.path(), tunnelState);
-                executor.shutdown();
-                try {
-                    executor.awaitTermination(WAIT_TIME, TimeUnit.SECONDS);
-                } catch (InterruptedException e) {
-                    log.error("updating delegation failed");
-                    Thread.currentThread().interrupt();
-                }
-            }
-        }
-    }
-}
diff --git a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/RequestType.java b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/RequestType.java
deleted file mode 100644
index 64a4177..0000000
--- a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/RequestType.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.provider.pcep.tunnel.impl;
-
-/**
- * Enum of request types between pcc and pcep.
- */
-public enum RequestType {
-    /**
-     * Specifies the request type for PCC is to create new tunnel.
-     */
-    CREATE,
-
-    /**
-     * Specifies the request type for PCC is to update existing tunnel.
-     */
-    UPDATE,
-
-    /**
-     * Specifies the request type for PCC is to delete existing tunnel.
-     */
-    DELETE,
-
-    /**
-     * Specifies the request type for PCC to report existing tunnel.
-     */
-    LSP_STATE_RPT
-}
diff --git a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/TunnelStatsCollector.java b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/TunnelStatsCollector.java
deleted file mode 100644
index bae93fc..0000000
--- a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/TunnelStatsCollector.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.provider.pcep.tunnel.impl;
-
-
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onlab.util.Timer;
-import org.onosproject.pcep.api.PcepController;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import io.netty.util.Timeout;
-import io.netty.util.TimerTask;
-
-import java.util.concurrent.TimeUnit;
-
-/*
- * Sends Stats Request and collect the tunnel statistics with a time interval.
- */
-public class TunnelStatsCollector implements TimerTask {
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected PcepController controller;
-
-    private int refreshInterval;
-
-    private String pcepTunnelId;
-    private Timeout timeout;
-    private volatile boolean stopped;
-
-
-    /**
-     * Create a tunnel status collector object.
-     *
-     * @param id              tunnel whose status data will be collected
-     * @param refreshInterval time interval for collecting statistic
-     */
-    public TunnelStatsCollector(String id, int refreshInterval) {
-        this.pcepTunnelId = id;
-        this.refreshInterval = refreshInterval;
-    }
-
-    @Override
-    public void run(Timeout timeout) throws Exception {
-        if (stopped || timeout.isCancelled()) {
-            return;
-        }
-        log.trace("Collecting stats for {}", pcepTunnelId);
-
-        sendTunnelStatistic();
-        if (!stopped && !timeout.isCancelled()) {
-            log.trace("Scheduling stats collection in {} seconds for {}",
-                      this.refreshInterval, pcepTunnelId);
-            timeout.timer().newTimeout(this, refreshInterval, TimeUnit.SECONDS);
-        }
-
-    }
-
-    private void sendTunnelStatistic() {
-        controller.getTunnelStatistics(pcepTunnelId);
-
-    }
-
-    synchronized void adjustPollInterval(int pollInterval) {
-        this.refreshInterval = pollInterval;
-    }
-
-    /**
-     * Starts the collector.
-     */
-    public synchronized void start() {
-        log.info("Starting Tunnel Stats collection thread for {}", pcepTunnelId);
-        stopped = false;
-        timeout = Timer.newTimeout(this, 1, TimeUnit.SECONDS);
-    }
-
-    /**
-     * Stops the collector.
-     */
-    public synchronized void stop() {
-        log.info("Stopping Tunnel Stats collection thread for {}", pcepTunnelId);
-        stopped = true;
-        timeout.cancel();
-    }
-}
diff --git a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/package-info.java b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/package-info.java
deleted file mode 100644
index c8a0b7e..0000000
--- a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-/**
- *Provider that uses PCEP controller as a means of infrastructure tunnel discovery.
- */
-package org.onosproject.provider.pcep.tunnel.impl;
\ No newline at end of file
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepReleaseTunnelProviderTest.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepReleaseTunnelProviderTest.java
deleted file mode 100644
index 12579ae..0000000
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepReleaseTunnelProviderTest.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.provider.pcep.tunnel.impl;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.graph.ScalarWeight;
-import org.onlab.packet.IpAddress;
-import org.onosproject.cfg.ComponentConfigAdapter;
-import org.onosproject.core.GroupId;
-import org.onosproject.incubator.net.tunnel.DefaultTunnel;
-import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelName;
-import org.onosproject.incubator.net.tunnel.TunnelServiceAdapter;
-import org.onosproject.mastership.MastershipServiceAdapter;
-import org.onosproject.net.Annotations;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.DefaultPath;
-import org.onosproject.net.IpElementId;
-import org.onosproject.net.Link;
-import org.onosproject.net.Path;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.device.DeviceServiceAdapter;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.pcep.api.PcepControllerAdapter;
-import org.onosproject.pcep.server.ClientCapability;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepClientControllerAdapter;
-import org.onosproject.pcepio.types.StatefulIPv4LspIdentifiersTlv;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.nullValue;
-import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsNot.not;
-import static org.onosproject.net.DefaultAnnotations.EMPTY;
-import static org.onosproject.pcep.server.LspType.SR_WITHOUT_SIGNALLING;
-import static org.onosproject.pcep.server.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
-import static org.onosproject.pcep.server.LspType.WITH_SIGNALLING;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.LSP_SIG_TYPE;
-
-/**
- * Test for PCEP release tunnel.
- */
-public class PcepReleaseTunnelProviderTest {
-
-    private static final String PROVIDER_ID = "org.onosproject.provider.tunnel.pcep";
-    private PcepTunnelProvider tunnelProvider = new PcepTunnelProvider();
-    private final TunnelProviderRegistryAdapter registry = new TunnelProviderRegistryAdapter();
-    private final PcepClientControllerAdapter controller = new PcepClientControllerAdapter();
-    private final PcepControllerAdapter ctl = new PcepControllerAdapter();
-    private final PcepTunnelApiMapper pcepTunnelAPIMapper = new PcepTunnelApiMapper();
-    private final TunnelServiceAdapter tunnelService = new TunnelServiceAdapter();
-    private final DeviceServiceAdapter  deviceService = new DeviceServiceAdapter();
-    private final MastershipServiceAdapter  mastershipService = new MastershipServiceAdapter();
-
-    @Before
-    public void setUp() throws IOException {
-        tunnelProvider.tunnelProviderRegistry = registry;
-        tunnelProvider.pcepClientController = controller;
-        tunnelProvider.controller = ctl;
-        tunnelProvider.deviceService = deviceService;
-        tunnelProvider.mastershipService = mastershipService;
-        tunnelProvider.tunnelService = tunnelService;
-        tunnelProvider.pcepTunnelApiMapper = pcepTunnelAPIMapper;
-        tunnelProvider.cfgService = new ComponentConfigAdapter();
-        tunnelProvider.activate();
-    }
-
-    /**
-     * Release tunnel with negotiated capability.
-     */
-    @Test
-    public void testCasePcepReleaseTunnel() {
-        Tunnel tunnel;
-        Path path;
-        List<Link> links = new ArrayList<>();
-
-        ProviderId pid = new ProviderId("pcep", PROVIDER_ID);
-
-        IpAddress srcIp = IpAddress.valueOf(0xB6024E20);
-        IpElementId srcElementId = IpElementId.ipElement(srcIp);
-
-        IpAddress dstIp = IpAddress.valueOf(0xB6024E21);
-        IpElementId dstElementId = IpElementId.ipElement(dstIp);
-
-        IpTunnelEndPoint ipTunnelEndPointSrc;
-        ipTunnelEndPointSrc = IpTunnelEndPoint.ipTunnelPoint(srcIp);
-
-        IpTunnelEndPoint ipTunnelEndPointDst;
-        ipTunnelEndPointDst = IpTunnelEndPoint.ipTunnelPoint(dstIp);
-
-        ConnectPoint src = new ConnectPoint(srcElementId, PortNumber.portNumber(10023));
-
-        ConnectPoint dst = new ConnectPoint(dstElementId, PortNumber.portNumber(10023));
-
-        Link link = DefaultLink.builder().providerId(pid).src(src).dst(dst)
-                .type(Link.Type.DIRECT).build();
-        links.add(link);
-
-        path = new DefaultPath(pid, links, ScalarWeight.toWeight(20), EMPTY);
-
-        Annotations annotations = DefaultAnnotations.builder()
-                .set(LSP_SIG_TYPE, WITH_SIGNALLING.name())
-                .build();
-
-        tunnel = new DefaultTunnel(pid, ipTunnelEndPointSrc, ipTunnelEndPointDst, Tunnel.Type.MPLS,
-                                   new GroupId(0), TunnelId.valueOf("1"), TunnelName.tunnelName("T123"),
-                                   path, annotations);
-
-        // for releasing tunnel tunnel should exist in db
-        PcepTunnelData pcepTunnelData = new PcepTunnelData(tunnel, path, RequestType.DELETE);
-        pcepTunnelData.setPlspId(1);
-        StatefulIPv4LspIdentifiersTlv tlv = new StatefulIPv4LspIdentifiersTlv(0, (short) 1, (short) 2, 3, 4);
-        pcepTunnelData.setStatefulIpv4IndentifierTlv(tlv);
-        tunnelProvider.pcepTunnelApiMapper.addToTunnelIdMap(pcepTunnelData);
-
-        tunnelProvider.pcepTunnelApiMapper.handleCreateTunnelRequestQueue(1, pcepTunnelData);
-        controller.getClient(PccId.pccId(IpAddress.valueOf(0xB6024E20))).setCapability(
-                new ClientCapability(true, true, true, true, true));
-
-        tunnelProvider.releaseTunnel(tunnel);
-        assertThat(tunnelProvider.pcepTunnelApiMapper, not(nullValue()));
-    }
-
-    /**
-     * Doesn't send initiate message because PCC doesn't supports PCInitiate and stateful capability.
-     */
-    @Test
-    public void testCasePcepReleaseTunnel2() {
-        Tunnel tunnel;
-        Path path;
-        List<Link> links = new ArrayList<>();
-
-        ProviderId pid = new ProviderId("pcep", PROVIDER_ID);
-
-        IpAddress srcIp = IpAddress.valueOf(0xB6024E22);
-        IpElementId srcElementId = IpElementId.ipElement(srcIp);
-
-        IpAddress dstIp = IpAddress.valueOf(0xB6024E21);
-        IpElementId dstElementId = IpElementId.ipElement(dstIp);
-
-        IpTunnelEndPoint ipTunnelEndPointSrc;
-        ipTunnelEndPointSrc = IpTunnelEndPoint.ipTunnelPoint(srcIp);
-
-        IpTunnelEndPoint ipTunnelEndPointDst;
-        ipTunnelEndPointDst = IpTunnelEndPoint.ipTunnelPoint(dstIp);
-
-        ConnectPoint src = new ConnectPoint(srcElementId, PortNumber.portNumber(10023));
-
-        ConnectPoint dst = new ConnectPoint(dstElementId, PortNumber.portNumber(10023));
-
-        Link link = DefaultLink.builder().providerId(pid).src(src).dst(dst)
-                .type(Link.Type.DIRECT).build();
-        links.add(link);
-
-        path = new DefaultPath(pid, links, ScalarWeight.toWeight(20), EMPTY);
-
-        Annotations annotations = DefaultAnnotations.builder()
-                .set(LSP_SIG_TYPE, WITH_SIGNALLING.name())
-                .build();
-
-        tunnel = new DefaultTunnel(pid, ipTunnelEndPointSrc, ipTunnelEndPointDst, Tunnel.Type.MPLS,
-                                   new GroupId(0), TunnelId.valueOf("1"), TunnelName.tunnelName("T123"),
-                                   path, annotations);
-
-        // for releasing tunnel tunnel should exist in db
-        PcepTunnelData pcepTunnelData = new PcepTunnelData(tunnel, path, RequestType.DELETE);
-        pcepTunnelData.setPlspId(1);
-        StatefulIPv4LspIdentifiersTlv tlv = new StatefulIPv4LspIdentifiersTlv(0, (short) 1, (short) 2, 3, 4);
-        pcepTunnelData.setStatefulIpv4IndentifierTlv(tlv);
-        tunnelProvider.pcepTunnelApiMapper.addToTunnelIdMap(pcepTunnelData);
-
-        tunnelProvider.pcepTunnelApiMapper.handleCreateTunnelRequestQueue(1, pcepTunnelData);
-        controller.getClient(PccId.pccId(IpAddress.valueOf(0xB6024E22))).setCapability(
-                new ClientCapability(true, false, false, true, true));
-
-        tunnelProvider.releaseTunnel(tunnel);
-        assertThat(tunnelProvider.pcepTunnelApiMapper.checkFromTunnelRequestQueue(1), is(false));
-    }
-
-    /**
-     * Tests releasing SR based tunnel.
-     */
-    @Test
-    public void testCasePcepReleaseSrTunnel() {
-        Tunnel tunnel;
-        Path path;
-        List<Link> links = new ArrayList<>();
-
-        ProviderId pid = new ProviderId("pcep", PROVIDER_ID);
-
-        IpAddress srcIp = IpAddress.valueOf(0xB6024E20);
-        IpElementId srcElementId = IpElementId.ipElement(srcIp);
-
-        IpAddress dstIp = IpAddress.valueOf(0xB6024E21);
-        IpElementId dstElementId = IpElementId.ipElement(dstIp);
-
-        IpTunnelEndPoint ipTunnelEndPointSrc;
-        ipTunnelEndPointSrc = IpTunnelEndPoint.ipTunnelPoint(srcIp);
-
-        IpTunnelEndPoint ipTunnelEndPointDst;
-        ipTunnelEndPointDst = IpTunnelEndPoint.ipTunnelPoint(dstIp);
-
-        ConnectPoint src = new ConnectPoint(srcElementId, PortNumber.portNumber(10023));
-
-        ConnectPoint dst = new ConnectPoint(dstElementId, PortNumber.portNumber(10023));
-
-        Link link = DefaultLink.builder().providerId(pid).src(src).dst(dst)
-                .type(Link.Type.DIRECT).build();
-        links.add(link);
-
-        path = new DefaultPath(pid, links, ScalarWeight.toWeight(20), EMPTY);
-
-        Annotations annotations = DefaultAnnotations.builder()
-                .set(LSP_SIG_TYPE, SR_WITHOUT_SIGNALLING.name())
-                .build();
-
-        tunnel = new DefaultTunnel(pid, ipTunnelEndPointSrc, ipTunnelEndPointDst, Tunnel.Type.MPLS,
-                                   new GroupId(0), TunnelId.valueOf("1"), TunnelName.tunnelName("T123"),
-                                   path, annotations);
-
-        // for releasing tunnel tunnel should exist in db
-        PcepTunnelData pcepTunnelData = new PcepTunnelData(tunnel, path, RequestType.DELETE);
-        pcepTunnelData.setPlspId(1);
-        StatefulIPv4LspIdentifiersTlv tlv = new StatefulIPv4LspIdentifiersTlv(0, (short) 1, (short) 2, 3, 4);
-        pcepTunnelData.setStatefulIpv4IndentifierTlv(tlv);
-        tunnelProvider.pcepTunnelApiMapper.addToTunnelIdMap(pcepTunnelData);
-
-        tunnelProvider.pcepTunnelApiMapper.handleCreateTunnelRequestQueue(1, pcepTunnelData);
-        controller.getClient(PccId.pccId(IpAddress.valueOf(0xB6024E20))).setCapability(
-                new ClientCapability(true, true, true, true, true));
-
-        tunnelProvider.releaseTunnel(tunnel);
-        assertThat(tunnelProvider.pcepTunnelApiMapper, not(nullValue()));
-    }
-
-    /**
-     * Tests releasing tunnel without SR and without signalling.
-     */
-    @Test
-    public void testCasePcepReleaseTunnelWithoutSigSr() {
-        Tunnel tunnel;
-        Path path;
-        List<Link> links = new ArrayList<>();
-
-        ProviderId pid = new ProviderId("pcep", PROVIDER_ID);
-
-        IpAddress srcIp = IpAddress.valueOf(0xB6024E20);
-        IpElementId srcElementId = IpElementId.ipElement(srcIp);
-
-        IpAddress dstIp = IpAddress.valueOf(0xB6024E21);
-        IpElementId dstElementId = IpElementId.ipElement(dstIp);
-
-        IpTunnelEndPoint ipTunnelEndPointSrc;
-        ipTunnelEndPointSrc = IpTunnelEndPoint.ipTunnelPoint(srcIp);
-
-        IpTunnelEndPoint ipTunnelEndPointDst;
-        ipTunnelEndPointDst = IpTunnelEndPoint.ipTunnelPoint(dstIp);
-
-        ConnectPoint src = new ConnectPoint(srcElementId, PortNumber.portNumber(10023));
-
-        ConnectPoint dst = new ConnectPoint(dstElementId, PortNumber.portNumber(10023));
-
-        Link link = DefaultLink.builder().providerId(pid).src(src).dst(dst)
-                .type(Link.Type.DIRECT).build();
-        links.add(link);
-
-        path = new DefaultPath(pid, links, ScalarWeight.toWeight(20), EMPTY);
-
-        Annotations annotations = DefaultAnnotations.builder()
-                .set(LSP_SIG_TYPE, WITHOUT_SIGNALLING_AND_WITHOUT_SR.name())
-                .build();
-
-        tunnel = new DefaultTunnel(pid, ipTunnelEndPointSrc, ipTunnelEndPointDst, Tunnel.Type.MPLS,
-                                   new GroupId(0), TunnelId.valueOf("1"), TunnelName.tunnelName("T123"),
-                                   path, annotations);
-
-        // for releasing tunnel tunnel should exist in db
-        PcepTunnelData pcepTunnelData = new PcepTunnelData(tunnel, path, RequestType.DELETE);
-        pcepTunnelData.setPlspId(1);
-        StatefulIPv4LspIdentifiersTlv tlv = new StatefulIPv4LspIdentifiersTlv(0, (short) 1, (short) 2, 3, 4);
-        pcepTunnelData.setStatefulIpv4IndentifierTlv(tlv);
-        tunnelProvider.pcepTunnelApiMapper.addToTunnelIdMap(pcepTunnelData);
-
-        tunnelProvider.pcepTunnelApiMapper.handleCreateTunnelRequestQueue(1, pcepTunnelData);
-        controller.getClient(PccId.pccId(IpAddress.valueOf(0xB6024E20))).setCapability(
-                new ClientCapability(true, true, true, true, true));
-
-        tunnelProvider.releaseTunnel(tunnel);
-        assertThat(tunnelProvider.pcepTunnelApiMapper, not(nullValue()));
-    }
-
-    @After
-    public void tearDown() throws IOException {
-        tunnelProvider.deactivate();
-        tunnelProvider.controller = null;
-        tunnelProvider.pcepClientController = null;
-        tunnelProvider.tunnelProviderRegistry = null;
-        tunnelProvider.deviceService = null;
-        tunnelProvider.mastershipService = null;
-    }
-}
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepSetupTunnelProviderTest.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepSetupTunnelProviderTest.java
deleted file mode 100644
index e176771..0000000
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepSetupTunnelProviderTest.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.provider.pcep.tunnel.impl;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.graph.ScalarWeight;
-import org.onlab.graph.Weight;
-import org.onlab.packet.IpAddress;
-import org.onosproject.cfg.ComponentConfigAdapter;
-import org.onosproject.core.GroupId;
-import org.onosproject.incubator.net.tunnel.DefaultTunnel;
-import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelName;
-import org.onosproject.incubator.net.tunnel.TunnelServiceAdapter;
-import org.onosproject.mastership.MastershipServiceAdapter;
-import org.onosproject.net.Annotations;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.DefaultPath;
-import org.onosproject.net.IpElementId;
-import org.onosproject.net.Link;
-import org.onosproject.net.Path;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.device.DeviceServiceAdapter;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.pcep.api.PcepControllerAdapter;
-import org.onosproject.pcep.server.ClientCapability;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepClientControllerAdapter;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.nullValue;
-import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsNot.not;
-import static org.onosproject.net.DefaultAnnotations.EMPTY;
-import static org.onosproject.pcep.server.LspType.SR_WITHOUT_SIGNALLING;
-import static org.onosproject.pcep.server.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
-import static org.onosproject.pcep.server.LspType.WITH_SIGNALLING;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.LSP_SIG_TYPE;
-
-/**
- * Test for PCEP setup tunnel.
- */
-public class PcepSetupTunnelProviderTest {
-
-    private static final String PROVIDER_ID = "org.onosproject.provider.tunnel.pcep";
-    private PcepTunnelProvider tunnelProvider = new PcepTunnelProvider();
-    private final TunnelProviderRegistryAdapter registry = new TunnelProviderRegistryAdapter();
-    private final PcepClientControllerAdapter controller = new PcepClientControllerAdapter();
-    private final PcepControllerAdapter ctl = new PcepControllerAdapter();
-    private final TunnelServiceAdapter tunnelService = new TunnelServiceAdapter();
-    private final DeviceServiceAdapter  deviceService = new DeviceServiceAdapter();
-    private final MastershipServiceAdapter  mastershipService = new MastershipServiceAdapter();
-    private static final Weight TEN_WEIGHT = ScalarWeight.toWeight(10);
-
-
-    @Before
-    public void setUp() throws IOException {
-        tunnelProvider.tunnelProviderRegistry = registry;
-        tunnelProvider.pcepClientController = controller;
-        tunnelProvider.controller = ctl;
-        tunnelProvider.deviceService = deviceService;
-        tunnelProvider.mastershipService = mastershipService;
-        tunnelProvider.cfgService = new ComponentConfigAdapter();
-        tunnelProvider.tunnelService = tunnelService;
-        tunnelProvider.activate();
-    }
-
-    /**
-     * Send PcInitiate message to PCC.
-     */
-    @Test
-    public void testCasePcepSetupTunnel() {
-        Tunnel tunnel;
-        Path path;
-        ProviderId pid = new ProviderId("pcep", PROVIDER_ID);
-        List<Link> links = new ArrayList<>();
-        IpAddress srcIp = IpAddress.valueOf(0xC010101);
-        IpElementId srcElementId = IpElementId.ipElement(srcIp);
-
-        IpAddress dstIp = IpAddress.valueOf(0xC010102);
-        IpElementId dstElementId = IpElementId.ipElement(dstIp);
-
-        IpTunnelEndPoint ipTunnelEndPointSrc;
-        ipTunnelEndPointSrc = IpTunnelEndPoint.ipTunnelPoint(srcIp);
-
-        IpTunnelEndPoint ipTunnelEndPointDst;
-        ipTunnelEndPointDst = IpTunnelEndPoint.ipTunnelPoint(dstIp);
-
-        ConnectPoint src = new ConnectPoint(srcElementId, PortNumber.portNumber(10023));
-
-        ConnectPoint dst = new ConnectPoint(dstElementId, PortNumber.portNumber(10023));
-
-        Link link = DefaultLink.builder().providerId(pid).src(src).dst(dst)
-                .type(Link.Type.DIRECT).build();
-        links.add(link);
-
-        path = new DefaultPath(pid, links, TEN_WEIGHT, EMPTY);
-
-        Annotations annotations = DefaultAnnotations.builder()
-                .set(LSP_SIG_TYPE, WITH_SIGNALLING.name())
-                .build();
-
-        tunnel = new DefaultTunnel(pid, ipTunnelEndPointSrc, ipTunnelEndPointDst, Tunnel.Type.MPLS,
-                                   new GroupId(0), TunnelId.valueOf("1"), TunnelName.tunnelName("T123"),
-                                   path, annotations);
-        controller.getClient(PccId.pccId(IpAddress.valueOf(0xC010101))).setCapability(
-                new ClientCapability(true, true, true, true, true));
-
-        tunnelProvider.setupTunnel(tunnel, path);
-        assertThat(tunnelProvider.pcepTunnelApiMapper, not(nullValue()));
-    }
-
-    /**
-     * Doesn't send PCInitiate message because PCC doesn't supports PCInitiate and stateful capability.
-     */
-    @Test
-    public void testCasePcepSetupTunnel2() {
-        Tunnel tunnel;
-        Path path;
-        ProviderId pid = new ProviderId("pcep", PROVIDER_ID);
-        List<Link> links = new ArrayList<>();
-        IpAddress srcIp = IpAddress.valueOf(0xC010103);
-        IpElementId srcElementId = IpElementId.ipElement(srcIp);
-
-        IpAddress dstIp = IpAddress.valueOf(0xC010102);
-        IpElementId dstElementId = IpElementId.ipElement(dstIp);
-
-        IpTunnelEndPoint ipTunnelEndPointSrc;
-        ipTunnelEndPointSrc = IpTunnelEndPoint.ipTunnelPoint(srcIp);
-
-        IpTunnelEndPoint ipTunnelEndPointDst;
-        ipTunnelEndPointDst = IpTunnelEndPoint.ipTunnelPoint(dstIp);
-
-        ConnectPoint src = new ConnectPoint(srcElementId, PortNumber.portNumber(10023));
-
-        ConnectPoint dst = new ConnectPoint(dstElementId, PortNumber.portNumber(10023));
-
-        Link link = DefaultLink.builder().providerId(pid).src(src).dst(dst)
-                .type(Link.Type.DIRECT).build();
-        links.add(link);
-
-        path = new DefaultPath(pid, links, TEN_WEIGHT, EMPTY);
-
-        Annotations annotations = DefaultAnnotations.builder()
-                .set(LSP_SIG_TYPE, WITH_SIGNALLING.name())
-                .build();
-
-        tunnel = new DefaultTunnel(pid, ipTunnelEndPointSrc, ipTunnelEndPointDst, Tunnel.Type.MPLS,
-                                   new GroupId(0), TunnelId.valueOf("1"), TunnelName.tunnelName("T123"),
-                                   path, annotations);
-        controller.getClient(PccId.pccId(IpAddress.valueOf(0xC010103))).setCapability(
-                new ClientCapability(true, true, true, true, true));
-
-        tunnelProvider.setupTunnel(tunnel, path);
-        assertThat(tunnelProvider.pcepTunnelApiMapper.checkFromTunnelRequestQueue(1), is(false));
-    }
-
-    /**
-     * Sends PCInitiate msg to setup a SR based tunnel.
-     */
-    @Test
-    public void testCasePcepSetupSrTunnel() {
-        Tunnel tunnel;
-        Path path;
-        ProviderId pid = new ProviderId("pcep", PROVIDER_ID);
-        List<Link> links = new ArrayList<>();
-        IpAddress srcIp = IpAddress.valueOf(0xC010101);
-        IpElementId srcElementId = IpElementId.ipElement(srcIp);
-
-        IpAddress dstIp = IpAddress.valueOf(0xC010102);
-        IpElementId dstElementId = IpElementId.ipElement(dstIp);
-
-        IpTunnelEndPoint ipTunnelEndPointSrc;
-        ipTunnelEndPointSrc = IpTunnelEndPoint.ipTunnelPoint(srcIp);
-
-        IpTunnelEndPoint ipTunnelEndPointDst;
-        ipTunnelEndPointDst = IpTunnelEndPoint.ipTunnelPoint(dstIp);
-
-        ConnectPoint src = new ConnectPoint(srcElementId, PortNumber.portNumber(10023));
-
-        ConnectPoint dst = new ConnectPoint(dstElementId, PortNumber.portNumber(10023));
-
-        Link link = DefaultLink.builder().providerId(pid).src(src).dst(dst)
-                .type(Link.Type.DIRECT).build();
-        links.add(link);
-
-        path = new DefaultPath(pid, links, TEN_WEIGHT, EMPTY);
-
-        Annotations annotations = DefaultAnnotations.builder()
-                .set(LSP_SIG_TYPE, SR_WITHOUT_SIGNALLING.name())
-                .build();
-
-        tunnel = new DefaultTunnel(pid, ipTunnelEndPointSrc, ipTunnelEndPointDst, Tunnel.Type.MPLS,
-                                   new GroupId(0), TunnelId.valueOf("1"), TunnelName.tunnelName("T123"),
-                                   path, annotations);
-        controller.getClient(PccId.pccId(IpAddress.valueOf(0xC010101))).setCapability(
-                new ClientCapability(true, true, true, true, true));
-
-        tunnelProvider.setupTunnel(tunnel, path);
-        assertThat(tunnelProvider.pcepTunnelApiMapper, not(nullValue()));
-    }
-
-    /**
-     * Sends PCInitiate msg to setup a tunnel without signalling and without SR.
-     */
-    @Test
-    public void testCasePcepSetupTunnelWithoutSigSr() {
-        Tunnel tunnel;
-        Path path;
-        ProviderId pid = new ProviderId("pcep", PROVIDER_ID);
-        List<Link> links = new ArrayList<>();
-        IpAddress srcIp = IpAddress.valueOf(0xC010101);
-        IpElementId srcElementId = IpElementId.ipElement(srcIp);
-
-        IpAddress dstIp = IpAddress.valueOf(0xC010102);
-        IpElementId dstElementId = IpElementId.ipElement(dstIp);
-
-        IpTunnelEndPoint ipTunnelEndPointSrc;
-        ipTunnelEndPointSrc = IpTunnelEndPoint.ipTunnelPoint(srcIp);
-
-        IpTunnelEndPoint ipTunnelEndPointDst;
-        ipTunnelEndPointDst = IpTunnelEndPoint.ipTunnelPoint(dstIp);
-
-        ConnectPoint src = new ConnectPoint(srcElementId, PortNumber.portNumber(10023));
-
-        ConnectPoint dst = new ConnectPoint(dstElementId, PortNumber.portNumber(10023));
-
-        Link link = DefaultLink.builder().providerId(pid).src(src).dst(dst)
-                .type(Link.Type.DIRECT).build();
-        links.add(link);
-
-        path = new DefaultPath(pid, links, TEN_WEIGHT, EMPTY);
-
-        Annotations annotations = DefaultAnnotations.builder()
-                .set(LSP_SIG_TYPE, WITHOUT_SIGNALLING_AND_WITHOUT_SR.name())
-                .build();
-
-        tunnel = new DefaultTunnel(pid, ipTunnelEndPointSrc, ipTunnelEndPointDst, Tunnel.Type.MPLS,
-                                   new GroupId(0), TunnelId.valueOf("1"), TunnelName.tunnelName("T123"),
-                                   path, annotations);
-        controller.getClient(PccId.pccId(IpAddress.valueOf(0xC010101))).setCapability(
-                new ClientCapability(true, true, true, true, true));
-
-        tunnelProvider.setupTunnel(tunnel, path);
-        assertThat(tunnelProvider.pcepTunnelApiMapper, not(nullValue()));
-    }
-
-    @After
-    public void tearDown() throws IOException {
-        tunnelProvider.deactivate();
-        tunnelProvider.controller = null;
-        tunnelProvider.pcepClientController = null;
-        tunnelProvider.tunnelProviderRegistry = null;
-        tunnelProvider.deviceService = null;
-        tunnelProvider.mastershipService = null;
-    }
-}
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelAddedTest.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelAddedTest.java
deleted file mode 100644
index 0db45cb..0000000
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelAddedTest.java
+++ /dev/null
@@ -1,700 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * 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.provider.pcep.tunnel.impl;
-
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableSet;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.ChassisId;
-import org.onlab.packet.IpAddress;
-import org.onosproject.cfg.ComponentConfigAdapter;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.incubator.net.tunnel.DefaultTunnel;
-import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.Tunnel.State;
-import org.onosproject.incubator.net.tunnel.Tunnel.Type;
-import org.onosproject.incubator.net.tunnel.TunnelAdminService;
-import org.onosproject.incubator.net.tunnel.TunnelDescription;
-import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelName;
-import org.onosproject.incubator.net.tunnel.TunnelProvider;
-import org.onosproject.incubator.net.tunnel.TunnelProviderService;
-import org.onosproject.incubator.net.tunnel.TunnelServiceAdapter;
-import org.onosproject.mastership.MastershipServiceAdapter;
-import org.onosproject.net.AnnotationKeys;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultDevice;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.ElementId;
-import org.onosproject.net.Link;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.Path;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.SparseAnnotations;
-import org.onosproject.net.device.DeviceServiceAdapter;
-import org.onosproject.net.link.LinkServiceAdapter;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.pcep.api.PcepControllerAdapter;
-import org.onosproject.pcep.server.ClientCapability;
-import org.onosproject.pcep.server.LspKey;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepClientAdapter;
-import org.onosproject.pcep.server.PcepClientControllerAdapter;
-import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
-import org.onosproject.pcepio.exceptions.PcepParseException;
-import org.onosproject.pcepio.protocol.PcepFactories;
-import org.onosproject.pcepio.protocol.PcepMessage;
-import org.onosproject.pcepio.protocol.PcepMessageReader;
-import org.onosproject.pcepio.protocol.PcepVersion;
-
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-import static org.onosproject.incubator.net.tunnel.Tunnel.State.INIT;
-import static org.onosproject.incubator.net.tunnel.Tunnel.Type.MPLS;
-import static org.onosproject.net.Device.Type.ROUTER;
-import static org.onosproject.net.Link.State.ACTIVE;
-import static org.onosproject.net.MastershipRole.MASTER;
-import static org.onosproject.pcep.server.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.BANDWIDTH;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.DELEGATE;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.LOCAL_LSP_ID;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.LSP_SIG_TYPE;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.PCC_TUNNEL_ID;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.PLSP_ID;
-import static org.onosproject.pcep.server.PcepSyncStatus.SYNCED;
-
-/**
- * Tests handling of PCEP report message.
- */
-public class PcepTunnelAddedTest {
-
-    public static final String PROVIDER_ID = "org.onosproject.provider.tunnel.pcep";
-    public static final String UNKOWN = "UNKOWN";
-    PcepTunnelProvider tunnelProvider = new PcepTunnelProvider();
-    private final MockTunnelProviderRegistryAdapter registry = new MockTunnelProviderRegistryAdapter();
-    private final PcepClientControllerAdapter controller = new PcepClientControllerAdapter();
-    private final PcepControllerAdapter ctl = new PcepControllerAdapter();
-    private final PcepTunnelApiMapper pcepTunnelAPIMapper = new PcepTunnelApiMapper();
-    private final MockTunnelServiceAdapter tunnelService = new MockTunnelServiceAdapter();
-    public final MockDeviceService deviceService = new MockDeviceService();
-    private final MockMasterShipService masterShipService = new MockMasterShipService();
-    private final MockLinkService linkService = new MockLinkService();
-    private final MockTunnelAdminService tunnelAdminService = new MockTunnelAdminService();
-
-    private class MockLinkService extends LinkServiceAdapter {
-        LinkedList<Link> links = new LinkedList<>();
-        void addLink(Link link) {
-            links.add(link);
-        }
-
-        @Override
-        public Iterable<Link> getActiveLinks() {
-
-            return FluentIterable.from(links)
-                    .filter(input -> input.state() == ACTIVE);
-        }
-    }
-
-    private class MockTunnelAdminService implements TunnelAdminService {
-
-        @Override
-        public void removeTunnel(TunnelId tunnelId) {
-            // TODO Auto-generated method stub
-        }
-
-        @Override
-        public void removeTunnels(TunnelEndPoint src, TunnelEndPoint dst, ProviderId producerName) {
-            // TODO Auto-generated method stub
-        }
-
-        @Override
-        public void removeTunnels(TunnelEndPoint src, TunnelEndPoint dst, Type type, ProviderId producerName) {
-            // TODO Auto-generated method stub
-        }
-
-        @Override
-        public void updateTunnel(Tunnel tunnel, Path path) {
-            if (tunnelService.tunnelIdAsKeyStore.containsKey(tunnel.tunnelId())) {
-                tunnelService.tunnelIdAsKeyStore.replace(tunnel.tunnelId(), tunnel);
-            }
-        }
-
-        @Override
-        public void updateTunnelState(Tunnel tunnel, State state) {
-            // TODO Auto-generated method stub
-        }
-    }
-
-    private class MockMasterShipService extends MastershipServiceAdapter {
-        boolean set;
-
-        private void setMaster(boolean isMaster) {
-            this.set = isMaster;
-        }
-
-        @Override
-        public MastershipRole getLocalRole(DeviceId deviceId) {
-            return set ? MastershipRole.MASTER : MastershipRole.STANDBY;
-        }
-
-        @Override
-        public boolean isLocalMaster(DeviceId deviceId) {
-            return getLocalRole(deviceId) == MASTER;
-        }
-    }
-
-    private class MockDeviceService extends DeviceServiceAdapter {
-        List<Device> devices = new LinkedList<>();
-
-        private void addDevice(Device dev) {
-            devices.add(dev);
-        }
-
-        @Override
-        public Iterable<Device> getAvailableDevices() {
-            return devices;
-        }
-    }
-
-    private class MockTunnelProviderRegistryAdapter extends TunnelProviderRegistryAdapter {
-        public long tunnelIdCounter;
-
-        @Override
-        public TunnelProviderService register(TunnelProvider provider) {
-            this.provider = provider;
-            return new TestProviderService();
-        }
-
-        private class TestProviderService implements TunnelProviderService {
-
-            @Override
-            public TunnelProvider provider() {
-                return null;
-            }
-
-            @Override
-            public TunnelId tunnelAdded(TunnelDescription tunnel) {
-                TunnelId id = TunnelId.valueOf(String.valueOf(++tunnelIdCounter));
-                Tunnel storedTunnel = new DefaultTunnel(ProviderId.NONE,
-                        tunnel.src(), tunnel.dst(),
-                        tunnel.type(),
-                        tunnel.groupId(),
-                        id,
-                        tunnel.tunnelName(),
-                        tunnel.path(),
-                        tunnel.resource(),
-                        tunnel.annotations());
-                tunnelService.tunnelIdAsKeyStore.put(id, storedTunnel);
-                return id;
-            }
-
-            @Override
-            public TunnelId tunnelAdded(TunnelDescription tunnel, State state) {
-                TunnelId id = TunnelId.valueOf(String.valueOf(++tunnelIdCounter));
-                Tunnel storedTunnel = new DefaultTunnel(ProviderId.NONE,
-                        tunnel.src(), tunnel.dst(),
-                        tunnel.type(),
-                        tunnel.groupId(),
-                        id,
-                        tunnel.tunnelName(),
-                        tunnel.path(),
-                        tunnel.resource(),
-                        tunnel.annotations());
-                tunnelService.tunnelIdAsKeyStore.put(id, storedTunnel);
-                return id;
-            }
-
-            @Override
-            public void tunnelRemoved(TunnelDescription tunnel) {
-            }
-
-            @Override
-            public void tunnelUpdated(TunnelDescription tunnel) {
-            }
-
-            @Override
-            public void tunnelUpdated(TunnelDescription tunnel, State state) {
-                TunnelId id = TunnelId.valueOf(String.valueOf(++tunnelIdCounter));
-                Tunnel storedTunnel = new DefaultTunnel(ProviderId.NONE,
-                        tunnel.src(), tunnel.dst(),
-                        tunnel.type(),
-                        tunnel.groupId(),
-                        id,
-                        tunnel.tunnelName(),
-                        tunnel.path(),
-                        tunnel.resource(),
-                        tunnel.annotations());
-                tunnelService.tunnelIdAsKeyStore.put(id, storedTunnel);
-            }
-
-            @Override
-            public Tunnel tunnelQueryById(TunnelId tunnelId) {
-                return null;
-            }
-        }
-    }
-
-    private class MockTunnelServiceAdapter extends TunnelServiceAdapter {
-        private HashMap<TunnelId, Tunnel> tunnelIdAsKeyStore = new HashMap<>();
-        private int tunnelIdCounter = 0;
-
-        @Override
-        public TunnelId setupTunnel(ApplicationId producerId, ElementId srcElementId, Tunnel tunnel, Path path) {
-            TunnelId tunnelId = TunnelId.valueOf(String.valueOf(++tunnelIdCounter));
-            tunnelIdAsKeyStore.put(tunnelId, tunnel);
-            return tunnelId;
-        }
-
-        @Override
-        public Collection<Tunnel> queryTunnel(TunnelEndPoint src, TunnelEndPoint dst) {
-            Collection<Tunnel> result = new HashSet<>();
-            Tunnel tunnel = null;
-            for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) {
-                tunnel = tunnelIdAsKeyStore.get(tunnelId);
-
-                if ((null != tunnel) && (src.equals(tunnel.src())) && (dst.equals(tunnel.dst()))) {
-                    result.add(tunnel);
-                }
-            }
-
-            return result.isEmpty() ? Collections.emptySet() : ImmutableSet.copyOf(result);
-        }
-
-        @Override
-        public Collection<Tunnel> queryAllTunnels() {
-            Collection<Tunnel> result = new HashSet<>();
-
-            for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) {
-                result.add(tunnelIdAsKeyStore.get(tunnelId));
-            }
-
-            return result.isEmpty() ? Collections.emptySet() : ImmutableSet.copyOf(result);
-
-        }
-    }
-
-    @Before
-    public void preSetup() {
-        tunnelProvider.tunnelProviderRegistry = registry;
-        tunnelProvider.pcepClientController = controller;
-        tunnelProvider.controller = ctl;
-        tunnelProvider.deviceService = deviceService;
-        tunnelProvider.mastershipService = masterShipService;
-        tunnelProvider.pcepTunnelApiMapper = pcepTunnelAPIMapper;
-        tunnelProvider.cfgService = new ComponentConfigAdapter();
-        tunnelProvider.tunnelService = tunnelService;
-        tunnelProvider.tunnelAdminService = tunnelAdminService;
-        tunnelProvider.service = registry.register(tunnelProvider);
-        tunnelProvider.linkService = linkService;
-        tunnelProvider.activate();
-    }
-
-    /**
-     * Tests PCRpt msg with sync flag set.
-     */
-    @Test
-    public void tunnelProviderAddedTest1() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x84,
-                0x21, 0x10, 0x00, 0x14,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x01, //SRP object
-                0x00, 0x1c, 0x00, 0x04, // PATH-SETUP-TYPE TLV
-                0x00, 0x00, 0x00, 0x02,
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv
-                0x00, 0x12, 0x00, 0x10, // IPv4-LSP-IDENTIFIER-TLV
-                0x01, 0x01, 0x01, 0x01,
-                0x00, 0x01, 0x00, 0x01,
-                0x01, 0x01, 0x01, 0x01,
-                0x05, 0x05, 0x05, 0x05,
-
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, (byte) 0x01, 0x01, 0x01, 0x01, 0x04, 0x00, // ERO IPv4 sub objects
-                0x01, 0x08, (byte) 0x05, 0x05, 0x05, 0x05, 0x04, 0x00,
-
-                0x08, 0x10, 0x00, 0x34, //RRO object
-                0x01, 0x08, 0x11, 0x01, 0x01, 0x01, 0x04, 0x00, // RRO IPv4 sub objects
-                0x01, 0x08, 0x11, 0x01, 0x01, 0x02, 0x04, 0x00,
-                0x01, 0x08, 0x06, 0x06, 0x06, 0x06, 0x04, 0x00,
-                0x01, 0x08, 0x12, 0x01, 0x01, 0x02, 0x04, 0x00,
-                0x01, 0x08, 0x12, 0x01, 0x01, 0x01, 0x04, 0x00,
-                0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00
-                };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = reader.readFrom(buffer);
-
-        DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder();
-        newBuilder.set(PcepTunnelProvider.LSRID, "1.1.1.1");
-        newBuilder.set(AnnotationKeys.TYPE, "L3");
-        Device device = new DefaultDevice(ProviderId.NONE, DeviceId.deviceId("1.1.1.1"), ROUTER,
-                UNKOWN, UNKOWN, UNKOWN,
-                UNKOWN, new ChassisId(),
-                newBuilder.build());
-
-        deviceService.addDevice(device);
-        controller.getClient(PccId.pccId(IpAddress.valueOf("1.1.1.1"))).setCapability(
-                new ClientCapability(true, true, true, true, true));
-        masterShipService.setMaster(true);
-        Link link = DefaultLink.builder()
-                .src(new ConnectPoint(device.id(), PortNumber.portNumber(16843009)))
-                .dst(new ConnectPoint(device.id(), PortNumber.portNumber(84215045)))
-                .state(ACTIVE)
-                .type(Link.Type.DIRECT)
-                .providerId(ProviderId.NONE)
-                .build();
-        linkService.addLink(link);
-        controller.processClientMessage(PccId.pccId(IpAddress.valueOf("1.1.1.1")), message);
-
-        assertThat(registry.tunnelIdCounter, is((long) 1));
-    }
-
-    /**
-     * Tests updating an existing tunnel on receiving asynchronous PCRpt msg,
-     * i.e. without any SRP id.
-     */
-    @Test
-    public void tunnelProviderAddedTest2() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x50,
-                                       0x21, 0x10, 0x00, 0x14, //SRP object
-                                       0x00, 0x00, 0x00, 0x00,
-                                       0x00, 0x00, 0x00, 0x00,
-                                       0x00, 0x1c, 0x00, 0x04, // PATH-SETUP-TYPE TLV
-                                       0x00, 0x00, 0x00, 0x02,
-                                       0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x19, //LSP object
-                                       0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path TLV
-                                       0x00, 0x12, 0x00, 0x10, // IPv4-LSP-IDENTIFIER-TLV
-                                       0x4e, 0x1f, 0x04, 0x00,
-                                       0x00, 0x01, 0x00, 0x01,
-                                       0x4e, 0x1f, 0x04, 0x00,
-                                       0x4e, 0x20, 0x04, 0x00,
-                                       0x07, 0x10, 0x00, 0x14, //ERO object
-                                       0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, // ERO IPv4 sub objects
-                                       0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00,
-                                       };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = reader.readFrom(buffer);
-
-        // create an existing tunnel.
-        IpTunnelEndPoint tunnelEndPointSrc = IpTunnelEndPoint.ipTunnelPoint(IpAddress.valueOf(0x4e1f0400));
-        IpTunnelEndPoint tunnelEndPointDst = IpTunnelEndPoint.ipTunnelPoint(IpAddress.valueOf(0x4e200400));
-
-        SparseAnnotations annotations = DefaultAnnotations.builder()
-                .set(BANDWIDTH, (new Integer(1)).toString())
-                .set(LSP_SIG_TYPE, WITHOUT_SIGNALLING_AND_WITHOUT_SR.name())
-                .set(PCC_TUNNEL_ID, String.valueOf(1))
-                .set(PLSP_ID, String.valueOf(1))
-                .set(LOCAL_LSP_ID, String.valueOf(1))
-                .set(DELEGATE, String.valueOf("true"))
-                .build();
-
-        Tunnel tunnel = new DefaultTunnel(null, tunnelEndPointSrc, tunnelEndPointDst, MPLS, INIT, null, null,
-                                          TunnelName.tunnelName("T123"), null, annotations);
-        tunnelService.setupTunnel(null, null, tunnel, null);
-
-        PccId pccId = PccId.pccId(IpAddress.valueOf(0x4e1f0400));
-        PcepClientAdapter pc = new PcepClientAdapter();
-        pc.init(pccId, PcepVersion.PCEP_1);
-        masterShipService.setMaster(true);
-        controller.getClient(pccId).setLspAndDelegationInfo(new LspKey(1, (short) 1), true);
-        controller.getClient(pccId).setCapability(new ClientCapability(true, true, true, true, true));
-        controller.getClient(pccId).setLspDbSyncStatus(SYNCED);
-
-        // Process update message.
-        controller.processClientMessage(pccId, message);
-        assertThat(tunnelService.queryAllTunnels().size(), is(1));
-    }
-
-    /**
-     * Tests adding a new tunnel on receiving asynchronous PCRpt msg,
-     * i.e. without any SRP id.
-     */
-    @Test
-    public void tunnelProviderAddedTest3() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x84,
-                                       0x21, 0x10, 0x00, 0x14, //SRP object
-                                       0x00, 0x00, 0x00, 0x00,
-                                       0x00, 0x00, 0x00, 0x00,
-                                       0x00, 0x1c, 0x00, 0x04, // PATH-SETUP-TYPE TLV
-                                       0x00, 0x00, 0x00, 0x02,
-                                       0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x1B, // LSP object
-                                       0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, // symbolic path TLV
-                                       0x00, 0x12, 0x00, 0x10, // IPv4-LSP-IDENTIFIER-TLV
-                                       0x01, 0x01, 0x01, 0x01,
-                                       0x00, 0x01, 0x00, 0x01,
-                                       0x01, 0x01, 0x01, 0x01,
-                                       0x05, 0x05, 0x05, 0x05,
-
-                                       0x07, 0x10, 0x00, 0x14, //ERO object
-                                       0x01, 0x08, (byte) 0x01, 0x01, 0x01, 0x01, 0x04, 0x00, // ERO IPv4 sub objects
-                                       0x01, 0x08, (byte) 0x05, 0x05, 0x05, 0x05, 0x04, 0x00,
-
-                                       0x08, 0x10, 0x00, 0x34, //RRO object
-                                       0x01, 0x08, 0x11, 0x01, 0x01, 0x01, 0x04, 0x00, // RRO IPv4 sub objects
-                                       0x01, 0x08, 0x11, 0x01, 0x01, 0x02, 0x04, 0x00,
-                                       0x01, 0x08, 0x06, 0x06, 0x06, 0x06, 0x04, 0x00,
-                                       0x01, 0x08, 0x12, 0x01, 0x01, 0x02, 0x04, 0x00,
-                                       0x01, 0x08, 0x12, 0x01, 0x01, 0x01, 0x04, 0x00,
-                                       0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00
-                                       };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = reader.readFrom(buffer);
-
-        DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder();
-        newBuilder.set(PcepTunnelProvider.LSRID, "1.1.1.1");
-        newBuilder.set(AnnotationKeys.TYPE, "L3");
-        Device device = new DefaultDevice(ProviderId.NONE, DeviceId.deviceId("1.1.1.1"), ROUTER,
-                UNKOWN, UNKOWN, UNKOWN,
-                UNKOWN, new ChassisId(),
-                newBuilder.build());
-
-        deviceService.addDevice(device);
-
-        PccId pccId = PccId.pccId(IpAddress.valueOf("1.1.1.1"));
-        controller.getClient(pccId).setLspDbSyncStatus(SYNCED);
-        controller.getClient(pccId).setCapability(new ClientCapability(true, true, true, true, true));
-
-        Link link = DefaultLink.builder()
-                .src(new ConnectPoint(device.id(), PortNumber.portNumber(16843009)))
-                .dst(new ConnectPoint(device.id(), PortNumber.portNumber(84215045)))
-                .state(ACTIVE)
-                .type(Link.Type.DIRECT)
-                .providerId(ProviderId.NONE)
-                .build();
-        linkService.addLink(link);
-        PcepClientAdapter pc = new PcepClientAdapter();
-        pc.init(pccId, PcepVersion.PCEP_1);
-        controller.getClient(pccId).setLspAndDelegationInfo(new LspKey(1, (short) 1), true);
-        masterShipService.setMaster(true);
-        controller.processClientMessage(pccId, message);
-
-        assertThat(registry.tunnelIdCounter, is((long) 1));
-    }
-
-    /**
-     * Tests PCRpt msg with D flag set and delegated to non-master.
-     *
-     * @throws InterruptedException while waiting for delay
-     */
-    @Test
-    public void tunnelProviderAddedTest4() throws PcepParseException, PcepOutOfBoundMessageException,
-            InterruptedException {
-        byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x84,
-                0x21, 0x10, 0x00, 0x14,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x01, //SRP object
-                0x00, 0x1c, 0x00, 0x04, // PATH-SETUP-TYPE TLV
-                0x00, 0x00, 0x00, 0x02,
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x02, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv
-                0x00, 0x12, 0x00, 0x10, // IPv4-LSP-IDENTIFIER-TLV
-                0x01, 0x01, 0x01, 0x01,
-                0x00, 0x01, 0x00, 0x01,
-                0x01, 0x01, 0x01, 0x01,
-                0x05, 0x05, 0x05, 0x05,
-
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, (byte) 0x01, 0x01, 0x01, 0x01, 0x04, 0x00, // ERO IPv4 sub objects
-                0x01, 0x08, (byte) 0x05, 0x05, 0x05, 0x05, 0x04, 0x00,
-
-                0x08, 0x10, 0x00, 0x34, //RRO object
-                0x01, 0x08, 0x11, 0x01, 0x01, 0x01, 0x04, 0x00, // RRO IPv4 sub objects
-                0x01, 0x08, 0x11, 0x01, 0x01, 0x02, 0x04, 0x00,
-                0x01, 0x08, 0x06, 0x06, 0x06, 0x06, 0x04, 0x00,
-                0x01, 0x08, 0x12, 0x01, 0x01, 0x02, 0x04, 0x00,
-                0x01, 0x08, 0x12, 0x01, 0x01, 0x01, 0x04, 0x00,
-                0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00
-                };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = reader.readFrom(buffer);
-
-        //PCC 1.1.1.1, D=0, ONOS as master
-        masterShipService.setMaster(true);
-        DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder();
-        newBuilder.set(PcepTunnelProvider.LSRID, "1.1.1.1");
-        newBuilder.set(AnnotationKeys.TYPE, "L3");
-        Device device = new DefaultDevice(ProviderId.NONE, DeviceId.deviceId("1.1.1.1"), ROUTER,
-                UNKOWN, UNKOWN, UNKOWN,
-                UNKOWN, new ChassisId(),
-                newBuilder.build());
-
-        deviceService.addDevice(device);
-        controller.getClient(PccId.pccId(IpAddress.valueOf("1.1.1.1"))).setCapability(
-                new ClientCapability(true, true, true, true, true));
-        Link link = DefaultLink.builder()
-                .src(new ConnectPoint(device.id(), PortNumber.portNumber(16843009)))
-                .dst(new ConnectPoint(device.id(), PortNumber.portNumber(84215045)))
-                .state(ACTIVE)
-                .type(Link.Type.DIRECT)
-                .providerId(ProviderId.NONE)
-                .build();
-        linkService.addLink(link);
-        controller.processClientMessage(PccId.pccId(IpAddress.valueOf("1.1.1.1")), message);
-        assertThat(tunnelService.tunnelIdAsKeyStore.values().iterator().next().annotations().value(DELEGATE),
-                is("false"));
-
-        //PCC 1.1.1.1, D=1, non-master
-        masterShipService.setMaster(false);
-
-        reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x84,
-                0x21, 0x10, 0x00, 0x14,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x01, //SRP object
-                0x00, 0x1c, 0x00, 0x04, // PATH-SETUP-TYPE TLV
-                0x00, 0x00, 0x00, 0x02,
-                0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object
-                0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv
-                0x00, 0x12, 0x00, 0x10, // IPv4-LSP-IDENTIFIER-TLV
-                0x01, 0x01, 0x01, 0x01,
-                0x00, 0x01, 0x00, 0x01,
-                0x01, 0x01, 0x01, 0x01,
-                0x05, 0x05, 0x05, 0x05,
-
-                0x07, 0x10, 0x00, 0x14, //ERO object
-                0x01, 0x08, (byte) 0x01, 0x01, 0x01, 0x01, 0x04, 0x00, // ERO IPv4 sub objects
-                0x01, 0x08, (byte) 0x05, 0x05, 0x05, 0x05, 0x04, 0x00,
-
-                0x08, 0x10, 0x00, 0x34, //RRO object
-                0x01, 0x08, 0x11, 0x01, 0x01, 0x01, 0x04, 0x00, // RRO IPv4 sub objects
-                0x01, 0x08, 0x11, 0x01, 0x01, 0x02, 0x04, 0x00,
-                0x01, 0x08, 0x06, 0x06, 0x06, 0x06, 0x04, 0x00,
-                0x01, 0x08, 0x12, 0x01, 0x01, 0x02, 0x04, 0x00,
-                0x01, 0x08, 0x12, 0x01, 0x01, 0x01, 0x04, 0x00,
-                0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00
-                };
-
-        buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        reader = PcepFactories.getGenericReader();
-        message = reader.readFrom(buffer);
-
-        controller.processClientMessage(PccId.pccId(IpAddress.valueOf("1.1.1.1")), message);
-        TimeUnit.MILLISECONDS.sleep(4000);
-        assertThat(registry.tunnelIdCounter, is((long) 2));
-
-        Iterator<Tunnel> iterator = tunnelService.tunnelIdAsKeyStore.values().iterator();
-        iterator.next();
-        assertThat(iterator.next().annotations().value(DELEGATE),
-                is("true"));
-    }
-
-    /**
-     * Tests adding PCC Init LSP after LSP DB sync is over.
-     */
-    @Test
-    public void tunnelProviderAddedTest5() throws PcepParseException, PcepOutOfBoundMessageException {
-        byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x84,
-                                       0x21, 0x10, 0x00, 0x14, //SRP object
-                                       0x00, 0x00, 0x00, 0x00,
-                                       0x00, 0x00, 0x00, 0x00,
-                                       0x00, 0x1c, 0x00, 0x04, // PATH-SETUP-TYPE TLV
-                                       0x00, 0x00, 0x00, 0x02,
-                                       0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x19, // LSP object
-                                       0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, // symbolic path TLV
-                                       0x00, 0x12, 0x00, 0x10, // IPv4-LSP-IDENTIFIER-TLV
-                                       0x01, 0x01, 0x01, 0x01,
-                                       0x00, 0x01, 0x00, 0x01,
-                                       0x01, 0x01, 0x01, 0x01,
-                                       0x05, 0x05, 0x05, 0x05,
-
-                                       0x07, 0x10, 0x00, 0x14, //ERO object
-                                       0x01, 0x08, (byte) 0x01, 0x01, 0x01, 0x01, 0x04, 0x00, // ERO IPv4 sub objects
-                                       0x01, 0x08, (byte) 0x05, 0x05, 0x05, 0x05, 0x04, 0x00,
-
-                                       0x08, 0x10, 0x00, 0x34, //RRO object
-                                       0x01, 0x08, 0x11, 0x01, 0x01, 0x01, 0x04, 0x00, // RRO IPv4 sub objects
-                                       0x01, 0x08, 0x11, 0x01, 0x01, 0x02, 0x04, 0x00,
-                                       0x01, 0x08, 0x06, 0x06, 0x06, 0x06, 0x04, 0x00,
-                                       0x01, 0x08, 0x12, 0x01, 0x01, 0x02, 0x04, 0x00,
-                                       0x01, 0x08, 0x12, 0x01, 0x01, 0x01, 0x04, 0x00,
-                                       0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00
-                                       };
-
-        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
-        buffer.writeBytes(reportMsg);
-
-        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
-        PcepMessage message = reader.readFrom(buffer);
-
-        DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder();
-        newBuilder.set(PcepTunnelProvider.LSRID, "1.1.1.1");
-        newBuilder.set(AnnotationKeys.TYPE, "L3");
-        Device device = new DefaultDevice(ProviderId.NONE, DeviceId.deviceId("1.1.1.1"), ROUTER,
-                UNKOWN, UNKOWN, UNKOWN,
-                UNKOWN, new ChassisId(),
-                newBuilder.build());
-
-        deviceService.addDevice(device);
-
-        PccId pccId = PccId.pccId(IpAddress.valueOf("1.1.1.1"));
-        controller.getClient(pccId).setLspDbSyncStatus(SYNCED);
-        controller.getClient(pccId).setCapability(new ClientCapability(true, true, true, true, true));
-
-        PcepClientAdapter pc = new PcepClientAdapter();
-        pc.init(pccId, PcepVersion.PCEP_1);
-        controller.getClient(pccId).setLspAndDelegationInfo(new LspKey(1, (short) 1), true);
-        masterShipService.setMaster(true);
-        controller.processClientMessage(pccId, message);
-
-        assertThat(registry.tunnelIdCounter, is((long) 0));
-    }
-
-    @After
-    public void tearDown() throws IOException {
-        tunnelProvider.deactivate();
-        tunnelProvider.controller = null;
-        tunnelProvider.pcepClientController = null;
-        tunnelProvider.tunnelProviderRegistry = null;
-
-        tunnelProvider.pcepTunnelApiMapper = null;
-        tunnelProvider.cfgService = null;
-        tunnelProvider.tunnelService = null;
-        tunnelProvider.tunnelAdminService = null;
-        tunnelProvider.deviceService = null;
-        tunnelProvider.mastershipService = null;
-        tunnelProvider.linkService = null;
-        tunnelProvider.service = null;
-    }
-}
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProviderTest.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProviderTest.java
deleted file mode 100644
index 9f70e1e..0000000
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProviderTest.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.provider.pcep.tunnel.impl;
-
-import org.junit.After;
-import org.junit.Test;
-import org.onlab.graph.ScalarWeight;
-import org.onlab.packet.IpAddress;
-import org.onosproject.cfg.ComponentConfigAdapter;
-import org.onosproject.core.GroupId;
-import org.onosproject.incubator.net.tunnel.DefaultTunnel;
-import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelName;
-import org.onosproject.incubator.net.tunnel.TunnelServiceAdapter;
-import org.onosproject.mastership.MastershipServiceAdapter;
-import org.onosproject.net.Annotations;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.DefaultPath;
-import org.onosproject.net.IpElementId;
-import org.onosproject.net.Link;
-import org.onosproject.net.Path;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.device.DeviceServiceAdapter;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.pcep.api.PcepControllerAdapter;
-import org.onosproject.pcep.server.ClientCapability;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepClientControllerAdapter;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.nullValue;
-import static org.hamcrest.core.IsNot.not;
-import static org.onosproject.net.DefaultAnnotations.EMPTY;
-import static org.onosproject.pcep.server.LspType.WITH_SIGNALLING;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.LSP_SIG_TYPE;
-
-public class PcepTunnelProviderTest {
-
-    private static final String PROVIDER_ID = "org.onosproject.provider.tunnel.pcep";
-    private PcepTunnelProvider tunnelProvider = new PcepTunnelProvider();
-    private final TunnelProviderRegistryAdapter registry = new TunnelProviderRegistryAdapter();
-    private final PcepClientControllerAdapter controller = new PcepClientControllerAdapter();
-    private final PcepControllerAdapter ctl = new PcepControllerAdapter();
-    private final TunnelServiceAdapter tunnelService = new TunnelServiceAdapter();
-    private final DeviceServiceAdapter  deviceService = new DeviceServiceAdapter();
-    private final MastershipServiceAdapter  mastershipService = new MastershipServiceAdapter();
-
-    @Test
-    public void testCasePcepSetupTunnel() {
-
-        tunnelProvider.tunnelProviderRegistry = registry;
-        tunnelProvider.pcepClientController = controller;
-        tunnelProvider.controller = ctl;
-        tunnelProvider.deviceService = deviceService;
-        tunnelProvider.mastershipService = mastershipService;
-        tunnelProvider.cfgService = new ComponentConfigAdapter();
-        tunnelProvider.tunnelService = tunnelService;
-        tunnelProvider.activate();
-
-        Tunnel tunnel;
-        Path path;
-        ProviderId pid = new ProviderId("pcep", PROVIDER_ID);
-        List<Link> links = new ArrayList<>();
-        IpAddress srcIp = IpAddress.valueOf(0xC010101);
-        IpElementId srcElementId = IpElementId.ipElement(srcIp);
-
-        IpAddress dstIp = IpAddress.valueOf(0xC010102);
-        IpElementId dstElementId = IpElementId.ipElement(dstIp);
-
-        IpTunnelEndPoint ipTunnelEndPointSrc;
-        ipTunnelEndPointSrc = IpTunnelEndPoint.ipTunnelPoint(srcIp);
-
-        IpTunnelEndPoint ipTunnelEndPointDst;
-        ipTunnelEndPointDst = IpTunnelEndPoint.ipTunnelPoint(dstIp);
-
-        ConnectPoint src = new ConnectPoint(srcElementId, PortNumber.portNumber(10023));
-
-        ConnectPoint dst = new ConnectPoint(dstElementId, PortNumber.portNumber(10023));
-
-        Link link = DefaultLink.builder().providerId(pid).src(src).dst(dst)
-                .type(Link.Type.DIRECT).build();
-        links.add(link);
-
-        path = new DefaultPath(pid, links, ScalarWeight.toWeight(10), EMPTY);
-
-        Annotations annotations = DefaultAnnotations.builder()
-                .set(LSP_SIG_TYPE, WITH_SIGNALLING.name())
-                .build();
-
-        tunnel = new DefaultTunnel(pid, ipTunnelEndPointSrc, ipTunnelEndPointDst, Tunnel.Type.MPLS,
-                                   new GroupId(0), TunnelId.valueOf("1"), TunnelName.tunnelName("T123"),
-                                   path, annotations);
-        controller.getClient(PccId.pccId(IpAddress.valueOf(0xC010101))).setCapability(
-                new ClientCapability(true, true, true, true, true));
-
-        tunnelProvider.setupTunnel(tunnel, path);
-
-        assertThat(tunnelProvider.pcepTunnelApiMapper, not(nullValue()));
-    }
-
-    @After
-    public void tearDown() throws IOException {
-        tunnelProvider.deactivate();
-        tunnelProvider.controller = null;
-        tunnelProvider.deviceService = null;
-        tunnelProvider.mastershipService = null;
-        tunnelProvider.pcepClientController = null;
-        tunnelProvider.tunnelProviderRegistry = null;
-    }
-}
\ No newline at end of file
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepUpdateTunnelProviderTest.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepUpdateTunnelProviderTest.java
deleted file mode 100644
index 99e6e28..0000000
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepUpdateTunnelProviderTest.java
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.provider.pcep.tunnel.impl;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.graph.ScalarWeight;
-import org.onlab.packet.IpAddress;
-import org.onosproject.cfg.ComponentConfigAdapter;
-import org.onosproject.core.GroupId;
-import org.onosproject.incubator.net.tunnel.DefaultTunnel;
-import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelName;
-import org.onosproject.incubator.net.tunnel.TunnelServiceAdapter;
-import org.onosproject.net.Annotations;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.DefaultPath;
-import org.onosproject.net.IpElementId;
-import org.onosproject.net.Link;
-import org.onosproject.net.Path;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.pcep.api.PcepControllerAdapter;
-import org.onosproject.pcep.server.ClientCapability;
-import org.onosproject.pcep.server.LspKey;
-import org.onosproject.pcep.server.PccId;
-import org.onosproject.pcep.server.PcepClientAdapter;
-import org.onosproject.pcep.server.PcepClientControllerAdapter;
-import org.onosproject.pcepio.protocol.PcepVersion;
-import org.onosproject.pcepio.types.StatefulIPv4LspIdentifiersTlv;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.nullValue;
-import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsNot.not;
-import static org.onosproject.net.DefaultAnnotations.EMPTY;
-import static org.onosproject.pcep.server.LspType.SR_WITHOUT_SIGNALLING;
-import static org.onosproject.pcep.server.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
-import static org.onosproject.pcep.server.LspType.WITH_SIGNALLING;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.LOCAL_LSP_ID;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.LSP_SIG_TYPE;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.PLSP_ID;
-/**
- * Test for PCEP update tunnel.
- */
-public class PcepUpdateTunnelProviderTest {
-
-    private static final String PROVIDER_ID = "org.onosproject.provider.tunnel.pcep";
-    private PcepTunnelProvider tunnelProvider = new PcepTunnelProvider();
-    private final TunnelProviderRegistryAdapter registry = new TunnelProviderRegistryAdapter();
-    private final PcepClientControllerAdapter controller = new PcepClientControllerAdapter();
-    private final PcepControllerAdapter ctl = new PcepControllerAdapter();
-    private final PcepTunnelApiMapper pcepTunnelAPIMapper = new PcepTunnelApiMapper();
-    private final TunnelServiceAdapter tunnelService = new TunnelServiceAdapter();
-
-    @Before
-    public void setUp() throws IOException {
-        tunnelProvider.tunnelProviderRegistry = registry;
-        tunnelProvider.pcepClientController = controller;
-        tunnelProvider.controller = ctl;
-        tunnelProvider.pcepTunnelApiMapper = pcepTunnelAPIMapper;
-        tunnelProvider.cfgService = new ComponentConfigAdapter();
-        tunnelProvider.tunnelService = tunnelService;
-        tunnelProvider.activate();
-    }
-
-    /**
-     * Send update message to PCC.
-     */
-    @Test
-    public void testCasePcepUpdateTunnel() {
-        Tunnel tunnel;
-        Path path;
-        ProviderId pid = new ProviderId("pcep", PROVIDER_ID);
-        List<Link> links = new ArrayList<>();
-        IpAddress srcIp = IpAddress.valueOf(0xD010101);
-        IpElementId srcElementId = IpElementId.ipElement(srcIp);
-
-        IpAddress dstIp = IpAddress.valueOf(0xD010102);
-        IpElementId dstElementId = IpElementId.ipElement(dstIp);
-
-        IpTunnelEndPoint ipTunnelEndPointSrc;
-        ipTunnelEndPointSrc = IpTunnelEndPoint.ipTunnelPoint(srcIp);
-
-        IpTunnelEndPoint ipTunnelEndPointDst;
-        ipTunnelEndPointDst = IpTunnelEndPoint.ipTunnelPoint(dstIp);
-
-        ConnectPoint src = new ConnectPoint(srcElementId, PortNumber.portNumber(10023));
-
-        ConnectPoint dst = new ConnectPoint(dstElementId, PortNumber.portNumber(10024));
-
-        Link link = DefaultLink.builder().providerId(pid).src(src).dst(dst)
-                .type(Link.Type.DIRECT).build();
-        links.add(link);
-
-        path = new DefaultPath(pid, links, ScalarWeight.toWeight(20), EMPTY);
-
-        Annotations annotations = DefaultAnnotations.builder()
-                .set(PLSP_ID, "1")
-                .set(LOCAL_LSP_ID, "1")
-                .set(LSP_SIG_TYPE, WITH_SIGNALLING.name())
-                .build();
-
-        tunnel = new DefaultTunnel(pid, ipTunnelEndPointSrc, ipTunnelEndPointDst, Tunnel.Type.MPLS,
-                                   new GroupId(0), TunnelId.valueOf("1"), TunnelName.tunnelName("T123"),
-                                   path, annotations);
-
-        // for updating tunnel tunnel should exist in db
-        PcepTunnelData pcepTunnelData = new PcepTunnelData(tunnel, path, RequestType.UPDATE);
-        pcepTunnelData.setPlspId(1);
-        StatefulIPv4LspIdentifiersTlv tlv = new StatefulIPv4LspIdentifiersTlv(0, (short) 1, (short) 2, 3, 4);
-        pcepTunnelData.setStatefulIpv4IndentifierTlv(tlv);
-        tunnelProvider.pcepTunnelApiMapper.addToTunnelIdMap(pcepTunnelData);
-
-        tunnelProvider.pcepTunnelApiMapper.handleCreateTunnelRequestQueue(1, pcepTunnelData);
-
-        PccId pccId = PccId.pccId(IpAddress.valueOf(0xD010101));
-        PcepClientAdapter pc = new PcepClientAdapter();
-        pc.init(pccId, PcepVersion.PCEP_1);
-        controller.getClient(pccId).setLspAndDelegationInfo(new LspKey(1, (short) 1), true);
-        controller.getClient(pccId).setCapability(new ClientCapability(true, true, true, true, true));
-
-        tunnelProvider.updateTunnel(tunnel, path);
-        assertThat(tunnelProvider.pcepTunnelApiMapper, not(nullValue()));
-    }
-
-    /**
-     * Doesn't send update message because PCC doesn't supports PCE stateful capability.
-     */
-    @Test
-    public void testCasePcepUpdateTunnel2() {
-        Tunnel tunnel;
-        Path path;
-        ProviderId pid = new ProviderId("pcep", PROVIDER_ID);
-        List<Link> links = new ArrayList<>();
-        IpAddress srcIp = IpAddress.valueOf(0xD010101);
-        IpElementId srcElementId = IpElementId.ipElement(srcIp);
-
-        IpAddress dstIp = IpAddress.valueOf(0xD010102);
-        IpElementId dstElementId = IpElementId.ipElement(dstIp);
-
-        IpTunnelEndPoint ipTunnelEndPointSrc;
-        ipTunnelEndPointSrc = IpTunnelEndPoint.ipTunnelPoint(srcIp);
-
-        IpTunnelEndPoint ipTunnelEndPointDst;
-        ipTunnelEndPointDst = IpTunnelEndPoint.ipTunnelPoint(dstIp);
-
-        ConnectPoint src = new ConnectPoint(srcElementId, PortNumber.portNumber(10023));
-
-        ConnectPoint dst = new ConnectPoint(dstElementId, PortNumber.portNumber(10024));
-
-        Link link = DefaultLink.builder().providerId(pid).src(src).dst(dst)
-                .type(Link.Type.DIRECT).build();
-        links.add(link);
-
-        path = new DefaultPath(pid, links, ScalarWeight.toWeight(20), EMPTY);
-
-        Annotations annotations = DefaultAnnotations.builder()
-                .set(LSP_SIG_TYPE, WITH_SIGNALLING.name())
-                .set(PLSP_ID, "1")
-                .set(LOCAL_LSP_ID, "1")
-                .build();
-
-        tunnel = new DefaultTunnel(pid, ipTunnelEndPointSrc, ipTunnelEndPointDst, Tunnel.Type.MPLS,
-                                   new GroupId(0), TunnelId.valueOf("1"), TunnelName.tunnelName("T123"),
-                                   path, annotations);
-
-        // for updating tunnel tunnel should exist in db
-        PcepTunnelData pcepTunnelData = new PcepTunnelData(tunnel, path, RequestType.UPDATE);
-        pcepTunnelData.setPlspId(1);
-        StatefulIPv4LspIdentifiersTlv tlv = new StatefulIPv4LspIdentifiersTlv(0, (short) 1, (short) 2, 3, 4);
-        pcepTunnelData.setStatefulIpv4IndentifierTlv(tlv);
-        tunnelProvider.pcepTunnelApiMapper.addToTunnelIdMap(pcepTunnelData);
-
-        tunnelProvider.pcepTunnelApiMapper.handleCreateTunnelRequestQueue(1, pcepTunnelData);
-
-        PccId pccId = PccId.pccId(IpAddress.valueOf(0xD010101));
-        PcepClientAdapter pc = new PcepClientAdapter();
-        pc.init(pccId, PcepVersion.PCEP_1);
-        controller.getClient(pccId).setLspAndDelegationInfo(new LspKey(1, (short) 1), true);
-        controller.getClient(pccId).setCapability(new ClientCapability(true, true, true, true, true));
-
-        tunnelProvider.updateTunnel(tunnel, path);
-        assertThat(tunnelProvider.pcepTunnelApiMapper.checkFromTunnelRequestQueue(1), is(false));
-    }
-
-    /**
-     * Sends update message to PCC for SR based tunnel.
-     */
-    @Test
-    public void testCasePcepUpdateSrTunnel() {
-        Tunnel tunnel;
-        Path path;
-        ProviderId pid = new ProviderId("pcep", PROVIDER_ID);
-        List<Link> links = new ArrayList<>();
-        IpAddress srcIp = IpAddress.valueOf(0xD010101);
-        IpElementId srcElementId = IpElementId.ipElement(srcIp);
-
-        IpAddress dstIp = IpAddress.valueOf(0xD010102);
-        IpElementId dstElementId = IpElementId.ipElement(dstIp);
-
-        IpTunnelEndPoint ipTunnelEndPointSrc;
-        ipTunnelEndPointSrc = IpTunnelEndPoint.ipTunnelPoint(srcIp);
-
-        IpTunnelEndPoint ipTunnelEndPointDst;
-        ipTunnelEndPointDst = IpTunnelEndPoint.ipTunnelPoint(dstIp);
-
-        ConnectPoint src = new ConnectPoint(srcElementId, PortNumber.portNumber(10023));
-
-        ConnectPoint dst = new ConnectPoint(dstElementId, PortNumber.portNumber(10024));
-
-        Link link = DefaultLink.builder().providerId(pid).src(src).dst(dst)
-                .type(Link.Type.DIRECT).build();
-        links.add(link);
-
-        path = new DefaultPath(pid, links, ScalarWeight.toWeight(20), EMPTY);
-
-        Annotations annotations = DefaultAnnotations.builder()
-                .set(LSP_SIG_TYPE, SR_WITHOUT_SIGNALLING.name())
-                .set(PLSP_ID, "1")
-                .set(LOCAL_LSP_ID, "1")
-                .build();
-
-        tunnel = new DefaultTunnel(pid, ipTunnelEndPointSrc, ipTunnelEndPointDst, Tunnel.Type.MPLS,
-                                   new GroupId(0), TunnelId.valueOf("1"), TunnelName.tunnelName("T123"),
-                                   path, annotations);
-
-        // for updating tunnel tunnel should exist in db
-        PcepTunnelData pcepTunnelData = new PcepTunnelData(tunnel, path, RequestType.UPDATE);
-        pcepTunnelData.setPlspId(1);
-        StatefulIPv4LspIdentifiersTlv tlv = new StatefulIPv4LspIdentifiersTlv(0, (short) 1, (short) 2, 3, 4);
-        pcepTunnelData.setStatefulIpv4IndentifierTlv(tlv);
-        tunnelProvider.pcepTunnelApiMapper.addToTunnelIdMap(pcepTunnelData);
-
-        tunnelProvider.pcepTunnelApiMapper.handleCreateTunnelRequestQueue(1, pcepTunnelData);
-
-        PccId pccId = PccId.pccId(IpAddress.valueOf(0xD010101));
-        PcepClientAdapter pc = new PcepClientAdapter();
-        pc.init(pccId, PcepVersion.PCEP_1);
-        controller.getClient(pccId).setLspAndDelegationInfo(new LspKey(1, (short) 1), true);
-        controller.getClient(pccId).setCapability(new ClientCapability(true, true, true, true, true));
-
-        tunnelProvider.updateTunnel(tunnel, path);
-        assertThat(tunnelProvider.pcepTunnelApiMapper, not(nullValue()));
-    }
-
-    /**
-     * Sends update message to PCC for tunnel without signalling and without SR.
-     */
-    @Test
-    public void testCasePcepUpdateTunnelWithoutSigSr() {
-        Tunnel tunnel;
-        Path path;
-        ProviderId pid = new ProviderId("pcep", PROVIDER_ID);
-        List<Link> links = new ArrayList<>();
-        IpAddress srcIp = IpAddress.valueOf(0xD010101);
-        IpElementId srcElementId = IpElementId.ipElement(srcIp);
-
-        IpAddress dstIp = IpAddress.valueOf(0xD010102);
-        IpElementId dstElementId = IpElementId.ipElement(dstIp);
-
-        IpTunnelEndPoint ipTunnelEndPointSrc;
-        ipTunnelEndPointSrc = IpTunnelEndPoint.ipTunnelPoint(srcIp);
-
-        IpTunnelEndPoint ipTunnelEndPointDst;
-        ipTunnelEndPointDst = IpTunnelEndPoint.ipTunnelPoint(dstIp);
-
-        ConnectPoint src = new ConnectPoint(srcElementId, PortNumber.portNumber(10023));
-
-        ConnectPoint dst = new ConnectPoint(dstElementId, PortNumber.portNumber(10024));
-
-        Link link = DefaultLink.builder().providerId(pid).src(src).dst(dst)
-                .type(Link.Type.DIRECT).build();
-        links.add(link);
-
-        path = new DefaultPath(pid, links, ScalarWeight.toWeight(20), EMPTY);
-
-        Annotations annotations = DefaultAnnotations.builder()
-                .set(LSP_SIG_TYPE, WITHOUT_SIGNALLING_AND_WITHOUT_SR.name())
-                .set(PLSP_ID, "1")
-                .set(LOCAL_LSP_ID, "1")
-                .build();
-
-        tunnel = new DefaultTunnel(pid, ipTunnelEndPointSrc, ipTunnelEndPointDst, Tunnel.Type.MPLS,
-                                   new GroupId(0), TunnelId.valueOf("1"), TunnelName.tunnelName("T123"),
-                                   path, annotations);
-
-        // for updating tunnel tunnel should exist in db
-        PcepTunnelData pcepTunnelData = new PcepTunnelData(tunnel, path, RequestType.UPDATE);
-        pcepTunnelData.setPlspId(1);
-        StatefulIPv4LspIdentifiersTlv tlv = new StatefulIPv4LspIdentifiersTlv(0, (short) 1, (short) 2, 3, 4);
-        pcepTunnelData.setStatefulIpv4IndentifierTlv(tlv);
-        tunnelProvider.pcepTunnelApiMapper.addToTunnelIdMap(pcepTunnelData);
-
-        tunnelProvider.pcepTunnelApiMapper.handleCreateTunnelRequestQueue(1, pcepTunnelData);
-
-        PccId pccId = PccId.pccId(IpAddress.valueOf(0xD010101));
-        PcepClientAdapter pc = new PcepClientAdapter();
-        pc.init(pccId, PcepVersion.PCEP_1);
-        controller.getClient(pccId).setLspAndDelegationInfo(new LspKey(1, (short) 1), true);
-        controller.getClient(pccId).setCapability(new ClientCapability(true, true, true, true, true));
-
-        tunnelProvider.updateTunnel(tunnel, path);
-        assertThat(tunnelProvider.pcepTunnelApiMapper, not(nullValue()));
-    }
-
-    @After
-    public void tearDown() throws IOException {
-        tunnelProvider.deactivate();
-        tunnelProvider.controller = null;
-        tunnelProvider.pcepClientController = null;
-        tunnelProvider.tunnelProviderRegistry = null;
-    }
-}
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/TunnelProviderRegistryAdapter.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/TunnelProviderRegistryAdapter.java
deleted file mode 100644
index 250e376..0000000
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/TunnelProviderRegistryAdapter.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.provider.pcep.tunnel.impl;
-
-import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.Tunnel.State;
-import org.onosproject.incubator.net.tunnel.TunnelDescription;
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.tunnel.TunnelProvider;
-import org.onosproject.incubator.net.tunnel.TunnelProviderRegistry;
-import org.onosproject.incubator.net.tunnel.TunnelProviderService;
-import org.onosproject.net.provider.ProviderId;
-
-import java.util.Set;
-
-public class TunnelProviderRegistryAdapter implements TunnelProviderRegistry {
-    TunnelProvider provider;
-
-    @Override
-    public TunnelProviderService register(TunnelProvider provider) {
-        this.provider = provider;
-        return new TestProviderService();
-    }
-
-    @Override
-    public void unregister(TunnelProvider provider) {
-    }
-
-    @Override
-    public Set<ProviderId> getProviders() {
-        return null;
-    }
-
-    private class TestProviderService implements TunnelProviderService {
-
-        @Override
-        public TunnelProvider provider() {
-            return null;
-        }
-
-        @Override
-        public TunnelId tunnelAdded(TunnelDescription tunnel) {
-            return null;
-        }
-
-        @Override
-        public TunnelId tunnelAdded(TunnelDescription tunnel, State state) {
-            return null;
-        }
-
-        @Override
-        public void tunnelRemoved(TunnelDescription tunnel) {
-        }
-
-        @Override
-        public void tunnelUpdated(TunnelDescription tunnel) {
-        }
-
-        @Override
-        public void tunnelUpdated(TunnelDescription tunnel, State state) {
-        }
-
-        @Override
-        public Tunnel tunnelQueryById(TunnelId tunnelId) {
-            return null;
-        }
-    }
-}
diff --git a/tools/build/bazel/modules.bzl b/tools/build/bazel/modules.bzl
index ff86c45..4f323db 100644
--- a/tools/build/bazel/modules.bzl
+++ b/tools/build/bazel/modules.bzl
@@ -18,7 +18,6 @@
     "//core/store/primitives:onos-core-primitives",
     "//core/store/serializers:onos-core-serializers",
     "//core/store/dist:onos-core-dist",
-    # "//core/security:onos-security",
     "//core/store/persistence:onos-core-persistence",
     "//cli:onos-cli",
     "//drivers/utilities:onos-drivers-utilities",
@@ -33,7 +32,6 @@
     "//tools/package/features:onos-core",
     "//tools/package/features:onos-cli",
     "//tools/package/features:onos-rest",
-    # "//tools/package/features:onos-security",
 ]
 
 #
@@ -54,9 +52,6 @@
     "//protocols/bgp/bgpio:onos-protocols-bgp-bgpio": [],
     "//protocols/bgp/api:onos-protocols-bgp-api": [],
     "//protocols/bgp/ctl:onos-protocols-bgp-ctl": [],
-    "//protocols/isis/api:onos-protocols-isis-api": [],
-    "//protocols/isis/ctl:onos-protocols-isis-ctl": [],
-    "//protocols/isis/isisio:onos-protocols-isis-isisio": [],
     "//protocols/lisp/api:onos-protocols-lisp-api": [],
     "//protocols/lisp/ctl:onos-protocols-lisp-ctl": [],
     "//protocols/lisp/msg:onos-protocols-lisp-msg": [],
@@ -64,17 +59,11 @@
     "//protocols/netconf/ctl:onos-protocols-netconf-ctl": [],
     "//protocols/openflow/api:onos-protocols-openflow-api": ["seba", "sona"],
     "//protocols/openflow/ctl:onos-protocols-openflow-ctl": ["seba", "sona"],
-    "//protocols/ospf/api:onos-protocols-ospf-api": [],
-    "//protocols/ospf/protocol:onos-protocols-ospf-protocol": [],
-    "//protocols/ospf/ctl:onos-protocols-ospf-ctl": [],
     "//protocols/ovsdb/rfc:onos-protocols-ovsdb-rfc": ["sona"],
     "//protocols/ovsdb/api:onos-protocols-ovsdb-api": ["sona"],
     "//protocols/ovsdb/ctl:onos-protocols-ovsdb-ctl": ["sona"],
     "//protocols/p4runtime/api:onos-protocols-p4runtime-api": ["stratum"],
     "//protocols/p4runtime/model:onos-protocols-p4runtime-model": ["stratum"],
-    "//protocols/pcep/pcepio:onos-protocols-pcep-pcepio": [],
-    "//protocols/pcep/server/api:onos-protocols-pcep-server-api": [],
-    "//protocols/pcep/server/ctl:onos-protocols-pcep-server-ctl": [],
     "//protocols/rest/api:onos-protocols-rest-api": ["stratum", "tost"],
     "//protocols/rest/ctl:onos-protocols-rest-ctl": ["stratum", "tost"],
     "//protocols/restconf/client/api:onos-protocols-restconf-client-api": [],
@@ -109,19 +98,14 @@
     "//providers/p4runtime/packet:onos-providers-p4runtime-packet": ["stratum"],
     "//providers/rest/device:onos-providers-rest-device": ["stratum"],
     "//providers/snmp/device:onos-providers-snmp-device": [],
-    "//providers/isis/cfg:onos-providers-isis-cfg": [],
-    "//providers/isis/topology:onos-providers-isis-topology": [],
     "//providers/lisp/device:onos-providers-lisp-device": [],
     "//providers/tl1/device:onos-providers-tl1-device": [],
 }
 
 PROVIDER_APP_MAP = {
     "//providers/general:onos-providers-general-oar": ["stratum", "tost", "sona"],
-    "//providers/bgp:onos-providers-bgp-oar": [],
-    "//providers/bgpcep:onos-providers-bgpcep-oar": [],
     "//providers/host:onos-providers-host-oar": ["seba", "stratum", "tost", "sona"],
     "//providers/hostprobing:onos-providers-hostprobing-oar": ["seba", "stratum", "tost", "sona"],
-    "//providers/isis:onos-providers-isis-oar": [],
     "//providers/link:onos-providers-link-oar": ["stratum"],
     "//providers/lldp:onos-providers-lldp-oar": ["seba", "stratum", "tost", "sona"],
     "//providers/netcfghost:onos-providers-netcfghost-oar": ["seba", "stratum", "tost", "sona"],
@@ -135,13 +119,11 @@
     "//providers/ovsdb/host:onos-providers-ovsdb-host-oar": ["sona"],
     "//providers/ovsdb/base:onos-providers-ovsdb-base-oar": ["sona"],
     "//providers/p4runtime:onos-providers-p4runtime-oar": ["stratum", "tost"],
-    "//providers/pcep:onos-providers-pcep-oar": [],
     "//providers/rest:onos-providers-rest-oar": ["stratum", "tost"],
     "//providers/snmp:onos-providers-snmp-oar": [],
     "//providers/lisp:onos-providers-lisp-oar": [],
     "//providers/tl1:onos-providers-tl1-oar": [],
     "//providers/xmpp/device:onos-providers-xmpp-device-oar": [],
-    # "//providers/ietfte:onos-providers-ietfte-oar": [],
 }
 
 #
@@ -166,7 +148,6 @@
     "//drivers/gnmi:onos-drivers-gnmi-oar": ["stratum", "tost", "sona"],
     "//drivers/gnoi:onos-drivers-gnoi-oar": ["stratum", "tost"],
     "//drivers/hp:onos-drivers-hp-oar": [],
-    "//drivers/huawei:onos-drivers-huawei-oar": [],
     "//drivers/juniper:onos-drivers-juniper-oar": [],
     "//drivers/lisp:onos-drivers-lisp-oar": [],
     "//drivers/lumentum:onos-drivers-lumentum-oar": [],
@@ -202,10 +183,6 @@
     "//apps/kafka-integration/api:onos-apps-kafka-integration-api": [],
     "//apps/kafka-integration/app:onos-apps-kafka-integration-app": [],
     "//apps/routing/common:onos-apps-routing-common": [],
-    "//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc": [],
-    "//apps/vtn/sfcmgr:onos-apps-vtn-sfcmgr": [],
-    "//apps/vtn/vtnmgr:onos-apps-vtn-vtnmgr": [],
-    "//apps/vtn/vtnweb:onos-apps-vtn-vtnweb": [],
 }
 
 APP_MAP = {
@@ -214,18 +191,13 @@
     "//apps/bgprouter:onos-apps-bgprouter-oar": [],
     "//apps/castor:onos-apps-castor-oar": [],
     "//apps/cfm:onos-apps-cfm-oar": [],
-    "//apps/cip:onos-apps-cip-oar": [],
     "//apps/config:onos-apps-config-oar": ["stratum", "tost"],
-    "//apps/configsync-netconf:onos-apps-configsync-netconf-oar": [],
-    "//apps/configsync:onos-apps-configsync-oar": [],
     "//apps/cord-support:onos-apps-cord-support-oar": [],
     "//apps/cpman/app:onos-apps-cpman-app-oar": [],
     "//apps/dhcp:onos-apps-dhcp-oar": [],
     "//apps/dhcprelay:onos-apps-dhcprelay-oar": ["tost"],
     "//apps/drivermatrix:onos-apps-drivermatrix-oar": [],
     "//apps/events:onos-apps-events-oar": [],
-    "//apps/evpn-route-service:onos-apps-evpn-route-service-oar": [],
-    "//apps/evpnopenflow:onos-apps-evpnopenflow-oar": [],
     "//apps/faultmanagement:onos-apps-faultmanagement-oar": ["stratum", "tost"],
     "//apps/flowanalyzer:onos-apps-flowanalyzer-oar": [],
     "//apps/flowspec-api:onos-apps-flowspec-api-oar": [],
@@ -240,7 +212,6 @@
     "//apps/k8s-networking:onos-apps-k8s-networking-oar": ["sona"],
     "//apps/k8s-node:onos-apps-k8s-node-oar": ["sona"],
     "//apps/kafka-integration:onos-apps-kafka-integration-oar": [],
-    "//apps/l3vpn:onos-apps-l3vpn-oar": [],
     "//apps/layout:onos-apps-layout-oar": [],
     "//apps/linkprops:onos-apps-linkprops-oar": [],
     "//apps/mappingmanagement:onos-apps-mappingmanagement-oar": [],
@@ -273,7 +244,6 @@
     "//apps/packet-stats:onos-apps-packet-stats-oar": [],
     "//apps/packet-throttle:onos-apps-packet-throttle-oar": [],
     "//apps/pathpainter:onos-apps-pathpainter-oar": [],
-    "//apps/pcep-api:onos-apps-pcep-api-oar": [],
     "//apps/pim:onos-apps-pim-oar": [],
     "//apps/portloadbalancer:onos-apps-portloadbalancer-oar": ["seba", "tost"],
     "//apps/powermanagement:onos-apps-powermanagement-oar": [],
@@ -290,8 +260,6 @@
     "//apps/scalablegateway:onos-apps-scalablegateway-oar": [],
     "//apps/sdnip:onos-apps-sdnip-oar": [],
     "//apps/simplefabric:onos-apps-simplefabric-oar": [],
-    # "//apps/tenbi:onos-apps-tenbi-oar": [],
-    # "//apps/tenbi/yangmodel:onos-apps-tenbi-yangmodel-feature": [],
     "//apps/test/cluster-ha:onos-apps-test-cluster-ha-oar": [],
     "//apps/test/demo:onos-apps-test-demo-oar": [],
     "//apps/test/distributed-primitives:onos-apps-test-distributed-primitives-oar": [],
@@ -304,19 +272,15 @@
     "//apps/test/primitive-perf:onos-apps-test-primitive-perf-oar": [],
     "//apps/test/route-scale:onos-apps-test-route-scale-oar": [],
     "//apps/test/transaction-perf:onos-apps-test-transaction-perf-oar": [],
-    "//apps/tetopology:onos-apps-tetopology-oar": [],
-    "//apps/tetunnel:onos-apps-tetunnel-oar": [],
     "//apps/tunnel:onos-apps-tunnel-oar": ["sona"],
     "//apps/virtual:onos-apps-virtual-oar": [],
     "//apps/virtualbng:onos-apps-virtualbng-oar": [],
     "//apps/vpls:onos-apps-vpls-oar": [],
     "//apps/vrouter:onos-apps-vrouter-oar": [],
-    "//apps/vtn:onos-apps-vtn-oar": [],
     "//apps/workflow/ofoverlay:onos-apps-workflow-ofoverlay-oar": [],
     "//apps/workflow:onos-apps-workflow-oar": [],
     "//apps/yang-gui:onos-apps-yang-gui-oar": [],
     "//apps/yang:onos-apps-yang-oar": ["stratum", "tost"],
-    # "//apps/yms:onos-apps-yms-oar": [],
     "//web/gui:onos-web-gui-oar": ["sona", "tost"],
     "//web/gui2:onos-web-gui2-oar": ["stratum", "tost"],
 }
@@ -333,13 +297,11 @@
 MODELS_MAP = {
     "//models/ietf:onos-models-ietf-oar": ["stratum", "tost"],
     "//models/common:onos-models-common-oar": [],
-    "//models/huawei:onos-models-huawei-oar": [],
     "//models/openconfig:onos-models-openconfig-oar": ["stratum", "tost"],
     "//models/openconfig-infinera:onos-models-openconfig-infinera-oar": ["stratum", "tost"],
     "//models/openconfig-odtn:onos-models-openconfig-odtn-oar": ["stratum", "tost"],
     "//models/openroadm:onos-models-openroadm-oar": [],
     "//models/tapi:onos-models-tapi-oar": ["stratum", "tost"],
-    "//models/l3vpn:onos-models-l3vpn-oar": [],
     "//models/polatis:onos-models-polatis-oar": [],
     "//models/ciena/waveserverai:onos-models-ciena-waveserverai-oar": [],
 }